Fix the use of xref-window-local-history together with Xref buffer
* lisp/progmodes/xref.el (xref--push-markers): Temporarily restore the selected window as well, using the value from the new argument (bug#76565). Update both callers.
This commit is contained in:
parent
8091772767
commit
625ed68aea
1 changed files with 21 additions and 12 deletions
|
@ -1516,31 +1516,40 @@ The meanings of both arguments are the same as documented in
|
|||
xrefs
|
||||
(setq xrefs 'called-already)))))))
|
||||
(let ((cb (current-buffer))
|
||||
(pt (point)))
|
||||
(pt (point))
|
||||
(win (selected-window)))
|
||||
(prog1
|
||||
(funcall xref-show-xrefs-function fetcher
|
||||
`((window . ,(selected-window))
|
||||
`((window . ,win)
|
||||
(display-action . ,display-action)
|
||||
(auto-jump . ,xref-auto-jump-to-first-xref)))
|
||||
(xref--push-markers cb pt))))
|
||||
(xref--push-markers cb pt win))))
|
||||
|
||||
(defun xref--show-defs (xrefs display-action)
|
||||
(let ((cb (current-buffer))
|
||||
(pt (point)))
|
||||
(pt (point))
|
||||
(win (selected-window)))
|
||||
(prog1
|
||||
(funcall xref-show-definitions-function xrefs
|
||||
`((window . ,(selected-window))
|
||||
`((window . ,win)
|
||||
(display-action . ,display-action)
|
||||
(auto-jump . ,xref-auto-jump-to-first-definition)))
|
||||
(xref--push-markers cb pt))))
|
||||
(xref--push-markers cb pt win))))
|
||||
|
||||
(defun xref--push-markers (buf pt)
|
||||
(defun xref--push-markers (buf pt win)
|
||||
(when (buffer-live-p buf)
|
||||
(save-excursion
|
||||
(with-no-warnings (set-buffer buf))
|
||||
(goto-char pt)
|
||||
(unless (region-active-p) (push-mark nil t))
|
||||
(xref-push-marker-stack))))
|
||||
;; This was we support the `xref-history-storage' getter which
|
||||
;; depends on the selected window. This is getting pretty complex,
|
||||
;; though. The alternative approach to try would be to push early
|
||||
;; but undo the stack insertion and mark-pushing in error handler.
|
||||
(save-window-excursion
|
||||
(when (window-live-p win)
|
||||
(select-window win))
|
||||
(save-excursion
|
||||
(with-no-warnings (set-buffer buf))
|
||||
(goto-char pt)
|
||||
(unless (region-active-p) (push-mark nil t))
|
||||
(xref-push-marker-stack)))))
|
||||
|
||||
(defun xref--prompt-p (command)
|
||||
(or (eq xref-prompt-for-identifier t)
|
||||
|
|
Loading…
Add table
Reference in a new issue