Mercurial > emacs
changeset 97444:85c2adddd765
(tramp-handle-shell-command): Correctly handle
output going to current buffer. Don't disable undo.
author | Andreas Schwab <schwab@suse.de> |
---|---|
date | Wed, 13 Aug 2008 19:09:10 +0000 |
parents | 34df0af1cb93 |
children | 8f3b361fa8c1 |
files | lisp/ChangeLog lisp/net/tramp.el |
diffstat | 2 files changed, 15 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Aug 13 03:12:49 2008 +0000 +++ b/lisp/ChangeLog Wed Aug 13 19:09:10 2008 +0000 @@ -1,3 +1,8 @@ +2008-08-13 Andreas Schwab <schwab@suse.de> + + * net/tramp.el (tramp-handle-shell-command): Correctly handle + output going to current buffer. Don't disable undo. + 2008-08-13 Glenn Morris <rgm@gnu.org> * eshell/esh-cmd.el (eshell/which): Handle the case where no description
--- a/lisp/net/tramp.el Wed Aug 13 03:12:49 2008 +0000 +++ b/lisp/net/tramp.el Wed Aug 13 19:09:10 2008 +0000 @@ -3846,11 +3846,14 @@ ;; We cannot use `shell-file-name' and `shell-command-switch', ;; they are variables of the local host. (args (list "/bin/sh" "-c" (substring command 0 asynchronous))) + current-buffer-p (output-buffer (cond ((bufferp output-buffer) output-buffer) ((stringp output-buffer) (get-buffer-create output-buffer)) - (output-buffer (current-buffer)) + (output-buffer + (setq current-buffer-p t) + (current-buffer)) (t (get-buffer-create (if asynchronous "*Async Shell Command*" @@ -3875,12 +3878,12 @@ (error nil)) (error "Shell command in progress"))) - (with-current-buffer output-buffer - (setq buffer-read-only nil - buffer-undo-list t) - (erase-buffer)) - - (if (integerp asynchronous) + (unless current-buffer-p + (with-current-buffer output-buffer + (setq buffer-read-only nil) + (erase-buffer))) + + (if (and (not current-buffer-p) (integerp asynchronous)) (prog1 ;; Run the process. (apply 'start-file-process "*Async Shell*" buffer args)