diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-09-25 11:38:00 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-09-25 11:53:12 +0200 |
| commit | 98bca99b2aeffb55b8aee765a7a6de13bdac4506 (patch) | |
| tree | baac1176c389563b82135e08a9d90f0391cb7cc4 /vis.c | |
| parent | c3bbd835fca0ba184f191b270d9aebfc2466be82 (diff) | |
| download | vis-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.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -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; |
