From d3d832a7406201b4b0fb7a50bf7c679d17b63fb6 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Fri, 13 Jan 2012 10:25:16 -0800 Subject: [PATCH] Add h (move left) monvment to vimMode. --- spec/atom/vim-mode-spec.coffee | 10 ++++++++++ src/atom/vim-mode-operators.coffee | 6 ++++++ src/atom/vim-mode.coffee | 4 +++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/spec/atom/vim-mode-spec.coffee b/spec/atom/vim-mode-spec.coffee index c6c581410..5026ebd1a 100644 --- a/spec/atom/vim-mode-spec.coffee +++ b/spec/atom/vim-mode-spec.coffee @@ -39,6 +39,16 @@ describe "VimMode", -> expect(editor.buffer.getText()).toBe '1345' expect(editor.getCursor()).toEqual(column: 1, row: 0) + describe "the h/j/k/l keybindings", -> + it "move the cursor left/up/down/right", -> + editor.buffer.setText("12345\nabcde\nABCDE") + editor.setCursor(column: 1, row: 1) + + editor.trigger keydownEvent('h') + expect(editor.getCursor()).toEqual(column: 0, row: 1) + editor.trigger keydownEvent('h') + expect(editor.getCursor()).toEqual(column: 0, row: 1) + describe "numeric prefix binding", -> it "repeats the following operation N times", -> editor.buffer.setText("12345") diff --git a/src/atom/vim-mode-operators.coffee b/src/atom/vim-mode-operators.coffee index 289819395..9f269fcba 100644 --- a/src/atom/vim-mode-operators.coffee +++ b/src/atom/vim-mode-operators.coffee @@ -23,3 +23,9 @@ module.exports = isComplete: -> true + MoveLeft: class + execute: (editor) -> + {column, row} = editor.getCursor() + editor.navigateLeft() if column > 0 + + isComplete: -> true diff --git a/src/atom/vim-mode.coffee b/src/atom/vim-mode.coffee index c2b38ddab..283d00c08 100644 --- a/src/atom/vim-mode.coffee +++ b/src/atom/vim-mode.coffee @@ -1,6 +1,6 @@ _ = require 'underscore' $ = require 'jquery' -{ NumericPrefix, DeleteChar } = require 'vim-mode-operators' +{ NumericPrefix, DeleteChar, MoveLeft } = require 'vim-mode-operators' module.exports = class VimMode @@ -19,6 +19,7 @@ class VimMode @editor.on 'command-mode:activate', => @activateCommandMode() @editor.on 'command-mode:delete-char', => @deleteChar() @editor.on 'command-mode:numeric-prefix', (e) => @numericPrefix(e) + @editor.on 'command-mode:move-left', => @pushOperator(new MoveLeft) activateInsertMode: -> @editor.removeClass('command-mode') @@ -38,6 +39,7 @@ class VimMode bindings = 'i': 'insert-mode:activate' 'x': 'command-mode:delete-char' + 'h': 'command-mode:move-left' for i in [0..9] bindings[i] = 'command-mode:numeric-prefix' bindings