return { "neovim/nvim-lspconfig", dependencies = { { "hrsh7th/cmp-nvim-lsp", }, }, config = function () local capabilities = require('cmp_nvim_lsp').default_capabilities() local on_attach = function (client, bufnr) local lspSig = require('lsp_signature') local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end lspSig.on_attach() -- enable completion triggered by buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- mappings local opts = { noremap=true, silent=true } -- See `:help vim.lsp.*` for documentation on any of the below functions -- buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'gt', 'tab splitlua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) -- buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) -- buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) -- buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) buf_set_keymap('n', 'ge', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) buf_set_keymap('n', 'do', 'lua vim.lsp.diagnostic.open_float()', opts) buf_set_keymap('n', 'd[', 'lua vim.lsp.diagnostic.goto_prev()', opts) buf_set_keymap('n', 'd]', 'lua vim.lsp.diagnostic.goto_next()', opts) -- buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) -- buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) end local nvlsp = require('lspconfig') nvlsp['gopls'].setup{ capabilities = capabilities, on_attach = on_attach, } nvlsp['tsserver'].setup{ capabilities = capabilities, on_attach = on_attach, } nvlsp['rust_analyzer'].setup{ capabilities = capabilities, on_attach = on_attach, } nvlsp['bashls'].setup{ capabilities = capabilities, on_attach = on_attach, } nvlsp['svelte'].setup{ capabilities = capabilities, on_attach = on_attach, } end }