From 03c99e39f971a1993a7765dc130985560451bc77 Mon Sep 17 00:00:00 2001 From: 0x2CA <2478557459@qq.com> Date: Tue, 14 Jan 2025 11:07:47 +0800 Subject: [PATCH] vim: Fix vim delete to line (#23053) Closes #23024 Release Notes: - Fixed Vim `dxG` delete to line --------- Co-authored-by: Conrad Irwin --- crates/vim/src/normal/delete.rs | 37 ++++++++++++++++++- crates/vim/test_data/test_delete_to_line.json | 15 ++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 crates/vim/test_data/test_delete_to_line.json diff --git a/crates/vim/src/normal/delete.rs b/crates/vim/src/normal/delete.rs index 0b9d3b6fcc..036d366df3 100644 --- a/crates/vim/src/normal/delete.rs +++ b/crates/vim/src/normal/delete.rs @@ -50,7 +50,7 @@ impl Vim { { selection.end = next_line } - Motion::EndOfDocument {} => { + Motion::EndOfDocument {} if times.is_none() => { // Deleting until the end of the document includes the last line, including // soft-wrapped lines. selection.end = map.max_point() @@ -486,6 +486,41 @@ mod test { .assert_matches(); } + #[gpui::test] + async fn test_delete_to_line(cx: &mut gpui::TestAppContext) { + let mut cx = NeovimBackedTestContext::new(cx).await; + cx.simulate( + "d 3 shift-g", + indoc! {" + The quick + brownˇ fox + jumps over + the lazy"}, + ) + .await + .assert_matches(); + cx.simulate( + "d 3 shift-g", + indoc! {" + The quick + brown fox + jumps over + the lˇazy"}, + ) + .await + .assert_matches(); + cx.simulate( + "d 2 shift-g", + indoc! {" + The quick + brown fox + jumps over + ˇ"}, + ) + .await + .assert_matches(); + } + #[gpui::test] async fn test_delete_gg(cx: &mut gpui::TestAppContext) { let mut cx = NeovimBackedTestContext::new(cx).await; diff --git a/crates/vim/test_data/test_delete_to_line.json b/crates/vim/test_data/test_delete_to_line.json new file mode 100644 index 0000000000..eae919b039 --- /dev/null +++ b/crates/vim/test_data/test_delete_to_line.json @@ -0,0 +1,15 @@ +{"Put":{"state":"The quick\nbrownˇ fox\njumps over\nthe lazy"}} +{"Key":"d"} +{"Key":"3"} +{"Key":"shift-g"} +{"Get":{"state":"The quick\nthe lˇazy","mode":"Normal"}} +{"Put":{"state":"The quick\nbrown fox\njumps over\nthe lˇazy"}} +{"Key":"d"} +{"Key":"3"} +{"Key":"shift-g"} +{"Get":{"state":"The quick\nbrownˇ fox","mode":"Normal"}} +{"Put":{"state":"The quick\nbrown fox\njumps over\nˇ"}} +{"Key":"d"} +{"Key":"2"} +{"Key":"shift-g"} +{"Get":{"state":"ˇThe quick","mode":"Normal"}}