Mercurial > vim
changeset 34278:e67eafbceca9
runtime(colors): color names in the v:colornames dict should be lower cased
Commit: https://github.com/vim/vim/commit/0f4054feb66ea55414f97add63b3070d7d7b5295
Author: Christian Brabandt <cb@256bit.org>
Date: Mon Feb 5 10:30:01 2024 +0100
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 05 Feb 2024 10:45:05 +0100 |
parents | 0386bb1f6e2f |
children | 7f84a834055a |
files | runtime/colors/lists/csscolors.vim runtime/colors/lists/default.vim runtime/doc/eval.txt runtime/doc/syntax.txt |
diffstat | 4 files changed, 35 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/colors/lists/csscolors.vim +++ b/runtime/colors/lists/csscolors.vim @@ -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
--- a/runtime/colors/lists/default.vim +++ b/runtime/colors/lists/default.vim @@ -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
--- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 9.1. Last change: 2024 Jan 14 +*eval.txt* For Vim version 9.1. Last change: 2024 Feb 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2005,9 +2005,14 @@ v:collate The current locale setting for *v:colornames* v:colornames A dictionary that maps color names to hex color strings. These color names can be used with the |highlight-guifg|, - |highlight-guibg|, and |highlight-guisp| parameters. Updating - an entry in v:colornames has no immediate effect on the syntax - highlighting. The highlight commands (probably in a + |highlight-guibg|, and |highlight-guisp| parameters. + + The key values in the dictionary (the color names) should be + lower cased, because Vim looks up a color by its lower case + name. + + Updating an entry in v:colornames has no immediate effect on + the syntax highlighting. The highlight commands (probably in a colorscheme script) need to be re-evaluated in order to use the updated color values. For example: >
--- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2024 Jan 24 +*syntax.txt* For Vim version 9.1. Last change: 2024 Feb 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5265,7 +5265,8 @@ ctermul={color-nr} *highlight-ctermul "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use a number instead of a color name. - The case of the color names is ignored. + The case of the color names is ignored, however Vim will use lower + case color names when reading from the |v:colornames| dictionary. Note that for 16 color ansi style terminals (including xterms), the numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue is 12, DarkGray is 8 etc. @@ -5384,8 +5385,8 @@ guisp={color-name} *highlight-guisp* :highlight Comment guifg=#11f0c3 guibg=#ff00ff < If you are authoring a color scheme and use the same hexadecimal value - repeatedly, you can define a name for it in |v:colornames|. For - example: > + repeatedly, you can define a (lower case) name for it in |v:colornames|. + For example: > # provide a default value for this color but allow the user to # override it.