branch: externals/dtache commit dae6db33dbe3a0168027b579ac2ecd43510888d5 Author: Niklas Eklund <niklas.ekl...@posteo.net> Commit: Niklas Eklund <niklas.ekl...@posteo.net>
Fix various minor problems --- README.org | 3 ++- dtache-compile.el | 14 ++++++++++---- dtache.el | 42 ++++++++++++++++++++++-------------------- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/README.org b/README.org index a04eed7d51..8d9597cd8f 100644 --- a/README.org +++ b/README.org @@ -182,7 +182,8 @@ A =use-package= configuration of the =dtache-consult= extension, which provides #+begin_src elisp (use-package dtache-consult - :commands dtache-consult-session) + :after dtache + :bind ([remap dtache-open-session] . dtache-consult-session)) #+end_src The command =dtache-consult-session= is a replacement for =dtache-open-session=. The difference is that the consult command provides multiple session sources, which is defined in the =dtache-consult-sources= variable. Users can customize which sources to use, as well as use individual sources in other =consult= commands, such as =consult-buffer=. The users can also narrow the list of sessions by entering a key. The list of supported keys are: diff --git a/dtache-compile.el b/dtache-compile.el index a3200ab8f3..72458662d9 100644 --- a/dtache-compile.el +++ b/dtache-compile.el @@ -35,21 +35,27 @@ ;;;; Commands ;;;###autoload -(defun dtache-compile () +(defun dtache-compile (command &optional comint) "Run COMMAND through `compile' but in a 'dtache' session. Optionally enable COMINT if prefix-argument is provided." - (interactive) + (interactive + (list + (let ((command (eval compile-command))) + (if (or compilation-read-command current-prefix-arg) + (compilation-read-command command) + command)) + (consp current-prefix-arg))) (let* ((dtache-enabled t) (dtache-session-action dtache-compile-session-action) (dtache-session-type 'compile) (dtache--dtach-mode 'create)) - (call-interactively #'compile))) + (compile command comint))) ;;;###autoload (defun dtache-compile-recompile (&optional edit-command) "Re-compile by running `compile' but in a 'dtache' session. Optionally EDIT-COMMAND." - (interactive) + (interactive "P") (let* ((dtache-enabled t) (dtache-session-action dtache-compile-session-action) (dtache-session-type 'compile) diff --git a/dtache.el b/dtache.el index 93088bbfb1..f57fa6c93e 100644 --- a/dtache.el +++ b/dtache.el @@ -199,10 +199,10 @@ ;;;; Commands ;;;###autoload -(defun dtache-shell-command (command) +(defun dtache-shell-command (command &optional suppress-output) "Execute COMMAND asynchronously with `dtache'. -If called with prefix-argument the output is suppressed." +Optionally SUPPRESS-OUTPUT." (interactive (list (read-shell-command (if shell-command-prompt-show-cwd @@ -210,10 +210,11 @@ If called with prefix-argument the output is suppressed." (abbreviate-file-name default-directory)) "Dtache shell command: ") - nil 'dtache-shell-command-history))) + nil 'dtache-shell-command-history) + current-prefix-arg)) (let ((dtache-session-type 'shell-command) (dtache-session-action dtache-shell-command-action)) - (dtache-start-session command current-prefix-arg))) + (dtache-start-session command suppress-output))) ;;;###autoload (defun dtache-open-session (session) @@ -440,23 +441,24 @@ nil before closing." "Start a `dtache' session running COMMAND. Optionally SUPPRESS-OUTPUT." - (if (and (not (eq dtache--dtach-mode 'attach)) - (or suppress-output - (eq dtache--dtach-mode 'new) - (dtache-redirect-only-p command))) - (let* ((inhibit-message t) - (dtache--dtach-mode 'new) - (dtache--current-session (dtache-create-session command))) + (let ((inhibit-message t) + (dtache-enabled t) + (dtache--current-session + (or dtache--current-session + (dtache-create-session command)))) + (if-let ((run-in-background + (and (not (eq dtache--dtach-mode 'attach)) + (or suppress-output + (eq dtache--dtach-mode 'new) + (dtache-redirect-only-p command)))) + (dtache--dtach-mode 'new)) (apply #'start-file-process-shell-command - `("dtache" nil ,command))) - (cl-letf* ((inhibit-message t) - ((symbol-function #'set-process-sentinel) #'ignore) - (dtache--dtach-mode (or dtache--dtach-mode 'create)) - (buffer "*Dtache Shell Command*") - (dtache--current-session (or dtache--current-session (dtache-create-session command))) - (dtache-enabled t)) - (funcall #'async-shell-command command buffer) - (with-current-buffer buffer (setq dtache--buffer-session dtache--current-session))))) + `("dtache" nil ,command)) + (cl-letf* (((symbol-function #'set-process-sentinel) #'ignore) + (dtache--dtach-mode (or dtache--dtach-mode 'create)) + (buffer "*Dtache Shell Command*")) + (funcall #'async-shell-command command buffer) + (with-current-buffer buffer (setq dtache--buffer-session dtache--current-session)))))) (defun dtache-update-sessions () "Update `dtache' sessions.