Skip to content

Commit 4da9b2d

Browse files
committed
Generate constructors support
1 parent e60bca0 commit 4da9b2d

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

lsp-java.el

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,17 +1110,46 @@ PROJECT-URI uri of the item."
11101110
"generateGetter" getter?
11111111
"generateSetter" setter?
11121112
"isStatic" static?))
1113-
(cons (format "%s" name) field))
1113+
(cons (format "%s" name) field))
11141114
result))
11151115
(to-generate (lsp-java--completing-read-multiple
1116-
"Select getters/setters to generate"
1117-
fields-data
1118-
(-map #'cl-rest fields-data))))
1116+
"Select getters/setters to generate"
1117+
fields-data
1118+
(-map #'cl-rest fields-data))))
11191119
(lsp-java--apply-document-changes
11201120
(lsp-request "java/generateAccessors"
11211121
(list :accessors(apply #'vector to-generate)
11221122
:context context))))))
11231123

1124+
(defun lsp-java--generate-constructors-prompt (action)
1125+
(lsp-java-with-jdtls
1126+
(-let* ((context (seq-first (gethash "arguments" action)))
1127+
((all &as &hash "constructors" "fields") (lsp-request "java/checkConstructorsStatus" context))
1128+
(constructors (append constructors nil))
1129+
(selection-constructors (-map (-lambda ((field &as &hash "name" "parameters"))
1130+
(cons (format "%s(%s)" name (s-join ", " parameters)) field))
1131+
(append constructors nil)))
1132+
1133+
(to-generate (if (cl-rest selection-constructors)
1134+
(lsp-java--completing-read-multiple
1135+
"Select constructors to generate"
1136+
selection-constructors
1137+
(-map #'cl-rest selection-constructors))
1138+
(append constructors nil)))
1139+
(fields-source (-map (-lambda ((field &as &hash "name" "type"))
1140+
(cons (format "%s: %s" name type) field))
1141+
fields))
1142+
(fields (when fields-source
1143+
(lsp-java--completing-read-multiple
1144+
"Select fields"
1145+
fields-source
1146+
(-map #'cl-rest fields-source)))))
1147+
(lsp-java--apply-document-changes
1148+
(lsp-request "java/generateConstructors"
1149+
(list :fields (apply #'vector fields)
1150+
:constructors (apply #'vector to-generate)
1151+
:context context))))))
1152+
11241153
(lsp-register-client
11251154
(make-lsp--client
11261155
:new-connection (lsp-stdio-connection 'lsp-java--ls-command)
@@ -1137,7 +1166,8 @@ PROJECT-URI uri of the item."
11371166
("java.action.hashCodeEqualsPrompt" #'lsp-java--action-generate-equals-and-hash-code)
11381167
("java.action.organizeImports" #'lsp-java--action-organize-imports)
11391168
("java.action.overrideMethodsPrompt" #'lsp-java--override-methods-prompt)
1140-
("java.action.generateAccessorsPrompt" #'lsp-java--generate-accessors-prompt))
1169+
("java.action.generateAccessorsPrompt" #'lsp-java--generate-accessors-prompt)
1170+
("java.action.generateConstructorsPrompt" #'lsp-java--generate-constructors-prompt))
11411171
:uri-handlers (ht ("jdt" #'lsp-java--resolve-uri)
11421172
("chelib" #'lsp-java--resolve-uri))
11431173
:initialization-options (lambda ()
@@ -1149,6 +1179,7 @@ PROJECT-URI uri of the item."
11491179
:overrideMethodsPromptSupport t
11501180
:hashCodeEqualsPromptSupport t
11511181
:advancedOrganizeImportsSupport t
1182+
:generateConstructorsPromptSupport t
11521183
:generateToStringPromptSupport t
11531184
:advancedGenerateAccessorsSupport t)
11541185
:bundles (lsp-java--bundles)

0 commit comments

Comments
 (0)