vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) vim.bo[ev.buf].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 = ev.buf } ) end local selmap = function(from, to) vim.keymap.set({"x", "o"}, from, to, { noremap = true, silent = true, buffer = ev.buf } ) end local builtin = require('telescope.builtin') local dap = require('dap') 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("a", vim.lsp.buf.code_action) map("fm", function() vim.lsp.buf.format { async = true } end) map("da", dap.toggle_breakpoint) map("dc", dap.continue) map("ds", dap.step_into) local move = require("nvim-treesitter-textobjects.move") map("]f", function() move.goto_next_start "@function.outer" end) map("[f", function() move.goto_previous_start "@function.outer" end) map("]F", function() move.goto_next_end "@function.outer" end) map("[F", function() move.goto_previous_end "@function.outer" end) map("][", function() move.goto_next_start "@class.outer" end) map("[[", function() move.goto_previous_start "@class.outer" end) map("]]", function() move.goto_next_end "@class.outer" end) map("[]", function() move.goto_previous_end "@class.outer" end) local select = require("nvim-treesitter-textobjects.select") selmap("af", function() select.select_textobject("@function.outer", "textobjects") end) selmap("kf", function() select.select_textobject("@function.inner", "textobjects") end) selmap("ac", function() select.select_textobject("@class.outer", "textobjects") end) selmap("kc", function() select.select_textobject("@class.inner", "textobjects") end) selmap("ap", function() select.select_textobject("@parameter.outer", "textobjects") end) selmap("kp", function() select.select_textobject("@parameter.inner", "textobjects") end) local swap = require("nvim-treesitter-textobjects.swap") map("so", function() swap.swap_next "@parameter.inner" end) map("sn", function() swap.swap_previous "@parameter.inner" end) -- goto_next_start = { -- ["]f"] = "@function.outer", -- ["]]"] = "@class.outer", -- }, -- goto_next_end = { -- ["]F"] = "@function.outer", -- ["]["] = "@class.outer", -- }, -- goto_previous_start = { -- ["[f"] = "@function.outer", -- ["[["] = "@class.outer", -- }, -- goto_previous_end = { -- ["[F"] = "@function.outer", -- ["[]"] = "@class.outer", -- }, end })