summaryrefslogtreecommitdiffstats
path: root/.vim/bundle/vim-multiple-cursors/spec
diff options
context:
space:
mode:
authorLuke <luke@lukesmith.xyz>2018-01-21 19:52:37 -0700
committerLuke <luke@lukesmith.xyz>2018-01-21 19:52:37 -0700
commit51ef581bde5a98050db31343f7ef8c9d85136b22 (patch)
tree37f9f0dc8e621431e05dabd553a4aa2977dd8c98 /.vim/bundle/vim-multiple-cursors/spec
parentfe22a1e23348e266b77aa65d0ce63e19e74c604e (diff)
downloadeibhear-51ef581bde5a98050db31343f7ef8c9d85136b22.tar.gz
eibhear-51ef581bde5a98050db31343f7ef8c9d85136b22.tar.zst
eibhear-51ef581bde5a98050db31343f7ef8c9d85136b22.zip
vim files added
Diffstat (limited to '.vim/bundle/vim-multiple-cursors/spec')
-rw-r--r--.vim/bundle/vim-multiple-cursors/spec/benchmark_spec.rb142
-rw-r--r--.vim/bundle/vim-multiple-cursors/spec/multiple_cursors_spec.rb817
-rw-r--r--.vim/bundle/vim-multiple-cursors/spec/spec_helper.rb25
3 files changed, 984 insertions, 0 deletions
diff --git a/.vim/bundle/vim-multiple-cursors/spec/benchmark_spec.rb b/.vim/bundle/vim-multiple-cursors/spec/benchmark_spec.rb
new file mode 100644
index 0000000..73c81c5
--- /dev/null
+++ b/.vim/bundle/vim-multiple-cursors/spec/benchmark_spec.rb
@@ -0,0 +1,142 @@
+require 'vimrunner'
+require 'vimrunner/rspec'
+
+Vimrunner::RSpec.configure do |config|
+
+ # Use a single Vim instance for the test suite. Set to false to use an
+ # instance per test (slower, but can be easier to manage).
+ config.reuse_server = false
+
+ # Decide how to start a Vim instance. In this block, an instance should be
+ # spawned and set up with anything project-specific.
+ config.start_vim do
+ # vim = Vimrunner.start
+ # vim = Vimrunner::Server.new("/usr/local/bin/vim").start
+
+ # Or, start a GUI instance:
+ vim = Vimrunner.start_gvim
+
+ # Setup your plugin in the Vim instance
+ plugin_path = File.expand_path('../..', __FILE__)
+ vim.add_plugin(plugin_path, 'plugin/multiple_cursors.vim')
+
+ # The returned value is the Client available in the tests.
+ vim
+ end
+end
+
+def set_file_content(string)
+ string = normalize_string_indent(string)
+ File.open(filename, 'w'){ |f| f.write(string) }
+ vim.edit filename
+end
+
+def get_file_content()
+ vim.write
+ IO.read(filename).strip
+end
+
+def before(string)
+ set_file_content(string)
+end
+
+def after(string)
+ get_file_content().should eq normalize_string_indent(string)
+ type ":q<CR>"
+end
+
+def type(string)
+ string.scan(/<.*?>|./).each do |key|
+ if /<.*>/.match(key)
+ vim.feedkeys "\\#{key}"
+ else
+ vim.feedkeys key
+ end
+ end
+ sleep 0.2
+end
+
+describe "Multiple Cursors" do
+ let(:filename) { 'test.txt' }
+ let(:options) { [] }
+
+ specify "#benchmark" do
+ before <<-EOF
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ hello
+ EOF
+
+ # type ':profile start /tmp/test.result<CR>'
+ # type ':profile! file *multiple_cursors.vim<CR>'
+ type ':let g:multi_cursor_debug_latency=1<CR>'
+
+ type 'VG<C-n>Vchellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello<Esc>'
+
+ type ':echo multiple_cursors#get_latency_debug_file()<CR>'
+ sleep 3
+ latency_file = vim.command 'echo multiple_cursors#get_latency_debug_file()'
+ puts 'latency file = ' + latency_file
+
+ after <<-EOF
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello
+ EOF
+ end
+
+end
diff --git a/.vim/bundle/vim-multiple-cursors/spec/multiple_cursors_spec.rb b/.vim/bundle/vim-multiple-cursors/spec/multiple_cursors_spec.rb
new file mode 100644
index 0000000..2d92e5a
--- /dev/null
+++ b/.vim/bundle/vim-multiple-cursors/spec/multiple_cursors_spec.rb
@@ -0,0 +1,817 @@
+# -*- encoding: utf-8 -*-
+require 'spec_helper'
+
+def set_file_content(string)
+ string = normalize_string_indent(string)
+ File.open(filename, 'w'){ |f| f.write(string) }
+ vim.edit filename
+end
+
+def get_file_content()
+ vim.write
+ IO.read(filename).strip
+end
+
+def before(string)
+ options.each { |x| vim.command(x) }
+ set_file_content(string)
+end
+
+def after(string)
+ expect(get_file_content()).to eq normalize_string_indent(string)
+end
+
+def type(string)
+ string.scan(/<.*?>|./).each do |key|
+ if /<.*>/.match(key)
+ vim.feedkeys "\\#{key}"
+ else
+ vim.feedkeys key
+ end
+ end
+end
+
+describe "Multiple Cursors op pending & exit from insert|visual mode" do
+ let(:filename) { 'test.txt' }
+ let(:options) { ['let g:multi_cursor_exit_from_insert_mode = 0',
+ 'let g:multi_cursor_exit_from_visual_mode = 0'] }
+ # the default value of g:multi_cursor_normal_maps already works
+ # for testing operator-pending
+
+ specify "#paste from unnamed register to 3 cursors" do
+ before <<-EOF
+ yankme
+ a b c
+ a b c
+ a b c
+ EOF
+
+ type 'yiwj<C-n><C-n><C-n>vwwp<Esc>'
+
+ after <<-EOF
+ yankme
+ a b cyankme
+ a b cyankme
+ a b cyankme
+ EOF
+ end
+
+ specify "#paste buffer normal caw then p" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwcaw<Esc>bP<Esc>'
+
+ after <<-EOF
+ jan hello world
+ feb hello world
+ mar hello world
+ EOF
+ end
+
+ specify "#paste buffer normal C then ABC then p" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwCABC <Esc>p<Esc>'
+
+ after <<-EOF
+ hello ABC jan world
+ hello ABC feb world
+ hello ABC mar world
+ EOF
+ end
+
+ specify "#paste buffer normal daw then P" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwdawbP<Esc>'
+
+ after <<-EOF
+ jan hello world
+ feb hello world
+ mar hello world
+ EOF
+ end
+
+ specify "#paste buffer normal D then P" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwwhDbhP<Esc>'
+
+ after <<-EOF
+ hello world jan
+ hello world feb
+ hello world mar
+ EOF
+ end
+
+ specify "#paste buffer normal s then p" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vws1<Esc>p<Esc>'
+
+ after <<-EOF
+ hello 1jan world
+ hello 1feb world
+ hello 1mar world
+ EOF
+ end
+
+end
+
+describe "Multiple Cursors when normal_maps is empty" do
+ let(:filename) { 'test.txt' }
+ let(:options) { ['let g:multi_cursor_normal_maps = {}'] }
+
+ # Operator-pending commands are handled correctly thanks to their inclusion
+ # in `g:multi_cursor_normal_maps`.
+ #
+ # When an operator-pending command like 'd' is missing from that setting's
+ # value, then it should result in a no-op, but we should still remain in
+ # multicursor mode.
+ specify "#normal mode 'd'" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>vdx<Esc>'
+
+ after <<-EOF
+ hell
+ hell
+ EOF
+ end
+
+end
+
+describe "Multiple Cursors when visual_maps is empty" do
+ let(:filename) { 'test.txt' }
+ let(:options) { ['let g:multi_cursor_visual_maps = {}'] }
+
+ # Operator-pending commands are handled correctly thanks to their inclusion
+ # in `g:multi_cursor_visual_maps`.
+ #
+ # When an operator-pending command like 'f' is missing from that setting's
+ # value, then it should result in a no-op, but we should still remain in
+ # multicursor mode.
+ specify "#visual mode 'i'" do
+ before <<-EOF
+ hello world x
+ hello world x
+ EOF
+
+ type 'fw<C-n><C-n>fx<Esc>'
+
+ after <<-EOF
+ hello x
+ hello x
+ EOF
+ end
+
+end
+
+describe "Multiple Cursors" do
+ let(:filename) { 'test.txt' }
+ let(:options) { ['set autoindent'] }
+
+ specify "#paste buffer normal x then p" do
+ before <<-EOF
+ jan
+ feb
+ mar
+ EOF
+
+ type '<C-v>jj<C-n>xp<Esc>'
+
+ after <<-EOF
+ ajn
+ efb
+ amr
+ EOF
+ end
+
+ specify "#paste buffer visual y then p" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwvelywhp<Esc>'
+
+ after <<-EOF
+ hello jan jan world
+ hello feb feb world
+ hello mar mar world
+ EOF
+ end
+
+ specify "#paste buffer initial visual y then P" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type 'wywb<C-n><C-n><C-n>p<Esc>'
+
+ after <<-EOF
+ jan jan world
+ jan feb world
+ jan mar world
+ EOF
+ end
+
+ specify "#paste buffer visual y then P" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwvely^P<Esc>'
+
+ after <<-EOF
+ jan hello jan world
+ feb hello feb world
+ mar hello mar world
+ EOF
+ end
+
+ specify "#paste buffer visual Y then P" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>vwvY^P<Esc>'
+
+ after <<-EOF
+ hello jan world
+ hello jan world
+ hello feb world
+ hello feb world
+ hello mar world
+ hello mar world
+ EOF
+ end
+
+ specify "#multiline replacement" do
+ before <<-EOF
+ hello
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n><C-n>cworld<Esc>'
+
+ after <<-EOF
+ world
+ world
+ world
+ EOF
+ end
+
+ specify "#single line replacement" do
+ before <<-EOF
+ hello hello hello
+ EOF
+
+ type '<C-n><C-n><C-n>cworld<Esc>'
+
+ after <<-EOF
+ world world world
+ EOF
+ end
+
+ specify "#mixed line replacement" do
+ before <<-EOF
+ hello hello
+ hello
+ EOF
+
+ type '<C-n><C-n><C-n>cworld<Esc>'
+
+ after <<-EOF
+ world world
+ world
+ EOF
+ end
+
+ specify "#new line in insert mode" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>chello<CR>world<Esc>'
+
+ after <<-EOF
+ hello
+ world
+ hello
+ world
+ EOF
+ end
+
+ specify "#new line in insert mode middle of line" do
+ before <<-EOF
+ hello world
+ hello world
+ EOF
+
+ type '<C-n><C-n>vlxi<cr><Esc>'
+
+ after <<-EOF
+ hello
+ world
+ hello
+ world
+ EOF
+ end
+
+ specify "#multiple new lines on one line in insert mode" do
+ before <<-EOF
+ 'a','b','c','d','e'
+ EOF
+
+ type 'f,v<C-n><C-n><C-n>c<CR><Esc>'
+
+ after <<-EOF
+ 'a'
+ 'b'
+ 'c'
+ 'd'
+ 'e'
+ EOF
+ end
+
+ specify "#multiple new lines on one line in insert mode with indents" do
+ before <<-EOF
+ 'a','b','c','d','e'
+ EOF
+
+ type '4i<Space><Esc>f,v<C-n><C-n><C-n>c<CR><Esc>:%s/^/^<CR>'
+
+ after <<-EOF
+ ^ 'a'
+ ^ 'b'
+ ^ 'c'
+ ^ 'd'
+ ^ 'e'
+ EOF
+ end
+
+ specify "#normal mode 'o'" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>voworld<Esc>'
+
+ after <<-EOF
+ hello
+ world
+ hello
+ world
+ EOF
+ end
+
+ specify "#normal mode 'O'" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>vOworld<Esc>'
+
+ after <<-EOF
+ world
+ hello
+ world
+ hello
+ EOF
+ end
+
+ specify "#find command basic" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ vim.normal ':MultipleCursorsFind hello<CR>'
+ type 'cworld<Esc>'
+
+ after <<-EOF
+ world
+ world
+ EOF
+ end
+
+ specify "#find command start-of-line" do
+ before <<-EOF
+ hello
+ world
+
+ hello
+ world
+ EOF
+
+ vim.normal ':MultipleCursorsFind ^<CR>'
+ type 'Ibegin<Esc>'
+
+ after <<-EOF
+ beginhello
+ beginworld
+ begin
+ beginhello
+ beginworld
+ EOF
+ end
+
+ specify "#find command end-of-line" do
+ before <<-EOF
+ hello
+ world
+
+ hello
+ world
+ EOF
+
+ vim.normal ':MultipleCursorsFind $<CR>'
+ type 'Iend<Esc>'
+
+ after <<-EOF
+ helloend
+ worldend
+ end
+ helloend
+ worldend
+ EOF
+ end
+
+ specify "#visual line mode replacement" do
+ before <<-EOF
+ hello world
+ hello world
+ EOF
+
+ type '<C-n><C-n>Vchi!<Esc>'
+
+ after <<-EOF
+ hi!
+ hi!
+ EOF
+ end
+
+ specify "#skip key" do
+ before <<-EOF
+ hello
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n><C-x>cworld<Esc>'
+
+ after <<-EOF
+ world
+ hello
+ world
+ EOF
+ end
+
+ specify "#prev key" do
+ before <<-EOF
+ hello
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n><C-n><C-p>cworld<Esc>'
+
+ after <<-EOF
+ world
+ world
+ hello
+ EOF
+ end
+
+ specify "#visual mode 'i'" do
+ before <<-EOF
+ hi (hello world jan) bye
+ hi (hello world feb) bye
+ hi (hello world mar) bye
+ EOF
+
+ type 'fw<C-n><C-n><C-n>ibcone<Esc>'
+
+ after <<-EOF
+ hi (one) bye
+ hi (one) bye
+ hi (one) bye
+ EOF
+ end
+
+ specify "#visual mode 'a'" do
+ before <<-EOF
+ hi (hello world jan) bye
+ hi (hello world feb) bye
+ hi (hello world mar) bye
+ EOF
+
+ type 'fw<C-n><C-n><C-n>abcone<Esc>'
+
+ after <<-EOF
+ hi one bye
+ hi one bye
+ hi one bye
+ EOF
+ end
+
+ specify "#visual mode 'f'" do
+ before <<-EOF
+ hi (hello world jan) bye
+ hi (hello world feb) bye
+ hi (hello world mar) bye
+ EOF
+
+ type 'fw<C-n><C-n><C-n>f)cone<Esc>'
+
+ after <<-EOF
+ hi (hello one bye
+ hi (hello one bye
+ hi (hello one bye
+ EOF
+ end
+
+ specify "#visual mode 'F'" do
+ before <<-EOF
+ hi (hello world jan) bye
+ hi (hello world feb) bye
+ hi (hello world mar) bye
+ EOF
+
+ type 'fw<C-n><C-n><C-n>F(cbefore<Esc>'
+
+ after <<-EOF
+ hi beforeorld jan) bye
+ hi beforeorld feb) bye
+ hi beforeorld mar) bye
+ EOF
+ end
+
+ specify "#visual mode 't'" do
+ before <<-EOF
+ hello.jan
+ hello hi.feb
+ hello hi bye.mar
+ EOF
+
+ type '<C-n><C-n><C-n>t.cone<Esc>'
+
+ after <<-EOF
+ one.jan
+ one.feb
+ one.mar
+ EOF
+ end
+
+ specify "#visual mode 'T'" do
+ before <<-EOF
+ jan.world
+ feb.hi world
+ mar.bye hi world
+ EOF
+
+ type 'fw<C-n><C-n><C-n>T.cbefore<Esc>'
+
+ after <<-EOF
+ jan.beforeorld
+ feb.beforeorld
+ mar.beforeorld
+ EOF
+ end
+
+ specify "#visual line mode 'f'" do
+ before <<-EOF
+ hello jan world
+ hello feb world
+ hello mar world
+ EOF
+
+ type '<C-n><C-n><C-n>VfwvAafter<Esc>'
+
+ after <<-EOF
+ hello jan wafterorld
+ hello feb wafterorld
+ hello mar wafterorld
+ EOF
+ end
+
+ specify "#visual mode 'I'" do
+ before <<-EOF
+ hello world jan
+ hello world feb
+ hello world mar
+ EOF
+
+ type 'w<C-n><C-n><C-n>Ibefore<Esc>'
+
+ after <<-EOF
+ hello beforeworld jan
+ hello beforeworld feb
+ hello beforeworld mar
+ EOF
+ end
+
+ specify "#visual mode 'A'" do
+ before <<-EOF
+ hello world jan
+ hello world feb
+ hello world mar
+ EOF
+
+ type 'w<C-n><C-n><C-n>Aafter<Esc>'
+
+ after <<-EOF
+ hello worldafter jan
+ hello worldafter feb
+ hello worldafter mar
+ EOF
+ end
+
+ specify "#resize regions visual mode 'I'" do
+ before <<-EOF
+ hello world jan
+ hello world feb
+ hello world mar
+ EOF
+
+ type 'w<C-n><C-n><C-n>hhhIbefore<Esc>'
+
+ after <<-EOF
+ hello beforeworld jan
+ hello beforeworld feb
+ hello beforeworld mar
+ EOF
+ end
+
+ specify "#resize regions visual mode 'A'" do
+ before <<-EOF
+ hello world jan
+ hello world feb
+ hello world mar
+ EOF
+
+ type 'w<C-n><C-n><C-n>hhhAbefore<Esc>'
+
+ after <<-EOF
+ hello wobeforerld jan
+ hello wobeforerld feb
+ hello wobeforerld mar
+ EOF
+ end
+
+ specify "#no word boundries visual mode 'I'" do
+ before <<-EOF
+ hello hibye world
+ hello hibye world
+ hello hibye world
+ EOF
+
+ vim.normal ':MultipleCursorsFind bye<CR>'
+ type 'Ibefore<Esc>'
+
+ after <<-EOF
+ hello hibeforebye world
+ hello hibeforebye world
+ hello hibeforebye world
+ EOF
+ end
+
+ specify "#variable-length regions visual mode 'I'" do
+ before <<-EOF
+ hello hii world
+ hello hiiii world
+ hello hiiiiii world
+ EOF
+
+ vim.normal ':MultipleCursorsFind \<hi*\><CR>'
+ type 'Ibefore<Esc>'
+
+ after <<-EOF
+ hello beforehii world
+ hello beforehiiii world
+ hello beforehiiiiii world
+ EOF
+ end
+
+ specify "#normal mode 'I'" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>vIworld <Esc>'
+
+ after <<-EOF
+ world hello
+ world hello
+ EOF
+ end
+
+ specify "#normal mode 'A'" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>vA world<Esc>'
+
+ after <<-EOF
+ hello world
+ hello world
+ EOF
+ end
+
+ specify "#undo" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type '<C-n><C-n>cworld<Esc>u'
+
+ after <<-EOF
+ hello
+ hello
+ EOF
+ end
+
+ specify "#multiline visual mode" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type 'Vj<C-n>A world<Esc>'
+
+ after <<-EOF
+ hello world
+ hello world
+ EOF
+ end
+
+ specify "#set paste mode" do
+ before <<-EOF
+ hello
+ hello
+ EOF
+
+ type ':set paste<CR><C-n><C-n>cworld<Esc>:set nopaste<CR>'
+
+ after <<-EOF
+ world
+ world
+ EOF
+ end
+
+ specify "#multi-byte strings" do
+ before <<-EOF
+ こんにちわビム
+ 世界の中心でビムを叫ぶ
+ ビム大好き
+ EOF
+
+ type '/ビム<CR><C-n><C-n><C-n>cヴィム<ESC>'
+
+ after <<-EOF
+ こんにちわヴィム
+ 世界の中心でヴィムを叫ぶ
+ ヴィム大好き
+ EOF
+ end
+
+end
diff --git a/.vim/bundle/vim-multiple-cursors/spec/spec_helper.rb b/.vim/bundle/vim-multiple-cursors/spec/spec_helper.rb
new file mode 100644
index 0000000..4e0ad99
--- /dev/null
+++ b/.vim/bundle/vim-multiple-cursors/spec/spec_helper.rb
@@ -0,0 +1,25 @@
+require 'vimrunner'
+require 'vimrunner/rspec'
+
+Vimrunner::RSpec.configure do |config|
+
+ # Use a single Vim instance for the test suite. Set to false to use an
+ # instance per test (slower, but can be easier to manage).
+ config.reuse_server = false
+
+ # Decide how to start a Vim instance. In this block, an instance should be
+ # spawned and set up with anything project-specific.
+ config.start_vim do
+ # vim = Vimrunner.start
+
+ # Or, start a GUI instance:
+ vim = Vimrunner.start_gvim
+
+ # Setup your plugin in the Vim instance
+ plugin_path = File.expand_path('../..', __FILE__)
+ vim.add_plugin(plugin_path, 'plugin/multiple_cursors.vim')
+
+ # The returned value is the Client available in the tests.
+ vim
+ end
+end