emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/taxy 1774dc34a0 1/3: Change: (deffy-jump) Offer for fil


From: ELPA Syncer
Subject: [elpa] externals/taxy 1774dc34a0 1/3: Change: (deffy-jump) Offer for file, project, all
Date: Mon, 27 Jun 2022 01:58:05 -0400 (EDT)

branch: externals/taxy
commit 1774dc34a04a375e9c142f293b0697c86004285e
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>

    Change: (deffy-jump) Offer for file, project, all
---
 examples/deffy.el | 50 ++++++++++++++++++++++++++++++++------------------
 1 file changed, 32 insertions(+), 18 deletions(-)

diff --git a/examples/deffy.el b/examples/deffy.el
index 3126bd0336..4e2dc9ceca 100644
--- a/examples/deffy.el
+++ b/examples/deffy.el
@@ -242,26 +242,16 @@ Interactively, with prefix, display in dedicated side 
window."
 (defun deffy-jump (def)
   "Jump to definition DEF.
 Interactively, read DEF from current buffer with completion; with
-prefix, from all `deffy-mode' buffers."
+universal prefix, from project buffers; with two universal
+prefixes, from all `deffy-mode' buffers."
   (interactive
    (list (deffy--read-def
-          (if current-prefix-arg
-              (cl-loop for buffer in (buffer-list)
-                       when (eq 'deffy-mode (buffer-local-value 'major-mode 
buffer))
-                       collect buffer)
-            (or (cl-loop for buffer in (buffer-list)
-                         when (and (eq 'deffy-mode (buffer-local-value 
'major-mode buffer))
-                                   (member (buffer-file-name)
-                                            (buffer-local-value 'deffy-files 
buffer)))
-                         return (list buffer))
-                (condition-case nil
-                    (save-window-excursion
-                      (deffy-buffer)
-                      (list (current-buffer)))
-                  (error (cl-loop for window in (window-list)
-                                   when (eq 'deffy-mode
-                                            (buffer-local-value 'major-mode 
(window-buffer window)))
-                                   return (list (window-buffer window))))))))))
+           (pcase current-prefix-arg
+             (`nil (deffy--buffer-for (current-buffer)))
+             ('(4) (save-window-excursion
+                    (deffy-project)
+                    (list (current-buffer))))
+             (_ (deffy--all-buffers))))))
   (pcase-let (((cl-struct deffy-def file pos) def)
               (action (if (eq 'deffy-mode major-mode)
                           `(display-buffer-in-previous-window
@@ -402,6 +392,30 @@ prefix, from all `deffy-mode' buffers."
                          (or (cl-find-if #'stringp form)
                               ""))))))))
 
+(defun deffy--all-buffers ()
+  "Return list of all `deffy-mode' buffers."
+  (cl-loop for buffer in (buffer-list)
+          when (eq 'deffy-mode (buffer-local-value 'major-mode buffer))
+          collect buffer))
+
+(defun deffy--buffer-for (buffer)
+  "Return `deffy-mode' buffer having definitions for BUFFER.
+Return value is actually a one-element list."
+  (or (cl-loop for other-buffer in (buffer-list)
+              when (and (eq 'deffy-mode (buffer-local-value 'major-mode 
other-buffer))
+                        (member (buffer-file-name buffer)
+                                 (buffer-local-value 'deffy-files 
other-buffer)))
+              return (list other-buffer))
+      ;; Make a new deffy buffer for BUFFER.
+      (condition-case nil
+         (save-window-excursion
+           (deffy-buffer)
+           (list (current-buffer)))
+       (error (cl-loop for window in (window-list)
+                        when (eq 'deffy-mode
+                                 (buffer-local-value 'major-mode 
(window-buffer window)))
+                        return (list (window-buffer window)))))))
+
 ;;;;; Bookmark support
 
 (defvar bookmark-make-record-function)



reply via email to

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