From: Andreas Schwab Date: Wed, 13 Aug 2008 19:33:36 +0000 (+0000) Subject: (tramp-handle-shell-command): Handle output going X-Git-Tag: emacs-pretest-23.0.90~3510 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f34db3167f6d743f86d85cd4adfa439e5bdfb1e8;p=emacs.git (tramp-handle-shell-command): Handle output going to current buffer like shell-command. Don't disable undo. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1401f4b8cd8..d2cd49750b2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,7 @@ 2008-08-13 Andreas Schwab - * net/tramp.el (tramp-handle-shell-command): Correctly handle - output going to current buffer. Don't disable undo. + * net/tramp.el (tramp-handle-shell-command): Handle output going + to current buffer like shell-command. Don't disable undo. 2008-08-13 Glenn Morris diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 67e679b2ef3..828c1d2442f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3878,7 +3878,10 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." (error nil)) (error "Shell command in progress"))) - (unless current-buffer-p + (if current-buffer-p + (progn + (barf-if-buffer-read-only) + (push-mark nil t)) (with-current-buffer output-buffer (setq buffer-read-only nil) (erase-buffer))) @@ -3900,12 +3903,20 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." (with-current-buffer error-buffer (insert-file-contents (cadr buffer))) (delete-file (cadr buffer))) - ;; There's some output, display it. - (when (with-current-buffer output-buffer (> (point-max) (point-min))) - (if (functionp 'display-message-or-buffer) - (funcall (symbol-function 'display-message-or-buffer) - output-buffer) - (pop-to-buffer output-buffer))))))) + (if current-buffer-p + ;; This is like exchange-point-and-mark, but doesn't + ;; activate the mark. It is cleaner to avoid activation, + ;; even though the command loop would deactivate the mark + ;; because we inserted text. + (goto-char (prog1 (mark t) + (set-marker (mark-marker) (point) + (current-buffer)))) + ;; There's some output, display it. + (when (with-current-buffer output-buffer (> (point-max) (point-min))) + (if (functionp 'display-message-or-buffer) + (funcall (symbol-function 'display-message-or-buffer) + output-buffer) + (pop-to-buffer output-buffer)))))))) ;; File Editing.