@@ -1167,6 +1167,37 @@ PROJECT-URI uri of the item."
11671167 :constructors (apply #'vector to-generate)
11681168 :context context))))))
11691169
1170+ (defun lsp-java--apply-refactoring-command (action )
1171+ (lsp-java-with-jdtls
1172+ (-let* (((command context command-info) (append (gethash " arguments" action) nil ))
1173+ (arguments (when (or (string= command " extractField" )
1174+ (string= command " convertVariableToField" ))
1175+ (when-let (scope (pcase (append (gethash " initializedScopes" command-info) nil )
1176+ (`nil nil )
1177+ (`(, scope ) scope)
1178+ (scopes (or (completing-read " Initialize the field in: " scopes nil t )
1179+ (user-error " Cancelled..." )))))
1180+ (vector scope))))
1181+ ((&hash " edit" " command" ) (lsp-request
1182+ " java/getRefactorEdit"
1183+ (list :command command
1184+ :context context
1185+ :options (plist-get (lsp--make-document-formatting-params) :options )
1186+ :commandArguments arguments))))
1187+ (lsp--apply-workspace-edit edit)
1188+ (lsp-execute-code-action command))))
1189+
1190+
1191+ (defun lsp-java--action-rename (action )
1192+ (-let* (([(&hash " uri" " offset" " length" )] (gethash " arguments" action)))
1193+ (with-current-buffer (find-file (lsp--uri-to-path uri))
1194+ (deactivate-mark )
1195+ (goto-char (1+ offset))
1196+ (set-mark (point ))
1197+ (goto-char (+ (point ) length ))
1198+ (call-interactively 'lsp-rename )
1199+ (deactivate-mark ))))
1200+
11701201(lsp-register-client
11711202 (make-lsp--client
11721203 :new-connection (lsp-stdio-connection 'lsp-java--ls-command )
@@ -1184,7 +1215,9 @@ PROJECT-URI uri of the item."
11841215 (" java.action.organizeImports" #'lsp-java--action-organize-imports )
11851216 (" java.action.overrideMethodsPrompt" #'lsp-java--override-methods-prompt )
11861217 (" java.action.generateAccessorsPrompt" #'lsp-java--generate-accessors-prompt )
1187- (" java.action.generateConstructorsPrompt" #'lsp-java--generate-constructors-prompt ))
1218+ (" java.action.generateConstructorsPrompt" #'lsp-java--generate-constructors-prompt )
1219+ (" java.action.applyRefactoringCommand" #'lsp-java--apply-refactoring-command )
1220+ (" java.action.rename" 'lsp-java--action-rename ))
11881221 :uri-handlers (ht (" jdt" #'lsp-java--resolve-uri )
11891222 (" chelib" #'lsp-java--resolve-uri ))
11901223 :initialization-options (lambda ()
@@ -1198,7 +1231,8 @@ PROJECT-URI uri of the item."
11981231 :advancedOrganizeImportsSupport t
11991232 :generateConstructorsPromptSupport t
12001233 :generateToStringPromptSupport t
1201- :advancedGenerateAccessorsSupport t )
1234+ :advancedGenerateAccessorsSupport t
1235+ :advancedExtractRefactoringSupport t )
12021236 :bundles (lsp-java--bundles)
12031237 :workspaceFolders (->> (lsp-session)
12041238 lsp-session-server-id->folders
0 commit comments