Skip to content

Commit e76b009

Browse files
authored
Merge pull request microsoft#146187 from microsoft/alex/issue-146174
Revert changes to eventing in the editor
2 parents ac7d722 + ca46ba0 commit e76b009

File tree

11 files changed

+67
-369
lines changed

11 files changed

+67
-369
lines changed

src/vs/editor/browser/editorBrowser.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { Selection } from 'vs/editor/common/core/selection';
1414
import * as editorCommon from 'vs/editor/common/editorCommon';
1515
import { IIdentifiedSingleEditOperation, IModelDecoration, IModelDeltaDecoration, ITextModel, ICursorStateComputer, PositionAffinity } from 'vs/editor/common/model';
1616
import { IWordAtPosition } from 'vs/editor/common/core/wordHelper';
17-
import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent } from 'vs/editor/common/textModelEvents';
17+
import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent } from 'vs/editor/common/textModelEvents';
1818
import { OverviewRulerZone } from 'vs/editor/common/viewModel/overviewZoneManager';
1919
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
2020
import { IEditorWhitespace, IViewModel } from 'vs/editor/common/viewModel';
@@ -531,11 +531,6 @@ export interface ICodeEditor extends editorCommon.IEditor {
531531
* @event
532532
*/
533533
readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent>;
534-
/**
535-
* An event emitted when the tokens of the current model have changed.
536-
* @internal
537-
*/
538-
readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent>;
539534
/**
540535
* An event emitted when the text inside this editor gained focus (i.e. cursor starts blinking).
541536
* @event

src/vs/editor/browser/widget/codeEditorWidget.ts

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { EndOfLinePreference, IIdentifiedSingleEditOperation, IModelDecoration,
3737
import { IWordAtPosition } from 'vs/editor/common/core/wordHelper';
3838
import { ClassName } from 'vs/editor/common/model/intervalTree';
3939
import { ModelDecorationOptions } from 'vs/editor/common/model/textModel';
40-
import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent } from 'vs/editor/common/textModelEvents';
40+
import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent } from 'vs/editor/common/textModelEvents';
4141
import { editorUnnecessaryCodeBorder, editorUnnecessaryCodeOpacity } from 'vs/editor/common/core/editorColorRegistry';
4242
import { editorErrorBorder, editorErrorForeground, editorHintBorder, editorHintForeground, editorInfoBorder, editorInfoForeground, editorWarningBorder, editorWarningForeground, editorForeground, editorErrorBackground, editorInfoBackground, editorWarningBackground } from 'vs/platform/theme/common/colorRegistry';
4343
import { VerticalRevealType } from 'vs/editor/common/viewEvents';
@@ -134,9 +134,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
134134
private readonly _onDidChangeModelDecorations: Emitter<IModelDecorationsChangedEvent> = this._register(new Emitter<IModelDecorationsChangedEvent>());
135135
public readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent> = this._onDidChangeModelDecorations.event;
136136

137-
private readonly _onDidChangeModelTokens: Emitter<IModelTokensChangedEvent> = this._register(new Emitter<IModelTokensChangedEvent>());
138-
public readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent> = this._onDidChangeModelTokens.event;
139-
140137
private readonly _onDidChangeConfiguration: Emitter<ConfigurationChangedEvent> = this._register(new Emitter<ConfigurationChangedEvent>());
141138
public readonly onDidChangeConfiguration: Event<ConfigurationChangedEvent> = this._onDidChangeConfiguration.event;
142139

@@ -1590,6 +1587,14 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
15901587
this._themeService
15911588
);
15921589

1590+
listenersToRemove.push(model.onDidChangeDecorations((e) => this._onDidChangeModelDecorations.fire(e)));
1591+
listenersToRemove.push(model.onDidChangeLanguage((e) => {
1592+
this._domElement.setAttribute('data-mode-id', model.getLanguageId());
1593+
this._onDidChangeModelLanguage.fire(e);
1594+
}));
1595+
listenersToRemove.push(model.onDidChangeLanguageConfiguration((e) => this._onDidChangeModelLanguageConfiguration.fire(e)));
1596+
listenersToRemove.push(model.onDidChangeContent((e) => this._onDidChangeModelContent.fire(e)));
1597+
listenersToRemove.push(model.onDidChangeOptions((e) => this._onDidChangeModelOptions.fire(e)));
15931598
// Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model
15941599
listenersToRemove.push(model.onWillDispose(() => this.setModel(null)));
15951600

@@ -1644,25 +1649,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
16441649

16451650
break;
16461651
}
1647-
case OutgoingViewModelEventKind.ModelDecorationsChanged:
1648-
this._onDidChangeModelDecorations.fire(e.event);
1649-
break;
1650-
case OutgoingViewModelEventKind.ModelLanguageChanged:
1651-
this._domElement.setAttribute('data-mode-id', model.getLanguageId());
1652-
this._onDidChangeModelLanguage.fire(e.event);
1653-
break;
1654-
case OutgoingViewModelEventKind.ModelLanguageConfigurationChanged:
1655-
this._onDidChangeModelLanguageConfiguration.fire(e.event);
1656-
break;
1657-
case OutgoingViewModelEventKind.ModelContentChanged:
1658-
this._onDidChangeModelContent.fire(e.event);
1659-
break;
1660-
case OutgoingViewModelEventKind.ModelOptionsChanged:
1661-
this._onDidChangeModelOptions.fire(e.event);
1662-
break;
1663-
case OutgoingViewModelEventKind.ModelTokensChanged:
1664-
this._onDidChangeModelTokens.fire(e.event);
1665-
break;
16661652

16671653
}
16681654
}));

src/vs/editor/common/cursor/cursor.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Range, IRange } from 'vs/editor/common/core/range';
1616
import { ISelection, Selection, SelectionDirection } from 'vs/editor/common/core/selection';
1717
import * as editorCommon from 'vs/editor/common/editorCommon';
1818
import { ITextModel, TrackedRangeStickiness, IModelDeltaDecoration, ICursorStateComputer, IIdentifiedSingleEditOperation, IValidEditOperation } from 'vs/editor/common/model';
19-
import { RawContentChangedType, ModelInjectedTextChangedEvent, InternalModelContentChangeEvent } from 'vs/editor/common/textModelEvents';
19+
import { RawContentChangedType, ModelRawContentChangedEvent, ModelInjectedTextChangedEvent } from 'vs/editor/common/textModelEvents';
2020
import { VerticalRevealType, ViewCursorStateChangedEvent, ViewRevealRangeRequestEvent } from 'vs/editor/common/viewEvents';
2121
import { dispose, Disposable } from 'vs/base/common/lifecycle';
2222
import { ICoordinatesConverter } from 'vs/editor/common/viewModel';
@@ -216,8 +216,8 @@ export class CursorsController extends Disposable {
216216
this.revealPrimary(eventsCollector, 'restoreState', false, VerticalRevealType.Simple, true, editorCommon.ScrollType.Immediate);
217217
}
218218

219-
public onModelContentChanged(eventsCollector: ViewModelEventsCollector, event: InternalModelContentChangeEvent | ModelInjectedTextChangedEvent): void {
220-
if (event instanceof ModelInjectedTextChangedEvent) {
219+
public onModelContentChanged(eventsCollector: ViewModelEventsCollector, e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent): void {
220+
if (e instanceof ModelInjectedTextChangedEvent) {
221221
// If injected texts change, the view positions of all cursors need to be updated.
222222
if (this._isHandling) {
223223
// The view positions will be updated when handling finishes
@@ -234,7 +234,6 @@ export class CursorsController extends Disposable {
234234
this._isHandling = false;
235235
}
236236
} else {
237-
const e = event.rawContentChangedEvent;
238237
this._knownModelVersionId = e.versionId;
239238
if (this._isHandling) {
240239
return;

src/vs/editor/common/model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { LineTokens } from 'vs/editor/common/tokens/lineTokens';
1111
import { IPosition, Position } from 'vs/editor/common/core/position';
1212
import { IRange, Range } from 'vs/editor/common/core/range';
1313
import { Selection } from 'vs/editor/common/core/selection';
14-
import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, InternalModelContentChangeEvent, ModelInjectedTextChangedEvent } from 'vs/editor/common/textModelEvents';
14+
import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelInjectedTextChangedEvent, ModelRawContentChangedEvent } from 'vs/editor/common/textModelEvents';
1515
import { WordCharacterClassifier } from 'vs/editor/common/core/wordCharacterClassifier';
1616
import { FormattingOptions, StandardTokenType } from 'vs/editor/common/languages';
1717
import { ThemeColor } from 'vs/platform/theme/common/themeService';
@@ -1153,7 +1153,7 @@ export interface ITextModel {
11531153
* @internal
11541154
* @event
11551155
*/
1156-
readonly onDidChangeContentOrInjectedText: Event<InternalModelContentChangeEvent | ModelInjectedTextChangedEvent>;
1156+
readonly onDidChangeContentOrInjectedText: Event<ModelRawContentChangedEvent | ModelInjectedTextChangedEvent>;
11571157
/**
11581158
* An event emitted when the contents of the model have changed.
11591159
* @event

src/vs/editor/common/model/textModel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ export class TextModel extends Disposable implements model.ITextModel, IDecorati
248248
public onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable {
249249
return this._eventEmitter.slowEvent((e: InternalModelContentChangeEvent) => listener(e.contentChangedEvent));
250250
}
251-
public onDidChangeContentOrInjectedText(listener: (e: InternalModelContentChangeEvent | ModelInjectedTextChangedEvent) => void): IDisposable {
251+
public onDidChangeContentOrInjectedText(listener: (e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent) => void): IDisposable {
252252
return combinedDisposable(
253-
this._eventEmitter.fastEvent(e => listener(e)),
253+
this._eventEmitter.fastEvent(e => listener(e.rawContentChangedEvent)),
254254
this._onDidChangeInjectedText.event(e => listener(e))
255255
);
256256
}

src/vs/editor/common/viewModel/viewModelImpl.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { ILineBreaksComputer, ILineBreaksComputerFactory, InjectedText } from 'v
3535
import { ViewEventHandler } from 'vs/editor/common/viewEventHandler';
3636
import { ICoordinatesConverter, IViewModel, IWhitespaceChangeAccessor, MinimapLinesRenderingData, OverviewRulerDecorationsGroup, ViewLineData, ViewLineRenderingData, ViewModelDecoration } from 'vs/editor/common/viewModel';
3737
import { ViewModelDecorations } from 'vs/editor/common/viewModel/viewModelDecorations';
38-
import { FocusChangedEvent, ModelContentChangedEvent, ModelDecorationsChangedEvent, ModelLanguageChangedEvent, ModelLanguageConfigurationChangedEvent, ModelOptionsChangedEvent, ModelTokensChangedEvent, OutgoingViewModelEvent, ReadOnlyEditAttemptEvent, ScrollChangedEvent, ViewModelEventDispatcher, ViewModelEventsCollector, ViewZonesChangedEvent } from 'vs/editor/common/viewModelEventDispatcher';
38+
import { FocusChangedEvent, OutgoingViewModelEvent, ReadOnlyEditAttemptEvent, ScrollChangedEvent, ViewModelEventDispatcher, ViewModelEventsCollector, ViewZonesChangedEvent } from 'vs/editor/common/viewModelEventDispatcher';
3939
import { IViewModelLines, ViewModelLinesFromModelAsIs, ViewModelLinesFromProjectedModel } from 'vs/editor/common/viewModel/viewModelLines';
4040
import { IThemeService } from 'vs/platform/theme/common/themeService';
4141

@@ -274,8 +274,8 @@ export class ViewModel extends Disposable implements IViewModel {
274274
let hadOtherModelChange = false;
275275
let hadModelLineChangeThatChangedLineMapping = false;
276276

277-
const changes = (e instanceof textModelEvents.InternalModelContentChangeEvent ? e.rawContentChangedEvent.changes : e.changes);
278-
const versionId = (e instanceof textModelEvents.InternalModelContentChangeEvent ? e.rawContentChangedEvent.versionId : null);
277+
const changes = e.changes;
278+
const versionId = (e instanceof textModelEvents.ModelRawContentChangedEvent ? e.versionId : null);
279279

280280
// Do a first pass to compute line mappings, and a second pass to actually interpret them
281281
const lineBreaksComputer = this._lines.createLineBreaksComputer();
@@ -391,9 +391,6 @@ export class ViewModel extends Disposable implements IViewModel {
391391

392392
try {
393393
const eventsCollector = this._eventDispatcher.beginEmitViewEvents();
394-
if (e instanceof textModelEvents.InternalModelContentChangeEvent) {
395-
eventsCollector.emitOutgoingEvent(new ModelContentChangedEvent(e.contentChangedEvent));
396-
}
397394
this._cursor.onModelContentChanged(eventsCollector, e);
398395
} finally {
399396
this._eventDispatcher.endEmitViewEvents();
@@ -418,20 +415,17 @@ export class ViewModel extends Disposable implements IViewModel {
418415
if (e.tokenizationSupportChanged) {
419416
this._tokenizeViewportSoon.schedule();
420417
}
421-
this._eventDispatcher.emitOutgoingEvent(new ModelTokensChangedEvent(e));
422418
}));
423419

424420
this._register(this.model.onDidChangeLanguageConfiguration((e) => {
425421
this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewLanguageConfigurationEvent());
426422
this.cursorConfig = new CursorConfiguration(this.model.getLanguageId(), this.model.getOptions(), this._configuration, this.languageConfigurationService);
427423
this._cursor.updateConfiguration(this.cursorConfig);
428-
this._eventDispatcher.emitOutgoingEvent(new ModelLanguageConfigurationChangedEvent(e));
429424
}));
430425

431426
this._register(this.model.onDidChangeLanguage((e) => {
432427
this.cursorConfig = new CursorConfiguration(this.model.getLanguageId(), this.model.getOptions(), this._configuration, this.languageConfigurationService);
433428
this._cursor.updateConfiguration(this.cursorConfig);
434-
this._eventDispatcher.emitOutgoingEvent(new ModelLanguageChangedEvent(e));
435429
}));
436430

437431
this._register(this.model.onDidChangeOptions((e) => {
@@ -453,14 +447,11 @@ export class ViewModel extends Disposable implements IViewModel {
453447

454448
this.cursorConfig = new CursorConfiguration(this.model.getLanguageId(), this.model.getOptions(), this._configuration, this.languageConfigurationService);
455449
this._cursor.updateConfiguration(this.cursorConfig);
456-
457-
this._eventDispatcher.emitOutgoingEvent(new ModelOptionsChangedEvent(e));
458450
}));
459451

460452
this._register(this.model.onDidChangeDecorations((e) => {
461453
this._decorations.onModelDecorationsChanged();
462454
this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewDecorationsChangedEvent(e));
463-
this._eventDispatcher.emitOutgoingEvent(new ModelDecorationsChangedEvent(e));
464455
}));
465456
}
466457

0 commit comments

Comments
 (0)