86 lines
3.6 KiB
Lua
86 lines
3.6 KiB
Lua
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("<C-k>", vim.lsp.buf.signature_help)
|
|
|
|
map("<leader>wa", vim.lsp.buf.add_workspace_folder)
|
|
map("<leader>wr", vim.lsp.buf.remove_workspace_folder)
|
|
map("<leader>wl", function()
|
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
end)
|
|
map("<leader>D", vim.lsp.buf.type_definition)
|
|
map("<leader>rn", vim.lsp.buf.rename)
|
|
map("<leader>a", vim.lsp.buf.code_action)
|
|
map("<leader>fm", function()
|
|
vim.lsp.buf.format { async = true }
|
|
end)
|
|
map("<leader>da", dap.toggle_breakpoint)
|
|
map("<leader>dc", dap.continue)
|
|
map("<leader>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("<leader>so", function() swap.swap_next "@parameter.inner" end)
|
|
map("<leader>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
|
|
})
|