Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/tests/test/commands/insert.rs')
-rw-r--r--helix-term/tests/test/commands/insert.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/helix-term/tests/test/commands/insert.rs b/helix-term/tests/test/commands/insert.rs
index 5450cc4c..ac2d179a 100644
--- a/helix-term/tests/test/commands/insert.rs
+++ b/helix-term/tests/test/commands/insert.rs
@@ -51,3 +51,71 @@ async fn insert_newline_trim_trailing_whitespace() -> anyhow::Result<()> {
Ok(())
}
+
+#[tokio::test(flavor = "multi_thread")]
+async fn insert_newline_continue_line_comment() -> anyhow::Result<()> {
+ // `insert_newline` continues a single line comment
+ test((
+ indoc! {"\
+ // Hello world!#[|
+ ]#
+ "},
+ ":lang rust<ret>i<ret>",
+ indoc! {"\
+ // Hello world!
+ // #[|
+ ]#
+ "},
+ ))
+ .await?;
+
+ // The comment is not continued if the cursor is before the comment token. (Note that we
+ // are entering insert-mode with `I`.)
+ test((
+ indoc! {"\
+ // Hello world!#[|
+ ]#
+ "},
+ ":lang rust<ret>I<ret>",
+ indoc! {"\
+ \n#[/|]#/ Hello world!
+ "},
+ ))
+ .await?;
+
+ // `insert_newline` again clears the whitespace on the first continued comment and continues
+ // the comment again.
+ test((
+ indoc! {"\
+ // Hello world!
+ // #[|
+ ]#
+ "},
+ ":lang rust<ret>i<ret>",
+ indoc! {"\
+ // Hello world!
+ //
+ // #[|
+ ]#
+ "},
+ ))
+ .await?;
+
+ // Line comment continuation and trailing whitespace is also trimmed when using
+ // `insert_newline` in the middle of a comment.
+ test((
+ indoc! {"\
+ //·hello····#[|·]#····world
+ "}
+ .replace('·', " "),
+ ":lang rust<ret>i<ret>",
+ indoc! {"\
+ //·hello
+ //·#[|·]#····world
+ "}
+ .replace('·', " "),
+ ))
+ .await?;
+
+ Ok(())
+}