aboutsummaryrefslogtreecommitdiff
path: root/vis-cmds.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-05-13 23:13:52 +0200
committerMarc André Tanner <mat@brain-dump.org>2016-05-13 23:13:52 +0200
commita1881512f3050e8d6719a28b55846c1f4c93acab (patch)
treedc825eecd6bff16a2ca4b76cf48c8f0a5c0090d3 /vis-cmds.c
parent9a9f7a96f5b02777b8c0823cffd173a72ca3e3c2 (diff)
downloadvis-a1881512f3050e8d6719a28b55846c1f4c93acab.tar.gz
vis-a1881512f3050e8d6719a28b55846c1f4c93acab.tar.xz
vis: clean up key mapping implementation
Diffstat (limited to 'vis-cmds.c')
-rw-r--r--vis-cmds.c25
1 files changed, 4 insertions, 21 deletions
diff --git a/vis-cmds.c b/vis-cmds.c
index e52072d..92ba417 100644
--- a/vis-cmds.c
+++ b/vis-cmds.c
@@ -755,36 +755,19 @@ static bool cmd_map(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor
return false;
}
- char *lhs = strdup(argv[2]);
+ const char *lhs = argv[2];
char *rhs = strdup(argv[3]);
- if (!lhs || !rhs || !(binding = calloc(1, sizeof *binding)))
+ if (!rhs || !(binding = calloc(1, sizeof *binding)))
goto err;
- char *next = lhs;
- while (cmd->flags == '!' && next) {
- char tmp;
- next = (char*)vis_keys_next(vis, next);
- if (next) {
- tmp = *next;
- *next = '\0';
- }
- if (local)
- vis_window_mode_unmap(win, mode, lhs);
- else
- vis_mode_unmap(vis, mode, lhs);
- if (next)
- *next = tmp;
- }
-
binding->alias = rhs;
if (local)
- mapped = vis_window_mode_map(win, mode, lhs, binding);
+ mapped = vis_window_mode_map(win, mode, cmd->flags == '!', lhs, binding);
else
- mapped = vis_mode_map(vis, mode, lhs, binding);
+ mapped = vis_mode_map(vis, mode, cmd->flags == '!', lhs, binding);
err:
- free(lhs);
if (!mapped) {
free(rhs);
free(binding);