From f0fd4a1cab7ea836ad50a984b6648d4e4e4637b5 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 24 Sep 2018 12:09:10 +0200 Subject: [PATCH] Fix #59210 --- .../api/node/extHostOutputService.ts | 5 +++++ .../output/electron-browser/outputServices.ts | 22 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/api/node/extHostOutputService.ts b/src/vs/workbench/api/node/extHostOutputService.ts index f9c857bfb33..4cabdb257f6 100644 --- a/src/vs/workbench/api/node/extHostOutputService.ts +++ b/src/vs/workbench/api/node/extHostOutputService.ts @@ -94,6 +94,11 @@ export class ExtHostOutputChannelBackedByFile extends AbstractExtHostOutputChann this.validate(); this._appender.append(value); } + + clear(): void { + this._appender.flush(); + super.clear(); + } } export class ExtHostLogFileOutputChannel extends AbstractExtHostOutputChannel { diff --git a/src/vs/workbench/parts/output/electron-browser/outputServices.ts b/src/vs/workbench/parts/output/electron-browser/outputServices.ts index 37b449ca948..0f10fb56e9a 100644 --- a/src/vs/workbench/parts/output/electron-browser/outputServices.ts +++ b/src/vs/workbench/parts/output/electron-browser/outputServices.ts @@ -351,12 +351,13 @@ class FileOutputChannel extends AbstractFileOutputChannel implements OutputChann } loadModel(): TPromise { - return this.fileService.resolveContent(this.file, { position: this.startOffset, encoding: 'utf8' }) - .then(content => { - this.endOffset = this.startOffset + Buffer.from(content.value).byteLength; - this.etag = content.etag; - return this.createModel(content.value); - }); + return this.readContent() + .then(content => this.createModel(content)); + } + + clear(): void { + this.readContent() // Read content from the file before clearing + .then(() => super.clear()); } append(message: string): void { @@ -391,6 +392,15 @@ class FileOutputChannel extends AbstractFileOutputChannel implements OutputChann this.updateInProgress = false; } + private readContent(): TPromise { + return this.fileService.resolveContent(this.file, { position: this.startOffset, encoding: 'utf8' }) + .then(content => { + this.endOffset = this.startOffset + Buffer.from(content.value).byteLength; + this.etag = content.etag; + return content.value; + }); + } + private onDidContentChange(size: number): void { if (!this.updateInProgress) { this.updateInProgress = true;