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);
 	}