Skip to content

Commit 872c471

Browse files
committed
Fix chunk support
1 parent ac1e17d commit 872c471

4 files changed

+64
-8
lines changed

crates/ark/src/lsp/folding_range.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ fn cell_processor(
362362
line_idx: usize,
363363
line_text: &str,
364364
) {
365-
let cell_pattern: Regex = Regex::new(r"^#\s*(%%|\+)(.*)").unwrap();
365+
let cell_pattern: Regex = Regex::new(r"^#+( %%|\+) (.*)").unwrap();
366366

367367
if !cell_pattern.is_match(line_text) {
368368
} else {
@@ -468,6 +468,7 @@ mod tests {
468468

469469
#[test]
470470
fn test_folding_section_comments_basic() {
471+
// Note the chunks are nested in comment sections
471472
insta::assert_debug_snapshot!(test_folding_range(
472473
"
473474
# First section ----
@@ -476,7 +477,16 @@ b
476477
477478
# Second section ----
478479
c
479-
d"
480+
d
481+
482+
# %% Chunk section (jupyter-style)
483+
e
484+
f
485+
486+
#+ Chunk section (knitr-style)
487+
g
488+
# + This is not a chunk
489+
h"
480490
));
481491
}
482492

@@ -497,7 +507,13 @@ c
497507
d
498508
499509
# Back to Level 1 ----
500-
e"
510+
e
511+
512+
# %% Chunk at Level 1
513+
f
514+
515+
## %% Another chunk at Level 1
516+
g"
501517
));
502518
}
503519

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
source: crates/ark/src/lsp/folding_range.rs
3-
expression: "test_folding_range(\"\n# Empty section ----\n\n# Another empty section ----\n\n# Section with content ----\nThis one has content\")"
3+
expression: "test_folding_range(\"\n# Empty section ----\n\n# Another empty section ----\n\n# Section with content ----\na\")"
44
---
55
[
66
FoldingRange {

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
source: crates/ark/src/lsp/folding_range.rs
3-
expression: "test_folding_range(\"\n# Level 1 ----\ncode at level 1\n\n## Level 2 ----\ncode at level 2\n\n### Level 3 ----\ncode at level 3\n\n## Another Level 2 ----\nback to level 2\n\n# Back to Level 1 ----\nback to level 1\")"
3+
expression: "test_folding_range(\"\n# Level 1 ----\na\n\n## Level 2 ----\nb\n\n### Level 3 ----\nc\n\n## Another Level 2 ----\nd\n\n# Back to Level 1 ----\ne\n\n# %% Chunk at Level 1\nf\n\n## %% Another chunk at Level 1\ng\")"
44
---
55
[
66
FoldingRange {
@@ -46,7 +46,27 @@ expression: "test_folding_range(\"\n# Level 1 ----\ncode at level 1\n\n## Level
4646
FoldingRange {
4747
start_line: 13,
4848
start_character: None,
49-
end_line: 13,
49+
end_line: 19,
50+
end_character: None,
51+
kind: Some(
52+
Region,
53+
),
54+
collapsed_text: None,
55+
},
56+
FoldingRange {
57+
start_line: 16,
58+
start_character: None,
59+
end_line: 18,
60+
end_character: None,
61+
kind: Some(
62+
Region,
63+
),
64+
collapsed_text: None,
65+
},
66+
FoldingRange {
67+
start_line: 19,
68+
start_character: None,
69+
end_line: 20,
5070
end_character: None,
5171
kind: Some(
5272
Region,

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
source: crates/ark/src/lsp/folding_range.rs
3-
expression: "test_folding_range(\"\n# First section ----\nsome code here\nmore code\n\n# Second section ----\nother code\nfinal line\")"
3+
expression: "test_folding_range(\"\n# First section ----\na\nb\n\n# Second section ----\nc\nd\n\n# %% Chunk section (jupyter-style)\ne\nf\n\n#+ Chunk section (knitr-style)\ng\n# + This is not a chunk\nh\")"
44
---
55
[
66
FoldingRange {
@@ -16,7 +16,27 @@ expression: "test_folding_range(\"\n# First section ----\nsome code here\nmore c
1616
FoldingRange {
1717
start_line: 5,
1818
start_character: None,
19-
end_line: 6,
19+
end_line: 15,
20+
end_character: None,
21+
kind: Some(
22+
Region,
23+
),
24+
collapsed_text: None,
25+
},
26+
FoldingRange {
27+
start_line: 9,
28+
start_character: None,
29+
end_line: 12,
30+
end_character: None,
31+
kind: Some(
32+
Region,
33+
),
34+
collapsed_text: None,
35+
},
36+
FoldingRange {
37+
start_line: 13,
38+
start_character: None,
39+
end_line: 16,
2040
end_character: None,
2141
kind: Some(
2242
Region,

0 commit comments

Comments
 (0)