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

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

[nongnu] elpa/denote-refs 98ab0da334: Fix Xref matching in Denote-Refs e


From: ELPA Syncer
Subject: [nongnu] elpa/denote-refs 98ab0da334: Fix Xref matching in Denote-Refs enabled buffers
Date: Tue, 20 Dec 2022 10:58:51 -0500 (EST)

branch: elpa/denote-refs
commit 98ab0da334bcd069ff46ad200cd03b1572a7d7ca
Author: Akib Azmain Turja <akib@disroot.org>
Commit: Akib Azmain Turja <akib@disroot.org>

    Fix Xref matching in Denote-Refs enabled buffers
    
    * denote-refs.el (denote-refs--fix-xref--collect-matches): New
    function.
    * denote-refs.el (denote-refs-mode): Add ':around' advice
    'denote-refs--fix-xref--collect-matches' on
    'xref--collect-matches'.
---
 denote-refs.el | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/denote-refs.el b/denote-refs.el
index e93b0d2fa9..cfb1627c2c 100644
--- a/denote-refs.el
+++ b/denote-refs.el
@@ -238,6 +238,26 @@ The car is PATH relative to user option 
`denote-directory'."
                (cdr denote-refs-update-delay))
              nil #'denote-refs--idle-update buffer)))))
 
+;; Once added, we won't ever remove this advice, so we've to be extra
+;; careful.
+(defun denote-refs--fix-xref--collect-matches (fn hit &rest args)
+  "Advice around `xref--collect-match' to ignore reference lists.
+
+FN is the original definition of `xref--collect-matches', HIT and ARGS
+are it's arguments."
+  (let* ((file (cadr hit))
+         (file (and file (concat xref--hits-remote-id file)))
+         (buf (xref--find-file-buffer file)))
+    (if (and buf (buffer-local-value 'denote-refs-mode buf))
+        (progn
+          (with-current-buffer buf
+            (denote-refs--remove))
+          (unwind-protect
+              (apply fn hit args)
+            (with-current-buffer buf
+              (denote-refs--show))))
+      (apply fn hit args))))
+
 ;;;###autoload
 (define-minor-mode denote-refs-mode
   "Toggle showing links and backlinks in Denote notes."
@@ -256,7 +276,10 @@ The car is PATH relative to user option 
`denote-directory'."
           (setq denote-refs--idle-update-timer
                 (run-with-idle-timer
                  (car denote-refs-update-delay) nil
-                 #'denote-refs--idle-update (current-buffer))))
+                 #'denote-refs--idle-update (current-buffer)))
+          ;; We won't ever remove this advice.
+          (advice-add #'xref--collect-matches :around
+                      #'denote-refs--fix-xref--collect-matches))
       (cancel-timer denote-refs--idle-update-timer)
       (denote-refs--remove)
       (remove-hook 'before-save-hook #'denote-refs--remove t)



reply via email to

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