aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraic2022-10-12 13:34:35 +0000
committerGitHub2022-10-12 13:34:35 +0000
commit68909dcef46c7b68f1a92cdc7fd04eb89549b6fb (patch)
tree5c7ee95e3f7f56006d7435907823d40cb89bbbd6
parentc54a0363bb59300290efa8ba86e291d94f938673 (diff)
Fix append cursor location when selection anchor is at end of document (#4147)
-rw-r--r--helix-term/src/commands.rs2
-rw-r--r--helix-term/tests/test/movement.rs21
2 files changed, 22 insertions, 1 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index ad84c85c..474006e3 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -2222,7 +2222,7 @@ fn append_mode(cx: &mut Context) {
.iter()
.last()
.expect("selection should always have at least one range");
- if !last_range.is_empty() && last_range.head == end {
+ if !last_range.is_empty() && last_range.to() == end {
let transaction = Transaction::change(
doc.text(),
[(end, end, Some(doc.line_ending.as_str().into()))].into_iter(),
diff --git a/helix-term/tests/test/movement.rs b/helix-term/tests/test/movement.rs
index e5abb0b0..45aae39e 100644
--- a/helix-term/tests/test/movement.rs
+++ b/helix-term/tests/test/movement.rs
@@ -87,6 +87,27 @@ async fn cursor_position_newly_opened_file() -> anyhow::Result<()> {
}
#[tokio::test]
+async fn cursor_position_append_eof() -> anyhow::Result<()> {
+ // Selection is fowards
+ test((
+ "#[foo|]#",
+ "abar<esc>",
+ helpers::platform_line("#[foobar|]#\n").as_ref(),
+ ))
+ .await?;
+
+ // Selection is backwards
+ test((
+ "#[|foo]#",
+ "abar<esc>",
+ helpers::platform_line("#[foobar|]#\n").as_ref(),
+ ))
+ .await?;
+
+ Ok(())
+}
+
+#[tokio::test]
async fn select_mode_tree_sitter_next_function_is_union_of_objects() -> anyhow::Result<()> {
test_with_config(
Args {