From 59238a51667ab4f51f9fab8bd93f4b732462b3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 29 Dec 2016 01:49:09 +0100 Subject: vis: unmap all conflicting bindings of a forced map command --- vis-modes.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/vis-modes.c b/vis-modes.c index 68771ce..86c86f0 100644 --- 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); } -- cgit v1.2.3