delay event forwarding and hope for updated textfile service, fixes #11339

This commit is contained in:
Johannes Rieken
2016-10-24 14:10:36 +02:00
parent ff4085ebb7
commit b949f4f867

View File

@@ -137,18 +137,23 @@ export class MainThreadDocuments extends MainThreadDocumentsShape {
}
private _onModelEvents(modelUrl: URI, events: EmitterEvent[]): void {
let changedEvents: editorCommon.IModelContentChangedEvent2[] = [];
for (let i = 0, len = events.length; i < len; i++) {
let e = events[i];
switch (e.getType()) {
case editorCommon.EventType.ModelContentChanged2:
changedEvents.push(<editorCommon.IModelContentChangedEvent2>e.getData());
break;
// delay event-forwarding to the next tick and hope
// that isDirty-returns up-to-date information then.
// https://github.com/Microsoft/vscode/issues/11339
setImmediate(() => {
let changedEvents: editorCommon.IModelContentChangedEvent2[] = [];
for (let i = 0, len = events.length; i < len; i++) {
let e = events[i];
switch (e.getType()) {
case editorCommon.EventType.ModelContentChanged2:
changedEvents.push(<editorCommon.IModelContentChangedEvent2>e.getData());
break;
}
}
}
if (changedEvents.length > 0) {
this._proxy.$acceptModelChanged(modelUrl.toString(), changedEvents, this._textFileService.isDirty(modelUrl));
}
if (changedEvents.length > 0) {
this._proxy.$acceptModelChanged(modelUrl.toString(), changedEvents, this._textFileService.isDirty(modelUrl));
}
});
}
// --- from extension host process