diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 82945fc00b..ef2c459aad 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -6542,7 +6542,7 @@ impl Editor { { if selections .iter() - .find(|selection| selection.equals(&offset_range)) + .find(|selection| selection.range().overlaps(&offset_range)) .is_none() { next_selected_range = Some(offset_range); diff --git a/crates/vim/src/test.rs b/crates/vim/src/test.rs index 4fb87e70a0..3b4e2fed60 100644 --- a/crates/vim/src/test.rs +++ b/crates/vim/src/test.rs @@ -734,3 +734,27 @@ async fn test_paragraphs_dont_wrap(cx: &mut gpui::TestAppContext) { two"}) .await; } + +#[gpui::test] +async fn test_select_all_issue_2170(cx: &mut gpui::TestAppContext) { + let mut cx = VimTestContext::new(cx, true).await; + + cx.set_state( + indoc! {" + defmodule Test do + def test(a, ˇ[_, _] = b), do: IO.puts('hi') + end + "}, + Mode::Normal, + ); + cx.simulate_keystrokes(["g", "a"]); + // TODO: this would be better if it selected the [ not the space. + cx.assert_state( + indoc! {" + defmodule« ˇ»Test« ˇ»do + « ˇ»def« ˇ»test(a,« ˇ»[_,« ˇ»_]« ˇ»=« ˇ»b),« ˇ»do:« ˇ»IO.puts('hi') + end + "}, + Mode::Visual, + ); +}