[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/javaimp 5b37a9a 18/32: packages/javaimp: cosmetic fixes
From: |
Stefan Monnier |
Subject: |
[elpa] externals/javaimp 5b37a9a 18/32: packages/javaimp: cosmetic fixes |
Date: |
Tue, 1 Dec 2020 10:08:29 -0500 (EST) |
branch: externals/javaimp
commit 5b37a9afb6667448b1e89c1d804f24e7e4c08f13
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>
packages/javaimp: cosmetic fixes
---
javaimp.el | 149 +++++++++++++++++++++++++++++++++----------------------------
1 file changed, 80 insertions(+), 69 deletions(-)
diff --git a/javaimp.el b/javaimp.el
index 5f13b24..f44be4e 100644
--- a/javaimp.el
+++ b/javaimp.el
@@ -14,7 +14,6 @@
;; Quick start:
;;
;; - customize `javaimp-import-group-alist'
-;;
;; - call `javaimp-maven-visit-project', giving it the top-level project
;; directory where pom.xml resides
;;
@@ -24,9 +23,8 @@
;; This module does not add all needed imports automatically! It only helps
;; you to quickly add imports when stepping through compilation errors.
;;
-;;
;; Some details:
-;;
+;;
;; If Maven failed, you can see its output in the buffer named by
;; `javaimp-debug-buf-name' (default is "*javaimp-debug*").
;;
@@ -42,34 +40,32 @@
;;
;; Currently inner classes are filtered out from completion alternatives.
;; You can always import top-level class and use qualified name.
-;;
+;;
;;
;; Example of initialization:
-;;
+;;
;; (require 'javaimp)
-;;
+;;
;; (add-to-list 'javaimp-import-group-alist
;; '("\\`\\(my\\.company\\.\\|my\\.company2\\.\\)" . 80))
-;;
+;;
;; (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)))
-;;
-;;
+;;
+;;
;; TODO:
-;;
+;;
;; - use functions `cygwin-convert-file-name-from-windows' and
;; `cygwin-convert-file-name-to-windows' when they are available instead of
;; calling `cygpath'. See https://cygwin.com/ml/cygwin/2013-03/msg00228.html.
-;;
;; - save/restore state
-;;
;; - `javaimp-add-import': without prefix arg narrow alternatives by local
name;
;; with prefix arg include all classes in alternatives
-;;
+;; - types for defcustom
;;; Code:
@@ -251,7 +247,7 @@ module file."
(message "Loaded tree for %s" file)))
-;; Maven XML routines
+;; Maven XML routines
(defun javaimp--maven-xml-load-tree (file)
"Invokes `mvn help:effective-pom' on FILE and using its output
@@ -499,7 +495,7 @@ the temporary buffer and returns its result"
(message "Reading classes in file: %s" file)
(with-temp-buffer
(let ((coding-system-for-read (and (eq system-type 'cygwin) 'utf-8-dos)))
- ;; On Cygwin, "jar" is a Windows program, so file path needs to be
+ ;; on cygwin, "jar" is a windows program, so file path needs to be
;; converted appropriately.
(process-file javaimp-jar-program nil t nil
;; `jar' accepts commands/options as a single string
@@ -514,57 +510,65 @@ the temporary buffer and returns its result"
result))))
-;; Some API functions
-
-(defun javaimp-get-all-modules ()
- (javaimp-select-nodes (lambda (module) t)))
-
-(defun javaimp-find-node (predicate)
- (javaimp--find-in-forest javaimp-project-forest predicate))
+;; Tree search routines
-(defun javaimp-select-nodes (predicate)
- (javaimp--select-from-forest javaimp-project-forest predicate))
+(defun javaimp--find-node (predicate)
+ (javaimp--find-node-in-forest javaimp-project-forest predicate))
-
-;; Tree search routines
+(defun javaimp--select-nodes (predicate)
+ (javaimp--select-nodes-from-forest javaimp-project-forest predicate))
-(defun javaimp--find-in-forest (forest predicate)
+(defun javaimp--find-node-in-forest (forest predicate)
(catch 'found
(dolist (tree forest)
- (javaimp--find-node tree predicate))))
+ (javaimp--find-node-in-tree tree predicate))))
-(defun javaimp--find-node (tree predicate)
+(defun javaimp--find-node-in-tree (tree predicate)
(if tree
(progn (if (funcall predicate (javaimp-node-contents tree))
(throw 'found tree))
(dolist (child (javaimp-node-children tree))
- (javaimp--find-node child predicate)))))
+ (javaimp--find-node-in-tree child predicate)))))
-(defun javaimp--select-from-forest (forest predicate)
+(defun javaimp--select-nodes-from-forest (forest predicate)
(apply #'seq-concatenate 'list
(mapcar (lambda (tree)
- (javaimp--select-nodes tree predicate))
+ (javaimp--select-nodes-from-tree tree predicate))
forest)))
-(defun javaimp--select-nodes (tree predicate)
+(defun javaimp--select-nodes-from-tree (tree predicate)
(if tree
(append (if (funcall predicate (javaimp-node-contents tree))
(list tree))
(apply #'seq-concatenate 'list
(mapcar (lambda (child)
- (javaimp--select-nodes child predicate))
+ (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)))
+ (and node
+ (javaimp-node-contents node))))
+
+(defun javaimp-select-modules (predicate)
+ (mapcar #'javaimp-node-contents
+ (javaimp--select-nodes predicate)))
+
+
;;; Adding imports
;;;###autoload
(defun javaimp-add-import (classname)
- "Imports CLASSNAME in the current file. Interactively,
+ "Imports classname in the current file. Interactively,
asks for a class to import, adds import statement and calls
`javaimp-organize-imports'. Import statements are not
duplicated. Completion alternatives are constructed based on
-this module's dependencies' classes, JDK classes and top-level
+this module's dependencies' classes, jdk classes and top-level
classes in the current module."
(interactive
(progn
@@ -572,7 +576,7 @@ classes in the current module."
(let* ((file (expand-file-name
(or buffer-file-name
(error "Buffer is not visiting a file!"))))
- (node (or (javaimp-find-node
+ (node (or (javaimp--find-node
(lambda (m)
(or (string-prefix-p (javaimp-module-source-dir m)
file)
(string-prefix-p (javaimp-module-test-source-dir
m) file))))
@@ -598,15 +602,18 @@ classes in the current module."
"Returns list of top-level classes in current module"
(append
(let ((build-dir (javaimp-module-build-dir module)))
+ ;; additional source dirs
(and (seq-mapcat
(lambda (rel-dir)
(let ((dir (concat build-dir (file-name-as-directory rel-dir))))
(and (file-accessible-directory-p dir)
(javaimp--get-directory-classes dir nil))))
javaimp-additional-source-dirs)))
+ ;; source dir
(let ((dir (javaimp-module-source-dir module)))
(and (file-accessible-directory-p dir)
(javaimp--get-directory-classes dir nil)))
+ ;; test source dir
(let ((dir (javaimp-module-test-source-dir module)))
(and (file-accessible-directory-p dir)
(javaimp--get-directory-classes dir nil)))))
@@ -622,10 +629,11 @@ classes in the current module."
(apply #'seq-concatenate 'list
(mapcar (lambda (subdir)
(let ((name (car subdir)))
- (javaimp--get-directory-classes
+ (javaimp--get-directory-classes
(concat dir (file-name-as-directory name)) (concat
prefix name "."))))
- (seq-filter (lambda (file) (and (cadr file) ;only directories
- (null (member (car file)
'("." "..")))))
+ (seq-filter (lambda (file)
+ (and (eq (cadr file) t) ;only directories
+ (null (member (car file) '("." "..")))))
(directory-files-and-attributes dir nil nil
t))))))
@@ -655,35 +663,38 @@ is `'ordinary' or `'static'. Interactively, NEW-IMPORTS
is nil."
(first (car old-data))
(last (cadr old-data))
(all-imports (append new-imports (cddr old-data))))
- ;; delete old imports, if any
- (if first
+ (if all-imports
(progn
- (goto-char last)
- (forward-line)
- (delete-region first (point))))
- (javaimp--prepare-for-insertion first)
- (setq all-imports
- (delete-duplicates all-imports
- :test (lambda (first second)
- (equal (car first) (car second)))))
- ;; assign order
- (let ((with-order
- (mapcar
- (lambda (import)
- (let ((order (or (assoc-default (car import)
- javaimp-import-group-alist
- 'string-match)
- javaimp-import-default-order)))
- (cons import order)))
- all-imports)))
- (setq with-order
- (sort with-order
- (lambda (first second)
- ;; sort by order, name
- (if (= (cdr first) (cdr second))
- (string< (caar first) (caar second))
- (< (cdr first) (cdr second))))))
- (javaimp--insert-imports with-order)))))
+ ;; delete old imports, if any
+ (if first
+ (progn
+ (goto-char last)
+ (forward-line)
+ (delete-region first (point))))
+ (javaimp--prepare-for-insertion first)
+ (setq all-imports
+ (delete-duplicates all-imports
+ :test (lambda (first second)
+ (equal (car first) (car second)))))
+ ;; assign order
+ (let ((with-order
+ (mapcar
+ (lambda (import)
+ (let ((order (or (assoc-default (car import)
+ javaimp-import-group-alist
+ 'string-match)
+ javaimp-import-default-order)))
+ (cons import order)))
+ all-imports)))
+ (setq with-order
+ (sort with-order
+ (lambda (first second)
+ ;; sort by order, name
+ (if (= (cdr first) (cdr second))
+ (string< (caar first) (caar second))
+ (< (cdr first) (cdr second))))))
+ (javaimp--insert-imports with-order)))
+ (message "Nothing to organize!")))))
(defun javaimp--parse-imports ()
(let (first last list)
- [elpa] externals/javaimp b5158b9 15/32: * packages/javaimp/javaimp.el: Update javaimp to v. 0.6., (continued)
- [elpa] externals/javaimp b5158b9 15/32: * packages/javaimp/javaimp.el: Update javaimp to v. 0.6., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 069aa0c 06/32: javaimp: doc fixes, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp d1507ca 13/32: packages/javaimp/javaimp.el: Support additional source directories., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp c59e1f7 22/32: packages/javaimp: Fix comparison of module load ts with parent files., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp eb08936 23/32: Fix some quoting problems in doc strings, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp ed26a43 24/32: * javaimp.el: Add missing license, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 88f1376 27/32: [javaimp] Bump version to 0.6.1, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 084153c 29/32: packages/javaimp/javaimp.el: Add News section, bump version to 0.7, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 3c95c22 32/32: * .gitignore: New file, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp d9f891b 25/32: javaimp.el: Fill :file module slot in a separate step., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 5b37a9a 18/32: packages/javaimp: cosmetic fixes,
Stefan Monnier <=
- [elpa] externals/javaimp 736c1d9 19/32: packages/javaimp: whitespace/doc fixes, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp e2c3393 20/32: * packages/javaimp/javaimp.el (javaimp): Add a parent group, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 753245e 21/32: packages/javaimp: Restructure code, add some tests., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 0e30ce9 16/32: packages/javaimp: full rewrite, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 2e65079 17/32: packages/javaimp: temporary revert version, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 81f0fd4 26/32: [javaimp] Minor corrections., Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 04fd94c 28/32: [javaimp]: Support gradle, split into multiple files, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 2c9373d 31/32: [javaimp] bump version to 0.7.1, Stefan Monnier, 2020/12/01
- [elpa] externals/javaimp 6fa1de1 30/32: [javaimp] Fix gradle project id output & parsing., Stefan Monnier, 2020/12/01