aboutsummaryrefslogtreecommitdiff
path: root/vis-modes.c
diff options
context:
space:
mode:
Diffstat (limited to 'vis-modes.c')
-rw-r--r--vis-modes.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/vis-modes.c b/vis-modes.c
index eb4bfb0..fa69d24 100644
--- a/vis-modes.c
+++ b/vis-modes.c
@@ -114,11 +114,15 @@ static void vis_mode_visual_leave(Vis *vis, Mode *new) {
}
static void vis_mode_insert_enter(Vis *vis, Mode *old) {
+ if (vis->win->parent)
+ return;
+ if (!vis->action.op) {
+ action_reset(&vis->action_prev);
+ vis->action_prev.op = &vis_operators[VIS_OP_INSERT];
+ }
if (!vis->macro_operator) {
macro_operator_record(vis);
- action_reset(&vis->action_prev);
vis->action_prev.macro = vis->macro_operator;
- vis->action_prev.op = &vis_operators[VIS_OP_INSERT];
}
}
@@ -138,11 +142,15 @@ static void vis_mode_insert_input(Vis *vis, const char *str, size_t len) {
}
static void vis_mode_replace_enter(Vis *vis, Mode *old) {
+ if (vis->win->parent)
+ return;
+ if (!vis->action.op) {
+ action_reset(&vis->action_prev);
+ vis->action_prev.op = &vis_operators[VIS_OP_REPLACE];
+ }
if (!vis->macro_operator) {
macro_operator_record(vis);
- action_reset(&vis->action_prev);
vis->action_prev.macro = vis->macro_operator;
- vis->action_prev.op = &vis_operators[VIS_OP_REPLACE];
}
}