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.
+ * 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 <rgm@gnu.org>
(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)))
(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.