diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-01-12 15:48:17 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-01-13 21:38:19 +0100 |
| commit | 11ede8254974aba6e1ef318ab90374fb85e6bf5c (patch) | |
| tree | 248276ff41ce2efe9bc0280e54905dc977a45c6d /main.c | |
| parent | 24bf7a500ecad7091f92cf9063d0b6cbbf678db1 (diff) | |
| download | vis-11ede8254974aba6e1ef318ab90374fb85e6bf5c.tar.gz vis-11ede8254974aba6e1ef318ab90374fb85e6bf5c.tar.xz | |
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.
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 24 |
1 files changed, 6 insertions, 18 deletions
@@ -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. */ |
