mirror of https://github.com/helix-editor/helix
add node boundary movement
parent
1d702ea191
commit
93acb53812
@ -0,0 +1,199 @@
|
|||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn test_move_parent_node_end() -> anyhow::Result<()> {
|
||||||
|
let tests = vec![
|
||||||
|
// single cursor stays single cursor, first goes to end of current
|
||||||
|
// node, then parent
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {r##"
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
"yes"
|
||||||
|
} else {
|
||||||
|
"no#["|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"##}),
|
||||||
|
"<A-e>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
\"no\"#[\n|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
\"no\"#[\n|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
"<A-e>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
\"no\"
|
||||||
|
}#[\n|]#
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
// select mode extends
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {r##"
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
"yes"
|
||||||
|
} else {
|
||||||
|
#["no"|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"##}),
|
||||||
|
"v<A-e><A-e>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
#[\"no\"
|
||||||
|
}\n|]#
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
for test in tests {
|
||||||
|
test_with_config(AppBuilder::new().with_file("foo.rs", None), test).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn test_move_parent_node_start() -> anyhow::Result<()> {
|
||||||
|
let tests = vec![
|
||||||
|
// single cursor stays single cursor, first goes to end of current
|
||||||
|
// node, then parent
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {r##"
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
"yes"
|
||||||
|
} else {
|
||||||
|
"no#["|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"##}),
|
||||||
|
"<A-b>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
#[\"|]#no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else {
|
||||||
|
\"no\"#[\n|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
"<A-b>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else #[{|]#
|
||||||
|
\"no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else #[{|]#
|
||||||
|
\"no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
"<A-b>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} #[e|]#lse {
|
||||||
|
\"no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
// select mode extends
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {r##"
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
"yes"
|
||||||
|
} else {
|
||||||
|
#["no"|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"##}),
|
||||||
|
"v<A-b><A-b>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} else #[|{
|
||||||
|
]#\"no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
helpers::platform_line(indoc! {r##"
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
"yes"
|
||||||
|
} else {
|
||||||
|
#["no"|]#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"##}),
|
||||||
|
"v<A-b><A-b><A-b>",
|
||||||
|
helpers::platform_line(indoc! {"\
|
||||||
|
fn foo() {
|
||||||
|
let result = if true {
|
||||||
|
\"yes\"
|
||||||
|
} #[|else {
|
||||||
|
]#\"no\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"}),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
for test in tests {
|
||||||
|
test_with_config(AppBuilder::new().with_file("foo.rs", None), test).await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in New Issue