vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
commit 688579c95bb7854b928818fb83e6e89cb955e5ea parent b6b61df4f180b7a8c86b4c3c396caf8d6c134d3f Author: Marc André Tanner <mat@brain-dump.org> Date: Thu, 29 Dec 2016 01:49:09 +0100 vis: unmap all conflicting bindings of a forced map command Diffstat:
| M | vis-modes.c | | | 19 | ++----------------- |
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/vis-modes.c b/vis-modes.c @@ -78,23 +78,8 @@ static bool mode_map(Vis *vis, Mode *mode, bool force, const char *key, const Ke return false; if (!mode->bindings && !(mode->bindings = map_new())) return false; - if (force) { - char *lhs = strdup(key), *next = lhs; - if (!lhs) - return false; - while (next) { - char tmp; - next = (char*)vis_keys_next(vis, next); - if (next) { - tmp = *next; - *next = '\0'; - } - mode_unmap(mode, lhs); - if (next) - *next = tmp; - } - free(lhs); - } + if (force) + map_prefix_delete(mode->bindings, key); return (strcmp(key, "<") == 0 || !map_contains(mode->bindings, key)) && map_put(mode->bindings, key, binding); }