updated jdtls

This commit is contained in:
Prabhat Maurya 2025-02-23 09:44:50 +05:30
parent 949a17f6e2
commit 3b332b462a
4 changed files with 89 additions and 65 deletions

View file

@ -1,4 +1,4 @@
-- -- Load user configuration files -- Load user configuration files
require("user.options") require("user.options")
require("user.keymaps") require("user.keymaps")
require("user.cmp") require("user.cmp")
@ -7,7 +7,6 @@
require("user.telescope") require("user.telescope")
require("user.gruvbox") require("user.gruvbox")
require("user.lsp") require("user.lsp")
require("user.java")
require("user.treesitter") require("user.treesitter")
require("user.null-ls") -- Load null-ls configuration require("user.null-ls") -- Load null-ls configuration
require("user.terminal") require("user.terminal")
@ -34,7 +33,7 @@
require("user.test")(use) require("user.test")(use)
-- NERDTree plugin -- NERDTree plugin
use("preservim/nerdtree") use("preservim/nerdtree")
-- Plugin for integrating formatters/linters -- Plugin for integrating formatters/linters
use("jose-elias-alvarez/null-ls.nvim") use("jose-elias-alvarez/null-ls.nvim")

View file

@ -4,6 +4,7 @@ require("user.lsp_servers.ts_ls")
require("user.lsp_servers.jdtls") require("user.lsp_servers.jdtls")
require("user.lsp_servers.marksman") require("user.lsp_servers.marksman")
require("user.lsp_servers.kotlin_ls") require("user.lsp_servers.kotlin_ls")
require("user.lsp_servers.graphql")
-- Mason setup -- Mason setup
require("mason").setup() require("mason").setup()

View file

@ -0,0 +1,6 @@
local lspconfig = require("lspconfig")
lspconfig.graphql.setup({
capabilities = require("cmp_nvim_lsp").default_capabilities(),
filetypes = { "graphql", "gql", "javascript", "typescript" },
})

View file

@ -1,67 +1,85 @@
local lspconfig = require("lspconfig") local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
-- Java binary (ensure it's Java 21)
local java_bin = "/usr/lib/jvm/java-21-openjdk/bin/java"
-- Find JDTLS and Lombok paths dynamically
local jdtls_path = "/home/prabhat/.local/share/nvim/mason/packages/jdtls"
local jdtls_launcher_jar = vim.fn.glob(jdtls_path .. "/plugins/org.eclipse.equinox.launcher_*.jar")
local lombok_jar = vim.fn.glob(jdtls_path .. "/lombok.jar")
lspconfig.jdtls.setup({ lspconfig.jdtls.setup({
cmd = { cmd = {
"/home/prabhat/.local/share/nvim/mason/packages/jdtls/bin/jdtls", java_bin,
"-Declipse.application=org.eclipse.jdt.ls.core.id1", "-Declipse.application=org.eclipse.jdt.ls.core.id1",
"-Dosgi.bundles.defaultStartLevel=4", "-Dosgi.bundles.defaultStartLevel=4",
"-Declipse.product=org.eclipse.jdt.ls.core.product", "-Declipse.product=org.eclipse.jdt.ls.core.product",
"-Dlog.protocol=true", "-Dlog.protocol=true",
"-Dlog.level=INFO", "-Dlog.level=INFO",
"-Xmx2G", "-Xmx2G", -- Max heap size
"-Xms100m", "-Xms256m", -- Min heap size
"--add-modules=ALL-SYSTEM", "--add-modules=ALL-SYSTEM",
"--add-opens", "java.base/java.util=ALL-UNNAMED", "--add-opens", "java.base/java.util=ALL-UNNAMED",
"--add-opens", "java.base/java.lang=ALL-UNNAMED", "--add-opens", "java.base/java.lang=ALL-UNNAMED",
"-jar", "/home/prabhat/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar", "-javaagent:" .. lombok_jar, -- Lombok support
"-configuration", "/home/prabhat/.local/share/nvim/mason/packages/jdtls/config_linux", "-jar", jdtls_launcher_jar, -- JDTLS launcher
"-data", vim.fn.stdpath("data") .. "/jdtls-workspace/" .. vim.fn.fnamemodify(vim.loop.cwd(), ":p:h:t"), "-configuration", jdtls_path .. "/config_linux",
}, "-data", vim.fn.stdpath("data") .. "/jdtls-workspace/" .. vim.fn.fnamemodify(vim.loop.cwd(), ":p:h:t"),
capabilities = capabilities, },
root_dir = function() capabilities = capabilities,
return vim.fs.dirname( root_dir = function()
vim.fs.find({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }, { upward = true })[1] return vim.fs.dirname(
) vim.fs.find({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }, { upward = true })[1]
end, )
settings = { end,
java = { settings = {
completion = { java = {
favoriteStaticMembers = { completion = {
"org.junit.jupiter.api.Assertions.*", favoriteStaticMembers = {
"org.mockito.Mockito.*", "org.junit.jupiter.api.Assertions.*",
"java.util.Objects.requireNonNull", "org.mockito.Mockito.*",
"java.util.Objects.requireNonNullElse", "java.util.Objects.requireNonNull",
}, "java.util.Objects.requireNonNullElse",
filteredTypes = { },
"com.sun.*", filteredTypes = {
"io.micrometer.shaded.*", "com.sun.*",
"java.awt.*", "io.micrometer.shaded.*",
"jdk.*", "java.awt.*",
"sun.*", "jdk.*",
}, "sun.*",
}, },
import = { },
exclusions = { import = {
"**/internal/**", exclusions = {
}, "**/internal/**",
maven = { },
enabled = true, maven = {
downloadSources = true, enabled = true,
}, downloadSources = true,
gradle = { },
enabled = true, gradle = {
}, enabled = true,
settings = { },
-- Customize import order settings = {
importOrder = { importOrder = {
"java", "java",
"javax", "javax",
"org", "org",
"com", "com",
}, },
}, },
}, },
}, inlayHints = {
}, parameterNames = { enabled = "all" },
},
format = {
enabled = true,
settings = {
url = jdtls_path .. "/eclipse-formatter.xml",
},
},
},
},
}) })