100b24be4SBram Moolenaar" Test for textobjects
200b24be4SBram Moolenaar
300b24be4SBram Moolenaarif !has('textobjects')
400b24be4SBram Moolenaar  finish
500b24be4SBram Moolenaarendif
600b24be4SBram Moolenaar
7c3c766eaSBram Moolenaarset belloff=all
8*c5e2b040SBram Moolenaarfunc CpoM(line, useM, expected)
900b24be4SBram Moolenaar  new
1000b24be4SBram Moolenaar
1100b24be4SBram Moolenaar  if a:useM
1200b24be4SBram Moolenaar    set cpoptions+=M
1300b24be4SBram Moolenaar  else
1400b24be4SBram Moolenaar    set cpoptions-=M
1500b24be4SBram Moolenaar  endif
1600b24be4SBram Moolenaar
1700b24be4SBram Moolenaar  call setline(1, a:line)
1800b24be4SBram Moolenaar
1900b24be4SBram Moolenaar  call setreg('"', '')
2000b24be4SBram Moolenaar  normal! ggfrmavi)y
2100b24be4SBram Moolenaar  call assert_equal(getreg('"'), a:expected[0])
2200b24be4SBram Moolenaar
2300b24be4SBram Moolenaar  call setreg('"', '')
2400b24be4SBram Moolenaar  normal! `afbmavi)y
2500b24be4SBram Moolenaar  call assert_equal(getreg('"'), a:expected[1])
2600b24be4SBram Moolenaar
2700b24be4SBram Moolenaar  call setreg('"', '')
2800b24be4SBram Moolenaar  normal! `afgmavi)y
2900b24be4SBram Moolenaar  call assert_equal(getreg('"'), a:expected[2])
3000b24be4SBram Moolenaar
3100b24be4SBram Moolenaar  q!
32*c5e2b040SBram Moolenaarendfunc
3300b24be4SBram Moolenaar
34*c5e2b040SBram Moolenaarfunc Test_inner_block_without_cpo_M()
3500b24be4SBram Moolenaar  call CpoM('(red \(blue) green)', 0, ['red \(blue', 'red \(blue', ''])
36*c5e2b040SBram Moolenaarendfunc
3700b24be4SBram Moolenaar
38*c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_left_backslash()
3900b24be4SBram Moolenaar  call CpoM('(red \(blue) green)', 1, ['red \(blue) green', 'blue', 'red \(blue) green'])
40*c5e2b040SBram Moolenaarendfunc
4100b24be4SBram Moolenaar
42*c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_right_backslash()
4300b24be4SBram Moolenaar  call CpoM('(red (blue\) green)', 1, ['red (blue\) green', 'blue\', 'red (blue\) green'])
44*c5e2b040SBram Moolenaarendfunc
45*c5e2b040SBram Moolenaar
46*c5e2b040SBram Moolenaarfunc Test_quote_selection_selection_exclusive()
47*c5e2b040SBram Moolenaar  new
48*c5e2b040SBram Moolenaar  call setline(1, "a 'bcde' f")
49*c5e2b040SBram Moolenaar  set selection=exclusive
50*c5e2b040SBram Moolenaar  exe "norm! fdvhi'y"
51*c5e2b040SBram Moolenaar  call assert_equal('bcde', @")
52*c5e2b040SBram Moolenaar  set selection&vim
53*c5e2b040SBram Moolenaar  bw!
54*c5e2b040SBram Moolenaarendfunc
55