Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
10dc49b
Pick up TS 4.6.3 (#146127)
mjbvz Mar 27, 2022
aefb335
Fix #146161
sandy081 Mar 28, 2022
d8847c8
#146161 - consider settings editor config
sandy081 Mar 28, 2022
4599966
ci: update electron v17.2.0 (#146156)
deepak1556 Mar 28, 2022
8e98e74
proper fix
sandy081 Mar 28, 2022
4e20ea5
remove unnecessary comma
sandy081 Mar 28, 2022
4a7cd08
Add vscode.markdown-language-features to proposed API
dbaeumer Mar 28, 2022
ac7d722
Merge pull request #146176 from microsoft/dbaeumer/146172
dbaeumer Mar 28, 2022
e2e4067
actually foward cell content change events to extension host, https:/…
jrieken Mar 28, 2022
da0e0ae
Revert "Fixes microsoft/monaco-editor#2774: Emit content change event…
alexdima Mar 28, 2022
ca46ba0
Revert "Fixes #145872: Emit model events using the view model outgoin…
alexdima Mar 28, 2022
e76b009
Merge pull request #146187 from microsoft/alex/issue-146174
hediet Mar 28, 2022
0aad3c8
Copy tunnel information for context (#146186)
alexr00 Mar 28, 2022
660f140
Merge pull request #146163 from microsoft/sandy081/fix146161
sandy081 Mar 28, 2022
3dc701c
fix #142756.
rebornix Mar 28, 2022
3a5a169
Merge pull request #146213 from microsoft/rebornix/update-replace-all-nb
rebornix Mar 28, 2022
ede16c3
fix #146227.
rebornix Mar 29, 2022
521a3d8
Merge pull request #146181 from microsoft/joh/fix/145793
jrieken Mar 29, 2022
e18005f
Merge pull request #146228 from microsoft/rebornix/fix-output-limit
rebornix Mar 29, 2022
f3e87be
gitpod server initial commit
akosyakov Sep 2, 2020
c9ef633
switch workbench preferred color themes
Shulammite-Aso Nov 9, 2021
b18640e
[gitpod-shared] Use "waitForSnapshot" to avoid disconnects
geropl Nov 18, 2021
b1acac6
[gitpod] Add 'User-Agent' to API connection headers
geropl Dec 1, 2021
9de989f
Always enable proposed API
jeanp413 Dec 21, 2021
d677a73
support timeout of local-app
mustard-mh Dec 28, 2021
0cc83b1
Add notification telemetry
jeanp413 Dec 21, 2021
ef19a61
Add telemetry for user config and extensions
jeanp413 Dec 22, 2021
a728832
Add telemetry for getting started
jeanp413 Dec 27, 2021
4808fba
gitpod: bump `node-fetch` version in extensions
Pothulapati Feb 4, 2022
3125d4c
Remove vscode_session phase running end
mustard-mh Feb 23, 2022
76e0439
Add export logs contribution
jeanp413 Mar 17, 2022
754ebb2
Add Gitpod to Settings sync
filiptronicek Sep 17, 2021
7597be9
Remove strict null checking
filiptronicek Oct 13, 2021
f8ee95d
Grammar
filiptronicek Oct 13, 2021
5fd96f8
Typos, grammar, all that kind of awesome stuff!
filiptronicek Oct 13, 2021
99aff73
Don't cache base URL
filiptronicek Oct 13, 2021
5370b06
Rewrite session logic into a class
filiptronicek Oct 13, 2021
409b82a
Add code exchange code
filiptronicek Oct 14, 2021
1b9043b
Fix that damn bug
filiptronicek Oct 16, 2021
1d88940
Fix code exchange bad request
filiptronicek Oct 18, 2021
94cc6fc
Fix WS endpoint URL and some other things
filiptronicek Oct 19, 2021
914c571
fix JWT token parsing
akosyakov Oct 20, 2021
17814a3
invalidate sessions
akosyakov Oct 21, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Revert "Fixes microsoft/monaco-editor#2774: Emit content change event…
…s before cursor state change events during undo, redo, or recovery from markers"

This reverts commit 63f82f6.
  • Loading branch information
alexdima committed Mar 28, 2022
commit da0e0ae3426f37d221e5a886c712ea3adc4a8dac
7 changes: 3 additions & 4 deletions src/vs/editor/common/cursor/cursor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { Range, IRange } from 'vs/editor/common/core/range';
import { ISelection, Selection, SelectionDirection } from 'vs/editor/common/core/selection';
import * as editorCommon from 'vs/editor/common/editorCommon';
import { ITextModel, TrackedRangeStickiness, IModelDeltaDecoration, ICursorStateComputer, IIdentifiedSingleEditOperation, IValidEditOperation } from 'vs/editor/common/model';
import { RawContentChangedType, ModelInjectedTextChangedEvent, InternalModelContentChangeEvent } from 'vs/editor/common/textModelEvents';
import { RawContentChangedType, ModelRawContentChangedEvent, ModelInjectedTextChangedEvent } from 'vs/editor/common/textModelEvents';
import { VerticalRevealType, ViewCursorStateChangedEvent, ViewRevealRangeRequestEvent } from 'vs/editor/common/viewEvents';
import { dispose, Disposable } from 'vs/base/common/lifecycle';
import { ICoordinatesConverter } from 'vs/editor/common/viewModel';
Expand Down Expand Up @@ -216,8 +216,8 @@ export class CursorsController extends Disposable {
this.revealPrimary(eventsCollector, 'restoreState', false, VerticalRevealType.Simple, true, editorCommon.ScrollType.Immediate);
}

public onModelContentChanged(eventsCollector: ViewModelEventsCollector, event: InternalModelContentChangeEvent | ModelInjectedTextChangedEvent): void {
if (event instanceof ModelInjectedTextChangedEvent) {
public onModelContentChanged(eventsCollector: ViewModelEventsCollector, e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent): void {
if (e instanceof ModelInjectedTextChangedEvent) {
// If injected texts change, the view positions of all cursors need to be updated.
if (this._isHandling) {
// The view positions will be updated when handling finishes
Expand All @@ -234,7 +234,6 @@ export class CursorsController extends Disposable {
this._isHandling = false;
}
} else {
const e = event.rawContentChangedEvent;
this._knownModelVersionId = e.versionId;
if (this._isHandling) {
return;
Expand Down
4 changes: 2 additions & 2 deletions src/vs/editor/common/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { LineTokens } from 'vs/editor/common/tokens/lineTokens';
import { IPosition, Position } from 'vs/editor/common/core/position';
import { IRange, Range } from 'vs/editor/common/core/range';
import { Selection } from 'vs/editor/common/core/selection';
import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, InternalModelContentChangeEvent, ModelInjectedTextChangedEvent } from 'vs/editor/common/textModelEvents';
import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelInjectedTextChangedEvent, ModelRawContentChangedEvent } from 'vs/editor/common/textModelEvents';
import { WordCharacterClassifier } from 'vs/editor/common/core/wordCharacterClassifier';
import { FormattingOptions, StandardTokenType } from 'vs/editor/common/languages';
import { ThemeColor } from 'vs/platform/theme/common/themeService';
Expand Down Expand Up @@ -1153,7 +1153,7 @@ export interface ITextModel {
* @internal
* @event
*/
readonly onDidChangeContentOrInjectedText: Event<InternalModelContentChangeEvent | ModelInjectedTextChangedEvent>;
readonly onDidChangeContentOrInjectedText: Event<ModelRawContentChangedEvent | ModelInjectedTextChangedEvent>;
/**
* An event emitted when the contents of the model have changed.
* @event
Expand Down
4 changes: 2 additions & 2 deletions src/vs/editor/common/model/textModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,9 @@ export class TextModel extends Disposable implements model.ITextModel, IDecorati
public onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable {
return this._eventEmitter.slowEvent((e: InternalModelContentChangeEvent) => listener(e.contentChangedEvent));
}
public onDidChangeContentOrInjectedText(listener: (e: InternalModelContentChangeEvent | ModelInjectedTextChangedEvent) => void): IDisposable {
public onDidChangeContentOrInjectedText(listener: (e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent) => void): IDisposable {
return combinedDisposable(
this._eventEmitter.fastEvent(e => listener(e)),
this._eventEmitter.fastEvent(e => listener(e.rawContentChangedEvent)),
this._onDidChangeInjectedText.event(e => listener(e))
);
}
Expand Down
11 changes: 6 additions & 5 deletions src/vs/editor/common/viewModel/viewModelImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,8 @@ export class ViewModel extends Disposable implements IViewModel {
let hadOtherModelChange = false;
let hadModelLineChangeThatChangedLineMapping = false;

const changes = (e instanceof textModelEvents.InternalModelContentChangeEvent ? e.rawContentChangedEvent.changes : e.changes);
const versionId = (e instanceof textModelEvents.InternalModelContentChangeEvent ? e.rawContentChangedEvent.versionId : null);
const changes = e.changes;
const versionId = (e instanceof textModelEvents.ModelRawContentChangedEvent ? e.versionId : null);

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

try {
const eventsCollector = this._eventDispatcher.beginEmitViewEvents();
if (e instanceof textModelEvents.InternalModelContentChangeEvent) {
eventsCollector.emitOutgoingEvent(new ModelContentChangedEvent(e.contentChangedEvent));
}
this._cursor.onModelContentChanged(eventsCollector, e);
} finally {
this._eventDispatcher.endEmitViewEvents();
Expand All @@ -402,6 +399,10 @@ export class ViewModel extends Disposable implements IViewModel {
this._tokenizeViewportSoon.schedule();
}));

this._register(this.model.onDidChangeContent((e) => {
this._eventDispatcher.emitOutgoingEvent(new ModelContentChangedEvent(e));
}));

this._register(this.model.onDidChangeTokens((e) => {
const viewRanges: { fromLineNumber: number; toLineNumber: number }[] = [];
for (let j = 0, lenJ = e.ranges.length; j < lenJ; j++) {
Expand Down
29 changes: 0 additions & 29 deletions src/vs/editor/test/browser/widget/codeEditorWidget.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,33 +122,4 @@ suite('CodeEditorWidget', () => {
});
});

test('monaco-editor issue #2774 - Wrong order of events onDidChangeModelContent and onDidChangeCursorSelection on redo', () => {
withTestCodeEditor('', {}, (editor, viewModel) => {
const disposables = new DisposableStore();

const calls: string[] = [];
disposables.add(editor.onDidChangeModelContent((e) => {
calls.push(`contentchange(${e.changes.reduce<any[]>((aggr, c) => [...aggr, c.text, c.rangeOffset, c.rangeLength], []).join(', ')})`);
}));
disposables.add(editor.onDidChangeCursorSelection((e) => {
calls.push(`cursorchange(${e.selection.positionLineNumber}, ${e.selection.positionColumn})`);
}));

viewModel.type('a', 'test');
viewModel.model.undo();
viewModel.model.redo();

assert.deepStrictEqual(calls, [
'contentchange(a, 0, 0)',
'cursorchange(1, 2)',
'contentchange(, 0, 1)',
'cursorchange(1, 1)',
'contentchange(a, 0, 0)',
'cursorchange(1, 2)'
]);

disposables.dispose();
});
});

});
44 changes: 22 additions & 22 deletions src/vs/editor/test/common/model/model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { TextModel } from 'vs/editor/common/model/textModel';
import { InternalModelContentChangeEvent, ModelRawContentChangedEvent, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from 'vs/editor/common/textModelEvents';
import { ModelInjectedTextChangedEvent, ModelRawContentChangedEvent, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from 'vs/editor/common/textModelEvents';
import { EncodedTokenizationResult, IState, MetadataConsts, TokenizationRegistry } from 'vs/editor/common/languages';
import { LanguageConfigurationRegistry } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { NullState } from 'vs/editor/common/languages/nullTokenize';
Expand Down Expand Up @@ -103,12 +103,12 @@ suite('Editor Model - Model', () => {
});

test('model insert text without newline eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.insert(new Position(1, 1), 'foo ')]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand All @@ -122,12 +122,12 @@ suite('Editor Model - Model', () => {
});

test('model insert text with one newline eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.insert(new Position(1, 3), ' new line\nNo longer')]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand Down Expand Up @@ -199,12 +199,12 @@ suite('Editor Model - Model', () => {
});

test('model delete text from one line eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.delete(new Range(1, 1, 1, 2))]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand All @@ -218,12 +218,12 @@ suite('Editor Model - Model', () => {
});

test('model delete all text from a line eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.delete(new Range(1, 1, 1, 14))]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand All @@ -237,12 +237,12 @@ suite('Editor Model - Model', () => {
});

test('model delete text from two lines eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.delete(new Range(1, 4, 2, 6))]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand All @@ -257,12 +257,12 @@ suite('Editor Model - Model', () => {
});

test('model delete text from many lines eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.applyEdits([EditOperation.delete(new Range(1, 4, 3, 5))]);
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand Down Expand Up @@ -308,12 +308,12 @@ suite('Editor Model - Model', () => {

// --------- setValue
test('setValue eventing', () => {
let e: ModelRawContentChangedEvent | null = null;
let e: ModelRawContentChangedEvent | ModelInjectedTextChangedEvent | null = null;
thisModel.onDidChangeContentOrInjectedText((_e) => {
if (e !== null || !(_e instanceof InternalModelContentChangeEvent)) {
if (e !== null) {
assert.fail('Unexpected assertion error');
}
e = _e.rawContentChangedEvent;
e = _e;
});
thisModel.setValue('new value');
assert.deepStrictEqual(e, new ModelRawContentChangedEvent(
Expand Down
5 changes: 2 additions & 3 deletions src/vs/editor/test/common/model/modelInjectedText.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as assert from 'assert';
import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Range } from 'vs/editor/common/core/range';
import { TextModel } from 'vs/editor/common/model/textModel';
import { InternalModelContentChangeEvent, LineInjectedText, ModelRawChange, RawContentChangedType } from 'vs/editor/common/textModelEvents';
import { LineInjectedText, ModelRawChange, RawContentChangedType } from 'vs/editor/common/textModelEvents';
import { createTextModel } from 'vs/editor/test/common/testTextModel';

suite('Editor Model - Injected Text Events', () => {
Expand All @@ -25,8 +25,7 @@ suite('Editor Model - Injected Text Events', () => {
const recordedChanges = new Array<unknown>();

thisModel.onDidChangeContentOrInjectedText((e) => {
const changes = (e instanceof InternalModelContentChangeEvent ? e.rawContentChangedEvent.changes : e.changes);
for (const change of changes) {
for (const change of e.changes) {
recordedChanges.push(mapChange(change));
}
});
Expand Down