From b9f92100636377a88a609d0db24b1924dfcf136d Mon Sep 17 00:00:00 2001 From: Sergii Tykhomyrov Date: Sat, 10 Oct 2026 22:10:32 +0200 Subject: nvim: add Java LSP --- nvim/dot-config/nvim/init.lua | 3 +++ nvim/dot-config/nvim/lazy-lock.json | 8 ++++---- nvim/dot-config/nvim/lua/plugins/lsp.lua | 21 ++++++++++++++++++++- nvim/dot-config/nvim/lua/plugins/treesitter.lua | 3 ++- 4 files changed, 29 insertions(+), 6 deletions(-) (limited to 'nvim') diff --git a/nvim/dot-config/nvim/init.lua b/nvim/dot-config/nvim/init.lua index 593f28f..99537ce 100644 --- a/nvim/dot-config/nvim/init.lua +++ b/nvim/dot-config/nvim/init.lua @@ -36,6 +36,9 @@ vim.api.nvim_create_autocmd("LspAttach", { if client and client:supports_method("textDocument/completion") then vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) end + if client and client:supports_method("textDocument/definition") then + vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf, desc = "Go to definition" }) + end end, }) diff --git a/nvim/dot-config/nvim/lazy-lock.json b/nvim/dot-config/nvim/lazy-lock.json index 10104d0..0f30ae4 100644 --- a/nvim/dot-config/nvim/lazy-lock.json +++ b/nvim/dot-config/nvim/lazy-lock.json @@ -2,13 +2,13 @@ "d2-vim": { "branch": "master", "commit": "a950f1a276506ac4bbc274dd65ba98b15a1d490d" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "77e06f7d2fc127e6ef0a720b59acbc50757cff19" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "e17625cdc8c2650787467398e02c5d63a2cde966" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "1a14083046d96e88e361d1da00761c40d45012f3" }, "nui.nvim": { "branch": "main", "commit": "10fc361835c856ba4233ef5ea135b919bf3dce97" }, - "nvim-lspconfig": { "branch": "master", "commit": "ac9d2f7c4757db6320cab6697fe73e5e8adb2457" }, - "nvim-treesitter": { "branch": "main", "commit": "9a168f6357ed21c3a636e1727bc7d382abc451b8" }, - "nvim-web-devicons": { "branch": "master", "commit": "5f032a85be210cd1c6ac98861eb3b187ff3bd5eb" }, + "nvim-lspconfig": { "branch": "master", "commit": "c59fc922f718fa055f69f5f3bc888f23211571eb" }, + "nvim-treesitter": { "branch": "main", "commit": "1a4f47b03dfe92d28de7d5654c67327ef008c9e6" }, + "nvim-web-devicons": { "branch": "master", "commit": "58447c1fca354bbf184425e4a8d01deecbd6f3c4" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "telescope.nvim": { "branch": "master", "commit": "40aedd8a68c78a656a10a8d62d80c54af59420fb" }, "zenbones.nvim": { "branch": "main", "commit": "8304d8df9b823ff11e103afa62f38c39f534abe6" } diff --git a/nvim/dot-config/nvim/lua/plugins/lsp.lua b/nvim/dot-config/nvim/lua/plugins/lsp.lua index 2b5ca4d..b13402d 100644 --- a/nvim/dot-config/nvim/lua/plugins/lsp.lua +++ b/nvim/dot-config/nvim/lua/plugins/lsp.lua @@ -12,11 +12,30 @@ return { "neovim/nvim-lspconfig", }, opts = { - ensure_installed = { "gopls", "pyright" }, + ensure_installed = { "gopls", "pyright", "jdtls" }, }, config = function(_, opts) require("mason-lspconfig").setup(opts) + -- jdtls needs Java 21+ to launch and prefers JAVA_HOME, which the + -- login shell points at JDK 17. Use the sdkman JDK 21 just for jdtls. + -- Projects may target older versions, so register the installed JDKs. + vim.lsp.config("jdtls", { + cmd_env = { JAVA_HOME = vim.fn.expand("~/.sdkman/candidates/java/current") }, + settings = { + java = { + configuration = { + runtimes = { + -- default = runtime for standalone files (HackerRank-style) + { name = "JavaSE-17", path = vim.fn.expand("~/.sdkman/candidates/java/17.0.18-tem"), default = true }, + { name = "JavaSE-21", path = vim.fn.expand("~/.sdkman/candidates/java/21.0.12+1.1-tem") }, + }, + }, + }, + }, + }) + vim.lsp.enable("jdtls") + vim.lsp.config("alloy", { cmd = { "alloy", "lsp" }, filetypes = { "alloy" }, diff --git a/nvim/dot-config/nvim/lua/plugins/treesitter.lua b/nvim/dot-config/nvim/lua/plugins/treesitter.lua index 3c904f1..10d66c6 100644 --- a/nvim/dot-config/nvim/lua/plugins/treesitter.lua +++ b/nvim/dot-config/nvim/lua/plugins/treesitter.lua @@ -8,11 +8,12 @@ return { "python", "go", "gomod", "gosum", "gotmpl", "html", "lua", "vim", "vimdoc", "markdown", "markdown_inline", "yaml", + "java", }) vim.api.nvim_create_autocmd("FileType", { pattern = { "python", "go", "gomod", "gosum", "gotmpl", "html", - "lua", "vim", "markdown", "yaml", + "lua", "vim", "markdown", "yaml", "java", }, callback = function() vim.treesitter.start() -- cgit v1.2.3