mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-20 10:35:08 +02:00
[Refactor] Define keymapppings helpers in utils.keymap (#1176)
This commit is contained in:
parent
49945491f9
commit
679b8b69fb
4 changed files with 48 additions and 59 deletions
6
init.lua
6
init.lua
|
@ -22,8 +22,10 @@ end
|
|||
require("settings").load_commands()
|
||||
autocmds.define_augroups(lvim.autocommands)
|
||||
|
||||
require "keymappings"
|
||||
-- require("lsp").setup_default_bindings()
|
||||
local keymap = require "utils.keymap"
|
||||
local default_keymaps = require "keymappings"
|
||||
keymap.load(default_keymaps.keymaps, default_keymaps.opts)
|
||||
keymap.load(lvim.keys, default_keymaps.opts)
|
||||
|
||||
local plugins = require "plugins"
|
||||
local plugin_loader = require("plugin-loader").init()
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
local utils = require "utils"
|
||||
|
||||
local opts = {
|
||||
nnoremap = { noremap = true, silent = true },
|
||||
inoremap = { noremap = true, silent = true },
|
||||
vnoremap = { noremap = true, silent = true },
|
||||
xnoremap = { noremap = true, silent = true },
|
||||
generic = { silent = true },
|
||||
insert_mode = { noremap = true, silent = true },
|
||||
normal_mode = { noremap = true, silent = true },
|
||||
visual_mode = { noremap = true, silent = true },
|
||||
visual_block_mode = { noremap = true, silent = true },
|
||||
term_mode = { silent = true },
|
||||
}
|
||||
|
||||
local default_keys = {
|
||||
local keymaps = {
|
||||
insert_mode = {
|
||||
-- I hate escape
|
||||
{ "jk", "<ESC>" },
|
||||
|
@ -83,33 +81,17 @@ local default_keys = {
|
|||
|
||||
if vim.fn.has "mac" == 1 then
|
||||
-- TODO: fix this
|
||||
default_keys.normal_mode[5][1] = "<A-Up>"
|
||||
default_keys.normal_mode[6][1] = "<A-Down>"
|
||||
default_keys.normal_mode[7][1] = "<A-Left>"
|
||||
default_keys.normal_mode[8][1] = "<A-Right>"
|
||||
keymaps.normal_mode[5][1] = "<A-Up>"
|
||||
keymaps.normal_mode[6][1] = "<A-Down>"
|
||||
keymaps.normal_mode[7][1] = "<A-Left>"
|
||||
keymaps.normal_mode[8][1] = "<A-Right>"
|
||||
end
|
||||
|
||||
if lvim.leader == " " or lvim.leader == "space" then
|
||||
vim.g.mapleader = " "
|
||||
else
|
||||
vim.g.mapleader = lvim.leader
|
||||
end
|
||||
|
||||
local function get_user_keys(mode)
|
||||
if lvim.keys[mode] == nil then
|
||||
return default_keys[mode]
|
||||
else
|
||||
return lvim.keys[mode]
|
||||
end
|
||||
end
|
||||
|
||||
utils.add_keymap_normal_mode(opts.nnoremap, get_user_keys "normal_mode")
|
||||
utils.add_keymap_insert_mode(opts.inoremap, get_user_keys "insert_mode")
|
||||
utils.add_keymap_visual_mode(opts.vnoremap, get_user_keys "visual_mode")
|
||||
utils.add_keymap_visual_block_mode(opts.xnoremap, get_user_keys "visual_block_mode")
|
||||
utils.add_keymap_term_mode(opts.generic, get_user_keys "term_mode")
|
||||
vim.g.mapleader = lvim.leader == "space" and " " or lvim.leader
|
||||
|
||||
-- navigate tab completion with <c-j> and <c-k>
|
||||
-- runs conditionally
|
||||
vim.cmd 'inoremap <expr> <C-j> pumvisible() ? "\\<C-n>" : "\\<C-j>"'
|
||||
vim.cmd 'inoremap <expr> <C-k> pumvisible() ? "\\<C-p>" : "\\<C-k>"'
|
||||
|
||||
return { keymaps = keymaps, opts = opts }
|
||||
|
|
|
@ -110,32 +110,6 @@ function utils.is_string(t)
|
|||
return type(t) == "string"
|
||||
end
|
||||
|
||||
function utils.add_keymap(mode, opts, keymaps)
|
||||
for _, keymap in ipairs(keymaps) do
|
||||
vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts)
|
||||
end
|
||||
end
|
||||
|
||||
function utils.add_keymap_normal_mode(opts, keymaps)
|
||||
utils.add_keymap("n", opts, keymaps)
|
||||
end
|
||||
|
||||
function utils.add_keymap_visual_mode(opts, keymaps)
|
||||
utils.add_keymap("v", opts, keymaps)
|
||||
end
|
||||
|
||||
function utils.add_keymap_visual_block_mode(opts, keymaps)
|
||||
utils.add_keymap("x", opts, keymaps)
|
||||
end
|
||||
|
||||
function utils.add_keymap_insert_mode(opts, keymaps)
|
||||
utils.add_keymap("i", opts, keymaps)
|
||||
end
|
||||
|
||||
function utils.add_keymap_term_mode(opts, keymaps)
|
||||
utils.add_keymap("t", opts, keymaps)
|
||||
end
|
||||
|
||||
function utils.unrequire(m)
|
||||
package.loaded[m] = nil
|
||||
_G[m] = nil
|
||||
|
|
31
lua/utils/keymap.lua
Normal file
31
lua/utils/keymap.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
local M = {}
|
||||
|
||||
local mode_adapters = {
|
||||
insert_mode = "i",
|
||||
normal_mode = "n",
|
||||
term_mode = "t",
|
||||
visual_mode = "v",
|
||||
visual_block_mode = "x",
|
||||
}
|
||||
|
||||
-- Load key mappings for a given mode
|
||||
-- @param mode The keymap mode, can be one of the keys of mode_adapters
|
||||
-- @param keymaps The list of key mappings
|
||||
-- @param opts The mapping options
|
||||
M.load_mode = function(mode, keymaps, opts)
|
||||
mode = mode_adapters[mode] and mode_adapters[mode] or mode
|
||||
for _, keymap in ipairs(keymaps) do
|
||||
vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts)
|
||||
end
|
||||
end
|
||||
|
||||
-- Load key mappings for all provided modes
|
||||
-- @param keymaps A list of key mappings for each mode
|
||||
-- @param opts The mapping options for each mode
|
||||
M.load = function(keymaps, opts)
|
||||
for mode, mapping in pairs(keymaps) do
|
||||
M.load_mode(mode, mapping, opts[mode])
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
Loading…
Reference in a new issue