aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-01-15 18:01:29 +0100
committerMarc André Tanner <mat@brain-dump.org>2017-01-15 18:13:38 +0100
commit94350d8b216f47b051f2c746f434ab59eb78ab1e (patch)
tree0d01065a93703ce49f74c936ab8f7bda02e36a57
parentb6414e164fd00c497176d9a256434327b3bb633e (diff)
downloadvis-94350d8b216f47b051f2c746f434ab59eb78ab1e.tar.gz
vis-94350d8b216f47b051f2c746f434ab59eb78ab1e.tar.xz
vis: show error messages for failed :map/:unmap commands
Close #458
-rw-r--r--vis-cmds.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/vis-cmds.c b/vis-cmds.c
index 5394ad5..60e5f91 100644
--- 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;
}