patch 9.1.1150: :hi completion may complete to wrong value
Problem: :highlight auto-complettion has a minor bug where an existing
highlight group with a cterm color being unset would result in
it being auto-completed to -1 in cmdline which is invalid.
Solution: Correctly check for whether an int value is set to non-zero
before retrieving the existing value for auto-complete. Also
do this for attr/string values as they previously worked only
by accident (Yee Cheng Chin).
closes: #16726
Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 042710c..be4ae4e 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -488,14 +488,22 @@
" Test completing the current value
hi FooBar term=bold,underline cterm=undercurl ctermfg=lightgray ctermbg=12 ctermul=34
+ hi AlmostEmpty term=bold
call assert_equal('bold,underline', getcompletion('hi FooBar term=', 'cmdline')[0])
call assert_equal('undercurl', getcompletion('hi FooBar cterm=', 'cmdline')[0])
call assert_equal('7', getcompletion('hi FooBar ctermfg=', 'cmdline')[0])
call assert_equal('12', getcompletion('hi FooBar ctermbg=', 'cmdline')[0])
call assert_equal('34', getcompletion('hi FooBar ctermul=', 'cmdline')[0])
- " "bold,underline" is unique and creates an extra item. "undercurl" and
- " should be de-duplicated
+ " highlight group exists, but no value was set. Should not complete to
+ " existing value
+ call assert_equal('fg', getcompletion('hi AlmostEmpty ctermfg=', 'cmdline')[0])
+ call assert_equal('fg', getcompletion('hi AlmostEmpty ctermbg=', 'cmdline')[0])
+ call assert_equal('fg', getcompletion('hi AlmostEmpty ctermul=', 'cmdline')[0])
+ call assert_equal('bold', getcompletion('hi AlmostEmpty cterm=', 'cmdline')[0])
+
+ " "bold,underline" is unique and creates an extra item. "undercurl" isn't
+ " and should be de-duplicated.
call assert_equal(len(getcompletion('hi FooBar term=', 'cmdline')),
\ 1 + len(getcompletion('hi FooBar cterm=', 'cmdline')))
@@ -519,6 +527,13 @@
" Check that existing value is de-duplicated and doesn't show up later
call assert_equal(1, count(getcompletion('hi FooBar guibg=', 'cmdline'), 'brown1'))
+
+ " highlight group exists, but no value was set. Should not complete to
+ " existing value
+ call assert_equal('fg', getcompletion('hi AlmostEmpty guifg=', 'cmdline')[0])
+ call assert_equal('fg', getcompletion('hi AlmostEmpty guibg=', 'cmdline')[0])
+ call assert_equal('fg', getcompletion('hi AlmostEmpty guisp=', 'cmdline')[0])
+ call assert_equal('bold', getcompletion('hi AlmostEmpty gui=', 'cmdline')[0])
endif
" Test completing attributes