Function: dired-smart-shell-command
dired-smart-shell-command is an interactive and byte-compiled function
defined in dired-x.el.gz.
Signature
(dired-smart-shell-command COMMAND &optional OUTPUT-BUFFER ERROR-BUFFER)
Documentation
Like function shell-command, but in the current Virtual Dired directory.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/dired-x.el.gz
;;; Smart shell
;; An Emacs buffer can have but one working directory, stored in the
;; buffer-local variable `default-directory'. A Dired buffer may have
;; several subdirectories inserted, but still has but one working directory:
;; that of the top level Dired directory in that buffer. For some commands
;; it is appropriate that they use the current Dired directory instead of
;; `default-directory', e.g., `find-file' and `compile'. This is a general
;; mechanism is provided for special handling of the working directory in
;; special major modes.
(defun dired-smart-shell-command (command &optional output-buffer error-buffer)
"Like function `shell-command', but in the current Virtual Dired directory."
(interactive
(list
(read-shell-command "Shell command: " nil nil
(cond
(buffer-file-name (file-relative-name buffer-file-name))
((eq major-mode 'dired-mode) (dired-get-filename t t))))
current-prefix-arg
shell-command-default-error-buffer))
(let ((default-directory (or (and (eq major-mode 'dired-mode)
(dired-current-directory))
default-directory)))
(shell-command command output-buffer error-buffer)))