From 11ede8254974aba6e1ef318ab90374fb85e6bf5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 12 Jan 2016 15:48:17 +0100 Subject: vis: cleanup key binding definitions This removes the tree based mode structures and instead merges all keybindings in flat modes which uses some more memory but will allow (per mode) run-time configurable key bindings. Make sure to update/remove config.h. --- main.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 92ca439..fc4f383 100644 --- a/main.c +++ b/main.c @@ -527,7 +527,7 @@ static KeyAction vis_action[] = { [VIS_ACTION_MODE_OPERATOR_PENDING] = { "vis-mode-operator-pending", "Enter to operator pending mode", - switchmode, { .i = VIS_MODE_OPERATOR } + switchmode, { .i = VIS_MODE_OPERATOR_PENDING } }, [VIS_ACTION_DELETE_CHAR_PREV] = { "delete-char-prev", @@ -1627,21 +1627,6 @@ static const char *unicode_info(Vis *vis, const char *keys, const Arg *arg) { static Vis *vis; -static KeyBinding *default_bindings[] = { - [VIS_MODE_BASIC] = basic_movement, - [VIS_MODE_MOVE] = vis_movements, - [VIS_MODE_TEXTOBJ] = vis_textobjs, - [VIS_MODE_OPERATOR_OPTION] = vis_operator_options, - [VIS_MODE_OPERATOR] = vis_operators, - [VIS_MODE_NORMAL] = vis_mode_normal, - [VIS_MODE_VISUAL] = vis_mode_visual, - [VIS_MODE_VISUAL_LINE] = vis_mode_visual_line, - [VIS_MODE_READLINE] = vis_mode_readline, - [VIS_MODE_PROMPT] = vis_mode_prompt, - [VIS_MODE_INSERT] = vis_mode_insert, - [VIS_MODE_REPLACE] = vis_mode_replace, -}; - static void signal_handler(int signum, siginfo_t *siginfo, void *context) { vis_signal_handler(vis, signum, siginfo, context); } @@ -1669,8 +1654,11 @@ int main(int argc, char *argv[]) { } for (int i = 0; i < LENGTH(default_bindings); i++) { - if (!vis_mode_bindings(vis, i, &default_bindings[i])) - vis_die(vis, "Could not load default bindings\n"); + for (const KeyBinding **binding = default_bindings[i]; binding && *binding; binding++) { + for (const KeyBinding *kb = *binding; kb->key; kb++) { + vis_mode_map(vis, i, kb->key, kb); + } + } } /* install signal handlers etc. */ -- cgit v1.2.3