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.rs | 68 |
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(()) +} |