From 9d774906860bea4105a054095d843d8d656b569e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 23 Feb 2026 15:58:07 +0900 Subject: nvim/lsp: update LSP settings for Nvim 0.11 changes --- .config/nvim/lua/vimrc/lsp.lua | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .config/nvim/lua/vimrc/lsp.lua (limited to '.config/nvim/lua/vimrc/lsp.lua') diff --git a/.config/nvim/lua/vimrc/lsp.lua b/.config/nvim/lua/vimrc/lsp.lua new file mode 100644 index 0000000..e2932a7 --- /dev/null +++ b/.config/nvim/lua/vimrc/lsp.lua @@ -0,0 +1,47 @@ +local is_deno_repo = vim.fs.root(0, { 'deno.json', 'deno.jsonc' }) ~= nil + +local servers = { 'gopls', 'phpactor', 'zls', 'efm' } +if is_deno_repo then + table.insert(servers, 'denols') +else + table.insert(servers, 'ts_ls') +end + +vim.lsp.enable(servers) + +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(e) + local client = assert(vim.lsp.get_client_by_id(e.data.client_id)) + + if client:supports_method('textDocument/completion') then + vim.lsp.completion.enable(true, client.id, e.buf, { autotrigger = true }) + end + + if client:supports_method('textDocument/formatting') then + vim.keymap.set('n', 'f', function() + vim.lsp.buf.format({ + bufnr = e.buf, + id = client.id, + async = true, + filter = function(client) return client.name ~= "ts_ls" end, + }) + end, { buffer = e.buf }) + + if not client:supports_method('textDocument/willSaveWaitUntil') then + vim.api.nvim_create_autocmd('BufWritePre', { + group = vim.api.nvim_create_augroup('UserLspConfig', { clear = false }), + buffer = e.buf, + callback = function() + vim.lsp.buf.format({ + bufnr = e.buf, + id = client.id, + timeout_ms = 5000, + filter = function(client) return client.name ~= "ts_ls" end, + }) + end + }) + end + end + end, +}) -- cgit v1.3-1-g0d28