.config/nvim/lua/lsp.lua
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
-- Set up language servers. -- local lspconfig = require('lspconfig') local ok, lspconfig = pcall(require, 'lspconfig') if not ok then print("error: failed to require 'lspconfig'") else lspconfig.pyright.setup{} lspconfig.lua_ls.setup{} lspconfig.clangd.setup{} end -- config section from following: -- https://github.com/neovim/nvim-lspconfig -- Global mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions vim.keymap.set('n', '<space>e', vim.diagnostic.open_float) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) vim.keymap.set('n', ']d', vim.diagnostic.goto_next) vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist) -- Use LspAttach autocommand to only map the following keys -- after the language server attaches to the current buffer vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) -- Enable completion triggered by <c-x><c-o> vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' -- Buffer local mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local opts = { buffer = ev.buf } vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) -- vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts) -- vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts) -- vim.keymap.set('n', '<space>wl', function() -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) -- end, opts) vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts) vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, opts) end, }) |