68 lines
2.5 KiB
Lua
68 lines
2.5 KiB
Lua
-- 1. Setup paths and capabilities
|
|
local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
|
local java_bin = "/usr/lib/jvm/java-21-openjdk/bin/java"
|
|
local jdtls_path = vim.fn.stdpath("data") .. "/mason/packages/jdtls"
|
|
local jdtls_launcher_jar = vim.fn.glob(jdtls_path .. "/plugins/org.eclipse.equinox.launcher_*.jar")
|
|
local lombok_jar = jdtls_path .. "/lombok.jar"
|
|
|
|
-- 2. Define the configuration
|
|
vim.lsp.config('jdtls', {
|
|
cmd = {
|
|
java_bin,
|
|
"-Declipse.application=org.eclipse.jdt.ls.core.id1",
|
|
"-Dosgi.bundles.defaultStartLevel=4",
|
|
"-Declipse.product=org.eclipse.jdt.ls.core.product",
|
|
"-Dlog.protocol=true",
|
|
"-Dlog.level=INFO",
|
|
"-Xmx2G",
|
|
"-Xms256m",
|
|
"--add-modules=ALL-SYSTEM",
|
|
"--add-opens", "java.base/java.util=ALL-UNNAMED",
|
|
"--add-opens", "java.base/java.lang=ALL-UNNAMED",
|
|
"-javaagent:" .. lombok_jar,
|
|
"-jar", jdtls_launcher_jar,
|
|
"-configuration", jdtls_path .. "/config_linux",
|
|
"-data", vim.fn.stdpath("data") .. "/jdtls-workspace/" .. vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t"),
|
|
},
|
|
capabilities = capabilities,
|
|
-- In 0.11, use root_markers instead of a root_dir function
|
|
root_markers = { ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" },
|
|
settings = {
|
|
java = {
|
|
completion = {
|
|
favoriteStaticMembers = {
|
|
"org.junit.jupiter.api.Assertions.*",
|
|
"org.mockito.Mockito.*",
|
|
"java.util.Objects.requireNonNull",
|
|
"java.util.Objects.requireNonNullElse",
|
|
},
|
|
filteredTypes = {
|
|
"com.sun.*",
|
|
"io.micrometer.shaded.*",
|
|
"java.awt.*",
|
|
"jdk.*",
|
|
"sun.*",
|
|
},
|
|
},
|
|
import = {
|
|
maven = { enabled = true, downloadSources = true },
|
|
gradle = { enabled = true },
|
|
settings = {
|
|
importOrder = { "java", "javax", "org", "com" },
|
|
},
|
|
},
|
|
inlayHints = {
|
|
parameterNames = { enabled = "all" },
|
|
},
|
|
format = {
|
|
enabled = true,
|
|
settings = {
|
|
url = jdtls_path .. "/eclipse-formatter.xml",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
-- 3. Enable the server
|
|
vim.lsp.enable('jdtls')
|