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" }) -- 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', 'fm', function() vim.lsp.buf.format { async = true } end, opts) end, }) -- Descriptions for lspconfig mappings local wk = require("which-key") wk.register({ ["e"] = { vim.diagnostic.open_float, "Show diagnostics" }, ["[["] = { vim.diagnostic.goto_prev, "Previous diagnostic" }, ["]]"] = { vim.diagnostic.goto_next, "Next diagnostic" }, ["q"] = { vim.diagnostic.setloclist, "Set location list" }, ["gD"] = { vim.lsp.buf.declaration, "Goto declaration" }, ["gd"] = { vim.lsp.buf.definition, "Goto definition" }, ["K"] = { vim.lsp.buf.hover, "Hover" }, ["gi"] = { vim.lsp.buf.implementation, "Goto implementation" }, [""] = { vim.lsp.buf.signature_help, "Signature help" }, ["D"] = { vim.lsp.buf.type_definition, "Goto type definition" }, ["ra"] = { vim.lsp.buf.rename, "Rename" }, ["ca"] = { vim.lsp.buf.code_action, "Code action" }, ["gr"] = { vim.lsp.buf.references, "Goto references" }, ["fm"] = { function() vim.lsp.buf.format { async = true } end, "Format" }, }) -- DAP local dap = require('dap') local dap_widget = require('dap.ui.widgets') local dap_sb_frames = dap_widget.sidebar(dap_widget.frames) local dap_sb_scopes = dap_widget.sidebar(dap_widget.scopes) local dap_sb_session = dap_widget.sidebar(dap_widget.sessions) 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() end, on_exit = function() dap.terminate() dap_sb_frames.close() dap_sb_scopes.close() dap_sb_session.close() dap.repl.close() end, hint = { type = "window", }, }, mode = 'n', body = 'g', heads = { { 'c', dap.continue, { desc = "Continue" } }, { 'r', dap.restart, { desc = "Restart" } }, { 's', dap.step_into, { desc = "Step into" } }, { 'n', dap.step_over, { desc = "Step over" } }, { 'o', dap.step_out, { desc = "Step out" } }, { 'x', dap.repl.toggle, { desc = "repl" } }, { 'f', dap_sb_frames.toggle, { desc = "Frames" } }, { 'v', dap_sb_scopes.toggle, { desc = "Scopes" } }, { 'z', dap_sb_session.toggle, { desc = "Session" } }, { 'b', dap.toggle_breakpoint, { desc = "Breakpoint" } }, { 'u', dap.up, { desc = "Up" } }, { 'd', dap.down, { desc = "Down" } }, { 'q', nil, { exit = true, nowait = true, desc = 'Exit' } }, } })