diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b4a2aabc165..cf3768f70a3 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -224,25 +224,22 @@ declare module 'vscode' { } // todo@joh discover files etc - // todo@joh CancellationToken everywhere // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 2; + _version: 3; - readonly onDidChange?: Event; + readonly onDidChange: Event; stat(uri: Uri, token: CancellationToken): Thenable; - readdir(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat][]>; + readDirectory(uri: Uri, token: CancellationToken): Thenable<[Uri, FileStat][]>; readFile(uri: Uri, token: CancellationToken): Thenable; writeFile(uri: Uri, content: Uint8Array, token: CancellationToken): Thenable; - // todo@remote - // Thenable - rename(oldUri: Uri, newUri: Uri): Thenable; + rename(oldUri: Uri, newUri: Uri, token: CancellationToken): Thenable; // todo@remote // helps with performance bigly @@ -250,10 +247,10 @@ declare module 'vscode' { // todo@remote // ? useTrash, expose trash - delete(resource: Uri, options: { recursive?: boolean; }): Thenable; + delete(uri: Uri, token: CancellationToken): Thenable; // todo@remote - create(resource: Uri, options: { type: FileType }): Thenable; + create(uri: Uri, options: { type: FileType }, token: CancellationToken): Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index aa5115926ea..a11efa15833 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -58,9 +58,9 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 2; + _version: 3; - onDidChange?: vscode.Event; + onDidChange: vscode.Event; constructor(private readonly _delegate: vscode.FileSystemProvider) { this.onDidChange = this._delegate.onDidChange; @@ -72,13 +72,13 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { rename(oldUri: vscode.Uri, newUri: vscode.Uri): Thenable { return this._delegate.move(oldUri, newUri); } - readdir(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat][]> { + readDirectory(resource: vscode.Uri): Thenable<[vscode.Uri, vscode.FileStat][]> { return this._delegate.readdir(resource); } // --- delete/create file or folder - delete(resource: vscode.Uri, options: { recursive: boolean; }): Thenable { + delete(resource: vscode.Uri): Thenable { return this.stat(resource).then(stat => { if (stat.type === FileType.Dir) { return this._delegate.rmdir(resource); @@ -127,7 +127,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 2) { + if (newProvider && newProvider._version === 3) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); @@ -171,7 +171,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).stat(URI.revive(resource), token)); } $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][], any> { - return asWinJsPromise(token => this._fsProvider.get(handle).readdir(URI.revive(resource), token)); + return asWinJsPromise(token => this._fsProvider.get(handle).readDirectory(URI.revive(resource), token)); } $readFile(handle: number, resource: UriComponents): TPromise { return asWinJsPromise(token => { @@ -184,13 +184,13 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).writeFile(URI.revive(resource), Buffer.from(base64Content, 'base64'), token)); } $delete(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), { recursive: true })); + return asWinJsPromise(token => this._fsProvider.get(handle).delete(URI.revive(resource), token)); } $move(handle: number, oldUri: UriComponents, newUri: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri))); + return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), token)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir })); + return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType.Dir }, token)); } $provideFileSearchResults(handle: number, session: number, query: string): TPromise {