From a725325a002413142bd258d92970976db87d8399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sat, 7 Nov 2015 10:52:35 +0100 Subject: vis: shadow default register while in prompt mode Editing operation in prompt mode should not affect the default register. --- vis-modes.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'vis-modes.c') diff --git a/vis-modes.c b/vis-modes.c index 6e2e196..ea539f1 100644 --- a/vis-modes.c +++ b/vis-modes.c @@ -100,13 +100,22 @@ static void vis_mode_prompt_input(Vis *vis, const char *str, size_t len) { } static void vis_mode_prompt_enter(Vis *vis, Mode *old) { - if (old->isuser && old != &vis_modes[VIS_MODE_PROMPT]) + if (old->isuser && old != &vis_modes[VIS_MODE_PROMPT]) { vis->mode_before_prompt = old; + /* prompt manipulations e.g. should not affect default register */ + Register tmp = vis->registers[VIS_REG_PROMPT]; + vis->registers[VIS_REG_PROMPT] = vis->registers[VIS_REG_DEFAULT]; + vis->registers[VIS_REG_DEFAULT] = tmp; + } } static void vis_mode_prompt_leave(Vis *vis, Mode *new) { - if (new->isuser) + if (new->isuser) { vis_prompt_hide(vis); + Register tmp = vis->registers[VIS_REG_DEFAULT]; + vis->registers[VIS_REG_DEFAULT] = vis->registers[VIS_REG_PROMPT]; + vis->registers[VIS_REG_PROMPT] = tmp; + } } static void vis_mode_insert_enter(Vis *vis, Mode *old) { -- cgit v1.2.3