local telescope = require("telescope.builtin") vim.keymap.set("i", "", "", { desc = "Move left" }) vim.keymap.set("i", "", "", { desc = "Move right" }) vim.keymap.set("i", "", "", { desc = "Move down" }) vim.keymap.set("i", "", "", { desc = "Move up" }) vim.keymap.set("n", "", ":noh", { desc = "Clear highlights" }) vim.keymap.set("n", "b", " enew ", { desc = "New buffer" }) vim.keymap.set("n", "x", " bdelete ", { desc = "Delete buffer" }) vim.keymap.set("n", "", " bn ", { desc = "Next buffer" }) vim.keymap.set("n", "", " bp ", { desc = "Previous buffer" }) vim.keymap.set("n", "ZZ", " q! ", { desc = "Quit without saving" }) vim.keymap.set("n", "q:", "") vim.keymap.set('n', 'H', require('treesj').toggle) vim.keymap.set( 'n', 'ff', " Telescope find_files follow=true " ) vim.keymap.set( 'n', 'fg', " Telescope live_grep " ) vim.keymap.set( 'n', 'fF', " Telescope find_files follow=true no_ignore=true hidden=true " ) vim.keymap.set('n', 'ft', MiniFiles.open, { desc = "Open file tree" }) -- vim.api.nvim_set_keymap('v', 'f', 'SnipRun', {silent = true}) -- vim.api.nvim_set_keymap('n', 'f', 'SnipRunOperator', {silent = true}) -- vim.api.nvim_set_keymap('n', 'ff', 'SnipRun', {silent = true}) vim.keymap.set('n', 'rr', ":SnipRun", { desc = "Run line" }) vim.keymap.set('v', 'r', ":SnipRun", { desc = "Run selection" }) vim.keymap.set('n', 'N', " Neogit ", { desc = "Open Neogit" }) vim.keymap.set('n', '', " Copilot ", { desc = "Start Copilot" }) -- vim.keymap.set('x', 'p', 'p:let @+=@0:let @"=@0') vim.keymap.set('x', 'p', 'P') -- Luasnip local ls = require("luasnip") vim.keymap.set({ "i", "s" }, "", function() ls.jump(1) end, { silent = true }) vim.keymap.set({ "i", "s" }, "", function() ls.jump(-1) end, { silent = true }) -- Hop vim.keymap.set({ 'n', 'v' }, 'f', " HopWord ", { desc = "HopWord" }) -- marks vim.keymap.set({ 'n' }, "", "mA", { desc = "Set mark A", remap = true }) vim.keymap.set({ 'n' }, "", "g'A", { desc = "Jump to mark A", remap = true}) vim.keymap.set({ 'n' }, "", "mZ", { desc = "Set mark Z" }) vim.keymap.set({ 'n' }, "", "g'Z", { desc = "Jump to mark Z" }) vim.keymap.set({ 'n' }, "", "mE", { desc = "Set mark E" }) vim.keymap.set({ 'n' }, "", "g'E", { desc = "Jump to mark E" }) -- Global mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions -- 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 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', 'e', vim.diagnostic.open_float, opts) vim.keymap.set('n', '[[', vim.diagnostic.goto_prev, opts) vim.keymap.set('n', ']]', vim.diagnostic.goto_next, opts) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gd', telescope.lsp_definitions, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', telescope.lsp_implementations, opts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) vim.keymap.set('n', 'ra', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', telescope.lsp_references, opts) vim.keymap.set({ 'n', 'v' }, 'fm', ":Format", opts) end, }) -- Descriptions for lspconfig mappings local wk = require("which-key") wk.add({ {"e", vim.diagnostic.open_float, desc = "Show diagnostics" }, {"[[", vim.diagnostic.goto_prev, desc = "Previous diagnostic" }, {"]]", vim.diagnostic.goto_next, desc = "Next diagnostic" }, {"q", vim.diagnostic.setloclist, desc = "Set location list" }, {"gD", vim.lsp.buf.declaration, desc = "Goto declaration" }, {"gd", vim.lsp.buf.definition, desc = "Goto definition" }, {"K", vim.lsp.buf.hover, desc = "Hover" }, {"gi", vim.lsp.buf.implementation, desc = "Goto implementation" }, {"", vim.lsp.buf.signature_help, desc = "Signature help" }, {"D", vim.lsp.buf.type_definition, desc = "Goto type definition" }, {"ra", vim.lsp.buf.rename, desc = "Rename" }, {"ca", vim.lsp.buf.code_action, desc = "Code action" }, {"gr", vim.lsp.buf.references, desc = "Goto references" }, {"fm", function() vim.lsp.buf.format { async = true } end, desc = "Format" }, }) -- DAP local dap = require('dap') local dap_widgets = require('dap.ui.widgets') local dap_sb_frames = dap_widgets.sidebar(dap_widgets.frames) local dap_sb_scopes = dap_widgets.sidebar(dap_widgets.scopes) local dap_sb_session = dap_widgets.sidebar(dap_widgets.sessions) local dap_sb_threads = dap_widgets.sidebar(dap_widgets.threads) vim.keymap.set('n', 'b', dap.toggle_breakpoint, { desc = "Toggle breakpoint" }) local Hydra = require("hydra") Hydra({ name = 'Debugger', config = { buffer = bufnr, color = "pink", invoke_on_body = true, on_enter = function() dap.continue() -- dap.repl.open() end, on_exit = function() dap.terminate() dap_sb_frames.close() dap_sb_scopes.close() dap_sb_session.close() dap_sb_threads.close() dap.repl.close() end, hint = { type = "window", }, }, mode = 'n', body = 'g', heads = { { 'c', dap.continue, { desc = "Continue" } }, { 'r', dap.restart, { desc = "Restart" } }, -- { 'i', dap.pause, { desc = "Pause" } }, { 'I', nil, { } }, { 's', dap.step_into, { desc = "Step into" } }, { 'a', dap.step_over, { desc = "Step over" } }, { 'A', dap.step_out, { desc = "Step out" } }, { 'x', dap.repl.toggle, { desc = "repl" } }, { 't', dap_sb_threads.toggle, { desc = "Threads" } }, -- { 'f', dap_sb_frames.toggle, { desc = "Frames" } }, -- { 'v', dap_sb_scopes.toggle, { desc = "Scopes" } }, -- { 'z', dap_sb_session.toggle, { desc = "Session" } }, { 'K', dap_widgets.hover, { desc = "Hover" } }, { 'D', dap.up, { desc = "Up" } }, { 'd', dap.down, { desc = "Down" } }, { 'q', nil, { exit = true, nowait = true, desc = 'Exit' } }, } })