diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index 8202a95..afb7ace 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -31,6 +31,7 @@ "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, "nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" }, "nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" }, + "nvim-jdtls": { "branch": "master", "commit": "c23f200fee469a415c77265ca55b496feb646992" }, "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, "nvim-scissors": { "branch": "main", "commit": "8123690127a599b7d5669b074d572e6239222c45" }, "nvim-scrollbar": { "branch": "main", "commit": "5b103ef0fd2e8b9b4be3878ed38d224522192c6c" }, diff --git a/.config/nvim/lua/autocmds.lua b/.config/nvim/lua/autocmds.lua index 7d17c78..4e7cd8f 100644 --- a/.config/nvim/lua/autocmds.lua +++ b/.config/nvim/lua/autocmds.lua @@ -76,35 +76,46 @@ vim.api.nvim_create_autocmd({ 'FocusGained', 'TermClose', 'TermLeave' }, { }) -- close some filetypes with -vim.api.nvim_create_autocmd("FileType", { - group = augroup("close_with_q"), - pattern = { - "PlenaryTestPopup", - "checkhealth", - "dbout", - "gitsigns-blame", - "grug-far", - "help", - "lspinfo", - "neotest-output", - "neotest-output-panel", - "neotest-summary", - "notify", - "qf", - "startuptime", - "tsplayground", - }, - callback = function(event) - vim.bo[event.buf].buflisted = false - vim.schedule(function() - vim.keymap.set("n", "q", function() - vim.cmd("close") - pcall(vim.api.nvim_buf_delete, event.buf, { force = true }) - end, { - buffer = event.buf, - silent = true, - desc = "Quit buffer", - }) - end) - end, +vim.api.nvim_create_autocmd('FileType', { + group = augroup('close_with_q'), + pattern = { + 'PlenaryTestPopup', + 'checkhealth', + 'dbout', + 'gitsigns-blame', + 'grug-far', + 'help', + 'lspinfo', + 'neotest-output', + 'neotest-output-panel', + 'neotest-summary', + 'notify', + 'qf', + 'startuptime', + 'tsplayground', + }, + callback = function(event) + vim.bo[event.buf].buflisted = false + vim.schedule(function() + vim.keymap.set('n', 'q', function() + vim.cmd('close') + pcall(vim.api.nvim_buf_delete, event.buf, { force = true }) + end, { + buffer = event.buf, + silent = true, + desc = 'Quit buffer', + }) + end) + end, +}) + +-- Format and organize imports on file save +vim.api.nvim_create_autocmd('BufWritePre', { + pattern = '*.java', + callback = function() + if not vim.g.disable_autoformat then + require('jdtls').organize_imports() + vim.lsp.buf.format({ async = false }) + end + end, }) diff --git a/.config/nvim/lua/plugins/nvim-jdtls.lua b/.config/nvim/lua/plugins/nvim-jdtls.lua new file mode 100644 index 0000000..4f9720a --- /dev/null +++ b/.config/nvim/lua/plugins/nvim-jdtls.lua @@ -0,0 +1,11 @@ +return { + 'mfussenegger/nvim-jdtls', + ft = { 'java' }, + opts = { + cmd = { 'jdtls' }, + root_dir = vim.fs.dirname(vim.fs.find({ 'gradlew', '.git', 'mvnw', 'pom.xml' }, { upward = true })[1]), + }, + config = function(_, opts) + require('jdtls').start_or_attach(opts) + end, +} diff --git a/modules/development.nix b/modules/development.nix index 989444c..2c3cda0 100644 --- a/modules/development.nix +++ b/modules/development.nix @@ -31,6 +31,7 @@ yaml-language-server # pnpm i -g css-variables-language-server # pnpm install -g gh-actions-language-server + jdt-language-server # Tools stylua