Patch 9.0.1257
Problem:    Code style is not check in test scripts.
Solution:   Add basic code style check for test files.
Files:      src/testdir/test_codestyle.vim, src/testdir/keycode_check.vim,
            src/testdir/runtest.vim, src/testdir/setup.vim,
            src/testdir/summarize.vim, src/testdir/unix.vim,
            src/testdir/vim9.vim, src/testdir/test_assert.vim,
            src/testdir/test_autocmd.vim, src/testdir/test_blob.vim,
            src/testdir/test_blockedit.vim, src/testdir/test_channel.vim,
            src/testdir/test_cmd_lists.vim, src/testdir/test_diffmode.vim,
            src/testdir/test_edit.vim, src/testdir/test_expand.vim,
            src/testdir/test_expand_dllpath.vim,
            src/testdir/test_expand_func.vim, src/testdir/test_fold.vim,
            src/testdir/test_goto.vim, src/testdir/test_increment.vim,
            src/testdir/test_indent.vim, src/testdir/test_ins_complete.vim,
            src/testdir/test_listchars.vim,
            src/testdir/test_map_functions.vim, src/testdir/test_method.vim,
            src/testdir/test_mswin_event.vim, src/testdir/test_normal.vim,
            src/testdir/test_popup.vim,
            src/testdir/test_popupwin_textprop.vim,
            src/testdir/test_quickfix.vim, src/testdir/test_regexp_latin.vim,
            src/testdir/test_scroll_opt.vim, src/testdir/test_signals.vim,
            src/testdir/test_signs.vim, src/testdir/test_statusline.vim,
            src/testdir/test_substitute.vim, src/testdir/test_tagfunc.vim,
            src/testdir/test_tagjump.vim, src/testdir/test_termcodes.vim,
            src/testdir/test_textprop.vim, src/testdir/test_timers.vim,
            src/testdir/test_true_false.vim, src/testdir/test_utf8.vim,
            src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_class.vim,
            src/testdir/test_vim9_disassemble.vim,
            src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim,
            src/testdir/test_vim9_import.vim, src/testdir/test_viminfo.vim,
            src/testdir/test_virtualedit.vim, src/testdir/test_visual.vim,
            src/testdir/test_winbuf_close.vim, src/testdir/test_xxd.vim


*** ../vim-9.0.1256/src/testdir/test_codestyle.vim      2023-01-22 
21:14:32.609863616 +0000
--- src/testdir/test_codestyle.vim      2023-01-28 19:15:37.693635461 +0000
***************
*** 41,45 ****
--- 41,82 ----
    bwipe!
  enddef
  
+ def Test_test_files()
+   for fname in glob('*.vim', 0, 1)
+     exe 'edit ' .. fname
+ 
+     # some files intentionally have misplaced white space
+     if fname =~ 'test_cindent.vim' || fname =~ 'test_join.vim'
+       continue
+     endif
+ 
+     # skip files that are known to have a space before a tab
+     if fname !~ 'test_comments.vim'
+         && fname !~ 'test_listchars.vim'
+         && fname !~ 'test_visual.vim'
+       cursor(1, 1)
+       var lnum = search(fname =~ "test_regexp_latin" ? '[^á] \t' : ' \t')
+       assert_equal(0, lnum, 'testdir/' .. fname .. ': space before tab')
+     endif
+ 
+     # skip files that are known to have trailing white space
+     if fname !~ 'test_cmdline.vim'
+             && fname !~ 'test_let.vim'
+             && fname !~ 'test_tagjump.vim'
+             && fname !~ 'test_vim9_cmd.vim'
+       cursor(1, 1)
+       var lnum = search(
+           fname =~ 'test_vim9_assign.vim' ? '[^=]\s$'
+           : fname =~ 'test_vim9_class.vim' ? '[^)]\s$'
+           : fname =~ 'test_vim9_script.vim' ? '[^,:3]\s$'
+           : fname =~ 'test_visual.vim' ? '[^/]\s$'
+           : '[^\\]\s$')
+       assert_equal(0, lnum, 'testdir/' .. fname .. ': trailing white space')
+     endif
+   endfor
+ 
+   bwipe!
+ enddef
+ 
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-9.0.1256/src/testdir/keycode_check.vim       2022-11-27 
11:31:20.645181563 +0000
--- src/testdir/keycode_check.vim       2023-01-26 21:10:46.884221149 +0000
***************
*** 4,11 ****
  #
  # Usage:  vim -u NONE -S keycode_check.vim
  #
! # Author:     Bram Moolenaar
! # Last Update:        2022 Nov 15
  #
  # The codes are stored in the file "keycode_check.json", so that you can
  # compare the results of various terminals.
--- 4,11 ----
  #
  # Usage:  vim -u NONE -S keycode_check.vim
  #
! # Author:     Bram Moolenaar
! # Last Update:        2022 Nov 15
  #
  # The codes are stored in the file "keycode_check.json", so that you can
  # compare the results of various terminals.
***************
*** 449,455 ****
  # The main loop
  while true
    var action = inputlist(['Select operation:',
!                       '1. List results',
                        '2. Add results for a new terminal',
                        '3. Replace results',
                        '4. Clear results',
--- 449,455 ----
  # The main loop
  while true
    var action = inputlist(['Select operation:',
!                       '1. List results',
                        '2. Add results for a new terminal',
                        '3. Replace results',
                        '4. Clear results',
*** ../vim-9.0.1256/src/testdir/runtest.vim     2022-12-08 16:30:13.147504028 
+0000
--- src/testdir/runtest.vim     2023-01-25 14:37:50.859944252 +0000
***************
*** 59,65 ****
  endif
  
  " Check that the screen size is at least 24 x 80 characters.
! if &lines < 24 || &columns < 80 
    let error = 'Screen size too small! Tests require at least 24 lines with 80 
characters, got ' .. &lines .. ' lines with ' .. &columns .. ' characters'
    echoerr error
    split test.log
--- 59,65 ----
  endif
  
  " Check that the screen size is at least 24 x 80 characters.
! if &lines < 24 || &columns < 80
    let error = 'Screen size too small! Tests require at least 24 lines with 80 
characters, got ' .. &lines .. ' lines with ' .. &columns .. ' characters'
    echoerr error
    split test.log
*** ../vim-9.0.1256/src/testdir/setup.vim       2022-11-26 19:16:44.186717893 
+0000
--- src/testdir/setup.vim       2023-01-26 21:03:06.960569487 +0000
***************
*** 20,26 ****
    let &packpath = &rtp
  endif
  
! " Only when the +eval feature is present. 
  if 1
    " Make sure the .Xauthority file can be found after changing $HOME.
    if $XAUTHORITY == ''
--- 20,26 ----
    let &packpath = &rtp
  endif
  
! " Only when the +eval feature is present.
  if 1
    " Make sure the .Xauthority file can be found after changing $HOME.
    if $XAUTHORITY == ''
*** ../vim-9.0.1256/src/testdir/summarize.vim   2020-08-13 18:36:41.000000000 
+0100
--- src/testdir/summarize.vim   2023-01-26 21:03:35.540551987 +0000
***************
*** 33,39 ****
      silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn
      silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn
  
!     call extend(output, ["Skipped:"]) 
      call extend(output, skipped_output)
  
      call extend(output, [
--- 33,39 ----
      silent %s/^SKIPPED \zs.*/\=Count(submatch(0), 'skipped')/egn
      silent %s/^\(\d\+\)\s\+FAILED:/\=Count(submatch(1), 'failed')/egn
  
!     call extend(output, ["Skipped:"])
      call extend(output, skipped_output)
  
      call extend(output, [
*** ../vim-9.0.1256/src/testdir/unix.vim        2019-07-31 19:33:06.000000000 
+0100
--- src/testdir/unix.vim        2023-01-28 19:16:32.601664167 +0000
***************
*** 2,8 ****
  " Always use "sh", don't use the value of "$SHELL".
  set shell=sh
  
! " Only when the +eval feature is present. 
  if 1
    " While some tests overwrite $HOME to prevent them from polluting user 
files,
    " we need to remember the original value so that we can tell external 
systems
--- 2,8 ----
  " Always use "sh", don't use the value of "$SHELL".
  set shell=sh
  
! " Only when the +eval feature is present.
  if 1
    " While some tests overwrite $HOME to prevent them from polluting user 
files,
    " we need to remember the original value so that we can tell external 
systems
*** ../vim-9.0.1256/src/testdir/vim9.vim        2022-02-10 21:50:29.000000000 
+0000
--- src/testdir/vim9.vim        2023-01-26 21:31:51.922582763 +0000
***************
*** 195,208 ****
  # CheckLegacyAndVim9Success()
  export def CheckTransLegacySuccess(lines: list<string>)
    var legacylines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'let', 'g')
!                                ->substitute('\<LET\>', 'let', 'g')
!                                ->substitute('\<LSTART\>', '{', 'g')
!                                ->substitute('\<LMIDDLE\>', '->', 'g')
                                 ->substitute('\<LEND\>', '}', 'g')
                                 ->substitute('\<TRUE\>', '1', 'g')
                                 ->substitute('\<FALSE\>', '0', 'g')
!                                ->substitute('#"', ' "', 'g'))
    CheckLegacySuccess(legacylines)
  enddef
  
--- 195,208 ----
  # CheckLegacyAndVim9Success()
  export def CheckTransLegacySuccess(lines: list<string>)
    var legacylines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'let', 'g')
!                                ->substitute('\<LET\>', 'let', 'g')
!                                ->substitute('\<LSTART\>', '{', 'g')
!                                ->substitute('\<LMIDDLE\>', '->', 'g')
                                 ->substitute('\<LEND\>', '}', 'g')
                                 ->substitute('\<TRUE\>', '1', 'g')
                                 ->substitute('\<FALSE\>', '0', 'g')
!                                ->substitute('#"', ' "', 'g'))
    CheckLegacySuccess(legacylines)
  enddef
  
***************
*** 262,275 ****
    endif
  
    var legacylines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'let', 'g')
!                                ->substitute('\<LET\>', 'let', 'g')
!                                ->substitute('#"', ' "', 'g'))
    CheckLegacyFailure(legacylines, legacyError)
  
    var vim9lines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'var', 'g')
!                                ->substitute('\<LET ', '', 'g'))
    CheckDefExecFailure(vim9lines, defError)
    CheckScriptFailure(['vim9script'] + vim9lines, scriptError)
  enddef
--- 262,275 ----
    endif
  
    var legacylines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'let', 'g')
!                                ->substitute('\<LET\>', 'let', 'g')
!                                ->substitute('#"', ' "', 'g'))
    CheckLegacyFailure(legacylines, legacyError)
  
    var vim9lines = lines->mapnew((_, v) =>
!                               v->substitute('\<VAR\>', 'var', 'g')
!                                ->substitute('\<LET ', '', 'g'))
    CheckDefExecFailure(vim9lines, defError)
    CheckScriptFailure(['vim9script'] + vim9lines, scriptError)
  enddef
*** ../vim-9.0.1256/src/testdir/test_assert.vim 2022-11-10 13:21:30.499305122 
+0000
--- src/testdir/test_assert.vim 2023-01-26 21:04:06.544533171 +0000
***************
*** 190,198 ****
  endfunc
  
  func Test_compare_fail()
!   let s:v = {}          
!   let s:x = {"a": s:v} 
!   let s:v["b"] = s:x   
    let s:w = {"c": s:x, "d": ''}
    try
      call assert_equal(s:w, '')
--- 190,198 ----
  endfunc
  
  func Test_compare_fail()
!   let s:v = {}
!   let s:x = {"a": s:v}
!   let s:v["b"] = s:x
    let s:w = {"c": s:x, "d": ''}
    try
      call assert_equal(s:w, '')
*** ../vim-9.0.1256/src/testdir/test_autocmd.vim        2023-01-17 
21:20:40.393599014 +0000
--- src/testdir/test_autocmd.vim        2023-01-26 21:04:35.664515656 +0000
***************
*** 269,276 ****
    augroup testing
      au WinNew * call add(g:record, 'WinNew')
      au WinClosed * call add(g:record, 'WinClosed')
!     au WinEnter * call add(g:record, 'WinEnter') 
!     au WinLeave * call add(g:record, 'WinLeave') 
      au TabNew * call add(g:record, 'TabNew')
      au TabClosed * call add(g:record, 'TabClosed')
      au TabEnter * call add(g:record, 'TabEnter')
--- 269,276 ----
    augroup testing
      au WinNew * call add(g:record, 'WinNew')
      au WinClosed * call add(g:record, 'WinClosed')
!     au WinEnter * call add(g:record, 'WinEnter')
!     au WinLeave * call add(g:record, 'WinLeave')
      au TabNew * call add(g:record, 'TabNew')
      au TabClosed * call add(g:record, 'TabClosed')
      au TabEnter * call add(g:record, 'TabEnter')
***************
*** 3406,3412 ****
  
  func Test_Visual_doautoall_redraw()
    call setline(1, ['a', 'b'])
!   new 
    wincmd p
    call feedkeys("G\<C-V>", 'txn')
    autocmd User Explode ++once redraw
--- 3406,3412 ----
  
  func Test_Visual_doautoall_redraw()
    call setline(1, ['a', 'b'])
!   new
    wincmd p
    call feedkeys("G\<C-V>", 'txn')
    autocmd User Explode ++once redraw
***************
*** 4121,4127 ****
  
  func Test_autocmd_split_dummy()
    " Autocommand trying to split a window containing a dummy buffer.
!   auto BufReadPre * exe "sbuf " .. expand("<abuf>") 
    " Avoid the "W11" prompt
    au FileChangedShell * let v:fcs_choice = 'reload'
    func Xautocmd_changelist()
--- 4121,4127 ----
  
  func Test_autocmd_split_dummy()
    " Autocommand trying to split a window containing a dummy buffer.
!   auto BufReadPre * exe "sbuf " .. expand("<abuf>")
    " Avoid the "W11" prompt
    au FileChangedShell * let v:fcs_choice = 'reload'
    func Xautocmd_changelist()
*** ../vim-9.0.1256/src/testdir/test_blob.vim   2022-10-21 11:25:25.689652476 
+0100
--- src/testdir/test_blob.vim   2023-01-26 21:05:00.676500733 +0000
***************
*** 498,504 ****
        call assert_equal(b[-3 :], br5)
        VAR br6 = readblob('Xblob', -3, 2)
        call assert_equal(b[-3 : -2], br6)
!       
        #" reading past end of file, empty result
        VAR br1e = readblob('Xblob', 10000)
        call assert_equal(0z, br1e)
--- 498,504 ----
        call assert_equal(b[-3 :], br5)
        VAR br6 = readblob('Xblob', -3, 2)
        call assert_equal(b[-3 : -2], br6)
! 
        #" reading past end of file, empty result
        VAR br1e = readblob('Xblob', 10000)
        call assert_equal(0z, br1e)
*** ../vim-9.0.1256/src/testdir/test_blockedit.vim      2022-09-27 
22:18:10.364276480 +0100
--- src/testdir/test_blockedit.vim      2023-01-26 21:05:27.944484562 +0000
***************
*** 52,58 ****
    let expected =<< trim END
        vim9script
        var d = {
!               a: (): asdf => 0,
        b: (): asdf => 0,
        c: (): asdf => 0,
        }
--- 52,58 ----
    let expected =<< trim END
        vim9script
        var d = {
!       a: (): asdf => 0,
        b: (): asdf => 0,
        c: (): asdf => 0,
        }
*** ../vim-9.0.1256/src/testdir/test_channel.vim        2022-12-01 
11:02:19.288680405 +0000
--- src/testdir/test_channel.vim        2023-01-26 21:05:53.496469533 +0000
***************
*** 20,26 ****
  " call ch_logfile('channellog', 'w')
  
  func SetUp()
!   if g:testfunc =~ '_ipv6()$' 
      let s:localhost = '[::1]:'
      let s:testscript = 'test_channel_6.py'
    elseif g:testfunc =~ '_unix()$'
--- 20,26 ----
  " call ch_logfile('channellog', 'w')
  
  func SetUp()
!   if g:testfunc =~ '_ipv6()$'
      let s:localhost = '[::1]:'
      let s:testscript = 'test_channel_6.py'
    elseif g:testfunc =~ '_unix()$'
***************
*** 1220,1226 ****
  func Test_pipe_to_buffer_raw()
    let options = {'out_mode': 'raw', 'out_io': 'buffer', 'out_name': 'testout'}
    split testout
!   let job = job_start([s:python, '-c', 
          \ 'import sys; [sys.stdout.write(".") and sys.stdout.flush() for _ in 
range(10000)]'], options)
    " the job may be done quickly, also accept "dead"
    call assert_match('^\%(dead\|run\)$', job_status(job))
--- 1220,1226 ----
  func Test_pipe_to_buffer_raw()
    let options = {'out_mode': 'raw', 'out_io': 'buffer', 'out_name': 'testout'}
    split testout
!   let job = job_start([s:python, '-c',
          \ 'import sys; [sys.stdout.write(".") and sys.stdout.flush() for _ in 
range(10000)]'], options)
    " the job may be done quickly, also accept "dead"
    call assert_match('^\%(dead\|run\)$', job_status(job))
*** ../vim-9.0.1256/src/testdir/test_cmd_lists.vim      2022-12-04 
21:09:45.099172093 +0000
--- src/testdir/test_cmd_lists.vim      2023-01-26 21:07:13.376423105 +0000
***************
*** 50,56 ****
            \ 'interface',
            \ 'public',
            \ 'static',
!           \ 'this', 
            \ 'type',
            \ '++',
            \ '--',
--- 50,56 ----
            \ 'interface',
            \ 'public',
            \ 'static',
!           \ 'this',
            \ 'type',
            \ '++',
            \ '--',
*** ../vim-9.0.1256/src/testdir/test_diffmode.vim       2022-09-20 
22:01:29.404759229 +0100
--- src/testdir/test_diffmode.vim       2023-01-26 21:17:33.115518481 +0000
***************
*** 360,366 ****
    call assert_equal('10', getline('.'))
    21
    call assert_equal('two', getline('.'))
!   diffget one 
    call assert_equal('20', getline('.'))
  
    31
--- 360,366 ----
    call assert_equal('10', getline('.'))
    21
    call assert_equal('two', getline('.'))
!   diffget one
    call assert_equal('20', getline('.'))
  
    31
***************
*** 1113,1119 ****
    CheckScreendump
  
    let lines =<< trim END
!       void doNothing() {
           int x = 0;
           char *s = "hello";
           return 5;
--- 1113,1119 ----
    CheckScreendump
  
    let lines =<< trim END
!       void doNothing() {
           int x = 0;
           char *s = "hello";
           return 5;
***************
*** 1121,1127 ****
    END
    call writefile(lines, 'Xprogram1.c', 'D')
    let lines =<< trim END
!       void doSomething() {
           int x = 0;
           char *s = "there";
           return 5;
--- 1121,1127 ----
    END
    call writefile(lines, 'Xprogram1.c', 'D')
    let lines =<< trim END
!       void doSomething() {
           int x = 0;
           char *s = "there";
           return 5;
***************
*** 1130,1136 ****
    call writefile(lines, 'Xprogram2.c', 'D')
  
    let lines =<< trim END
!       edit Xprogram1.c
        diffsplit Xprogram2.c
    END
    call writefile(lines, 'Xtest_diff_syntax', 'D')
--- 1130,1136 ----
    call writefile(lines, 'Xprogram2.c', 'D')
  
    let lines =<< trim END
!       edit Xprogram1.c
        diffsplit Xprogram2.c
    END
    call writefile(lines, 'Xtest_diff_syntax', 'D')
***************
*** 1307,1318 ****
  func Test_diff_and_scroll()
    " this was causing an ml_get error
    set ls=2
!   for i in range(winheight(0) * 2) 
!     call setline(i, i < winheight(0) - 10 ? i : i + 10) 
    endfor
    vnew
!   for i in range(winheight(0)*2 + 10) 
!     call setline(i, i < winheight(0) - 10 ? 0 : i) 
    endfor
    diffthis
    wincmd p
--- 1307,1318 ----
  func Test_diff_and_scroll()
    " this was causing an ml_get error
    set ls=2
!   for i in range(winheight(0) * 2)
!     call setline(i, i < winheight(0) - 10 ? i : i + 10)
    endfor
    vnew
!   for i in range(winheight(0)*2 + 10)
!     call setline(i, i < winheight(0) - 10 ? 0 : i)
    endfor
    diffthis
    wincmd p
*** ../vim-9.0.1256/src/testdir/test_edit.vim   2023-01-25 15:31:24.358723462 
+0000
--- src/testdir/test_edit.vim   2023-01-26 21:17:48.071497588 +0000
***************
*** 2072,2078 ****
    file %%%%%%%%%%%%%%%%%%%%%%%%%%
    file %%%%%%
    set readonly
!   set ls=2 
  
    redraw!
    set noreadonly ls&
--- 2072,2078 ----
    file %%%%%%%%%%%%%%%%%%%%%%%%%%
    file %%%%%%
    set readonly
!   set ls=2
  
    redraw!
    set noreadonly ls&
*** ../vim-9.0.1256/src/testdir/test_expand.vim 2022-09-21 21:59:58.273433517 
+0100
--- src/testdir/test_expand.vim 2023-01-26 21:18:07.603470680 +0000
***************
*** 45,53 ****
  
  func Test_expand_tilde_filename()
    split ~
!   call assert_equal('~', expand('%')) 
    call assert_notequal(expand('%:p'), expand('~/'))
!   call assert_match('\~', expand('%:p')) 
    bwipe!
  endfunc
  
--- 45,53 ----
  
  func Test_expand_tilde_filename()
    split ~
!   call assert_equal('~', expand('%'))
    call assert_notequal(expand('%:p'), expand('~/'))
!   call assert_match('\~', expand('%:p'))
    bwipe!
  endfunc
  
*** ../vim-9.0.1256/src/testdir/test_expand_dllpath.vim 2020-08-12 
17:43:41.000000000 +0100
--- src/testdir/test_expand_dllpath.vim 2023-01-26 21:18:34.695434079 +0000
***************
*** 4,15 ****
    let $TEST_EXPAND_DLLPATH = '/dllpath/lib' . substitute(a:optname, 
'\zedll$', '.', '')
    execute 'let dllpath_save = &' . a:optname
    try
!     execute 'set ' . a:optname . '=$TEST_EXPAND_DLLPATH' 
!     execute 'call assert_equal("' . $TEST_EXPAND_DLLPATH . '", &' . a:optname 
. ')' 
  
      execute 'set ' . a:optname . '=~' . $TEST_EXPAND_DLLPATH
      let home = substitute($HOME, '\\', '/', 'g')
!     execute 'call assert_equal("' . home . $TEST_EXPAND_DLLPATH . '", &' . 
a:optname . ')' 
    finally
      execute 'let &' . a:optname . ' = dllpath_save'
      let $TEST_EXPAND_DLLPATH = ''
--- 4,15 ----
    let $TEST_EXPAND_DLLPATH = '/dllpath/lib' . substitute(a:optname, 
'\zedll$', '.', '')
    execute 'let dllpath_save = &' . a:optname
    try
!     execute 'set ' . a:optname . '=$TEST_EXPAND_DLLPATH'
!     execute 'call assert_equal("' . $TEST_EXPAND_DLLPATH . '", &' . a:optname 
. ')'
  
      execute 'set ' . a:optname . '=~' . $TEST_EXPAND_DLLPATH
      let home = substitute($HOME, '\\', '/', 'g')
!     execute 'call assert_equal("' . home . $TEST_EXPAND_DLLPATH . '", &' . 
a:optname . ')'
    finally
      execute 'let &' . a:optname . ' = dllpath_save'
      let $TEST_EXPAND_DLLPATH = ''
*** ../vim-9.0.1256/src/testdir/test_expand_func.vim    2022-09-21 
21:59:58.273433517 +0100
--- src/testdir/test_expand_func.vim    2023-01-26 21:18:59.811400859 +0000
***************
*** 7,21 ****
  let s:sflnum = str2nr(expand('<sflnum>'))
  
  func s:expand_sfile()
!   return expand('<sfile>')  
  endfunc
  
  func s:expand_slnum()
!   return str2nr(expand('<slnum>'))  
  endfunc
  
  func s:expand_sflnum()
!   return str2nr(expand('<sflnum>'))  
  endfunc
  
  " This test depends on the location in the test file, put it first.
--- 7,21 ----
  let s:sflnum = str2nr(expand('<sflnum>'))
  
  func s:expand_sfile()
!   return expand('<sfile>')
  endfunc
  
  func s:expand_slnum()
!   return str2nr(expand('<slnum>'))
  endfunc
  
  func s:expand_sflnum()
!   return str2nr(expand('<sflnum>'))
  endfunc
  
  " This test depends on the location in the test file, put it first.
*** ../vim-9.0.1256/src/testdir/test_fold.vim   2023-01-25 15:31:24.358723462 
+0000
--- src/testdir/test_fold.vim   2023-01-26 21:20:52.763258916 +0000
***************
*** 456,462 ****
    %foldopen!
    13m7
    call Check_foldlevels([1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0])
!   
    bw!
  endfunc
  
--- 456,462 ----
    %foldopen!
    13m7
    call Check_foldlevels([1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0])
! 
    bw!
  endfunc
  
***************
*** 705,711 ****
    let content =<< trim [CODE]
      /*
       * comment
!      * 
       *
       */
      int f(int* p) {
--- 705,711 ----
    let content =<< trim [CODE]
      /*
       * comment
!      *
       *
       */
      int f(int* p) {
*** ../vim-9.0.1256/src/testdir/test_goto.vim   2020-10-04 15:14:00.000000000 
+0100
--- src/testdir/test_goto.vim   2023-01-26 21:21:45.507196331 +0000
***************
*** 17,23 ****
  func Test_gD()
    let lines =<< trim [CODE]
      int x;
!   
      int func(void)
      {
        return x;
--- 17,23 ----
  func Test_gD()
    let lines =<< trim [CODE]
      int x;
! 
      int func(void)
      {
        return x;
***************
*** 30,36 ****
  func Test_gD_too()
    let lines =<< trim [CODE]
      Filename x;
!   
      int Filename
      int func() {
        Filename x;
--- 30,36 ----
  func Test_gD_too()
    let lines =<< trim [CODE]
      Filename x;
! 
      int Filename
      int func() {
        Filename x;
***************
*** 44,50 ****
    let lines =<< trim [CODE]
      /* int x; */
      int x;
!   
      int func(void)
      {
        return x;
--- 44,50 ----
    let lines =<< trim [CODE]
      /* int x; */
      int x;
! 
      int func(void)
      {
        return x;
***************
*** 58,64 ****
    let lines =<< trim [CODE]
      int y /* , x */;
      int x;
!   
      int func(void)
      {
        return x;
--- 58,64 ----
    let lines =<< trim [CODE]
      int y /* , x */;
      int x;
! 
      int func(void)
      {
        return x;
***************
*** 72,78 ****
    let lines =<< trim [CODE]
      char *s[] = "x";
      int x = 1;
!   
      int func(void)
      {
        return x;
--- 72,78 ----
    let lines =<< trim [CODE]
      char *s[] = "x";
      int x = 1;
! 
      int func(void)
      {
        return x;
***************
*** 85,91 ****
  func Test_gD_string_same_line()
    let lines =<< trim [CODE]
      char *s[] = "x", int x = 1;
!   
      int func(void)
      {
        return x;
--- 85,91 ----
  func Test_gD_string_same_line()
    let lines =<< trim [CODE]
      char *s[] = "x", int x = 1;
! 
      int func(void)
      {
        return x;
***************
*** 99,105 ****
    let lines =<< trim [CODE]
      char c = 'x';
      int x = 1;
!   
      int func(void)
      {
        return x;
--- 99,105 ----
    let lines =<< trim [CODE]
      char c = 'x';
      int x = 1;
! 
      int func(void)
      {
        return x;
***************
*** 112,118 ****
  func Test_gd()
    let lines =<< trim [CODE]
      int x;
!   
      int func(int x)
      {
        return x;
--- 112,118 ----
  func Test_gd()
    let lines =<< trim [CODE]
      int x;
! 
      int func(int x)
      {
        return x;
***************
*** 146,152 ****
      {
        return x;
      }
!   
      int func2(int x)
      {
        return x;
--- 146,152 ----
      {
        return x;
      }
! 
      int func2(int x)
      {
        return x;
***************
*** 173,181 ****
      def func1(a)
        a + 1
      end
!   
      a = 1
!   
      def func2()
        return a
      end
--- 173,181 ----
      def func1(a)
        a + 1
      end
! 
      a = 1
! 
      def func2()
        return a
      end
***************
*** 252,262 ****
      int func(void)
      {
        int y /* , x */;
!   
        for (/* int x = 0 */; y < 2; y++);
!   
        int x = 0;
!   
        return x;
      }
    [CODE]
--- 252,262 ----
      int func(void)
      {
        int y /* , x */;
! 
        for (/* int x = 0 */; y < 2; y++);
! 
        int x = 0;
! 
        return x;
      }
    [CODE]
***************
*** 292,298 ****
      {
        char *s = "x";
        int x = 1;
!   
        return x;
      }
    [CODE]
--- 292,298 ----
      {
        char *s = "x";
        int x = 1;
! 
        return x;
      }
    [CODE]
***************
*** 304,310 ****
      int func(void)
      {
        char *s = "x";
!   
        return x;
      }
    [CODE]
--- 304,310 ----
      int func(void)
      {
        char *s = "x";
! 
        return x;
      }
    [CODE]
***************
*** 341,347 ****
          char *b = "NULL";
          return b;
        }
!   
        return 0;
      }
    [CODE]
--- 341,347 ----
          char *b = "NULL";
          return b;
        }
! 
        return 0;
      }
    [CODE]
*** ../vim-9.0.1256/src/testdir/test_increment.vim      2021-05-29 
15:26:26.000000000 +0100
--- src/testdir/test_increment.vim      2023-01-26 21:22:46.803126140 +0000
***************
*** 704,710 ****
  " Text:
  "   1 23
  "   4 56
! " 
  " Expected:
  "   1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with .
  "   1 26
--- 704,710 ----
  " Text:
  "   1 23
  "   4 56
! "
  " Expected:
  "   1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with .
  "   1 26
*** ../vim-9.0.1256/src/testdir/test_indent.vim 2022-09-29 21:01:52.202807948 
+0100
--- src/testdir/test_indent.vim 2023-01-26 21:22:21.155155190 +0000
***************
*** 175,181 ****
  endfunc
  
  func Test_indent_func_with_gq()
!   
    function GetTeXIndent()
      " Sample indent expression for TeX files
      let lnum = prevnonblank(v:lnum - 1)
--- 175,181 ----
  endfunc
  
  func Test_indent_func_with_gq()
! 
    function GetTeXIndent()
      " Sample indent expression for TeX files
      let lnum = prevnonblank(v:lnum - 1)
***************
*** 186,192 ****
      let line = getline(lnum)
      let ind = indent(lnum)
      " Add a 'shiftwidth' after beginning of environments.
!     if line =~ '\\begin{center}' 
        let ind = ind + shiftwidth()
      endif
      return ind
--- 186,192 ----
      let line = getline(lnum)
      let ind = indent(lnum)
      " Add a 'shiftwidth' after beginning of environments.
!     if line =~ '\\begin{center}'
        let ind = ind + shiftwidth()
      endif
      return ind
***************
*** 248,254 ****
  
    bwipe!
    delmark ab
!   delfunction GetTeXIndent 
  endfu
  
  func Test_formatting_keeps_first_line_indent()
--- 248,254 ----
  
    bwipe!
    delmark ab
!   delfunction GetTeXIndent
  endfu
  
  func Test_formatting_keeps_first_line_indent()
*** ../vim-9.0.1256/src/testdir/test_ins_complete.vim   2022-12-15 
13:48:25.594876357 +0000
--- src/testdir/test_ins_complete.vim   2023-01-26 21:23:19.135090100 +0000
***************
*** 2149,2155 ****
  
  func Test_ins_complete_end_of_line()
    " this was reading past the end of the line
!   new  
    norm 8o€ý 
    sil! norm o     
  
--- 2149,2155 ----
  
  func Test_ins_complete_end_of_line()
    " this was reading past the end of the line
!   new
    norm 8o€ý 
    sil! norm o     
  
*** ../vim-9.0.1256/src/testdir/test_listchars.vim      2022-09-29 
21:01:52.206807939 +0100
--- src/testdir/test_listchars.vim      2023-01-26 21:28:43.766757870 +0000
***************
*** 506,512 ****
    set list
  
    set listchars=eol:$,space:_,nbsp:=
!   
    let nbsp1 = nr2char(0xa0)
    let nbsp2 = nr2char(0x202f)
    call append(0, [
--- 506,512 ----
    set list
  
    set listchars=eol:$,space:_,nbsp:=
! 
    let nbsp1 = nr2char(0xa0)
    let nbsp2 = nr2char(0x202f)
    call append(0, [
*** ../vim-9.0.1256/src/testdir/test_map_functions.vim  2022-11-02 
13:30:37.546314580 +0000
--- src/testdir/test_map_functions.vim  2023-01-28 18:12:29.232097800 +0000
***************
*** 1,7 ****
  " Tests for maparg(), mapcheck(), mapset(), maplist()
  " Also test utf8 map with a 0x80 byte.
  
! func s:SID()     
    return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
  endfunc
  
--- 1,7 ----
  " Tests for maparg(), mapcheck(), mapset(), maplist()
  " Also test utf8 map with a 0x80 byte.
  
! func s:SID()
    return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
  endfunc
  
***************
*** 18,24 ****
    call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 
'foo<C-V>',
          \ 'lhsraw': "foo\x80\xfc\x04V", 'lhsrawalt': "foo\x16",
          \ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'scriptversion': 1,
!         \ 'lnum': lnum + 1, 
        \ 'rhs': 'is<F4>foo', 'buffer': 0, 'abbr': 0, 'mode_bits': 0x47},
        \ maparg('foo<C-V>', '', 0, 1))
    call assert_equal({'silent': 1, 'noremap': 1, 'script': 1, 'lhs': 'bar',
--- 18,24 ----
    call assert_equal({'silent': 0, 'noremap': 0, 'script': 0, 'lhs': 
'foo<C-V>',
          \ 'lhsraw': "foo\x80\xfc\x04V", 'lhsrawalt': "foo\x16",
          \ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'scriptversion': 1,
!         \ 'lnum': lnum + 1,
        \ 'rhs': 'is<F4>foo', 'buffer': 0, 'abbr': 0, 'mode_bits': 0x47},
        \ maparg('foo<C-V>', '', 0, 1))
    call assert_equal({'silent': 1, 'noremap': 1, 'script': 1, 'lhs': 'bar',
*** ../vim-9.0.1256/src/testdir/test_method.vim 2022-09-17 21:07:52.107993141 
+0100
--- src/testdir/test_method.vim 2023-01-28 18:13:01.012057807 +0000
***************
*** 127,133 ****
  
  func Test_method_syntax()
    eval [1, 2, 3]  ->sort( )
!   eval [1, 2, 3]  
        \ ->sort(
        \ )
    eval [1, 2, 3]->sort()
--- 127,133 ----
  
  func Test_method_syntax()
    eval [1, 2, 3]  ->sort( )
!   eval [1, 2, 3]
        \ ->sort(
        \ )
    eval [1, 2, 3]->sort()
*** ../vim-9.0.1256/src/testdir/test_mswin_event.vim    2023-01-10 
13:42:59.722128350 +0000
--- src/testdir/test_mswin_event.vim    2023-01-28 18:13:44.452006718 +0000
***************
*** 43,49 ****
    endfor
  endfunc
  
! " This tells Vim to execute the buffered keys as user commands, 
  " ie. same as feekdeys with mode X would do.
  func ExecuteBufferedKeys()
    if has('gui_running')
--- 43,49 ----
    endfor
  endfunc
  
! " This tells Vim to execute the buffered keys as user commands,
  " ie. same as feekdeys with mode X would do.
  func ExecuteBufferedKeys()
    if has('gui_running')
***************
*** 158,164 ****
    let s:MOD_MASK_SHIFT = 0x02
    let s:MOD_MASK_CTRL  = 0x04
    let s:MOD_MASK_ALT   = 0x08
!   
    let s:vim_key_modifiers = [
      \ ["",       0,   []],
      \ ["S-",     2,   [s:VK.LSHIFT]],
--- 158,164 ----
    let s:MOD_MASK_SHIFT = 0x02
    let s:MOD_MASK_CTRL  = 0x04
    let s:MOD_MASK_ALT   = 0x08
! 
    let s:vim_key_modifiers = [
      \ ["",       0,   []],
      \ ["S-",     2,   [s:VK.LSHIFT]],
***************
*** 431,437 ****
  " Test for lowercase 'a' to 'z', VK codes 65(0x41) - 90(0x5A)
  " Note: VK_A-VK_Z virtual key codes coincide with uppercase ASCII codes A-Z.
  " eg VK_A is 65, and the ASCII character code for uppercase 'A' is also 65.
! " Caution: these are interpreted as lowercase when Shift is NOT pressed. 
  " eg, sending VK_A (65) 'A' Key code without shift modifier, will produce 
ASCII
  " char 'a' (91) as the output.  The ASCII codes for the lowercase letters are
  " numbered 32 higher than their uppercase versions.
--- 431,437 ----
  " Test for lowercase 'a' to 'z', VK codes 65(0x41) - 90(0x5A)
  " Note: VK_A-VK_Z virtual key codes coincide with uppercase ASCII codes A-Z.
  " eg VK_A is 65, and the ASCII character code for uppercase 'A' is also 65.
! " Caution: these are interpreted as lowercase when Shift is NOT pressed.
  " eg, sending VK_A (65) 'A' Key code without shift modifier, will produce 
ASCII
  " char 'a' (91) as the output.  The ASCII codes for the lowercase letters are
  " numbered 32 higher than their uppercase versions.
***************
*** 808,814 ****
    call MouseShiftWheelDown(2, 1)
    call feedkeys("H", 'Lx!')
    " should scroll from where it is (4) + visible buffer height - cmdheight
!   let shift_scroll_height = line('w$') - line('w0') - &cmdheight 
    call assert_equal(4 + shift_scroll_height, line('.'))
  
    " Shift Scroll Up
--- 808,814 ----
    call MouseShiftWheelDown(2, 1)
    call feedkeys("H", 'Lx!')
    " should scroll from where it is (4) + visible buffer height - cmdheight
!   let shift_scroll_height = line('w$') - line('w0') - &cmdheight
    call assert_equal(4 + shift_scroll_height, line('.'))
  
    " Shift Scroll Up
***************
*** 821,827 ****
      call MSWinMouseEvent(0x100, 2, 1, 0, 0, 0x04)
      call feedkeys("H", 'Lx!')
      " should scroll from where it is (4) + visible buffer height - cmdheight
!     let shift_scroll_height = line('w$') - line('w0') - &cmdheight 
      call assert_equal(4 + shift_scroll_height, line('.'))
  
      " Shift Scroll Up (using MOD)
--- 821,827 ----
      call MSWinMouseEvent(0x100, 2, 1, 0, 0, 0x04)
      call feedkeys("H", 'Lx!')
      " should scroll from where it is (4) + visible buffer height - cmdheight
!     let shift_scroll_height = line('w$') - line('w0') - &cmdheight
      call assert_equal(4 + shift_scroll_height, line('.'))
  
      " Shift Scroll Up (using MOD)
***************
*** 854,860 ****
    call feedkeys('g0', 'Lx!')
    " should scroll from where it is (7) + window width
    call assert_equal(7 + winwidth(0), col('.'))
!  
    " Shift Scroll Left
    call MouseShiftWheelLeft(1, 50)
    call feedkeys('g0', 'Lx!')
--- 854,860 ----
    call feedkeys('g0', 'Lx!')
    " should scroll from where it is (7) + window width
    call assert_equal(7 + winwidth(0), col('.'))
! 
    " Shift Scroll Left
    call MouseShiftWheelLeft(1, 50)
    call feedkeys('g0', 'Lx!')
***************
*** 880,887 ****
            \ substitute(e, '[<>]', '', 'g') .. '")<CR>'
    endfor
  
!   " Test various mouse buttons 
!   "(0 - Left, 1 - Middle, 2 - Right, 
    " 0x300 - MOUSE_X1/FROM_LEFT_3RD_BUTTON,
    " 0x400 - MOUSE_X2/FROM_LEFT_4TH_BUTTON)
    for button in [0, 1, 2, 0x300, 0x400]
--- 880,887 ----
            \ substitute(e, '[<>]', '', 'g') .. '")<CR>'
    endfor
  
!   " Test various mouse buttons
!   "(0 - Left, 1 - Middle, 2 - Right,
    " 0x300 - MOUSE_X1/FROM_LEFT_3RD_BUTTON,
    " 0x400 - MOUSE_X2/FROM_LEFT_4TH_BUTTON)
    for button in [0, 1, 2, 0x300, 0x400]
***************
*** 971,980 ****
    let args = #{button: 0, row: 2, col: 4, move: 0, multiclick: 0, modifiers: 
0}
    call assert_fails("call test_mswin_event('a1b2c3', args)", 'E475:')
    call assert_fails("call test_mswin_event(test_null_string(), {})", 'E475:')
!   
    call assert_fails("call test_mswin_event([], args)", 'E1174:')
    call assert_fails("call test_mswin_event('abc', [])", 'E1206:')
!   
    call assert_false(test_mswin_event('mouse', test_null_dict()))
    let args = #{row: 2, col: 4, multiclick: 0, modifiers: 0}
    call assert_false(test_mswin_event('mouse', args))
--- 971,980 ----
    let args = #{button: 0, row: 2, col: 4, move: 0, multiclick: 0, modifiers: 
0}
    call assert_fails("call test_mswin_event('a1b2c3', args)", 'E475:')
    call assert_fails("call test_mswin_event(test_null_string(), {})", 'E475:')
! 
    call assert_fails("call test_mswin_event([], args)", 'E1174:')
    call assert_fails("call test_mswin_event('abc', [])", 'E1206:')
! 
    call assert_false(test_mswin_event('mouse', test_null_dict()))
    let args = #{row: 2, col: 4, multiclick: 0, modifiers: 0}
    call assert_false(test_mswin_event('mouse', args))
*** ../vim-9.0.1256/src/testdir/test_normal.vim 2023-01-25 15:31:24.358723462 
+0000
--- src/testdir/test_normal.vim 2023-01-28 18:14:13.067975186 +0000
***************
*** 2209,2215 ****
      a character like this:
      .NH
      End of text here
!   
    [DATA]
    call assert_equal(expected, getline(1, '$'))
  
--- 2209,2215 ----
      a character like this:
      .NH
      End of text here
! 
    [DATA]
    call assert_equal(expected, getline(1, '$'))
  
*** ../vim-9.0.1256/src/testdir/test_popup.vim  2022-11-12 17:30:21.784661867 
+0000
--- src/testdir/test_popup.vim  2023-01-28 18:14:45.851940995 +0000
***************
*** 16,22 ****
    if !empty(entered)
      let mth = filter(mth, 'v:val=~"^".entered')
    endif
!   call complete(1, mth) 
    return ''
  endfunc
  
--- 16,22 ----
    if !empty(entered)
      let mth = filter(mth, 'v:val=~"^".entered')
    endif
!   call complete(1, mth)
    return ''
  endfunc
  
***************
*** 74,80 ****
    call feedkeys("aJu\<f5>\<c-p>l\<c-y>", 'tx')
    call assert_equal(["Jul"], getline(1,2))
    %d
!   
    " any-non printable, non-white character: Add this character and
    " reduce number of matches
    call feedkeys("aJu\<f5>\<c-p>l\<c-n>\<c-y>", 'tx')
--- 74,80 ----
    call feedkeys("aJu\<f5>\<c-p>l\<c-y>", 'tx')
    call assert_equal(["Jul"], getline(1,2))
    %d
! 
    " any-non printable, non-white character: Add this character and
    " reduce number of matches
    call feedkeys("aJu\<f5>\<c-p>l\<c-n>\<c-y>", 'tx')
***************
*** 96,102 ****
    call feedkeys("aJ\<f5>".repeat("\<c-n>",3)."\<c-l>\<esc>", 'tx')
    call assert_equal(["J"], getline(1,2))
    %d
!   
    " <c-l> - Insert one character from the current match
    call feedkeys("aJ\<f5>".repeat("\<c-n>",4)."\<c-l>\<esc>", 'tx')
    call assert_equal(["January"], getline(1,2))
--- 96,102 ----
    call feedkeys("aJ\<f5>".repeat("\<c-n>",3)."\<c-l>\<esc>", 'tx')
    call assert_equal(["J"], getline(1,2))
    %d
! 
    " <c-l> - Insert one character from the current match
    call feedkeys("aJ\<f5>".repeat("\<c-n>",4)."\<c-l>\<esc>", 'tx')
    call assert_equal(["January"], getline(1,2))
***************
*** 856,862 ****
    call term_sendkeys(buf, "jI123456789_\<Esc>")
    call term_sendkeys(buf, "GA\<C-N>")
    call VerifyScreenDump(buf, 'Test_popup_position_04', {'rows': 10})
!   
    call term_sendkeys(buf, "\<Esc>u")
    call StopVimInTerminal(buf)
  endfunc
--- 856,862 ----
    call term_sendkeys(buf, "jI123456789_\<Esc>")
    call term_sendkeys(buf, "GA\<C-N>")
    call VerifyScreenDump(buf, 'Test_popup_position_04', {'rows': 10})
! 
    call term_sendkeys(buf, "\<Esc>u")
    call StopVimInTerminal(buf)
  endfunc
*** ../vim-9.0.1256/src/testdir/test_popupwin_textprop.vim      2022-09-30 
21:57:07.547153409 +0100
--- src/testdir/test_popupwin_textprop.vim      2023-01-28 18:20:32.239677408 
+0000
***************
*** 21,27 ****
                \ bufnr: bufnr('%'),
                \ })
        let winid = popup_create('the text', #{
!             \ pos: 'botleft', 
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
--- 21,27 ----
                \ bufnr: bufnr('%'),
                \ })
        let winid = popup_create('the text', #{
!             \ pos: 'botleft',
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
***************
*** 67,91 ****
                \ type: 'popupMarker',
                \ })
        let winid = popup_create('bottom left', #{
!             \ pos: 'botleft', 
              \ textprop: 'popupMarker',
              \ textpropwin: win_getid(),
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('bottom right', #{
!             \ pos: 'botright', 
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top left', #{
!             \ pos: 'topleft', 
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top right', #{
!             \ pos: 'topright', 
              \ textprop: 'popupMarker',
              \ padding: [0,1,0,1],
              \ })
--- 67,91 ----
                \ type: 'popupMarker',
                \ })
        let winid = popup_create('bottom left', #{
!             \ pos: 'botleft',
              \ textprop: 'popupMarker',
              \ textpropwin: win_getid(),
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('bottom right', #{
!             \ pos: 'botright',
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top left', #{
!             \ pos: 'topleft',
              \ textprop: 'popupMarker',
              \ border: [],
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top right', #{
!             \ pos: 'topright',
              \ textprop: 'popupMarker',
              \ padding: [0,1,0,1],
              \ })
***************
*** 127,140 ****
                \ type: 'popupMarker',
                \ })
        let winid = popup_create('bottom left', #{
!             \ pos: 'botleft', 
              \ line: -1,
              \ col: 2,
              \ textprop: 'popupMarker',
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('bottom right', #{
!             \ pos: 'botright', 
              \ line: -1,
              \ col: -2,
              \ textprop: 'popupMarker',
--- 127,140 ----
                \ type: 'popupMarker',
                \ })
        let winid = popup_create('bottom left', #{
!             \ pos: 'botleft',
              \ line: -1,
              \ col: 2,
              \ textprop: 'popupMarker',
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('bottom right', #{
!             \ pos: 'botright',
              \ line: -1,
              \ col: -2,
              \ textprop: 'popupMarker',
***************
*** 142,148 ****
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top left', #{
!             \ pos: 'topleft', 
              \ line: 1,
              \ col: 2,
              \ textprop: 'popupMarker',
--- 142,148 ----
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top left', #{
!             \ pos: 'topleft',
              \ line: 1,
              \ col: 2,
              \ textprop: 'popupMarker',
***************
*** 150,156 ****
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top right', #{
!             \ pos: 'topright', 
              \ line: 1,
              \ col: -2,
              \ textprop: 'popupMarker',
--- 150,156 ----
              \ padding: [0,1,0,1],
              \ })
        let winid = popup_create('top right', #{
!             \ pos: 'topright',
              \ line: 1,
              \ col: -2,
              \ textprop: 'popupMarker',
*** ../vim-9.0.1256/src/testdir/test_quickfix.vim       2022-12-12 
13:20:37.622734681 +0000
--- src/testdir/test_quickfix.vim       2023-01-28 18:17:51.275780733 +0000
***************
*** 1211,1230 ****
      "Xtestfile", linenr 16: yet another problem
      Error in "Xtestfile" at line 17:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
                  ^
      Error in "Xtestfile" at line 18:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
      .............^
      Error in "Xtestfile" at line 19:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
      --------------^
      Error in "Xtestfile" at line 20:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
!              ^
  
      Does anyone know what is the problem and how to correction it?
      "Xtestfile", line 21 col 9: What is the title of the quickfix window?
--- 1211,1230 ----
      "Xtestfile", linenr 16: yet another problem
      Error in "Xtestfile" at line 17:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
                  ^
      Error in "Xtestfile" at line 18:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
      .............^
      Error in "Xtestfile" at line 19:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
      --------------^
      Error in "Xtestfile" at line 20:
      x should be a dot
!       xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
!              ^
  
      Does anyone know what is the problem and how to correction it?
      "Xtestfile", line 21 col 9: What is the title of the quickfix window?
***************
*** 1570,1576 ****
       failUnlessEqual
          raise self.failureException, \\
      W:AssertionError: 34 != 33
!   
      --------------------------------------------------------------
      Ran 27 tests in 0.063s
    [DATA]
--- 1570,1576 ----
       failUnlessEqual
          raise self.failureException, \\
      W:AssertionError: 34 != 33
! 
      --------------------------------------------------------------
      Ran 27 tests in 0.063s
    [DATA]
*** ../vim-9.0.1256/src/testdir/test_regexp_latin.vim   2022-09-08 
12:17:02.006342437 +0100
--- src/testdir/test_regexp_latin.vim   2023-01-28 18:18:39.099747063 +0000
***************
*** 1149,1155 ****
    # matchstr().
    enew
    setline(1, ['one', 'two', 'three'])
!   :3 
    :/ee
    bwipe!
    set re=1
--- 1149,1155 ----
    # matchstr().
    enew
    setline(1, ['one', 'two', 'three'])
!   :3
    :/ee
    bwipe!
    set re=1
*** ../vim-9.0.1256/src/testdir/test_scroll_opt.vim     2023-01-26 
14:14:18.835484390 +0000
--- src/testdir/test_scroll_opt.vim     2023-01-28 18:24:29.483566847 +0000
***************
*** 271,288 ****
    call term_sendkeys(buf, ":set scrolloff=1\<CR>")
    call term_sendkeys(buf, "10|\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_6', {})
!   
    " 'scrolloff' set to 1, scrolling down, cursor moves screen line up
    call term_sendkeys(buf, "\<C-E>")
    call term_sendkeys(buf, "gjgj")
    call term_sendkeys(buf, "\<C-Y>")
    call VerifyScreenDump(buf, 'Test_smooth_long_7', {})
!   
    " 'scrolloff' set to 2, scrolling up, cursor moves screen line down
    call term_sendkeys(buf, ":set scrolloff=2\<CR>")
    call term_sendkeys(buf, "10|\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_8', {})
!   
    " 'scrolloff' set to 2, scrolling down, cursor moves screen line up
    call term_sendkeys(buf, "\<C-E>")
    call term_sendkeys(buf, "gj")
--- 271,288 ----
    call term_sendkeys(buf, ":set scrolloff=1\<CR>")
    call term_sendkeys(buf, "10|\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_6', {})
! 
    " 'scrolloff' set to 1, scrolling down, cursor moves screen line up
    call term_sendkeys(buf, "\<C-E>")
    call term_sendkeys(buf, "gjgj")
    call term_sendkeys(buf, "\<C-Y>")
    call VerifyScreenDump(buf, 'Test_smooth_long_7', {})
! 
    " 'scrolloff' set to 2, scrolling up, cursor moves screen line down
    call term_sendkeys(buf, ":set scrolloff=2\<CR>")
    call term_sendkeys(buf, "10|\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_8', {})
! 
    " 'scrolloff' set to 2, scrolling down, cursor moves screen line up
    call term_sendkeys(buf, "\<C-E>")
    call term_sendkeys(buf, "gj")
***************
*** 320,326 ****
    call term_sendkeys(buf, "3Gzt")
    call term_sendkeys(buf, "\<C-E>j")
    call VerifyScreenDump(buf, 'Test_smooth_long_15', {})
!   
    call StopVimInTerminal(buf)
  endfunc
  
--- 320,326 ----
    call term_sendkeys(buf, "3Gzt")
    call term_sendkeys(buf, "\<C-E>j")
    call VerifyScreenDump(buf, 'Test_smooth_long_15', {})
! 
    call StopVimInTerminal(buf)
  endfunc
  
***************
*** 335,341 ****
    call writefile(lines, 'XSmoothOneLong', 'D')
    let buf = RunVimInTerminal('-S XSmoothOneLong', #{rows: 6, cols: 40})
    call VerifyScreenDump(buf, 'Test_smooth_one_long_1', {})
!   
    call term_sendkeys(buf, "\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_one_long_2', {})
  
--- 335,341 ----
    call writefile(lines, 'XSmoothOneLong', 'D')
    let buf = RunVimInTerminal('-S XSmoothOneLong', #{rows: 6, cols: 40})
    call VerifyScreenDump(buf, 'Test_smooth_one_long_1', {})
! 
    call term_sendkeys(buf, "\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_one_long_2', {})
  
***************
*** 357,363 ****
    call writefile(lines, 'XSmoothLongShowbreak', 'D')
    let buf = RunVimInTerminal('-S XSmoothLongShowbreak', #{rows: 6, cols: 40})
    call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_1', {})
!   
    call term_sendkeys(buf, "\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_2', {})
  
--- 357,363 ----
    call writefile(lines, 'XSmoothLongShowbreak', 'D')
    let buf = RunVimInTerminal('-S XSmoothLongShowbreak', #{rows: 6, cols: 40})
    call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_1', {})
! 
    call term_sendkeys(buf, "\<C-E>")
    call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_2', {})
  
***************
*** 465,471 ****
    call NewWindow(10, 20)
    setl smoothscroll wrap
    setl scrolloff=3
!   
    " 120 chars are 6 screen lines
    call setline(1, 
"abcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRST")
    call setline(2, "below")
--- 465,471 ----
    call NewWindow(10, 20)
    setl smoothscroll wrap
    setl scrolloff=3
! 
    " 120 chars are 6 screen lines
    call setline(1, 
"abcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRST")
    call setline(2, "below")
*** ../vim-9.0.1256/src/testdir/test_signals.vim        2022-10-10 
22:39:38.203545897 +0100
--- src/testdir/test_signals.vim        2023-01-28 18:24:56.831556496 +0000
***************
*** 133,139 ****
    sleep 100m
  
    " We resume after the suspend.  Sleep a bit for the signal to take effect,
!   " also when running under valgrind. 
    exe 'silent !kill -s CONT ' .. pid_vim
    call WaitForAssert({-> assert_true(filereadable('XautoOut2'))})
    sleep 10m
--- 133,139 ----
    sleep 100m
  
    " We resume after the suspend.  Sleep a bit for the signal to take effect,
!   " also when running under valgrind.
    exe 'silent !kill -s CONT ' .. pid_vim
    call WaitForAssert({-> assert_true(filereadable('XautoOut2'))})
    sleep 10m
*** ../vim-9.0.1256/src/testdir/test_signs.vim  2022-12-12 13:20:37.622734681 
+0000
--- src/testdir/test_signs.vim  2023-01-28 18:25:32.679543558 +0000
***************
*** 1775,1784 ****
    let lines =<< trim END
        call setline(1, [repeat('x', 75), 'mmmm', 'yyyy'])
        call cursor(2,1)
!       sign define s1 texthl=Search text==>
!       sign define s2 linehl=Pmenu
        redraw
!       sign place 10 line=2 name=s1
    END
    call writefile(lines, 'XtestSigncolumn', 'D')
    let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
--- 1775,1784 ----
    let lines =<< trim END
        call setline(1, [repeat('x', 75), 'mmmm', 'yyyy'])
        call cursor(2,1)
!       sign define s1 texthl=Search text==>
!       sign define s2 linehl=Pmenu
        redraw
!       sign place 10 line=2 name=s1
    END
    call writefile(lines, 'XtestSigncolumn', 'D')
    let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
*** ../vim-9.0.1256/src/testdir/test_statusline.vim     2023-01-14 
11:46:09.704717821 +0000
--- src/testdir/test_statusline.vim     2023-01-28 18:25:54.459536012 +0000
***************
*** 413,419 ****
    " Test statusline works with 80+ items
    function! StatusLabel()
      redrawstatus
!     return '[label]'  
    endfunc
    let statusline = '%{StatusLabel()}'
    for i in range(150)
--- 413,419 ----
    " Test statusline works with 80+ items
    function! StatusLabel()
      redrawstatus
!     return '[label]'
    endfunc
    let statusline = '%{StatusLabel()}'
    for i in range(150)
*** ../vim-9.0.1256/src/testdir/test_substitute.vim     2023-01-04 
17:17:49.121005598 +0000
--- src/testdir/test_substitute.vim     2023-01-28 18:26:16.943528463 +0000
***************
*** 707,713 ****
  endfunc
  
  func Test_nocatch_sub_failure_handling()
!   " normal error results in all replacements 
    func Foo()
      foobar
    endfunc
--- 707,713 ----
  endfunc
  
  func Test_nocatch_sub_failure_handling()
!   " normal error results in all replacements
    func Foo()
      foobar
    endfunc
*** ../vim-9.0.1256/src/testdir/test_tagfunc.vim        2022-10-15 
20:52:22.559752564 +0100
--- src/testdir/test_tagfunc.vim        2023-01-28 18:26:40.475520823 +0000
***************
*** 93,99 ****
    delf NullTagFunc
  
    bwipe!
!   set tags& tfu& cpt& 
    call delete('Xfile1')
  endfunc
  
--- 93,99 ----
    delf NullTagFunc
  
    bwipe!
!   set tags& tfu& cpt&
    call delete('Xfile1')
  endfunc
  
*** ../vim-9.0.1256/src/testdir/test_tagjump.vim        2022-12-05 
13:50:49.718052362 +0000
--- src/testdir/test_tagjump.vim        2023-01-28 18:28:13.575492912 +0000
***************
*** 743,749 ****
    let code =<< trim [CODE]
  
      int FUNC1  (int x) { }
!     int 
      func2   (int y) { }
      int * func3 () { }
  
--- 743,749 ----
    let code =<< trim [CODE]
  
      int FUNC1  (int x) { }
!     int
      func2   (int y) { }
      int * func3 () { }
  
*** ../vim-9.0.1256/src/testdir/test_termcodes.vim      2022-12-20 
20:01:09.624090908 +0000
--- src/testdir/test_termcodes.vim      2023-01-28 18:31:00.283450557 +0000
***************
*** 894,900 ****
    let save_term = &term
    let save_ttymouse = &ttymouse
    call test_override('no_query_mouse', 1)
!   
    " 'mousetime' must be sufficiently large, or else the test is flaky when
    " using a ssh connection with X forwarding; i.e. ssh -X (issue #7563).
    set mouse=a term=xterm mousetime=600
--- 894,900 ----
    let save_term = &term
    let save_ttymouse = &ttymouse
    call test_override('no_query_mouse', 1)
! 
    " 'mousetime' must be sufficiently large, or else the test is flaky when
    " using a ssh connection with X forwarding; i.e. ssh -X (issue #7563).
    set mouse=a term=xterm mousetime=600
*** ../vim-9.0.1256/src/testdir/test_textprop.vim       2023-01-21 
15:54:40.426545808 +0000
--- src/testdir/test_textprop.vim       2023-01-28 18:31:41.859441279 +0000
***************
*** 2745,2751 ****
  
    let lines =<< trim END
        vim9script
!       
        setline(1, ['vim9script', '', 'three', ''])
  
        # Add text prop below empty line 2 with padding.
--- 2745,2751 ----
  
    let lines =<< trim END
        vim9script
! 
        setline(1, ['vim9script', '', 'three', ''])
  
        # Add text prop below empty line 2 with padding.
***************
*** 2768,2780 ****
    END
    call writefile(lines, 'XscriptPropBelowAfterEmpty', 'D')
    let buf = RunVimInTerminal('-S XscriptPropBelowAfterEmpty', #{rows: 8, 
cols: 60})
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_1', {}) 
  
    call term_sendkeys(buf, ":set number\<CR>")
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_2', {}) 
  
    call term_sendkeys(buf, ":set nowrap\<CR>")
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_3', {}) 
  
    call StopVimInTerminal(buf)
  endfunc
--- 2768,2780 ----
    END
    call writefile(lines, 'XscriptPropBelowAfterEmpty', 'D')
    let buf = RunVimInTerminal('-S XscriptPropBelowAfterEmpty', #{rows: 8, 
cols: 60})
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_1', {})
  
    call term_sendkeys(buf, ":set number\<CR>")
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_2', {})
  
    call term_sendkeys(buf, ":set nowrap\<CR>")
!   call VerifyScreenDump(buf, 'Test_prop_below_after_empty_3', {})
  
    call StopVimInTerminal(buf)
  endfunc
***************
*** 3310,3316 ****
        prop_type_add('propnotincl', {highlight: 'NonText', start_incl: false})
        prop_add(1, 15, {type: 'propnotincl', text: 'before '})
  
!       set cindent sw=4 
        prop_type_add('argname', {highlight: 'DiffChange', start_incl: true})
        prop_add(3, 10, {type: 'argname', text: 'arg: '})
    END
--- 3310,3316 ----
        prop_type_add('propnotincl', {highlight: 'NonText', start_incl: false})
        prop_add(1, 15, {type: 'propnotincl', text: 'before '})
  
!       set cindent sw=4
        prop_type_add('argname', {highlight: 'DiffChange', start_incl: true})
        prop_add(3, 10, {type: 'argname', text: 'arg: '})
    END
***************
*** 3751,3757 ****
  
    call StopVimInTerminal(buf)
  endfunc
!  
  func Test_error_when_using_negative_id()
    call prop_type_add('test1', #{highlight: 'ErrorMsg'})
    call prop_add(1, 1, #{type: 'test1', text: 'virtual'})
--- 3751,3757 ----
  
    call StopVimInTerminal(buf)
  endfunc
! 
  func Test_error_when_using_negative_id()
    call prop_type_add('test1', #{highlight: 'ErrorMsg'})
    call prop_add(1, 1, #{type: 'test1', text: 'virtual'})
*** ../vim-9.0.1256/src/testdir/test_timers.vim 2022-10-15 20:52:22.563752598 
+0100
--- src/testdir/test_timers.vim 2023-01-28 18:32:08.535435556 +0000
***************
*** 393,399 ****
  " vgetc().
  func Test_nocatch_timer_garbage_collect()
    " FIXME: why does this fail only on MacOS M1?
!   try 
      CheckNotMacM1
    catch /Skipped/
      let g:skipped_reason = v:exception
--- 393,399 ----
  " vgetc().
  func Test_nocatch_timer_garbage_collect()
    " FIXME: why does this fail only on MacOS M1?
!   try
      CheckNotMacM1
    catch /Skipped/
      let g:skipped_reason = v:exception
*** ../vim-9.0.1256/src/testdir/test_true_false.vim     2022-09-17 
21:07:52.107993141 +0100
--- src/testdir/test_true_false.vim     2023-01-28 18:32:36.079429811 +0000
***************
*** 47,57 ****
  endfunc
  
  function Try_arg_true_false(expr, false_val, true_val)
!   for v in ['v:false', '0', '"0"', '"foo"', '" "'] 
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . 
string(a:false_val) . ' but ' . string(r))
    endfor
!   for v in ['v:true', '1', '"1"', '"1foo"'] 
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . 
string(a:true_val) . ' but ' . string(r))
    endfor
--- 47,57 ----
  endfunc
  
  function Try_arg_true_false(expr, false_val, true_val)
!   for v in ['v:false', '0', '"0"', '"foo"', '" "']
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . 
string(a:false_val) . ' but ' . string(r))
    endfor
!   for v in ['v:true', '1', '"1"', '"1foo"']
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . 
string(a:true_val) . ' but ' . string(r))
    endfor
***************
*** 115,125 ****
  endfunc
  
  function Try_arg_non_zero(expr, false_val, true_val)
!   for v in ['v:false', '0', '[1]', '{2:3}', '3.4'] 
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . 
a:false_val . ' but ' . r)
    endfor
!   for v in ['v:true', '1', '" "', '"0"'] 
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . 
a:true_val . ' but ' . r)
    endfor
--- 115,125 ----
  endfunc
  
  function Try_arg_non_zero(expr, false_val, true_val)
!   for v in ['v:false', '0', '[1]', '{2:3}', '3.4']
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . 
a:false_val . ' but ' . r)
    endfor
!   for v in ['v:true', '1', '" "', '"0"']
      let r = eval(substitute(a:expr, '%v%', v, ''))
      call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . 
a:true_val . ' but ' . r)
    endfor
***************
*** 135,148 ****
    call Try_arg_non_zero("shellescape('foo%', %v%)", "'foo%'", "'foo\\%'")
  
    " visualmode() needs to be called twice to check
!   for v in [v:false, 0, [1], {2:3}, 3.4] 
      normal vv
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' 
. r)
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' 
. r)
    endfor
!   for v in [v:true, 1, " ", "0"] 
      normal vv
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . v . ' is not "v" but ' . r)
--- 135,148 ----
    call Try_arg_non_zero("shellescape('foo%', %v%)", "'foo%'", "'foo\\%'")
  
    " visualmode() needs to be called twice to check
!   for v in [v:false, 0, [1], {2:3}, 3.4]
      normal vv
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' 
. r)
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' 
. r)
    endfor
!   for v in [v:true, 1, " ", "0"]
      normal vv
      let r = visualmode(v)
      call assert_equal('v', r, 'result for ' . v . ' is not "v" but ' . r)
*** ../vim-9.0.1256/src/testdir/test_utf8.vim   2023-01-20 16:00:49.542341277 
+0000
--- src/testdir/test_utf8.vim   2023-01-28 18:33:15.071421963 +0000
***************
*** 1,5 ****
  " Tests for Unicode manipulations
!  
  source check.vim
  source view_util.vim
  source screendump.vim
--- 1,5 ----
  " Tests for Unicode manipulations
! 
  source check.vim
  source view_util.vim
  source screendump.vim
***************
*** 107,113 ****
  
    let save_encoding = &encoding
    set encoding=latin1
!   
    let lres = str2list(s, 1)
    let sres = list2str(l, 1)
    call assert_equal([65, 66, 67], str2list("ABC"))
--- 107,113 ----
  
    let save_encoding = &encoding
    set encoding=latin1
! 
    let lres = str2list(s, 1)
    let sres = list2str(l, 1)
    call assert_equal([65, 66, 67], str2list("ABC"))
***************
*** 123,129 ****
  func Test_screenchar_utf8()
    new
  
!   " 1-cell, with composing characters 
    call setline(1, ["ABC\u0308"])
    redraw
    call assert_equal([0x0041], screenchars(1, 1))
--- 123,129 ----
  func Test_screenchar_utf8()
    new
  
!   " 1-cell, with composing characters
    call setline(1, ["ABC\u0308"])
    redraw
    call assert_equal([0x0041], screenchars(1, 1))
***************
*** 133,139 ****
    call assert_equal("B", screenstring(1, 2))
    call assert_equal("C\u0308", screenstring(1, 3))
  
!   " 2-cells, with composing characters 
    let text = "\u3042\u3044\u3046\u3099"
    call setline(1, text)
    redraw
--- 133,139 ----
    call assert_equal("B", screenstring(1, 2))
    call assert_equal("C\u0308", screenstring(1, 3))
  
!   " 2-cells, with composing characters
    let text = "\u3042\u3044\u3046\u3099"
    call setline(1, text)
    redraw
*** ../vim-9.0.1256/src/testdir/test_vim9_assign.vim    2022-10-15 
20:06:30.280328838 +0100
--- src/testdir/test_vim9_assign.vim    2023-01-28 18:33:59.135413457 +0000
***************
*** 1833,1839 ****
    v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected 
func(number) but got func(any): bool')
  
    lines =<< trim END
!       echo filter([1, 2, 3], (_, v: string) => v + 1) 
    END
    v9.CheckDefAndScriptFailure(lines, 'E1051:')
  enddef
--- 1833,1839 ----
    v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected 
func(number) but got func(any): bool')
  
    lines =<< trim END
!       echo filter([1, 2, 3], (_, v: string) => v + 1)
    END
    v9.CheckDefAndScriptFailure(lines, 'E1051:')
  enddef
***************
*** 1935,1941 ****
        endif
        return 'this'
      endfunc
!     var val: string = GetValue() 
      # env var is always a string
      var env = $TERM
    END
--- 1935,1941 ----
        endif
        return 'this'
      endfunc
!     var val: string = GetValue()
      # env var is always a string
      var env = $TERM
    END
*** ../vim-9.0.1256/src/testdir/test_vim9_class.vim     2023-01-28 
15:19:36.960757169 +0000
--- src/testdir/test_vim9_class.vim     2023-01-28 18:36:41.315385142 +0000
***************
*** 48,54 ****
    lines =<< trim END
        vim9script
        class Something
!       endclass school's out 
    END
    v9.CheckScriptFailure(lines, 'E488:')
  
--- 48,54 ----
    lines =<< trim END
        vim9script
        class Something
!       endclass school's out
    END
    v9.CheckScriptFailure(lines, 'E488:')
  
***************
*** 623,629 ****
        TextPos.AddToCounter(3)
        assert_equal(3, TextPos.counter)
        assert_fails('echo TextPos.noSuchMember', 'E1338:')
!       
        def GetCounter(): number
          return TextPos.counter
        enddef
--- 623,629 ----
        TextPos.AddToCounter(3)
        assert_equal(3, TextPos.counter)
        assert_fails('echo TextPos.noSuchMember', 'E1338:')
! 
        def GetCounter(): number
          return TextPos.counter
        enddef
*** ../vim-9.0.1256/src/testdir/test_vim9_disassemble.vim       2022-10-15 
20:06:30.284328833 +0100
--- src/testdir/test_vim9_disassemble.vim       2023-01-28 18:39:29.227359595 
+0000
***************
*** 2085,2091 ****
          '8 COND2BOOL\_s*' ..
          '9 STORE $3\_s*' ..
          'return name\_s*' ..
!         '\d\+ LOAD $3\_s*' ..   
          '\d\+ RETURN',
          instr)
    assert_equal(true, InvertBool())
--- 2085,2091 ----
          '8 COND2BOOL\_s*' ..
          '9 STORE $3\_s*' ..
          'return name\_s*' ..
!         '\d\+ LOAD $3\_s*' ..
          '\d\+ RETURN',
          instr)
    assert_equal(true, InvertBool())
*** ../vim-9.0.1256/src/testdir/test_vim9_expr.vim      2023-01-09 
15:10:36.245547545 +0000
--- src/testdir/test_vim9_expr.vim      2023-01-28 18:42:18.343198644 +0000
***************
*** 44,50 ****
        echo ['a'] + (1 ? ['b'] : ['c'] # comment
                  )
  
!       # with constant condition expression is not evaluated 
        assert_equal('one', 1 ? 'one' : xxx)
  
        var Some: func = function('len')
--- 44,50 ----
        echo ['a'] + (1 ? ['b'] : ['c'] # comment
                  )
  
!       # with constant condition expression is not evaluated
        assert_equal('one', 1 ? 'one' : xxx)
  
        var Some: func = function('len')
***************
*** 74,80 ****
    # check line continuation
    var lines =<< trim END
        var name = 1
!                       ? 'yes'
                : 'no'
        assert_equal('yes', name)
    END
--- 74,80 ----
    # check line continuation
    var lines =<< trim END
        var name = 1
!               ? 'yes'
                : 'no'
        assert_equal('yes', name)
    END
***************
*** 82,88 ****
  
    lines =<< trim END
        var name = v:false
!                       ? 'yes'
                : 'no'
        assert_equal('no', name)
    END
--- 82,88 ----
  
    lines =<< trim END
        var name = v:false
!               ? 'yes'
                : 'no'
        assert_equal('no', name)
    END
***************
*** 90,96 ****
  
    lines =<< trim END
        var name = v:false ?
!                       'yes' :
                'no'
        assert_equal('no', name)
    END
--- 90,96 ----
  
    lines =<< trim END
        var name = v:false ?
!               'yes' :
                'no'
        assert_equal('no', name)
    END
***************
*** 98,104 ****
  
    lines =<< trim END
        var name = v:false ?  # comment
!                       'yes' :
                  # comment
                'no' # comment
        assert_equal('no', name)
--- 98,104 ----
  
    lines =<< trim END
        var name = v:false ?  # comment
!               'yes' :
                  # comment
                'no' # comment
        assert_equal('no', name)
***************
*** 317,338 ****
    # check line continuation
    var lines =<< trim END
        var name = 0
!                       || 1
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:false
!                       || v:true
!                       || v:false
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:false ||
!                       v:true ||
                v:false
        assert_equal(v:true, name)
    END
--- 317,338 ----
    # check line continuation
    var lines =<< trim END
        var name = 0
!               || 1
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:false
!               || v:true
!               || v:false
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:false ||
!               v:true ||
                v:false
        assert_equal(v:true, name)
    END
***************
*** 341,347 ****
    lines =<< trim END
        var name = v:false || # comment
                  # comment
!                       v:true ||
                  # comment
                v:false # comment
        assert_equal(v:true, name)
--- 341,347 ----
    lines =<< trim END
        var name = v:false || # comment
                  # comment
!               v:true ||
                  # comment
                v:false # comment
        assert_equal(v:true, name)
***************
*** 456,478 ****
    # check line continuation
    var lines =<< trim END
        var name = 0
!                       && 1
        assert_equal(false, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:true
!                       && v:true
!                       && v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:true &&
!                       v:true &&
!                       v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 456,478 ----
    # check line continuation
    var lines =<< trim END
        var name = 0
!               && 1
        assert_equal(false, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:true
!               && v:true
!               && v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = v:true &&
!               v:true &&
!               v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 480,488 ****
    lines =<< trim END
        var name = v:true &&  # comment
                  # comment
!                       v:true &&
                  # comment
!                       v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 480,488 ----
    lines =<< trim END
        var name = v:true &&  # comment
                  # comment
!               v:true &&
                  # comment
!               v:true
        assert_equal(v:true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 887,893 ****
    # variables declared at script level used in a :def function
    lines =<< trim END
        vim9script
!       
        var l_decl: list<number>
        var l_empty = []
        var l_null = null_list
--- 887,893 ----
    # variables declared at script level used in a :def function
    lines =<< trim END
        vim9script
! 
        var l_decl: list<number>
        var l_empty = []
        var l_null = null_list
***************
*** 914,920 ****
          assert_true(caught)
        enddef
        TestList()
!       
        var b_decl: blob
        var b_empty = 0z
        var b_null = null_blob
--- 914,920 ----
          assert_true(caught)
        enddef
        TestList()
! 
        var b_decl: blob
        var b_empty = 0z
        var b_null = null_blob
***************
*** 941,947 ****
          assert_true(caught)
        enddef
        TestBlob()
!       
        var d_decl: dict<number>
        var d_empty = {}
        var d_null = null_dict
--- 941,947 ----
          assert_true(caught)
        enddef
        TestBlob()
! 
        var d_decl: dict<number>
        var d_empty = {}
        var d_null = null_dict
***************
*** 1274,1280 ****
    # check line continuation
    var lines =<< trim END
        var name = 0
!                       < 1
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1274,1280 ----
    # check line continuation
    var lines =<< trim END
        var name = 0
!               < 1
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1282,1295 ****
    lines =<< trim END
        var name = 123
                  # comment
!                       != 123
        assert_equal(false, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = 123 ==
!                               123
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1282,1295 ----
    lines =<< trim END
        var name = 123
                  # comment
!               != 123
        assert_equal(false, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = 123 ==
!                       123
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1297,1303 ****
    lines =<< trim END
        var list = [1, 2, 3]
        var name = list
!                       is list
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1297,1303 ----
    lines =<< trim END
        var list = [1, 2, 3]
        var name = list
!               is list
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1306,1312 ****
        var list = [1, 2, 3]
        var name = list # comment
                   # comment
!                       is list
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1306,1312 ----
        var list = [1, 2, 3]
        var name = list # comment
                   # comment
!               is list
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1314,1320 ****
    lines =<< trim END
        var myblob = 0z1234
        var name = myblob
!                       isnot 0z11
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1314,1320 ----
    lines =<< trim END
        var myblob = 0z1234
        var name = myblob
!               isnot 0z11
        assert_equal(true, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1526,1532 ****
    # check line continuation
    var lines =<< trim END
        var name = 11
!                       + 77
                - 22
        assert_equal(66, name)
    END
--- 1526,1532 ----
    # check line continuation
    var lines =<< trim END
        var name = 11
!               + 77
                - 22
        assert_equal(66, name)
    END
***************
*** 1551,1557 ****
  
    lines =<< trim END
        var name = 'one'
!                       .. 'two'
        assert_equal('onetwo', name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1551,1557 ----
  
    lines =<< trim END
        var name = 'one'
!               .. 'two'
        assert_equal('onetwo', name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1859,1865 ****
    # check line continuation
    var lines =<< trim END
        var name = 11
!                       * 22
                / 3
        assert_equal(80, name)
    END
--- 1859,1865 ----
    # check line continuation
    var lines =<< trim END
        var name = 11
!               * 22
                / 3
        assert_equal(80, name)
    END
***************
*** 1867,1873 ****
  
    lines =<< trim END
        var name = 25
!                       % 10
        assert_equal(5, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
--- 1867,1873 ----
  
    lines =<< trim END
        var name = 25
!               % 10
        assert_equal(5, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
***************
*** 1877,1890 ****
                  # comment
  
                  # comment
!                       % 10
        assert_equal(5, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = 11 *
!                       22 /
                3
        assert_equal(80, name)
    END
--- 1877,1890 ----
                  # comment
  
                  # comment
!               % 10
        assert_equal(5, name)
    END
    v9.CheckDefAndScriptSuccess(lines)
  
    lines =<< trim END
        var name = 11 *
!               22 /
                3
        assert_equal(80, name)
    END
***************
*** 2775,2781 ****
        var dkeys = {['key']: 'string',
                     [12]: 'numberexpr',
                     34: 'number',
!                    [true]: 'bool'} 
        assert_equal('string', dkeys['key'])
        assert_equal('numberexpr', dkeys[12])
        assert_equal('number', dkeys[34])
--- 2775,2781 ----
        var dkeys = {['key']: 'string',
                     [12]: 'numberexpr',
                     34: 'number',
!                    [true]: 'bool'}
        assert_equal('string', dkeys['key'])
        assert_equal('numberexpr', dkeys[12])
        assert_equal('number', dkeys[34])
***************
*** 2798,2804 ****
        assert_equal('dict<list<unknown>>', typename(dl))
    END
    v9.CheckDefAndScriptSuccess(lines)
!  
    # legacy syntax doesn't work
    v9.CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1)
    v9.CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
--- 2798,2804 ----
        assert_equal('dict<list<unknown>>', typename(dl))
    END
    v9.CheckDefAndScriptSuccess(lines)
! 
    # legacy syntax doesn't work
    v9.CheckDefAndScriptFailure(["var x = #{key: 8}"], 'E1170:', 1)
    v9.CheckDefAndScriptFailure(["var x = 'a' #{a: 1}"], 'E1170:', 1)
***************
*** 3206,3212 ****
  def Test_expr_member_vim9script()
    var lines =<< trim END
        var d = {one:
!                       'one',
                two: 'two',
                1: 1,
                _: 2}
--- 3206,3212 ----
  def Test_expr_member_vim9script()
    var lines =<< trim END
        var d = {one:
!               'one',
                two: 'two',
                1: 1,
                _: 2}
***************
*** 3494,3512 ****
    assert_equal('ok', g:LegacyReturn())
  
    lines =<< trim END
!       vim9script 
!       def GetNumber(): number   
            legacy return notexists
!       enddef 
        echo GetNumber()
    END
    v9.CheckScriptFailure(lines, 'E121: Undefined variable: notexists')
  
    lines =<< trim END
!       vim9script 
!       def GetNumber(): number   
!           legacy return range(3)->map('v:val + 1') 
!       enddef 
        echo GetNumber()
    END
    v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got 
list<number>')
--- 3494,3512 ----
    assert_equal('ok', g:LegacyReturn())
  
    lines =<< trim END
!       vim9script
!       def GetNumber(): number
            legacy return notexists
!       enddef
        echo GetNumber()
    END
    v9.CheckScriptFailure(lines, 'E121: Undefined variable: notexists')
  
    lines =<< trim END
!       vim9script
!       def GetNumber(): number
!           legacy return range(3)->map('v:val + 1')
!       enddef
        echo GetNumber()
    END
    v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got 
list<number>')
***************
*** 3631,3637 ****
  
        var Join = (l) => join(l, 'x')
        assert_equal('axb', ['a', 'b']->(Join)())
!       
        var sorted = [3, 1, 2]
                      -> sort()
        assert_equal([1, 2, 3], sorted)
--- 3631,3637 ----
  
        var Join = (l) => join(l, 'x')
        assert_equal('axb', ['a', 'b']->(Join)())
! 
        var sorted = [3, 1, 2]
                      -> sort()
        assert_equal([1, 2, 3], sorted)
*** ../vim-9.0.1256/src/testdir/test_vim9_func.vim      2023-01-20 
18:49:42.763170966 +0000
--- src/testdir/test_vim9_func.vim      2023-01-28 18:42:43.939145443 +0000
***************
*** 607,613 ****
        defcompile
  
        func! g:Global(a, b)
!         echo a:a a:b 
        endfunc
        Tryit()
    END
--- 607,613 ----
        defcompile
  
        func! g:Global(a, b)
!         echo a:a a:b
        endfunc
        Tryit()
    END
***************
*** 2150,2156 ****
          )
          # had a double free if the right parenthesis of the nested function is
          # on the next line
!          
          enddef|BBBB
        enddef
        # Compile all functions
--- 2150,2156 ----
          )
          # had a double free if the right parenthesis of the nested function is
          # on the next line
! 
          enddef|BBBB
        enddef
        # Compile all functions
***************
*** 2175,2182 ****
          def SecondFunction(J  =
          # Nois
          # one
!          
!          enddef|BBBB
        enddef
        # Compile all functions
        defcompile
--- 2175,2182 ----
          def SecondFunction(J  =
          # Nois
          # one
! 
!         enddef|BBBB
        enddef
        # Compile all functions
        defcompile
*** ../vim-9.0.1256/src/testdir/test_vim9_import.vim    2022-11-22 
18:12:40.833924528 +0000
--- src/testdir/test_vim9_import.vim    2023-01-28 18:43:06.219100889 +0000
***************
*** 2656,2662 ****
  
        import autoload 'toggle.vim'
  
!       nnoremap <silent> <expr> tt toggle.Toggle() 
        nnoremap <silent> xx <ScriptCmd>toggle.Doit()<CR>
        nnoremap <silent> yy <Cmd>toggle.Doit()<CR>
    END
--- 2656,2662 ----
  
        import autoload 'toggle.vim'
  
!       nnoremap <silent> <expr> tt toggle.Toggle()
        nnoremap <silent> xx <ScriptCmd>toggle.Doit()<CR>
        nnoremap <silent> yy <Cmd>toggle.Doit()<CR>
    END
*** ../vim-9.0.1256/src/testdir/test_viminfo.vim        2022-10-15 
21:35:51.191403811 +0100
--- src/testdir/test_viminfo.vim        2023-01-28 19:12:06.701701542 +0000
***************
*** 301,307 ****
    call test_settime(39)
    call histadd(':', "echo '39'")
    wviminfo Xviminfo
!   
    call histdel(':')
    rviminfo Xviminfo
    call assert_equal("echo '39'", histget(':', -1))
--- 301,307 ----
    call test_settime(39)
    call histadd(':', "echo '39'")
    wviminfo Xviminfo
! 
    call histdel(':')
    rviminfo Xviminfo
    call assert_equal("echo '39'", histget(':', -1))
***************
*** 560,566 ****
    sp Xviminfo
    call assert_equal('latin1', &fenc)
    close
!   
    call histdel(':')
    rviminfo Xviminfo
    call assert_equal("echo 'é'", histget(':', -1))
--- 560,566 ----
    sp Xviminfo
    call assert_equal('latin1', &fenc)
    close
! 
    call histdel(':')
    rviminfo Xviminfo
    call assert_equal("echo 'é'", histget(':', -1))
*** ../vim-9.0.1256/src/testdir/test_virtualedit.vim    2023-01-28 
16:37:33.898559056 +0000
--- src/testdir/test_virtualedit.vim    2023-01-28 19:12:31.529691648 +0000
***************
*** 585,598 ****
    set virtualedit&
  endfunc
  
! " this was replacing the NUL at the end of the line 
  func Test_virtualedit_replace_after_tab()
    new
    s/\v/       0
    set ve=all
    let @" = ''
    sil! norm vPvr0
!   
    call assert_equal("\t0", getline(1))
    set ve&
    bwipe!
--- 585,598 ----
    set virtualedit&
  endfunc
  
! " this was replacing the NUL at the end of the line
  func Test_virtualedit_replace_after_tab()
    new
    s/\v/       0
    set ve=all
    let @" = ''
    sil! norm vPvr0
! 
    call assert_equal("\t0", getline(1))
    set ve&
    bwipe!
*** ../vim-9.0.1256/src/testdir/test_visual.vim 2023-01-10 17:29:24.916481478 
+0000
--- src/testdir/test_visual.vim 2023-01-28 19:13:17.589673503 +0000
***************
*** 1167,1174 ****
  func Test_visual_put_in_block_using_zp()
    new
    " paste using zP
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
!     \ '/subdir', 
      \ '/longsubdir',
      \ '/longlongsubdir'])
    exe "normal! 5G\<c-v>2j$y"
--- 1167,1174 ----
  func Test_visual_put_in_block_using_zp()
    new
    " paste using zP
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
!     \ '/subdir',
      \ '/longsubdir',
      \ '/longlongsubdir'])
    exe "normal! 5G\<c-v>2j$y"
***************
*** 1176,1183 ****
    call assert_equal(['/path/subdir;text', '/path/longsubdir;text', 
'/path/longlongsubdir;text'], getline(1, 3))
    %d
    " paste using zP
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
!     \ '/subdir', 
      \ '/longsubdir',
      \ '/longlongsubdir'])
    exe "normal! 5G\<c-v>2j$y"
--- 1176,1183 ----
    call assert_equal(['/path/subdir;text', '/path/longsubdir;text', 
'/path/longlongsubdir;text'], getline(1, 3))
    %d
    " paste using zP
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
!     \ '/subdir',
      \ '/longsubdir',
      \ '/longlongsubdir'])
    exe "normal! 5G\<c-v>2j$y"
***************
*** 1190,1196 ****
    new
  
    " Test 1) Paste using zp - after the cursor without trailing spaces
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
--- 1190,1196 ----
    new
  
    " Test 1) Paste using zp - after the cursor without trailing spaces
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
***************
*** 1200,1206 ****
  
    " Test 2) Paste using zP - in front of the cursor without trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
--- 1200,1206 ----
  
    " Test 2) Paste using zP - in front of the cursor without trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
***************
*** 1210,1216 ****
  
    " Test 3) Paste using p - with trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
--- 1210,1216 ----
  
    " Test 3) Paste using p - with trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
***************
*** 1220,1226 ****
  
    " Test 4) Paste using P - with trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
--- 1220,1226 ----
  
    " Test 4) Paste using P - with trailing spaces
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
      \ 'texttext  /subdir           columntext',
                \ 'texttext  /longsubdir       columntext',
      \ 'texttext  /longlongsubdir   columntext'])
***************
*** 1230,1236 ****
  
    " Test 5) Yank with spaces inside the block
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '', 
      \ 'texttext  /sub    dir/           columntext',
      \ 'texttext  /lon    gsubdir/       columntext',
      \ 'texttext  /lon    glongsubdir/   columntext'])
--- 1230,1236 ----
  
    " Test 5) Yank with spaces inside the block
    %d
!   call setline(1, ['/path;text', '/path;text', '/path;text', '',
      \ 'texttext  /sub    dir/           columntext',
      \ 'texttext  /lon    gsubdir/       columntext',
      \ 'texttext  /lon    glongsubdir/   columntext'])
*** ../vim-9.0.1256/src/testdir/test_winbuf_close.vim   2022-10-15 
22:06:02.730483280 +0100
--- src/testdir/test_winbuf_close.vim   2023-01-28 19:15:50.109642342 +0000
***************
*** 219,225 ****
    execute "normal \<c-w>b"
    let h = winheight(0)
    let w = win_getid()
!   new 
    q
    call assert_equal(h, winheight(0), "Window height does not match eight 
before opening and closing another window")
    call assert_equal(w, win_getid(), "Did not return to original window after 
opening and closing a window")
--- 219,225 ----
    execute "normal \<c-w>b"
    let h = winheight(0)
    let w = win_getid()
!   new
    q
    call assert_equal(h, winheight(0), "Window height does not match eight 
before opening and closing another window")
    call assert_equal(w, win_getid(), "Did not return to original window after 
opening and closing a window")
*** ../vim-9.0.1256/src/testdir/test_xxd.vim    2022-10-15 22:06:02.734483275 
+0100
--- src/testdir/test_xxd.vim    2023-01-28 19:16:15.529655699 +0000
***************
*** 232,238 ****
        };
        unsigned int varName_len = 11;
      [CODE]
!   
      call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
    endfor
  
--- 232,238 ----
        };
        unsigned int varName_len = 11;
      [CODE]
! 
      call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
    endfor
  
***************
*** 289,295 ****
    exe cmd1
    exe cmd2
    call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 46 46                 
   ::EE::::FF'], readfile('Xxxdout'))
!   
    call writefile(["2: 41 41", "08: 42 42"], 'Xxxdin')
    call writefile(['::::::::'], 'Xxxdfile')
    exe cmd1
--- 289,295 ----
    exe cmd1
    exe cmd2
    call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 46 46                 
   ::EE::::FF'], readfile('Xxxdout'))
! 
    call writefile(["2: 41 41", "08: 42 42"], 'Xxxdin')
    call writefile(['::::::::'], 'Xxxdfile')
    exe cmd1
***************
*** 305,311 ****
    exe cmd1
    exe cmd2
    call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 42 44 46 46           
   ::EE::::BDFF'], readfile('Xxxdout'))
!   
    call delete('Xxxdout')
  endfunc
  
--- 305,311 ----
    exe cmd1
    exe cmd2
    call assert_equal(['00000000: 3a 3a 45 45 3a 3a 3a 3a 42 44 46 46           
   ::EE::::BDFF'], readfile('Xxxdout'))
! 
    call delete('Xxxdout')
  endfunc
  
*** ../vim-9.0.1256/src/version.c       2023-01-28 18:05:35.484642913 +0000
--- src/version.c       2023-01-28 19:17:27.413688630 +0000
***************
*** 697,698 ****
--- 697,700 ----
  {   /* Add new patch number below this line */
+ /**/
+     1257,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
59. Your wife says communication is important in a marriage...so you buy
    another computer and install a second phone line so the two of you can
    chat.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            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/20230128191936.F40CF1C0559%40moolenaar.net.

Raspunde prin e-mail lui