local M = {} local servers = { 'gopls', 'html', 'jsonls', 'pyright', 'tsserver', 'vimls', 'dartls', 'dockerls', 'intelephense', 'sqlls', 'vuels', } 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() for _, server_name in ipairs(servers) do require('lspconfig')[server_name].setup(opts) end end return M