From ae1489527ce168d74abeebc358b623694a2287d8 Mon Sep 17 00:00:00 2001 From: Martin Lasson Date: Thu, 10 Apr 2025 10:17:10 +0200 Subject: [PATCH] Update nvim config to 0.11.1 standards. --- nvim/init.lua | 4 +- nvim/lazy-lock.json | 6 +- nvim/{lua/lsp/servers => lsp}/clangd.lua | 0 nvim/{lua/lsp/servers => lsp}/cmake.lua | 0 nvim/{lua/lsp/servers => lsp}/dartls.lua | 0 nvim/{lua/lsp/servers => lsp}/gopls.lua | 0 nvim/{lua/lsp/servers => lsp}/lua_ls.lua | 0 nvim/{lua/lsp/servers => lsp}/nil.lua | 0 nvim/{lua/lsp/servers => lsp}/pyright.lua | 0 nvim/{lua/lsp/servers => lsp}/zls.lua | 0 nvim/lua/dap/{adapters => }/codelldb.lua | 0 nvim/lua/dap/{adapters => }/debugpy.lua | 0 nvim/lua/{dap/setup.lua => dapsetup.lua} | 2 +- nvim/lua/lsp/setup.lua | 79 ----------------------- nvim/lua/lspsetup.lua | 39 +++++++++++ nvim/lua/vim_opt.lua | 3 - 16 files changed, 45 insertions(+), 88 deletions(-) rename nvim/{lua/lsp/servers => lsp}/clangd.lua (100%) rename nvim/{lua/lsp/servers => lsp}/cmake.lua (100%) rename nvim/{lua/lsp/servers => lsp}/dartls.lua (100%) rename nvim/{lua/lsp/servers => lsp}/gopls.lua (100%) rename nvim/{lua/lsp/servers => lsp}/lua_ls.lua (100%) rename nvim/{lua/lsp/servers => lsp}/nil.lua (100%) rename nvim/{lua/lsp/servers => lsp}/pyright.lua (100%) rename nvim/{lua/lsp/servers => lsp}/zls.lua (100%) rename nvim/lua/dap/{adapters => }/codelldb.lua (100%) rename nvim/lua/dap/{adapters => }/debugpy.lua (100%) rename nvim/lua/{dap/setup.lua => dapsetup.lua} (98%) delete mode 100644 nvim/lua/lsp/setup.lua create mode 100644 nvim/lua/lspsetup.lua diff --git a/nvim/init.lua b/nvim/init.lua index 738893f..4b00b1d 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -32,10 +32,10 @@ require("window_management").setup() require("format_handler").setup() -- Set configs for servers and enable them in the Neovim LSP Client -require("lsp/setup") +require("lspsetup") -- Set configs for nvim-dap so we can debug -require("dap/setup") +require("dapsetup") -- See ":help vim.highlight.on_yank()" setup_yank_highlight() diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 99070c4..5d6d9f8 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,6 +1,6 @@ { "arrow.nvim": { "branch": "master", "commit": "6e0f726f55f99332dd726a53effd6813786b6d49" }, - "blink.cmp": { "branch": "main", "commit": "485c03400608cb6534bbf84da8c1c471fc4808c0" }, + "blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" }, "codecompanion.nvim": { "branch": "main", "commit": "35b11dc4b292519a5c09fb2c0c0e8a8832e9e821" }, "codesnap.nvim": { "branch": "main", "commit": "6400480aa6cc366cbd931146c429aaa64680dab9" }, "copilot.vim": { "branch": "release", "commit": "a9228e015528c9307890c48083c925eb98a64a79" }, @@ -9,8 +9,8 @@ "incline.nvim": { "branch": "main", "commit": "27040695b3bbfcd3257669037bd008d1a892831d" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "leap.nvim": { "branch": "main", "commit": "346a16ef942635a8ca5ff92e603d07e7e8be6cbe" }, - "lspsaga.nvim": { "branch": "main", "commit": "4acafaf3455c57c94400e961636d979fb6ddd9fc" }, - "lualine.nvim": { "branch": "master", "commit": "1ba400068bc178eb698b96ecfde82db59e7a7b8f" }, + "lspsaga.nvim": { "branch": "main", "commit": "501265c9b30b191ab5e5a66d104e72fb155cf3be" }, + "lualine.nvim": { "branch": "master", "commit": "0ea56f91b7f51a37b749c050a5e5dfdd56b302b3" }, "markview.nvim": { "branch": "main", "commit": "4f9ad36efe01c283aa886453ba75bf569c897c84" }, "neogit": { "branch": "master", "commit": "97f83f1dc51dee41e08e3c7a8adf00e1083e3178" }, "neovim-ayu": { "branch": "master", "commit": "f5da37a8ddd62fc3a7b28900c4d1b807a3582584" }, diff --git a/nvim/lua/lsp/servers/clangd.lua b/nvim/lsp/clangd.lua similarity index 100% rename from nvim/lua/lsp/servers/clangd.lua rename to nvim/lsp/clangd.lua diff --git a/nvim/lua/lsp/servers/cmake.lua b/nvim/lsp/cmake.lua similarity index 100% rename from nvim/lua/lsp/servers/cmake.lua rename to nvim/lsp/cmake.lua diff --git a/nvim/lua/lsp/servers/dartls.lua b/nvim/lsp/dartls.lua similarity index 100% rename from nvim/lua/lsp/servers/dartls.lua rename to nvim/lsp/dartls.lua diff --git a/nvim/lua/lsp/servers/gopls.lua b/nvim/lsp/gopls.lua similarity index 100% rename from nvim/lua/lsp/servers/gopls.lua rename to nvim/lsp/gopls.lua diff --git a/nvim/lua/lsp/servers/lua_ls.lua b/nvim/lsp/lua_ls.lua similarity index 100% rename from nvim/lua/lsp/servers/lua_ls.lua rename to nvim/lsp/lua_ls.lua diff --git a/nvim/lua/lsp/servers/nil.lua b/nvim/lsp/nil.lua similarity index 100% rename from nvim/lua/lsp/servers/nil.lua rename to nvim/lsp/nil.lua diff --git a/nvim/lua/lsp/servers/pyright.lua b/nvim/lsp/pyright.lua similarity index 100% rename from nvim/lua/lsp/servers/pyright.lua rename to nvim/lsp/pyright.lua diff --git a/nvim/lua/lsp/servers/zls.lua b/nvim/lsp/zls.lua similarity index 100% rename from nvim/lua/lsp/servers/zls.lua rename to nvim/lsp/zls.lua diff --git a/nvim/lua/dap/adapters/codelldb.lua b/nvim/lua/dap/codelldb.lua similarity index 100% rename from nvim/lua/dap/adapters/codelldb.lua rename to nvim/lua/dap/codelldb.lua diff --git a/nvim/lua/dap/adapters/debugpy.lua b/nvim/lua/dap/debugpy.lua similarity index 100% rename from nvim/lua/dap/adapters/debugpy.lua rename to nvim/lua/dap/debugpy.lua diff --git a/nvim/lua/dap/setup.lua b/nvim/lua/dapsetup.lua similarity index 98% rename from nvim/lua/dap/setup.lua rename to nvim/lua/dapsetup.lua index 39f0caf..b307fc4 100644 --- a/nvim/lua/dap/setup.lua +++ b/nvim/lua/dapsetup.lua @@ -1,7 +1,7 @@ local utils = require("utils") local dap = require("dap") -local dir_path = "dap/adapters" +local dir_path = "dap" utils.foreach(utils.get_file_names_in_dir(dir_path, "*.lua", true), function(adapter) dap.adapters[adapter] = require(dir_path .. "/" .. adapter) end) diff --git a/nvim/lua/lsp/setup.lua b/nvim/lua/lsp/setup.lua deleted file mode 100644 index 9192cfc..0000000 --- a/nvim/lua/lsp/setup.lua +++ /dev/null @@ -1,79 +0,0 @@ -local utils = require("utils") -local inlay_hints_handler = require("inlay_hints_handler") -local format_handler = require("format_handler") - -local function chain_on_attach(...) - local funcs = { ... } - return function(client, bufnr) - for _, func in ipairs(funcs) do - func(client, bufnr) - end - end -end - -local function global_on_attach(client, bufnr) - inlay_hints_handler.add_buffer(bufnr) - - if client.server_capabilities.documentFormattingProvider then - vim.api.nvim_buf_create_user_command(bufnr, "Format", vim.lsp.buf.format, { nargs = 0 }) - vim.api.nvim_create_autocmd("BufWritePre", { - buffer = bufnr, - callback = function() - format_handler.format() - end, - }) - end - - utils.set_keymap_list({ - { "gd", function() vim.lsp.buf.definition({ reuse_win = true, }) end, { noremap = true, buffer = bufnr } }, - { "gD", function() vim.lsp.buf.declaration({ reuse_win = true, }) end, { noremap = true, buffer = bufnr } }, - }) -end - -local global_capabilities = require("blink.cmp").get_lsp_capabilities() -global_capabilities.offsetEncoding = { "utf-16" } - -vim.lsp.config("*", { - capabilities = global_capabilities, - handlers = { - ["textDocument/publishDiagnostics"] = vim.lsp.diagnostic.on_publish_diagnostics, - }, - root_markers = { ".git" }, -}) - --- Find all files in lua/lsp/servers and require them --- We use them to ensure that the servers are installed and configured -local errors = {} -local dir_path = "lsp/servers" -utils.foreach(utils.get_file_names_in_dir(dir_path, "*.lua", true), function(server_name) - local server_path = dir_path .. "/" .. server_name - local result, conf = utils.xpcallmsg( - function() return require(server_path) end, - "Failed to require " .. server_path, - errors - ) - - if not result or type(conf) ~= "table" or vim.tbl_isempty(conf) or conf.cmd == nil then - error("Invalid configuration for " .. server_name) - return - end - - conf.on_attach = (function() - if conf.on_attach then - return chain_on_attach(global_on_attach, conf.on_attach) - end - - return global_on_attach - end)() - - -- These still throw errors when wrapped by xpcall. - -- Wanted it to just handle incorrect input and let the runtime continue - -- as it would if the require was successful when wrapped. That would be great - -- for WIP LSP configuration, instead we have the ugly if statements above. - vim.lsp.config(server_name, conf) - vim.lsp.enable(server_name) -end) - -if #errors > 0 then - error(table.concat(errors, "\n")) -end diff --git a/nvim/lua/lspsetup.lua b/nvim/lua/lspsetup.lua new file mode 100644 index 0000000..6626cd0 --- /dev/null +++ b/nvim/lua/lspsetup.lua @@ -0,0 +1,39 @@ +local utils = require("utils") +local inlay_hints_handler = require("inlay_hints_handler") +local format_handler = require("format_handler") + +vim.lsp.config("*", { + capabilities = require("blink.cmp").get_lsp_capabilities(), + root_markers = { ".git" }, +}) + +local servers = {} +utils.foreach(utils.get_file_names_in_dir("../lsp", "*.lua", true), function(server_name) + table.insert(servers, server_name) +end) + +vim.lsp.enable(servers) +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + local bufnr = args.buf + assert(client, "LspAttach: client is nil") + + inlay_hints_handler.add_buffer(bufnr) + + if client.server_capabilities.documentFormattingProvider then + vim.api.nvim_buf_create_user_command(bufnr, "Format", vim.lsp.buf.format, { nargs = 0 }) + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + format_handler.format() + end, + }) + end + + utils.set_keymap_list({ + { "gd", function() vim.lsp.buf.definition({ reuse_win = true, }) end, { noremap = true, buffer = bufnr } }, + { "gD", function() vim.lsp.buf.declaration({ reuse_win = true, }) end, { noremap = true, buffer = bufnr } }, + }) + end +}) diff --git a/nvim/lua/vim_opt.lua b/nvim/lua/vim_opt.lua index b22f30d..b434698 100644 --- a/nvim/lua/vim_opt.lua +++ b/nvim/lua/vim_opt.lua @@ -71,7 +71,4 @@ opt.list = false -- Sessions opt.sessionoptions = { "buffers", "curdir", "winsize", "winpos", "skiprtp" } --- Rounded borders -opt.winborder = "rounded" - return opt