aboutsummaryrefslogtreecommitdiff
path: root/nvim
diff options
context:
space:
mode:
authorSergii Tykhomyrov <sergii@tykhomyrov.net>2026-10-10 22:10:32 +0200
committerSergii Tykhomyrov <sergii@tykhomyrov.net>2026-10-10 22:10:32 +0200
commitb9f92100636377a88a609d0db24b1924dfcf136d (patch)
tree7dca00fbb6d4184dfdd7ea801bbbd087ee11c012 /nvim
parentc5b47635deb434f2b670672ae5eb83eb5a3b6b21 (diff)
downloaddotfiles-b9f92100636377a88a609d0db24b1924dfcf136d.tar.gz
dotfiles-b9f92100636377a88a609d0db24b1924dfcf136d.zip
nvim: add Java LSP
Diffstat (limited to 'nvim')
-rw-r--r--nvim/dot-config/nvim/init.lua3
-rw-r--r--nvim/dot-config/nvim/lazy-lock.json8
-rw-r--r--nvim/dot-config/nvim/lua/plugins/lsp.lua21
-rw-r--r--nvim/dot-config/nvim/lua/plugins/treesitter.lua3
4 files changed, 29 insertions, 6 deletions
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()