128 lines
4.1 KiB
CoffeeScript
128 lines
4.1 KiB
CoffeeScript
helpers = require './spec-helper'
|
|
|
|
describe "Prefixes", ->
|
|
[editor, editorView, vimState] = []
|
|
|
|
beforeEach ->
|
|
vimMode = atom.packages.loadPackage('vim-mode')
|
|
vimMode.activateResources()
|
|
|
|
editorView = helpers.cacheEditor(editorView)
|
|
editor = editorView.editor
|
|
|
|
vimState = editorView.vimState
|
|
vimState.activateCommandMode()
|
|
vimState.resetCommandMode()
|
|
|
|
keydown = (key, options={}) ->
|
|
options.element ?= editorView[0]
|
|
helpers.keydown(key, options)
|
|
|
|
describe "Repeat", ->
|
|
describe "with operations", ->
|
|
beforeEach ->
|
|
editor.setText("123456789abc")
|
|
editor.setCursorScreenPosition([0, 0])
|
|
|
|
it "repeats N times", ->
|
|
keydown('3')
|
|
keydown('x')
|
|
|
|
expect(editor.getText()).toBe '456789abc'
|
|
|
|
it "repeats NN times", ->
|
|
keydown('1')
|
|
keydown('0')
|
|
keydown('x')
|
|
|
|
expect(editor.getText()).toBe 'bc'
|
|
|
|
describe "with motions", ->
|
|
beforeEach ->
|
|
editor.setText('one two three')
|
|
editor.setCursorScreenPosition([0, 0])
|
|
|
|
it "repeats N times", ->
|
|
keydown('d')
|
|
keydown('2')
|
|
keydown('w')
|
|
|
|
expect(editor.getText()).toBe 'three'
|
|
|
|
describe "in visual mode", ->
|
|
beforeEach ->
|
|
editor.setText('one two three')
|
|
editor.setCursorScreenPosition([0, 0])
|
|
|
|
it "repeats movements in visual mode", ->
|
|
keydown("v")
|
|
keydown("2")
|
|
keydown("w")
|
|
|
|
expect(editor.getCursorScreenPosition()).toEqual [0, 8]
|
|
|
|
describe "Register", ->
|
|
describe "the a register", ->
|
|
it "saves a value for future reading", ->
|
|
vimState.setRegister('a', text: 'new content')
|
|
expect(vimState.getRegister("a").text).toEqual 'new content'
|
|
|
|
it "overwrites a value previously in the register", ->
|
|
vimState.setRegister('a', text: 'content')
|
|
vimState.setRegister('a', text: 'new content')
|
|
expect(vimState.getRegister("a").text).toEqual 'new content'
|
|
|
|
|
|
describe "the * register", ->
|
|
describe "reading", ->
|
|
it "is the same the system clipboard", ->
|
|
expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
|
|
expect(vimState.getRegister('*').type).toEqual 'character'
|
|
|
|
describe "writing", ->
|
|
beforeEach ->
|
|
vimState.setRegister('*', text: 'new content')
|
|
|
|
it "overwrites the contents of the system clipboard", ->
|
|
expect(atom.clipboard.read()).toEqual 'new content'
|
|
|
|
# FIXME: once linux support comes out, this needs to read from
|
|
# the correct clipboard. For now it behaves just like the * register
|
|
# See :help x11-cut-buffer and :help registers for more details on how these
|
|
# registers work on an X11 based system.
|
|
describe "the + register", ->
|
|
describe "reading", ->
|
|
it "is the same the system clipboard", ->
|
|
expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
|
|
expect(vimState.getRegister('*').type).toEqual 'character'
|
|
|
|
describe "writing", ->
|
|
beforeEach ->
|
|
vimState.setRegister('*', text: 'new content')
|
|
|
|
it "overwrites the contents of the system clipboard", ->
|
|
expect(atom.clipboard.read()).toEqual 'new content'
|
|
|
|
describe "the _ register", ->
|
|
describe "reading", ->
|
|
it "is always the empty string", ->
|
|
expect(vimState.getRegister("_").text).toEqual ''
|
|
|
|
describe "writing", ->
|
|
it "throws away anything written to it", ->
|
|
vimState.setRegister('_', text: 'new content')
|
|
expect(vimState.getRegister("_").text).toEqual ''
|
|
|
|
describe "the % register", ->
|
|
beforeEach ->
|
|
spyOn(editor, 'getUri').andReturn('/Users/atom/known_value.txt')
|
|
|
|
describe "reading", ->
|
|
it "returns the filename of the current editor", ->
|
|
expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'
|
|
|
|
describe "writing", ->
|
|
it "throws away anything written to it", ->
|
|
vimState.setRegister('%', "new content")
|
|
expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'
|