fix(keymaps): handle nil tables and cleanup initialization
- Add nil checks for all keymap tables - Fix explorer keymap setup - Remove unnecessary debug code - Simplify keymap initialization - Fix incorrect keymap references
This commit is contained in:
parent
1245a40fbc
commit
4a7be70200
|
|
@ -198,119 +198,74 @@ local function init_keymaps()
|
||||||
-- Function to set up snacks explorer keymaps
|
-- Function to set up snacks explorer keymaps
|
||||||
local function setup_explorer_keymaps()
|
local function setup_explorer_keymaps()
|
||||||
-- First remove any existing mappings
|
-- First remove any existing mappings
|
||||||
for _, key in ipairs({ '<leader>e', '<leader>o' }) do
|
for _, key in ipairs({ '<leader>e', '<leader>E' }) do
|
||||||
pcall(vim.keymap.del, 'n', key)
|
pcall(vim.keymap.del, 'n', key)
|
||||||
pcall(vim.keymap.del, 'n', key, { buffer = true })
|
pcall(vim.keymap.del, 'n', key, { buffer = true })
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set our mappings with high priority
|
-- Set our mappings with high priority
|
||||||
for _, mapping in ipairs(M.snacks_keymaps) do
|
for _, mapping in ipairs(M.snacks_keymaps or {}) do
|
||||||
if mapping.lhs == '<leader>e' or mapping.lhs == '<leader>o' then
|
if mapping.lhs == '<leader>e' or mapping.lhs == '<leader>E' then
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, {
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, vim.tbl_extend('force', mapping.opts, {
|
||||||
desc = mapping.opts.desc .. ' (high priority)',
|
|
||||||
replace_keycodes = false,
|
replace_keycodes = false,
|
||||||
nowait = true,
|
nowait = true,
|
||||||
silent = true,
|
silent = true,
|
||||||
})
|
}))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set up autocmds to maintain our keymaps
|
-- Set up autocmds to maintain our keymaps
|
||||||
vim.api.nvim_create_autocmd({ 'VimEnter', 'BufEnter', 'FileType' }, {
|
vim.api.nvim_create_autocmd({ 'VimEnter', 'BufEnter' }, {
|
||||||
group = keymap_group,
|
group = keymap_group,
|
||||||
callback = setup_explorer_keymaps,
|
callback = setup_explorer_keymaps,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Also set up the keymaps immediately
|
-- Set up core keymaps
|
||||||
setup_explorer_keymaps()
|
|
||||||
|
|
||||||
-- Apply core keymaps
|
|
||||||
for _, mapping in ipairs(core_keymaps) do
|
for _, mapping in ipairs(core_keymaps) do
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply telescope keymaps
|
-- Set up LSP keymaps on attach
|
||||||
for _, mapping in ipairs(M.telescope_keymaps) do
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = keymap_group,
|
||||||
|
callback = function(args)
|
||||||
|
M.setup_lsp_keymaps(args.buf)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set up other plugin keymaps
|
||||||
|
for _, mapping in ipairs(M.telescope_keymaps or {}) do
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply diagnostic keymaps
|
for _, mapping in ipairs(M.diagnostic_keymaps or {}) do
|
||||||
for _, mapping in ipairs(M.diagnostic_keymaps) do
|
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply buffer keymaps
|
for _, mapping in ipairs(M.buffer_keymaps or {}) do
|
||||||
for _, mapping in ipairs(M.buffer_keymaps) do
|
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply dadbod keymaps
|
for _, mapping in ipairs(M.snacks_keymaps or {}) do
|
||||||
M.setup_dadbod_keymaps()
|
|
||||||
|
|
||||||
-- Apply session keymaps
|
|
||||||
M.setup_session_keymaps()
|
|
||||||
|
|
||||||
-- Apply scratch keymaps
|
|
||||||
for _, mapping in ipairs(M.scratch_keymaps) do
|
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply git signs keymaps
|
for _, mapping in ipairs(M.gitsigns_keymaps or {}) do
|
||||||
M.setup_gitsigns_keymaps()
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
|
end
|
||||||
|
|
||||||
-- Apply leap keymaps
|
for _, mapping in ipairs(M.dadbod_keymaps or {}) do
|
||||||
M.setup_leap_keymaps()
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
|
end
|
||||||
|
|
||||||
-- Apply all other snacks keymaps (except scratch which is handled above)
|
for _, mapping in ipairs(M.session_keymaps or {}) do
|
||||||
for _, mapping in ipairs(M.snacks_keymaps) do
|
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
||||||
if mapping.lhs ~= '<leader>.' and mapping.lhs ~= '<leader>S' and
|
|
||||||
mapping.lhs ~= '<leader>e' and mapping.lhs ~= '<leader>o' then
|
|
||||||
vim.keymap.set(mapping.mode, mapping.lhs, mapping.rhs, mapping.opts)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Initialize keymaps
|
-- Initialize all keymaps
|
||||||
init_keymaps()
|
init_keymaps()
|
||||||
|
|
||||||
-- Debug command to check mappings
|
-- Return the module
|
||||||
vim.api.nvim_create_user_command('CheckMappings', function()
|
|
||||||
print("Current buffer:", vim.api.nvim_get_current_buf())
|
|
||||||
|
|
||||||
print("\nGlobal mappings for <leader>e:")
|
|
||||||
local global_maps = vim.api.nvim_get_keymap('n')
|
|
||||||
for _, map in ipairs(global_maps) do
|
|
||||||
if map.lhs == '<leader>e' then
|
|
||||||
print(vim.inspect(map))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
print("\nBuffer-local mappings for <leader>e:")
|
|
||||||
local buf_maps = vim.api.nvim_buf_get_keymap(0, 'n')
|
|
||||||
for _, map in ipairs(buf_maps) do
|
|
||||||
if map.lhs == '<leader>e' then
|
|
||||||
print(vim.inspect(map))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Test explorer function
|
|
||||||
print("\nTesting explorer function:")
|
|
||||||
local success, picker = pcall(require, "snacks.picker")
|
|
||||||
if success then
|
|
||||||
print("Picker module loaded")
|
|
||||||
if type(picker.explorer) == "function" then
|
|
||||||
print("Explorer function exists")
|
|
||||||
success, err = pcall(picker.explorer)
|
|
||||||
if not success then
|
|
||||||
print("Error calling explorer:", err)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print("Explorer is not a function:", type(picker.explorer))
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print("Error loading picker:", picker)
|
|
||||||
end
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue