keymap.lua 839 B

12345678910111213141516171819202122232425262728293031
  1. local M = {}
  2. local mode_adapters = {
  3. insert_mode = "i",
  4. normal_mode = "n",
  5. term_mode = "t",
  6. visual_mode = "v",
  7. visual_block_mode = "x",
  8. }
  9. -- Load key mappings for a given mode
  10. -- @param mode The keymap mode, can be one of the keys of mode_adapters
  11. -- @param keymaps The list of key mappings
  12. -- @param opts The mapping options
  13. M.load_mode = function(mode, keymaps, opts)
  14. mode = mode_adapters[mode] and mode_adapters[mode] or mode
  15. for _, keymap in ipairs(keymaps) do
  16. vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts)
  17. end
  18. end
  19. -- Load key mappings for all provided modes
  20. -- @param keymaps A list of key mappings for each mode
  21. -- @param opts The mapping options for each mode
  22. M.load = function(keymaps, opts)
  23. for mode, mapping in pairs(keymaps) do
  24. M.load_mode(mode, mapping, opts[mode])
  25. end
  26. end
  27. return M