Patch 8.2.0509
Problem:    various code is not properly tested.
Solution:   Add more tests. (Yegappan Lakshmanan, closes #5871)
Files:      src/main.c, src/testdir/check.vim, src/testdir/shared.vim,
            src/testdir/term_util.vim, src/testdir/test_clientserver.vim,
            src/testdir/test_ex_mode.vim, src/testdir/test_expand.vim,
            src/testdir/test_functions.vim, src/testdir/test_options.vim,
            src/testdir/test_startup.vim, src/testdir/test_textformat.vim,
            src/testdir/test_trycatch.vim, src/testdir/test_viminfo.vim


*** ../vim-8.2.0508/src/main.c  2020-02-14 13:21:55.646197062 +0100
--- src/main.c  2020-04-04 13:36:02.729150119 +0200
***************
*** 1966,1972 ****
  #endif
      }
  
!     // Checking for "ex" here may catch some weir names, such as "vimex" or
      // "viewex", we assume the user knows that.
      if (STRNICMP(initstr, "ex", 2) == 0)
      {
--- 1966,1972 ----
  #endif
      }
  
!     // Checking for "ex" here may catch some weird names, such as "vimex" or
      // "viewex", we assume the user knows that.
      if (STRNICMP(initstr, "ex", 2) == 0)
      {
*** ../vim-8.2.0508/src/testdir/check.vim       2020-03-26 22:16:44.307582067 
+0100
--- src/testdir/check.vim       2020-04-04 13:36:02.729150119 +0200
***************
*** 133,135 ****
--- 133,145 ----
      throw 'Skipped: cannot run test as root'
    endif
  endfunc
+ 
+ " Command to check that the current language is English
+ command CheckEnglish call CheckEnglish()
+ func CheckEnglish()
+   if v:lang != "C" && v:lang !~ '^[Ee]n'
+       throw 'Skipped: only works in English language environment'
+   endif
+ endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/shared.vim      2020-01-30 18:24:46.997204019 
+0100
--- src/testdir/shared.vim      2020-04-04 13:36:02.729150119 +0200
***************
*** 337,339 ****
--- 337,341 ----
    endif
    return v:false
  endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/term_util.vim   2020-03-18 21:10:41.104567492 
+0100
--- src/testdir/term_util.vim   2020-04-04 13:36:02.729150119 +0200
***************
*** 82,87 ****
--- 82,89 ----
      let cols = term_getsize(buf)[1]
    endif
  
+   call term_wait(buf)
+ 
    " Wait for "All" or "Top" of the ruler to be shown in the last line or in
    " the status line of the last window. This can be quite slow (e.g. when
    " using valgrind).
***************
*** 113,115 ****
--- 115,119 ----
    call WaitForAssert({-> assert_equal("finished", term_getstatus(a:buf))})
    only!
  endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/test_clientserver.vim   2020-03-30 
19:30:07.129542925 +0200
--- src/testdir/test_clientserver.vim   2020-04-04 13:36:02.729150119 +0200
***************
*** 6,16 ****
  
  source shared.vim
  
! func Test_client_server()
!   let cmd = GetVimCommand()
!   if cmd == ''
!     return
!   endif
    if has('x11')
      if empty($DISPLAY)
        throw 'Skipped: $DISPLAY is not set'
--- 6,12 ----
  
  source shared.vim
  
! func Check_X11_Connection()
    if has('x11')
      if empty($DISPLAY)
        throw 'Skipped: $DISPLAY is not set'
***************
*** 19,29 ****
        call remote_send('xxx', '')
      catch
        if v:exception =~ 'E240:'
!       throw 'Skipped: no connection to the X server'
        endif
        " ignore other errors
      endtry
    endif
  
    let name = 'XVIMTEST'
    let cmd .= ' --servername ' . name
--- 15,33 ----
        call remote_send('xxx', '')
      catch
        if v:exception =~ 'E240:'
!         throw 'Skipped: no connection to the X server'
        endif
        " ignore other errors
      endtry
    endif
+ endfunc
+ 
+ func Test_client_server()
+   let cmd = GetVimCommand()
+   if cmd == ''
+     return
+   endif
+   call Check_X11_Connection()
  
    let name = 'XVIMTEST'
    let cmd .= ' --servername ' . name
***************
*** 72,77 ****
--- 76,85 ----
    endif
    let g:testvar = 'myself'
    call assert_equal('myself', remote_expr(v:servername, 'testvar'))
+   call remote_send(v:servername, ":let g:testvar2 = 75\<CR>")
+   call feedkeys('', 'x')
+   call assert_equal(75, g:testvar2)
+   call assert_fails('let v = remote_expr(v:servername, "/2")', 'E449:')
  
    call remote_send(name, ":call server2client(expand('<client>'), 'got 
it')\<CR>", 'g:myserverid')
    call assert_equal('got it', g:myserverid->remote_read(2))
***************
*** 92,97 ****
--- 100,154 ----
    call assert_equal('another', g:peek_result)
    call assert_equal('another', remote_read(g:myserverid, 2))
  
+   if !has('gui_running')
+     " In GUI vim, the following tests display a dialog box
+ 
+     let cmd = GetVimProg() .. ' --servername ' .. name
+ 
+     " Run a separate instance to send a command to the server
+     call remote_expr(name, 'execute("only")')
+     call system(cmd .. ' --remote-send ":new Xfile<CR>"')
+     call assert_equal('2', remote_expr(name, 'winnr("$")'))
+     call assert_equal('Xfile', remote_expr(name, 'winbufnr(1)->bufname()'))
+     call remote_expr(name, 'execute("only")')
+ 
+     " Invoke a remote-expr. On MS-Windows, the returned value has a carriage
+     " return.
+     let l = system(cmd .. ' --remote-expr "2 + 2"')
+     call assert_equal(['4'], split(l, "\n"))
+ 
+     " Edit multiple files using --remote
+     call system(cmd .. ' --remote Xfile1 Xfile2 Xfile3')
+     call assert_equal("Xfile1\nXfile2\nXfile3\n", remote_expr(name, 'argv()'))
+     eval name->remote_send(":%bw!\<CR>")
+ 
+     " Edit files in separate tab pages
+     call system(cmd .. ' --remote-tab Xfile1 Xfile2 Xfile3')
+     call assert_equal('3', remote_expr(name, 'tabpagenr("$")'))
+     call assert_equal('Xfile2', remote_expr(name, 
'bufname(tabpagebuflist(2)[0])'))
+     eval name->remote_send(":%bw!\<CR>")
+ 
+     " Edit a file using --remote-wait
+     eval name->remote_send(":source $VIMRUNTIME/plugin/rrhelper.vim\<CR>")
+     call system(cmd .. ' --remote-wait +enew Xfile1')
+     call assert_equal("Xfile1", remote_expr(name, 'bufname("#")'))
+     eval name->remote_send(":%bw!\<CR>")
+ 
+     " Edit files using --remote-tab-wait
+     call system(cmd .. ' --remote-tabwait +tabonly\|enew Xfile1 Xfile2')
+     call assert_equal('1', remote_expr(name, 'tabpagenr("$")'))
+     eval name->remote_send(":%bw!\<CR>")
+ 
+     " Error cases
+     if v:lang == "C" || v:lang =~ '^[Ee]n'
+       let l = split(system(cmd .. ' --remote +pwd'), "\n")
+       call assert_equal("Argument missing after: \"+pwd\"", l[1])
+     endif
+     let l = system(cmd .. ' --remote-expr "abcd"')
+     call assert_match('^E449: ', l)
+   endif
+ 
+   eval name->remote_send(":%bw!\<CR>")
    eval name->remote_send(":qa!\<CR>")
    try
      call WaitForAssert({-> assert_equal("dead", job_status(job))})
***************
*** 102,109 ****
      endif
    endtry
  
!   call assert_fails("let x=remote_peek([])", 'E730:')
!   call assert_fails("let x=remote_read('vim10')", 'E277:')
  endfunc
  
  " Uncomment this line to get a debugging log
--- 159,166 ----
      endif
    endtry
  
!   call assert_fails("let x = remote_peek([])", 'E730:')
!   call assert_fails("let x = remote_read('vim10')", 'E277:')
  endfunc
  
  " Uncomment this line to get a debugging log
*** ../vim-8.2.0508/src/testdir/test_ex_mode.vim        2020-03-23 
20:54:28.220520961 +0100
--- src/testdir/test_ex_mode.vim        2020-04-04 13:36:02.729150119 +0200
***************
*** 146,154 ****
  " In Ex-mode, backslashes at the end of a command should be halved.
  func Test_Ex_echo_backslash()
    " This test works only when the language is English
!   if v:lang != "C" && v:lang !~ '^[Ee]n'
!     return
!   endif
    let bsl = '\\\\'
    let bsl2 = '\\\'
    call assert_fails('call feedkeys("Qecho " .. bsl .. "\nvisual\n", "xt")',
--- 146,152 ----
  " In Ex-mode, backslashes at the end of a command should be halved.
  func Test_Ex_echo_backslash()
    " This test works only when the language is English
!   CheckEnglish
    let bsl = '\\\\'
    let bsl2 = '\\\'
    call assert_fails('call feedkeys("Qecho " .. bsl .. "\nvisual\n", "xt")',
*** ../vim-8.2.0508/src/testdir/test_expand.vim 2020-02-21 17:54:41.830235712 
+0100
--- src/testdir/test_expand.vim 2020-04-04 13:36:02.729150119 +0200
***************
*** 84,89 ****
--- 84,98 ----
    let $FOO="blue\tsky"
    call setline(1, "$FOO")
    call assert_equal("grep pat blue\tsky", expandcmd('grep pat <cfile>'))
+ 
+   " Test for expression expansion `=
+   let $FOO= "blue"
+   call assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`"))
+ 
+   " Test for env variable with spaces
+   let $FOO= "foo bar baz"
+   call assert_equal("e foo bar baz", expandcmd("e $FOO"))
+ 
    unlet $FOO
    close!
  endfunc
*** ../vim-8.2.0508/src/testdir/test_functions.vim      2020-04-03 
18:43:31.886980756 +0200
--- src/testdir/test_functions.vim      2020-04-04 13:36:02.729150119 +0200
***************
*** 659,664 ****
--- 659,665 ----
    return ''
  endfunc
  
+ " Test for the mode() function
  func Test_mode()
    new
    call append(0, ["Blue Ball Black", "Brown Band Bowl", ""])
***************
*** 782,787 ****
--- 783,790 ----
    call assert_equal('c-c', g:current_modes)
    call feedkeys("gQecho \<C-R>=Save_mode()\<CR>\<CR>vi\<CR>", 'xt')
    call assert_equal('c-cv', g:current_modes)
+   call feedkeys("Qcall Save_mode()\<CR>vi\<CR>", 'xt')
+   call assert_equal('c-ce', g:current_modes)
    " How to test Ex mode?
  
    bwipe!
***************
*** 1284,1289 ****
--- 1287,1305 ----
    call feedkeys(":let c = inputlist(['Select color:', '1. red', '2. green', 
'3. blue'])\<cr>3\<cr>", 'tx')
    call assert_equal(3, c)
  
+   " Use backspace to delete characters in the prompt
+   call feedkeys(":let c = inputlist(['Select color:', '1. red', '2. green', 
'3. blue'])\<cr>1\<BS>3\<BS>2\<cr>", 'tx')
+   call assert_equal(2, c)
+ 
+   " Use mouse to make a selection
+   call test_setmouse(&lines - 3, 2)
+   call feedkeys(":let c = inputlist(['Select color:', '1. red', '2. green', 
'3. blue'])\<cr>\<LeftMouse>", 'tx')
+   call assert_equal(1, c)
+   " Mouse click outside of the list
+   call test_setmouse(&lines - 6, 2)
+   call feedkeys(":let c = inputlist(['Select color:', '1. red', '2. green', 
'3. blue'])\<cr>\<LeftMouse>", 'tx')
+   call assert_equal(-2, c)
+ 
    call assert_fails('call inputlist("")', 'E686:')
  endfunc
  
*** ../vim-8.2.0508/src/testdir/test_options.vim        2020-03-23 
19:28:40.599056151 +0100
--- src/testdir/test_options.vim        2020-04-04 13:36:02.729150119 +0200
***************
*** 1,6 ****
--- 1,7 ----
  " Test for options
  
  source check.vim
+ source view_util.vim
  
  func Test_whichwrap()
    set whichwrap=b,s
***************
*** 707,710 ****
--- 708,719 ----
    set rightleft&
  endfunc
  
+ " Test for the "debug" option
+ func Test_debug_option()
+   set debug=beep
+   exe "normal \<C-c>"
+   call assert_equal('Beep!', Screenline(&lines))
+   set debug&
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/test_startup.vim        2019-12-01 
15:10:16.000000000 +0100
--- src/testdir/test_startup.vim        2020-04-04 13:50:26.389187818 +0200
***************
*** 2,7 ****
--- 2,8 ----
  
  source shared.vim
  source screendump.vim
+ source term_util.vim
  source check.vim
  
  " Check that loading startup.vim works.
***************
*** 10,15 ****
--- 11,19 ----
    source $VIMRUNTIME/defaults.vim
  
    call assert_equal(0, &compatible)
+   " Restore some options, so that the following tests doesn't break
+   set nomore
+   set noshowmode
  endfunc
  
  " Verify the order in which plugins are loaded:
***************
*** 322,327 ****
--- 326,335 ----
        \             lines)
    endif
  
+   " Test with a non-existing error file (exits with value 3)
+   let out = system(GetVimCommand() .. ' -q xyz.err')
+   call assert_equal(3, v:shell_error)
+ 
    call delete('Xtestout')
    call delete('Xerrors')
  endfunc
***************
*** 687,689 ****
--- 695,962 ----
    call assert_true(idx > 2)
    call assert_equal(['arg1', '--cmd', 'echo v:argv', '--cmd', 'q'']'], 
list[idx:])
  endfunc
+ 
+ " Test for the "-r" recovery mode option
+ func Test_r_arg()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   CheckUnix
+   CheckEnglish
+   let cmd = GetVimCommand()
+   " There can be swap files anywhere, only check for the headers.
+   let expected =<< trim END
+     Swap files found:.*
+     In current directory:.*
+     In directory \~/tmp:.*
+     In directory /var/tmp:.*
+     In directory /tmp:.*
+   END
+   call assert_match(join(expected, ""), system(cmd .. " 
-r")->substitute("[\r\n]\\+", '', ''))
+ endfunc
+ 
+ " Test for the '-t' option to jump to a tag
+ func Test_t_arg()
+   let before =<< trim [CODE]
+     set tags=Xtags
+   [CODE]
+   let after =<< trim [CODE]
+     let s = bufname('') .. ':L' .. line('.') .. 'C' .. col('.')
+     call writefile([s], "Xtestout")
+     qall
+   [CODE]
+ 
+   call writefile(["!_TAG_FILE_ENCODING\tutf-8\t//",
+         \ "first\tXfile1\t/^    \\zsfirst$/",
+         \ "second\tXfile1\t/^    \\zssecond$/",
+         \ "third\tXfile1\t/^    \\zsthird$/"],
+         \ 'Xtags')
+   call writefile(['    first', '    second', '    third'], 'Xfile1')
+ 
+   if RunVim(before, after, '-t second')
+     call assert_equal(['Xfile1:L2C5'], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+ 
+   call delete('Xtags')
+   call delete('Xfile1')
+ endfunc
+ 
+ " Test for entering the insert mode on startup
+ func Test_start_insertmode()
+   let before =<< trim [CODE]
+     set insertmode
+   [CODE]
+   let after =<< trim [CODE]
+     call writefile(['insertmode=' .. &insertmode], 'Xtestout')
+     qall
+   [CODE]
+   if RunVim(before, after, '')
+     call assert_equal(['insertmode=1'], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+ endfunc
+ 
+ " Test for enabling the binary mode on startup
+ func Test_b_arg()
+   let after =<< trim [CODE]
+     call writefile(['binary=' .. &binary], 'Xtestout')
+     qall
+   [CODE]
+   if RunVim([], after, '-b')
+     call assert_equal(['binary=1'], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+ endfunc
+ 
+ " Test for enabling the lisp mode on startup
+ func Test_l_arg()
+   let after =<< trim [CODE]
+     let s = 'lisp=' .. &lisp .. ', showmatch=' .. &showmatch
+     call writefile([s], 'Xtestout')
+     qall
+   [CODE]
+   if RunVim([], after, '-l')
+     call assert_equal(['lisp=1, showmatch=1'], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+ endfunc
+ 
+ " Test for specifying a non-existing vimrc file using "-u"
+ func Test_missing_vimrc()
+   if !CanRunVimInTerminal()
+     throw 'Skipped: cannot run vim in terminal'
+   endif
+   let after =<< trim [CODE]
+     call assert_match('^E282:', v:errmsg)
+     call writefile(v:errors, 'Xtestout')
+   [CODE]
+   call writefile(after, 'Xafter')
+ 
+   let cmd = GetVimCommandCleanTerm() . ' -u Xvimrc_missing -S Xafter'
+   let buf = term_start(cmd, {'term_rows' : 10})
+   call WaitForAssert({-> assert_equal("running", term_getstatus(buf))})
+   call term_wait(buf)
+   call term_sendkeys(buf, "\n:")
+   call term_wait(buf)
+   call WaitForAssert({-> assert_match(':', term_getline(buf, 10))})
+   call StopVimInTerminal(buf)
+   call assert_equal([], readfile('Xtestout'))
+   call delete('Xafter')
+   call delete('Xtestout')
+ endfunc
+ 
+ " Test for using the $VIMINIT environment variable
+ func Test_VIMINIT()
+   let after =<< trim [CODE]
+     call assert_equal(1, exists('viminit_found'))
+     call assert_equal('yes', viminit_found)
+     call writefile(v:errors, 'Xtestout')
+     qall
+   [CODE]
+   call writefile(after, 'Xafter')
+   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "set enc=utf8"'
+   call setenv('VIMINIT', 'let viminit_found="yes"')
+   exe "silent !" . cmd
+   call assert_equal([], readfile('Xtestout'))
+   call delete('Xtestout')
+   call delete('Xafter')
+ endfunc
+ 
+ " Test for using the $EXINIT environment variable
+ func Test_EXINIT()
+   let after =<< trim [CODE]
+     call assert_equal(1, exists('exinit_found'))
+     call assert_equal('yes', exinit_found)
+     call writefile(v:errors, 'Xtestout')
+     qall
+   [CODE]
+   call writefile(after, 'Xafter')
+   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "set enc=utf8"'
+   call setenv('EXINIT', 'let exinit_found="yes"')
+   exe "silent !" . cmd
+   call assert_equal([], readfile('Xtestout'))
+   call delete('Xtestout')
+   call delete('Xafter')
+ endfunc
+ 
+ " Test for using the 'exrc' option
+ func Test_exrc()
+   let after =<< trim [CODE]
+     call assert_equal(1, &exrc)
+     call assert_equal(1, &secure)
+     call assert_equal(37, exrc_found)
+     call writefile(v:errors, 'Xtestout')
+     qall
+   [CODE]
+   call mkdir('Xdir')
+   call writefile(['let exrc_found=37'], 'Xdir/.exrc')
+   call writefile(after, 'Xdir/Xafter')
+   let cmd = GetVimProg() . ' --not-a-term -S Xafter --cmd "cd Xdir" --cmd 
"set enc=utf8 exrc secure"'
+   exe "silent !" . cmd
+   call assert_equal([], readfile('Xdir/Xtestout'))
+   call delete('Xdir', 'rf')
+ endfunc
+ 
+ " Test for starting Vim with a non-terminal as input/output
+ func Test_io_not_a_terminal()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   CheckUnix
+   CheckEnglish
+   let l = systemlist(GetVimProg() .. ' --ttyfail')
+   call assert_equal(['Vim: Warning: Output is not to a terminal',
+         \ 'Vim: Warning: Input is not from a terminal'], l)
+ endfunc
+ 
+ " Test for the "-w scriptout" argument
+ func Test_w_arg()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   call writefile(["iVim Editor\<Esc>:q!\<CR>"], 'Xscriptin', 'b')
+   if RunVim([], [], '-s Xscriptin -w Xscriptout')
+     call assert_equal(["iVim Editor\e:q!\r"], readfile('Xscriptout'))
+     call delete('Xscriptout')
+   endif
+   call delete('Xscriptin')
+ 
+   " Test for failing to open the script output file. This test works only when
+   " the language is English.
+   if v:lang == "C" || v:lang =~ '^[Ee]n'
+     call mkdir("Xdir")
+     let m = system(GetVimCommand() .. " -w Xdir")
+     call assert_equal("Cannot open for script output: \"Xdir\"\n", m)
+     call delete("Xdir", 'rf')
+   endif
+ endfunc
+ 
+ " Test for the "-s scriptin" argument
+ func Test_s_arg()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   CheckEnglish
+   " Test for failing to open the script input file.
+   let m = system(GetVimCommand() .. " -s abcxyz")
+   call assert_equal("Cannot open for reading: \"abcxyz\"\n", m)
+ 
+   call writefile([], 'Xinput')
+   let m = system(GetVimCommand() .. " -s Xinput -s Xinput")
+   call assert_equal("Attempt to open script file again: \"-s Xinput\"\n", m)
+   call delete('Xinput')
+ endfunc
+ 
+ " Test for the "-n" (no swap file) argument
+ func Test_n_arg()
+   let after =<< trim [CODE]
+     call assert_equal(0, &updatecount)
+     call writefile(v:errors, 'Xtestout')
+     qall
+   [CODE]
+   if RunVim([], after, '-n')
+     call assert_equal([], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+   call delete('Xafter')
+ endfunc
+ 
+ " Test for the "-h" (help) argument
+ func Test_h_arg()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   let l = systemlist(GetVimProg() .. ' -h')
+   call assert_match('^VIM - Vi IMproved', l[0])
+   let l = systemlist(GetVimProg() .. ' -?')
+   call assert_match('^VIM - Vi IMproved', l[0])
+ endfunc
+ 
+ " Test for the "-F" (farsi) argument
+ func Test_F_arg()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   let l = systemlist(GetVimProg() .. ' -F')
+   call assert_match('^E27:', l[0])
+ endfunc
+ 
+ " Test for the "-E" (improved Ex mode) argument
+ func Test_E_arg()
+   let after =<< trim [CODE]
+     call assert_equal('cv', mode(1))
+     call writefile(v:errors, 'Xtestout')
+     qall
+   [CODE]
+   if RunVim([], after, '-E')
+     call assert_equal([], readfile('Xtestout'))
+     call delete('Xtestout')
+   endif
+   call delete('Xafter')
+ endfunc
+ 
+ " Test for too many edit argument errors
+ func Test_too_many_edit_args()
+   " Can't catch the output of gvim.
+   CheckNotGui
+   CheckEnglish
+   let l = systemlist(GetVimProg() .. ' - -')
+   call assert_match('^Too many edit arguments: "-"', l[1])
+ endfunc
+ 
+ " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/test_textformat.vim     2020-03-30 
19:39:22.891094168 +0200
--- src/testdir/test_textformat.vim     2020-04-04 13:36:02.729150119 +0200
***************
*** 1026,1031 ****
--- 1026,1066 ----
    %bw!
  endfunc
  
+ " Test for a space character in 'comments' setting
+ func Test_comment_space()
+   new
+   setlocal comments=b:\ > fo+=ro
+   exe "normal i> B\nD\<C-C>ggOA\<C-C>joC"
+   exe "normal Go > F\nH\<C-C>kOE\<C-C>joG"
+   let expected =<< trim END
+     A
+     > B
+     C
+     D
+      > E
+      > F
+      > G
+      > H
+   END
+   call assert_equal(expected, getline(1, '$'))
+   %bw!
+ endfunc
+ 
+ " Test for the 'O' flag in 'comments'
+ func Test_comment_O()
+   new
+   setlocal comments=Ob:* fo+=ro
+   exe "normal i* B\nD\<C-C>kOA\<C-C>joC"
+   let expected =<< trim END
+     A
+     * B
+     * C
+     * D
+   END
+   call assert_equal(expected, getline(1, '$'))
+   %bw!
+ endfunc
+ 
  " Test for 'a' and 'w' flags in 'formatoptions'
  func Test_fo_a_w()
    new
***************
*** 1035,1038 ****
--- 1070,1092 ----
    %bw!
  endfunc
  
+ " Test for 'j' flag in 'formatoptions'
+ func Test_fo_j()
+   new
+   setlocal fo+=j comments=://
+   call setline(1, ['i++; // comment1', '           // comment2'])
+   normal J
+   call assert_equal('i++; // comment1 comment2', getline(1))
+   setlocal fo-=j
+   call setline(1, ['i++; // comment1', '           // comment2'])
+   normal J
+   call assert_equal('i++; // comment1 // comment2', getline(1))
+   " Test with nested comments
+   setlocal fo+=j comments=n:>,n:)
+   call setline(1, ['i++; > ) > ) comment1', '           > ) comment2'])
+   normal J
+   call assert_equal('i++; > ) > ) comment1 comment2', getline(1))
+   %bw!
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.0508/src/testdir/test_trycatch.vim       2020-02-22 
21:21:23.698595570 +0100
--- src/testdir/test_trycatch.vim       2020-04-04 13:36:02.729150119 +0200
***************
*** 2012,2020 ****
  " Test for verbose messages with :try :catch, and :finally                 
{{{1
  func Test_try_catch_verbose()
    " This test works only when the language is English
!   if v:lang != "C" && v:lang !~ '^[Ee]n'
!     return
!   endif
  
    set verbose=14
  
--- 2012,2018 ----
  " Test for verbose messages with :try :catch, and :finally                 
{{{1
  func Test_try_catch_verbose()
    " This test works only when the language is English
!   CheckEnglish
  
    set verbose=14
  
*** ../vim-8.2.0508/src/testdir/test_viminfo.vim        2019-12-27 
17:33:23.475080942 +0100
--- src/testdir/test_viminfo.vim        2020-04-04 13:36:02.729150119 +0200
***************
*** 760,765 ****
--- 760,770 ----
    call setfperm('Xviminfo', '--x------')
    call assert_fails('rviminfo Xviminfo', 'E195:')
    call delete('Xviminfo')
+ 
+   " Try to write the viminfo to a directory
+   call mkdir('Xdir')
+   call assert_fails('wviminfo Xdir', 'E886:')
+   call delete('Xdir', 'rf')
  endfunc
  
  " Test for writing to an existing viminfo file merges the file marks
*** ../vim-8.2.0508/src/version.c       2020-04-03 21:59:29.333665628 +0200
--- src/version.c       2020-04-04 13:37:26.248766792 +0200
***************
*** 740,741 ****
--- 740,743 ----
  {   /* Add new patch number below this line */
+ /**/
+     509,
  /**/

-- 
BRIDGEKEEPER: What is your favorite colour?
LAUNCELOT:    Blue.
BRIDGEKEEPER: Right.  Off you go.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// 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/202004041201.034C1DsZ026329%40masaka.moolenaar.net.

Raspunde prin e-mail lui