diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index 0bf2c1e627acf5f4100e942f1c2d7ca1d6de989c..b7034ea70a5b8ac99c9c21068c839470ef29f17f 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -232,14 +232,11 @@ async function deleteFiles(workingCopyService: IWorkingCopyService, textFileServ }); } - - // Check for confirmation checkbox if (confirmation.confirmed && confirmation.checkboxChecked === true) { await configurationService.updateValue(CONFIRM_DELETE_SETTING_KEY, false, ConfigurationTarget.USER); } - // Check for confirmation if (!confirmation.confirmed) { return; diff --git a/src/vs/workbench/services/textfile/browser/textFileService.ts b/src/vs/workbench/services/textfile/browser/textFileService.ts index 355f94cb60dce4cb7689239588f8e2b465edc13a..3c6133cdb6bcb4b6eef71b827ef34ac6bd265b6c 100644 --- a/src/vs/workbench/services/textfile/browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/browser/textFileService.ts @@ -87,7 +87,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex this.lifecycleService.onShutdown(this.dispose, this); } - //#region text file IO primitives (read, create, move, delete, update) + //#region text file read / write async read(resource: URI, options?: IReadTextFileOptions): Promise { const content = await this.fileService.readFile(resource, options); @@ -143,6 +143,14 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } } + async write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise { + return this.fileService.writeFile(resource, toBufferOrReadable(value), options); + } + + //#endregion + + //#region text file IO primitives (create, move, copy, delete) + async create(resource: URI, value?: string | ITextSnapshot, options?: ICreateFileOptions): Promise { // before event @@ -169,24 +177,6 @@ export abstract class AbstractTextFileService extends Disposable implements ITex return this.fileService.createFile(resource, toBufferOrReadable(value), options); } - async write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise { - return this.fileService.writeFile(resource, toBufferOrReadable(value), options); - } - - async delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise { - - // before event - await this._onWillRunOperation.fireAsync({ operation: FileOperation.DELETE, target: resource }, CancellationToken.None); - - const dirtyFiles = this.getDirtyFileModels().map(dirtyFileModel => dirtyFileModel.resource).filter(dirty => isEqualOrParent(dirty, resource)); - await this.doRevertFiles(dirtyFiles, { soft: true }); - - await this.fileService.del(resource, options); - - // after event - this._onDidRunOperation.fire(new FileOperationDidRunEvent(FileOperation.DELETE, resource)); - } - async move(source: URI, target: URI, overwrite?: boolean): Promise { return this.moveOrCopy(source, target, true, overwrite); } @@ -287,6 +277,20 @@ export abstract class AbstractTextFileService extends Disposable implements ITex return stat; } + async delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise { + + // before event + await this._onWillRunOperation.fireAsync({ operation: FileOperation.DELETE, target: resource }, CancellationToken.None); + + const dirtyFiles = this.getDirtyFileModels().map(dirtyFileModel => dirtyFileModel.resource).filter(dirty => isEqualOrParent(dirty, resource)); + await this.doRevertFiles(dirtyFiles, { soft: true }); + + await this.fileService.del(resource, options); + + // after event + this._onDidRunOperation.fire(new FileOperationDidRunEvent(FileOperation.DELETE, resource)); + } + //#endregion //#region save diff --git a/src/vs/workbench/services/textfile/common/textfiles.ts b/src/vs/workbench/services/textfile/common/textfiles.ts index 07d83f290c5f498a86c5e3ae549c22782d89f09b..373a388a77b30471c961330e5c716ce99b5d2706 100644 --- a/src/vs/workbench/services/textfile/common/textfiles.ts +++ b/src/vs/workbench/services/textfile/common/textfiles.ts @@ -84,12 +84,6 @@ export interface ITextFileService extends IDisposable { */ revert(resource: URI, options?: IRevertOptions): Promise; - /** - * Create a file. If the file exists it will be overwritten with the contents if - * the options enable to overwrite. - */ - create(resource: URI, contents?: string | ITextSnapshot, options?: { overwrite?: boolean }): Promise; - /** * Read the contents of a file identified by the resource. */ @@ -106,9 +100,10 @@ export interface ITextFileService extends IDisposable { write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise; /** - * Delete a file. If the file is dirty, it will get reverted and then deleted from disk. + * Create a file. If the file exists it will be overwritten with the contents if + * the options enable to overwrite. */ - delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise; + create(resource: URI, contents?: string | ITextSnapshot, options?: { overwrite?: boolean }): Promise; /** * Move a file. If the file is dirty, its contents will be preserved and restored. @@ -119,6 +114,11 @@ export interface ITextFileService extends IDisposable { * Copy a file. If the file is dirty, its contents will be preserved and restored. */ copy(source: URI, target: URI, overwrite?: boolean): Promise; + + /** + * Delete a file. If the file is dirty, it will get reverted and then deleted from disk. + */ + delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise; } export interface FileOperationWillRunEvent extends IWaitUntil {