local opts = {} local on_attach = function() local function set_keymap(...) vim.api.nvim_set_keymap(...) end local function set_option(...) vim.api.nvim_set_option(...) end -- Enable completion triggered by 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 set_keymap('', 'lc', 'lua vim.lsp.buf.declaration()', opts) set_keymap('', 'lf', 'lua vim.lsp.buf.definition()', opts) set_keymap('', 'lh', 'lua vim.lsp.buf.hover()', opts) set_keymap('', 'li', 'lua vim.lsp.buf.implementation()', opts) set_keymap('', 'ls', 'lua vim.lsp.buf.signature_help()', opts) set_keymap('', 'lwa', 'lua vim.lsp.buf.add_workspace_folder()', opts) set_keymap('', 'lwr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) set_keymap('', 'lw', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) set_keymap('', 'lt', 'lua vim.lsp.buf.type_definition()', opts) set_keymap('', 'lr', 'lua vim.lsp.buf.rename()', opts) set_keymap('', 'la', 'lua vim.lsp.buf.code_action()', opts) set_keymap('', 'le', 'lua vim.lsp.buf.references()', opts) set_keymap('', 'lo', 'lua vim.diagnostic.open_float()', opts) set_keymap('', 'ln', 'lua vim.diagnostic.goto_prev()', opts) set_keymap('', 'lp', 'lua vim.diagnostic.goto_next()', opts) set_keymap('', 'lm', 'lua vim.lsp.buf.formatting()', opts) end require("mason-lspconfig").setup_handlers({ function(server_name) require("lspconfig")[server_name].setup{} on_attach() end, ["rust_analyzer"] = function() require('rust-tools-setup') on_attach() end, ["sumneko_lua"] = function () require('lspconfig').sumneko_lua.setup { settings = { Lua = { diagnostics = { globals = { "vim" } } } } } on_attach() end, })