Skip to content

Commit 4f4de4d

Browse files
committed
Ensure source.generate.* capabilities are always set
`tbl_deep_extend('keep', ...)` doesn't merge lists, and neovim already sets some code action literals. This prevented hashCode/toString code actions from showing up.
1 parent 66b5ace commit 4f4de4d

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

lua/jdtls/setup.lua

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -293,22 +293,37 @@ function M.start_or_attach(config, opts, start_opts)
293293
config.handlers['language/status'] = config.handlers['language/status'] or status_callback
294294
config.handlers['workspace/configuration'] = config.handlers['workspace/configuration'] or configuration_handler
295295
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
296314
local extra_capabilities = {
297315
textDocument = {
298316
codeAction = {
299317
codeActionLiteralSupport = {
300318
codeActionKind = {
301-
valueSet = {
302-
"source.generate.toString",
303-
"source.generate.hashCodeEquals",
304-
"source.organizeImports",
305-
};
319+
valueSet = code_action_literals
306320
};
307321
};
308322
}
309323
}
310324
}
311-
config.capabilities = vim.tbl_deep_extend('keep', capabilities, extra_capabilities)
325+
config.capabilities = vim.tbl_deep_extend('force', capabilities, extra_capabilities)
326+
312327
config.init_options = config.init_options or {}
313328
config.init_options.extendedClientCapabilities = (
314329
config.init_options.extendedClientCapabilities or vim.deepcopy(M.extendedClientCapabilities)

0 commit comments

Comments
 (0)