local M = {} local servers = { gopls = {}, html = {}, jsonls = {}, pyright = {}, tsserver = {}, vimls = {}, dartls = {}, dockerls = {}, intelephense = {}, sqlls = {}, volar = {}, } local function on_attach(client, bufnr) -- Enable completion triggered by -- See `:help omnifunc` and `:help ins-completion` for more information. vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") -- Use LSP as the handler for formatexpr. -- See `:help formatexpr` for more information. vim.api.nvim_buf_set_option(0, "formatexpr", "v:lua.vim.lsp.formatexpr()") -- Configure key mappings require("config.lsp.keymaps").setup(client, bufnr) end local lsp_signature = require "lsp_signature" lsp_signature.setup { bind = true, handler_opts = { border = "rounded", }, } local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) local opts = { on_attach = on_attach, capabilities = cababilities, flags = { debounce_text_changes = 150, }, } function M.setup() require("config.lsp.installer").setup(servers, opts) end return M