mirror of
https://github.com/vim/vim
synced 2025-07-15 08:41:54 +00:00
CI: add Makefile target to verify default highlighting groups are present
When adding new highlight groups, one needs to make sure to also add a "default link NewHlGroup ExistingHlGroup" in highlight.c code, so that when resetting a color scheme the old color won't be left behind. So add a Makefile in the 'ci' directory that verifies that all documented '*hl-<groupname>' from the documentation are either reflected in the source code, or belong to a list of 'known to be ignored' highlight groups and let that check run as part of the CI test suite. related: #16676 closes: #16678 Signed-off-by: Christ van Willegen <cvwillegen@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
41a6026f00
commit
6a15942bc2
7
.github/workflows/ci.yml
vendored
7
.github/workflows/ci.yml
vendored
@ -96,6 +96,13 @@ jobs:
|
||||
# exit with an error code and list the missing entries.
|
||||
make -f ci/unlisted.make
|
||||
|
||||
- name: Check hlgroups (are any new hlgroups added, but not handled in highlight.c)
|
||||
run: |
|
||||
# If any highlight groups have been documented, but not handled in
|
||||
# highlight.c, nor listed as 'intentionally left out' in hlgroups.ignore,
|
||||
# exit with an error code and list the missing entries.
|
||||
make -C ci -f hlgroups.make
|
||||
|
||||
- run: sudo dpkg --add-architecture i386
|
||||
if: matrix.architecture == 'i386'
|
||||
|
||||
|
2
Filelist
2
Filelist
@ -1148,6 +1148,8 @@ IGNORE = \
|
||||
.github/workflows/label.yml \
|
||||
SECURITY.md \
|
||||
ci/unlisted.make \
|
||||
ci/hlgroups.make \
|
||||
ci/hlgroups.ignore \
|
||||
src/libvterm/CODE-MAP \
|
||||
runtime/syntax/testdir/input/html_html \
|
||||
|
||||
|
66
ci/hlgroups.ignore
Normal file
66
ci/hlgroups.ignore
Normal file
@ -0,0 +1,66 @@
|
||||
ColorColumn
|
||||
ComplMatchIns
|
||||
Conceal
|
||||
Cursor
|
||||
CursorColumn
|
||||
CursorIM
|
||||
CursorLine
|
||||
CursorLineNr
|
||||
debugBreakpoint
|
||||
debugPC
|
||||
DiffAdd
|
||||
DiffChange
|
||||
DiffDelete
|
||||
DiffText
|
||||
Directory
|
||||
ErrorMsg
|
||||
FoldColumn
|
||||
Folded
|
||||
Ignore
|
||||
IncSearch
|
||||
lCursor
|
||||
LineNr
|
||||
LineNrAbove
|
||||
LineNrBelow
|
||||
MatchParen
|
||||
Menu
|
||||
ModeMsg
|
||||
MoreMsg
|
||||
MsgArea
|
||||
NonText
|
||||
Normal
|
||||
Pmenu
|
||||
PmenuSbar
|
||||
PmenuSel
|
||||
PmenuThumb
|
||||
Question
|
||||
Scrollbar
|
||||
Search
|
||||
SignColumn
|
||||
SpecialKey
|
||||
SpellBad
|
||||
SpellCap
|
||||
SpellLocal
|
||||
SpellRare
|
||||
StatusLine
|
||||
StatusLineNC
|
||||
StatusLineTerm
|
||||
StatusLineTermNC
|
||||
TabLine
|
||||
TabLineFill
|
||||
TabLineSel
|
||||
Terminal
|
||||
Title
|
||||
TOhtmlProgress
|
||||
TOhtml-progress-color
|
||||
ToolbarButton
|
||||
ToolbarLine
|
||||
Tooltip
|
||||
User1
|
||||
User1..9
|
||||
User9
|
||||
VertSplit
|
||||
Visual
|
||||
VisualNOS
|
||||
WarningMsg
|
||||
WildMenu
|
18
ci/hlgroups.make
Normal file
18
ci/hlgroups.make
Normal file
@ -0,0 +1,18 @@
|
||||
# vim: ft=make
|
||||
SHELL = /bin/bash
|
||||
|
||||
# Default target to actually run the comparison:
|
||||
.PHONY: check
|
||||
.INTERMEDIATE: hlgroups deflinks hlgroups.stripped
|
||||
|
||||
check: hlgroups.stripped deflinks
|
||||
diff hlgroups.stripped deflinks
|
||||
|
||||
hlgroups:
|
||||
grep '\*hl-' ../runtime/doc/*txt | sed -E -e 's/.*:<?\s*//' -e 's/hl-//g' -e 's/\*//g' -e 's/ /\n/g' | sort > hlgroups
|
||||
|
||||
deflinks: ../src/highlight.c
|
||||
grep '"default link' $< | sed 's/.*default link\s*\(.*\)\s.*/\1/' | sort > deflinks
|
||||
|
||||
hlgroups.stripped: hlgroups.ignore hlgroups
|
||||
grep -v -x -F -f hlgroups.ignore hlgroups > hlgroups.stripped
|
@ -21,7 +21,7 @@ $(eval all_patterns := $(shell \
|
||||
p; \
|
||||
}'))
|
||||
|
||||
# In Makefile's `prepeare` target, all the IN_README_DIR files are moved from
|
||||
# In Makefile's `prepare` target, all the IN_README_DIR files are moved from
|
||||
# READMEdir to the root, so add those files in their Git-tracked location:
|
||||
all_patterns := $(all_patterns) \
|
||||
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
|
||||
|
Reference in New Issue
Block a user