@@ -11,17 +11,17 @@ import MDDocumentSymbolProvider from './documentSymbolProvider';
1111import { SkinnyTextDocument } from '../tableOfContentsProvider' ;
1212
1313export interface WorkspaceMarkdownDocumentProvider {
14- getAllMarkdownDocuments ( ) : Thenable < SkinnyTextDocument [ ] > ;
14+ getAllMarkdownDocuments ( ) : Thenable < Iterable < SkinnyTextDocument > > ;
1515
16- readonly onDidChangeMarkdownDocument : vscode . Event < vscode . TextDocument > ;
17- readonly onDidCreateMarkdownDocument : vscode . Event < vscode . TextDocument > ;
16+ readonly onDidChangeMarkdownDocument : vscode . Event < SkinnyTextDocument > ;
17+ readonly onDidCreateMarkdownDocument : vscode . Event < SkinnyTextDocument > ;
1818 readonly onDidDeleteMarkdownDocument : vscode . Event < vscode . Uri > ;
1919}
2020
2121class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocumentProvider {
2222
23- private readonly _onDidChangeMarkdownDocumentEmitter = new vscode . EventEmitter < vscode . TextDocument > ( ) ;
24- private readonly _onDidCreateMarkdownDocumentEmitter = new vscode . EventEmitter < vscode . TextDocument > ( ) ;
23+ private readonly _onDidChangeMarkdownDocumentEmitter = new vscode . EventEmitter < SkinnyTextDocument > ( ) ;
24+ private readonly _onDidCreateMarkdownDocumentEmitter = new vscode . EventEmitter < SkinnyTextDocument > ( ) ;
2525 private readonly _onDidDeleteMarkdownDocumentEmitter = new vscode . EventEmitter < vscode . Uri > ( ) ;
2626
2727 private _watcher : vscode . FileSystemWatcher | undefined ;
@@ -40,9 +40,8 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
4040
4141 async getAllMarkdownDocuments ( ) {
4242 const resources = await vscode . workspace . findFiles ( '**/*.md' , '**/node_modules/**' ) ;
43- const documents = await Promise . all (
44- resources . map ( resource => vscode . workspace . openTextDocument ( resource ) . then ( x => x , ( ) => undefined ) ) ) ;
45- return documents . filter ( doc => doc && isMarkdownFile ( doc ) ) as vscode . TextDocument [ ] ;
43+ const docs = await Promise . all ( resources . map ( doc => this . getMarkdownDocument ( doc ) ) ) ;
44+ return docs . filter ( doc => ! ! doc ) as SkinnyTextDocument [ ] ;
4645 }
4746
4847 public get onDidChangeMarkdownDocument ( ) {
@@ -68,15 +67,15 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
6867 this . _watcher = vscode . workspace . createFileSystemWatcher ( '**/*.md' ) ;
6968
7069 this . _watcher . onDidChange ( async resource => {
71- const document = await vscode . workspace . openTextDocument ( resource ) ;
72- if ( isMarkdownFile ( document ) ) {
70+ const document = await this . getMarkdownDocument ( resource ) ;
71+ if ( document ) {
7372 this . _onDidChangeMarkdownDocumentEmitter . fire ( document ) ;
7473 }
7574 } , null , this . _disposables ) ;
7675
7776 this . _watcher . onDidCreate ( async resource => {
78- const document = await vscode . workspace . openTextDocument ( resource ) ;
79- if ( isMarkdownFile ( document ) ) {
77+ const document = await this . getMarkdownDocument ( resource ) ;
78+ if ( document ) {
8079 this . _onDidCreateMarkdownDocumentEmitter . fire ( document ) ;
8180 }
8281 } , null , this . _disposables ) ;
@@ -91,6 +90,11 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
9190 }
9291 } , null , this . _disposables ) ;
9392 }
93+
94+ private async getMarkdownDocument ( resource : vscode . Uri ) : Promise < SkinnyTextDocument | undefined > {
95+ const doc = await vscode . workspace . openTextDocument ( resource ) ;
96+ return doc && isMarkdownFile ( doc ) ? doc : undefined ;
97+ }
9498}
9599
96100
@@ -120,8 +124,8 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
120124 }
121125
122126 public async populateSymbolCache ( ) : Promise < void > {
123- const markDownDocumentUris = await this . _workspaceMarkdownDocumentProvider . getAllMarkdownDocuments ( ) ;
124- for ( const document of markDownDocumentUris ) {
127+ const markdownDocumentUris = await this . _workspaceMarkdownDocumentProvider . getAllMarkdownDocuments ( ) ;
128+ for ( const document of markdownDocumentUris ) {
125129 this . _symbolCache . set ( document . uri . fsPath , this . getSymbols ( document ) ) ;
126130 }
127131 }
@@ -136,11 +140,11 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
136140 } ) ;
137141 }
138142
139- private onDidChangeDocument ( document : vscode . TextDocument ) {
140- this . _symbolCache . set ( document . fileName , this . getSymbols ( document ) ) ;
143+ private onDidChangeDocument ( document : SkinnyTextDocument ) {
144+ this . _symbolCache . set ( document . uri . fsPath , this . getSymbols ( document ) ) ;
141145 }
142146
143147 private onDidDeleteDocument ( resource : vscode . Uri ) {
144148 this . _symbolCache . delete ( resource . fsPath ) ;
145149 }
146- }
150+ }
0 commit comments