aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vis-core.h1
-rw-r--r--vis-modes.c26
-rw-r--r--vis.c2
3 files changed, 12 insertions, 17 deletions
diff --git a/vis-core.h b/vis-core.h
index 3e7e1c4..debd994 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -160,7 +160,6 @@ struct Vis {
Win *message_window; /* special window to display multi line messages */
Register registers[VIS_REG_INVALID]; /* registers used for text manipulations yank/put etc. and macros */
Macro *recording, *last_recording; /* currently (if non NULL) and least recently recorded macro */
- bool repeat_input; /* true while processing count for insertion/replacement */
const Macro *replaying; /* macro currently being replayed */
Macro *macro_operator; /* special macro used to repeat certain operators */
Mode *mode_before_prompt; /* user mode which was active before entering prompt */
diff --git a/vis-modes.c b/vis-modes.c
index 991b21b..84f2e0b 100644
--- a/vis-modes.c
+++ b/vis-modes.c
@@ -139,21 +139,17 @@ static void vis_mode_normal_enter(Vis *vis, Mode *old) {
if (old != mode_get(vis, VIS_MODE_INSERT) && old != mode_get(vis, VIS_MODE_REPLACE))
return;
macro_operator_stop(vis);
- if (vis->action_prev.op == &vis_operators[VIS_OP_MODESWITCH] && !vis->repeat_input) {
- vis->repeat_input = true;
- if (vis->action_prev.count > 1) {
- /* temporarily disable motion, in something like `5atext`
- * we should only move the cursor once then insert the text */
- const Movement *motion = vis->action_prev.movement;
- if (motion)
- vis->action_prev.movement = &vis_motions[VIS_MOVE_NOP];
- /* we already inserted the text once, so temporarily decrease count */
- vis->action_prev.count--;
- vis_repeat(vis);
- vis->action_prev.count++;
- vis->action_prev.movement = motion;
- }
- vis->repeat_input = false;
+ if (vis->action_prev.op == &vis_operators[VIS_OP_MODESWITCH] && vis->action_prev.count > 1) {
+ /* temporarily disable motion, in something like `5atext`
+ * we should only move the cursor once then insert the text */
+ const Movement *motion = vis->action_prev.movement;
+ if (motion)
+ vis->action_prev.movement = &vis_motions[VIS_MOVE_NOP];
+ /* we already inserted the text once, so temporarily decrease count */
+ vis->action_prev.count--;
+ vis_repeat(vis);
+ vis->action_prev.count++;
+ vis->action_prev.movement = motion;
}
/* make sure we can recover the current state after an editing operation */
vis_file_snapshot(vis, vis->win->file);
diff --git a/vis.c b/vis.c
index 9f7d22c..abb5e5d 100644
--- a/vis.c
+++ b/vis.c
@@ -1662,7 +1662,7 @@ bool vis_cmd(Vis *vis, const char *cmdline) {
}
void vis_file_snapshot(Vis *vis, File *file) {
- if (!vis->replaying && !vis->repeat_input)
+ if (!vis->replaying)
text_snapshot(file->text);
}