From 61a035c642d0b66a1af81102123790fd9645cdd9 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 8 Jan 2018 17:08:39 -0800 Subject: [PATCH] fix #37005 --- src/vs/editor/contrib/format/formatActions.ts | 6 +++--- src/vs/editor/contrib/format/formatCommand.ts | 9 +++++++-- .../api/electron-browser/mainThreadSaveParticipant.ts | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/contrib/format/formatActions.ts b/src/vs/editor/contrib/format/formatActions.ts index 6fe41fbca39..ee843f0e1d3 100644 --- a/src/vs/editor/contrib/format/formatActions.ts +++ b/src/vs/editor/contrib/format/formatActions.ts @@ -161,7 +161,7 @@ class FormatOnType implements editorCommon.IEditorContribution { return; } - EditOperationsCommand.execute(this.editor, edits); + EditOperationsCommand.execute(this.editor, edits, true); alertFormattingEdits(edits); }, (err) => { @@ -244,7 +244,7 @@ class FormatOnPaste implements editorCommon.IEditorContribution { if (!state.validate(this.editor) || isFalsyOrEmpty(edits)) { return; } - EditOperationsCommand.execute(this.editor, edits); + EditOperationsCommand.execute(this.editor, edits, false); alertFormattingEdits(edits); }); } @@ -280,7 +280,7 @@ export abstract class AbstractFormatAction extends EditorAction { return; } - EditOperationsCommand.execute(editor, edits); + EditOperationsCommand.execute(editor, edits, false); alertFormattingEdits(edits); editor.focus(); }, err => { diff --git a/src/vs/editor/contrib/format/formatCommand.ts b/src/vs/editor/contrib/format/formatCommand.ts index 8339c74583c..42f320e538f 100644 --- a/src/vs/editor/contrib/format/formatCommand.ts +++ b/src/vs/editor/contrib/format/formatCommand.ts @@ -11,16 +11,21 @@ import * as editorCommon from 'vs/editor/common/editorCommon'; import { Selection } from 'vs/editor/common/core/selection'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ITextModel, EndOfLineSequence, ISingleEditOperation } from 'vs/editor/common/model'; +import { EditOperation } from 'vs/editor/common/core/editOperation'; export class EditOperationsCommand implements editorCommon.ICommand { - static execute(editor: ICodeEditor, edits: TextEdit[]) { + static execute(editor: ICodeEditor, edits: TextEdit[], asCommand: boolean) { const cmd = new EditOperationsCommand(edits, editor.getSelection()); if (typeof cmd._newEol === 'number') { editor.getModel().setEOL(cmd._newEol); } editor.pushUndoStop(); - editor.executeCommand('formatEditsCommand', cmd); + if (!asCommand) { + editor.executeEdits('formatEditsCommand', cmd._edits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text))); + } else { + editor.executeCommand('formatEditsCommand', cmd); + } editor.pushUndoStop(); } diff --git a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts index 6e85d133edf..5d0a02c34e3 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSaveParticipant.ts @@ -220,7 +220,7 @@ class FormatOnSaveParticipant implements ISaveParticipantParticipant { } private _editsWithEditor(editor: ICodeEditor, edits: ISingleEditOperation[]): void { - EditOperationsCommand.execute(editor, edits); + EditOperationsCommand.execute(editor, edits, false); } private _editWithModel(model: ITextModel, edits: ISingleEditOperation[]): void {