branch: externals/dtache commit eaf141725f423a003ea18bacc5c7548195deb61d Author: Niklas Eklund <niklas.ekl...@posteo.net> Commit: Niklas Eklund <niklas.ekl...@posteo.net>
Add compile section to tips and tricks in README --- README.org | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/README.org b/README.org index b786ee1b25..abbd236b2f 100644 --- a/README.org +++ b/README.org @@ -230,11 +230,43 @@ The =dtache= package supports [[https://www.gnu.org/software/emacs/manual/html_n Some programs doesn't play well with =tee= which =dtache= relies upon to redirect the output both to standard out as well as to file. If you encounter a situation where output from a session is only visible once it has finished running, the command you launched should instead be using =redirect only=. To list a command to run with redirect only in the future can be done by adding a regexp to =dtache-redirect-only-regexps=. #+begin_src elisp - (setq dtache-read-only-list '("^ls")) + (setq dtache-redirect-only-regexps '("^ls")) #+end_src Here the command beginning with =ls= would from now on be using redirect only. +** Replace compile with dtache + +*** Unconditionally + +=Dtache= can be seen as a replacement for =compile=. To unconditionally replace the latter with the former one can apply this advice. + +#+begin_src elisp + (defun dtache-compile-override (command &optional _) + "Run COMMAND with `dtache'." + (dtache-start-session command)) + + (advice-add 'compile :override #'dtache-compile-override) +#+end_src + +#+RESULTS: + +*** Selectively + +Maybe you like the behavior of =compile= but for some specific commands you would like to replace the usage of =compile= with =dtache=. That can be done with the following advice, in this case replacing the usage of =compile= within function =foo=. + +#+begin_src elisp + (defun dtache-replace-compile-advice (orig-fun &rest args) + "Replace `compile' with `dtache'. + This is done before ORIG-FUN is passed ARGS." + (cl-letf* (((symbol-function 'compile) + (lambda (command &optional _) + (dtache-start-session command)))) + (apply orig-fun args))) + + (advice-add #'foo :around #'dtache-replace-compile-advice) +#+end_src + ** Evil bindings For inspiration on how to configure =dtache-list-sessions= to use evil bindings see [[https://gitlab.com/niklaseklund/dotfiles/blob/master/.config/emacs/init.el#L1393][Niklas Eklund's Emacs config]].