Skip to content

Commit de090c8

Browse files
committed
Fix coverage of comment sections
Should extend to the next section. If a nested chunk extends beyond its encompassing section, this confuses the frontend
1 parent af7083f commit de090c8

7 files changed

+16
-28
lines changed

crates/ark/src/lsp/folding_range.rs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,9 @@ fn parse_ts_node(
9090
// Nested comment section handling
9191
let comment_line = get_line_text(document, start.row, None, None);
9292

93-
if let Err(err) = nested_processor(
94-
document,
95-
comment_stack,
96-
folding_ranges,
97-
start.row,
98-
&comment_line,
99-
) {
93+
if let Err(err) =
94+
nested_processor(comment_stack, folding_ranges, start.row, &comment_line)
95+
{
10096
lsp::log_error!("Can't process comment: {err:?}");
10197
};
10298
region_processor(folding_ranges, region_marker, start.row, &comment_line);
@@ -236,7 +232,6 @@ pub static RE_COMMENT_SECTION: LazyLock<Regex> =
236232
LazyLock::new(|| Regex::new(r"^\s*(#+)\s*(.*?)\s*[#=-]{4,}\s*$").unwrap());
237233

238234
fn nested_processor(
239-
document: &Document,
240235
comment_stack: &mut Vec<Vec<(usize, usize)>>,
241236
folding_ranges: &mut Vec<FoldingRange>,
242237
line_num: usize,
@@ -269,20 +264,14 @@ fn nested_processor(
269264
},
270265
Ordering::Equal => {
271266
let start_line = comment_stack.last_or_error()?.last_or_error()?.1;
272-
folding_ranges.push(comment_range(
273-
start_line,
274-
find_last_non_empty_line(document, start_line, line_num - 1),
275-
));
267+
folding_ranges.push(comment_range(start_line, line_num - 1));
276268
comment_stack.last_mut_or_error()?.pop();
277269
comment_stack.last_mut_or_error()?.push((level, line_num));
278270
break;
279271
},
280272
Ordering::Greater => {
281273
let start_line = comment_stack.last_or_error()?.last_or_error()?.1;
282-
folding_ranges.push(comment_range(
283-
start_line,
284-
find_last_non_empty_line(document, start_line, line_num - 1),
285-
));
274+
folding_ranges.push(comment_range(start_line, line_num - 1));
286275
comment_stack.last_mut_or_error()?.pop(); // Safe: the loop exits early if the stack becomes empty
287276
},
288277
}
@@ -496,7 +485,6 @@ h"
496485

497486
#[test]
498487
fn test_folding_section_comments() {
499-
// FIXME: First section doesn't span whole section
500488
insta::assert_debug_snapshot!(test_folding_range(
501489
"
502490
# Section ----

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_empty_sections.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# Empty section ----\n\n# Another empty sect
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 1,
9+
end_line: 2,
1010
end_character: None,
1111
kind: Some(
1212
Region,
@@ -16,7 +16,7 @@ expression: "test_folding_range(\"\n# Empty section ----\n\n# Another empty sect
1616
FoldingRange {
1717
start_line: 3,
1818
start_character: None,
19-
end_line: 3,
19+
end_line: 4,
2020
end_character: None,
2121
kind: Some(
2222
Region,

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_mixed.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# First section ----\nfunction() {\n # #reg
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 10,
9+
end_line: 11,
1010
end_character: None,
1111
kind: Some(
1212
Region,
@@ -38,7 +38,7 @@ expression: "test_folding_range(\"\n# First section ----\nfunction() {\n # #reg
3838
FoldingRange {
3939
start_line: 8,
4040
start_character: None,
41-
end_line: 10,
41+
end_line: 11,
4242
end_character: None,
4343
kind: Some(
4444
Region,

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_nested_section_comments.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# Level 1 ----\na\n\n## Level 2 ----\nb\n\n#
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 11,
9+
end_line: 12,
1010
end_character: None,
1111
kind: Some(
1212
Region,
@@ -16,7 +16,7 @@ expression: "test_folding_range(\"\n# Level 1 ----\na\n\n## Level 2 ----\nb\n\n#
1616
FoldingRange {
1717
start_line: 4,
1818
start_character: None,
19-
end_line: 8,
19+
end_line: 9,
2020
end_character: None,
2121
kind: Some(
2222
Region,
@@ -26,7 +26,7 @@ expression: "test_folding_range(\"\n# Level 1 ----\na\n\n## Level 2 ----\nb\n\n#
2626
FoldingRange {
2727
start_line: 7,
2828
start_character: None,
29-
end_line: 8,
29+
end_line: 9,
3030
end_character: None,
3131
kind: Some(
3232
Region,
@@ -36,7 +36,7 @@ expression: "test_folding_range(\"\n# Level 1 ----\na\n\n## Level 2 ----\nb\n\n#
3636
FoldingRange {
3737
start_line: 10,
3838
start_character: None,
39-
end_line: 11,
39+
end_line: 12,
4040
end_character: None,
4141
kind: Some(
4242
Region,

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_section_chunks_with_sections.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# Section ----\na\n\n#+ Cell\nb\n\n# Section
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 5,
9+
end_line: 6,
1010
end_character: None,
1111
kind: Some(
1212
Region,

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_section_comments.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# Section ----\na\n\nb\nc\n\n# Section ----\
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 5,
9+
end_line: 6,
1010
end_character: None,
1111
kind: Some(
1212
Region,

crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_section_comments_basic.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ expression: "test_folding_range(\"\n# First section ----\na\nb\n\n# Second secti
66
FoldingRange {
77
start_line: 1,
88
start_character: None,
9-
end_line: 3,
9+
end_line: 4,
1010
end_character: None,
1111
kind: Some(
1212
Region,

0 commit comments

Comments
 (0)