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 local builtin = require('telescope.builtin') map("gd", builtin.lsp_definitions) map("gr", builtin.lsp_references) map("gi", builtin.lsp_implementations) map("gs", builtin.lsp_document_symbols) 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 }