]> git.eshelyaron.com Git - sweep.git/commitdiff
ENHANCED: provide caller predicate in xref-find-references
authorEshel Yaron <me@eshelyaron.com>
Thu, 8 Sep 2022 13:50:33 +0000 (16:50 +0300)
committerEshel Yaron <me@eshelyaron.com>
Thu, 8 Sep 2022 13:50:33 +0000 (16:50 +0300)
sweep.el
sweep.pl

index f9968310676bf8871c2ff8eb0ae151d03cb04cf6..932eec322e161603b38e96e6e517d088a7dc5443 100644 (file)
--- a/sweep.el
+++ b/sweep.el
@@ -1201,9 +1201,10 @@ Interactively, a prefix arg means to prompt for BUFFER."
 (cl-defmethod xref-backend-references ((_backend (eql 'sweep)) mfn)
   (let ((refs (sweep-predicate-references mfn)))
     (seq-map (lambda (loc)
-               (let ((path (car loc))
-                     (line (or (cdr loc) 1)))
-                 (xref-make (concat path ":" (number-to-string line)) (xref-make-file-location path line 0))))
+               (let ((by (car loc))
+                     (path (cadr loc))
+                     (line (or (cddr loc) 1)))
+                 (xref-make by (xref-make-file-location path line 0))))
              refs)))
 
 (cl-defmethod xref-backend-apropos ((_backend (eql 'sweep)) pattern)
index bdbebf9fea1510346b96e63c7c4d4558f8f226cf..1c90e853c978726adce9e5e7bf079b93ca10ab35 100644 (file)
--- a/sweep.pl
+++ b/sweep.pl
@@ -139,7 +139,6 @@ sweep_identifier_at_point([Contents0, Path, Point], Identifier) :-
 
 :- dynamic sweep_current_identifier_at_point/1.
 
-
 sweep_identifier_at_point_(Path0, Point, Contents, Identifier) :-
     atom_string(Path, Path0),
     (   xref_module(Path, M)
@@ -360,13 +359,17 @@ sweep_module_description([M0|P], [M|[P]]) :- atom_string(M0, M).
 sweep_predicate_references(MFN, Refs) :-
     term_string(M:F/N, MFN),
     pi_head(F/N, H),
-    findall([Path|Line],
-            (xref_called(Path0, H, _, _, Line),
+    findall([B,Path|Line],
+            (xref_called(Path0, H, B0, _, Line),
+             pi_head(B1, B0),
+             term_string(B1, B),
              atom_string(Path0, Path)),
             Refs,
             Tail),
-    findall([Path|Line],
-            (xref_called(Path0, M:H, _, _, Line),
+    findall([B,Path|Line],
+            (xref_called(Path0, M:H, B0, _, Line),
+             pi_head(B1, B0),
+             term_string(B1, B),
              atom_string(Path0, Path)),
             Tail).