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

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

[elpa] externals/javaimp 774de30: * javaimp-util.el: Move tree search/bu


From: Filipp Gunbin
Subject: [elpa] externals/javaimp 774de30: * javaimp-util.el: Move tree search/building utils from javaimp.el. Minor fixes.
Date: Fri, 4 Jun 2021 14:48:58 -0400 (EDT)

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

    * javaimp-util.el: Move tree search/building utils from javaimp.el.  Minor 
fixes.
---
 javaimp-parse.el |  4 +++-
 javaimp-tests.el | 24 ++++++++++++------------
 javaimp-util.el  | 38 ++++++++++++++++++++++++++++++++++++++
 javaimp.el       | 53 ++++++++++-------------------------------------------
 4 files changed, 63 insertions(+), 56 deletions(-)

diff --git a/javaimp-parse.el b/javaimp-parse.el
index b66e3da..1784493 100644
--- a/javaimp-parse.el
+++ b/javaimp-parse.el
@@ -41,7 +41,9 @@ present."
 (defconst javaimp--parse-class-keywords
   '("class" "interface" "enum"))
 (defconst javaimp--parse-stmt-keywords
-  '("if" "for" "while" "switch" "try" "catch"))
+  '("if" "for" "while" "switch" "try" "catch" "finally"
+    "static"                            ;static initializer block
+    ))
 
 (defun javaimp--parse-block-re (keywords)
   (concat
diff --git a/javaimp-tests.el b/javaimp-tests.el
index 497514c..b475fa1 100644
--- a/javaimp-tests.el
+++ b/javaimp-tests.el
@@ -8,19 +8,19 @@
 (require 'ert)
 (require 'javaimp)
 
-(ert-deftest javaimp-test--maven-projects-from-xml--project ()
-  (with-temp-buffer
-    (insert "<project/>")
-    (let ((projects (javaimp--maven-projects-from-xml
-                    (xml-parse-region (point-min) (point-max)))))
-      (should (eql (length projects) 1)))))
+;; (ert-deftest javaimp-test--maven-projects-from-xml--project ()
+;;   (with-temp-buffer
+;;     (insert "<project/>")
+;;     (let ((projects (javaimp--maven-projects-from-xml
+;;                  (xml-parse-region (point-min) (point-max)))))
+;;       (should (eql (length projects) 1)))))
 
-(ert-deftest javaimp-test--maven-projects-from-xml--projects ()
-  (with-temp-buffer
-    (insert "<projects><project/><project/></projects>")
-    (let ((projects (javaimp--maven-projects-from-xml
-                    (xml-parse-region (point-min) (point-max)))))
-      (should (eql (length projects) 2)))))
+;; (ert-deftest javaimp-test--maven-projects-from-xml--projects ()
+;;   (with-temp-buffer
+;;     (insert "<projects><project/><project/></projects>")
+;;     (let ((projects (javaimp--maven-projects-from-xml
+;;                  (xml-parse-region (point-min) (point-max)))))
+;;       (should (eql (length projects) 2)))))
 
 
 (ert-deftest javaimp-test--parse-arglist ()
diff --git a/javaimp-util.el b/javaimp-util.el
index 9304fce..c7424f7 100644
--- a/javaimp-util.el
+++ b/javaimp-util.el
@@ -137,6 +137,10 @@ buffer and returns its result"
                   (concat "[" path-separator "\n]+")
                   t)))
 
+
+
+;; Tree building & search
+
 (defun javaimp--build-tree (this parent-node all)
   (message "Building tree for module: %s" (javaimp-print-id (javaimp-module-id 
this)))
   (let ((children
@@ -157,4 +161,38 @@ buffer and returns its result"
       (setf (javaimp-node-children this-node) child-nodes)
       this-node)))
 
+(defun javaimp--find-node (predicate forest)
+  (catch 'found
+    (dolist (tree forest)
+      (javaimp--find-node-in-tree-1 tree predicate))))
+
+(defun javaimp--find-node-in-tree-1 (tree predicate)
+  (when tree
+    (if (funcall predicate (javaimp-node-contents tree))
+       (throw 'found tree))
+    (dolist (child (javaimp-node-children tree))
+      (javaimp--find-node-in-tree-1 child predicate))))
+
+
+(defun javaimp--collect-nodes (predicate forest)
+  (apply #'seq-concatenate 'list
+        (mapcar (lambda (tree)
+                  (javaimp--collect-nodes-from-tree tree predicate))
+                forest)))
+
+(defun javaimp--collect-nodes-from-tree (tree &optional predicate)
+  (when tree
+    (append (when (or (not predicate)
+                      (funcall predicate (javaimp-node-contents tree)))
+             (list tree))
+           (apply #'seq-concatenate 'list
+                  (mapcar (lambda (child)
+                            (javaimp--collect-nodes-from-tree child predicate))
+                          (javaimp-node-children tree))))))
+
+(defun javaimp--get-root (node)
+  (while (javaimp-node-parent node)
+    (setq node (javaimp-node-parent node)))
+  node)
+
 (provide 'javaimp-util)
diff --git a/javaimp.el b/javaimp.el
index a0dd555..767bab8 100644
--- a/javaimp.el
+++ b/javaimp.el
@@ -58,9 +58,9 @@
 ;; (setq javaimp-additional-source-dirs '("generated-sources/thrift"))
 ;; (add-hook 'java-mode-hook
 ;;       (lambda ()
-;;         (local-set-key "\C-ci" 'javaimp-add-import)
-;;         (local-set-key "\C-co" 'javaimp-organize-imports)))
-;; (global-set-key (kbd "C-c j v") 'javaimp-visit-project)
+;;         (local-set-key "\C-ci" #'javaimp-add-import)
+;;         (local-set-key "\C-co" #'javaimp-organize-imports)))
+;; (global-set-key (kbd "C-c j v") #'javaimp-visit-project)
 ;;
 
 ;;; News:
@@ -198,7 +198,7 @@ any module file."
                      javaimp-project-forest))
     (push (car trees) javaimp-project-forest)
     (dolist (node (cdr trees))
-      (when (y-or-n-p (format "Include additional project tree rooted at %s? "
+      (when (y-or-n-p (format "Include additional project tree rooted at %S? "
                               (javaimp-module-id (javaimp-node-contents 
node))))
         (push node javaimp-project-forest)))
     (message "Loaded tree for %s" dir)))
@@ -293,52 +293,18 @@ any module file."
         result))))
 
 
-;; Tree search routines
-
-(defun javaimp--find-node (predicate)
-  (catch 'found
-    (dolist (tree javaimp-project-forest)
-      (javaimp--find-node-in-tree-1 tree predicate))))
-
-(defun javaimp--select-nodes (predicate)
-  (apply #'seq-concatenate 'list
-        (mapcar (lambda (tree)
-                  (javaimp--select-nodes-from-tree tree predicate))
-                javaimp-project-forest)))
-
-(defun javaimp--find-node-in-tree (tree predicate)
-  (catch 'found
-    (javaimp--find-node-in-tree-1 tree predicate)))
-
-(defun javaimp--find-node-in-tree-1 (tree predicate)
-  (when tree
-    (if (funcall predicate (javaimp-node-contents tree))
-       (throw 'found tree))
-    (dolist (child (javaimp-node-children tree))
-      (javaimp--find-node-in-tree-1 child predicate))))
-
-(defun javaimp--select-nodes-from-tree (tree predicate)
-  (when tree
-    (append (if (funcall predicate (javaimp-node-contents tree))
-               (list tree))
-           (apply #'seq-concatenate 'list
-                  (mapcar (lambda (child)
-                            (javaimp--select-nodes-from-tree child predicate))
-                          (javaimp-node-children tree))))))
-
-
 ;; Some API functions
-
+;;
 ;; do not expose tree structure, return only modules
 
 (defun javaimp-find-module (predicate)
-  (let ((node (javaimp--find-node predicate)))
+  (let ((node (javaimp--find-node predicate javaimp-project-forest)))
     (and node
         (javaimp-node-contents node))))
 
-(defun javaimp-select-modules (predicate)
+(defun javaimp-collect-modules (predicate)
   (mapcar #'javaimp-node-contents
-         (javaimp--select-nodes predicate)))
+         (javaimp--collect-nodes predicate javaimp-project-forest)))
 
 
 ;;; Adding imports
@@ -375,7 +341,8 @@ prefix arg is given, don't do this filtering."
                 (lambda (m)
                    (seq-some (lambda (dir)
                                (string-prefix-p dir file))
-                             (javaimp-module-source-dirs m)))))
+                             (javaimp-module-source-dirs m)))
+                 javaimp-project-forest))
           (module (when node
                     (javaimp--update-module-maybe node)
                     (javaimp-node-contents node)))



reply via email to

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