[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)