diff --git a/config/nvim/lua/user/plugins/lsp.lua b/config/nvim/lua/user/plugins/lsp.lua index ba0520d..2f9bbcd 100644 --- a/config/nvim/lua/user/plugins/lsp.lua +++ b/config/nvim/lua/user/plugins/lsp.lua @@ -9,54 +9,45 @@ local config = function() end require('lspconfig.ui.windows').default_options = { border = border } - local capabilities = vim.lsp.protocol.make_client_capabilities() - local has_cmp_nvim_lsp, cmp = pcall(require, 'cmp_nvim_lsp') - if has_cmp_nvim_lsp then - vim.tbl_deep_extend('force', capabilities, cmp.default_capabilities()) - end + local opts = { + capabilities = vim.lsp.protocol.make_client_capabilities(), - local on_attach = function(--[[client]]_, bufnr) - vim.bo.omnifunc = 'v:lua.vim.lsp.omnifunc' -- do completion with + on_attach = function(--[[client]]_, bufnr) + vim.bo.omnifunc = 'v:lua.vim.lsp.omnifunc' -- do completion with + local map, opts = vim.keymap.set, { buffer = bufnr } + map('n', 'ca', vim.lsp.buf.code_action, opts) + map('n', 'cf', vim.lsp.buf.format, opts) + map('n', 'gD', vim.lsp.buf.declaration, opts) + map('n', 'gd', vim.lsp.buf.definition, opts) + map('n', 'K', vim.lsp.buf.hover, opts) + map('n', 'gi', vim.lsp.buf.implementation, opts) + map('n', 'grr', vim.lsp.buf.rename, opts) + map('n', 'gt', vim.lsp.buf.type_definition, opts) + end, - local map = vim.keymap.set - local opts = { buffer = bufnr } + on_init = function(client, --[[init_result]]_) + -- Opt out of semantic highlighting because it has been casusing the issues + -- https://github.com/neovim/nvim-lspconfig/issues/2542#issuecomment-1547019213 + if client.server_capabilities then + client.server_capabilities.semanticTokensProvider = false + end + end, + } - map('n', 'ca', vim.lsp.buf.code_action, opts) - map('n', 'cf', vim.lsp.buf.format, opts) - map('n', 'gD', vim.lsp.buf.declaration, opts) - map('n', 'gd', vim.lsp.buf.definition, opts) - map('n', 'K', vim.lsp.buf.hover, opts) - map('n', 'gi', vim.lsp.buf.implementation, opts) - map('n', 'grr', vim.lsp.buf.rename, opts) - map('n', 'gt', vim.lsp.buf.type_definition, opts) - end - - local on_init = function(client, --[[init_result]]_) - -- Opt out of semantic highlighting because it has been casusing the issues - -- https://github.com/neovim/nvim-lspconfig/issues/2542#issuecomment-1547019213 - if client.server_capabilities then - client.server_capabilities.semanticTokensProvider = false - end + local has_cmp, cmp = pcall(require, 'cmp_nvim_lsp') + if has_cmp then + vim.tbl_deep_extend('force', opts.capabilities, cmp.default_capabilities()) end require('mason').setup {} require('mason-lspconfig').setup {} require("mason-lspconfig").setup_handlers { - -- Default handler. - function(server) - require('lspconfig')[server].setup { - capabilities = capabilities, - on_attach = on_attach, - on_init = on_init, - } + --[[ default = ]] function(server) + require('lspconfig')[server].setup(opts) end, lua_ls = function() - require('lspconfig').lua_ls.setup { - capabilities = capabilities, - on_attach = on_attach, - on_init = on_init, - + require('lspconfig').lua_ls.setup(vim.tbl_extend('force', opts, { settings = { Lua = { -- I'm using lua only inside neovim, so the runtime is LuaJIT. @@ -72,15 +63,11 @@ local config = function() telemetry = { enable = false }, }, }, - } + })) end, omnisharp = function() - require('lspconfig').omnisharp.setup { - capabilities = capabilities, - on_attach = on_attach, - on_init = on_init, - + require('lspconfig').omnisharp.setup(vim.tbl_extend('force', opts, { -- Show unimported types and add`using` directives. enable_import_completion = true, @@ -89,7 +76,7 @@ local config = function() -- Don't include preview versions of the .NET SDK. sdk_include_prereleases = false, - } + })) end, } end