From 5d2ebd96ecaa30e227674cb6bb0dd9ede7b50987 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 13 Aug 2008 19:09:10 +0000 Subject: [PATCH] (tramp-handle-shell-command): Correctly handle output going to current buffer. Don't disable undo. --- lisp/ChangeLog | 5 +++++ lisp/net/tramp.el | 15 +++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8426b30789e..1401f4b8cd8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2008-08-13 Andreas Schwab + + * net/tramp.el (tramp-handle-shell-command): Correctly handle + output going to current buffer. Don't disable undo. + 2008-08-13 Glenn Morris * eshell/esh-cmd.el (eshell/which): Handle the case where no description diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8c836aea4fa..67e679b2ef3 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3846,11 +3846,14 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." ;; 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 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." (error nil)) (error "Shell command in progress"))) - (with-current-buffer output-buffer - (setq buffer-read-only nil - buffer-undo-list t) - (erase-buffer)) + (unless current-buffer-p + (with-current-buffer output-buffer + (setq buffer-read-only nil) + (erase-buffer))) - (if (integerp asynchronous) + (if (and (not current-buffer-p) (integerp asynchronous)) (prog1 ;; Run the process. (apply 'start-file-process "*Async Shell*" buffer args) -- 2.39.2