mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 9.1.0832: :set doesn't work for 'cot' and 'bkc' after :setlocal
Problem: :set doesn't work for 'cot' and 'bkc' after :setlocal. Solution: clear the local flags when using :set (zeertzjq). closes: #15981 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
6081c17890
commit
46dcd84d24
@@ -1146,6 +1146,9 @@ did_set_backupcopy(optset_T *args)
|
||||
bkc = curbuf->b_p_bkc;
|
||||
flags = &curbuf->b_bkc_flags;
|
||||
}
|
||||
else if (!(args->os_flags & OPT_GLOBAL))
|
||||
// When using :set, clear the local flags.
|
||||
curbuf->b_bkc_flags = 0;
|
||||
|
||||
if ((args->os_flags & OPT_LOCAL) && *bkc == NUL)
|
||||
// make the local value empty: use the global value
|
||||
@@ -1619,6 +1622,9 @@ did_set_completeopt(optset_T *args UNUSED)
|
||||
cot = curbuf->b_p_cot;
|
||||
flags = &curbuf->b_cot_flags;
|
||||
}
|
||||
else if (!(args->os_flags & OPT_GLOBAL))
|
||||
// When using :set, clear the local flags.
|
||||
curbuf->b_cot_flags = 0;
|
||||
|
||||
if (check_opt_strings(cot, p_cot_values, TRUE) != OK)
|
||||
return e_invalid_argument;
|
||||
|
@@ -875,6 +875,46 @@ func Test_completeopt_buffer_local()
|
||||
call assert_equal('menu', &completeopt)
|
||||
call assert_equal('menu', &g:completeopt)
|
||||
|
||||
new | only
|
||||
call setline(1, ['foofoo', 'foobar', 'foobaz', ''])
|
||||
set completeopt&
|
||||
setlocal completeopt=menu,fuzzy,noinsert
|
||||
setglobal completeopt=menu,longest
|
||||
call assert_equal('menu,fuzzy,noinsert', &completeopt)
|
||||
call assert_equal('menu,fuzzy,noinsert', &l:completeopt)
|
||||
call assert_equal('menu,longest', &g:completeopt)
|
||||
call feedkeys("Gccf\<C-X>\<C-N>bz\<C-Y>", 'tnix')
|
||||
call assert_equal('foobaz', getline('.'))
|
||||
setlocal bufhidden=wipe
|
||||
new | only!
|
||||
call setline(1, ['foofoo', 'foobar', 'foobaz', ''])
|
||||
call assert_equal('menu,longest', &completeopt)
|
||||
call assert_equal('menu,longest', &g:completeopt)
|
||||
call assert_equal('', &l:completeopt)
|
||||
call feedkeys("Gccf\<C-X>\<C-N>\<C-X>\<C-Z>", 'tnix')
|
||||
call assert_equal('foo', getline('.'))
|
||||
bwipe!
|
||||
|
||||
new | only
|
||||
call setline(1, ['foofoo', 'foobar', 'foobaz', ''])
|
||||
set completeopt&
|
||||
setlocal completeopt=menu,fuzzy,noinsert
|
||||
set completeopt=menu,longest
|
||||
call assert_equal('menu,longest', &completeopt)
|
||||
call assert_equal('menu,longest', &g:completeopt)
|
||||
call assert_equal('', &l:completeopt)
|
||||
call feedkeys("Gccf\<C-X>\<C-N>\<C-X>\<C-Z>", 'tnix')
|
||||
call assert_equal('foo', getline('.'))
|
||||
setlocal bufhidden=wipe
|
||||
new | only!
|
||||
call setline(1, ['foofoo', 'foobar', 'foobaz', ''])
|
||||
call assert_equal('menu,longest', &completeopt)
|
||||
call assert_equal('menu,longest', &g:completeopt)
|
||||
call assert_equal('', &l:completeopt)
|
||||
call feedkeys("Gccf\<C-X>\<C-N>\<C-X>\<C-Z>", 'tnix')
|
||||
call assert_equal('foo', getline('.'))
|
||||
bwipe!
|
||||
|
||||
set completeopt&
|
||||
endfunc
|
||||
|
||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
832,
|
||||
/**/
|
||||
831,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user