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:
Mvis-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); }