Skip to content

Commit 622c340

Browse files
committed
Use helm if present for multiple selection
- Fixes #147
1 parent 60b44af commit 622c340

File tree

1 file changed

+36
-27
lines changed

1 file changed

+36
-27
lines changed

lsp-java.el

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,20 +1021,29 @@ PROJECT-URI uri of the item."
10211021
(lsp-execute-code-action-by-kind "source.generate.accessors"))
10221022

10231023
(defun lsp-java--completing-read-multiple (message items initial-selection)
1024-
(let ((deps initial-selection) dep)
1025-
(while (setq dep (cl-rest (lsp--completing-read
1026-
(if deps
1027-
(format "%s (selected %s): " message (length deps))
1028-
(concat message ": "))
1029-
items
1030-
(-lambda ((name . id))
1031-
(if (-contains? deps id)
1032-
(concat name "")
1033-
name)))))
1034-
(if (-contains? deps dep)
1035-
(setq deps (remove dep deps))
1036-
(cl-pushnew dep deps)))
1037-
deps))
1024+
(if (functionp 'helm)
1025+
(let (result)
1026+
(helm :sources (helm-build-sync-source message
1027+
:candidates items
1028+
:action '(("Identity" . (lambda (_)
1029+
(setq result (helm-marked-candidates))))))
1030+
:buffer "*lsp-java select*"
1031+
:prompt message)
1032+
result)
1033+
(let ((deps initial-selection) dep)
1034+
(while (setq dep (cl-rest (lsp--completing-read
1035+
(if deps
1036+
(format "%s (selected %s): " message (length deps))
1037+
(concat message ": "))
1038+
items
1039+
(-lambda ((name . id))
1040+
(if (-contains? deps id)
1041+
(concat name "")
1042+
name)))))
1043+
(if (-contains? deps dep)
1044+
(setq deps (remove dep deps))
1045+
(cl-pushnew dep deps)))
1046+
deps)))
10381047

10391048
(defun lsp-java--apply-document-changes (response)
10401049
"Apply document CHANGES."
@@ -1045,19 +1054,19 @@ PROJECT-URI uri of the item."
10451054
(defun lsp-java--action-generate-to-string (action)
10461055
(lsp-java-with-jdtls
10471056
(-let* ((context (seq-first (gethash "arguments" action)))
1048-
((&hash "fields" "exists") (lsp-request "java/checkToStringStatus" context))
1049-
(fields-data (-map (-lambda ((field &as &hash "name" "type"))
1050-
(cons (format "%s: %s" name type) field))
1051-
fields)))
1052-
(when (or (not exists) (y-or-n-p "The equals method already exists. Replace?") )
1053-
(let ((selected-fields (lsp-java--completing-read-multiple
1054-
"Select fields to include"
1055-
fields-data
1056-
(-map #'cl-rest fields-data))))
1057-
(lsp-java--apply-document-changes
1058-
(lsp-request "java/generateToString"
1059-
(list :fields (apply #'vector selected-fields)
1060-
:context context))))))))
1057+
((&hash "fields" "exists") (lsp-request "java/checkToStringStatus" context))
1058+
(fields-data (-map (-lambda ((field &as &hash "name" "type"))
1059+
(cons (format "%s: %s" name type) field))
1060+
fields)))
1061+
(when (or (not exists) (y-or-n-p "The equals method already exists. Replace?") )
1062+
(let ((selected-fields (lsp-java--completing-read-multiple
1063+
"Select fields to include"
1064+
fields-data
1065+
(-map #'cl-rest fields-data))))
1066+
(lsp-java--apply-document-changes
1067+
(lsp-request "java/generateToString"
1068+
(list :fields (apply #'vector selected-fields)
1069+
:context context))))))))
10611070

10621071
(defun lsp-java--action-generate-equals-and-hash-code (action)
10631072
(lsp-java-with-jdtls

0 commit comments

Comments
 (0)