mirror of
https://github.com/vim/vim
synced 2025-07-15 16:51:57 +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.
|
# exit with an error code and list the missing entries.
|
||||||
make -f ci/unlisted.make
|
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
|
- run: sudo dpkg --add-architecture i386
|
||||||
if: matrix.architecture == 'i386'
|
if: matrix.architecture == 'i386'
|
||||||
|
|
||||||
|
2
Filelist
2
Filelist
@ -1148,6 +1148,8 @@ IGNORE = \
|
|||||||
.github/workflows/label.yml \
|
.github/workflows/label.yml \
|
||||||
SECURITY.md \
|
SECURITY.md \
|
||||||
ci/unlisted.make \
|
ci/unlisted.make \
|
||||||
|
ci/hlgroups.make \
|
||||||
|
ci/hlgroups.ignore \
|
||||||
src/libvterm/CODE-MAP \
|
src/libvterm/CODE-MAP \
|
||||||
runtime/syntax/testdir/input/html_html \
|
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; \
|
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:
|
# READMEdir to the root, so add those files in their Git-tracked location:
|
||||||
all_patterns := $(all_patterns) \
|
all_patterns := $(all_patterns) \
|
||||||
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
|
$(foreach readme, $(IN_README_DIR), READMEdir/$(readme))
|
||||||
|
Reference in New Issue
Block a user