vim-patch:9.1.1808: Option insecure flags not copied when splitting window

Problem:  Option insecure flags not copied when splitting window.
Solution: Move window-local insecure flags to winopt_T and copy them
          properly (zeertzjq).

closes: vim/vim#18434

b3740f4b00
This commit is contained in:
zeertzjq
2025-09-30 06:37:23 +08:00
parent ff564237d2
commit 42f1864b62
5 changed files with 149 additions and 15 deletions

View File

@@ -1518,6 +1518,11 @@ func Test_foldtext_in_modeline()
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['before'], readfile('Xmodelinefoldtext_write'))
split
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['before'], readfile('Xmodelinefoldtext_write'))
close
setglobal foldtext=ModelineFoldText()
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['before'], readfile('Xmodelinefoldtext_write'))
@@ -1545,6 +1550,28 @@ func Test_foldtext_in_modeline()
call Check_foldtext_in_modeline('setlocal')
call Check_foldtext_in_modeline('set')
new Xa
sandbox setglobal foldenable foldtext=ModelineFoldText()
setlocal bufhidden=wipe
call writefile(['before'], 'Xmodelinefoldtext_write', 'D')
edit! Xb
call setline(1, ['func T()', ' let i = 1', 'endfunc']) | %fold
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['before'], readfile('Xmodelinefoldtext_write'))
setglobal foldtext=ModelineFoldText()
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['before'], readfile('Xmodelinefoldtext_write'))
setlocal foldtext=ModelineFoldText()
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['after'], readfile('Xmodelinefoldtext_write'))
setlocal bufhidden=wipe
call writefile(['before'], 'Xmodelinefoldtext_write', 'D')
edit! Xc
call setline(1, ['func T()', ' let i = 1', 'endfunc']) | %fold
call assert_equal('folded text', foldtextresult(1))
call assert_equal(['after'], readfile('Xmodelinefoldtext_write'))
bwipe!
set modeline& modelineexpr&
delfunc ModelineFoldText
delfunc Check_foldtext_in_modeline
@@ -1574,6 +1601,11 @@ func Test_foldexpr_in_modeline()
call assert_equal(2, foldlevel(3))
call assert_equal(['before'], readfile('Xmodelinefoldexpr_write'))
split
call assert_equal(2, foldlevel(3))
call assert_equal(['before'], readfile('Xmodelinefoldexpr_write'))
close
setglobal foldexpr=ModelineFoldExpr()
call assert_equal(2, foldlevel(3))
call assert_equal(['before'], readfile('Xmodelinefoldexpr_write'))
@@ -1601,6 +1633,28 @@ func Test_foldexpr_in_modeline()
call Check_foldexpr_in_modeline('setlocal')
call Check_foldexpr_in_modeline('set')
new Xa
sandbox setglobal foldenable foldmethod=expr foldexpr=ModelineFoldExpr()
setlocal bufhidden=wipe
call writefile(['before'], 'Xmodelinefoldexpr_write', 'D')
edit! Xb
call setline(1, lines[0:5])
call assert_equal(2, foldlevel(3))
call assert_equal(['before'], readfile('Xmodelinefoldexpr_write'))
setglobal foldexpr=ModelineFoldExpr()
call assert_equal(2, foldlevel(3))
call assert_equal(['before'], readfile('Xmodelinefoldexpr_write'))
setlocal foldexpr=ModelineFoldExpr()
call assert_equal(2, foldlevel(3))
call assert_equal(['after'], readfile('Xmodelinefoldexpr_write'))
setlocal bufhidden=wipe
call writefile(['before'], 'Xmodelinefoldexpr_write', 'D')
edit! Xc
call setline(1, lines[0:5])
call assert_equal(2, foldlevel(3))
call assert_equal(['after'], readfile('Xmodelinefoldexpr_write'))
bwipe!
set modeline& modelineexpr&
delfunc ModelineFoldExpr
delfunc Check_foldexpr_in_modeline