#1835 - onDidChangeTextEditorViewColumn event

This commit is contained in:
Johannes Rieken
2016-01-21 15:12:13 +01:00
parent 84b1033d29
commit 5be404dd5c
4 changed files with 54 additions and 6 deletions

View File

@@ -6,7 +6,7 @@
'use strict';
import * as assert from 'assert';
import {workspace, window, ViewColumn} from 'vscode';
import {workspace, window, ViewColumn, TextEditor} from 'vscode';
import {join} from 'path';
import {cleanUp, pathEquals} from './utils';
@@ -39,4 +39,23 @@ suite("window namespace tests", () => {
return Promise.all([p1, p2, p3]);
});
});
test('editor, onDidChangeTextEditorViewColumn', () => {
let actualTextEditor: TextEditor;
let actualViewColumn: ViewColumn;
let registration = window.onDidChangeTextEditorViewColumn(event => {
actualTextEditor = event.textEditor;
actualViewColumn = event.viewColumn;
});
return workspace.openTextDocument(join(workspace.rootPath, './far.js')).then(doc => {
return window.showTextDocument(doc, ViewColumn.One).then(editor => {
assert.ok(actualTextEditor === editor);
assert.ok(actualViewColumn === editor.viewColumn);
registration.dispose();
});
});
});
});

19
src/vs/vscode.d.ts vendored
View File

@@ -509,6 +509,20 @@ declare namespace vscode {
options: TextEditorOptions;
}
/**
* Represents an event describing the change of a [text editor's view column](#TextEditor.viewColumn).
*/
export interface TextEditorViewColumnChangeEvent {
/**
* The [text editor](#TextEditor) for which the options have changed.
*/
textEditor: TextEditor;
/**
* The new value for the [text editor's view column](#TextEditor.viewColumn).
*/
viewColumn: ViewColumn;
}
/**
* Represents a [text editor](#TextEditor)'s [options](#TextEditor.options).
*/
@@ -2771,6 +2785,11 @@ declare namespace vscode {
*/
export const onDidChangeTextEditorOptions: Event<TextEditorOptionsChangeEvent>;
/**
* An [event](#Event) which fires when the view column of an editor das changed.
*/
export const onDidChangeTextEditorViewColumn: Event<TextEditorViewColumnChangeEvent>
/**
* Show the given document in a text editor. A [column](#ViewColumn) can be provided
* to control where the editor is being shown. Might change the [active editor](#window.activeTextEditor).

View File

@@ -191,6 +191,9 @@ export class ExtHostAPIImplementation {
onDidChangeTextEditorOptions: (listener: (e: vscode.TextEditorOptionsChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => {
return pluginHostEditors.onDidChangeTextEditorOptions(listener, thisArgs, disposables);
},
onDidChangeTextEditorViewColumn(listener, thisArg?, disposables?) {
return pluginHostEditors.onDidChangeTextEditorViewColumn(listener, thisArg, disposables);
},
showInformationMessage: (message, ...items) => {
return pluginHostMessageService.showMessage(Severity.Info, message, items);
},

View File

@@ -18,7 +18,7 @@ import {Position as EditorPosition} from 'vs/platform/editor/common/editor';
import {IModelService} from 'vs/editor/common/services/modelService';
import {MainThreadEditorsTracker, TextEditorRevealType, MainThreadTextEditor, ITextEditorConfiguration} from 'vs/workbench/api/node/mainThreadEditors';
import * as TypeConverters from './extHostTypeConverters';
import {TextDocument, TextEditorSelectionChangeEvent, TextEditorOptionsChangeEvent, TextEditorOptions, ViewColumn} from 'vscode';
import {TextDocument, TextEditorSelectionChangeEvent, TextEditorOptionsChangeEvent, TextEditorOptions, TextEditorViewColumnChangeEvent, ViewColumn} from 'vscode';
import {EventType} from 'vs/workbench/common/events';
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
import {IEventService} from 'vs/platform/event/common/event';
@@ -46,6 +46,9 @@ export class ExtHostEditors {
public onDidChangeTextEditorOptions: Event<TextEditorOptionsChangeEvent>;
private _onDidChangeTextEditorOptions: Emitter<TextEditorOptionsChangeEvent>;
public onDidChangeTextEditorViewColumn: Event<TextEditorViewColumnChangeEvent>;
private _onDidChangeTextEditorViewColumn: Emitter<TextEditorViewColumnChangeEvent>;
private _editors: { [id: string]: ExtHostTextEditor };
private _proxy: MainThreadEditors;
private _onDidChangeActiveTextEditor: Emitter<vscode.TextEditor>;
@@ -62,6 +65,9 @@ export class ExtHostEditors {
this._onDidChangeTextEditorOptions = new Emitter<TextEditorOptionsChangeEvent>();
this.onDidChangeTextEditorOptions = this._onDidChangeTextEditorOptions.event;
this._onDidChangeTextEditorViewColumn = new Emitter<TextEditorViewColumnChangeEvent>();
this.onDidChangeTextEditorViewColumn = this._onDidChangeTextEditorViewColumn.event;
this._modelService = threadService.getRemotable(ExtHostModelService);
this._proxy = threadService.getRemotable(MainThreadEditors);
this._onDidChangeActiveTextEditor = new Emitter<vscode.TextEditor>();
@@ -137,10 +143,11 @@ export class ExtHostEditors {
_acceptEditorPositionData(data: ITextEditorPositionData): void {
for (let id in data) {
let editor = this._editors[id];
let value = TypeConverters.toViewColumn(data[id]);
if (editor.viewColumn !== value) {
editor._acceptViewColumn(value);
let textEditor = this._editors[id];
let viewColumn = TypeConverters.toViewColumn(data[id]);
if (textEditor.viewColumn !== viewColumn) {
textEditor._acceptViewColumn(viewColumn);
this._onDidChangeTextEditorViewColumn.fire({ textEditor, viewColumn });
}
}
}