Introduce the concept of a SkinnyTextDocument that provides minimal interface to generate toc

This commit is contained in:
Matt Bierner
2018-06-04 10:41:03 -07:00
parent 8ea7f77c44
commit 7b69194f91
3 changed files with 14 additions and 7 deletions

View File

@@ -8,9 +8,10 @@ import { disposeAll } from '../util/dispose';
import { isMarkdownFile } from '../util/file';
import { Lazy, lazy } from '../util/lazy';
import MDDocumentSymbolProvider from './documentSymbolProvider';
import { SkinnyTextDocument } from '../tableOfContentsProvider';
export interface WorkspaceMarkdownDocumentProvider {
getAllMarkdownDocuments(): Thenable<vscode.TextDocument[]>;
getAllMarkdownDocuments(): Thenable<SkinnyTextDocument[]>;
readonly onDidChangeMarkdownDocument: vscode.Event<vscode.TextDocument>;
readonly onDidCreateMarkdownDocument: vscode.Event<vscode.TextDocument>;
@@ -121,7 +122,7 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
public async populateSymbolCache(): Promise<void> {
const markDownDocumentUris = await this._workspaceMarkdownDocumentProvider.getAllMarkdownDocuments();
for (const document of markDownDocumentUris) {
this._symbolCache.set(document.fileName, this.getSymbols(document));
this._symbolCache.set(document.uri.fsPath, this.getSymbols(document));
}
}
@@ -129,7 +130,7 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
disposeAll(this._disposables);
}
private getSymbols(document: vscode.TextDocument): Lazy<Thenable<vscode.SymbolInformation[]>> {
private getSymbols(document: SkinnyTextDocument): Lazy<Thenable<vscode.SymbolInformation[]>> {
return lazy(async () => {
return this._symbolProvider.provideDocumentSymbols(document);
});