提交 5d0bd498 编写于 作者: B Benjamin Pasero

💄 text files

上级 72186b21
......@@ -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;
......
......@@ -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<ITextFileContent> {
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<IFileStatWithMetadata> {
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<IFileStatWithMetadata> {
// 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<IFileStatWithMetadata> {
return this.fileService.writeFile(resource, toBufferOrReadable(value), options);
}
async delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise<void> {
// 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<IFileStatWithMetadata> {
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<void> {
// 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
......
......@@ -84,12 +84,6 @@ export interface ITextFileService extends IDisposable {
*/
revert(resource: URI, options?: IRevertOptions): Promise<boolean>;
/**
* 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<IFileStatWithMetadata>;
/**
* 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<IFileStatWithMetadata>;
/**
* 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<void>;
create(resource: URI, contents?: string | ITextSnapshot, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata>;
/**
* 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<IFileStatWithMetadata>;
/**
* 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<void>;
}
export interface FileOperationWillRunEvent extends IWaitUntil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册