diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 3e16395b747..541acb7a66d 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -191,7 +191,7 @@ export interface IStat { export interface IFileSystemProviderBase { onDidChange: Event; stat(resource: URI): TPromise; - rename(from: URI, to: URI): TPromise; + rename(from: URI, to: URI, opts: { flags: FileOpenFlags }): TPromise; mkdir(resource: URI): TPromise; readdir(resource: URI): TPromise<[string, IStat][]>; delete(resource: URI): TPromise; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index e52c91d11c1..b28b3f0c0ef 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -283,7 +283,7 @@ declare module 'vscode' { * @param newUri The target location * @param token A cancellation token. */ - rename(oldUri: Uri, newUri: Uri, token: CancellationToken): FileStat2 | Thenable; + rename(oldUri: Uri, newUri: Uri, options: { flags: FileOpenFlags }, token: CancellationToken): FileStat2 | Thenable; // todo@remote // helps with performance bigly diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index fc951f96f6d..8517ec69fe6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -111,8 +111,8 @@ class RemoteFileSystemProvider implements ISimpleReadWriteProvider, IFileSystemP delete(resource: URI): TPromise { return this._proxy.$delete(this._handle, resource); } - rename(resource: URI, target: URI): TPromise { - return this._proxy.$move(this._handle, resource, target); + rename(resource: URI, target: URI, opts: { flags: FileOpenFlags }): TPromise { + return this._proxy.$rename(this._handle, resource, target, opts.flags); } mkdir(resource: URI): TPromise { return this._proxy.$mkdir(this._handle, resource); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 14a3d33bd94..d1bd5db0104 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -570,7 +570,7 @@ export interface ExtHostFileSystemShape { $readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise; $writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise; - $move(handle: number, resource: UriComponents, target: UriComponents): TPromise; + $rename(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise; $mkdir(handle: number, resource: UriComponents): TPromise; $readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>; diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 0bfe4dec779..23c778ef52c 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -253,8 +253,8 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { $delete(handle: number, resource: UriComponents): TPromise { 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), token)); + $rename(handle: number, oldUri: UriComponents, newUri: UriComponents, flags: files.FileOpenFlags): TPromise { + 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)); diff --git a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts index 4bfff64726c..6a30bb3eb8e 100644 --- a/src/vs/workbench/services/files/electron-browser/remoteFileService.ts +++ b/src/vs/workbench/services/files/electron-browser/remoteFileService.ts @@ -401,7 +401,7 @@ export class RemoteFileService extends FileService { : TPromise.as(null); return prepare.then(() => this._withProvider(source)).then(provider => { - return provider.rename(source, target).then(stat => { + return provider.rename(source, target, { flags: 0 /*todo@remote -> RENAME_NOREPLACE */ }).then(stat => { return toIFileStat(provider, [target, stat]); }).then(fileStat => { this._onAfterOperation.fire(new FileOperationEvent(source, FileOperation.MOVE, fileStat));