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)
This commit is contained in:
Eli Zaretskii 2019-05-08 20:34:09 +03:00
parent 916510b6d9
commit e7ab351caa

View file

@ -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)))))))