branch: externals/dtache
commit 4e99fc9daad8151f9ccb8952fd6dc31181478dec
Author: Niklas Eklund <[email protected]>
Commit: Niklas Eklund <[email protected]>
Deprecate dtache-list-sessions
The dtache-open-session has been improved to the point that it can be
used as the one and only interface to dtache sessions.
---
dtache.el | 109 +++++++++++---------------------------------------------------
1 file changed, 18 insertions(+), 91 deletions(-)
diff --git a/dtache.el b/dtache.el
index 039178aa5b..51fdd10c92 100644
--- a/dtache.el
+++ b/dtache.el
@@ -33,9 +33,8 @@
;; other functions or packages. This is also useful if the user wants
;; to advice packages to use it in favor of for example `compile'.
-;; To manage the sessions the user can either use
-;; `dtache-list-sessions' for a tabulated list interface, or
-;; `dtache-open-session' for a `completing-read' equivalent.
+;; To manage and interact with the sessions the the package provides
+;; the command `dtache-open-session'.
;; The package requires the program dtach[1] to be installed.
;;
@@ -96,7 +95,7 @@
(defvar dtache-action-map
(let ((map (make-sparse-keymap)))
(define-key map "c" #'dtache-compile-session)
- (define-key map "d" #'dtache-remove-session)
+ (define-key map "d" #'dtache-delete-session)
(define-key map "i" #'dtache-insert-session-command)
(define-key map "k" #'dtache-kill-session)
(define-key map "o" #'dtache-open-output)
@@ -197,25 +196,11 @@
(dtache-session-type 'standard))
(dtache-start-session command)))
-;;;###autoload
-(defun dtache-list-sessions ()
- "List `dtache' sessions."
- (interactive)
- (pop-to-buffer-same-window
- (get-buffer-create "*dtache-sessions*"))
- (dtache-sessions-mode)
- (dtache-update-sessions)
- (let* ((tabulated-list-entries
- (seq-map #'dtache-get-sesssion-entry (dtache--db-get-sessions))))
- (tabulated-list-print t)))
-
;;;###autoload
(defun dtache-open-session (session)
"Open a `dtache' SESSION."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(if-let ((open-function
(dtache--session-open-function session)))
(funcall open-function session)
@@ -225,9 +210,7 @@
(defun dtache-compile-session (session)
"Open log of SESSION in `compilation-mode'."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(let ((buffer-name "*dtache-session-output*")
(file
(dtache-session-file session 'log))
@@ -251,24 +234,22 @@
(defun dtache-rerun-session (session)
"Rerun SESSION."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(let* ((default-directory
(dtache--session-working-directory session))
(dtache-open-session-function
(dtache--session-open-function session))
(dtache-session-callback-function
- (dtache--session-callback-function session)))
+ (dtache--session-callback-function session))
+ (dtache-session-status-function
+ (dtache--session-status-function session)))
(dtache-start-session (dtache--session-command session))))
;;;###autoload
(defun dtache-copy-session-output (session)
"Copy SESSION's log."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(with-temp-buffer
(insert (dtache-session-output session))
(kill-new (buffer-string))))
@@ -277,27 +258,21 @@
(defun dtache-copy-session-command (session)
"Copy SESSION command."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(kill-new (dtache--session-command session)))
;;;###autoload
(defun dtache-insert-session-command (session)
"Insert SESSION."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(insert (dtache--session-command session)))
;;;###autoload
-(defun dtache-remove-session (session)
- "Remove SESSION."
+(defun dtache-delete-session (session)
+ "Delete SESSION."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(if (dtache--session-active-p session)
(message "Kill session first before removing it.")
(dtache--db-remove-entry session)))
@@ -306,9 +281,7 @@
(defun dtache-kill-session (session)
"Send a TERM signal to SESSION."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(let* ((pid (dtache--session-pid session)))
(when pid
(dtache--kill-processes pid))))
@@ -317,9 +290,7 @@
(defun dtache-open-output (session)
"Open SESSION's output."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(let* ((buffer-name "*dtache-session-output*")
(file-path
(dtache-session-file session 'log))
@@ -340,9 +311,7 @@
(defun dtache-tail-output (session)
"Tail SESSION's output."
(interactive
- (list (if (eq major-mode 'dtache-sessions-mode)
- (tabulated-list-get-id)
- (dtache-select-session))))
+ (list (dtache-select-session)))
(if (dtache--session-active-p session)
(let* ((file-path
(dtache-session-file session 'log))
@@ -972,48 +941,6 @@ the current time is used."
(auto-revert-tail-mode)
(read-only-mode t))
-;;;; Tabulated list interface
-
-(define-derived-mode dtache-sessions-mode tabulated-list-mode "Dtache Sessions"
- "Dtache sessions."
- (setq tabulated-list-format
- `[("Command" ,dtache-max-command-length nil)
- ("Active" 10 nil)
- ("Status" 10 nil)
- ("Host" 20 nil)
- ("Directory" 40 nil)
- ("Metadata" 30 nil)
- ("Duration" 10 nil)
- ("Size" 10 nil)
- ("Created" 20 nil)])
- (setq tabulated-list-padding 2)
- (setq tabulated-list-sort-key nil)
- (tabulated-list-init-header))
-
-(defun dtache-get-sesssion-entry (session)
- "Return expected format of SESSION."
- `(,session
- [,(dtache--session-command session)
- ,(dtache--active-str session)
- ,(dtache--status-str session)
- ,(dtache--session-host session)
- ,(dtache--working-dir-str session)
- ,(dtache--metadata-str session)
- ,(dtache--duration-str session)
- ,(dtache--size-str session)
- ,(dtache--creation-str session)]))
-
-(let ((map dtache-sessions-mode-map))
- (define-key map (kbd "<return>") #'dtache-open-session)
- (define-key map (kbd "c") #'dtache-compile-session)
- (define-key map (kbd "d") #'dtache-remove-session)
- (define-key map (kbd "k") #'dtache-kill-session)
- (define-key map (kbd "o") #'dtache-open-output)
- (define-key map (kbd "r") #'dtache-rerun-session)
- (define-key map (kbd "t") #'dtache-tail-output)
- (define-key map (kbd "w") #'dtache-copy-session-command)
- (define-key map (kbd "W") #'dtache-copy-session-output))
-
(provide 'dtache)
;;; dtache.el ends here