local s = vim.keymap.set local telescope = require("telescope.builtin") local dap = require('dap') local dapui = require("dapui") s("i", "", "", { desc = "Move left" }) s("i", "", "", { desc = "Move right" }) s("i", "", "", { desc = "Move down" }) s("i", "", "", { desc = "Move up" }) s("n", "", ":noh", { desc = "Clear highlights" }) s("n", "!x", " bdelete! ", { desc = "Delete buffer !" }) s("n", "x", " BufferClose ", { desc = "Delete buffer" }) s("n", "X", " BufferCloseAllButPinned ", { desc = "Delete all buffers except pinned" }) s("n", "", " BufferMoveNext ", { desc = "Move buffer forward" }) s("n", "", " BufferMovePrevious ", { desc = "Move buffer backward" }) s("n", "", " BufferNext ", { desc = "Next buffer" }) s("n", "", " BufferPrevious ", { desc = "Previous buffer" }) s('n', 'p', " BufferPin ", { desc = "Pin/Unpin buffer" }) s("n", "ZZ", " q! ", { desc = "Quit without saving" }) s("n", "q:", "") s('n', 'H', require('treesj').toggle) s('n', 'ff', " Telescope find_files follow=true ") s('n', 'fg', " Telescope live_grep ") s('v', 'fg', '"hy:Telescope live_grep default_text=h', default_opts) s('n', 'fF', " Telescope find_files follow=true no_ignore=true hidden=true ") s('n', 'ft', MiniFiles.open, { desc = "Open file tree" }) s('n', 'N', " Neogit ", { desc = "Open Neogit" }) -- s('x', 'p', 'p:let @+=@0:let @"=@0') s('x', 'p', 'P') -- Luasnip local ls = require("luasnip") s({ "i", "s" }, "", function() ls.jump(1) end, { silent = true }) s({ "i", "s" }, "", function() ls.jump(-1) end, { silent = true }) -- Hop s({ 'n', 'v' }, 'f', " HopWord ", { desc = "HopWord" }) -- marks s({ 'n' }, "", "mA", { desc = "Set mark A", remap = true }) s({ 'n' }, "", "g'A", { desc = "Jump to mark A", remap = true }) s({ 'n' }, "", "mZ", { desc = "Set mark Z" }) s({ 'n' }, "", "g'Z", { desc = "Jump to mark Z" }) s({ 'n' }, "", "mE", { desc = "Set mark E" }) s({ 'n' }, "", "g'E", { desc = "Jump to mark E" }) s({ 'n' }, "", "gqip", { desc = "format paragraph" }) s({ 'v' }, "", "gq", { desc = "format vidsual selection" }) function moveCursorToMouse() local mousePos = vim.fn.getmousepos() vim.fn.setpos(".", { 0, mousePos.line, mousePos.column, 0 }) end function hover() if dap.session() then dapui.eval() else vim.lsp.buf.hover() end end 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' local opts = { buffer = ev.buf } s('n', 'e', vim.diagnostic.open_float, { buffer = ev.buf, desc = "Show diagnostics" }) s('n', '[[', vim.diagnostic.goto_prev, { buffer = ev.buf, desc = "Previous diagnostic" }) s('n', ']]', vim.diagnostic.goto_next, { buffer = ev.buf, desc = "Next diagnostic" }) s('n', 'q', vim.diagnostic.setloclist, { buffer = ev.buf, desc = "Set location list" }) s('n', 'gD', vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Goto declaration" }) s('n', 'gd', telescope.lsp_definitions, { buffer = ev.buf, desc = "Goto definition" }) s( {'n', 'v'}, 'K', hover, { buffer = ev.buf, desc = "Hover" }) s( {'n', 'v'}, '', function() moveCursorToMouse() hover() end, { buffer = ev.buf, desc = "Hover" } ) s('n', 'gi', telescope.lsp_implementations, { buffer = ev.buf, desc = "Goto implementation" }) s('n', '', vim.lsp.buf.signature_help, { buffer = ev.buf, desc = "Signature help" }) s('n', 'D', vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Goto type definition" }) s('n', 'ra', vim.lsp.buf.rename, { buffer = ev.buf, desc = "Rename" }) s({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Code action" }) s('n', 'gr', telescope.lsp_references, { buffer = ev.buf, desc = "Goto references" }) s({ 'n', 'v' }, 'fm', ":Format", { buffer = ev.buf, desc = "Format" }) s('n', '', ' :lua vim.lsp.buf.definition()', { buffer = ev.buf, desc = "Goto definition" }) end, }) function continue() if dap.session() then if dap.status() == "stopped" then dap.continue() end dap.continue() else launchjs() dap.continue() end end s('n', 'b', dap.toggle_breakpoint, { desc = "Toggle breakpoint" }) s('n', 'B', function() local condition = vim.fn.input("Condition: ", "", "customlist,Complete") dap.set_breakpoint(condition) end, { desc = "Add conditional breakpoint" }) -- watchpoint s('n', 'w', dapui.elements.watches.add, { desc = "Add watch" }) s('v', 'w', dapui.elements.watches.add, { desc = "Add watch" }) s('n', '', dapui.toggle, { desc = "Toggle debygger UI" }) s('n', '', continue, { desc = "Continue" }) s('n', '', dap.restart, { desc = "Restart" }) s('n', '', dap.step_into, { desc = "Step into" }) s('n', '', dap.step_over, { desc = "Step over" }) s('n', '', dap.step_out, { desc = "Step out" }) s('n', '', dap.run_to_cursor, { desc = "Run to cursor" }) s('n', '', dap.step_back, { desc = "Step back" }) s('n', '', dap.up, { desc = "Up" }) s('n', '', dap.down, { desc = "Down" }) -- s('n', '', dapui.eval, { desc = "Eval" }) -- s('n', '', ' :lua require("dapui").eval()', { desc = "Eval" }) s('n', '', function() dapui.close() dap.terminate() end, { desc = "Close debugger" })