emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 1cadab7 2/4: Make xref-find-definitions more custom


From: Dmitry Gutov
Subject: [Emacs-diffs] master 1cadab7 2/4: Make xref-find-definitions more customizable
Date: Thu, 23 May 2019 21:54:29 -0400 (EDT)

branch: master
commit 1cadab78e242834adab0fae3cb1feb691d52f8c5
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    Make xref-find-definitions more customizable
    
    * lisp/progmodes/xref.el (xref--show-defs-buffer): New function.
    Move a bit of logic from xref--show-defs to make it more
    customizable.
    (xref--push-markers): New function, extracted from
    xref--show-xrefs.
    (xref-show-definitions-function): Set to the new function.
---
 lisp/progmodes/xref.el | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 3951b9f..b226a41 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -792,11 +792,19 @@ Return an alist of the form ((FILENAME . (XREF ...)) 
...)."
               xref--original-window-intent (assoc-default 'display-action 
alist))
         (current-buffer)))))
 
+(defun xref--show-defs-buffer (xrefs alist)
+  (cond
+   ((not (cdr xrefs))
+    (xref--pop-to-location (car xrefs)
+                           (assoc-default 'display-action alist)))
+   (t
+    (xref--show-xref-buffer xrefs alist))))
+
 
 (defvar xref-show-xrefs-function 'xref--show-xref-buffer
   "Function to display a list of search results.")
 
-(defvar xref-show-definitions-function 'xref--show-xref-buffer
+(defvar xref-show-definitions-function 'xref--show-defs-buffer
   "Function to display a list of definitions.")
 
 (defvar xref--read-identifier-history nil)
@@ -804,22 +812,20 @@ Return an alist of the form ((FILENAME . (XREF ...)) 
...)."
 (defvar xref--read-pattern-history nil)
 
 (defun xref--show-xrefs (xrefs display-action)
-  (unless (region-active-p) (push-mark nil t))
-  (xref-push-marker-stack)
+  (xref--push-markers)
   (funcall xref-show-xrefs-function xrefs
            `((window . ,(selected-window))
              (display-action . ,display-action))))
 
 (defun xref--show-defs (xrefs display-action)
+  (xref--push-markers)
+  (funcall xref-show-definitions-function xrefs
+           `((window . ,(selected-window))
+             (display-action . ,display-action))))
+
+(defun xref--push-markers ()
   (unless (region-active-p) (push-mark nil t))
-  (xref-push-marker-stack)
-  (cond
-   ((not (cdr xrefs))
-    (xref--pop-to-location (car xrefs) display-action))
-   (t
-    (funcall xref-show-definitions-function xrefs
-             `((window . ,(selected-window))
-               (display-action . ,display-action))))))
+  (xref-push-marker-stack))
 
 (defun xref--prompt-p (command)
   (or (eq xref-prompt-for-identifier t)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]