From eba220d39c2c85ceb2f868e4639f7cb10c1cd9a3 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 2 Feb 2016 09:25:50 +0100 Subject: [PATCH] prepare bulk editor for not having an active editor, fixes #1708 --- extensions/vscode-api-tests/src/workspace.test.ts | 14 ++++++++++++-- src/vs/editor/common/services/bulkEdit.ts | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/extensions/vscode-api-tests/src/workspace.test.ts b/extensions/vscode-api-tests/src/workspace.test.ts index ec62e5fb21a..e0dc2fac5c7 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, Uri, EventEmitter, CancellationTokenSource, Disposable} from 'vscode'; +import {workspace, TextDocument, window, Position, Uri, EventEmitter, CancellationTokenSource, Disposable, WorkspaceEdit} from 'vscode'; import {createRandomFile, deleteFile, cleanUp, pathEquals} from './utils'; import {join, basename} from 'path'; import * as fs from 'fs'; @@ -304,7 +304,8 @@ suite('workspace-namespace', () => { return new Promise((resolve, reject) => { - workspace.onDidChangeTextDocument(event => { + let subscription = workspace.onDidChangeTextDocument(event => { + subscription.dispose(); assert.ok(event.document === doc); assert.equal(event.document.getText(), 'call1'); resolve(); @@ -334,4 +335,13 @@ suite('workspace-namespace', () => { assert.equal(res, void 0); }); }); + + test('applyEdit', () => { + + return workspace.openTextDocument(Uri.parse('untitled://' + join(workspace.rootPath, './new2.txt'))).then(doc => { + let edit = new WorkspaceEdit(); + edit.insert(doc.uri, new Position(0, 0), new Array(1000).join('Hello World')); + return workspace.applyEdit(edit); + }); + }); }); diff --git a/src/vs/editor/common/services/bulkEdit.ts b/src/vs/editor/common/services/bulkEdit.ts index c682d994559..78ed1a2a21b 100644 --- a/src/vs/editor/common/services/bulkEdit.ts +++ b/src/vs/editor/common/services/bulkEdit.ts @@ -212,7 +212,7 @@ class BulkEditModel { var textEditorModel = model.textEditorModel, task: EditTask; - if (textEditorModel.getAssociatedResource().toString() === this._sourceModel.toString()) { + if (this._sourceModel && textEditorModel.getAssociatedResource().toString() === this._sourceModel.toString()) { this._sourceModelTask = new SourceModelEditTask(textEditorModel, this._sourceSelections); task = this._sourceModelTask; } else { @@ -287,7 +287,7 @@ export function createBulkEdit(eventService: IEventService, editorService: IEdit let uri: URI; let selections: IEditorSelection[]; - if (editor) { + if (editor && editor.getModel()) { uri = editor.getModel().getAssociatedResource(); selections = editor.getSelections(); }