The buffer name for the shell-command or async-shell-command would be much more useful if they were given the name of the command being executed. I started working a bit on a patch for that, but it's just code changes right now. Here's a preview of what I mean. @@ -4252,12 +4252,6 @@ undo-outer-limit-truncate ;;;; Shell commands -(defconst shell-command-buffer-name "*Shell Command Output*" - "Name of the output buffer for shell commands.") - -(defconst shell-command-buffer-name-async "*Async Shell Command*" - "Name of the output buffer for asynchronous shell commands.") - (defvar shell-command-history nil "History list for some commands that read shell commands. @@ -4671,7 +4660,8 @@ shell-command ;; Output goes in a separate buffer. (if (string-match "[ \t]*&[ \t]*\\'" command) ;; Command ending with ampersand means asynchronous. - (let* ((buffer (get-buffer-create + (let* ((shell-command-buffer-name-async (concat "*" command "*")) + (buffer (get-buffer-create (or output-buffer shell-command-buffer-name-async))) (bname (buffer-name buffer)) (proc (get-buffer-process buffer)) @@ -4942,7 +4932,8 @@ shell-command-on-region shell-command-default-error-buffer t (region-noncontiguous-p)))) - (let ((error-file + (let ((shell-command-buffer-name (concat "*" command "*")) + (error-file (if error-buffer (make-temp-file (expand-file-name "scor"