mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-07 17:44:05 -05:00
#1835 - onDidChangeTextEditorViewColumn event
This commit is contained in:
@@ -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
19
src/vs/vscode.d.ts
vendored
@@ -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).
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user