提交 ed26ad52 编写于 作者: J Johannes Rieken

add TextEditorSelectionChangeKind when emitting selection change event, #8093

上级 ed3b90a8
......@@ -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).
*/
......
......@@ -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
});
}
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册