From c3d433ddafebbbbb56546f96485c2538c0512f95 Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Wed, 22 Apr 2026 13:01:32 -0400 Subject: [PATCH] feat(nvim): add manual mode for LSP servers Allow LSP servers to be enabled on-demand via a buffer-local command instead of auto-starting on matching filetypes. The command name is auto-derived from the server name (e.g. 'GolangciLint'). Switch golangci-lint to manual mode as it's resource-heavy and not always needed. --- .../terminal/nvim/config/lua/lsp-config.lua | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/home/programs/terminal/nvim/config/lua/lsp-config.lua b/modules/home/programs/terminal/nvim/config/lua/lsp-config.lua index fea028e..dd25b4c 100755 --- a/modules/home/programs/terminal/nvim/config/lua/lsp-config.lua +++ b/modules/home/programs/terminal/nvim/config/lua/lsp-config.lua @@ -98,10 +98,30 @@ local default_config = { on_attach = on_attach, } -local setup_lsp = function(name, config) +local setup_lsp = function(name, config, opts) + opts = opts or {} local final_config = vim.tbl_deep_extend("force", default_config, config or {}) vim.lsp.config(name, final_config) + + -- Manual Mode - Register a buffer-local command instead of auto-enabling. + -- The command name is derived from opts.cmd_name or the LSP name. + if opts.manual then + local cmd_name = opts.cmd_name or name:gsub("^%l", string.upper):gsub("_%l", function(s) + return s:sub(2):upper() + end) + local fts = final_config.filetypes or {} + vim.api.nvim_create_autocmd("FileType", { + pattern = fts, + callback = function(ev) + vim.api.nvim_buf_create_user_command(ev.buf, cmd_name, function() + vim.lsp.enable(name) + end, { desc = "Enable " .. name .. " LSP" }) + end, + }) + return + end + vim.lsp.enable(name) end @@ -244,7 +264,7 @@ setup_lsp("golangci_lint_ls", { "--issues-exit-code=1", }, }, -}) +}, { manual = true, cmd_name = "GolangciLint" }) ------------------------------------------------------ --------------------- None-LS LSP --------------------