vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
commit 0f3aa56e98b828a7f0c00978918bd8594cf377e2 parent fba49865420fd8f31a1ccc488749b050a649658e Author: Marc André Tanner <mat@brain-dump.org> Date: Sun, 15 Jan 2017 18:01:29 +0100 vis: show error messages for failed :map/:unmap commands Close #458 Diffstat:
| M | vis-cmds.c | | | 26 | +++++++++++++++++++------- |
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/vis-cmds.c b/vis-cmds.c @@ -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; }