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

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

[elpa] externals/javaimp b2331ee38b: Implement xref-backend-apropos


From: Filipp Gunbin
Subject: [elpa] externals/javaimp b2331ee38b: Implement xref-backend-apropos
Date: Tue, 10 May 2022 13:46:00 -0400 (EDT)

branch: externals/javaimp
commit b2331ee38b2d9bc4c7f26a09745d0147dcac0eb0
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>

    Implement xref-backend-apropos
---
 javaimp.el | 40 +++++++++++++++++++++++++---------------
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git a/javaimp.el b/javaimp.el
index 46ab4228f8..03cc31e24c 100644
--- a/javaimp.el
+++ b/javaimp.el
@@ -862,7 +862,7 @@ in a major mode hook."
 
 (defun javaimp-xref--backend () 'javaimp)
 
-(defun javaimp-xref--module-completion-table ()
+(defun javaimp-xref--ident-completion-table ()
   (if-let ((module (javaimp--detect-module)))
       (nconc
        (javaimp--collect-module-dep-jars-with-source-idents module)
@@ -871,23 +871,33 @@ in a major mode hook."
      (javaimp--get-current-source-dir) "current source")))
 
 (cl-defmethod xref-backend-identifier-completion-table ((_backend (eql 
'javaimp)))
-  (javaimp-xref--module-completion-table))
+  (javaimp-xref--ident-completion-table))
+
+(defun javaimp-xref--ident-definition (ident)
+  (let* ((file (get-text-property 0 'file ident))
+         (buf (get-file-buffer file))
+         (loc (if buf
+                  (xref-make-buffer-location
+                   buf (get-text-property 0 'pos ident))
+                (xref-make-file-location
+                 file
+                 (get-text-property 0 'line ident)
+                 (get-text-property 0 'column ident)))))
+    (xref-make ident loc)))
 
 (cl-defmethod xref-backend-definitions ((_backend (eql 'javaimp)) identifier)
-  (let* ((comp-table (javaimp-xref--module-completion-table))
+  (let* ((comp-table (javaimp-xref--ident-completion-table))
          (identifiers (all-completions identifier comp-table)))
-    (mapcar (lambda (ident)
-              (let* ((file (get-text-property 0 'file ident))
-                     (buf (get-file-buffer file))
-                     (loc (if buf
-                              (xref-make-buffer-location
-                               buf (get-text-property 0 'pos ident))
-                            (xref-make-file-location
-                             file
-                             (get-text-property 0 'line ident)
-                             (get-text-property 0 'column ident)))))
-                (xref-make ident loc)))
-            identifiers)))
+    (mapcar #'javaimp-xref--ident-definition identifiers)))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'javaimp)) pattern)
+  (let* ((comp-table (javaimp-xref--ident-completion-table))
+         (identifiers (seq-filter
+                       (apply-partially #'string-match
+                                        (xref-apropos-regexp pattern))
+                       comp-table)))
+    (mapcar #'javaimp-xref--ident-definition
+            (sort identifiers #'string-lessp))))
 
 
 



reply via email to

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