diff --git a/fnl/bepo.fnl b/fnl/bepo.fnl index 154787e..510a981 100644 --- a/fnl/bepo.fnl +++ b/fnl/bepo.fnl @@ -23,11 +23,15 @@ (vim.api.nvim_set_keymap :x key target {:noremap true})) nil) +(fn map-normal [key target] + "For normal mode mappings" + (when (= (vim.fn.maparg key :n) "") + (vim.api.nvim_set_keymap :n key target {:noremap true}))) + (fn map-all [key target] - "For everything else" - (if (= (vim.fn.maparg key :n) "") - (vim.api.nvim_set_keymap :n key target {:noremap true}) - (map-text-object key target))) + "For all directional mappings" + (map-normal key target) + (map-text-object key target)) (fn mapping-setup [] ;; Keys still free @@ -51,8 +55,9 @@ (map-all :gs :gk) ;; ------ ;; on préserve les variantes avec 'z' - ;; I like zt better - ;; (map-all "zt" "zj") + (map-all :zj :zt) + (map-all :zt :zj) + (map-all :zk :zs) (map-all :zs :zk) ;; ------ (map-all :h :t) @@ -71,19 +76,19 @@ ;; {k} devient [s] (map-all :K :S) ;; {h} devient [S] - (map-all :gb :gT) + (map-normal :gb :gT) ;; le couple [gb]/[gé] agit sur les tabs - (map-all "gé" :gt) + (map-normal "gé" :gt) ;; le couple [gb]/[gé] agit sur les tabs - (map-all :gB ":execute \"silent! tabfirst\"") + (map-normal :gB ":execute \"silent! tabfirst\"") ;; [gB] va au premier tab - (map-all "gÉ" ":execute \"silent! tablast\"") + (map-normal "gÉ" ":execute \"silent! tablast\"") ;; [gÉ] au dernier - (map-all :gT "") + (map-normal :gT "") ;; [gT] est libéré et peut agir sur les tags - (map-all "«" "<") + (map-normal "«" "<") ;; [<] est moins accessible que [«] - (map-all "»" ">") + (map-normal "»" ">") ;; idem pour [»] et [>] (map-all "g," "g;") ;; idem pour [g,] et [g;] @@ -103,33 +108,33 @@ (map-text-object "iÉ" :iW) ;; idem pour [iW] et [iÉ] ;; ------ - (map-all :w :) + (map-normal :w :) ;; [w] est libre pour faire - (map-all :W :) + (map-normal :W :) ;; et [w] pour faire - (map-all :wc :h) + (map-normal :wc :h) ;; on map [w]+direction - (map-all :wt :j) + (map-normal :wt :j) ;; on map [w]+direction - (map-all :ws :k) + (map-normal :ws :k) ;; on map [w]+direction - (map-all :wr :l) + (map-normal :wr :l) ;; on map [w]+direction - (map-all :wC :H) + (map-normal :wC :H) ;; idem pour les majuscules - (map-all :wT :J) + (map-normal :wT :J) ;; idem pour les majuscules - (map-all :wS :K) + (map-normal :wS :K) ;; idem pour les majuscules - (map-all :wR :L) + (map-normal :wR :L) ;; idem pour les majuscules ;; ------ - (map-all :wh :s) + (map-normal :wh :s) ;; crée un split _h_orizontal ;; ------ - (map-all "wé" :t) + (map-normal "wé" :t) ;; va en haut à gauche - (map-all "wÉ" :T) + (map-normal "wÉ" :T) ;; déplace sur un nouveau tab ) diff --git a/lua/bepo.lua b/lua/bepo.lua index 63c3cf0..7f3d2cf 100644 --- a/lua/bepo.lua +++ b/lua/bepo.lua @@ -7,13 +7,17 @@ local function map_text_object(key, target) end return nil end -local function map_all(key, target) +local function map_normal(key, target) if (vim.fn.maparg(key, "n") == "") then return vim.api.nvim_set_keymap("n", key, target, {noremap = true}) else - return map_text_object(key, target) + return nil end end +local function map_all(key, target) + map_normal(key, target) + return map_text_object(key, target) +end local function mapping_setup() map_all("c", "h") map_all("t", "j") @@ -25,6 +29,9 @@ local function mapping_setup() map_all("R", "L") map_all("gt", "gj") map_all("gs", "gk") + map_all("zj", "zt") + map_all("zt", "zj") + map_all("zk", "zs") map_all("zs", "zk") map_all("h", "t") map_all("H", "T") @@ -34,13 +41,13 @@ local function mapping_setup() map_all("J", "R") map_all("k", "s") map_all("K", "S") - map_all("gb", "gT") - map_all("g\195\169", "gt") - map_all("gB", ":execute \"silent! tabfirst\"") - map_all("g\195\137", ":execute \"silent! tablast\"") - map_all("gT", "") - map_all("\194\171", "<") - map_all("\194\187", ">") + map_normal("gb", "gT") + map_normal("g\195\169", "gt") + map_normal("gB", ":execute \"silent! tabfirst\"") + map_normal("g\195\137", ":execute \"silent! tablast\"") + map_normal("gT", "") + map_normal("\194\171", "<") + map_normal("\194\187", ">") map_all("g,", "g;") map_all("g;", "g,") map_all("\195\169", "w") @@ -49,19 +56,19 @@ local function mapping_setup() map_text_object("a\195\137", "aW") map_text_object("i\195\169", "iw") map_text_object("i\195\137", "iW") - map_all("w", "") - map_all("W", "") - map_all("wc", "h") - map_all("wt", "j") - map_all("ws", "k") - map_all("wr", "l") - map_all("wC", "H") - map_all("wT", "J") - map_all("wS", "K") - map_all("wR", "L") - map_all("wh", "s") - map_all("w\195\169", "t") - return map_all("w\195\137", "T") + map_normal("w", "") + map_normal("W", "") + map_normal("wc", "h") + map_normal("wt", "j") + map_normal("ws", "k") + map_normal("wr", "l") + map_normal("wC", "H") + map_normal("wT", "J") + map_normal("wS", "K") + map_normal("wR", "L") + map_normal("wh", "s") + map_normal("w\195\169", "t") + return map_normal("w\195\137", "T") end local function setup() if (vim.g.loaded_bepo_nvim == nil) then