0
0
mirror of https://github.com/vim/vim.git synced 2025-10-03 05:14:07 -04:00

patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script

Problem:    Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script.
Solution:   Do not restore 'cpo' at the end of the main .vimrc.
This commit is contained in:
Bram Moolenaar
2021-12-26 12:07:30 +00:00
parent 8bb65f230d
commit 71eb3ad579
6 changed files with 68 additions and 3 deletions

View File

@@ -4270,18 +4270,64 @@ def Test_restoring_cpo()
delete('Xclose')
delete('Xdone')
writefile(['vim9script'], 'XanotherScript')
writefile(['vim9script', 'g:cpoval = &cpo'], 'XanotherScript')
set cpo=aABceFsMny>
edit XanotherScript
so %
assert_equal('aABceFsMny>', &cpo)
assert_equal('aABceFs', g:cpoval)
:1del
setline(1, 'let g:cpoval = &cpo')
w
so %
assert_equal('aABceFsMny>', &cpo)
assert_equal('aABceFsMny>', g:cpoval)
delete('XanotherScript')
set cpo&vim
unlet g:cpoval
if has('unix')
# 'cpo' is not restored in main vimrc
var save_HOME = $HOME
$HOME = getcwd() .. '/Xhome'
mkdir('Xhome')
var lines =<< trim END
vim9script
writefile(['before: ' .. &cpo], 'Xresult')
set cpo+=M
writefile(['after: ' .. &cpo], 'Xresult', 'a')
END
writefile(lines, 'Xhome/.vimrc')
lines =<< trim END
call writefile(['later: ' .. &cpo], 'Xresult', 'a')
END
writefile(lines, 'Xlegacy')
lines =<< trim END
vim9script
call writefile(['vim9: ' .. &cpo], 'Xresult', 'a')
qa
END
writefile(lines, 'Xvim9')
var cmd = GetVimCommand() .. " -S Xlegacy -S Xvim9"
cmd = substitute(cmd, '-u NONE', '', '')
exe "silent !" .. cmd
assert_equal([
'before: aABceFs',
'after: aABceFsM',
'later: aABceFsM',
'vim9: aABceFs'], readfile('Xresult'))
$HOME = save_HOME
delete('Xhome', 'rf')
delete('Xlegacy')
delete('Xvim9')
delete('Xresult')
endif
enddef
" Use :function so we can use Check commands