Patch 8.2.2185
Problem:    BufUnload is not triggered for the quickfix dummy buffer.
Solution:   Do trigger BufUnload. (Pontus Leitzler,closes #7518, closes #7517)
            Fix white space around "=".
Files:      src/quickfix.c, src/testdir/test_autocmd.vim


*** ../vim-8.2.2184/src/quickfix.c      2020-12-16 21:02:51.642934141 +0100
--- src/quickfix.c      2020-12-22 11:35:17.798616806 +0100
***************
*** 6513,6519 ****
        enter_cleanup(&cs);
  #endif
  
!       wipe_buffer(buf, FALSE);
  
  #if defined(FEAT_EVAL)
        // Restore the error/interrupt/exception state if not discarded by a
--- 6513,6519 ----
        enter_cleanup(&cs);
  #endif
  
!       wipe_buffer(buf, TRUE);
  
  #if defined(FEAT_EVAL)
        // Restore the error/interrupt/exception state if not discarded by a
*** ../vim-8.2.2184/src/testdir/test_autocmd.vim        2020-12-18 
19:49:52.345571854 +0100
--- src/testdir/test_autocmd.vim        2020-12-22 11:39:52.513652722 +0100
***************
*** 132,150 ****
      autocmd BufWipeout * call add(s:li, "bufwipeout")
    augroup END
  
!   let s:li=[]
    new
    setlocal bufhidden=
    bunload
    call assert_equal(["bufunload", "bufdelete"], s:li)
  
!   let s:li=[]
    new
    setlocal bufhidden=delete
    bunload
    call assert_equal(["bufunload", "bufdelete"], s:li)
  
!   let s:li=[]
    new
    setlocal bufhidden=unload
    bwipeout
--- 132,150 ----
      autocmd BufWipeout * call add(s:li, "bufwipeout")
    augroup END
  
!   let s:li = []
    new
    setlocal bufhidden=
    bunload
    call assert_equal(["bufunload", "bufdelete"], s:li)
  
!   let s:li = []
    new
    setlocal bufhidden=delete
    bunload
    call assert_equal(["bufunload", "bufdelete"], s:li)
  
!   let s:li = []
    new
    setlocal bufhidden=unload
    bwipeout
***************
*** 221,226 ****
--- 221,249 ----
    bwipe! a.txt
  endfunc
  
+ func Test_autocmd_dummy_wipeout()
+   " prepare files
+   call writefile([''], 'Xdummywipetest1.txt')
+   call writefile([''], 'Xdummywipetest2.txt')
+   augroup test_bufunload_group
+     autocmd!
+     autocmd BufUnload * call add(s:li, "bufunload")
+     autocmd BufDelete * call add(s:li, "bufdelete")
+     autocmd BufWipeout * call add(s:li, "bufwipeout")
+   augroup END
+ 
+   let s:li = []
+   split Xdummywipetest1.txt
+   silent! vimgrep /notmatched/ Xdummywipetest*
+   call assert_equal(["bufunload", "bufwipeout"], s:li)
+ 
+   bwipeout
+   call delete('Xdummywipetest1.txt')
+   call delete('Xdummywipetest2.txt')
+   au! test_bufunload_group
+   augroup! test_bufunload_group
+ endfunc
+ 
  func Test_win_tab_autocmd()
    let g:record = []
  
***************
*** 454,460 ****
    let content =<< trim [CODE]
      call test_override('ui_delay', 10)
      set nocp noswapfile
!     let v:swapchoice="e"
      augroup test_autocmd_sessionload
      autocmd!
      autocmd SessionLoadPost * exe bufnr("Xsomething") . "bw!"
--- 477,483 ----
    let content =<< trim [CODE]
      call test_override('ui_delay', 10)
      set nocp noswapfile
!     let v:swapchoice = "e"
      augroup test_autocmd_sessionload
      autocmd!
      autocmd SessionLoadPost * exe bufnr("Xsomething") . "bw!"
***************
*** 542,584 ****
    au OptionSet * :call s:AutoCommandOptionSet(expand("<amatch>"))
  
    " 1: Setting number option"
!   let g:options=[['number', 0, 0, 0, 1, 'global', 'set']]
    set nu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 2: Setting local number option"
!   let g:options=[['number', 1, 1, '', 0, 'local', 'setlocal']]
    setlocal nonu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 3: Setting global number option"
!   let g:options=[['number', 1, '', 1, 0, 'global', 'setglobal']]
    setglobal nonu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 4: Setting local autoindent option"
!   let g:options=[['autoindent', 0, 0, '', 1, 'local', 'setlocal']]
    setlocal ai
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 5: Setting global autoindent option"
!   let g:options=[['autoindent', 0, '', 0, 1, 'global', 'setglobal']]
    setglobal ai
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 6: Setting global autoindent option"
!   let g:options=[['autoindent', 1, 1, 1, 0, 'global', 'set']]
    set ai!
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 6a: Setting global autoindent option"
!   let g:options=[['autoindent', 1, 1, 0, 0, 'global', 'set']]
    noa setlocal ai
    noa setglobal noai
    set ai!
--- 565,607 ----
    au OptionSet * :call s:AutoCommandOptionSet(expand("<amatch>"))
  
    " 1: Setting number option"
!   let g:options = [['number', 0, 0, 0, 1, 'global', 'set']]
    set nu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 2: Setting local number option"
!   let g:options = [['number', 1, 1, '', 0, 'local', 'setlocal']]
    setlocal nonu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 3: Setting global number option"
!   let g:options = [['number', 1, '', 1, 0, 'global', 'setglobal']]
    setglobal nonu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 4: Setting local autoindent option"
!   let g:options = [['autoindent', 0, 0, '', 1, 'local', 'setlocal']]
    setlocal ai
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 5: Setting global autoindent option"
!   let g:options = [['autoindent', 0, '', 0, 1, 'global', 'setglobal']]
    setglobal ai
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 6: Setting global autoindent option"
!   let g:options = [['autoindent', 1, 1, 1, 0, 'global', 'set']]
    set ai!
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 6a: Setting global autoindent option"
!   let g:options = [['autoindent', 1, 1, 0, 0, 'global', 'set']]
    noa setlocal ai
    noa setglobal noai
    set ai!
***************
*** 587,641 ****
  
    " Should not print anything, use :noa
    " 7: don't trigger OptionSet"
!   let g:options=[['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']]
    noa set nonu
    call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 8: Setting several global list and number option"
!   let g:options=[['list', 0, 0, 0, 1, 'global', 'set'], ['number', 0, 0, 0, 
1, 'global', 'set']]
    set list nu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 9: don't trigger OptionSet"
!   let g:options=[['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']]
    noa set nolist nonu
    call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 10: Setting global acd"
!   let g:options=[['autochdir', 0, 0, '', 1, 'local', 'setlocal']]
    setlocal acd
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 11: Setting global autoread (also sets local value)"
!   let g:options=[['autoread', 0, 0, 0, 1, 'global', 'set']]
    set ar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 12: Setting local autoread"
!   let g:options=[['autoread', 1, 1, '', 1, 'local', 'setlocal']]
    setlocal ar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 13: Setting global autoread"
!   let g:options=[['autoread', 1, '', 1, 0, 'global', 'setglobal']]
    setglobal invar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 14: Setting option backspace through :let"
!   let g:options=[['backspace', '', '', '', 'eol,indent,start', 'global', 
'set']]
!   let &bs="eol,indent,start"
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 15: Setting option backspace through setbufvar()"
!   let g:options=[['backup', 0, 0, '', 1, 'local', 'setlocal']]
    " try twice, first time, shouldn't trigger because option name is invalid,
    " second time, it should trigger
    let bnum = bufnr('%')
--- 610,664 ----
  
    " Should not print anything, use :noa
    " 7: don't trigger OptionSet"
!   let g:options = [['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']]
    noa set nonu
    call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 8: Setting several global list and number option"
!   let g:options = [['list', 0, 0, 0, 1, 'global', 'set'], ['number', 0, 0, 0, 
1, 'global', 'set']]
    set list nu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 9: don't trigger OptionSet"
!   let g:options = [['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']]
    noa set nolist nonu
    call assert_equal([['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid'], ['invalid', 'invalid', 'invalid', 'invalid', 'invalid', 
'invalid', 'invalid']], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 10: Setting global acd"
!   let g:options = [['autochdir', 0, 0, '', 1, 'local', 'setlocal']]
    setlocal acd
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 11: Setting global autoread (also sets local value)"
!   let g:options = [['autoread', 0, 0, 0, 1, 'global', 'set']]
    set ar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 12: Setting local autoread"
!   let g:options = [['autoread', 1, 1, '', 1, 'local', 'setlocal']]
    setlocal ar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 13: Setting global autoread"
!   let g:options = [['autoread', 1, '', 1, 0, 'global', 'setglobal']]
    setglobal invar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 14: Setting option backspace through :let"
!   let g:options = [['backspace', '', '', '', 'eol,indent,start', 'global', 
'set']]
!   let &bs = "eol,indent,start"
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 15: Setting option backspace through setbufvar()"
!   let g:options = [['backup', 0, 0, '', 1, 'local', 'setlocal']]
    " try twice, first time, shouldn't trigger because option name is invalid,
    " second time, it should trigger
    let bnum = bufnr('%')
***************
*** 646,658 ****
    call assert_equal(g:opt[0], g:opt[1])
  
    " 16: Setting number option using setwinvar"
!   let g:options=[['number', 0, 0, '', 1, 'local', 'setlocal']]
    call setwinvar(0, '&number', 1)
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 17: Setting key option, shouldn't trigger"
!   let g:options=[['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 
'invalid4', 'invalid5']]
    setlocal key=blah
    setlocal key=
    call assert_equal([['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 
'invalid4', 'invalid5']], g:options)
--- 669,681 ----
    call assert_equal(g:opt[0], g:opt[1])
  
    " 16: Setting number option using setwinvar"
!   let g:options = [['number', 0, 0, '', 1, 'local', 'setlocal']]
    call setwinvar(0, '&number', 1)
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 17: Setting key option, shouldn't trigger"
!   let g:options = [['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 
'invalid4', 'invalid5']]
    setlocal key=blah
    setlocal key=
    call assert_equal([['key', 'invalid', 'invalid1', 'invalid2', 'invalid3', 
'invalid4', 'invalid5']], g:options)
***************
*** 661,679 ****
  
    " 18a: Setting string global option"
    let oldval = &backupext
!   let g:options=[['backupext', oldval, oldval, oldval, 'foo', 'global', 
'set']]
    set backupext=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 18b: Resetting string global option"
!   let g:options=[['backupext', 'foo', 'foo', 'foo', oldval, 'global', 'set']]
    set backupext&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 18c: Setting global string global option"
!   let g:options=[['backupext', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal backupext=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 684,702 ----
  
    " 18a: Setting string global option"
    let oldval = &backupext
!   let g:options = [['backupext', oldval, oldval, oldval, 'foo', 'global', 
'set']]
    set backupext=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 18b: Resetting string global option"
!   let g:options = [['backupext', 'foo', 'foo', 'foo', oldval, 'global', 
'set']]
    set backupext&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 18c: Setting global string global option"
!   let g:options = [['backupext', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal backupext=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 682,688 ****
    " As this is a global option this sets the global value even though
    " :setlocal is used!
    noa set backupext& " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['backupext', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal backupext=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 705,711 ----
    " As this is a global option this sets the global value even though
    " :setlocal is used!
    noa set backupext& " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['backupext', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal backupext=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 690,696 ****
    " 18e: Setting again string global option"
    noa setglobal backupext=ext_global " Reset global and local value (without 
triggering autocmd)
    noa setlocal backupext=ext_local " Sets the global(!) value!
!   let g:options=[['backupext', 'ext_local', 'ext_local', 'ext_local', 'fuu', 
'global', 'set']]
    set backupext=fuu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 713,719 ----
    " 18e: Setting again string global option"
    noa setglobal backupext=ext_global " Reset global and local value (without 
triggering autocmd)
    noa setlocal backupext=ext_local " Sets the global(!) value!
!   let g:options = [['backupext', 'ext_local', 'ext_local', 'ext_local', 
'fuu', 'global', 'set']]
    set backupext=fuu
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 698,722 ****
  
    " 19a: Setting string local-global (to buffer) option"
    let oldval = &tags
!   let g:options=[['tags', oldval, oldval, oldval, 'tagpath', 'global', 'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19b: Resetting string local-global (to buffer) option"
!   let g:options=[['tags', 'tagpath', 'tagpath', 'tagpath', oldval, 'global', 
'set']]
    set tags&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19c: Setting global string local-global (to buffer) option "
!   let g:options=[['tags', oldval, '', oldval, 'tagpath1', 'global', 
'setglobal']]
    setglobal tags=tagpath1
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19d: Setting local string local-global (to buffer) option"
!   let g:options=[['tags', 'tagpath1', 'tagpath1', '', 'tagpath2', 'local', 
'setlocal']]
    setlocal tags=tagpath2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 721,745 ----
  
    " 19a: Setting string local-global (to buffer) option"
    let oldval = &tags
!   let g:options = [['tags', oldval, oldval, oldval, 'tagpath', 'global', 
'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19b: Resetting string local-global (to buffer) option"
!   let g:options = [['tags', 'tagpath', 'tagpath', 'tagpath', oldval, 
'global', 'set']]
    set tags&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19c: Setting global string local-global (to buffer) option "
!   let g:options = [['tags', oldval, '', oldval, 'tagpath1', 'global', 
'setglobal']]
    setglobal tags=tagpath1
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 19d: Setting local string local-global (to buffer) option"
!   let g:options = [['tags', 'tagpath1', 'tagpath1', '', 'tagpath2', 'local', 
'setlocal']]
    setlocal tags=tagpath2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 726,732 ****
    " but the old local value for all other kinds of options.
    noa setglobal tags=tag_global " Reset global and local value (without 
triggering autocmd)
    noa setlocal tags=tag_local
!   let g:options=[['tags', 'tag_global', 'tag_local', 'tag_global', 'tagpath', 
'global', 'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 749,755 ----
    " but the old local value for all other kinds of options.
    noa setglobal tags=tag_global " Reset global and local value (without 
triggering autocmd)
    noa setlocal tags=tag_local
!   let g:options = [['tags', 'tag_global', 'tag_local', 'tag_global', 
'tagpath', 'global', 'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 736,742 ****
    " but the old local value for all other kinds of options.
    noa set tags=tag_global " Reset global and local value (without triggering 
autocmd)
    noa setlocal tags= " empty string
!   let g:options=[['tags', 'tag_global', '', 'tag_global', 'tagpath', 
'global', 'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 759,765 ----
    " but the old local value for all other kinds of options.
    noa set tags=tag_global " Reset global and local value (without triggering 
autocmd)
    noa setlocal tags= " empty string
!   let g:options = [['tags', 'tag_global', '', 'tag_global', 'tagpath', 
'global', 'set']]
    set tags=tagpath
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 744,769 ****
  
    " 20a: Setting string local (to buffer) option"
    let oldval = &spelllang
!   let g:options=[['spelllang', oldval, oldval, oldval, 'elvish,klingon', 
'global', 'set']]
    set spelllang=elvish,klingon
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20b: Resetting string local (to buffer) option"
!   let g:options=[['spelllang', 'elvish,klingon', 'elvish,klingon', 
'elvish,klingon', oldval, 'global', 'set']]
    set spelllang&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20c: Setting global string local (to buffer) option"
!   let g:options=[['spelllang', oldval, '', oldval, 'elvish', 'global', 
'setglobal']]
    setglobal spelllang=elvish
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20d: Setting local string local (to buffer) option"
    noa set spelllang& " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['spelllang', oldval, oldval, '', 'klingon', 'local', 
'setlocal']]
    setlocal spelllang=klingon
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 767,792 ----
  
    " 20a: Setting string local (to buffer) option"
    let oldval = &spelllang
!   let g:options = [['spelllang', oldval, oldval, oldval, 'elvish,klingon', 
'global', 'set']]
    set spelllang=elvish,klingon
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20b: Resetting string local (to buffer) option"
!   let g:options = [['spelllang', 'elvish,klingon', 'elvish,klingon', 
'elvish,klingon', oldval, 'global', 'set']]
    set spelllang&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20c: Setting global string local (to buffer) option"
!   let g:options = [['spelllang', oldval, '', oldval, 'elvish', 'global', 
'setglobal']]
    setglobal spelllang=elvish
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 20d: Setting local string local (to buffer) option"
    noa set spelllang& " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['spelllang', oldval, oldval, '', 'klingon', 'local', 
'setlocal']]
    setlocal spelllang=klingon
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 773,779 ****
    " but the old local value for all other kinds of options.
    noa setglobal spelllang=spellglobal " Reset global and local value (without 
triggering autocmd)
    noa setlocal spelllang=spelllocal
!   let g:options=[['spelllang', 'spelllocal', 'spelllocal', 'spellglobal', 
'foo', 'global', 'set']]
    set spelllang=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 796,802 ----
    " but the old local value for all other kinds of options.
    noa setglobal spelllang=spellglobal " Reset global and local value (without 
triggering autocmd)
    noa setlocal spelllang=spelllocal
!   let g:options = [['spelllang', 'spelllocal', 'spelllocal', 'spellglobal', 
'foo', 'global', 'set']]
    set spelllang=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 781,787 ****
  
    " 21a: Setting string local-global (to window) option"
    let oldval = &statusline
!   let g:options=[['statusline', oldval, oldval, oldval, 'foo', 'global', 
'set']]
    set statusline=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 804,810 ----
  
    " 21a: Setting string local-global (to window) option"
    let oldval = &statusline
!   let g:options = [['statusline', oldval, oldval, oldval, 'foo', 'global', 
'set']]
    set statusline=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 789,808 ****
    " 21b: Resetting string local-global (to window) option"
    " Note: v:option_old is the old global value for local-global string options
    " but the old local value for all other kinds of options.
!   let g:options=[['statusline', 'foo', 'foo', 'foo', oldval, 'global', 'set']]
    set statusline&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 21c: Setting global string local-global (to window) option"
!   let g:options=[['statusline', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal statusline=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 21d: Setting local string local-global (to window) option"
    noa set statusline& " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['statusline', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal statusline=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 812,831 ----
    " 21b: Resetting string local-global (to window) option"
    " Note: v:option_old is the old global value for local-global string options
    " but the old local value for all other kinds of options.
!   let g:options = [['statusline', 'foo', 'foo', 'foo', oldval, 'global', 
'set']]
    set statusline&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 21c: Setting global string local-global (to window) option"
!   let g:options = [['statusline', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal statusline=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 21d: Setting local string local-global (to window) option"
    noa set statusline& " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['statusline', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal statusline=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 812,818 ****
    " but the old local value for all other kinds of options.
    noa setglobal statusline=bar " Reset global and local value (without 
triggering autocmd)
    noa setlocal statusline=baz
!   let g:options=[['statusline', 'bar', 'baz', 'bar', 'foo', 'global', 'set']]
    set statusline=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 835,841 ----
    " but the old local value for all other kinds of options.
    noa setglobal statusline=bar " Reset global and local value (without 
triggering autocmd)
    noa setlocal statusline=baz
!   let g:options = [['statusline', 'bar', 'baz', 'bar', 'foo', 'global', 
'set']]
    set statusline=foo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 820,845 ****
  
    " 22a: Setting string local (to window) option"
    let oldval = &foldignore
!   let g:options=[['foldignore', oldval, oldval, oldval, 'fo', 'global', 
'set']]
    set foldignore=fo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22b: Resetting string local (to window) option"
!   let g:options=[['foldignore', 'fo', 'fo', 'fo', oldval, 'global', 'set']]
    set foldignore&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22c: Setting global string local (to window) option"
!   let g:options=[['foldignore', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal foldignore=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22d: Setting local string local (to window) option"
    noa set foldignore& " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['foldignore', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal foldignore=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 843,868 ----
  
    " 22a: Setting string local (to window) option"
    let oldval = &foldignore
!   let g:options = [['foldignore', oldval, oldval, oldval, 'fo', 'global', 
'set']]
    set foldignore=fo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22b: Resetting string local (to window) option"
!   let g:options = [['foldignore', 'fo', 'fo', 'fo', oldval, 'global', 'set']]
    set foldignore&
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22c: Setting global string local (to window) option"
!   let g:options = [['foldignore', oldval, '', oldval, 'bar', 'global', 
'setglobal']]
    setglobal foldignore=bar
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 22d: Setting local string local (to window) option"
    noa set foldignore& " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['foldignore', oldval, oldval, '', 'baz', 'local', 
'setlocal']]
    setlocal foldignore=baz
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 847,853 ****
    " 22e: Setting again string local (to window) option"
    noa setglobal foldignore=glob " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldignore=loc
!   let g:options=[['foldignore', 'loc', 'loc', 'glob', 'fo', 'global', 'set']]
    set foldignore=fo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 870,876 ----
    " 22e: Setting again string local (to window) option"
    noa setglobal foldignore=glob " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldignore=loc
!   let g:options = [['foldignore', 'loc', 'loc', 'glob', 'fo', 'global', 
'set']]
    set foldignore=fo
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 856,862 ****
    " 23a: Setting global number local option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options=[['cmdheight', '1', '', '1', '2', 'global', 'setglobal']]
    setglobal cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 879,885 ----
    " 23a: Setting global number local option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options = [['cmdheight', '1', '', '1', '2', 'global', 'setglobal']]
    setglobal cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 864,870 ****
    " 23b: Setting local number global option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options=[['cmdheight', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 887,893 ----
    " 23b: Setting local number global option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options = [['cmdheight', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 872,885 ****
    " 23c: Setting again number global option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options=[['cmdheight', '1', '1', '1', '2', 'global', 'set']]
    set cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 23d: Setting again number global option"
    noa set cmdheight=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['cmdheight', '8', '8', '8', '2', 'global', 'set']]
    set cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 895,908 ----
    " 23c: Setting again number global option"
    noa setglobal cmdheight=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal cmdheight=1 " Sets the global(!) value!
!   let g:options = [['cmdheight', '1', '1', '1', '2', 'global', 'set']]
    set cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 23d: Setting again number global option"
    noa set cmdheight=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['cmdheight', '8', '8', '8', '2', 'global', 'set']]
    set cmdheight=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 888,894 ****
    " 24a: Setting global number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options=[['undolevels', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 911,917 ----
    " 24a: Setting global number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options = [['undolevels', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 896,902 ****
    " 24b: Setting local number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options=[['undolevels', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 919,925 ----
    " 24b: Setting local number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options = [['undolevels', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 904,917 ****
    " 24c: Setting again number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options=[['undolevels', '1', '1', '8', '2', 'global', 'set']]
    set undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 24d: Setting again global number global-local (to buffer) option"
    noa set undolevels=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['undolevels', '8', '8', '8', '2', 'global', 'set']]
    set undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 927,940 ----
    " 24c: Setting again number global-local (to buffer) option"
    noa setglobal undolevels=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal undolevels=1
!   let g:options = [['undolevels', '1', '1', '8', '2', 'global', 'set']]
    set undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 24d: Setting again global number global-local (to buffer) option"
    noa set undolevels=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['undolevels', '8', '8', '8', '2', 'global', 'set']]
    set undolevels=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 920,926 ****
    " 25a: Setting global number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options=[['wrapmargin', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 943,949 ----
    " 25a: Setting global number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options = [['wrapmargin', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 928,934 ****
    " 25b: Setting local number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options=[['wrapmargin', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 951,957 ----
    " 25b: Setting local number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options = [['wrapmargin', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 936,949 ****
    " 25c: Setting again number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options=[['wrapmargin', '1', '1', '8', '2', 'global', 'set']]
    set wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 25d: Setting again global number local (to buffer) option"
    noa set wrapmargin=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['wrapmargin', '8', '8', '8', '2', 'global', 'set']]
    set wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 959,972 ----
    " 25c: Setting again number local (to buffer) option"
    noa setglobal wrapmargin=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal wrapmargin=1
!   let g:options = [['wrapmargin', '1', '1', '8', '2', 'global', 'set']]
    set wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 25d: Setting again global number local (to buffer) option"
    noa set wrapmargin=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['wrapmargin', '8', '8', '8', '2', 'global', 'set']]
    set wrapmargin=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 956,962 ****
    " 27a: Setting global number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options=[['foldcolumn', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 979,985 ----
    " 27a: Setting global number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options = [['foldcolumn', '8', '', '8', '2', 'global', 'setglobal']]
    setglobal foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 964,970 ****
    " 27b: Setting local number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options=[['foldcolumn', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 987,993 ----
    " 27b: Setting local number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options = [['foldcolumn', '1', '1', '', '2', 'local', 'setlocal']]
    setlocal foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 972,985 ****
    " 27c: Setting again number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options=[['foldcolumn', '1', '1', '8', '2', 'global', 'set']]
    set foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 27d: Ssettin again global number local (to window) option"
    noa set foldcolumn=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['foldcolumn', '8', '8', '8', '2', 'global', 'set']]
    set foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 995,1008 ----
    " 27c: Setting again number local (to window) option"
    noa setglobal foldcolumn=8 " Reset global and local value (without 
triggering autocmd)
    noa setlocal foldcolumn=1
!   let g:options = [['foldcolumn', '1', '1', '8', '2', 'global', 'set']]
    set foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 27d: Ssettin again global number local (to window) option"
    noa set foldcolumn=8 " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['foldcolumn', '8', '8', '8', '2', 'global', 'set']]
    set foldcolumn=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 988,994 ****
    " 28a: Setting global boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options=[['wrapscan', '1', '', '1', '0', 'global', 'setglobal']]
    setglobal nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1011,1017 ----
    " 28a: Setting global boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options = [['wrapscan', '1', '', '1', '0', 'global', 'setglobal']]
    setglobal nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 996,1002 ****
    " 28b: Setting local boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options=[['wrapscan', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1019,1025 ----
    " 28b: Setting local boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options = [['wrapscan', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1004,1017 ****
    " 28c: Setting again boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options=[['wrapscan', '1', '1', '1', '0', 'global', 'set']]
    set nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 28d: Setting again global boolean global option"
    noa set nowrapscan " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['wrapscan', '0', '0', '0', '1', 'global', 'set']]
    set wrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1027,1040 ----
    " 28c: Setting again boolean global option"
    noa setglobal nowrapscan " Reset global and local value (without triggering 
autocmd)
    noa setlocal wrapscan " Sets the global(!) value!
!   let g:options = [['wrapscan', '1', '1', '1', '0', 'global', 'set']]
    set nowrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 28d: Setting again global boolean global option"
    noa set nowrapscan " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['wrapscan', '0', '0', '0', '1', 'global', 'set']]
    set wrapscan
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1020,1026 ****
    " 29a: Setting global boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options=[['autoread', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1043,1049 ----
    " 29a: Setting global boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options = [['autoread', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1028,1034 ****
    " 29b: Setting local boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options=[['autoread', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal noautoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1051,1057 ----
    " 29b: Setting local boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options = [['autoread', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal noautoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1036,1049 ****
    " 29c: Setting again boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options=[['autoread', '1', '1', '0', '1', 'global', 'set']]
    set autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 29d: Setting again global boolean global-local (to buffer) option"
    noa set noautoread " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['autoread', '0', '0', '0', '1', 'global', 'set']]
    set autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1059,1072 ----
    " 29c: Setting again boolean global-local (to buffer) option"
    noa setglobal noautoread " Reset global and local value (without triggering 
autocmd)
    noa setlocal autoread
!   let g:options = [['autoread', '1', '1', '0', '1', 'global', 'set']]
    set autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 29d: Setting again global boolean global-local (to buffer) option"
    noa set noautoread " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['autoread', '0', '0', '0', '1', 'global', 'set']]
    set autoread
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1052,1058 ****
    " 30a: Setting global boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options=[['cindent', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1075,1081 ----
    " 30a: Setting global boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options = [['cindent', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1060,1066 ****
    " 30b: Setting local boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options=[['cindent', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nocindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1083,1089 ----
    " 30b: Setting local boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options = [['cindent', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nocindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1068,1081 ****
    " 30c: Setting again boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options=[['cindent', '1', '1', '0', '1', 'global', 'set']]
    set cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 30d: Setting again global boolean local (to buffer) option"
    noa set nocindent " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['cindent', '0', '0', '0', '1', 'global', 'set']]
    set cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1091,1104 ----
    " 30c: Setting again boolean local (to buffer) option"
    noa setglobal nocindent " Reset global and local value (without triggering 
autocmd)
    noa setlocal cindent
!   let g:options = [['cindent', '1', '1', '0', '1', 'global', 'set']]
    set cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 30d: Setting again global boolean local (to buffer) option"
    noa set nocindent " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['cindent', '0', '0', '0', '1', 'global', 'set']]
    set cindent
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1088,1094 ****
    " 32a: Setting global boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options=[['cursorcolumn', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1111,1117 ----
    " 32a: Setting global boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options = [['cursorcolumn', '0', '', '0', '1', 'global', 'setglobal']]
    setglobal cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1096,1102 ****
    " 32b: Setting local boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options=[['cursorcolumn', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nocursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1119,1125 ----
    " 32b: Setting local boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options = [['cursorcolumn', '1', '1', '', '0', 'local', 'setlocal']]
    setlocal nocursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1104,1117 ****
    " 32c: Setting again boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options=[['cursorcolumn', '1', '1', '0', '1', 'global', 'set']]
    set cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 32d: Setting again global boolean local (to window) option"
    noa set nocursorcolumn " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['cursorcolumn', '0', '0', '0', '1', 'global', 'set']]
    set cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1127,1140 ----
    " 32c: Setting again boolean local (to window) option"
    noa setglobal nocursorcolumn " Reset global and local value (without 
triggering autocmd)
    noa setlocal cursorcolumn
!   let g:options = [['cursorcolumn', '1', '1', '0', '1', 'global', 'set']]
    set cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
  
    " 32d: Setting again global boolean local (to window) option"
    noa set nocursorcolumn " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['cursorcolumn', '0', '0', '0', '1', 'global', 'set']]
    set cursorcolumn
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1119,1125 ****
  
    " 33: Test autocommands when an option value is converted internally.
    noa set backspace=1 " Reset global and local value (without triggering 
autocmd)
!   let g:options=[['backspace', 'indent,eol', 'indent,eol', 'indent,eol', '2', 
'global', 'set']]
    set backspace=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
--- 1142,1148 ----
  
    " 33: Test autocommands when an option value is converted internally.
    noa set backspace=1 " Reset global and local value (without triggering 
autocmd)
!   let g:options = [['backspace', 'indent,eol', 'indent,eol', 'indent,eol', 
'2', 'global', 'set']]
    set backspace=2
    call assert_equal([], g:options)
    call assert_equal(g:opt[0], g:opt[1])
***************
*** 1139,1145 ****
    call test_override('starting', 1)
    " 18: Changing an option when entering diff mode
    new
!   au OptionSet diff :let &l:cul=v:option_new
  
    call setline(1, ['buffer 1', 'line2', 'line3', 'line4'])
    call assert_equal(0, &l:cul)
--- 1162,1168 ----
    call test_override('starting', 1)
    " 18: Changing an option when entering diff mode
    new
!   au OptionSet diff :let &l:cul = v:option_new
  
    call setline(1, ['buffer 1', 'line2', 'line3', 'line4'])
    call assert_equal(0, &l:cul)
***************
*** 2355,2361 ****
      autocmd CmdWinEnter * quit
      let winnr = winnr('$')
    END
!   let filename='XCmdWinEnter'
    call writefile(lines, filename)
    let buf = RunVimInTerminal('-S '.filename, #{rows: 6})
  
--- 2378,2384 ----
      autocmd CmdWinEnter * quit
      let winnr = winnr('$')
    END
!   let filename = 'XCmdWinEnter'
    call writefile(lines, filename)
    let buf = RunVimInTerminal('-S '.filename, #{rows: 6})
  

-- 
The process for understanding customers primarily involves sitting around with
other marketing people and talking about what you would to if you were dumb
enough to be a customer.
                                (Scott Adams - The Dilbert principle)

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

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

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

Raspunde prin e-mail lui