# Tip of the hat to terryma/vim-multiple-cursors for this style # of testing Vim. require 'spec_helper' def initial(string) @vim_options.each { |x| vim.command(x) } if @vim_options write_file_content(string) end def final(string) expect(load_file_content).to eq normalize_string_indent(string) end describe 'Basic editing' do specify 'writing simple text' do initial <<-EOF EOF type 'hello world' final <<-EOF hello world EOF end specify ' goes to first non-whitespace char' do initial <<-EOF justified indented EOF type '!' final <<-EOF justified !indented EOF end specify 'copy and paste' do initial <<-EOF copy me EOF type '' final <<-EOF copy me copy me EOF end end describe 'Selecting' do specify 'select all and replace' do initial <<-EOF select me EOF type 'gone' final <<-EOF gone EOF end specify 'paste over selection' do initial <<-EOF cut me and paste over me EOF 7.times { type '' } type '' 10.times { type '' } 7.times { type '' } type '' final <<-EOF and paste cut me EOF end specify 'selecting from middle of line to end' do initial <<-EOF a line of text EOF 6.times { type '' } type '' type '!' final <<-EOF a line! EOF end specify 'selecting from middle of line to beginning' do initial <<-EOF a line of text EOF 7.times { type '' } type '' type '!' final <<-EOF !of text EOF end end describe 'Wrapped text' do before(:each) do @vim_options = [ # A single buffer can't be resized, so create a split of the buffer 'vsplit', 'vertical resize 6' ] end specify 'move up/down one wrapped line' do initial <<-EOF line line line line EOF type 'down ' type 'up ' final <<-EOF line line up down line line EOF end specify 'select wrapped line below' do initial <<-EOF line1 line2 line3 line4 EOF type '' type '!' final <<-EOF line1 !line3 line4 EOF end specify 'select wrapped line above' do initial <<-EOF line1 line2 line3 line4 EOF type '' type '!' final <<-EOF line1 !line3 line4 EOF end specify ' goes to end of wrapped line' do initial <<-EOF line line line line EOF type '!' final <<-EOF line! line line line EOF end specify ' goes to beginning of wrapped line' do initial <<-EOF line line line line EOF type '!' final <<-EOF line !line line line EOF end end describe 'Pane control' do specify 'moving to another pane' do # Open Quickfix window (auto focuses to it) type ':copen' pane_type = vim.command 'echo &buftype' expect(pane_type).to eq 'quickfix' # Focus back to file type '' pane_type = vim.command 'echo &buftype' expect(pane_type).to eq '' end specify 'closing a pane' do # Open Netrw file manager in a sidebar type ':Vexplore' buffer_id = vim.command "echo bufnr('%')" expect(buffer_id).to eq '2' # Close Netrw pane type '' buffer_id = vim.command "echo bufnr('%')" expect(buffer_id).to eq '1' end end