Skip to content

Commit f474c28

Browse files
authored
Fix code foldering with nested ifs. (#7793)
1 parent 3967429 commit f474c28

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Extension/src/LanguageServer/Providers/foldingRangeProvider.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,18 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider {
2828
}
2929
const result: vscode.FoldingRange[] = [];
3030
ranges.ranges.forEach((r: CppFoldingRange, index: number, array: CppFoldingRange[]) => {
31+
let nextNonNestedIndex: number = index + 1; // Skip over nested if's.
32+
for (; nextNonNestedIndex < array.length; ++nextNonNestedIndex) {
33+
if (array[nextNonNestedIndex].range.start.line >= r.range.end.line) {
34+
break;
35+
}
36+
}
3137
const foldingRange: vscode.FoldingRange = {
3238
start: r.range.start.line,
3339
// Move the end range up one if it overlaps with the next start range, because
3440
// VS Code doesn't support column-based folding: https://github.com/microsoft/vscode/issues/50840
35-
end: r.range.end.line - (index + 1 >= array.length ? 0 :
36-
(array[index + 1].range.start.line !== r.range.end.line ? 0 : 1))
41+
end: r.range.end.line - (nextNonNestedIndex >= array.length ? 0 :
42+
(array[nextNonNestedIndex].range.start.line !== r.range.end.line ? 0 : 1))
3743
};
3844
switch (r.kind) {
3945
case FoldingRangeKind.Comment:

0 commit comments

Comments
 (0)