83 lines
2.2 KiB
Lua
83 lines
2.2 KiB
Lua
|
local opts = {
|
||
|
cmd = {},
|
||
|
settings = {
|
||
|
java = {
|
||
|
signatureHelp = { enabled = true },
|
||
|
completion = {
|
||
|
favoriteStaticMembers = {},
|
||
|
filteredTypes = {
|
||
|
-- "com.sun.*",
|
||
|
-- "io.micrometer.shaded.*",
|
||
|
-- "java.awt.*",
|
||
|
-- "jdk.*",
|
||
|
-- "sun.*",
|
||
|
},
|
||
|
},
|
||
|
sources = {
|
||
|
organizeImports = {
|
||
|
starThreshold = 9999,
|
||
|
staticStarThreshold = 9999,
|
||
|
},
|
||
|
},
|
||
|
codeGeneration = {
|
||
|
toString = {
|
||
|
template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}",
|
||
|
},
|
||
|
useBlocks = true,
|
||
|
},
|
||
|
configuration = {
|
||
|
runtimes = {
|
||
|
{
|
||
|
name = "JavaSE-1.8",
|
||
|
path = "/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home",
|
||
|
default = true,
|
||
|
},
|
||
|
{
|
||
|
name = "JavaSE-17",
|
||
|
path = "/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home",
|
||
|
},
|
||
|
{
|
||
|
name = "JavaSE-19",
|
||
|
path = "/Library/Java/JavaVirtualMachines/jdk-19.jdk/Contents/Home",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
local jdtls_config = opts
|
||
|
local pkg_status, jdtls = pcall(require,"jdtls")
|
||
|
if not pkg_status then
|
||
|
vim.notify("unable to load nvim-jdtls", "error")
|
||
|
return {}
|
||
|
end
|
||
|
|
||
|
-- local jdtls_path = vim.fn.stdpath("data") .. "/mason/packages/jdtls"
|
||
|
local jdtls_bin = vim.fn.stdpath("data") .. "/mason/bin/jdtls"
|
||
|
|
||
|
local root_markers = { ".gradle", "gradlew", ".git" }
|
||
|
local root_dir = jdtls.setup.find_root(root_markers)
|
||
|
local home = os.getenv("HOME")
|
||
|
local project_name = vim.fn.fnamemodify(root_dir, ":p:h:t")
|
||
|
local workspace_dir = home .. "/.cache/jdtls/workspace/" .. project_name
|
||
|
|
||
|
opts.cmd = {
|
||
|
jdtls_bin,
|
||
|
"-data",
|
||
|
workspace_dir,
|
||
|
}
|
||
|
|
||
|
|
||
|
local on_attach = function(client, bufnr)
|
||
|
jdtls.setup.add_commands() -- important to ensure you can update configs when build is updated
|
||
|
-- if you setup DAP according to https://github.com/mfussenegger/nvim-jdtls#nvim-dap-configuration you can uncomment below
|
||
|
-- jdtls.setup_dap({ hotcodereplace = "auto" })
|
||
|
-- jdtls.dap.setup_dap_main_class_configs()
|
||
|
|
||
|
-- you may want to also run your generic on_attach() function used by your LSP config
|
||
|
end
|
||
|
|
||
|
opts.on_attach = on_attach
|
||
|
opts.capabilities = vim.lsp.protocol.make_client_capabilities()
|
||
|
jdtls.start_or_attach(jdtls_config)
|