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

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

[elpa] externals/javaimp 8f5e5b4 2/2: * javaimp.el (javaimp-visit-projec


From: Filipp Gunbin
Subject: [elpa] externals/javaimp 8f5e5b4 2/2: * javaimp.el (javaimp-visit-project): Improve code
Date: Fri, 8 Oct 2021 18:25:34 -0400 (EDT)

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

    * javaimp.el (javaimp-visit-project): Improve code
---
 javaimp.el | 62 +++++++++++++++++++++++++++++++++++++-------------------------
 1 file changed, 37 insertions(+), 25 deletions(-)

diff --git a/javaimp.el b/javaimp.el
index acaecfb..4d9b01b 100644
--- a/javaimp.el
+++ b/javaimp.el
@@ -203,31 +203,43 @@ directory containing pom.xml / build.gradle[.kts].
 After being processed by this command, the module tree becomes
 known to javaimp and `javaimp-add-import' may be called inside
 any module file."
-  (interactive "DVisit Maven or Gradle project in directory: ")
-  (let* ((exp-dir (expand-file-name (file-name-as-directory dir)))
-         build-file
-         (trees (cond
-                 ((file-regular-p (setq build-file (concat exp-dir "pom.xml")))
-                  (javaimp--maven-visit build-file))
-                 ((or (file-regular-p
-                       (setq build-file (concat exp-dir "build.gradle")))
-                      (file-regular-p
-                       (setq build-file (concat exp-dir "build.gradle.kts"))))
-                  (list (javaimp--gradle-visit build-file)))
-                 (t
-                  (error "Could not find build file in dir %s" dir)))))
-    ;; delete previous tree(s) loaded from this build file, if any
-    (setq javaimp-project-forest
-         (seq-remove (lambda (node)
-                       (equal (javaimp-module-file-orig (javaimp-node-contents 
node))
-                              build-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? "
-                              (javaimp-module-id (javaimp-node-contents 
node))))
-        (push node javaimp-project-forest)))
-    (message "Loaded tree for %s" dir)))
+  (interactive "DVisit Gradle or Maven project in directory: ")
+  (setq dir (file-name-as-directory (expand-file-name dir)))
+  (if-let ((build-file
+            (seq-find #'file-exists-p
+                      (mapcar (lambda (f)
+                                (concat dir f))
+                              '("build.gradle" "build.gradle.kts"
+                                "pom.xml")))))
+      (progn
+        ;; Forget previous tree(s) loaded from this build file, if
+        ;; any.  Additional project trees (see below) have the same
+        ;; file-orig, so there may be several here.
+        (when-let ((existing-list
+                    (seq-filter (lambda (node)
+                                  (equal (javaimp-module-file-orig
+                                          (javaimp-node-contents node))
+                                        build-file))
+                                javaimp-project-forest)))
+          (if (y-or-n-p "Forget already loaded project(s)?")
+              (setq javaimp-project-forest
+                    (seq-remove (lambda (node)
+                                  (memq node existing-list))
+                                javaimp-project-forest))
+            (user-error "Aborted")))
+        (let ((trees (funcall (if (string-match
+                                   "gradle" (file-name-nondirectory 
build-file))
+                                  #'javaimp--gradle-visit
+                                #'javaimp--maven-visit)
+                              build-file)))
+          (push (car trees) javaimp-project-forest)
+          (dolist (node (cdr trees))
+            (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)))
+    (error "Could not find build file in directory %s" dir)))
 
 
 ;; Dependency jars



reply via email to

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