diff --git a/src/vs/workbench/api/node/mainThreadSaveParticipant.ts b/src/vs/workbench/api/node/mainThreadSaveParticipant.ts index f894fa5daed..174ca0e84ce 100644 --- a/src/vs/workbench/api/node/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/node/mainThreadSaveParticipant.ts @@ -5,21 +5,21 @@ 'use strict'; -import {TPromise} from 'vs/base/common/winjs.base'; -import {sequence} from 'vs/base/common/async'; -import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService'; -import {IThreadService} from 'vs/workbench/services/thread/common/threadService'; -import {ISaveParticipant, ITextFileEditorModel} from 'vs/workbench/parts/files/common/files'; -import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation'; -import {IPosition, IModel, ICommonCodeEditor, ISingleEditOperation} from 'vs/editor/common/editorCommon'; -import {Range} from 'vs/editor/common/core/range'; -import {Selection} from 'vs/editor/common/core/selection'; -import {trimTrailingWhitespace} from 'vs/editor/common/commands/trimTrailingWhitespaceCommand'; -import {getDocumentRangeFormattingEdits} from 'vs/editor/contrib/format/common/format'; -import {EditOperationsCommand} from 'vs/editor/contrib/format/common/formatCommand'; -import {IConfigurationService} from 'vs/platform/configuration/common/configuration'; -import {TextFileEditorModel} from 'vs/workbench/parts/files/common/editors/textFileEditorModel'; -import {ExtHostContext, ExtHostDocumentSaveParticipantShape} from './extHost.protocol'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { sequence } from 'vs/base/common/async'; +import { ICodeEditorService } from 'vs/editor/common/services/codeEditorService'; +import { IThreadService } from 'vs/workbench/services/thread/common/threadService'; +import { ISaveParticipant, ITextFileEditorModel } from 'vs/workbench/parts/files/common/files'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IPosition, IModel, ICommonCodeEditor, ISingleEditOperation } from 'vs/editor/common/editorCommon'; +import { Range } from 'vs/editor/common/core/range'; +import { Selection } from 'vs/editor/common/core/selection'; +import { trimTrailingWhitespace } from 'vs/editor/common/commands/trimTrailingWhitespaceCommand'; +import { getDocumentRangeFormattingEdits } from 'vs/editor/contrib/format/common/format'; +import { EditOperationsCommand } from 'vs/editor/contrib/format/common/formatCommand'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { TextFileEditorModel } from 'vs/workbench/parts/files/common/editors/textFileEditorModel'; +import { ExtHostContext, ExtHostDocumentSaveParticipantShape } from './extHost.protocol'; import { SaveReason } from 'vs/workbench/parts/files/common/files'; class TrimWhitespaceParticipant implements ISaveParticipant { @@ -94,11 +94,15 @@ class FormatOnSaveParticipant implements ISaveParticipant { } const model: IModel = editorModel.textEditorModel; - const editor = this._findEditor(model); const {tabSize, insertSpaces} = model.getOptions(); - return getDocumentRangeFormattingEdits(model, model.getFullModelRange(), { tabSize, insertSpaces }).then(edits => { + return new TPromise((resolve, reject) => { + setTimeout(resolve, 750); + getDocumentRangeFormattingEdits(model, model.getFullModelRange(), { tabSize, insertSpaces }).then(resolve, reject); + + }).then(edits => { if (edits) { + const editor = this._findEditor(model); if (editor) { this._editsWithEditor(editor, edits); } else {