Skip to content

Commit

Permalink
Merge pull request #181 from aioutecism/hotfix/cursor-losing-after-ta…
Browse files Browse the repository at this point in the history
…b-switched

Fix #176
  • Loading branch information
aioutecism committed Jun 13, 2017
2 parents eddbb7d + d465e04 commit 9a39fda
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions src/Modes/Insert.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {window, Position} from 'vscode';
import {window, TextEditor, Position} from 'vscode';
import {Mode, ModeID} from './Mode';
import {MatchResultKind} from '../Mappers/Generic';
import {CommandMap} from '../Mappers/Command';
Expand Down Expand Up @@ -46,9 +46,13 @@ export class ModeInsert extends Mode {
});
}

private textEditor?: TextEditor;

enter(): void {
super.enter();

this.textEditor = window.activeTextEditor;

this.startRecord();
}

Expand All @@ -57,7 +61,9 @@ export class ModeInsert extends Mode {

this.endRecord();

ActionMoveCursor.byMotions({ motions: [ MotionCharacter.left() ] });
if (this.textEditor === window.activeTextEditor) {
ActionMoveCursor.byMotions({ motions: [ MotionCharacter.left() ] });
}
}

input(key: string, args: {replaceCharCnt?: number} = {}): MatchResultKind {
Expand Down Expand Up @@ -95,24 +101,22 @@ export class ModeInsert extends Mode {
return;
}

const activeTextEditor = window.activeTextEditor;
if (! activeTextEditor) {
if (! this.textEditor) {
return;
}

this.isRecording = true;
this.recordStartPosition = activeTextEditor.selection.active;
this.recordStartLineText = activeTextEditor.document.lineAt(this.recordStartPosition.line).text;
this.recordStartPosition = this.textEditor.selection.active;
this.recordStartLineText = this.textEditor.document.lineAt(this.recordStartPosition.line).text;
this._recordedCommandMaps = [];
}

private processRecord(): void {
const activeTextEditor = window.activeTextEditor;
if (! activeTextEditor) {
if (! this.textEditor) {
return;
}

const currentLineText = activeTextEditor.document.lineAt(this.recordStartPosition.line).text;
const currentLineText = this.textEditor.document.lineAt(this.recordStartPosition.line).text;

let deletionCountBefore = 0;
let deletionCountAfter = 0;
Expand Down Expand Up @@ -226,25 +230,23 @@ export class ModeInsert extends Mode {
}

if (map.keys === '\n') {
const activeTextEditor = window.activeTextEditor;
if (! activeTextEditor) {
if (! this.textEditor) {
return Promise.resolve(false);
}

this.recordStartPosition = activeTextEditor.selection.active;
this.recordStartLineText = activeTextEditor.document.lineAt(this.recordStartPosition.line).text;
this.recordStartPosition = this.textEditor.selection.active;
this.recordStartLineText = this.textEditor.document.lineAt(this.recordStartPosition.line).text;
}

return Promise.resolve(true);
}

onDidChangeTextEditorSelection(): void {
const activeTextEditor = window.activeTextEditor;
if (! activeTextEditor) {
if (! this.textEditor) {
return;
}

if (activeTextEditor.selection.active.line !== this.recordStartPosition.line) {
if (this.textEditor.selection.active.line !== this.recordStartPosition.line) {
this.endRecord();
}
}
Expand Down

0 comments on commit 9a39fda

Please sign in to comment.