aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-09-25 11:38:00 +0200
committerMarc André Tanner <mat@brain-dump.org>2016-09-25 11:53:12 +0200
commit98bca99b2aeffb55b8aee765a7a6de13bdac4506 (patch)
treebaac1176c389563b82135e08a9d90f0391cb7cc4 /vis.c
parentc3bbd835fca0ba184f191b270d9aebfc2466be82 (diff)
downloadvis-98bca99b2aeffb55b8aee765a7a6de13bdac4506.tar.gz
vis-98bca99b2aeffb55b8aee765a7a6de13bdac4506.tar.xz
vis: disable language map for replacement character of `r` command
The character following the `r` command in normal mode should be treated as regular input given in insert/replace mode, that is no tranformation should be applied. Temporarily disable the language map for this reason. Close #382
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/vis.c b/vis.c
index 289b7b9..41d2037 100644
--- a/vis.c
+++ b/vis.c
@@ -532,6 +532,10 @@ bool vis_keymap_add(Vis *vis, const char *key, const char *mapping) {
return map_put(vis->keymap, key, mapping);
}
+void vis_keymap_disable(Vis *vis) {
+ vis->keymap_disabled = true;
+}
+
static void window_jumplist_add(Win *win, size_t pos) {
Mark mark = text_mark_set(win->file->text, pos);
if (mark && win->jumplist)
@@ -864,7 +868,9 @@ static const char *getkey(Vis *vis) {
if (!key)
return NULL;
vis_info_hide(vis);
- if (!vis->mode->input) {
+ bool use_keymap = !vis->mode->input && !vis->keymap_disabled;
+ vis->keymap_disabled = false;
+ if (use_keymap) {
const char *mapped = map_get(vis->keymap, key);
if (mapped)
return mapped;