diff --git a/src/vs/workbench/api/electron-browser/mainThreadDocuments.ts b/src/vs/workbench/api/electron-browser/mainThreadDocuments.ts index ab8a158398fd023089782619fe07a21b7f4653ad..4d1f5845bda91f5c3fd87bc1360dea9c0d3da732 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDocuments.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDocuments.ts @@ -104,17 +104,17 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { this._toDispose.push(textFileService.models.onModelSaved(e => { if (this._shouldHandleFileEvent(e)) { - this._proxy.$acceptModelSaved(e.resource.toString()); + this._proxy.$acceptModelSaved(e.resource); } })); this._toDispose.push(textFileService.models.onModelReverted(e => { if (this._shouldHandleFileEvent(e)) { - this._proxy.$acceptDirtyStateChanged(e.resource.toString(), false); + this._proxy.$acceptDirtyStateChanged(e.resource, false); } })); this._toDispose.push(textFileService.models.onModelDirty(e => { if (this._shouldHandleFileEvent(e)) { - this._proxy.$acceptDirtyStateChanged(e.resource.toString(), true); + this._proxy.$acceptDirtyStateChanged(e.resource, true); } })); @@ -143,7 +143,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { let modelUrl = model.uri; this._modelIsSynced[modelUrl.toString()] = true; this._modelToDisposeMap[modelUrl.toString()] = model.onDidChangeContent((e) => { - this._proxy.$acceptModelChanged(modelUrl.toString(), e, this._textFileService.isDirty(modelUrl)); + this._proxy.$acceptModelChanged(modelUrl, e, this._textFileService.isDirty(modelUrl)); }); } @@ -153,7 +153,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { if (!this._modelIsSynced[modelUrl.toString()]) { return; } - this._proxy.$acceptModelModeChanged(model.uri.toString(), oldModeId, model.getLanguageIdentifier().language); + this._proxy.$acceptModelModeChanged(model.uri, oldModeId, model.getLanguageIdentifier().language); } private _onModelRemoved(modelUrl: URI): void { @@ -227,7 +227,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { throw new Error(`expected URI ${resource.toString()} to have come to LIFE`); } - this._proxy.$acceptDirtyStateChanged(resource.toString(), true); // mark as dirty + this._proxy.$acceptDirtyStateChanged(resource, true); // mark as dirty return resource; }); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 32ac780d5c361e6682485279d0a1be63368cad97..746252ccab77bcac906a61dee655fe0a94e1e414 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -479,10 +479,10 @@ export interface IModelAddedData { isDirty: boolean; } export interface ExtHostDocumentsShape { - $acceptModelModeChanged(strURL: string, oldModeId: string, newModeId: string): void; - $acceptModelSaved(strURL: string): void; - $acceptDirtyStateChanged(strURL: string, isDirty: boolean): void; - $acceptModelChanged(strURL: string, e: IModelChangedEvent, isDirty: boolean): void; + $acceptModelModeChanged(strURL: UriComponents, oldModeId: string, newModeId: string): void; + $acceptModelSaved(strURL: UriComponents): void; + $acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void; + $acceptModelChanged(strURL: UriComponents, e: IModelChangedEvent, isDirty: boolean): void; } export interface ExtHostDocumentSaveParticipantShape { diff --git a/src/vs/workbench/api/node/extHostDocuments.ts b/src/vs/workbench/api/node/extHostDocuments.ts index c92d98c77212b8a196ae514f4735ca830d47132a..eb0b12fd915c5a03e0d29cba59e88cfef853c6fd 100644 --- a/src/vs/workbench/api/node/extHostDocuments.ts +++ b/src/vs/workbench/api/node/extHostDocuments.ts @@ -5,7 +5,7 @@ 'use strict'; import Event, { Emitter } from 'vs/base/common/event'; -import URI from 'vs/base/common/uri'; +import URI, { UriComponents } from 'vs/base/common/uri'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import * as TypeConverters from './extHostTypeConverters'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -95,7 +95,9 @@ export class ExtHostDocuments implements ExtHostDocumentsShape { return this._proxy.$tryCreateDocument(options).then(data => URI.revive(data)); } - public $acceptModelModeChanged(strURL: string, oldModeId: string, newModeId: string): void { + public $acceptModelModeChanged(uriComponents: UriComponents, oldModeId: string, newModeId: string): void { + const uri = URI.revive(uriComponents); + const strURL = uri.toString(); let data = this._documentsAndEditors.getDocument(strURL); // Treat a mode change as a remove + add @@ -105,13 +107,17 @@ export class ExtHostDocuments implements ExtHostDocumentsShape { this._onDidAddDocument.fire(data.document); } - public $acceptModelSaved(strURL: string): void { + public $acceptModelSaved(uriComponents: UriComponents): void { + const uri = URI.revive(uriComponents); + const strURL = uri.toString(); let data = this._documentsAndEditors.getDocument(strURL); - this.$acceptDirtyStateChanged(strURL, false); + this.$acceptDirtyStateChanged(uriComponents, false); this._onDidSaveDocument.fire(data.document); } - public $acceptDirtyStateChanged(strURL: string, isDirty: boolean): void { + public $acceptDirtyStateChanged(uriComponents: UriComponents, isDirty: boolean): void { + const uri = URI.revive(uriComponents); + const strURL = uri.toString(); let data = this._documentsAndEditors.getDocument(strURL); data._acceptIsDirty(isDirty); this._onDidChangeDocument.fire({ @@ -120,7 +126,9 @@ export class ExtHostDocuments implements ExtHostDocumentsShape { }); } - public $acceptModelChanged(strURL: string, events: IModelChangedEvent, isDirty: boolean): void { + public $acceptModelChanged(uriComponents: UriComponents, events: IModelChangedEvent, isDirty: boolean): void { + const uri = URI.revive(uriComponents); + const strURL = uri.toString(); let data = this._documentsAndEditors.getDocument(strURL); data._acceptIsDirty(isDirty); data.onEvents(events); diff --git a/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts b/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts index 8ec74bfb0735e76e04ec4fee1e8c0b22bd62a03d..d50d46f226a059d43e0f2e98eb2c148f953a3c8c 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostDocumentSaveParticipant.test.ts @@ -298,7 +298,7 @@ suite('ExtHostDocumentSaveParticipant', () => { let sub = participant.getOnWillSaveTextDocumentEvent(nullExtensionDescription)(function (e) { // concurrent change from somewhere - documents.$acceptModelChanged(resource.toString(), { + documents.$acceptModelChanged(resource, { changes: [{ range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 }, rangeLength: undefined, @@ -332,7 +332,7 @@ suite('ExtHostDocumentSaveParticipant', () => { const { resource, edits } = edit; const uri = URI.revive(resource); for (const { text, range } of edits) { - documents.$acceptModelChanged(uri.toString(), { + documents.$acceptModelChanged(uri, { changes: [{ range, text,