From 57d3a4a86f5d9f94a04f8843d01e897c8c467335 Mon Sep 17 00:00:00 2001 From: rebornix Date: Thu, 13 Oct 2016 22:11:38 -0700 Subject: [PATCH] update internal cursor position per Code selection change --- src/mode/modeHandler.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mode/modeHandler.ts b/src/mode/modeHandler.ts index 8d9e2762a66..ecd43fcaf3f 100644 --- a/src/mode/modeHandler.ts +++ b/src/mode/modeHandler.ts @@ -496,6 +496,18 @@ export class ModeHandler implements vscode.Disposable { return; } + if (!e.kind || e.kind === vscode.TextEditorSelectionChangeKind.Command) { + // Whether e.kind is undefined or Command, it means the selection change is from Code. + if (selection) { + this._vimState.cursorPosition = Position.FromVSCodePosition(selection.active); + this._vimState.cursorStartPosition = Position.FromVSCodePosition(selection.start); + + this._vimState.desiredColumn = this._vimState.cursorPosition.character; + } + + return; + } + // Only handle mouse selections if (e.kind !== vscode.TextEditorSelectionChangeKind.Mouse) { return; @@ -520,7 +532,7 @@ export class ModeHandler implements vscode.Disposable { } if (selection) { - var newPosition = new Position(selection.active.line, selection.active.character); + let newPosition = new Position(selection.active.line, selection.active.character); if (newPosition.character >= newPosition.getLineEnd().character) { if (this._vimState.currentMode !== ModeName.Insert) {