branch: externals/dtache
commit 2e1a0d4f0efdabd352299a666352ff2d1ba1f5e8
Author: Niklas Eklund <[email protected]>
Commit: Niklas Eklund <[email protected]>
Make attach handle redirect only sessions
---
dtache-eshell.el | 31 +++++++++++++++++--------------
dtache-shell.el | 3 ++-
dtache.el | 16 ++++++++++++----
3 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/dtache-eshell.el b/dtache-eshell.el
index ba2ad76bf5..7077261659 100644
--- a/dtache-eshell.el
+++ b/dtache-eshell.el
@@ -89,20 +89,23 @@ If prefix-argument directly DETACH from the session."
"Attach to SESSION."
(interactive
(list (dtache-eshell-select-session)))
- (cl-letf* ((dtache--dtach-mode 'attach)
- (input
- (dtache-dtach-command session t))
- ((symbol-function #'eshell-add-to-history) #'ignore))
- (eshell-kill-input)
- ;; Hide the input from the user
- (let ((begin (point))
- (end))
- (insert input)
- (setq end (point))
- (overlay-put (make-overlay begin end) 'invisible t)
- (insert " "))
- (setq dtache--buffer-session session)
- (call-interactively #'eshell-send-input)))
+ (if (and (dtache--session-active-p session)
+ (not (dtache--session-redirect-only session)))
+ (cl-letf* ((dtache--dtach-mode 'attach)
+ (input
+ (dtache-dtach-command session t))
+ ((symbol-function #'eshell-add-to-history) #'ignore))
+ (eshell-kill-input)
+ ;; Hide the input from the user
+ (let ((begin (point))
+ (end))
+ (insert input)
+ (setq end (point))
+ (overlay-put (make-overlay begin end) 'invisible t)
+ (insert " "))
+ (setq dtache--buffer-session session)
+ (call-interactively #'eshell-send-input))
+ (dtache-open-session session)))
;;;; Minor mode
diff --git a/dtache-shell.el b/dtache-shell.el
index 1ba19a4b10..cc56bae01f 100644
--- a/dtache-shell.el
+++ b/dtache-shell.el
@@ -98,7 +98,8 @@ This function also makes sure that the HISTFILE is disabled
for local shells."
cluttering the comint-history with dtach commands."
(interactive
(list (dtache-shell-select-session)))
- (if (dtache--session-active-p session)
+ (if (and (dtache--session-active-p session)
+ (not (dtache--session-redirect-only session)))
(cl-letf ((dtache-shell--current-session session)
(comint-input-sender #'dtache-shell--attach-input-sender)
((symbol-function 'comint-add-to-input-history) (lambda (_)
t)))
diff --git a/dtache.el b/dtache.el
index e7df59af15..cd06c06bfa 100644
--- a/dtache.el
+++ b/dtache.el
@@ -597,10 +597,12 @@ Optionally make the path LOCAL to host."
(defun dtache-open-dwim (session)
"Open SESSION in a do what I mean fashion."
(cond ((dtache--session-active session)
- (if-let ((open-fun (alist-get
- (dtache--session-type session)
dtache-type-open-dispatch)))
- (funcall open-fun session)
- (dtache-tail-output session)))
+ (if (dtache--session-redirect-only session)
+ (dtache-tail-output session)
+ (if-let ((open-fun (alist-get
+ (dtache--session-type session)
dtache-type-open-dispatch)))
+ (funcall open-fun session)
+ (dtache-tail-output session))))
((eq 'success (dtache--session-status session))
(dtache-open-output session))
((eq 'failure (dtache--session-status session))
@@ -614,6 +616,12 @@ Optionally make the path LOCAL to host."
(dtache-update-sessions)
(dtache--db-get-sessions))
+(defun dtache-shell-command-attach (session)
+ "Attach to `dtache' SESSION."
+ (let* ((dtache--current-session session)
+ (dtache--dtach-mode 'attach))
+ (dtache-start-session nil)))
+
;;;;; Other
(defun dtache-start-session-monitor (session)