TL; DR:
Essa funcionalidade vem dired-x
, não Dired. Use (require 'dired-x)
no seu arquivo init e depois personalize dired-guess-shell-alist-user
.
Podemos ver, porém, onde Dired se conecta dired-x
:
(defun dired-read-shell-command (prompt arg files)
"Read a dired shell command.
PROMPT should be a format string with one \"%s\" format sequence,
which is replaced by the value returned by `dired-mark-prompt',
with ARG and FILES as its arguments. FILES should be a list of
file names. The result is used as the prompt.
This normally reads using `read-shell-command', but if the
`dired-x' package is loaded, use `dired-guess-shell-command' to
offer a smarter default choice of shell command."
(minibuffer-with-setup-hook
(lambda ()
(set (make-local-variable 'minibuffer-default-add-function)
'minibuffer-default-add-dired-shell-commands))
(setq prompt (format prompt (dired-mark-prompt arg files)))
(if (functionp 'dired-guess-shell-command) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<
(dired-mark-pop-up nil 'shell files
'dired-guess-shell-command prompt files)
(dired-mark-pop-up nil 'shell files
'read-shell-command prompt nil nil))))
Depois de ler o dired-x
manual (info "dired-x")
, você aprende sobre a variável dired-guess-shell-alist-user
, que você pode personalizar.
Aqui está um exemplo de mudança dired-guess-shell-alist-user
(setq dired-guess-shell-alist-user
'(("\\.e?ps$" "gv" "xloadimage" "lpr")
("\\.chm$" "xchm")
("\\.rar$" "unrar x")
("\\.e?ps\\.g?z$" "gunzip -qc * | gv -")
("\\.pdf$" "zathura")
("\\.flv$" "mplayer")
("\\.mov$" "mplayer")
("\\.3gp$" "mplayer")
("\\.png$" "feh")
("\\.jpg$" "feh")
("\\.JPG$" "feh")
("\\.avi$" "mplayer")))