diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-01-15 18:01:29 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-01-15 18:13:38 +0100 |
| commit | 94350d8b216f47b051f2c746f434ab59eb78ab1e (patch) | |
| tree | 0d01065a93703ce49f74c936ab8f7bda02e36a57 | |
| parent | b6414e164fd00c497176d9a256434327b3bb633e (diff) | |
| download | vis-94350d8b216f47b051f2c746f434ab59eb78ab1e.tar.gz vis-94350d8b216f47b051f2c746f434ab59eb78ab1e.tar.xz | |
vis: show error messages for failed :map/:unmap commands
Close #458
| -rw-r--r-- | vis-cmds.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -788,11 +788,13 @@ static bool cmd_map(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor bool local = strstr(argv[0], "-") != NULL; enum VisMode mode = vis_mode_from(vis, argv[1]); - if (local && !win) + if (local && !win) { + vis_info_show(vis, "Invalid window for :%s", argv[0]); return false; + } if (mode == VIS_MODE_INVALID || !argv[2] || !argv[3]) { - vis_info_show(vis, "usage: map mode lhs rhs\n"); + vis_info_show(vis, "usage: %s mode lhs rhs", argv[0]); return false; } @@ -807,26 +809,36 @@ static bool cmd_map(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor mapped = vis_mode_map(vis, mode, cmd->flags == '!', lhs, binding); err: - if (!mapped) + if (!mapped) { + vis_info_show(vis, "Failed to map `%s' in %s mode%s", lhs, argv[1], + cmd->flags != '!' ? ", mapping already exists, " + "override with `!'" : ""); vis_binding_free(vis, binding); + } return mapped; } static bool cmd_unmap(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor *cur, Filerange *range) { + bool unmapped = false; bool local = strstr(argv[0], "-") != NULL; enum VisMode mode = vis_mode_from(vis, argv[1]); const char *lhs = argv[2]; - if (local && !win) + if (local && !win) { + vis_info_show(vis, "Invalid window for :%s", argv[0]); return false; + } if (mode == VIS_MODE_INVALID || !lhs) { - vis_info_show(vis, "usage: unmap mode lhs\n"); + vis_info_show(vis, "usage: %s mode lhs", argv[0]); return false; } if (local) - return vis_window_mode_unmap(win, mode, lhs); + unmapped = vis_window_mode_unmap(win, mode, lhs); else - return vis_mode_unmap(vis, mode, lhs); + unmapped = vis_mode_unmap(vis, mode, lhs); + if (!unmapped) + vis_info_show(vis, "Failed to unmap `%s' in %s mode", lhs, argv[1]); + return unmapped; } |
