diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 94d4d0295ddf9db82c7002f95fab489f4461501b..93cbdb6f3f90d2570aa022d5b731811608a9fa99 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -43,6 +43,11 @@ export interface IFileService { */ resolveFile(resource: URI, options?: IResolveFileOptions): TPromise; + /** + * Same as resolveFile but supports resolving mulitple resources in parallel. + */ + resolveFiles(toResolve: { resource: URI, options?: IResolveFileOptions }[]): TPromise; + /** *Finds out if a file identified by the resource exists. */ diff --git a/src/vs/workbench/services/files/electron-browser/fileService.ts b/src/vs/workbench/services/files/electron-browser/fileService.ts index 0fba07f5e29efe9c58f2d30784183105af07db02..bca7ac11986ce9a61642f9f1ba1b0b120c93ff31 100644 --- a/src/vs/workbench/services/files/electron-browser/fileService.ts +++ b/src/vs/workbench/services/files/electron-browser/fileService.ts @@ -186,6 +186,10 @@ export class FileService implements IFileService { return this.raw.resolveFile(resource, options); } + public resolveFiles(toResolve: { resource: uri, options?: IResolveFileOptions }[]): TPromise { + return this.raw.resolveFiles(toResolve); + } + public existsFile(resource: uri): TPromise { return this.raw.existsFile(resource); } diff --git a/src/vs/workbench/services/files/node/fileService.ts b/src/vs/workbench/services/files/node/fileService.ts index a00926d40bb52971720498221d62f4e1f3d947f6..a0e9e75e967e6a0292f5d5c2493ca26ca74536e7 100644 --- a/src/vs/workbench/services/files/node/fileService.ts +++ b/src/vs/workbench/services/files/node/fileService.ts @@ -157,6 +157,10 @@ export class FileService implements IFileService { return this.resolve(resource, options); } + public resolveFiles(toResolve: { resource: uri, options?: IResolveFileOptions }[]): TPromise { + return TPromise.join(toResolve.map(resourceAndOptions => this.resolve(resourceAndOptions.resource, resourceAndOptions.options))); + } + public existsFile(resource: uri): TPromise { return this.resolveFile(resource).then(() => true, () => false); } diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index dc3c013b40461bab71c3ea45eac9e00c694de64c..3b299beef00fe8aed23b12780010bc1df7256237 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -625,6 +625,10 @@ export class TestFileService implements IFileService { }); } + resolveFiles(toResolve: { resource: URI, options?: IResolveFileOptions }[]): TPromise { + return TPromise.join(toResolve.map(resourceAndOption => this.resolveFile(resourceAndOption.resource, resourceAndOption.options))); + } + existsFile(resource: URI): TPromise { return TPromise.as(null); }