mirror of
https://github.com/neovim/neovim.git
synced 2025-10-03 16:36:30 +00:00
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:
@@ -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
|
||||
|
@@ -382,19 +382,35 @@ func Test_modeline_nowrap_lcs_extends()
|
||||
\ 'ccc evil',
|
||||
\ 'ddd vim: nowrap',
|
||||
\ ], 'Xmodeline_nowrap', 'D')
|
||||
call NewWindow(10, 20)
|
||||
set noequalalways
|
||||
11new | 20vsplit
|
||||
|
||||
func Check_modeline_nowrap(expect_insecure, expect_secure, set_cmd)
|
||||
edit Xmodeline_nowrap
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
|
||||
5split
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
call assert_equal(a:expect_insecure, ScreenLines([7, 11], 20))
|
||||
|
||||
exe a:set_cmd 'nowrap'
|
||||
call assert_equal(a:expect_secure, ScreenLines([1, 5], 20))
|
||||
call assert_equal(a:expect_insecure, ScreenLines([7, 11], 20))
|
||||
|
||||
close
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
|
||||
setglobal nowrap
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
setglobal wrap
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
|
||||
exe a:set_cmd 'nowrap'
|
||||
call assert_equal(a:expect_secure, ScreenLines([1, 5], 20))
|
||||
|
||||
exe 'sandbox' a:set_cmd 'nowrap'
|
||||
call assert_equal(a:expect_insecure, ScreenLines([1, 5], 20))
|
||||
|
||||
exe a:set_cmd 'nowrap'
|
||||
call assert_equal(a:expect_secure, ScreenLines([1, 5], 20))
|
||||
endfunc
|
||||
@@ -463,8 +479,28 @@ func Test_modeline_nowrap_lcs_extends()
|
||||
call Check_modeline_nowrap(expect_insecure, expect_secure, 'setlocal')
|
||||
call Check_modeline_nowrap(expect_insecure, expect_secure, 'set')
|
||||
|
||||
call CloseWindow()
|
||||
sandbox setglobal nowrap
|
||||
setglobal list listchars=eol:$
|
||||
setlocal bufhidden=wipe
|
||||
enew!
|
||||
call setline(1, ['aaa bbb'])
|
||||
call assert_equal(['aaa >'], ScreenLines(1, 20))
|
||||
setglobal nowrap
|
||||
call assert_equal(['aaa >'], ScreenLines(1, 20))
|
||||
setlocal nowrap
|
||||
call assert_equal(['aaa '], ScreenLines(1, 20))
|
||||
normal! 20zl
|
||||
call assert_equal([' bbb$ '], ScreenLines(1, 20))
|
||||
setlocal bufhidden=wipe
|
||||
enew!
|
||||
call setline(1, ['ccc ddd'])
|
||||
call assert_equal(['ccc '], ScreenLines(1, 20))
|
||||
normal! 20zl
|
||||
call assert_equal([' ddd$ '], ScreenLines(1, 20))
|
||||
|
||||
bwipe!
|
||||
delfunc Check_modeline_nowrap
|
||||
set equalalways&
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@@ -649,17 +649,31 @@ func Test_statusline_in_sandbox()
|
||||
endfunc
|
||||
|
||||
func Check_statusline_in_sandbox(set_cmd0, set_cmd1)
|
||||
new | only
|
||||
call writefile(['before'], 'Xsandboxstatusline_write', 'D')
|
||||
only
|
||||
11new | 20vsplit
|
||||
call setline(1, 'foo')
|
||||
windo setlocal statusline=SomethingElse
|
||||
wincmd t
|
||||
setlocal statusline=
|
||||
call writefile(['before'], 'Xsandboxstatusline_write', 'D')
|
||||
|
||||
exe 'sandbox' a:set_cmd0 'statusline=%!SandboxStatusLine()'
|
||||
call assert_equal('', &l:statusline)
|
||||
sandbox setlocal statusline=%!SandboxStatusLine()
|
||||
call assert_fails('redrawstatus', 'E48:')
|
||||
call assert_equal(['before'], readfile('Xsandboxstatusline_write'))
|
||||
wincmd b
|
||||
call assert_fails('redrawstatus!', 'E48:')
|
||||
call assert_equal(['before'], readfile('Xsandboxstatusline_write'))
|
||||
wincmd t
|
||||
|
||||
5split
|
||||
call assert_fails('redrawstatus!', 'E48:')
|
||||
call assert_equal(['before'], readfile('Xsandboxstatusline_write'))
|
||||
close
|
||||
|
||||
setlocal statusline=%!SandboxStatusLine() | redrawstatus
|
||||
call assert_equal('status line', Screenline(&lines - 1))
|
||||
call assert_equal('status line', Screenline(12))
|
||||
call assert_equal(['after'], readfile('Xsandboxstatusline_write'))
|
||||
|
||||
call writefile(['before'], 'Xsandboxstatusline_write')
|
||||
@@ -667,19 +681,25 @@ func Test_statusline_in_sandbox()
|
||||
call assert_fails('redrawstatus', 'E48:')
|
||||
call assert_equal(['before'], readfile('Xsandboxstatusline_write'))
|
||||
|
||||
exe a:set_cmd1 'statusline=%!SandboxStatusLine()' | redrawstatus
|
||||
5split
|
||||
call assert_fails('redrawstatus!', 'E48:')
|
||||
call assert_equal(['before'], readfile('Xsandboxstatusline_write'))
|
||||
|
||||
exe a:set_cmd1 'statusline=%!SandboxStatusLine()' | redrawstatus!
|
||||
call assert_equal('', &l:statusline)
|
||||
call assert_equal('status line', Screenline(&lines - 1))
|
||||
call assert_equal('status line', Screenline(6))
|
||||
call assert_equal('status line', Screenline(12))
|
||||
call assert_equal(['after'], readfile('Xsandboxstatusline_write'))
|
||||
bw!
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
set noequalalways
|
||||
call Check_statusline_in_sandbox('setglobal', 'setglobal')
|
||||
call Check_statusline_in_sandbox('setglobal', 'set')
|
||||
call Check_statusline_in_sandbox('set', 'setglobal')
|
||||
call Check_statusline_in_sandbox('set', 'set')
|
||||
|
||||
set statusline&
|
||||
set equalalways& statusline&
|
||||
delfunc SandboxStatusLine
|
||||
delfunc Check_statusline_in_sandbox
|
||||
endfunc
|
||||
|
Reference in New Issue
Block a user