@@ -293,22 +293,37 @@ function M.start_or_attach(config, opts, start_opts)
293
293
config .handlers [' language/status' ] = config .handlers [' language/status' ] or status_callback
294
294
config .handlers [' workspace/configuration' ] = config .handlers [' workspace/configuration' ] or configuration_handler
295
295
local capabilities = vim .tbl_deep_extend (' keep' , config .capabilities or {}, lsp .protocol .make_client_capabilities ())
296
+ local extra_code_action_literals = {
297
+ " source.generate.toString" ,
298
+ " source.generate.hashCodeEquals" ,
299
+ " source.organizeImports" ,
300
+ }
301
+ local code_action_literals = vim .tbl_get (
302
+ capabilities ,
303
+ " textDocument" ,
304
+ " codeAction" ,
305
+ " codeActionLiteralSupport" ,
306
+ " codeActionKind" ,
307
+ " valueSet"
308
+ ) or {}
309
+ for _ , extra_literal in ipairs (extra_code_action_literals ) do
310
+ if not vim .tbl_contains (code_action_literals , extra_literal ) then
311
+ table.insert (code_action_literals , extra_literal )
312
+ end
313
+ end
296
314
local extra_capabilities = {
297
315
textDocument = {
298
316
codeAction = {
299
317
codeActionLiteralSupport = {
300
318
codeActionKind = {
301
- valueSet = {
302
- " source.generate.toString" ,
303
- " source.generate.hashCodeEquals" ,
304
- " source.organizeImports" ,
305
- };
319
+ valueSet = code_action_literals
306
320
};
307
321
};
308
322
}
309
323
}
310
324
}
311
- config .capabilities = vim .tbl_deep_extend (' keep' , capabilities , extra_capabilities )
325
+ config .capabilities = vim .tbl_deep_extend (' force' , capabilities , extra_capabilities )
326
+
312
327
config .init_options = config .init_options or {}
313
328
config .init_options .extendedClientCapabilities = (
314
329
config .init_options .extendedClientCapabilities or vim .deepcopy (M .extendedClientCapabilities )
0 commit comments