diff options
author | Eli Zaretskii <eliz@gnu.org> | 2019-05-08 20:34:09 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2019-05-08 20:34:09 +0300 |
commit | e7ab351caa884755c032fd9544ba67a3c953144f (patch) | |
tree | 2e88bfa03061b141b7b58fe95800b7ab78f1816b | |
parent | 916510b6d919a333d1dac528a9d051aa6d857ccc (diff) | |
download | emacs-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.el | 9 |
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))))))) |