# HG changeset patch # User Juri Linkov # Date 1217349402 0 # Node ID 535cfa18fb6d8de2a694f1df0c89439992cda51e # Parent c38003f850b5895e07566e151532470f148e7791 (dired-do-async-shell-command): New command. diff -r c38003f850b5 -r 535cfa18fb6d lisp/dired-aux.el --- a/lisp/dired-aux.el Tue Jul 29 16:24:24 2008 +0000 +++ b/lisp/dired-aux.el Tue Jul 29 16:36:42 2008 +0000 @@ -490,6 +490,26 @@ (format prompt (dired-mark-prompt arg files)) nil nil))) +;;;###autoload +(defun dired-do-async-shell-command (command &optional arg file-list) + "Run a shell command COMMAND on the marked files asynchronously. + +Like `dired-do-shell-command' but if COMMAND doesn't end in ampersand, +adds `* &' surrounded by whitespace and executes the command asynchronously. +The output appears in the buffer `*Async Shell Command*'." + (interactive + (let ((files (dired-get-marked-files t current-prefix-arg))) + (list + ;; Want to give feedback whether this file or marked files are used: + (dired-read-shell-command "& on %s: " current-prefix-arg files) + current-prefix-arg + files))) + (unless (string-match "[*?][ \t]*\\'" command) + (setq command (concat command " *"))) + (unless (string-match "&[ \t]*\\'" command) + (setq command (concat command " &"))) + (dired-do-shell-command command arg file-list)) + ;; The in-background argument is only needed in Emacs 18 where ;; shell-command doesn't understand an appended ampersand `&'. ;;;###autoload