Patch 8.2.0968
Problem:    No proper testing of the 'cpoptions' flags.
Solution:   Add tests. (Yegappan Lakshmanan, closes #6251)
Files:      src/testdir/Make_all.mak, src/testdir/test_cpoptions.vim,
            src/testdir/test_edit.vim, src/testdir/test_normal.vim


*** ../vim-8.2.0967/src/testdir/Make_all.mak    2020-06-08 20:50:23.432250668 
+0200
--- src/testdir/Make_all.mak    2020-06-13 13:18:16.721109847 +0200
***************
*** 94,99 ****
--- 94,100 ----
        test_compiler \
        test_conceal \
        test_const \
+       test_cpoptions \
        test_crypt \
        test_cscope \
        test_cursor_func \
***************
*** 343,348 ****
--- 344,350 ----
        test_comparators.res \
        test_conceal.res \
        test_const.res \
+       test_cpoptions.res \
        test_crypt.res \
        test_cscope.res \
        test_cursor_func.res \
*** ../vim-8.2.0967/src/testdir/test_cpoptions.vim      2020-06-13 
13:20:08.088672460 +0200
--- src/testdir/test_cpoptions.vim      2020-06-13 13:18:16.721109847 +0200
***************
*** 0 ****
--- 1,627 ----
+ " Test for various 'cpoptions' (cpo) flags
+ 
+ source check.vim
+ source view_util.vim
+ 
+ " Test for the 'a' flag in 'cpo'. Reading a file should set the alternate
+ " file name.
+ func Test_cpo_a()
+   let save_cpo = &cpo
+   call writefile(['one'], 'Xfile')
+   " Wipe out all the buffers, so that the alternate file is empty
+   edit Xfoo | %bw
+   set cpo-=a
+   new
+   read Xfile
+   call assert_equal('', @#)
+   %d
+   set cpo+=a
+   read Xfile
+   call assert_equal('Xfile', @#)
+   close!
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'A' flag in 'cpo'. Writing a file should set the alternate
+ " file name.
+ func Test_cpo_A()
+   let save_cpo = &cpo
+   " Wipe out all the buffers, so that the alternate file is empty
+   edit Xfoo | %bw
+   set cpo-=A
+   new Xfile1
+   write Xfile2
+   call assert_equal('', @#)
+   %bw
+   call delete('Xfile2')
+   new Xfile1
+   set cpo+=A
+   write Xfile2
+   call assert_equal('Xfile2', @#)
+   close!
+   call delete('Xfile2')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'b' flag in 'cpo'. "\|" at the end of a map command is
+ " recognized as the end of the map.
+ func Test_cpo_b()
+   let save_cpo = &cpo
+   set cpo+=b
+   nnoremap <F5> :pwd\<CR>\|let i = 1
+   call assert_equal(':pwd\<CR>\', maparg('<F5>'))
+   nunmap <F5>
+   exe "nnoremap <F5> :pwd\<C-V>|let i = 1"
+   call assert_equal(':pwd|let i = 1', maparg('<F5>'))
+   nunmap <F5>
+   set cpo-=b
+   nnoremap <F5> :pwd\<CR>\|let i = 1
+   call assert_equal(':pwd\<CR>|let i = 1', maparg('<F5>'))
+   let &cpo = save_cpo
+   nunmap <F5>
+ endfunc
+ 
+ " Test for the 'c' flag in 'cpo'.
+ func Test_cpo_c()
+   let save_cpo = &cpo
+   set cpo+=c
+   new
+   call setline(1, ' abababababab')
+   exe "normal gg/abab\<CR>"
+   call assert_equal(3, searchcount().total)
+   set cpo-=c
+   exe "normal gg/abab\<CR>"
+   call assert_equal(5, searchcount().total)
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'C' flag in 'cpo' (line continuation)
+ func Test_cpo_C()
+   let save_cpo = &cpo
+   call writefile(['let l = [', '\ 1,', '\ 2]'], 'Xfile')
+   set cpo-=C
+   source Xfile
+   call assert_equal([1, 2], g:l)
+   set cpo+=C
+   call assert_fails('source Xfile', 'E10:')
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'd' flag in 'cpo' (tags relative to the current file)
+ func Test_cpo_d()
+   let save_cpo = &cpo
+   call mkdir('Xdir')
+   call writefile(["one\tXfile1\t/^one$/"], 'tags')
+   call writefile(["two\tXfile2\t/^two$/"], 'Xdir/tags')
+   set tags=./tags
+   set cpo-=d
+   edit Xdir/Xfile
+   call assert_equal('two', taglist('.*')[0].name)
+   set cpo+=d
+   call assert_equal('one', taglist('.*')[0].name)
+   %bw!
+   call delete('tags')
+   call delete('Xdir', 'rf')
+   set tags&
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'D' flag in 'cpo' (digraph after a r, f or t)
+ func Test_cpo_D()
+   CheckFeature digraphs
+   let save_cpo = &cpo
+   new
+   set cpo-=D
+   call setline(1, 'abcdefgh|')
+   exe "norm! 1gg0f\<c-k>!!"
+   call assert_equal(9, col('.'))
+   set cpo+=D
+   exe "norm! 1gg0f\<c-k>!!"
+   call assert_equal(1, col('.'))
+   set cpo-=D
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'e' flag in 'cpo'
+ func Test_cpo_e()
+   let save_cpo = &cpo
+   let @a='let i = 45'
+   set cpo+=e
+   call feedkeys(":@a\<CR>", 'xt')
+   call assert_equal(45, i)
+   set cpo-=e
+   call feedkeys(":@a\<CR>6\<CR>", 'xt')
+   call assert_equal(456, i)
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'E' flag in 'cpo' with yank, change, delete, etc. operators
+ func Test_cpo_E()
+   new
+   call setline(1, '')
+   set cpo+=E
+   " yank an empty line
+   call assert_beeps('normal "ayl')
+   " change an empty line
+   call assert_beeps('normal lcTa')
+   " delete an empty line
+   call assert_beeps('normal D')
+   call assert_beeps('normal dl')
+   call assert_equal('', getline(1))
+   " change case of an empty line
+   call assert_beeps('normal gul')
+   call assert_beeps('normal gUl')
+   " replace a character
+   call assert_beeps('normal vrx')
+   " increment and decrement
+   call assert_beeps('exe "normal v\<C-A>"')
+   call assert_beeps('exe "normal v\<C-X>"')
+   set cpo-=E
+   close!
+ endfunc
+ 
+ " Test for the 'f' flag in 'cpo' (read in an empty buffer sets the file name)
+ func Test_cpo_f()
+   let save_cpo = &cpo
+   new
+   set cpo-=f
+   read test_cpoptions.vim
+   call assert_equal('', @%)
+   %d
+   set cpo+=f
+   read test_cpoptions.vim
+   call assert_equal('test_cpoptions.vim', @%)
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'F' flag in 'cpo' (write in an empty buffer sets the file name)
+ func Test_cpo_F()
+   let save_cpo = &cpo
+   new
+   set cpo-=F
+   write Xfile
+   call assert_equal('', @%)
+   call delete('Xfile')
+   set cpo+=F
+   write Xfile
+   call assert_equal('Xfile', @%)
+   close!
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'g' flag in 'cpo' (jump to line 1 when re-editing a file)
+ func Test_cpo_g()
+   let save_cpo = &cpo
+   new test_cpoptions.vim
+   set cpo-=g
+   normal 20G
+   edit
+   call assert_equal(20, line('.'))
+   set cpo+=g
+   edit
+   call assert_equal(1, line('.'))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for inserting text in a line with only spaces ('H' flag in 'cpoptions')
+ func Test_cpo_H()
+   let save_cpo = &cpo
+   new
+   set cpo-=H
+   call setline(1, '    ')
+   normal! Ia
+   call assert_equal('    a', getline(1))
+   set cpo+=H
+   call setline(1, '    ')
+   normal! Ia
+   call assert_equal('   a ', getline(1))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'I' flag in 'cpo' (deleting autoindent when using arrow keys)
+ func Test_cpo_I()
+   let save_cpo = &cpo
+   new
+   setlocal autoindent
+   set cpo+=I
+   exe "normal i    one\<CR>\<Up>"
+   call assert_equal('    ', getline(2))
+   set cpo-=I
+   %d
+   exe "normal i    one\<CR>\<Up>"
+   call assert_equal('', getline(2))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'J' flag in 'cpo' (two spaces after a sentence)
+ func Test_cpo_J()
+   let save_cpo = &cpo
+   new
+   set cpo-=J
+   call setline(1, 'one. two!  three? four."''  five.)]')
+   normal 0
+   for colnr in [6, 12, 19, 28, 34]
+     normal )
+     call assert_equal(colnr, col('.'))
+   endfor
+   for colnr in [28, 19, 12, 6, 1]
+     normal (
+     call assert_equal(colnr, col('.'))
+   endfor
+   set cpo+=J
+   normal 0
+   for colnr in [12, 28, 34]
+     normal )
+     call assert_equal(colnr, col('.'))
+   endfor
+   for colnr in [28, 12, 1]
+     normal (
+     call assert_equal(colnr, col('.'))
+   endfor
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " TODO: Add a test for 'k' in 'cpo'
+ 
+ " TODO: Add a test for 'K' in 'cpo'
+ 
+ " Test for the 'l' flag in 'cpo' (backslash in a [] range)
+ func Test_cpo_l()
+   let save_cpo = &cpo
+   new
+   call setline(1, ['', "a\tc" .. '\t'])
+   set cpo-=l
+   exe 'normal gg/[\t]' .. "\<CR>"
+   call assert_equal([2, 8], [col('.'), virtcol('.')])
+   set cpo+=l
+   exe 'normal gg/[\t]' .. "\<CR>"
+   call assert_equal([4, 10], [col('.'), virtcol('.')])
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for inserting tab in virtual replace mode ('L' flag in 'cpoptions')
+ func Test_cpo_L()
+   let save_cpo = &cpo
+   new
+   set cpo-=L
+   call setline(1, 'abcdefghijklmnopqr')
+   exe "normal 0gR\<Tab>"
+   call assert_equal("\<Tab>ijklmnopqr", getline(1))
+   set cpo+=L
+   set list
+   call setline(1, 'abcdefghijklmnopqr')
+   exe "normal 0gR\<Tab>"
+   call assert_equal("\<Tab>cdefghijklmnopqr", getline(1))
+   set nolist
+   call setline(1, 'abcdefghijklmnopqr')
+   exe "normal 0gR\<Tab>"
+   call assert_equal("\<Tab>ijklmnopqr", getline(1))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " TODO: This test doesn't work.
+ 
+ " Test for the 'M' flag in 'cpo' (% with escape parenthesis)
+ func Test_cpo_M()
+   let save_cpo = &cpo
+   new
+   call setline(1, ['( \( )', '\( ( \)'])
+ 
+   set cpo-=M
+   call cursor(1, 1)
+   normal %
+   call assert_equal(6, col('.'))
+   call cursor(1, 4)
+   call assert_beeps('normal %')
+   call cursor(2, 2)
+   normal %
+   call assert_equal(7, col('.'))
+   call cursor(2, 4)
+   call assert_beeps('normal %')
+ 
+   set cpo+=M
+   call cursor(1, 4)
+   normal %
+   call assert_equal(6, col('.'))
+   call cursor(1, 1)
+   call assert_beeps('normal %')
+   call cursor(2, 4)
+   normal %
+   call assert_equal(7, col('.'))
+   call cursor(2, 1)
+   call assert_beeps('normal %')
+ 
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'n' flag in 'cpo' (using number column for wrapped lines)
+ func Test_cpo_n()
+   let save_cpo = &cpo
+   new
+   call setline(1, repeat('a', &columns))
+   setlocal number
+   set cpo-=n
+   redraw!
+   call assert_equal('    aaaa', Screenline(2))
+   set cpo+=n
+   redraw!
+   call assert_equal('aaaa', Screenline(2))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'o' flag in 'cpo' (line offset to search command)
+ func Test_cpo_o()
+   let save_cpo = &cpo
+   new
+   call setline(1, ['', 'one', 'two', 'three', 'one', 'two', 'three'])
+   set cpo-=o
+   exe "normal /one/+2\<CR>"
+   normal n
+   call assert_equal(7, line('.'))
+   set cpo+=o
+   exe "normal /one/+2\<CR>"
+   normal n
+   call assert_equal(5, line('.'))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'O' flag in 'cpo' (overwriting an existing file)
+ func Test_cpo_O()
+   let save_cpo = &cpo
+   new Xfile
+   call setline(1, 'one')
+   call writefile(['two'], 'Xfile')
+   set cpo-=O
+   call assert_fails('write', 'E13:')
+   set cpo+=O
+   write
+   call assert_equal(['one'], readfile('Xfile'))
+   close!
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'P' flag in 'cpo' (appending to a file sets the current file
+ " name)
+ func Test_cpo_P()
+   let save_cpo = &cpo
+   call writefile([], 'Xfile')
+   new
+   call setline(1, 'one')
+   set cpo+=F
+   set cpo-=P
+   write >> Xfile
+   call assert_equal('', @%)
+   set cpo+=P
+   write >> Xfile
+   call assert_equal('Xfile', @%)
+   close!
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'q' flag in 'cpo' (joining multiple lines)
+ func Test_cpo_q()
+   let save_cpo = &cpo
+   new
+   call setline(1, ['one', 'two', 'three', 'four', 'five'])
+   set cpo-=q
+   normal gg4J
+   call assert_equal(14, col('.'))
+   %d
+   call setline(1, ['one', 'two', 'three', 'four', 'five'])
+   set cpo+=q
+   normal gg4J
+   call assert_equal(4, col('.'))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'r' flag in 'cpo' (redo command with a search motion)
+ func Test_cpo_r()
+   let save_cpo = &cpo
+   new
+   call setline(1, repeat(['one two three four'], 2))
+   set cpo-=r
+   exe "normal ggc/two\<CR>abc "
+   let @/ = 'three'
+   normal 2G.
+   call assert_equal('abc two three four', getline(2))
+   %d
+   call setline(1, repeat(['one two three four'], 2))
+   set cpo+=r
+   exe "normal ggc/two\<CR>abc "
+   let @/ = 'three'
+   normal 2G.
+   call assert_equal('abc three four', getline(2))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'R' flag in 'cpo' (clear marks after a filter command)
+ func Test_cpo_R()
+   CheckUnix
+   let save_cpo = &cpo
+   new
+   call setline(1, ['three', 'one', 'two'])
+   set cpo-=R
+   3mark r
+   %!sort
+   call assert_equal(3, line("'r"))
+   %d
+   call setline(1, ['three', 'one', 'two'])
+   set cpo+=R
+   3mark r
+   %!sort
+   call assert_equal(0, line("'r"))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'S' flag in 'cpo' (copying buffer options)
+ func Test_cpo_S()
+   let save_cpo = &cpo
+   new Xfile1
+   set noautoindent
+   new Xfile2
+   set cpo-=S
+   set autoindent
+   wincmd p
+   call assert_equal(0, &autoindent)
+   wincmd p
+   call assert_equal(1, &autoindent)
+   set cpo+=S
+   wincmd p
+   call assert_equal(1, &autoindent)
+   set noautoindent
+   wincmd p
+   call assert_equal(0, &autoindent)
+   wincmd t
+   close!
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'u' flag in 'cpo' (Vi-compatible undo)
+ func Test_cpo_u()
+   let save_cpo = &cpo
+   new
+   set cpo-=u
+   exe "normal iabc\<C-G>udef\<C-G>ughi"
+   normal uu
+   call assert_equal('abc', getline(1))
+   %d
+   set cpo+=u
+   exe "normal iabc\<C-G>udef\<C-G>ughi"
+   normal uu
+   call assert_equal('abcdefghi', getline(1))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'x' flag in 'cpo' (Esc on command-line executes command)
+ func Test_cpo_x()
+   let save_cpo = &cpo
+   set cpo-=x
+   let i = 1
+   call feedkeys(":let i=10\<Esc>", 'xt')
+   call assert_equal(1, i)
+   set cpo+=x
+   call feedkeys(":let i=10\<Esc>", 'xt')
+   call assert_equal(10, i)
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'X' flag in 'cpo' ('R' with a count)
+ func Test_cpo_X()
+   let save_cpo = &cpo
+   new
+   call setline(1, 'aaaaaa')
+   set cpo-=X
+   normal gg4Rx
+   call assert_equal('xxxxaa', getline(1))
+   normal ggRy
+   normal 4.
+   call assert_equal('yyyyaa', getline(1))
+   call setline(1, 'aaaaaa')
+   set cpo+=X
+   normal gg4Rx
+   call assert_equal('xxxxaaaaa', getline(1))
+   normal ggRy
+   normal 4.
+   call assert_equal('yyyyxxxaaaaa', getline(1))
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'y' flag in 'cpo' (repeating a yank command)
+ func Test_cpo_y()
+   let save_cpo = &cpo
+   new
+   call setline(1, ['one', 'two'])
+   set cpo-=y
+   normal ggyy
+   normal 2G.
+   call assert_equal("one\n", @")
+   %d
+   call setline(1, ['one', 'two'])
+   set cpo+=y
+   normal ggyy
+   normal 2G.
+   call assert_equal("two\n", @")
+   close!
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for the 'Z' flag in 'cpo' (write! resets 'readonly')
+ func Test_cpo_Z()
+   let save_cpo = &cpo
+   call writefile([], 'Xfile')
+   new Xfile
+   setlocal readonly
+   set cpo-=Z
+   write!
+   call assert_equal(0, &readonly)
+   set cpo+=Z
+   setlocal readonly
+   write!
+   call assert_equal(1, &readonly)
+   close!
+   call delete('Xfile')
+   let &cpo = save_cpo
+ endfunc
+ 
+ " Test for cursor movement with '-' in 'cpoptions'
+ func Test_cpo_minus()
+   new
+   call setline(1, ['foo', 'bar', 'baz'])
+   let save_cpo = &cpo
+   set cpo+=-
+   call assert_beeps('normal 10j')
+   call assert_equal(1, line('.'))
+   normal G
+   call assert_beeps('normal 10k')
+   call assert_equal(3, line('.'))
+   call assert_fails(10, 'E16:')
+   let &cpo = save_cpo
+   close!
+ endfunc
+ 
+ " Test for displaying dollar when changing text ('$' flag in 'cpoptions')
+ func Test_cpo_dollar()
+   new
+   let g:Line = ''
+   func SaveFirstLine()
+     let g:Line = Screenline(1)
+     return ''
+   endfunc
+   inoremap <expr> <buffer> <F2> SaveFirstLine()
+   call test_override('redraw_flag', 1)
+   set cpo+=$
+   call setline(1, 'one two three')
+   redraw!
+   exe "normal c2w\<F2>vim"
+   call assert_equal('one tw$ three', g:Line)
+   call assert_equal('vim three', getline(1))
+   set cpo-=$
+   call test_override('ALL', 0)
+   delfunc SaveFirstLine
+   %bw!
+ endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0967/src/testdir/test_edit.vim   2020-05-05 19:57:15.075406752 
+0200
--- src/testdir/test_edit.vim   2020-06-13 13:18:16.721109847 +0200
***************
*** 1574,1610 ****
    close!
  endfunc
  
- " Test for inserting text in a line with only spaces ('H' flag in 'cpoptions')
- func Test_edit_cpo_H()
-   new
-   call setline(1, '    ')
-   normal! Ia
-   call assert_equal('    a', getline(1))
-   set cpo+=H
-   call setline(1, '    ')
-   normal! Ia
-   call assert_equal('   a ', getline(1))
-   set cpo-=H
-   close!
- endfunc
- 
- " Test for inserting tab in virtual replace mode ('L' flag in 'cpoptions')
- func Test_edit_cpo_L()
-   new
-   call setline(1, 'abcdefghijklmnopqr')
-   exe "normal 0gR\<Tab>"
-   call assert_equal("\<Tab>ijklmnopqr", getline(1))
-   set cpo+=L
-   set list
-   call setline(1, 'abcdefghijklmnopqr')
-   exe "normal 0gR\<Tab>"
-   call assert_equal("\<Tab>cdefghijklmnopqr", getline(1))
-   set nolist
-   call setline(1, 'abcdefghijklmnopqr')
-   exe "normal 0gR\<Tab>"
-   call assert_equal("\<Tab>ijklmnopqr", getline(1))
-   set cpo-=L
-   %bw!
- endfunc
- 
  " vim: shiftwidth=2 sts=2 expandtab
--- 1574,1577 ----
*** ../vim-8.2.0967/src/testdir/test_normal.vim 2020-05-03 16:04:39.601557892 
+0200
--- src/testdir/test_normal.vim 2020-06-13 13:18:16.721109847 +0200
***************
*** 2531,2550 ****
    bw!
  endfunc
  
- func Test_normal53_digraph()
-   CheckFeature digraphs
-   new
-   call setline(1, 'abcdefgh|')
-   exe "norm! 1gg0f\<c-k>!!"
-   call assert_equal(9, col('.'))
-   set cpo+=D
-   exe "norm! 1gg0f\<c-k>!!"
-   call assert_equal(1, col('.'))
- 
-   set cpo-=D
-   bw!
- endfunc
- 
  func Test_normal54_Ctrl_bsl()
    new
    call setline(1, 'abcdefghijklmn')
--- 2531,2536 ----
***************
*** 2866,2909 ****
    set cpoptions& number& numberwidth& wrap&
  endfunc
  
- " Test for cursor movement with '-' in 'cpoptions'
- func Test_normal_cpo_minus()
-   new
-   call setline(1, ['foo', 'bar', 'baz'])
-   let save_cpo = &cpo
-   set cpo+=-
-   call assert_beeps('normal 10j')
-   call assert_equal(1, line('.'))
-   normal G
-   call assert_beeps('normal 10k')
-   call assert_equal(3, line('.'))
-   call assert_fails(10, 'E16:')
-   let &cpo = save_cpo
-   close!
- endfunc
- 
- " Test for displaying dollar when changing text ('$' flag in 'cpoptions')
- func Test_normal_cpo_dollar()
-   new
-   let g:Line = ''
-   func SaveFirstLine()
-     let g:Line = Screenline(1)
-     return ''
-   endfunc
-   inoremap <expr> <buffer> <F2> SaveFirstLine()
-   call test_override('redraw_flag', 1)
-   set cpo+=$
-   call setline(1, 'one two three')
-   redraw!
-   exe "normal c2w\<F2>vim"
-   call assert_equal('one tw$ three', g:Line)
-   call assert_equal('vim three', getline(1))
-   set cpo-=$
-   call test_override('ALL', 0)
-   delfunc SaveFirstLine
-   %bw!
- endfunc
- 
  " Test for using : to run a multi-line Ex command in operator pending mode
  func Test_normal_yank_with_excmd()
    new
--- 2852,2857 ----
***************
*** 2985,3015 ****
    close!
  endfunc
  
- " Test for the 'E' flag in 'cpo' with yank, change, delete, etc. operators
- func Test_empty_region_error()
-   new
-   call setline(1, '')
-   set cpo+=E
-   " yank an empty line
-   call assert_beeps('normal "ayl')
-   " change an empty line
-   call assert_beeps('normal lcTa')
-   " delete an empty line
-   call assert_beeps('normal D')
-   call assert_beeps('normal dl')
-   call assert_equal('', getline(1))
-   " change case of an empty line
-   call assert_beeps('normal gul')
-   call assert_beeps('normal gUl')
-   " replace a character
-   call assert_beeps('normal vrx')
-   " increment and decrement
-   call assert_beeps('exe "normal v\<C-A>"')
-   call assert_beeps('exe "normal v\<C-X>"')
-   set cpo-=E
-   close!
- endfunc
- 
  " Test for 'w' and 'b' commands
  func Test_normal_word_move()
    new
--- 2933,2938 ----
*** ../vim-8.2.0967/src/version.c       2020-06-12 22:59:07.274097177 +0200
--- src/version.c       2020-06-13 13:19:20.592860797 +0200
***************
*** 756,757 ****
--- 756,759 ----
  {   /* Add new patch number below this line */
+ /**/
+     968,
  /**/

-- 
    [clop clop]
MORTICIAN:  Who's that then?
CUSTOMER:   I don't know.
MORTICIAN:  Must be a king.
CUSTOMER:   Why?
MORTICIAN:  He hasn't got shit all over him.
                                  The Quest for the Holy Grail (Monty Python)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202006131121.05DBLTAE555157%40masaka.moolenaar.net.

Raspunde prin e-mail lui