[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)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/javaimp 774de30: * javaimp-util.el: Move tree search/building utils from javaimp.el. Minor fixes.,
Filipp Gunbin <=