local M = {} 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").default_capabilities(vim.lsp.protocol.make_client_capabilities()) local opts = { on_attach = on_attach, capabilities = capabilities, flags = { debounce_text_changes = 150, }, }; local servers = { gopls = opts, html = opts, jsonls = opts, pyright = opts, tsserver = opts, vimls = opts, dartls = opts, dockerls = opts, intelephense = opts, sqlls = opts, vuels = { on_attach = on_attach, capabilities = capabilities, flags = { debounce_text_changes = 150, }, init_options = { config = { vetur = { ignoreProjectWarning = true, } } }, }, volar = { filetypes = {'typescript', 'javascript', 'vue', 'json'}, init_options = { typescript = { tsdk = '/usr/lib/node_modules/typescript/lib' } } } } function M.setup() for server_name, o in pairs(servers) do require('lspconfig')[server_name].setup(o) end end return M