add TextEditorSelectionChangeKind when emitting selection change event, #8093

This commit is contained in:
Johannes Rieken 2016-08-12 12:23:39 +02:00
parent ed3b90a809
commit ed26ad524e
3 changed files with 47 additions and 6 deletions

23
src/vs/vscode.d.ts vendored
View file

@ -505,6 +505,24 @@ declare namespace vscode {
isReversed: boolean;
}
/**
* Represents sources that can cause [selection change events](#window.onDidChangeTextEditorSelection).
*/
export enum TextEditorSelectionChangeKind {
/**
* Selection changed due to typing in the editor.
*/
Keyboard = 1,
/**
* Selection change due to clicking in the editor.
*/
Mouse = 2,
/**
* Selection changed because a command ran.
*/
Command = 3
}
/**
* Represents an event describing the change in a [text editor's selections](#TextEditor.selections).
*/
@ -513,6 +531,11 @@ declare namespace vscode {
* The [text editor](#TextEditor) for which the selections have changed.
*/
textEditor: TextEditor;
/**
* The [change kind](#TextEditorSelectionChangeKind) which has triggered this
* event. Can be `undefined`.
*/
kind: TextEditorSelectionChangeKind;
/**
* The new value for the [text editor's selections](#TextEditor.selections).
*/

View file

@ -11,7 +11,7 @@ import Event, {Emitter} from 'vs/base/common/event';
import {TPromise} from 'vs/base/common/winjs.base';
import {IThreadService} from 'vs/workbench/services/thread/common/threadService';
import {ExtHostDocuments, ExtHostDocumentData} from 'vs/workbench/api/node/extHostDocuments';
import {Selection, Range, Position, EditorOptions, EndOfLine, TextEditorRevealType} from './extHostTypes';
import {Selection, Range, Position, EditorOptions, EndOfLine, TextEditorRevealType, TextEditorSelectionChangeKind} from './extHostTypes';
import {ISingleEditOperation} from 'vs/editor/common/editorCommon';
import {IResolvedTextEditorConfiguration, ISelectionChangeEvent} from 'vs/workbench/api/node/mainThreadEditorsTracker';
import * as TypeConverters from './extHostTypeConverters';
@ -103,12 +103,14 @@ export class ExtHostEditors extends ExtHostEditorsShape {
}
$acceptSelectionsChanged(id: string, event: ISelectionChangeEvent): void {
let selections = event.selections.map(TypeConverters.toSelection);
let editor = this._editors[id];
editor._acceptSelections(selections);
const kind = TextEditorSelectionChangeKind.fromValue(event.source);
const selections = event.selections.map(TypeConverters.toSelection);
const textEditor = this._editors[id];
textEditor._acceptSelections(selections);
this._onDidChangeTextEditorSelection.fire({
textEditor: editor,
selections: selections
textEditor,
selections,
kind
});
}

View file

@ -829,6 +829,22 @@ export enum TextEditorRevealType {
InCenterIfOutsideViewport = 2
}
export enum TextEditorSelectionChangeKind {
Keyboard = 1,
Mouse = 2,
Command = 3
}
export namespace TextEditorSelectionChangeKind {
export function fromValue(s: string) {
switch (s) {
case 'keyboard': return TextEditorSelectionChangeKind.Keyboard;
case 'mouse': return TextEditorSelectionChangeKind.Mouse;
case 'api': return TextEditorSelectionChangeKind.Command;
}
}
}
export class DocumentLink {
range: Range;