X-Git-Url: https://git.r.bdr.sh/rbdr/dotfiles/blobdiff_plain/24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a..050ac4424016a2844a6f8b9a4972a13ce14e7ec9:/atom/packages/vim-mode/spec/scroll-spec.coffee?ds=sidebyside diff --git a/atom/packages/vim-mode/spec/scroll-spec.coffee b/atom/packages/vim-mode/spec/scroll-spec.coffee index 9473193..ebe400a 100644 --- a/atom/packages/vim-mode/spec/scroll-spec.coffee +++ b/atom/packages/vim-mode/spec/scroll-spec.coffee @@ -11,8 +11,8 @@ describe "Scrolling", -> editorElement = element editor = editorElement.getModel() vimState = editorElement.vimState - vimState.activateCommandMode() - vimState.resetCommandMode() + vimState.activateNormalMode() + vimState.resetNormalMode() keydown = (key, options={}) -> options.element ?= editorElement @@ -120,3 +120,111 @@ describe "Scrolling", -> keydown('b') expect(editor.setScrollTop).toHaveBeenCalledWith(860) expect(editor.moveToFirstCharacterOfLine).not.toHaveBeenCalled() + + describe "horizontal scroll cursor keybindings", -> + beforeEach -> + editor.setWidth(600) + editor.setLineHeightInPixels(10) + editor.setDefaultCharWidth(10) + text = "" + for i in [100..199] + text += "#{i} " + editor.setText(text) + editor.setCursorBufferPosition([0, 0]) + + describe "the zs keybinding", -> + zsPos = (pos) -> + editor.setCursorBufferPosition([0, pos]) + keydown('z') + keydown('s') + editor.getScrollLeft() + + startPosition = NaN + + beforeEach -> + startPosition = editor.getScrollLeft() + + it "does nothing near the start of the line", -> + pos1 = zsPos(1) + expect(pos1).toEqual(startPosition) + + it "moves the cursor the nearest it can to the left edge of the editor", -> + pos10 = zsPos(10) + expect(pos10).toBeGreaterThan(startPosition) + + pos11 = zsPos(11) + expect(pos11 - pos10).toEqual(10) + + it "does nothing near the end of the line", -> + posEnd = zsPos(399) + expect(editor.getCursorBufferPosition()).toEqual [0, 399] + + pos390 = zsPos(390) + expect(pos390).toEqual(posEnd) + expect(editor.getCursorBufferPosition()).toEqual [0, 390] + + pos340 = zsPos(340) + expect(pos340).toBeLessThan(posEnd) + pos342 = zsPos(342) + expect(pos342 - pos340).toEqual(20) + + it "does nothing if all lines are short", -> + editor.setText('short') + startPosition = editor.getScrollLeft() + pos1 = zsPos(1) + expect(pos1).toEqual(startPosition) + expect(editor.getCursorBufferPosition()).toEqual [0, 1] + pos10 = zsPos(10) + expect(pos10).toEqual(startPosition) + expect(editor.getCursorBufferPosition()).toEqual [0, 4] + + + describe "the ze keybinding", -> + zePos = (pos) -> + editor.setCursorBufferPosition([0, pos]) + keydown('z') + keydown('e') + editor.getScrollLeft() + + startPosition = NaN + + beforeEach -> + startPosition = editor.getScrollLeft() + + it "does nothing near the start of the line", -> + pos1 = zePos(1) + expect(pos1).toEqual(startPosition) + + pos40 = zePos(40) + expect(pos40).toEqual(startPosition) + + it "moves the cursor the nearest it can to the right edge of the editor", -> + pos110 = zePos(110) + expect(pos110).toBeGreaterThan(startPosition) + + pos109 = zePos(109) + expect(pos110 - pos109).toEqual(10) + + it "does nothing when very near the end of the line", -> + posEnd = zePos(399) + expect(editor.getCursorBufferPosition()).toEqual [0, 399] + + pos397 = zePos(397) + expect(pos397).toEqual(posEnd) + expect(editor.getCursorBufferPosition()).toEqual [0, 397] + + pos380 = zePos(380) + expect(pos380).toBeLessThan(posEnd) + + pos382 = zePos(382) + expect(pos382 - pos380).toEqual(20) + + it "does nothing if all lines are short", -> + editor.setText('short') + startPosition = editor.getScrollLeft() + pos1 = zePos(1) + expect(pos1).toEqual(startPosition) + expect(editor.getCursorBufferPosition()).toEqual [0, 1] + pos10 = zePos(10) + expect(pos10).toEqual(startPosition) + expect(editor.getCursorBufferPosition()).toEqual [0, 4]