From ed5da7ac488596c9f651b4a3f1c245c37d8cf78d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Jul 2018 10:01:29 +0200 Subject: [PATCH] fix #54431 --- .../mainThreadSaveParticipant.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts index 9091dc3412a..59f93eb7f2f 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts @@ -215,16 +215,20 @@ class FormatOnSaveParticipant implements ISaveParticipantParticipant { const timeout = this._configurationService.getValue('editor.formatOnSaveTimeout', { overrideIdentifier: model.getLanguageIdentifier().language, resource: editorModel.getResource() }); return new Promise((resolve, reject) => { - setTimeout(() => reject(localize('timeout.formatOnSave', "Aborted format on save after {0}ms", timeout)), timeout); - getDocumentFormattingEdits(model, { tabSize, insertSpaces }) - .then(edits => this._editorWorkerService.computeMoreMinimalEdits(model.uri, edits)) - .then(resolve, err => { - if (!(err instanceof Error) || err.name !== NoProviderError.Name) { - reject(err); - } else { - resolve(); - } - }); + let request = getDocumentFormattingEdits(model, { tabSize, insertSpaces }); + + setTimeout(() => { + reject(localize('timeout.formatOnSave', "Aborted format on save after {0}ms", timeout)); + request.cancel(); + }, timeout); + + request.then(edits => this._editorWorkerService.computeMoreMinimalEdits(model.uri, edits)).then(resolve, err => { + if (!(err instanceof Error) || err.name !== NoProviderError.Name) { + reject(err); + } else { + resolve(); + } + }); }).then(edits => { if (!isFalsyOrEmpty(edits) && versionNow === model.getVersionId()) { -- GitLab