From f7e480cd62e58e913bfb0a93f36f4dca026352e5 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 23 Jul 2024 19:53:55 +0300 Subject: refactor(neovim): renamed custom/configs -> custom/config --- .config/nvim/lua/custom/config/lsp.lua | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .config/nvim/lua/custom/config/lsp.lua (limited to '.config/nvim/lua/custom/config/lsp.lua') 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 }) -- cgit v1.3.1