Skip to content

Commit aca9e01

Browse files
author
aiday-mar
committed
Using endLineNumber not startLineNumber, and implementing a custom comparator
1 parent f8b2fd8 commit aca9e01

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,14 @@ export class StickyLineCandidateProvider extends Disposable {
188188

189189
class StickyOutlineElement {
190190

191+
private static comparator(range1: StickyRange, range2: StickyRange): number {
192+
if (range1.startLineNumber !== range2.startLineNumber) {
193+
return range1.startLineNumber - range2.startLineNumber;
194+
} else {
195+
return range2.endLineNumber - range1.endLineNumber;
196+
}
197+
}
198+
191199
public static fromOutlineElement(outlineElement: OutlineElement, previousStartLine: number): StickyOutlineElement {
192200
const children: StickyOutlineElement[] = [];
193201
for (const child of outlineElement.children.values()) {
@@ -201,15 +209,7 @@ class StickyOutlineElement {
201209
}
202210
}
203211
}
204-
children.sort((child1, child2) => {
205-
if (!child1.range || !child2.range) {
206-
return 1;
207-
} else if (child1.range.startLineNumber !== child2.range.startLineNumber) {
208-
return child1.range.startLineNumber - child2.range.startLineNumber;
209-
} else {
210-
return child2.range.endLineNumber - child1.range.endLineNumber;
211-
}
212-
});
212+
children.sort((child1, child2) => this.comparator(child1.range!, child2.range!));
213213
const range = new StickyRange(outlineElement.symbol.selectionRange.startLineNumber, outlineElement.symbol.range.endLineNumber);
214214
return new StickyOutlineElement(range, children, undefined);
215215
}
@@ -243,11 +243,9 @@ class StickyOutlineElement {
243243
}
244244
const stickyChildren: StickyOutlineElement[] = [];
245245
const outlineElementsArray = Array.from(outlineElements.values()).sort((element1, element2) => {
246-
if (element1.symbol.selectionRange.startLineNumber !== element2.symbol.selectionRange.startLineNumber) {
247-
return element1.symbol.selectionRange.startLineNumber - element2.symbol.selectionRange.startLineNumber;
248-
} else {
249-
return element2.symbol.range.startLineNumber - element1.symbol.range.startLineNumber;
250-
}
246+
const range1: StickyRange = new StickyRange(element1.symbol.range.startLineNumber, element1.symbol.range.endLineNumber);
247+
const range2: StickyRange = new StickyRange(element2.symbol.range.startLineNumber, element2.symbol.range.endLineNumber);
248+
return this.comparator(range1, range2);
251249
});
252250
for (const outlineElement of outlineElementsArray) {
253251
stickyChildren.push(StickyOutlineElement.fromOutlineElement(outlineElement, outlineElement.symbol.selectionRange.startLineNumber));

0 commit comments

Comments
 (0)