diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-07-23 19:53:55 +0300 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-07-23 19:53:55 +0300 |
| commit | f7e480cd62e58e913bfb0a93f36f4dca026352e5 (patch) | |
| tree | 1dd98d7911acf2f2222d23cd267e22e41f1e12f8 /.config/nvim/lua/custom/config/lsp.lua | |
| parent | 09623783f8b2c5bf6fa3aa490f973d36080df907 (diff) | |
refactor(neovim): renamed custom/configs -> custom/config
Diffstat (limited to '.config/nvim/lua/custom/config/lsp.lua')
| -rw-r--r-- | .config/nvim/lua/custom/config/lsp.lua | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/.config/nvim/lua/custom/config/lsp.lua b/.config/nvim/lua/custom/config/lsp.lua new file mode 100644 index 0000000..e099dd8 --- /dev/null +++ b/.config/nvim/lua/custom/config/lsp.lua @@ -0,0 +1,63 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local servers = require('lua.custom.config.language-servers') + +local lspconfig = require('lspconfig') +for name, config in pairs(servers) do + if config == true then + ---@diagnostic disable-next-line: cast-local-type + config = {} + end + ---@diagnostic disable-next-line: cast-local-type + config = vim.tbl_deep_extend('force', {}, { + capabilities = capabilities, + }, config) + + lspconfig[name].setup(config) +end + +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local bufnr = args.buf + local client = assert(vim.lsp.get_client_by_id(args.data.client_id), 'must have valid client') + + local settings = servers[client.name] + if type(settings) ~= 'table' then + ---@diagnostic disable-next-line: cast-local-type + settings = {} + end + + -- Override server capabilities + if settings.server_capabilities then + for k, v in pairs(settings.server_capabilities) do + if v == vim.NIL then + v = nil + end + client.server_capabilities[k] = v + end + end + + -- Register LSP keymaps local to buffer + require('lua.custom.config.lsp-keymaps').setup(bufnr) + end, +}) + +-- TODO: Decide if you want to use conform or not +-- +-- -- Autoformatting Setup +-- require('conform').setup({ +-- formatters_by_ft = { +-- lua = { 'stylua' }, +-- }, +-- }) +-- +-- vim.api.nvim_create_autocmd('BufWritePre', { +-- callback = function(args) +-- require('conform').format({ +-- bufnr = args.buf, +-- lsp_fallback = true, +-- quiet = true, +-- }) +-- end, +-- }) + +vim.diagnostic.config({ virtual_text = false }) |
