added better jdtls config

This commit is contained in:
2025-11-02 20:37:33 +01:00
parent 0e8da54a0a
commit 36585be18c
2 changed files with 97 additions and 3 deletions
+93 -3
View File
@@ -63,8 +63,9 @@ require("autoclose").setup()
-- LSP START --
vim.lsp.enable({ "lua_ls", "ts_ls", "svelte", "tailwindcss", "cssls", "bashls", "rust_analyzer", "clangd", "clang-format", "taplo",
"sourcekit", "lemminx", "tinymist", "jdtls", "jsonls" })
vim.lsp.enable({ "lua_ls", "ts_ls", "svelte", "tailwindcss", "cssls", "bashls", "rust_analyzer", "clangd", "clang-format",
"taplo",
"sourcekit", "lemminx", "tinymist", "jsonls" })
vim.lsp.config["tinymist"] = {
cmd = { "tinymist" },
@@ -78,11 +79,100 @@ vim.lsp.config("jdtls", {
root_dir = vim.fn.getcwd(),
settings = {
java = {
-- Custom eclipse.jdt.ls options go here
},
},
})
vim.api.nvim_create_autocmd('FileType', {
pattern = 'java',
callback = function(args)
local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
local workspace_dir = vim.fn.stdpath("data") ..
package.config:sub(1, 1) .. "jdtls-workspace" .. package.config:sub(1, 1) .. project_name
local os_name = vim.loop.os_uname().sysname
local config = {
-- The command that starts the language server
-- See: https://github.com/eclipse/eclipse.jdt.ls#running-from-the-command-line
cmd = {
-- 💀
"java", -- or '/path/to/java17_or_newer/bin/java'
-- depends on if `java` is in your $PATH env variable and if it points to the right version.
"-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=ALL",
"-Xmx1g",
"--add-modules=ALL-SYSTEM",
"--add-opens",
"java.base/java.util=ALL-UNNAMED",
"--add-opens",
"java.base/java.lang=ALL-UNNAMED",
-- 💀
"-jar",
vim.fn.stdpath("data") ..
package.config:sub(1, 1) ..
"mason" ..
package.config:sub(1, 1) ..
"packages" ..
package.config:sub(1, 1) ..
"jdtls" ..
package.config:sub(1, 1) ..
"plugins" .. package.config:sub(1, 1) .. "org.eclipse.equinox.launcher_1.7.100.v20251014-1222.jar",
-- Must point to the Change this to
-- eclipse.jdt.ls installation the actual version
-- 💀
"-configuration",
vim.fn.stdpath("data") ..
package.config:sub(1, 1) ..
"mason" ..
package.config:sub(1, 1) ..
"packages" ..
package.config:sub(1, 1) ..
"jdtls" ..
package.config:sub(1, 1) ..
"config_" .. (os_name == "Windows_NT" and "win" or os_name == "Linux" and "linux" or "mac"),
-- eclipse.jdt.ls installation Depending on your system.
-- 💀
-- See `data directory configuration` section in the README
"-data",
workspace_dir,
},
-- 💀
-- This is the default if not provided, you can remove it. Or adjust as needed.
-- One dedicated LSP server & client will be started per unique root_dir
root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew" }),
-- Here you can configure eclipse.jdt.ls specific settings
-- See https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request
-- for a list of options
settings = {
java = {},
},
-- Language server `initializationOptions`
-- You need to extend the `bundles` with paths to jar files
-- if you want to use additional eclipse.jdt.ls plugins.
--
-- See https://github.com/mfussenegger/nvim-jdtls#java-debug-installation
--
-- If you don't plan on using the debugger or other eclipse.jdt.ls plugins you can remove this
init_options = {
bundles = {},
},
}
-- This starts a new client & server,
-- or attaches to an existing client & server depending on the `root_dir`.
require("jdtls").start_or_attach(config)
end
})
-- LSP END --
-- KEYMAP START --
+4
View File
@@ -1,5 +1,9 @@
{
"plugins": {
"autoclose.nvim": {
"rev": "3f86702",
"src": "https://github.com/m4xshen/autoclose.nvim"
},
"blink.cmp": {
"version": "'v1.6.0'"
},