@@ -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