diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index b28b3f0c0ef..1a9db25a0f5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -232,7 +232,7 @@ declare module 'vscode' { // todo@joh add open/close calls? export interface FileSystemProvider2 { - _version: 5; + _version: 6; /** * An event to signal that a resource has been created, changed, or deleted. @@ -258,6 +258,14 @@ declare module 'vscode' { */ readDirectory(uri: Uri, token: CancellationToken): [string, FileStat2][] | Thenable<[string, FileStat2][]>; + /** + * Create a new directory. *Note* that new files are created via `write`-calls. + * + * @param uri The uri of the *new* folder. + * @param token A cancellation token. + */ + createDirectory(uri: Uri, token: CancellationToken): FileStat2 | Thenable; + /** * Read the entire contents of a file. * @@ -292,9 +300,6 @@ declare module 'vscode' { // todo@remote // ? useTrash, expose trash delete(uri: Uri, token: CancellationToken): void | Thenable; - - // todo@remote - create(uri: Uri, options: { type: FileType2 }, token: CancellationToken): FileStat2 | Thenable; } export namespace workspace { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 23c778ef52c..965c01793e6 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -59,7 +59,7 @@ class FsLinkProvider implements vscode.DocumentLinkProvider { class FileSystemProviderShim implements vscode.FileSystemProvider2 { - _version: 5; + _version: 6; onDidChange: vscode.Event; @@ -131,14 +131,8 @@ class FileSystemProviderShim implements vscode.FileSystemProvider2 { } }); } - create(resource: vscode.Uri, options: { type: vscode.FileType2; }): Thenable { - if (options.type === FileType2.Directory) { - return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); - } else { - return this._delegate.write(resource, Buffer.from([])) - .then(() => this._delegate.stat(resource)) - .then(stat => FileSystemProviderShim._modernizeFileStat(stat)); - } + createDirectory(resource: vscode.Uri): Thenable { + return this._delegate.mkdir(resource).then(stat => FileSystemProviderShim._modernizeFileStat(stat)); } // --- read/write @@ -174,7 +168,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { } registerFileSystemProvider(scheme: string, provider: vscode.FileSystemProvider, newProvider: vscode.FileSystemProvider2) { - if (newProvider && newProvider._version === 5) { + if (newProvider && newProvider._version === 6) { return this._doRegisterFileSystemProvider(scheme, newProvider); } else if (provider) { return this._doRegisterFileSystemProvider(scheme, new FileSystemProviderShim(provider)); @@ -257,7 +251,7 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return asWinJsPromise(token => this._fsProvider.get(handle).rename(URI.revive(oldUri), URI.revive(newUri), { flags }, token)); } $mkdir(handle: number, resource: UriComponents): TPromise { - return asWinJsPromise(token => this._fsProvider.get(handle).create(URI.revive(resource), { type: FileType2.Directory }, token)); + return asWinJsPromise(token => this._fsProvider.get(handle).createDirectory(URI.revive(resource), token)); } $provideFileSearchResults(handle: number, session: number, query: string): TPromise {