470
471
public getLinesIndentGuides(
473
>
endLineNumber: number
474
>
): number[] {
475
>
this.assertNotDisposed();
476
>
const lineCount = this.textModel.getLineCount();
477
>
478
>
if (startLineNumber < 1 || startLineNumber > lineCount) {
479
throw new Error('Illegal value for startLineNumber');
480
}
482
throw new Error('Illegal value for endLineNumber');
483
}
485
>
const options = this.textModel.getOptions();
486
>
const foldingRules = this.getLanguageConfiguration(
487
>
this.textModel.getLanguageId()
488
>
).foldingRules;
489
>
const offSide = Boolean(foldingRules && foldingRules.offSide);
490
>
491
>
const result: number[] = new Array<number>(
492
>
endLineNumber - startLineNumber + 1
493
>
);
494
>
495
>
let aboveContentLineIndex =
496
>
-2; /* -2 is a marker for not having computed it */
497
>
let aboveContentLineIndent = -1;
498
>
499
>
let belowContentLineIndex =
500
>
-2; /* -2 is a marker for not having computed it */
501
>
let belowContentLineIndent = -1;
502
>
503
>
for (
504
>
let lineNumber = startLineNumber;
505
>
lineNumber <= endLineNumber;
506
>
lineNumber++
507
>
) {
508
>
const resultIndex = lineNumber - startLineNumber;
509
>
510
>
const currentIndent = this._computeIndentLevel(lineNumber - 1);
511
>
if (currentIndent >= 0) {
512
>
// This line has content (besides whitespace)
513
>
// Use the line's indent
514
>
aboveContentLineIndex = lineNumber - 1;
515
>
aboveContentLineIndent = currentIndent;
516
>
result[resultIndex] = Math.ceil(currentIndent / options.indentSize);
517
>
continue;
518
>
}
519
520
if (aboveContentLineIndex === -2) {