Dans Emacs, existe-t-il un moyen de capturer la commande stdout de dired-do-shell-commande, disons à la kill-ring? Sans savoir comment, je finis par aller au tampon Messages et obtenir manuellement la sortie stdout à partir de là.emacs: Comment capturer stdout à partir de la commande dired-do-shell?
1
A
Répondre
1
L'aide pour cette commande indique que la sortie est envoyée à un tampon nommé *Shell Command Output*
, en supposant que la commande n'a pas &
. Si tel est le cas, ce morceau de code fera ce que vous voulez:
(defun do-shell-and-copy-to-kill-ring (command &optional arg file-list)
(interactive
(let ((files (dired-get-marked-files t current-prefix-arg)))
(list
(dired-read-shell-command "! on %s: " current-prefix-arg files)
current-prefix-arg
files)))
(dired-do-shell-command command arg file-list)
(with-current-buffer "*Shell Command Output*"
(copy-region-as-kill (point-min) (point-max))))
Pour les commandes async, vous devez attendre pour eux et regarder dans *Async Shell Command*
tampon.
Merci! J'ai utilisé ceci pour câbler votre solution dans ma configuration: (defun my-dired-mode-keys() "Modifier les keymaps utilisées par' dired-mode '. " (local-set-key (kbd" Cc d ")' do-shell-and-copy-to-kill-ring)) (ajout de hook 'dired-mode-hook' my-dired-mode-keys) – user1011471