1df7df59dSBram Moolenaar" Test for the various 'cpoptions' (cpo) flags 2c9630d26SBram Moolenaar 3c9630d26SBram Moolenaarsource check.vim 4df7df59dSBram Moolenaarsource shared.vim 5c9630d26SBram Moolenaarsource view_util.vim 6c9630d26SBram Moolenaar 7c9630d26SBram Moolenaar" Test for the 'a' flag in 'cpo'. Reading a file should set the alternate 8c9630d26SBram Moolenaar" file name. 9c9630d26SBram Moolenaarfunc Test_cpo_a() 10c9630d26SBram Moolenaar let save_cpo = &cpo 11c9630d26SBram Moolenaar call writefile(['one'], 'Xfile') 12c9630d26SBram Moolenaar " Wipe out all the buffers, so that the alternate file is empty 13c9630d26SBram Moolenaar edit Xfoo | %bw 14c9630d26SBram Moolenaar set cpo-=a 15c9630d26SBram Moolenaar new 16c9630d26SBram Moolenaar read Xfile 17c9630d26SBram Moolenaar call assert_equal('', @#) 18c9630d26SBram Moolenaar %d 19c9630d26SBram Moolenaar set cpo+=a 20c9630d26SBram Moolenaar read Xfile 21c9630d26SBram Moolenaar call assert_equal('Xfile', @#) 22c9630d26SBram Moolenaar close! 23c9630d26SBram Moolenaar call delete('Xfile') 24c9630d26SBram Moolenaar let &cpo = save_cpo 25c9630d26SBram Moolenaarendfunc 26c9630d26SBram Moolenaar 27c9630d26SBram Moolenaar" Test for the 'A' flag in 'cpo'. Writing a file should set the alternate 28c9630d26SBram Moolenaar" file name. 29c9630d26SBram Moolenaarfunc Test_cpo_A() 30c9630d26SBram Moolenaar let save_cpo = &cpo 31c9630d26SBram Moolenaar " Wipe out all the buffers, so that the alternate file is empty 32c9630d26SBram Moolenaar edit Xfoo | %bw 33c9630d26SBram Moolenaar set cpo-=A 34c9630d26SBram Moolenaar new Xfile1 35c9630d26SBram Moolenaar write Xfile2 36c9630d26SBram Moolenaar call assert_equal('', @#) 37c9630d26SBram Moolenaar %bw 38c9630d26SBram Moolenaar call delete('Xfile2') 39c9630d26SBram Moolenaar new Xfile1 40c9630d26SBram Moolenaar set cpo+=A 41c9630d26SBram Moolenaar write Xfile2 42c9630d26SBram Moolenaar call assert_equal('Xfile2', @#) 43c9630d26SBram Moolenaar close! 44c9630d26SBram Moolenaar call delete('Xfile2') 45c9630d26SBram Moolenaar let &cpo = save_cpo 46c9630d26SBram Moolenaarendfunc 47c9630d26SBram Moolenaar 48c9630d26SBram Moolenaar" Test for the 'b' flag in 'cpo'. "\|" at the end of a map command is 49c9630d26SBram Moolenaar" recognized as the end of the map. 50c9630d26SBram Moolenaarfunc Test_cpo_b() 51c9630d26SBram Moolenaar let save_cpo = &cpo 52c9630d26SBram Moolenaar set cpo+=b 53c9630d26SBram Moolenaar nnoremap <F5> :pwd\<CR>\|let i = 1 54c9630d26SBram Moolenaar call assert_equal(':pwd\<CR>\', maparg('<F5>')) 55c9630d26SBram Moolenaar nunmap <F5> 56c9630d26SBram Moolenaar exe "nnoremap <F5> :pwd\<C-V>|let i = 1" 57c9630d26SBram Moolenaar call assert_equal(':pwd|let i = 1', maparg('<F5>')) 58c9630d26SBram Moolenaar nunmap <F5> 59c9630d26SBram Moolenaar set cpo-=b 60c9630d26SBram Moolenaar nnoremap <F5> :pwd\<CR>\|let i = 1 61c9630d26SBram Moolenaar call assert_equal(':pwd\<CR>|let i = 1', maparg('<F5>')) 62c9630d26SBram Moolenaar let &cpo = save_cpo 63c9630d26SBram Moolenaar nunmap <F5> 64c9630d26SBram Moolenaarendfunc 65c9630d26SBram Moolenaar 66df7df59dSBram Moolenaar" Test for the 'B' flag in 'cpo'. A backslash in mappings, abbreviations, user 67df7df59dSBram Moolenaar" commands and menu commands has no special meaning. 68df7df59dSBram Moolenaarfunc Test_cpo_B() 69df7df59dSBram Moolenaar let save_cpo = &cpo 70df7df59dSBram Moolenaar new 71df7df59dSBram Moolenaar set cpo-=B 72df7df59dSBram Moolenaar iabbr <buffer> abc ab\<BS>d 73df7df59dSBram Moolenaar exe "normal iabc " 74df7df59dSBram Moolenaar call assert_equal('ab<BS>d ', getline(1)) 75df7df59dSBram Moolenaar %d 76df7df59dSBram Moolenaar set cpo+=B 77df7df59dSBram Moolenaar iabbr <buffer> abc ab\<BS>d 78df7df59dSBram Moolenaar exe "normal iabc " 79df7df59dSBram Moolenaar call assert_equal('abd ', getline(1)) 80df7df59dSBram Moolenaar close! 81df7df59dSBram Moolenaar let &cpo = save_cpo 82df7df59dSBram Moolenaarendfunc 83df7df59dSBram Moolenaar 84c9630d26SBram Moolenaar" Test for the 'c' flag in 'cpo'. 85c9630d26SBram Moolenaarfunc Test_cpo_c() 86c9630d26SBram Moolenaar let save_cpo = &cpo 87c9630d26SBram Moolenaar set cpo+=c 88c9630d26SBram Moolenaar new 89c9630d26SBram Moolenaar call setline(1, ' abababababab') 90c9630d26SBram Moolenaar exe "normal gg/abab\<CR>" 91c9630d26SBram Moolenaar call assert_equal(3, searchcount().total) 92c9630d26SBram Moolenaar set cpo-=c 93c9630d26SBram Moolenaar exe "normal gg/abab\<CR>" 94c9630d26SBram Moolenaar call assert_equal(5, searchcount().total) 95c9630d26SBram Moolenaar close! 96c9630d26SBram Moolenaar let &cpo = save_cpo 97c9630d26SBram Moolenaarendfunc 98c9630d26SBram Moolenaar 99c9630d26SBram Moolenaar" Test for the 'C' flag in 'cpo' (line continuation) 100c9630d26SBram Moolenaarfunc Test_cpo_C() 101c9630d26SBram Moolenaar let save_cpo = &cpo 102c9630d26SBram Moolenaar call writefile(['let l = [', '\ 1,', '\ 2]'], 'Xfile') 103c9630d26SBram Moolenaar set cpo-=C 104c9630d26SBram Moolenaar source Xfile 105c9630d26SBram Moolenaar call assert_equal([1, 2], g:l) 106c9630d26SBram Moolenaar set cpo+=C 1079b7bf9e9SBram Moolenaar call assert_fails('source Xfile', ['E697:', 'E10:']) 108c9630d26SBram Moolenaar call delete('Xfile') 109c9630d26SBram Moolenaar let &cpo = save_cpo 110c9630d26SBram Moolenaarendfunc 111c9630d26SBram Moolenaar 112c9630d26SBram Moolenaar" Test for the 'd' flag in 'cpo' (tags relative to the current file) 113c9630d26SBram Moolenaarfunc Test_cpo_d() 114c9630d26SBram Moolenaar let save_cpo = &cpo 115c9630d26SBram Moolenaar call mkdir('Xdir') 116c9630d26SBram Moolenaar call writefile(["one\tXfile1\t/^one$/"], 'tags') 117c9630d26SBram Moolenaar call writefile(["two\tXfile2\t/^two$/"], 'Xdir/tags') 118c9630d26SBram Moolenaar set tags=./tags 119c9630d26SBram Moolenaar set cpo-=d 120c9630d26SBram Moolenaar edit Xdir/Xfile 121c9630d26SBram Moolenaar call assert_equal('two', taglist('.*')[0].name) 122c9630d26SBram Moolenaar set cpo+=d 123c9630d26SBram Moolenaar call assert_equal('one', taglist('.*')[0].name) 124c9630d26SBram Moolenaar %bw! 125c9630d26SBram Moolenaar call delete('tags') 126c9630d26SBram Moolenaar call delete('Xdir', 'rf') 127c9630d26SBram Moolenaar set tags& 128c9630d26SBram Moolenaar let &cpo = save_cpo 129c9630d26SBram Moolenaarendfunc 130c9630d26SBram Moolenaar 131c9630d26SBram Moolenaar" Test for the 'D' flag in 'cpo' (digraph after a r, f or t) 132c9630d26SBram Moolenaarfunc Test_cpo_D() 133c9630d26SBram Moolenaar CheckFeature digraphs 134c9630d26SBram Moolenaar let save_cpo = &cpo 135c9630d26SBram Moolenaar new 136c9630d26SBram Moolenaar set cpo-=D 137c9630d26SBram Moolenaar call setline(1, 'abcdefgh|') 138c9630d26SBram Moolenaar exe "norm! 1gg0f\<c-k>!!" 139c9630d26SBram Moolenaar call assert_equal(9, col('.')) 140c9630d26SBram Moolenaar set cpo+=D 141c9630d26SBram Moolenaar exe "norm! 1gg0f\<c-k>!!" 142c9630d26SBram Moolenaar call assert_equal(1, col('.')) 143c9630d26SBram Moolenaar set cpo-=D 144c9630d26SBram Moolenaar close! 145c9630d26SBram Moolenaar let &cpo = save_cpo 146c9630d26SBram Moolenaarendfunc 147c9630d26SBram Moolenaar 148c9630d26SBram Moolenaar" Test for the 'e' flag in 'cpo' 149c9630d26SBram Moolenaarfunc Test_cpo_e() 150c9630d26SBram Moolenaar let save_cpo = &cpo 151c9630d26SBram Moolenaar let @a='let i = 45' 152c9630d26SBram Moolenaar set cpo+=e 153c9630d26SBram Moolenaar call feedkeys(":@a\<CR>", 'xt') 154c9630d26SBram Moolenaar call assert_equal(45, i) 155c9630d26SBram Moolenaar set cpo-=e 156c9630d26SBram Moolenaar call feedkeys(":@a\<CR>6\<CR>", 'xt') 157c9630d26SBram Moolenaar call assert_equal(456, i) 158c9630d26SBram Moolenaar let &cpo = save_cpo 159c9630d26SBram Moolenaarendfunc 160c9630d26SBram Moolenaar 161c9630d26SBram Moolenaar" Test for the 'E' flag in 'cpo' with yank, change, delete, etc. operators 162c9630d26SBram Moolenaarfunc Test_cpo_E() 163c9630d26SBram Moolenaar new 164c9630d26SBram Moolenaar call setline(1, '') 165c9630d26SBram Moolenaar set cpo+=E 166c9630d26SBram Moolenaar " yank an empty line 167c9630d26SBram Moolenaar call assert_beeps('normal "ayl') 168c9630d26SBram Moolenaar " change an empty line 169c9630d26SBram Moolenaar call assert_beeps('normal lcTa') 170*3e72dcadSBram Moolenaar call assert_beeps('normal 0c0') 171c9630d26SBram Moolenaar " delete an empty line 172c9630d26SBram Moolenaar call assert_beeps('normal D') 173c9630d26SBram Moolenaar call assert_beeps('normal dl') 174c9630d26SBram Moolenaar call assert_equal('', getline(1)) 175c9630d26SBram Moolenaar " change case of an empty line 176c9630d26SBram Moolenaar call assert_beeps('normal gul') 177c9630d26SBram Moolenaar call assert_beeps('normal gUl') 178c9630d26SBram Moolenaar " replace a character 179c9630d26SBram Moolenaar call assert_beeps('normal vrx') 180c9630d26SBram Moolenaar " increment and decrement 181c9630d26SBram Moolenaar call assert_beeps('exe "normal v\<C-A>"') 182c9630d26SBram Moolenaar call assert_beeps('exe "normal v\<C-X>"') 183c9630d26SBram Moolenaar set cpo-=E 184c9630d26SBram Moolenaar close! 185c9630d26SBram Moolenaarendfunc 186c9630d26SBram Moolenaar 187c9630d26SBram Moolenaar" Test for the 'f' flag in 'cpo' (read in an empty buffer sets the file name) 188c9630d26SBram Moolenaarfunc Test_cpo_f() 189c9630d26SBram Moolenaar let save_cpo = &cpo 190c9630d26SBram Moolenaar new 191c9630d26SBram Moolenaar set cpo-=f 192c9630d26SBram Moolenaar read test_cpoptions.vim 193c9630d26SBram Moolenaar call assert_equal('', @%) 194c9630d26SBram Moolenaar %d 195c9630d26SBram Moolenaar set cpo+=f 196c9630d26SBram Moolenaar read test_cpoptions.vim 197c9630d26SBram Moolenaar call assert_equal('test_cpoptions.vim', @%) 198c9630d26SBram Moolenaar close! 199c9630d26SBram Moolenaar let &cpo = save_cpo 200c9630d26SBram Moolenaarendfunc 201c9630d26SBram Moolenaar 202c9630d26SBram Moolenaar" Test for the 'F' flag in 'cpo' (write in an empty buffer sets the file name) 203c9630d26SBram Moolenaarfunc Test_cpo_F() 204c9630d26SBram Moolenaar let save_cpo = &cpo 205c9630d26SBram Moolenaar new 206c9630d26SBram Moolenaar set cpo-=F 207c9630d26SBram Moolenaar write Xfile 208c9630d26SBram Moolenaar call assert_equal('', @%) 209c9630d26SBram Moolenaar call delete('Xfile') 210c9630d26SBram Moolenaar set cpo+=F 211c9630d26SBram Moolenaar write Xfile 212c9630d26SBram Moolenaar call assert_equal('Xfile', @%) 213c9630d26SBram Moolenaar close! 214c9630d26SBram Moolenaar call delete('Xfile') 215c9630d26SBram Moolenaar let &cpo = save_cpo 216c9630d26SBram Moolenaarendfunc 217c9630d26SBram Moolenaar 218c9630d26SBram Moolenaar" Test for the 'g' flag in 'cpo' (jump to line 1 when re-editing a file) 219c9630d26SBram Moolenaarfunc Test_cpo_g() 220c9630d26SBram Moolenaar let save_cpo = &cpo 221c9630d26SBram Moolenaar new test_cpoptions.vim 222c9630d26SBram Moolenaar set cpo-=g 223c9630d26SBram Moolenaar normal 20G 224c9630d26SBram Moolenaar edit 225c9630d26SBram Moolenaar call assert_equal(20, line('.')) 226c9630d26SBram Moolenaar set cpo+=g 227c9630d26SBram Moolenaar edit 228c9630d26SBram Moolenaar call assert_equal(1, line('.')) 229c9630d26SBram Moolenaar close! 230c9630d26SBram Moolenaar let &cpo = save_cpo 231c9630d26SBram Moolenaarendfunc 232c9630d26SBram Moolenaar 233c9630d26SBram Moolenaar" Test for inserting text in a line with only spaces ('H' flag in 'cpoptions') 234c9630d26SBram Moolenaarfunc Test_cpo_H() 235c9630d26SBram Moolenaar let save_cpo = &cpo 236c9630d26SBram Moolenaar new 237c9630d26SBram Moolenaar set cpo-=H 238c9630d26SBram Moolenaar call setline(1, ' ') 239c9630d26SBram Moolenaar normal! Ia 240c9630d26SBram Moolenaar call assert_equal(' a', getline(1)) 241c9630d26SBram Moolenaar set cpo+=H 242c9630d26SBram Moolenaar call setline(1, ' ') 243c9630d26SBram Moolenaar normal! Ia 244c9630d26SBram Moolenaar call assert_equal(' a ', getline(1)) 245c9630d26SBram Moolenaar close! 246c9630d26SBram Moolenaar let &cpo = save_cpo 247c9630d26SBram Moolenaarendfunc 248c9630d26SBram Moolenaar 249df7df59dSBram Moolenaar" TODO: Add a test for the 'i' flag in 'cpo' 250845e0ee5SBram Moolenaar" Interrupting the reading of a file will leave it modified. 251df7df59dSBram Moolenaar 252c9630d26SBram Moolenaar" Test for the 'I' flag in 'cpo' (deleting autoindent when using arrow keys) 253c9630d26SBram Moolenaarfunc Test_cpo_I() 254c9630d26SBram Moolenaar let save_cpo = &cpo 255c9630d26SBram Moolenaar new 256c9630d26SBram Moolenaar setlocal autoindent 257c9630d26SBram Moolenaar set cpo+=I 258c9630d26SBram Moolenaar exe "normal i one\<CR>\<Up>" 259c9630d26SBram Moolenaar call assert_equal(' ', getline(2)) 260c9630d26SBram Moolenaar set cpo-=I 261c9630d26SBram Moolenaar %d 262c9630d26SBram Moolenaar exe "normal i one\<CR>\<Up>" 263c9630d26SBram Moolenaar call assert_equal('', getline(2)) 264c9630d26SBram Moolenaar close! 265c9630d26SBram Moolenaar let &cpo = save_cpo 266c9630d26SBram Moolenaarendfunc 267c9630d26SBram Moolenaar 268df7df59dSBram Moolenaar" Test for the 'j' flag in 'cpo' is in the test_join.vim file. 269df7df59dSBram Moolenaar 270c9630d26SBram Moolenaar" Test for the 'J' flag in 'cpo' (two spaces after a sentence) 271c9630d26SBram Moolenaarfunc Test_cpo_J() 272c9630d26SBram Moolenaar let save_cpo = &cpo 273c9630d26SBram Moolenaar new 274c9630d26SBram Moolenaar set cpo-=J 275c9630d26SBram Moolenaar call setline(1, 'one. two! three? four."'' five.)]') 276c9630d26SBram Moolenaar normal 0 277c9630d26SBram Moolenaar for colnr in [6, 12, 19, 28, 34] 278c9630d26SBram Moolenaar normal ) 279c9630d26SBram Moolenaar call assert_equal(colnr, col('.')) 280c9630d26SBram Moolenaar endfor 281c9630d26SBram Moolenaar for colnr in [28, 19, 12, 6, 1] 282c9630d26SBram Moolenaar normal ( 283c9630d26SBram Moolenaar call assert_equal(colnr, col('.')) 284c9630d26SBram Moolenaar endfor 285c9630d26SBram Moolenaar set cpo+=J 286c9630d26SBram Moolenaar normal 0 287c9630d26SBram Moolenaar for colnr in [12, 28, 34] 288c9630d26SBram Moolenaar normal ) 289c9630d26SBram Moolenaar call assert_equal(colnr, col('.')) 290c9630d26SBram Moolenaar endfor 291c9630d26SBram Moolenaar for colnr in [28, 12, 1] 292c9630d26SBram Moolenaar normal ( 293c9630d26SBram Moolenaar call assert_equal(colnr, col('.')) 294c9630d26SBram Moolenaar endfor 295c9630d26SBram Moolenaar close! 296c9630d26SBram Moolenaar let &cpo = save_cpo 297c9630d26SBram Moolenaarendfunc 298c9630d26SBram Moolenaar 299845e0ee5SBram Moolenaar" TODO: Add a test for the 'k' flag in 'cpo'. 300845e0ee5SBram Moolenaar" Disable the recognition of raw key codes in mappings, abbreviations, and the 301845e0ee5SBram Moolenaar" "to" part of menu commands. 302c9630d26SBram Moolenaar 303845e0ee5SBram Moolenaar" TODO: Add a test for the 'K' flag in 'cpo'. 304845e0ee5SBram Moolenaar" Don't wait for a key code to complete when it is halfway a mapping. 305c9630d26SBram Moolenaar 306c9630d26SBram Moolenaar" Test for the 'l' flag in 'cpo' (backslash in a [] range) 307c9630d26SBram Moolenaarfunc Test_cpo_l() 308c9630d26SBram Moolenaar let save_cpo = &cpo 309c9630d26SBram Moolenaar new 310c9630d26SBram Moolenaar call setline(1, ['', "a\tc" .. '\t']) 311c9630d26SBram Moolenaar set cpo-=l 312c9630d26SBram Moolenaar exe 'normal gg/[\t]' .. "\<CR>" 313c9630d26SBram Moolenaar call assert_equal([2, 8], [col('.'), virtcol('.')]) 314c9630d26SBram Moolenaar set cpo+=l 315c9630d26SBram Moolenaar exe 'normal gg/[\t]' .. "\<CR>" 316c9630d26SBram Moolenaar call assert_equal([4, 10], [col('.'), virtcol('.')]) 317c9630d26SBram Moolenaar close! 318c9630d26SBram Moolenaar let &cpo = save_cpo 319c9630d26SBram Moolenaarendfunc 320c9630d26SBram Moolenaar 321c9630d26SBram Moolenaar" Test for inserting tab in virtual replace mode ('L' flag in 'cpoptions') 322c9630d26SBram Moolenaarfunc Test_cpo_L() 323c9630d26SBram Moolenaar let save_cpo = &cpo 324c9630d26SBram Moolenaar new 325c9630d26SBram Moolenaar set cpo-=L 326c9630d26SBram Moolenaar call setline(1, 'abcdefghijklmnopqr') 327c9630d26SBram Moolenaar exe "normal 0gR\<Tab>" 328c9630d26SBram Moolenaar call assert_equal("\<Tab>ijklmnopqr", getline(1)) 329c9630d26SBram Moolenaar set cpo+=L 330c9630d26SBram Moolenaar set list 331c9630d26SBram Moolenaar call setline(1, 'abcdefghijklmnopqr') 332c9630d26SBram Moolenaar exe "normal 0gR\<Tab>" 333c9630d26SBram Moolenaar call assert_equal("\<Tab>cdefghijklmnopqr", getline(1)) 334c9630d26SBram Moolenaar set nolist 335c9630d26SBram Moolenaar call setline(1, 'abcdefghijklmnopqr') 336c9630d26SBram Moolenaar exe "normal 0gR\<Tab>" 337c9630d26SBram Moolenaar call assert_equal("\<Tab>ijklmnopqr", getline(1)) 338c9630d26SBram Moolenaar close! 339c9630d26SBram Moolenaar let &cpo = save_cpo 340c9630d26SBram Moolenaarendfunc 341c9630d26SBram Moolenaar 342845e0ee5SBram Moolenaar" TODO: Add a test for the 'm' flag in 'cpo'. 343845e0ee5SBram Moolenaar" When included, a showmatch will always wait half a second. When not 344845e0ee5SBram Moolenaar" included, a showmatch will wait half a second or until a character is typed. 345c9630d26SBram Moolenaar 346c9630d26SBram Moolenaar" Test for the 'M' flag in 'cpo' (% with escape parenthesis) 347c9630d26SBram Moolenaarfunc Test_cpo_M() 348c9630d26SBram Moolenaar let save_cpo = &cpo 349c9630d26SBram Moolenaar new 350c9630d26SBram Moolenaar call setline(1, ['( \( )', '\( ( \)']) 351c9630d26SBram Moolenaar 352c9630d26SBram Moolenaar set cpo-=M 353c9630d26SBram Moolenaar call cursor(1, 1) 354c9630d26SBram Moolenaar normal % 355c9630d26SBram Moolenaar call assert_equal(6, col('.')) 356c9630d26SBram Moolenaar call cursor(1, 4) 357c9630d26SBram Moolenaar call assert_beeps('normal %') 358c9630d26SBram Moolenaar call cursor(2, 2) 359c9630d26SBram Moolenaar normal % 360c9630d26SBram Moolenaar call assert_equal(7, col('.')) 361c9630d26SBram Moolenaar call cursor(2, 4) 362c9630d26SBram Moolenaar call assert_beeps('normal %') 363c9630d26SBram Moolenaar 364c9630d26SBram Moolenaar set cpo+=M 365c9630d26SBram Moolenaar call cursor(1, 4) 366c9630d26SBram Moolenaar normal % 367c9630d26SBram Moolenaar call assert_equal(6, col('.')) 368c9630d26SBram Moolenaar call cursor(1, 1) 369c9630d26SBram Moolenaar call assert_beeps('normal %') 370c9630d26SBram Moolenaar call cursor(2, 4) 371c9630d26SBram Moolenaar normal % 372c9630d26SBram Moolenaar call assert_equal(7, col('.')) 373c9630d26SBram Moolenaar call cursor(2, 1) 374c9630d26SBram Moolenaar call assert_beeps('normal %') 375c9630d26SBram Moolenaar 376c9630d26SBram Moolenaar close! 377c9630d26SBram Moolenaar let &cpo = save_cpo 378c9630d26SBram Moolenaarendfunc 379c9630d26SBram Moolenaar 380c9630d26SBram Moolenaar" Test for the 'n' flag in 'cpo' (using number column for wrapped lines) 381c9630d26SBram Moolenaarfunc Test_cpo_n() 382c9630d26SBram Moolenaar let save_cpo = &cpo 383c9630d26SBram Moolenaar new 384c9630d26SBram Moolenaar call setline(1, repeat('a', &columns)) 385c9630d26SBram Moolenaar setlocal number 386c9630d26SBram Moolenaar set cpo-=n 387c9630d26SBram Moolenaar redraw! 388c9630d26SBram Moolenaar call assert_equal(' aaaa', Screenline(2)) 389c9630d26SBram Moolenaar set cpo+=n 390c9630d26SBram Moolenaar redraw! 391c9630d26SBram Moolenaar call assert_equal('aaaa', Screenline(2)) 392c9630d26SBram Moolenaar close! 393c9630d26SBram Moolenaar let &cpo = save_cpo 394c9630d26SBram Moolenaarendfunc 395c9630d26SBram Moolenaar 396c9630d26SBram Moolenaar" Test for the 'o' flag in 'cpo' (line offset to search command) 397c9630d26SBram Moolenaarfunc Test_cpo_o() 398c9630d26SBram Moolenaar let save_cpo = &cpo 399c9630d26SBram Moolenaar new 400c9630d26SBram Moolenaar call setline(1, ['', 'one', 'two', 'three', 'one', 'two', 'three']) 401c9630d26SBram Moolenaar set cpo-=o 402c9630d26SBram Moolenaar exe "normal /one/+2\<CR>" 403c9630d26SBram Moolenaar normal n 404c9630d26SBram Moolenaar call assert_equal(7, line('.')) 405c9630d26SBram Moolenaar set cpo+=o 406c9630d26SBram Moolenaar exe "normal /one/+2\<CR>" 407c9630d26SBram Moolenaar normal n 408c9630d26SBram Moolenaar call assert_equal(5, line('.')) 409c9630d26SBram Moolenaar close! 410c9630d26SBram Moolenaar let &cpo = save_cpo 411c9630d26SBram Moolenaarendfunc 412c9630d26SBram Moolenaar 413c9630d26SBram Moolenaar" Test for the 'O' flag in 'cpo' (overwriting an existing file) 414c9630d26SBram Moolenaarfunc Test_cpo_O() 415c9630d26SBram Moolenaar let save_cpo = &cpo 416c9630d26SBram Moolenaar new Xfile 417c9630d26SBram Moolenaar call setline(1, 'one') 418c9630d26SBram Moolenaar call writefile(['two'], 'Xfile') 419c9630d26SBram Moolenaar set cpo-=O 420c9630d26SBram Moolenaar call assert_fails('write', 'E13:') 421c9630d26SBram Moolenaar set cpo+=O 422c9630d26SBram Moolenaar write 423c9630d26SBram Moolenaar call assert_equal(['one'], readfile('Xfile')) 424c9630d26SBram Moolenaar close! 425c9630d26SBram Moolenaar call delete('Xfile') 426c9630d26SBram Moolenaar let &cpo = save_cpo 427c9630d26SBram Moolenaarendfunc 428c9630d26SBram Moolenaar 429df7df59dSBram Moolenaar" Test for the 'p' flag in 'cpo' is in the test_lispwords.vim file. 430df7df59dSBram Moolenaar 431c9630d26SBram Moolenaar" Test for the 'P' flag in 'cpo' (appending to a file sets the current file 432c9630d26SBram Moolenaar" name) 433c9630d26SBram Moolenaarfunc Test_cpo_P() 434c9630d26SBram Moolenaar let save_cpo = &cpo 435c9630d26SBram Moolenaar call writefile([], 'Xfile') 436c9630d26SBram Moolenaar new 437c9630d26SBram Moolenaar call setline(1, 'one') 438c9630d26SBram Moolenaar set cpo+=F 439c9630d26SBram Moolenaar set cpo-=P 440c9630d26SBram Moolenaar write >> Xfile 441c9630d26SBram Moolenaar call assert_equal('', @%) 442c9630d26SBram Moolenaar set cpo+=P 443c9630d26SBram Moolenaar write >> Xfile 444c9630d26SBram Moolenaar call assert_equal('Xfile', @%) 445c9630d26SBram Moolenaar close! 446c9630d26SBram Moolenaar call delete('Xfile') 447c9630d26SBram Moolenaar let &cpo = save_cpo 448c9630d26SBram Moolenaarendfunc 449c9630d26SBram Moolenaar 450c9630d26SBram Moolenaar" Test for the 'q' flag in 'cpo' (joining multiple lines) 451c9630d26SBram Moolenaarfunc Test_cpo_q() 452c9630d26SBram Moolenaar let save_cpo = &cpo 453c9630d26SBram Moolenaar new 454c9630d26SBram Moolenaar call setline(1, ['one', 'two', 'three', 'four', 'five']) 455c9630d26SBram Moolenaar set cpo-=q 456c9630d26SBram Moolenaar normal gg4J 457c9630d26SBram Moolenaar call assert_equal(14, col('.')) 458c9630d26SBram Moolenaar %d 459c9630d26SBram Moolenaar call setline(1, ['one', 'two', 'three', 'four', 'five']) 460c9630d26SBram Moolenaar set cpo+=q 461c9630d26SBram Moolenaar normal gg4J 462c9630d26SBram Moolenaar call assert_equal(4, col('.')) 463c9630d26SBram Moolenaar close! 464c9630d26SBram Moolenaar let &cpo = save_cpo 465c9630d26SBram Moolenaarendfunc 466c9630d26SBram Moolenaar 467c9630d26SBram Moolenaar" Test for the 'r' flag in 'cpo' (redo command with a search motion) 468c9630d26SBram Moolenaarfunc Test_cpo_r() 469c9630d26SBram Moolenaar let save_cpo = &cpo 470c9630d26SBram Moolenaar new 471c9630d26SBram Moolenaar call setline(1, repeat(['one two three four'], 2)) 472c9630d26SBram Moolenaar set cpo-=r 473c9630d26SBram Moolenaar exe "normal ggc/two\<CR>abc " 474c9630d26SBram Moolenaar let @/ = 'three' 475c9630d26SBram Moolenaar normal 2G. 476c9630d26SBram Moolenaar call assert_equal('abc two three four', getline(2)) 477c9630d26SBram Moolenaar %d 478c9630d26SBram Moolenaar call setline(1, repeat(['one two three four'], 2)) 479c9630d26SBram Moolenaar set cpo+=r 480c9630d26SBram Moolenaar exe "normal ggc/two\<CR>abc " 481c9630d26SBram Moolenaar let @/ = 'three' 482c9630d26SBram Moolenaar normal 2G. 483c9630d26SBram Moolenaar call assert_equal('abc three four', getline(2)) 484c9630d26SBram Moolenaar close! 485c9630d26SBram Moolenaar let &cpo = save_cpo 486c9630d26SBram Moolenaarendfunc 487c9630d26SBram Moolenaar 488c9630d26SBram Moolenaar" Test for the 'R' flag in 'cpo' (clear marks after a filter command) 489c9630d26SBram Moolenaarfunc Test_cpo_R() 490c9630d26SBram Moolenaar CheckUnix 491c9630d26SBram Moolenaar let save_cpo = &cpo 492c9630d26SBram Moolenaar new 493c9630d26SBram Moolenaar call setline(1, ['three', 'one', 'two']) 494c9630d26SBram Moolenaar set cpo-=R 495c9630d26SBram Moolenaar 3mark r 496c9630d26SBram Moolenaar %!sort 497c9630d26SBram Moolenaar call assert_equal(3, line("'r")) 498c9630d26SBram Moolenaar %d 499c9630d26SBram Moolenaar call setline(1, ['three', 'one', 'two']) 500c9630d26SBram Moolenaar set cpo+=R 501c9630d26SBram Moolenaar 3mark r 502c9630d26SBram Moolenaar %!sort 503c9630d26SBram Moolenaar call assert_equal(0, line("'r")) 504c9630d26SBram Moolenaar close! 505c9630d26SBram Moolenaar let &cpo = save_cpo 506c9630d26SBram Moolenaarendfunc 507c9630d26SBram Moolenaar 508845e0ee5SBram Moolenaar" TODO: Add a test for the 's' flag in 'cpo'. 509845e0ee5SBram Moolenaar" Set buffer options when entering the buffer for the first time. If not 510845e0ee5SBram Moolenaar" present the options are set when the buffer is created. 511df7df59dSBram Moolenaar 512c9630d26SBram Moolenaar" Test for the 'S' flag in 'cpo' (copying buffer options) 513c9630d26SBram Moolenaarfunc Test_cpo_S() 514c9630d26SBram Moolenaar let save_cpo = &cpo 515c9630d26SBram Moolenaar new Xfile1 516c9630d26SBram Moolenaar set noautoindent 517c9630d26SBram Moolenaar new Xfile2 518c9630d26SBram Moolenaar set cpo-=S 519c9630d26SBram Moolenaar set autoindent 520c9630d26SBram Moolenaar wincmd p 521c9630d26SBram Moolenaar call assert_equal(0, &autoindent) 522c9630d26SBram Moolenaar wincmd p 523c9630d26SBram Moolenaar call assert_equal(1, &autoindent) 524c9630d26SBram Moolenaar set cpo+=S 525c9630d26SBram Moolenaar wincmd p 526c9630d26SBram Moolenaar call assert_equal(1, &autoindent) 527c9630d26SBram Moolenaar set noautoindent 528c9630d26SBram Moolenaar wincmd p 529c9630d26SBram Moolenaar call assert_equal(0, &autoindent) 530c9630d26SBram Moolenaar wincmd t 531c9630d26SBram Moolenaar close! 532c9630d26SBram Moolenaar close! 533c9630d26SBram Moolenaar let &cpo = save_cpo 534c9630d26SBram Moolenaarendfunc 535c9630d26SBram Moolenaar 536df7df59dSBram Moolenaar" Test for the 't' flag in 'cpo' is in the test_tagjump.vim file. 537df7df59dSBram Moolenaar 538c9630d26SBram Moolenaar" Test for the 'u' flag in 'cpo' (Vi-compatible undo) 539c9630d26SBram Moolenaarfunc Test_cpo_u() 540c9630d26SBram Moolenaar let save_cpo = &cpo 541c9630d26SBram Moolenaar new 542c9630d26SBram Moolenaar set cpo-=u 543c9630d26SBram Moolenaar exe "normal iabc\<C-G>udef\<C-G>ughi" 544c9630d26SBram Moolenaar normal uu 545c9630d26SBram Moolenaar call assert_equal('abc', getline(1)) 546c9630d26SBram Moolenaar %d 547c9630d26SBram Moolenaar set cpo+=u 548c9630d26SBram Moolenaar exe "normal iabc\<C-G>udef\<C-G>ughi" 549c9630d26SBram Moolenaar normal uu 550c9630d26SBram Moolenaar call assert_equal('abcdefghi', getline(1)) 551c9630d26SBram Moolenaar close! 552c9630d26SBram Moolenaar let &cpo = save_cpo 553c9630d26SBram Moolenaarendfunc 554c9630d26SBram Moolenaar 555845e0ee5SBram Moolenaar" TODO: Add a test for the 'v' flag in 'cpo'. 556845e0ee5SBram Moolenaar" Backspaced characters remain visible on the screen in Insert mode. 557df7df59dSBram Moolenaar 558df7df59dSBram Moolenaar" Test for the 'w' flag in 'cpo' ('cw' on a blank character changes only one 559df7df59dSBram Moolenaar" character) 560df7df59dSBram Moolenaarfunc Test_cpo_w() 561df7df59dSBram Moolenaar let save_cpo = &cpo 562df7df59dSBram Moolenaar new 563df7df59dSBram Moolenaar set cpo+=w 564df7df59dSBram Moolenaar call setline(1, 'here are some words') 565df7df59dSBram Moolenaar norm! 1gg0elcwZZZ 566df7df59dSBram Moolenaar call assert_equal('hereZZZ are some words', getline('.')) 567df7df59dSBram Moolenaar norm! 1gg2elcWYYY 568df7df59dSBram Moolenaar call assert_equal('hereZZZ areYYY some words', getline('.')) 569df7df59dSBram Moolenaar set cpo-=w 570df7df59dSBram Moolenaar call setline(1, 'here are some words') 571df7df59dSBram Moolenaar norm! 1gg0elcwZZZ 572df7df59dSBram Moolenaar call assert_equal('hereZZZare some words', getline('.')) 573df7df59dSBram Moolenaar norm! 1gg2elcWYYY 574df7df59dSBram Moolenaar call assert_equal('hereZZZare someYYYwords', getline('.')) 575df7df59dSBram Moolenaar close! 576df7df59dSBram Moolenaar let &cpo = save_cpo 577df7df59dSBram Moolenaarendfunc 578df7df59dSBram Moolenaar 579df7df59dSBram Moolenaar" Test for the 'W' flag in 'cpo' is in the test_writefile.vim file 580df7df59dSBram Moolenaar 581c9630d26SBram Moolenaar" Test for the 'x' flag in 'cpo' (Esc on command-line executes command) 582c9630d26SBram Moolenaarfunc Test_cpo_x() 583c9630d26SBram Moolenaar let save_cpo = &cpo 584c9630d26SBram Moolenaar set cpo-=x 585c9630d26SBram Moolenaar let i = 1 586c9630d26SBram Moolenaar call feedkeys(":let i=10\<Esc>", 'xt') 587c9630d26SBram Moolenaar call assert_equal(1, i) 588c9630d26SBram Moolenaar set cpo+=x 589c9630d26SBram Moolenaar call feedkeys(":let i=10\<Esc>", 'xt') 590c9630d26SBram Moolenaar call assert_equal(10, i) 591c9630d26SBram Moolenaar let &cpo = save_cpo 592c9630d26SBram Moolenaarendfunc 593c9630d26SBram Moolenaar 594c9630d26SBram Moolenaar" Test for the 'X' flag in 'cpo' ('R' with a count) 595c9630d26SBram Moolenaarfunc Test_cpo_X() 596c9630d26SBram Moolenaar let save_cpo = &cpo 597c9630d26SBram Moolenaar new 598c9630d26SBram Moolenaar call setline(1, 'aaaaaa') 599c9630d26SBram Moolenaar set cpo-=X 600c9630d26SBram Moolenaar normal gg4Rx 601c9630d26SBram Moolenaar call assert_equal('xxxxaa', getline(1)) 602c9630d26SBram Moolenaar normal ggRy 603c9630d26SBram Moolenaar normal 4. 604c9630d26SBram Moolenaar call assert_equal('yyyyaa', getline(1)) 605c9630d26SBram Moolenaar call setline(1, 'aaaaaa') 606c9630d26SBram Moolenaar set cpo+=X 607c9630d26SBram Moolenaar normal gg4Rx 608c9630d26SBram Moolenaar call assert_equal('xxxxaaaaa', getline(1)) 609c9630d26SBram Moolenaar normal ggRy 610c9630d26SBram Moolenaar normal 4. 611c9630d26SBram Moolenaar call assert_equal('yyyyxxxaaaaa', getline(1)) 612c9630d26SBram Moolenaar close! 613c9630d26SBram Moolenaar let &cpo = save_cpo 614c9630d26SBram Moolenaarendfunc 615c9630d26SBram Moolenaar 616c9630d26SBram Moolenaar" Test for the 'y' flag in 'cpo' (repeating a yank command) 617c9630d26SBram Moolenaarfunc Test_cpo_y() 618c9630d26SBram Moolenaar let save_cpo = &cpo 619c9630d26SBram Moolenaar new 620c9630d26SBram Moolenaar call setline(1, ['one', 'two']) 621c9630d26SBram Moolenaar set cpo-=y 622c9630d26SBram Moolenaar normal ggyy 623c9630d26SBram Moolenaar normal 2G. 624c9630d26SBram Moolenaar call assert_equal("one\n", @") 625c9630d26SBram Moolenaar %d 626c9630d26SBram Moolenaar call setline(1, ['one', 'two']) 627c9630d26SBram Moolenaar set cpo+=y 628c9630d26SBram Moolenaar normal ggyy 629c9630d26SBram Moolenaar normal 2G. 630c9630d26SBram Moolenaar call assert_equal("two\n", @") 631c9630d26SBram Moolenaar close! 632c9630d26SBram Moolenaar let &cpo = save_cpo 633c9630d26SBram Moolenaarendfunc 634c9630d26SBram Moolenaar 635c9630d26SBram Moolenaar" Test for the 'Z' flag in 'cpo' (write! resets 'readonly') 636c9630d26SBram Moolenaarfunc Test_cpo_Z() 637c9630d26SBram Moolenaar let save_cpo = &cpo 638c9630d26SBram Moolenaar call writefile([], 'Xfile') 639c9630d26SBram Moolenaar new Xfile 640c9630d26SBram Moolenaar setlocal readonly 641c9630d26SBram Moolenaar set cpo-=Z 642c9630d26SBram Moolenaar write! 643c9630d26SBram Moolenaar call assert_equal(0, &readonly) 644c9630d26SBram Moolenaar set cpo+=Z 645c9630d26SBram Moolenaar setlocal readonly 646c9630d26SBram Moolenaar write! 647c9630d26SBram Moolenaar call assert_equal(1, &readonly) 648c9630d26SBram Moolenaar close! 649c9630d26SBram Moolenaar call delete('Xfile') 650c9630d26SBram Moolenaar let &cpo = save_cpo 651c9630d26SBram Moolenaarendfunc 652c9630d26SBram Moolenaar 653df7df59dSBram Moolenaar" Test for the '!' flag in 'cpo' is in the test_normal.vim file 654c9630d26SBram Moolenaar 655c9630d26SBram Moolenaar" Test for displaying dollar when changing text ('$' flag in 'cpoptions') 656c9630d26SBram Moolenaarfunc Test_cpo_dollar() 657c9630d26SBram Moolenaar new 658c9630d26SBram Moolenaar let g:Line = '' 659c9630d26SBram Moolenaar func SaveFirstLine() 660c9630d26SBram Moolenaar let g:Line = Screenline(1) 661c9630d26SBram Moolenaar return '' 662c9630d26SBram Moolenaar endfunc 663c9630d26SBram Moolenaar inoremap <expr> <buffer> <F2> SaveFirstLine() 664c9630d26SBram Moolenaar call test_override('redraw_flag', 1) 665c9630d26SBram Moolenaar set cpo+=$ 666c9630d26SBram Moolenaar call setline(1, 'one two three') 667c9630d26SBram Moolenaar redraw! 668c9630d26SBram Moolenaar exe "normal c2w\<F2>vim" 669c9630d26SBram Moolenaar call assert_equal('one tw$ three', g:Line) 670c9630d26SBram Moolenaar call assert_equal('vim three', getline(1)) 671c9630d26SBram Moolenaar set cpo-=$ 672c9630d26SBram Moolenaar call test_override('ALL', 0) 673c9630d26SBram Moolenaar delfunc SaveFirstLine 674c9630d26SBram Moolenaar %bw! 675c9630d26SBram Moolenaarendfunc 676c9630d26SBram Moolenaar 677df7df59dSBram Moolenaar" Test for the '%' flag in 'cpo' (parenthesis matching inside strings) 678df7df59dSBram Moolenaarfunc Test_cpo_percent() 679df7df59dSBram Moolenaar let save_cpo = &cpo 680df7df59dSBram Moolenaar new 681df7df59dSBram Moolenaar call setline(1, ' if (strcmp("ab)cd(", s))') 682df7df59dSBram Moolenaar set cpo-=% 683df7df59dSBram Moolenaar normal 8|% 684df7df59dSBram Moolenaar call assert_equal(28, col('.')) 685df7df59dSBram Moolenaar normal 15|% 686df7df59dSBram Moolenaar call assert_equal(27, col('.')) 687df7df59dSBram Moolenaar normal 27|% 688df7df59dSBram Moolenaar call assert_equal(15, col('.')) 689df7df59dSBram Moolenaar call assert_beeps("normal 19|%") 690df7df59dSBram Moolenaar call assert_beeps("normal 22|%") 691df7df59dSBram Moolenaar set cpo+=% 692df7df59dSBram Moolenaar normal 8|% 693df7df59dSBram Moolenaar call assert_equal(28, col('.')) 694df7df59dSBram Moolenaar normal 15|% 695df7df59dSBram Moolenaar call assert_equal(19, col('.')) 696df7df59dSBram Moolenaar normal 27|% 697df7df59dSBram Moolenaar call assert_equal(22, col('.')) 698df7df59dSBram Moolenaar normal 19|% 699df7df59dSBram Moolenaar call assert_equal(15, col('.')) 700df7df59dSBram Moolenaar normal 22|% 701df7df59dSBram Moolenaar call assert_equal(27, col('.')) 702df7df59dSBram Moolenaar close! 703df7df59dSBram Moolenaar let &cpo = save_cpo 704df7df59dSBram Moolenaarendfunc 705df7df59dSBram Moolenaar 706df7df59dSBram Moolenaar" Test for cursor movement with '-' in 'cpoptions' 707df7df59dSBram Moolenaarfunc Test_cpo_minus() 708df7df59dSBram Moolenaar new 709df7df59dSBram Moolenaar call setline(1, ['foo', 'bar', 'baz']) 710df7df59dSBram Moolenaar let save_cpo = &cpo 711df7df59dSBram Moolenaar set cpo+=- 712df7df59dSBram Moolenaar call assert_beeps('normal 10j') 713df7df59dSBram Moolenaar call assert_equal(1, line('.')) 714df7df59dSBram Moolenaar normal G 715df7df59dSBram Moolenaar call assert_beeps('normal 10k') 716df7df59dSBram Moolenaar call assert_equal(3, line('.')) 717df7df59dSBram Moolenaar call assert_fails(10, 'E16:') 718df7df59dSBram Moolenaar close! 719df7df59dSBram Moolenaar let &cpo = save_cpo 720df7df59dSBram Moolenaarendfunc 721df7df59dSBram Moolenaar 722df7df59dSBram Moolenaar" Test for the '+' flag in 'cpo' ('write file' command resets the 'modified' 723df7df59dSBram Moolenaar" flag) 724df7df59dSBram Moolenaarfunc Test_cpo_plus() 725df7df59dSBram Moolenaar let save_cpo = &cpo 726df7df59dSBram Moolenaar call writefile([], 'Xfile') 727df7df59dSBram Moolenaar new Xfile 728df7df59dSBram Moolenaar call setline(1, 'foo') 729df7df59dSBram Moolenaar write X1 730df7df59dSBram Moolenaar call assert_equal(1, &modified) 731df7df59dSBram Moolenaar set cpo+=+ 732df7df59dSBram Moolenaar write X2 733df7df59dSBram Moolenaar call assert_equal(0, &modified) 734df7df59dSBram Moolenaar close! 735df7df59dSBram Moolenaar call delete('Xfile') 736df7df59dSBram Moolenaar call delete('X1') 737df7df59dSBram Moolenaar call delete('X2') 738df7df59dSBram Moolenaar let &cpo = save_cpo 739df7df59dSBram Moolenaarendfunc 740df7df59dSBram Moolenaar 741df7df59dSBram Moolenaar" Test for the '*' flag in 'cpo' (':*' is same as ':@') 742df7df59dSBram Moolenaarfunc Test_cpo_star() 743df7df59dSBram Moolenaar let save_cpo = &cpo 744df7df59dSBram Moolenaar let x = 0 745df7df59dSBram Moolenaar new 746df7df59dSBram Moolenaar set cpo-=* 747df7df59dSBram Moolenaar let @a = 'let x += 1' 748df7df59dSBram Moolenaar call assert_fails('*a', 'E20:') 749df7df59dSBram Moolenaar set cpo+=* 750df7df59dSBram Moolenaar *a 751df7df59dSBram Moolenaar call assert_equal(1, x) 752df7df59dSBram Moolenaar close! 753df7df59dSBram Moolenaar let &cpo = save_cpo 754df7df59dSBram Moolenaarendfunc 755df7df59dSBram Moolenaar 756df7df59dSBram Moolenaar" Test for the '<' flag in 'cpo' is in the test_mapping.vim file 757df7df59dSBram Moolenaar 758df7df59dSBram Moolenaar" Test for the '>' flag in 'cpo' (use a new line when appending to a register) 759df7df59dSBram Moolenaarfunc Test_cpo_gt() 760df7df59dSBram Moolenaar let save_cpo = &cpo 761df7df59dSBram Moolenaar new 762df7df59dSBram Moolenaar call setline(1, 'one two') 763df7df59dSBram Moolenaar set cpo-=> 764df7df59dSBram Moolenaar let @r = '' 765df7df59dSBram Moolenaar normal gg"Rye 766df7df59dSBram Moolenaar normal "Rye 767df7df59dSBram Moolenaar call assert_equal("oneone", @r) 768df7df59dSBram Moolenaar set cpo+=> 769df7df59dSBram Moolenaar let @r = '' 770df7df59dSBram Moolenaar normal gg"Rye 771df7df59dSBram Moolenaar normal "Rye 772df7df59dSBram Moolenaar call assert_equal("\none\none", @r) 773df7df59dSBram Moolenaar close! 774df7df59dSBram Moolenaar let &cpo = save_cpo 775df7df59dSBram Moolenaarendfunc 776df7df59dSBram Moolenaar 777df7df59dSBram Moolenaar" Test for the ';' flag in 'cpo' 778df7df59dSBram Moolenaar" Test for t,f,F,T movement commands and 'cpo-;' setting 779df7df59dSBram Moolenaarfunc Test_cpo_semicolon() 780df7df59dSBram Moolenaar let save_cpo = &cpo 781df7df59dSBram Moolenaar new 782df7df59dSBram Moolenaar call append(0, ["aaa two three four", " zzz", "yyy ", 783df7df59dSBram Moolenaar \ "bbb yee yoo four", "ccc two three four", 784df7df59dSBram Moolenaar \ "ddd yee yoo four"]) 785df7df59dSBram Moolenaar set cpo-=; 786df7df59dSBram Moolenaar 1 787df7df59dSBram Moolenaar normal! 0tt;D 788df7df59dSBram Moolenaar 2 789df7df59dSBram Moolenaar normal! 0fz;D 790df7df59dSBram Moolenaar 3 791df7df59dSBram Moolenaar normal! $Fy;D 792df7df59dSBram Moolenaar 4 793df7df59dSBram Moolenaar normal! $Ty;D 794df7df59dSBram Moolenaar set cpo+=; 795df7df59dSBram Moolenaar 5 796df7df59dSBram Moolenaar normal! 0tt;;D 797df7df59dSBram Moolenaar 6 798df7df59dSBram Moolenaar normal! $Ty;;D 799df7df59dSBram Moolenaar 800df7df59dSBram Moolenaar call assert_equal('aaa two', getline(1)) 801df7df59dSBram Moolenaar call assert_equal(' z', getline(2)) 802df7df59dSBram Moolenaar call assert_equal('y', getline(3)) 803df7df59dSBram Moolenaar call assert_equal('bbb y', getline(4)) 804df7df59dSBram Moolenaar call assert_equal('ccc', getline(5)) 805df7df59dSBram Moolenaar call assert_equal('ddd yee y', getline(6)) 806df7df59dSBram Moolenaar close! 807df7df59dSBram Moolenaar let &cpo = save_cpo 808df7df59dSBram Moolenaarendfunc 809df7df59dSBram Moolenaar 810df7df59dSBram Moolenaar" Test for the '#' flag in 'cpo' (count before 'D', 'o' and 'O' operators) 811df7df59dSBram Moolenaarfunc Test_cpo_hash() 812df7df59dSBram Moolenaar let save_cpo = &cpo 813df7df59dSBram Moolenaar new 814df7df59dSBram Moolenaar set cpo-=# 815df7df59dSBram Moolenaar call setline(1, ['one', 'two', 'three']) 816df7df59dSBram Moolenaar normal gg2D 817df7df59dSBram Moolenaar call assert_equal(['three'], getline(1, '$')) 818df7df59dSBram Moolenaar normal gg2ofour 819df7df59dSBram Moolenaar call assert_equal(['three', 'four', 'four'], getline(1, '$')) 820df7df59dSBram Moolenaar normal gg2Otwo 821df7df59dSBram Moolenaar call assert_equal(['two', 'two', 'three', 'four', 'four'], getline(1, '$')) 822df7df59dSBram Moolenaar %d 823df7df59dSBram Moolenaar set cpo+=# 824df7df59dSBram Moolenaar call setline(1, ['one', 'two', 'three']) 825df7df59dSBram Moolenaar normal gg2D 826df7df59dSBram Moolenaar call assert_equal(['', 'two', 'three'], getline(1, '$')) 827df7df59dSBram Moolenaar normal gg2oone 828df7df59dSBram Moolenaar call assert_equal(['', 'one', 'two', 'three'], getline(1, '$')) 829df7df59dSBram Moolenaar normal gg2Ozero 830df7df59dSBram Moolenaar call assert_equal(['zero', '', 'one', 'two', 'three'], getline(1, '$')) 831df7df59dSBram Moolenaar close! 832df7df59dSBram Moolenaar let &cpo = save_cpo 833df7df59dSBram Moolenaarendfunc 834df7df59dSBram Moolenaar 835df7df59dSBram Moolenaar" Test for the '&' flag in 'cpo'. The swap file is kept when a buffer is still 836df7df59dSBram Moolenaar" loaded and ':preserve' is used. 837df7df59dSBram Moolenaarfunc Test_cpo_ampersand() 838df7df59dSBram Moolenaar call writefile(['one'], 'Xfile') 839df7df59dSBram Moolenaar let after =<< trim [CODE] 840df7df59dSBram Moolenaar set cpo+=& 841df7df59dSBram Moolenaar preserve 842df7df59dSBram Moolenaar qall 843df7df59dSBram Moolenaar [CODE] 844df7df59dSBram Moolenaar if RunVim([], after, 'Xfile') 845df7df59dSBram Moolenaar call assert_equal(1, filereadable('.Xfile.swp')) 846df7df59dSBram Moolenaar call delete('.Xfile.swp') 847df7df59dSBram Moolenaar endif 848df7df59dSBram Moolenaar call delete('Xfile') 849df7df59dSBram Moolenaarendfunc 850df7df59dSBram Moolenaar 851df7df59dSBram Moolenaar" Test for the '\' flag in 'cpo' (backslash in a [] range in a search pattern) 852df7df59dSBram Moolenaarfunc Test_cpo_backslash() 853df7df59dSBram Moolenaar let save_cpo = &cpo 854df7df59dSBram Moolenaar new 855df7df59dSBram Moolenaar call setline(1, ['', " \\-string"]) 856df7df59dSBram Moolenaar set cpo-=\ 857df7df59dSBram Moolenaar exe 'normal gg/[ \-]' .. "\<CR>n" 858df7df59dSBram Moolenaar call assert_equal(3, col('.')) 859df7df59dSBram Moolenaar set cpo+=\ 860df7df59dSBram Moolenaar exe 'normal gg/[ \-]' .. "\<CR>n" 861df7df59dSBram Moolenaar call assert_equal(2, col('.')) 862df7df59dSBram Moolenaar close! 863df7df59dSBram Moolenaar let &cpo = save_cpo 864df7df59dSBram Moolenaarendfunc 865df7df59dSBram Moolenaar 866df7df59dSBram Moolenaar" Test for the '/' flag in 'cpo' is in the test_substitute.vim file 867df7df59dSBram Moolenaar 868df7df59dSBram Moolenaar" Test for the '{' flag in 'cpo' (the "{" and "}" commands stop at a { 869df7df59dSBram Moolenaar" character at the start of a line) 870df7df59dSBram Moolenaarfunc Test_cpo_brace() 871df7df59dSBram Moolenaar let save_cpo = &cpo 872df7df59dSBram Moolenaar new 873df7df59dSBram Moolenaar call setline(1, ['', '{', ' int i;', '}', '']) 874df7df59dSBram Moolenaar set cpo-={ 875df7df59dSBram Moolenaar normal gg} 876df7df59dSBram Moolenaar call assert_equal(5, line('.')) 877df7df59dSBram Moolenaar normal G{ 878df7df59dSBram Moolenaar call assert_equal(1, line('.')) 879df7df59dSBram Moolenaar set cpo+={ 880df7df59dSBram Moolenaar normal gg} 881df7df59dSBram Moolenaar call assert_equal(2, line('.')) 882df7df59dSBram Moolenaar normal G{ 883df7df59dSBram Moolenaar call assert_equal(2, line('.')) 884df7df59dSBram Moolenaar close! 885df7df59dSBram Moolenaar let &cpo = save_cpo 886df7df59dSBram Moolenaarendfunc 887df7df59dSBram Moolenaar 888df7df59dSBram Moolenaar" Test for the '.' flag in 'cpo' (:cd command fails if the current buffer is 889df7df59dSBram Moolenaar" modified) 890df7df59dSBram Moolenaarfunc Test_cpo_dot() 891df7df59dSBram Moolenaar let save_cpo = &cpo 892df7df59dSBram Moolenaar new Xfoo 893df7df59dSBram Moolenaar call setline(1, 'foo') 894df7df59dSBram Moolenaar let save_dir = getcwd() 895df7df59dSBram Moolenaar set cpo+=. 896df7df59dSBram Moolenaar 897df7df59dSBram Moolenaar " :cd should fail when buffer is modified and 'cpo' contains dot. 898df7df59dSBram Moolenaar call assert_fails('cd ..', 'E747:') 899df7df59dSBram Moolenaar call assert_equal(save_dir, getcwd()) 900df7df59dSBram Moolenaar 901df7df59dSBram Moolenaar " :cd with exclamation mark should succeed. 902df7df59dSBram Moolenaar cd! .. 903df7df59dSBram Moolenaar call assert_notequal(save_dir, getcwd()) 904df7df59dSBram Moolenaar 905df7df59dSBram Moolenaar " :cd should succeed when buffer has been written. 906df7df59dSBram Moolenaar w! 907df7df59dSBram Moolenaar exe 'cd ' .. fnameescape(save_dir) 908df7df59dSBram Moolenaar call assert_equal(save_dir, getcwd()) 909df7df59dSBram Moolenaar 910df7df59dSBram Moolenaar call delete('Xfoo') 911df7df59dSBram Moolenaar set cpo& 912df7df59dSBram Moolenaar close! 913df7df59dSBram Moolenaar let &cpo = save_cpo 914df7df59dSBram Moolenaarendfunc 915df7df59dSBram Moolenaar 916c9630d26SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 917