Change summary
crates/vim/src/test.rs | 19 +++++++++++++++++++
crates/vim/src/vim.rs | 4 ++++
crates/vim/test_data/test_clear_counts.json | 7 +++++++
3 files changed, 30 insertions(+)
Detailed changes
@@ -574,3 +574,22 @@ async fn test_folds(cx: &mut gpui::TestAppContext) {
"})
.await;
}
+
+#[gpui::test]
+async fn test_clear_counts(cx: &mut gpui::TestAppContext) {
+ let mut cx = NeovimBackedTestContext::new(cx).await;
+
+ cx.set_shared_state(indoc! {"
+ The quick brown
+ fox juˇmps over
+ the lazy dog"})
+ .await;
+
+ cx.simulate_shared_keystrokes(["4", "escape", "3", "d", "l"])
+ .await;
+ cx.set_shared_state(indoc! {"
+ The quick brown
+ fox juˇ over
+ the lazy dog"})
+ .await;
+}
@@ -308,6 +308,9 @@ impl Vim {
state.mode = mode;
state.operator_stack.clear();
});
+ if mode != Mode::Insert {
+ self.take_count();
+ }
cx.emit_global(VimEvent::ModeChanged { mode });
@@ -412,6 +415,7 @@ impl Vim {
popped_operator
}
fn clear_operator(&mut self, cx: &mut WindowContext) {
+ self.take_count();
self.update_state(|state| state.operator_stack.clear());
self.sync_vim_settings(cx);
}
@@ -0,0 +1,7 @@
+{"Put":{"state":"The quick brown\nfox juˇmps over\nthe lazy dog"}}
+{"Key":"4"}
+{"Key":"escape"}
+{"Key":"3"}
+{"Key":"d"}
+{"Key":"l"}
+{"Put":{"state":"The quick brown\nfox juˇ over\nthe lazy dog"}}