local M = {}
|
|
|
|
local function on_attach(client, bufnr)
|
|
-- Enable completion triggered by <C-X><C-O>
|
|
-- 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 = cababilities,
|
|
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,
|
|
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
|