aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-01-12 15:48:17 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-01-13 21:38:19 +0100
commit11ede8254974aba6e1ef318ab90374fb85e6bf5c (patch)
tree248276ff41ce2efe9bc0280e54905dc977a45c6d /main.c
parent24bf7a500ecad7091f92cf9063d0b6cbbf678db1 (diff)
downloadvis-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.c24
1 files changed, 6 insertions, 18 deletions
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. */