From 1f0858f772603f00a091321b4deb344df0e8df9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 1 May 2016 12:09:22 +0200 Subject: vis-lua: let vis:map override existing mappings It now also unmaps all previously mapped prefixes of the new mapping. See 0ef138085f885d4576a8e53d079e1f00f80799bf and #271. --- vis-lua.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'vis-lua.c') diff --git a/vis-lua.c b/vis-lua.c index 9df2a8e..0096a4f 100644 --- a/vis-lua.c +++ b/vis-lua.c @@ -403,6 +403,20 @@ static int map(lua_State *L) { binding->action = action; + char *lhs = strdup(key), *next = lhs; + while (next) { + char tmp; + next = (char*)vis_keys_next(vis, next); + if (next) { + tmp = *next; + *next = '\0'; + } + vis_mode_unmap(vis, mode, lhs); + if (next) + *next = tmp; + } + free(lhs); + if (!vis_mode_map(vis, mode, key, binding)) goto err; -- cgit v1.2.3