branch: externals/dtache commit ca489920f31683e9c339ac57a99f260c2625266e Author: Rose Osterheld <d...@roeli.org> Commit: Niklas Eklund <niklas.ekl...@posteo.net>
Add support for dired Add a function to the README that lets dtache be used for asynchronous shell commands with dired while still supporting all of dired's filename substitution features. --- CHANGELOG.org | 1 + README.md | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.org b/CHANGELOG.org index ab475ca3f2..41425e0e93 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -3,6 +3,7 @@ #+language: en * Development +- Add integration with =dired= through =dired-do-shell-command= * Version 0.6 (2022-05-01) diff --git a/README.md b/README.md index 4fed7d7b03..b99ff41ce8 100644 --- a/README.md +++ b/README.md @@ -430,6 +430,23 @@ The package can be integrated with the [vterm](https://github.com/akermu/emacs-l (process-send-string vterm--process dtache--dtach-detach-character))) ``` +### Dired + +Dtache can be used to run async commands in `dired`, with all of dired's special features for inserting filenames an working with marked files. + +``` emacs-lisp +(defun my/dtache-dired-do-shell-command (dired-do-shell-command &rest args) + "Make sure `dtache' is used before running DIRED-DO-SHELL-COMMAND with ARGS." + (cl-letf* ((dtache-session-origin 'dired) + ((symbol-function #'dired-run-shell-command) + (lambda (command) + (dtache-start-session command) + nil))) + (apply dired-do-shell-command args))) + +(advice-add 'dired-do-shell-command :around #'my/dtache-dired-do-shell-command) +``` + ### Dired-rsync The [dired-rsync](https://github.com/stsquad/dired-rsync) is a package to run [rsync](https://linux.die.net/man/1/rsync) commands from within `dired`. Its a perfect package to integrate with `dtache` since it typically requires some time to run and you don't want to have your Emacs limited by that process.