diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 87ce2299c5..169f49a348 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -782,7 +773,7 @@ xref--show-xref-buffer (erase-buffer) (xref--insert-xrefs xref-alist) (xref--xref-buffer-mode) - (pop-to-buffer (current-buffer)) + (pop-to-buffer (current-buffer) (assoc-default 'display-action-alist alist)) (goto-char (point-min)) (setq xref--original-window (assoc-default 'window alist) xref--original-window-intent (assoc-default 'display-action alist)) @@ -808,12 +799,15 @@ xref--show-xrefs (cond ((and (not (cdr xrefs)) (not always-show-list)) (xref-push-marker-stack) - (xref--pop-to-location (car xrefs) display-action)) + (xref--pop-to-location (car xrefs) (unless (listp display-action) display-action))) (t (xref-push-marker-stack) (funcall xref-show-xrefs-function xrefs `((window . ,(selected-window)) - (display-action . ,display-action)))))) + (display-action + . ,(unless (listp display-action) display-action)) + (display-action-alist + . ,(when (listp display-action) display-action))))))) (defun xref--prompt-p (command) (or (eq xref-prompt-for-identifier t) @@ -864,7 +858,7 @@ xref-find-definitions Otherwise, display the list of the possible definitions in a buffer where the user can select from the list." (interactive (list (xref--read-identifier "Find definitions of: "))) - (xref--find-definitions identifier nil)) + (xref--find-definitions identifier '((display-buffer-maybe-below-selected)))) ;;;###autoload (defun xref-find-definitions-other-window (identifier)