---@diagnostic disable: undefined-global -- Plugin keymaps (dadbod, session, scratch, snacks, leap, mini-surround) local M = {} -- Database keymaps M.dadbod = { { mode = 'n', lhs = 'Dt', rhs = 'DBUIToggle', opts = { desc = 'Database: Toggle UI' } }, { mode = 'n', lhs = 'Df', rhs = 'DBUIFindBuffer', opts = { desc = 'Database: Find buffer' } }, { mode = 'n', lhs = 'Dr', rhs = 'DBUIRenameBuffer', opts = { desc = 'Database: Rename buffer' } }, { mode = 'n', lhs = 'Dl', rhs = 'DBUILastQueryInfo', opts = { desc = 'Database: Last query' } }, } -- Session keymaps M.session = { { mode = 'n', lhs = 'mw', rhs = function() local name = vim.fn.fnamemodify(vim.fn.getcwd(), ':t') require('mini.sessions').write(name, { force = true }) end, opts = { desc = 'Memory: Write session' } }, { mode = 'n', lhs = 'mr', rhs = function() local name = vim.fn.fnamemodify(vim.fn.getcwd(), ':t') require('mini.sessions').read(name) end, opts = { desc = 'Memory: Read session' } }, { mode = 'n', lhs = 'md', rhs = function() local name = vim.fn.fnamemodify(vim.fn.getcwd(), ':t') require('mini.sessions').delete(name) end, opts = { desc = 'Memory: Delete session' } }, } -- Scratch buffer keymaps M.scratch = { { mode = 'n', lhs = '.', rhs = function() require("snacks").scratch() end, opts = { desc = 'Toggle scratch buffer' } }, { mode = 'n', lhs = 'S', rhs = function() require("snacks").scratch.select() end, opts = { desc = 'Select scratch buffer' } }, { mode = 'n', lhs = 'nh', rhs = function() require("snacks.notifier").show_history() end, opts = { desc = 'Show notification history' } }, } -- Snacks keymaps (explorer and terminal) M.snacks = { { mode = 'n', lhs = 'e', rhs = function() require('snacks').explorer.open() end, opts = { desc = 'Explorer: Toggle' } }, { mode = 'n', lhs = 'E', rhs = function() require('snacks').explorer.reveal() end, opts = { desc = 'Explorer: Focus current file' } }, { mode = 'n', lhs = 'o', rhs = function() vim.cmd('tab split %') end, opts = { desc = 'Open current file in new tab' } }, { mode = 'n', lhs = 'f', rhs = function() vim.cmd('tabnew') require('snacks').explorer.open() end, opts = { desc = 'Explorer: Open in new tab' } }, { mode = 'n', lhs = '', rhs = function() require('snacks').terminal.toggle() end, opts = { desc = 'Terminal: Toggle float window' } }, { mode = 'n', lhs = 'tc', rhs = function() require('snacks').terminal.toggle() end, opts = { desc = 'Terminal: Toggle console' } }, } -- Leap keymaps M.leap = { { mode = { 'n', 'x', 'o' }, lhs = 's', rhs = function() require('leap').leap {} end, opts = { desc = 'Leap: Search bidirectional' } }, { mode = { 'n', 'x', 'o' }, lhs = 'S', rhs = function() require('leap').leap { target_windows = vim.tbl_filter( function (win) return vim.api.nvim_win_get_config(win).focusable end, vim.api.nvim_tabpage_list_wins(0) )} end, opts = { desc = 'Leap: Search across windows' } }, } -- Mini-surround keymaps (used by mini.surround config) M.mini_surround = { add = 'sa', delete = 'sd', find = 'sf', find_left = 'sF', highlight = 'sh', replace = 'sr', update_n_lines = '', suffix_last = 'l', suffix_next = 'n', } -- Setup functions function M.setup_dadbod() for _, mapping in ipairs(M.dadbod) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end end function M.setup_session() for _, mapping in ipairs(M.session) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end end function M.setup_scratch() for _, mapping in ipairs(M.scratch) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end end function M.setup_snacks() for _, mapping in ipairs(M.snacks) do if mapping.lhs ~= 'e' and mapping.lhs ~= 'E' then vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end end end function M.setup_leap() for _, mapping in ipairs(M.leap) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end end return M