local on_attach = function(_, bufnr) vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') vim.o.signcolumn = 'yes' local map = function(from, to) vim.keymap.set('n', from, to, { noremap = true, silent = true, buffer = bufnr } ) end map('gd', vim.lsp.buf.definition) map('gr', vim.lsp.buf.references) map('gi', vim.lsp.buf.implementation) map('gD', vim.lsp.buf.declaration) map('K', vim.lsp.buf.hover) map('', vim.lsp.buf.signature_help) map('wa', vim.lsp.buf.add_workspace_folder) map('wr', vim.lsp.buf.remove_workspace_folder) map('wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) map('D', vim.lsp.buf.type_definition) map('rn', vim.lsp.buf.rename) map('ca', vim.lsp.buf.code_action) map('fm', function() vim.lsp.buf.format { async = true } end) end local capabilities = require 'cmp_nvim_lsp'.default_capabilities( vim.lsp.protocol.make_client_capabilities() ) return { on_attach = on_attach, capabilities = capabilities }