diff --git a/extensions/vscode-api-tests/src/workspace.test.ts b/extensions/vscode-api-tests/src/workspace.test.ts index 6a7e09de9b30f352f832c1764a850ef041f8d3ac..47c7616650a56adc506902bfe5a6e80ee2ab9df9 100644 --- a/extensions/vscode-api-tests/src/workspace.test.ts +++ b/extensions/vscode-api-tests/src/workspace.test.ts @@ -294,6 +294,23 @@ suite('workspace-namespace', () => { }); }); + test('registerTextDocumentContentProvider, empty doc', function () { + + let registration = workspace.registerTextDocumentContentProvider('foo', { + provideTextDocumentContent(uri) { + return ''; + } + }); + + const uri = Uri.parse('foo:doc/empty'); + + return workspace.openTextDocument(uri).then(doc => { + assert.equal(doc.getText(), ''); + assert.equal(doc.uri.toString(), uri.toString()); + registration.dispose(); + }); + }); + test('registerTextDocumentContentProvider, change event', function () { let callCount = 0; diff --git a/src/vs/workbench/api/node/extHostDocuments.ts b/src/vs/workbench/api/node/extHostDocuments.ts index 4c24bf70d340fbc3d256517d9b95490d4dd06686..57e269d6f60ce586846396bcb05ac047dd5e8f39 100644 --- a/src/vs/workbench/api/node/extHostDocuments.ts +++ b/src/vs/workbench/api/node/extHostDocuments.ts @@ -631,7 +631,7 @@ export class MainThreadDocuments { this._resourceContentProvider[handle] = ResourceEditorInput.registerResourceContentProvider(scheme, { provideTextContent: (uri: URI): TPromise => { return this._proxy.$provideTextDocumentContent(handle, uri).then(value => { - if (value) { + if (typeof value === 'string') { this._virtualDocumentSet[uri.toString()] = true; const firstLineText = value.substr(0, 1 + value.search(/\r?\n/)); const mode = this._modeService.getOrCreateModeByFilenameOrFirstLine(uri.fsPath, firstLineText);