runtime(colors): color names in the v:colornames dict should be lower cased

Vim will lookup color names from the v:colornames dictionary by its
lower case color name. So when sourcing the v:colornames dictionary,
make sure to convert upper case color names to lower case.

Also, while at it, mention in the documentation, that the dictionary
should contain lower case names only.

fixes: #13976
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt
2024-02-05 10:30:01 +01:00
parent de7f5bde6c
commit 0f4054feb6
4 changed files with 35 additions and 9 deletions

View File

@ -4,6 +4,9 @@
" Similar in spirit to rgb.txt, this plugin establishes a human-friendly name
" for every color listed in the CSS standard:
"
" Note: the color names should be in lower case, because Vim will lookup the
" a color by its lower case name.
"
" https://www.w3.org/TR/css-color-3/
let s:keepcpo= &cpo
@ -26,7 +29,6 @@ call extend(v:colornames, {
\ 'css_blue': '#0000FF',
\ 'css_teal': '#008080',
\ 'css_aqua': '#00FFFF',
\
\ 'css_aliceblue': '#f0f8ff',
\ 'css_antiquewhite': '#faebd7',
\ 'css_aquamarine': '#7fffd4',
@ -160,6 +162,14 @@ call extend(v:colornames, {
\ 'css_yellowgreen': '#9acd32',
\ }, 'keep')
" all keys should be in lower case, convert keys that are not yet
for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'}))
call remove(v:colornames, key)
if !has_key(v:colornames, tolower(key))
call extend(v:colornames, {tolower(key): val}, 'keep')
endif
endfor
let &cpo= s:keepcpo
unlet s:keepcpo

View File

@ -6,6 +6,8 @@
" time the highlight command fails to recognize a gui color. You can override
" these colors by introducing a new colors/lists/default.vim file earlier in
" the runtimepath.
" Note: the color names should be in lower case, because Vim will lookup the
" a color by its lower case name.
" make sure line continuation works
let s:keepcpo = &cpo
@ -802,6 +804,14 @@ call extend(v:colornames, {
\ 'teal': '#008080'
\ }, 'keep')
" all keys should be in lower case, convert keys that are not yet
for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'}))
call remove(v:colornames, key)
if !has_key(v:colornames, tolower(key))
call extend(v:colornames, {tolower(key): val}, 'keep')
endif
endfor
let &cpo = s:keepcpo
unlet s:keepcpo