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