diff --git a/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts index d39fdaa3c5325..2bf7d7afb8ec3 100644 --- a/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditor/codeEditorWidget.ts @@ -1570,7 +1570,9 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE if (!this._modelData || !this._modelData.hasRealView) { return; } - this._modelData.view.render(true, forceRedraw); + this._modelData.viewModel.batchEvents(() => { + this._modelData!.view.render(true, forceRedraw); + }); } public setAriaOptions(options: editorBrowser.IEditorAriaOptions): void { diff --git a/src/vs/editor/common/viewModel.ts b/src/vs/editor/common/viewModel.ts index 9356bb2ab01c7..3ff0d5f091797 100644 --- a/src/vs/editor/common/viewModel.ts +++ b/src/vs/editor/common/viewModel.ts @@ -97,6 +97,8 @@ export interface IViewModel extends ICursorSimpleModel { //#region viewLayout changeWhitespace(callback: (accessor: IWhitespaceChangeAccessor) => void): void; //#endregion + + batchEvents(callback: () => void): void; } export interface IViewLayout { diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index ea1f1fba62a24..c5af99cca77bf 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -1110,6 +1110,10 @@ export class ViewModel extends Disposable implements IViewModel { } } + public batchEvents(callback: () => void): void { + this._withViewEventsCollector(() => { callback(); }); + } + normalizePosition(position: Position, affinity: PositionAffinity): Position { return this._lines.normalizePosition(position, affinity); }