summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/custom/config/lsp.lua
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-07-23 19:53:55 +0300
committerKyren223 <ulmliad223@gmail.com>2024-07-23 19:53:55 +0300
commitf7e480cd62e58e913bfb0a93f36f4dca026352e5 (patch)
tree1dd98d7911acf2f2222d23cd267e22e41f1e12f8 /.config/nvim/lua/custom/config/lsp.lua
parent09623783f8b2c5bf6fa3aa490f973d36080df907 (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.lua63
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 })