changes from review

This commit is contained in:
aiday-mar
2022-08-26 15:25:39 +02:00
parent dbbd79d333
commit 6887c8c5fb
3 changed files with 11 additions and 28 deletions
@@ -236,10 +236,6 @@ export class FoldingModel {
this._decorationProvider.removeDecorations(this._editorDecorationIds);
}
getRegions() {
return this._regions;
}
getAllRegionsAtLine(lineNumber: number, filter?: (r: FoldingRegion, level: number) => boolean): FoldingRegion[] {
const result: FoldingRegion[] = [];
if (this._regions) {
@@ -100,14 +100,6 @@ export class FoldingRegions {
}
}
public getStartIndexes(): Uint32Array {
return this._startIndexes;
}
public getEndIndexes(): Uint32Array {
return this._endIndexes;
}
public get length(): number {
return this._startIndexes.length;
}
@@ -99,7 +99,10 @@ export class StickyLineCandidateProvider extends Disposable {
} else {
const foldingController = FoldingController.get(this._editor);
const foldingModel = await foldingController?.getFoldingModel();
if (foldingModel) {
if (token.isCancellationRequested) {
return;
}
if (foldingModel && foldingModel.regions.length !== 0) {
this._outlineModel = StickyOutlineElement.fromFoldingModel(foldingModel);
} else {
this._outlineModel = new StickyOutlineElement(
@@ -205,17 +208,9 @@ class StickyOutlineElement {
}
public static fromFoldingModel(foldingModel: FoldingModel): StickyOutlineElement {
const regions = foldingModel.getRegions();
const startIndexes = regions.getStartIndexes();
const endIndexes = regions.getEndIndexes();
if (startIndexes.length === 0) {
return new StickyOutlineElement(
new StickyRange(-1, -1),
[],
undefined
);
}
let range = undefined;
const regions = foldingModel.regions;
const length = regions.length;
let range: StickyRange | undefined;
const stackOfParents: StickyRange[] = [];
const stickyOutlineElement = new StickyOutlineElement(
@@ -225,9 +220,9 @@ class StickyOutlineElement {
);
let parentStickyOutlineElement = stickyOutlineElement;
for (let i = 0; i < startIndexes.length; i++) {
range = new StickyRange(startIndexes[i], endIndexes[i]);
while (stackOfParents.length !== 0 && (range.startLineNumber < (stackOfParents[stackOfParents.length - 1] as StickyRange).startLineNumber || range.endLineNumber > (stackOfParents[stackOfParents.length - 1] as StickyRange).endLineNumber)) {
for (let i = 0; i < length; i++) {
range = new StickyRange(regions.getStartLineNumber(i), regions.getEndLineNumber(i));
while (stackOfParents.length !== 0 && (range.startLineNumber < stackOfParents[stackOfParents.length - 1].startLineNumber || range.endLineNumber > stackOfParents[stackOfParents.length - 1].endLineNumber)) {
stackOfParents.pop();
if (parentStickyOutlineElement.parent !== undefined) {
parentStickyOutlineElement = parentStickyOutlineElement.parent;
@@ -253,7 +248,7 @@ class StickyOutlineElement {
/**
* Must be sorted by start line number
*/
public children: StickyOutlineElement[],
public readonly children: StickyOutlineElement[],
/**
* Parent sticky outline element
*/