]> git.eshelyaron.com Git - emacs.git/commitdiff
Separate creation and display of Xref results buffer
authorEshel Yaron <me@eshelyaron.com>
Sun, 2 Jun 2024 11:15:13 +0000 (13:15 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sun, 2 Jun 2024 11:15:13 +0000 (13:15 +0200)
lisp/progmodes/xref.el

index 174986e0c584758f99beb09956c0d8c3422e13bb..bab5384574ee57bba9d0f94024ea871c6f1b5141 100644 (file)
@@ -1085,7 +1085,7 @@ Xref buffers."
                     (xref-make-fetcher backend identifier kind identifier
                                        (current-buffer) (point))))
          (xref-auto-jump-to-first-xref nil))
-    (set-buffer (xref--show-xref-buffer fetcher nil))
+    (set-buffer (xref--xref-buffer fetcher nil))
     (let ((forward-str (bookmark-get-front-context-string bookmark))
           (behind-str (bookmark-get-rear-context-string bookmark)))
       (when (and forward-str (search-forward forward-str (point-max) t))
@@ -1350,24 +1350,26 @@ this variable to an alist with the following key-value pairs:
 - (original-point . POS) where POS is the buffer position in which the
   Xref command that created the fetcher was invoked.")
 
-(defun xref--show-xref-buffer (fetcher alist)
-  (cl-assert (functionp fetcher))
+(defun xref--xref-buffer (fetcher alist)
   (let* ((xrefs
           (or
            (assoc-default 'fetched-xrefs alist)
            (setq xref-fetcher-alist nil)
            (funcall fetcher)))
          (xref-alist (xref--analyze xrefs))
-         (dd default-directory)
-         buf)
+         (dd default-directory))
     (with-current-buffer (get-buffer-create xref-buffer-name)
       (xref--ensure-default-directory dd (current-buffer))
       (xref--xref-buffer-mode)
       (xref--show-common-initialize xref-alist fetcher (append xref-fetcher-alist alist))
       (setq xref-num-matches-found (length xrefs))
       (setq mode-line-process (list xref-mode-line-matches))
-      (pop-to-buffer (current-buffer))
-      (setq buf (current-buffer)))
+      (current-buffer))))
+
+(defun xref--show-xref-buffer (fetcher alist)
+  (cl-assert (functionp fetcher))
+  (let ((buf (xref--xref-buffer fetcher alist)))
+    (pop-to-buffer buf)
     (xref--auto-jump-first buf (assoc-default 'auto-jump alist))
     buf))