From 1de8f1d608e072bdaf6d431fe92bf58ccad337b4 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 2 Dec 2015 11:01:07 +0100 Subject: [PATCH] #723 mark untitled documents as dirty when opened --- .../vscode-api-tests/src/workspace.test.ts | 33 ++++++++++++++++++- .../api/common/pluginHostDocuments.ts | 4 ++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/extensions/vscode-api-tests/src/workspace.test.ts b/extensions/vscode-api-tests/src/workspace.test.ts index 4cbc96827da..391ef50750e 100644 --- a/extensions/vscode-api-tests/src/workspace.test.ts +++ b/extensions/vscode-api-tests/src/workspace.test.ts @@ -6,7 +6,7 @@ 'use strict'; import * as assert from 'assert'; -import {workspace, TextDocument, window, Position} from 'vscode'; +import {workspace, TextDocument, window, Position, Uri} from 'vscode'; import {createRandomFile, deleteFile, cleanUp} from './utils'; import {join} from 'path'; import * as fs from 'fs'; @@ -41,6 +41,37 @@ suite('workspace-namespace', () => { }); }); + test('openTextDocument, untitled is dirty', function(done) { + workspace.openTextDocument(Uri.parse('untitled://' + join(workspace.rootPath, './newfile.txt'))).then(doc => { + assert.equal(doc.uri.scheme, 'untitled'); + assert.ok(doc.isDirty); + done(); + }); + }); + + // test('openTextDocument, untitled closes on save', function(done) { + // workspace.openTextDocument(Uri.parse('untitled://' + join(workspace.rootPath, './newfile2.txt'))).then(doc => { + // assert.equal(doc.uri.scheme, 'untitled'); + // assert.ok(doc.isDirty); + + // let closed: TextDocument, opened: TextDocument; + // let d0 = workspace.onDidCloseTextDocument(e => closed = e); + // let d1 = workspace.onDidOpenTextDocument(e => opened = e); + + // function donedone() { + // assert.ok(closed === doc); + // assert.equal(opened.uri.scheme, 'file'); + // assert.equal(opened.uri.toString(), 'file:///' + join(workspace.rootPath, './newfile2.txt')) + // d0.dispose(); + // d1.dispose(); + + // deleteFile(opened.uri).then(done, done); + // } + + // doc.save().then(donedone, done); + // }); + // }) + test('events: onDidOpenTextDocument, onDidChangeTextDocument, onDidSaveTextDocument', () => { return createRandomFile().then(file => { let disposables = []; diff --git a/src/vs/workbench/api/common/pluginHostDocuments.ts b/src/vs/workbench/api/common/pluginHostDocuments.ts index 0936720cb98..32f51520215 100644 --- a/src/vs/workbench/api/common/pluginHostDocuments.ts +++ b/src/vs/workbench/api/common/pluginHostDocuments.ts @@ -630,7 +630,7 @@ export class MainThreadDocuments { // --- from plugin host process - _trySaveDocument(uri:URI): TPromise { + _trySaveDocument(uri: URI): TPromise { return this._textFileService.save(uri); } @@ -679,6 +679,8 @@ export class MainThreadDocuments { if (input.getResource().toString() !== uri.toString()) { throw new Error(`expected URI ${uri.toString() } BUT GOT ${input.getResource().toString() }`); } + return this._proxy._acceptModelDirty(uri); // mark as dirty + }).then(() => { return true; }); });