From 2eec843752803cdc2f9dafb5832ae98f7b1cc98f Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Fri, 14 Apr 2017 12:19:09 +0300 Subject: [PATCH] Add IModelContentChangedEvent2.isFlush --- src/vs/editor/common/editorCommon.ts | 5 ++++ .../editor/common/model/editableTextModel.ts | 3 ++- src/vs/editor/common/model/textModel.ts | 23 ++++++++++--------- src/vs/monaco.d.ts | 5 ++++ 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index 3a8df79a014..ced9f14851a 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -2476,6 +2476,11 @@ export interface IModelContentChangedEvent2 { * Flag that indicates that this event was generated while redoing. */ readonly isRedoing: boolean; + /** + * Flag that indicates that all decorations were lost with this edit. + * The model has been reset to a new value. + */ + readonly isFlush: boolean; } /** * An event describing a change in the text of a model. diff --git a/src/vs/editor/common/model/editableTextModel.ts b/src/vs/editor/common/model/editableTextModel.ts index bce6dd0a7e5..9a1b9b04692 100644 --- a/src/vs/editor/common/model/editableTextModel.ts +++ b/src/vs/editor/common/model/editableTextModel.ts @@ -659,7 +659,8 @@ export class EditableTextModel extends TextModelWithDecorations implements edito eol: this._EOL, versionId: -1, isUndoing: this._isUndoing, - isRedoing: this._isRedoing + isRedoing: this._isRedoing, + isFlush: false }); // console.log('AFTER:'); diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index 34e0c89670b..5eade2b5edf 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -298,7 +298,7 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo super.dispose(); } - protected _createContentChangedFlushEvent(): editorCommon.IModelContentChangedFlushEvent { + private _createContentChangedFlushEvent(): editorCommon.IModelContentChangedFlushEvent { return { changeType: editorCommon.EventType.ModelRawContentChangedFlush, versionId: this._versionId, @@ -308,15 +308,16 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo }; } - protected _emitContentChanged2(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, rangeLength: number, text: string, isUndoing: boolean, isRedoing: boolean): void { - var e: editorCommon.IModelContentChangedEvent2 = { + protected _emitContentChanged2(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, rangeLength: number, text: string, isUndoing: boolean, isRedoing: boolean, isFlush: boolean): void { + const e: editorCommon.IModelContentChangedEvent2 = { range: new Range(startLineNumber, startColumn, endLineNumber, endColumn), rangeLength: rangeLength, text: text, eol: this._EOL, versionId: this.getVersionId(), isUndoing: isUndoing, - isRedoing: isRedoing + isRedoing: isRedoing, + isFlush: isFlush }; if (!this._isDisposing) { this.emit(editorCommon.EventType.ModelContentChanged2, e); @@ -372,7 +373,7 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo this._emitModelContentChangedFlushEvent(this._createContentChangedFlushEvent()); - this._emitContentChanged2(1, 1, endLineNumber, endColumn, oldModelValueLength, this.getValue(), false, false); + this._emitContentChanged2(1, 1, endLineNumber, endColumn, oldModelValueLength, this.getValue(), false, false, true); } public getValue(eol?: editorCommon.EndOfLinePreference, preserveBOM: boolean = false): string { @@ -595,16 +596,16 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo public setEOL(eol: editorCommon.EndOfLineSequence): void { this._assertNotDisposed(); - var newEOL = (eol === editorCommon.EndOfLineSequence.CRLF ? '\r\n' : '\n'); + const newEOL = (eol === editorCommon.EndOfLineSequence.CRLF ? '\r\n' : '\n'); if (this._EOL === newEOL) { // Nothing to do return; } - var oldFullModelRange = this.getFullModelRange(); - var oldModelValueLength = this.getValueLengthInRange(oldFullModelRange); - var endLineNumber = this.getLineCount(); - var endColumn = this.getLineMaxColumn(endLineNumber); + const oldFullModelRange = this.getFullModelRange(); + const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange); + const endLineNumber = this.getLineCount(); + const endColumn = this.getLineMaxColumn(endLineNumber); this._EOL = newEOL; this._lineStarts = null; @@ -612,7 +613,7 @@ export class TextModel extends OrderGuaranteeEventEmitter implements editorCommo this._emitModelContentChangedFlushEvent(this._createContentChangedFlushEvent()); - this._emitContentChanged2(1, 1, endLineNumber, endColumn, oldModelValueLength, this.getValue(), false, false); + this._emitContentChanged2(1, 1, endLineNumber, endColumn, oldModelValueLength, this.getValue(), false, false, false); } public getLineMinColumn(lineNumber: number): number { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 324493f4fea..e2408c1759f 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -2460,6 +2460,11 @@ declare module monaco.editor { * Flag that indicates that this event was generated while redoing. */ readonly isRedoing: boolean; + /** + * Flag that indicates that all decorations were lost with this edit. + * The model has been reset to a new value. + */ + readonly isFlush: boolean; } /** -- GitLab