mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 10:08:49 +01:00
committed by
Matt Bierner
parent
cd7c7c5fa2
commit
d540729e40
@@ -49,8 +49,8 @@ export default class MarkdownFoldingProvider implements vscode.FoldingRangeProvi
|
||||
_: vscode.FoldingContext,
|
||||
_token: vscode.CancellationToken
|
||||
): Promise<vscode.FoldingRange[]> {
|
||||
const [regions, sections] = await Promise.all([this.getRegions(document), this.getHeaderFoldingRanges(document)]);
|
||||
return [...regions, ...sections].slice(0, rangeLimit);
|
||||
const [regions, sections, lists] = await Promise.all([this.getRegions(document), this.getHeaderFoldingRanges(document), this.getListFoldingRanges(document)]);
|
||||
return [...regions, ...sections, ...lists].slice(0, rangeLimit);
|
||||
}
|
||||
|
||||
private async getHeaderFoldingRanges(document: vscode.TextDocument) {
|
||||
@@ -64,4 +64,18 @@ export default class MarkdownFoldingProvider implements vscode.FoldingRangeProvi
|
||||
return new vscode.FoldingRange(entry.line, endLine);
|
||||
});
|
||||
}
|
||||
|
||||
private async getListFoldingRanges(document: vscode.TextDocument): Promise<vscode.FoldingRange[]> {
|
||||
|
||||
const isMultiLineListOpen = (token: Token) =>
|
||||
token.type === 'list_item_open' && token.map[1] > token.map[0];
|
||||
|
||||
const tokens = await this.engine.parse(document.uri, document.getText());
|
||||
const multiLineListItems = tokens.filter(isMultiLineListOpen);
|
||||
return multiLineListItems.map(listItem => {
|
||||
const start = listItem.map[0];
|
||||
const end = listItem.map[1] - 1;
|
||||
return new vscode.FoldingRange(start, end);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user