diff --git a/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts b/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts index b8f66352941..417023b4247 100644 --- a/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/browser/mainThreadSaveParticipant.ts @@ -32,23 +32,16 @@ import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textF import { ISaveParticipant, IResolvedTextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles'; import { SaveReason } from 'vs/workbench/common/editor'; import { ExtHostContext, ExtHostDocumentSaveParticipantShape, IExtHostContext } from '../common/extHost.protocol'; -import { IStatusbarService, StatusbarAlignment } from 'vs/workbench/services/statusbar/common/statusbar'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { SettingsEditor2 } from 'vs/workbench/contrib/preferences/browser/settingsEditor2'; import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; import { ILabelService } from 'vs/platform/label/common/label'; -import { canceled, isPromiseCanceledError } from 'vs/base/common/errors'; +import { canceled } from 'vs/base/common/errors'; export interface ICodeActionsOnSaveOptions { [kind: string]: boolean; } -class SaveParticipantError extends Error { - constructor(message: string, readonly setting?: string) { - super(message); - } -} - export interface ISaveParticipantParticipant { participate(model: IResolvedTextFileEditorModel, env: { reason: SaveReason }, progress: IProgress, token: CancellationToken): Promise; } @@ -338,7 +331,7 @@ class ExtHostSaveParticipant implements ISaveParticipantParticipant { token.onCancellationRequested(() => reject(canceled())); setTimeout( - () => reject(new SaveParticipantError(localize('timeout.onWillSave', "Aborted onWillSaveTextDocument-event after 1750ms"))), + () => reject(new Error(localize('timeout.onWillSave', "Aborted onWillSaveTextDocument-event after 1750ms"))), 1750 ); this._proxy.$participateInSave(editorModel.resource, env.reason).then(values => { @@ -361,7 +354,6 @@ export class SaveParticipant implements ISaveParticipant { extHostContext: IExtHostContext, @IInstantiationService instantiationService: IInstantiationService, @IProgressService private readonly _progressService: IProgressService, - @IStatusbarService private readonly _statusbarService: IStatusbarService, @ILogService private readonly _logService: ILogService, @ILabelService private readonly _labelService: ILabelService, ) { @@ -393,54 +385,23 @@ export class SaveParticipant implements ISaveParticipant { delay: model.isDirty() ? 3000 : 5000 }, async progress => { - let firstError: SaveParticipantError | undefined; for (let p of this._saveParticipants.getValue()) { if (cts.token.isCancellationRequested) { break; } - try { await p.participate(model, env, progress, cts.token); - } catch (err) { - if (!isPromiseCanceledError(err)) { - this._logService.warn(err); - firstError = !firstError && err instanceof SaveParticipantError ? err : firstError; - } + this._logService.warn(err); } } - if (firstError) { - this._showParticipantError(firstError); - } - }, () => { // user cancel cts.dispose(true); }); } - - private _showParticipantError(err: SaveParticipantError): void { - - let entry: any = { - text: localize('title', "$(error) Save Participants Failed: {0}", err.message) - }; - if (err.setting) { - entry.command = '_showSettings'; - entry.arguments = [err.setting]; - } - - const handle = this._statusbarService.addEntry( - entry, - 'saveParticipants.error', - localize('status.message', "Save Participants Errors"), - StatusbarAlignment.LEFT, - -Number.MAX_VALUE /* far right on left hand side */ - ); - - setTimeout(() => handle.dispose(), 5000); - } } CommandsRegistry.registerCommand('_showSettings', (accessor, ...args: any[]) => {