Skip to content

Commit 2bee07a

Browse files
committed
Use outer loop to goDown in special case
1 parent cef5c5a commit 2bee07a

2 files changed

Lines changed: 16 additions & 20 deletions

File tree

src/vs/editor/common/model/textModel.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2675,19 +2675,13 @@ export class TextModel extends Disposable implements model.ITextModel {
26752675
if (distance === 0) {
26762676
// This is the initial line number
26772677
if (currentIndent >= 0 && this._computeIndentLevel(upLineNumber) > currentIndent) {
2678-
// This is a new scope, we have special handling here, since we want the
2679-
// child scope's indent to be active, not the parent scope's
2678+
// This is the beginning of a scope, we have special handling here, since we want the
2679+
// child scope indent to be active, not the parent scope
2680+
goUp = false;
26802681
startLineNumber = upLineNumber + 1;
26812682
endLineNumber = maxLineNumber;
2682-
for (let offsetDown = startLineNumber; offsetDown < maxLineNumber; offsetDown++) {
2683-
if (this._computeIndentLevel(offsetDown) === currentIndent) {
2684-
endLineNumber = offsetDown;
2685-
break;
2686-
}
2687-
}
2688-
return { startLineNumber, endLineNumber, indent: upLineIndentLevel + 1 };
2689-
}
2690-
if (currentIndent >= 0 && this._computeIndentLevel(upLineNumber - 2) > currentIndent) {
2683+
indent = upLineIndentLevel + 1;
2684+
} else if (currentIndent >= 0 && this._computeIndentLevel(upLineNumber - 2) > currentIndent) {
26912685
// This is the end of a scope. Like above, but we walk backwards to find the parent scope start
26922686
endLineNumber = upLineNumber - 1;
26932687
startLineNumber = minLineNumber;
@@ -2698,10 +2692,12 @@ export class TextModel extends Disposable implements model.ITextModel {
26982692
}
26992693
}
27002694
return { startLineNumber, endLineNumber, indent: upLineIndentLevel + 1 };
2695+
} else {
2696+
startLineNumber = upLineNumber;
2697+
endLineNumber = downLineNumber;
2698+
indent = upLineIndentLevel;
27012699
}
2702-
startLineNumber = upLineNumber;
2703-
endLineNumber = downLineNumber;
2704-
indent = upLineIndentLevel;
2700+
27052701
if (indent === 0) {
27062702
// No need to continue
27072703
return { startLineNumber, endLineNumber, indent };

src/vs/editor/test/common/model/textModelWithTokens.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,8 @@ suite('TextModel.getLineIndentGuide', () => {
612612
test('getLineIndentGuide three levels', () => {
613613
assertIndentGuides([
614614
[0, 2, 4, 1, 'A'],
615-
[1, 3, 5, 2, ' A'], // TODO 5 => 4
616-
[2, 4, 5, 3, ' A'], // TODO 5 => 4
615+
[1, 3, 4, 2, ' A'],
616+
[2, 4, 4, 3, ' A'],
617617
[3, 4, 4, 3, ' A'],
618618
[0, 2, 4, 1, 'A'], // TODO => too big of a difference with the line above?
619619
], 2);
@@ -717,9 +717,9 @@ suite('TextModel.getLineIndentGuide', () => {
717717
test('issue #8952 - Indentation guide lines going through text on .yml file', () => {
718718
assertIndentGuides([
719719
[0, 2, 5, 1, 'properties:'],
720-
[1, 3, 6, 2, ' emailAddress:'], // TODO 6 => 5
720+
[1, 3, 5, 2, ' emailAddress:'],
721721
[2, 3, 5, 2, ' - bla'],
722-
[2, 5, 6, 3, ' - length:'], // TODO 6 => 5
722+
[2, 5, 5, 3, ' - length:'],
723723
[3, 5, 5, 3, ' max: 255'],
724724
[0, 2, 5, 1, 'getters:']
725725
], 4);
@@ -731,7 +731,7 @@ suite('TextModel.getLineIndentGuide', () => {
731731
[1, 3, 6, 2, '\tswitch (base) {'],
732732
[2, 4, 4, 3, '\t\tcase 1:'],
733733
[3, 4, 4, 3, '\t\t\treturn 1;'],
734-
[2, 6, 8, 3, '\t\tcase 2:'], // TODO 8 => 6 or 7
734+
[2, 6, 6, 3, '\t\tcase 2:'],
735735
[3, 6, 6, 3, '\t\t\treturn 2;'],
736736
[1, 3, 6, 2, '\t}'],
737737
[0, 2, 7, 1, '}']
@@ -740,7 +740,7 @@ suite('TextModel.getLineIndentGuide', () => {
740740

741741
test('issue #12398 - Problem in indent guidelines', () => {
742742
assertIndentGuides([
743-
[2, 2, 3, 3, '\t\t.bla'],
743+
[2, 2, 2, 3, '\t\t.bla'],
744744
[3, 2, 2, 3, '\t\t\tlabel(for)'],
745745
[0, 1, 2, 1, 'include script']
746746
], 4);

0 commit comments

Comments
 (0)