---@diagnostic disable: undefined-global -- Keymaps init - loads all keymap modules vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' local M = {} -- Import keymap modules local core = require('core.keymaps.core') local lsp = require('core.keymaps.lsp') local telescope = require('core.keymaps.telescope') local diagnostic = require('core.keymaps.diagnostic') local git = require('core.keymaps.git') local plugins = require('core.keymaps.plugins') -- Export for external use M.setup_lsp_keymaps = lsp.setup M.telescope_keymaps = telescope M.diagnostic_keymaps = diagnostic M.gitsigns_keymaps = git.keymaps M.dadbod_keymaps = plugins.dadbod M.session_keymaps = plugins.session M.scratch_keymaps = plugins.scratch M.snacks_keymaps = plugins.snacks M.leap_keymaps = plugins.leap M.mini_surround_keymaps = plugins.mini_surround -- Setup functions M.setup_gitsigns_keymaps = git.setup M.setup_dadbod_keymaps = plugins.setup_dadbod M.setup_session_keymaps = plugins.setup_session M.setup_leap_keymaps = plugins.setup_leap -- Default on_attach for LSP (used by lsp/setup.lua) M.default_on_attach = nil local explorer_keymaps_set = false local function setup_explorer_keymaps() if explorer_keymaps_set then return end explorer_keymaps_set = true for _, key in ipairs({ 'e', 'E' }) do pcall(vim.keymap.del, 'n', key) end for _, mapping in ipairs(plugins.snacks) do if mapping.lhs == 'e' or mapping.lhs == 'E' then vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, vim.tbl_extend('force', mapping.opts, { replace_keycodes = false, nowait = true, silent = true, })) end end end local function init_keymaps() local keymap_group = vim.api.nvim_create_augroup('custom_keymaps', { clear = true }) -- Handle snacks explorer during buffer writes vim.api.nvim_create_autocmd({ 'BufWritePre' }, { group = keymap_group, callback = function() pcall(function() local picker = require('plugins.snacks.picker') if picker.is_open() then picker.pause_updates() vim.schedule(function() picker.resume_updates() end) end end) end, }) -- Set up autocmds to maintain explorer keymaps vim.api.nvim_create_autocmd({ 'VimEnter', 'BufEnter' }, { group = keymap_group, callback = setup_explorer_keymaps, }) -- Set up LSP keymaps on attach vim.api.nvim_create_autocmd('LspAttach', { group = keymap_group, callback = function(args) M.setup_lsp_keymaps(args.buf) end, }) -- Core keymaps for _, mapping in ipairs(core) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end -- Telescope keymaps for _, mapping in ipairs(telescope) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end -- Diagnostic keymaps for _, mapping in ipairs(diagnostic) do vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts) end -- Plugin keymaps plugins.setup_snacks() plugins.setup_scratch() plugins.setup_dadbod() plugins.setup_session() plugins.setup_leap() git.setup() -- Tab navigation vim.keymap.set('n', 'gt', ':tabnext', { silent = true, desc = 'Next tab' }) vim.keymap.set('n', 'gT', ':tabprevious', { silent = true, desc = 'Previous tab' }) end init_keymaps() M.setup = init_keymaps return M