Fix markdown document symbols not having full range of section

This commit is contained in:
Matt Bierner
2018-08-24 11:01:09 +02:00
parent c3c75a237b
commit 2c43eaebec
2 changed files with 28 additions and 19 deletions

View File

@@ -3,11 +3,10 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import { MarkdownEngine } from '../markdownEngine';
import { TableOfContentsProvider, TocEntry } from '../tableOfContentsProvider';
import { Token } from 'markdown-it';
import * as vscode from 'vscode';
import { MarkdownEngine } from '../markdownEngine';
import { TableOfContentsProvider } from '../tableOfContentsProvider';
const rangeLimit = 5000;
@@ -57,19 +56,6 @@ export default class MarkdownFoldingProvider implements vscode.FoldingRangeProvi
private async getHeaderFoldingRanges(document: vscode.TextDocument) {
const tocProvider = new TableOfContentsProvider(this.engine, document);
const toc = await tocProvider.getToc();
return toc.map((entry, startIndex) => {
const start = entry.line;
let end: number | undefined = undefined;
for (let i = startIndex + 1; i < toc.length; ++i) {
if (toc[i].level <= entry.level) {
end = toc[i].line - 1;
if (document.lineAt(end).isEmptyOrWhitespace && end >= start + 1) {
end = end - 1;
}
break;
}
}
return new vscode.FoldingRange(start, typeof end === 'number' ? end : document.lineCount - 1);
});
return toc.map((entry) => new vscode.FoldingRange(entry.line, entry.location.range.end.line));
}
}