mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 10:38:59 +01:00
add new event onDidChangeVisibleTextEditors, #643
This commit is contained in:
@@ -232,6 +232,9 @@ export class ExtHostAPIImplementation {
|
||||
return extHostEditors.createTextEditorDecorationType(options);
|
||||
},
|
||||
onDidChangeActiveTextEditor: extHostEditors.onDidChangeActiveTextEditor.bind(extHostEditors),
|
||||
onDidChangeVisibleTextEditors(listener, thisArg, disposables) {
|
||||
return extHostEditors.onDidChangeVisibleTextEditors(listener, thisArg, disposables);
|
||||
},
|
||||
onDidChangeTextEditorSelection: (listener: (e: vscode.TextEditorSelectionChangeEvent) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => {
|
||||
return extHostEditors.onDidChangeTextEditorSelection(listener, thisArgs, disposables);
|
||||
},
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { readonly, illegalArgument } from 'vs/base/common/errors';
|
||||
import { equals as arrayEquals } from 'vs/base/common/arrays';
|
||||
import { IdGenerator } from 'vs/base/common/idGenerator';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
@@ -32,6 +33,7 @@ export class ExtHostEditors extends ExtHostEditorsShape {
|
||||
private _editors: { [id: string]: ExtHostTextEditor };
|
||||
private _proxy: MainThreadEditorsShape;
|
||||
private _onDidChangeActiveTextEditor: Emitter<vscode.TextEditor>;
|
||||
private _onDidChangeVisibleTextEditors: Emitter<vscode.TextEditor[]>;
|
||||
private _extHostDocuments: ExtHostDocuments;
|
||||
private _activeEditorId: string;
|
||||
private _visibleEditorIds: string[];
|
||||
@@ -53,6 +55,7 @@ export class ExtHostEditors extends ExtHostEditorsShape {
|
||||
this._extHostDocuments = extHostDocuments;
|
||||
this._proxy = threadService.get(MainContext.MainThreadEditors);
|
||||
this._onDidChangeActiveTextEditor = new Emitter<vscode.TextEditor>();
|
||||
this._onDidChangeVisibleTextEditors = new Emitter<vscode.TextEditor[]>();
|
||||
this._editors = Object.create(null);
|
||||
|
||||
this._visibleEditorIds = [];
|
||||
@@ -70,6 +73,10 @@ export class ExtHostEditors extends ExtHostEditorsShape {
|
||||
return this._onDidChangeActiveTextEditor && this._onDidChangeActiveTextEditor.event;
|
||||
}
|
||||
|
||||
get onDidChangeVisibleTextEditors(): Event<vscode.TextEditor[]> {
|
||||
return this._onDidChangeVisibleTextEditors && this._onDidChangeVisibleTextEditors.event;
|
||||
}
|
||||
|
||||
showTextDocument(document: TextDocument, column: ViewColumn, preserveFocus: boolean): TPromise<vscode.TextEditor> {
|
||||
return this._proxy.$tryShowTextDocument(<URI>document.uri, TypeConverters.fromViewColumn(column), preserveFocus).then(id => {
|
||||
let editor = this._editors[id];
|
||||
@@ -115,14 +122,25 @@ export class ExtHostEditors extends ExtHostEditorsShape {
|
||||
}
|
||||
|
||||
$acceptActiveEditorAndVisibleEditors(id: string, visibleIds: string[]): void {
|
||||
this._visibleEditorIds = visibleIds;
|
||||
let visibleChanged = false;
|
||||
let activeChanged = false;
|
||||
|
||||
if (this._activeEditorId === id) {
|
||||
// nothing to do
|
||||
return;
|
||||
if (!arrayEquals(this._visibleEditorIds, visibleIds)) {
|
||||
this._visibleEditorIds = visibleIds;
|
||||
visibleChanged = true;
|
||||
}
|
||||
|
||||
if (this._activeEditorId !== id) {
|
||||
this._activeEditorId = id;
|
||||
activeChanged = true;
|
||||
}
|
||||
|
||||
if (visibleChanged) {
|
||||
this._onDidChangeVisibleTextEditors.fire(this.getVisibleTextEditors());
|
||||
}
|
||||
if (activeChanged) {
|
||||
this._onDidChangeActiveTextEditor.fire(this.getActiveTextEditor());
|
||||
}
|
||||
this._activeEditorId = id;
|
||||
this._onDidChangeActiveTextEditor.fire(this.getActiveTextEditor());
|
||||
}
|
||||
|
||||
$acceptEditorPositionData(data: ITextEditorPositionData): void {
|
||||
|
||||
Reference in New Issue
Block a user