summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-05-08 20:34:09 +0300
committerEli Zaretskii <eliz@gnu.org>2019-05-08 20:34:09 +0300
commite7ab351caa884755c032fd9544ba67a3c953144f (patch)
tree2e88bfa03061b141b7b58fe95800b7ab78f1816b
parent916510b6d919a333d1dac528a9d051aa6d857ccc (diff)
downloademacs-e7ab351caa884755c032fd9544ba67a3c953144f.tar.gz
emacs-e7ab351caa884755c032fd9544ba67a3c953144f.tar.bz2
emacs-e7ab351caa884755c032fd9544ba67a3c953144f.zip
Fix positioning client buffer as instructed by emacsclient
* lisp/server.el (server-switch-buffer): Let-bind switch-to-buffer-preserve-window-point to nil when switching to the client buffer, when the client requested a specific position. (Bug#35602)
-rw-r--r--lisp/server.el9
1 files changed, 8 insertions, 1 deletions
diff --git a/lisp/server.el b/lisp/server.el
index a39b1cb46d4..42329e853ba 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -1621,7 +1621,14 @@ be a cons cell (LINENUMBER . COLUMNNUMBER)."
(frame-terminal))))
'nomini 'visible (selected-window))))
(condition-case nil
- (switch-to-buffer next-buffer)
+ ;; If the client specified a new buffer position,
+ ;; treat that as an explicit point-move command, and
+ ;; override switch-to-buffer-preserve-window-point.
+ (let ((switch-to-buffer-preserve-window-point
+ (if filepos
+ nil
+ switch-to-buffer-preserve-window-point)))
+ (switch-to-buffer next-buffer))
;; After all the above, we might still have ended up with
;; a minibuffer/dedicated-window (if there's no other).
(error (pop-to-buffer next-buffer)))))))