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)