---@module "mappings.modes" ---@author sravioli ---@license GNU-GPLv3 ---@diagnostic disable-next-line: undefined-field local act = require("wezterm").action local key = require("utils.fn").key local Config = {} local key_tables = { -- {{{1 COPY MODE (copy_mode) copy_mode = { { "", act.CopyMode "Close", "exit" }, { "y", act.Multiple { { CopyTo = "ClipboardAndPrimarySelection" }, { CopyMode = "Close" }, }, "copy selection", }, { "h", act.CopyMode "MoveLeft", "left" }, { "j", act.CopyMode "MoveDown", "up" }, { "k", act.CopyMode "MoveUp", "down" }, { "l", act.CopyMode "MoveRight", "right" }, { "b", act.CopyMode "MoveBackwardWord", "word backward" }, { "e", act.CopyMode "MoveForwardWordEnd", "word end" }, { "w", act.CopyMode "MoveForwardWord", "word forward" }, { "", act.CopyMode "MoveForwardWord", "forward" }, { "", act.CopyMode "MoveBackwardWord", "backward" }, { "", act.CopyMode "MoveToStartOfNextLine", "next line" }, { "", act.CopyMode { SetSelectionMode = "Cell" }, "" }, { "0", act.CopyMode "MoveToStartOfLine", "line start" }, { "", act.CopyMode "MoveToEndOfLineContent", "line end" }, { "^", act.CopyMode "MoveToStartOfLineContent", "" }, { ",", act.CopyMode "JumpReverse", "repeat back" }, { ";", act.CopyMode "JumpAgain", "repeat" }, { "F", act.CopyMode { JumpBackward = { prev_char = false } }, "" }, { "f", act.CopyMode { JumpForward = { prev_char = false } }, "" }, { "T", act.CopyMode { JumpBackward = { prev_char = true } }, "" }, { "t", act.CopyMode { JumpForward = { prev_char = true } }, "" }, { "G", act.CopyMode "MoveToScrollbackBottom", "bot" }, { "g", act.CopyMode "MoveToScrollbackTop", "top" }, { "H", act.CopyMode "MoveToViewportTop", "viewport top" }, { "M", act.CopyMode "MoveToViewportMiddle", "viewport middle" }, { "L", act.CopyMode "MoveToViewportBottom", "viewport bot" }, { "V", act.CopyMode { SetSelectionMode = "Line" }, "line mode" }, { "v", act.CopyMode { SetSelectionMode = "Cell" }, "cell mode" }, { "", act.CopyMode { SetSelectionMode = "Block" }, "block mode" }, { "O", act.CopyMode "MoveToSelectionOtherEndHoriz", "selection other end" }, { "o", act.CopyMode "MoveToSelectionOtherEnd", "selection end" }, { "", act.CopyMode { MoveByPage = 0.5 }, "scroll down" }, { "", act.CopyMode { MoveByPage = -0.5 }, "scroll up" }, }, -- }}} -- {{{1 SEARCH MODE (search_mode) search_mode = { { "", act.CopyMode "Close", "exit" }, { "", act.CopyMode "NextMatch", "next" }, { "", act.CopyMode "PriorMatch", "prev" }, { "", act.CopyMode "CycleMatchType", "cycle type" }, { "", act.CopyMode "ClearPattern", "clear pattern" }, { "", act.CopyMode "PriorMatchPage", "prev page" }, { "", act.CopyMode "NextMatchPage", "next page" }, { "", act.CopyMode "PriorMatch", "next" }, { "", act.CopyMode "NextMatch", "prev" }, }, -- }}} -- {{{1 FONT MODE (font_mode) font_mode = { { "", "PopKeyTable", "exit" }, { "+", act.IncreaseFontSize, "increase size" }, { "-", act.DecreaseFontSize, "decrease size" }, { "0", act.ResetFontSize, "reset size" }, }, -- }}} -- {{{1 WINDOW MODE (window_mode) window_mode = { { "", "PopKeyTable", "exit" }, { "q", act.CloseCurrentPane { confirm = true }, "close" }, { "h", act.ActivatePaneDirection "Left", "left" }, { "j", act.ActivatePaneDirection "Down", "down" }, { "k", act.ActivatePaneDirection "Up", "up" }, { "l", act.ActivatePaneDirection "Right", "right" }, { "v", act.SplitHorizontal { domain = "CurrentPaneDomain" }, "vsplit" }, { "s", act.SplitVertical { domain = "CurrentPaneDomain" }, "hsplit" }, { "p", act.PaneSelect, "pick" }, { "x", act.PaneSelect { mode = "SwapWithActive" }, "swap" }, { "o", act.TogglePaneZoomState, "toggle zoom" }, { "", act.ActivatePaneDirection "Left", "" }, { "", act.ActivatePaneDirection "Down", "" }, { "", act.ActivatePaneDirection "Up", "" }, { "", act.ActivatePaneDirection "Right", "" }, { "<", act.AdjustPaneSize { "Left", 2 }, "resize left" }, { ">", act.AdjustPaneSize { "Right", 2 }, "resize right" }, { "+", act.AdjustPaneSize { "Up", 2 }, "resize top" }, { "-", act.AdjustPaneSize { "Down", 2 }, "resize bot" }, }, -- }}} -- {{{1 HELP MODE (help_mode) help_mode = { { "", "PopKeyTable", "exit" }, { "", act.ActivateTabRelative(1), "next tab" }, { "", act.ActivateTabRelative(-1), "prev tab" }, { "", act.CopyTo "Clipboard", "copy" }, { "", act.PasteFrom "Clipboard", "paste" }, { "", act.Search "CurrentSelectionOrEmptyString", "search" }, { "", act.ClearScrollback "ScrollbackOnly", "clear scrollback" }, { "", act.ShowDebugOverlay, "debug overlay" }, { "", act.SpawnWindow, "new window" }, { "", act.ActivateCommandPalette, "command palette" }, { "", act.ReloadConfiguration, "reload config" }, { "", act.SpawnTab "CurrentPaneDomain", "new pane" }, { "", act.CharSelect { copy_on_select = true, copy_to = "ClipboardAndPrimarySelection", }, "char select", }, { "", act.CloseCurrentTab { confirm = true }, "close tab" }, { "", act.TogglePaneZoomState, "toggle zoom" }, { "", act.ScrollByPage(-1), "" }, { "", act.ScrollByPage(1), "" }, { "", act.PasteFrom "PrimarySelection", "" }, { "", act.CopyTo "PrimarySelection", "" }, { "", act.QuickSelect, "quick select" }, ---quick split and nav { '', act.SplitHorizontal { domain = "CurrentPaneDomain" }, "vsplit" }, { "", act.SplitVertical { domain = "CurrentPaneDomain" }, "hsplit" }, { "", act.ActivatePaneDirection "Left", "move left" }, { "", act.ActivatePaneDirection "Down", "mode down" }, { "", act.ActivatePaneDirection "Up", "move up" }, { "", act.ActivatePaneDirection "Right", "move right" }, ---key tables { "h", act.ActivateKeyTable { name = "help_mode", one_shot = true }, "help" }, { "w", act.ActivateKeyTable { name = "window_mode", one_shot = false }, "window mode", }, { "f", act.ActivateKeyTable { name = "font_mode", one_shot = false }, "font mode", }, { "c", act.ActivateCopyMode, "copy mode" }, { "s", act.Search "CurrentSelectionOrEmptyString", "search mode" }, }, -- }}} -- {{{1 PICK MODE (pick_mode) pick_mode = { { "", "PopKeyTable", "exit" }, { "c", require("picker.colorscheme"):pick(), "colorscheme" }, { "f", require("picker.font"):pick(), "font" }, { "s", require("picker.font-size"):pick(), "font size" }, { "l", require("picker.font-leading"):pick(), "line height" }, }, -- }}} } Config.key_tables = {} for mode, mode_table in pairs(key_tables) do Config.key_tables[mode] = {} for _, map_tbl in ipairs(mode_table) do key.map(map_tbl[1], map_tbl[2], Config.key_tables[mode]) end end return { Config, key_tables }