mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 17:36:29 +00:00
feat(highlight)!: error on invalid names and allow '.' and '@'
Previously if a highlight group with a name outside the regexp [a-zA-Z0-9_] was defined, Nvim would emit an "invalid character" warning message. This was annoying for Lua scripts, as it was very hard to debug what line of code was triggering this message since it didn't produce a stack trace. This has now been promoted to an error with the code E5248. Additionally the ASCII character period ('.') and at-sign ('@') have been added to the allowed list of characters of a highlight group name to support the application of defining hierarchical highlight groups, e.g. 'TS.keyword'. Co-authored-by: Christian Clason <christian.clason@uni-due.de>
This commit is contained in:
@@ -181,16 +181,16 @@ Vim will only load the first syntax file found, assuming that it sets
|
||||
b:current_syntax.
|
||||
|
||||
|
||||
NAMING CONVENTIONS *group-name* *{group-name}* *E669* *W18*
|
||||
NAMING CONVENTIONS *group-name* *{group-name}* *E669* *E5248*
|
||||
|
||||
A syntax group name is to be used for syntax items that match the same kind of
|
||||
thing. These are then linked to a highlight group that specifies the color.
|
||||
A syntax group name doesn't specify any color or attributes itself.
|
||||
|
||||
The name for a highlight or syntax group must consist of ASCII letters, digits
|
||||
and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give
|
||||
an error when using other characters. The maximum length of a group name is
|
||||
about 200 bytes. *E1249*
|
||||
The name for a highlight or syntax group must consist of ASCII letters,
|
||||
digits, underscores, periods and `@` characters. As a regexp it is
|
||||
`[a-zA-Z0-9_.@]*`. The maximum length of a group name is about 200 bytes.
|
||||
*E1249*
|
||||
|
||||
To be able to allow each user to pick their favorite set of colors, there must
|
||||
be preferred names for highlight groups that are common for many languages.
|
||||
|
@@ -390,6 +390,9 @@ Highlight groups:
|
||||
using |n| or |N|
|
||||
|hl-CursorLine| is low-priority unless foreground color is set
|
||||
|hl-VertSplit| superseded by |hl-WinSeparator|
|
||||
Highlight groups names are allowed to contain the characters `.` and `@`.
|
||||
It is an error to define a highlight group with a name that doesn't match
|
||||
the regexp `[a-zA-Z0-9_.@]*` (see |group-name|).
|
||||
|
||||
Macro/|recording| behavior
|
||||
Replay of a macro recorded during :lmap produces the same actions as when it
|
||||
|
@@ -1021,6 +1021,8 @@ EXTERN char e_resulting_text_too_long[] INIT(= N_("E1240: Resulting text too lon
|
||||
|
||||
EXTERN char e_line_number_out_of_range[] INIT(= N_("E1247: Line number out of range"));
|
||||
|
||||
EXTERN char e_highlight_group_name_invalid_char[] INIT(= N_("E5248: Invalid character in group name"));
|
||||
|
||||
EXTERN char e_highlight_group_name_too_long[] INIT(= N_("E1249: Highlight group name too long"));
|
||||
|
||||
EXTERN char e_undobang_cannot_redo_or_move_branch[]
|
||||
|
@@ -1750,11 +1750,11 @@ static int syn_add_group(const char *name, size_t len)
|
||||
if (!vim_isprintc(c)) {
|
||||
emsg(_("E669: Unprintable character in group name"));
|
||||
return 0;
|
||||
} else if (!ASCII_ISALNUM(c) && c != '_') {
|
||||
// This is an error, but since there previously was no check only give a warning.
|
||||
} else if (!ASCII_ISALNUM(c) && c != '_' && c != '.' && c != '@') {
|
||||
// '.' and '@' are allowed characters for use with treesitter capture names.
|
||||
msg_source(HL_ATTR(HLF_W));
|
||||
msg(_("W18: Invalid character in group name"));
|
||||
break;
|
||||
emsg(_(e_highlight_group_name_invalid_char));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -5320,8 +5320,8 @@ msgstr "E424: Te veel verskillende uitlig-eienskappe in gebruik"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Onvertoonbare karakter in groepnaam"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ongeldige karakter groepnaam"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ongeldige karakter groepnaam"
|
||||
|
||||
#~ msgid "E849: Too many highlight and syntax groups"
|
||||
#~ msgstr ""
|
||||
|
@@ -5983,9 +5983,9 @@ msgstr "E424: Hi ha massa atributs de ressalt diferents en
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Car<61>cter no imprimible en el nom del grup"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Hi ha un car<61>cter no v<>lid en el nom del grup"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Hi ha un car<61>cter no v<>lid en el nom del grup"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -6072,10 +6072,10 @@ msgstr ""
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7434
|
||||
#: ../highlight_group.c:1756
|
||||
#, fuzzy
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "E182: Chybn<62> jm<6A>no p<><70>kazu"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Chybn<62> jm<6A>no p<><70>kazu"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -6072,10 +6072,10 @@ msgstr ""
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7434
|
||||
#: ../highlight_group.c:1756
|
||||
#, fuzzy
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "E182: Chybn<62> jm<6A>no p<><70>kazu"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Chybn<62> jm<6A>no p<><70>kazu"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5599,8 +5599,8 @@ msgstr "E424: For mange forskellige fremhævningsattributter i brug"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Tegn som ikke kan udskrives i gruppenavn"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ugyldige tegn i gruppenavn"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ugyldige tegn i gruppenavn"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: For mange fremhævnings- og syntaksgrupper"
|
||||
|
@@ -5408,8 +5408,8 @@ msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Nicht druckbare Zeichen im Namen der Gruppe"
|
||||
|
||||
#: ../syntax.c:7304
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ung<6E>ltiges Zeichen im Namen der Gruppe"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ung<6E>ltiges Zeichen im Namen der Gruppe"
|
||||
|
||||
#: ../syntax.c:7318
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5730,8 +5730,8 @@ msgstr ""
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7448
|
||||
|
@@ -5378,8 +5378,8 @@ msgstr "E424: Tro da malsamaj atributoj de emfazo uzataj"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Nepresebla signo en nomo de grupo"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Nevalida signo en nomo de grupo"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Nevalida signo en nomo de grupo"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Tro da emfazaj kaj sintaksaj grupoj"
|
||||
|
@@ -6053,9 +6053,9 @@ msgstr "E669: Carácter no imprimible en el nombre del grupo"
|
||||
|
||||
# This is an error, but since there previously was no check only
|
||||
# * give a warning.
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Hay un carácter no válido en el nombre del grupo"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Hay un carácter no válido en el nombre del grupo"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5369,8 +5369,8 @@ msgstr "E424: Liikaa eri korostusattribuutteja"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Tulostuskelvoton merkki ryhmän nimessä"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Virheellinen merkki ryhmän nimessä"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Virheellinen merkki ryhmän nimessä"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Liikaa korostuksia ja syntaksiryhmiä"
|
||||
|
@@ -2040,8 +2040,8 @@ msgstr ""
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Caract<63>re non imprimable dans un nom de groupe"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Caract<63>re invalide dans un nom de groupe"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Caract<63>re invalide dans un nom de groupe"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Trop de groupes de surbrillance et de syntaxe"
|
||||
|
@@ -5668,8 +5668,8 @@ msgstr "E424: An iomarca tr
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Carachtar neamhghrafach in ainm gr<67>pa"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Carachtar neamhbhail<69> in ainm gr<67>pa"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Carachtar neamhbhail<69> in ainm gr<67>pa"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: An iomarca gr<67>pa<70> aibhsithe agus comhr<68>ire"
|
||||
|
@@ -6046,9 +6046,9 @@ msgstr "E424: Troppi gruppi evidenziazione differenti in uso"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Carattere non stampabile in un nome di gruppo"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Carattere non ammesso in un nome di gruppo"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Carattere non ammesso in un nome di gruppo"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5913,9 +5913,9 @@ msgstr "E424: 너무 많은 다른 하이라이트 속성이 사용되고 있습
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: 그룹 이름에 출력할 수 없는 문자가 있습니다"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: 그룹 이름에 이상한 문자"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: 그룹 이름에 이상한 문자"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5930,9 +5930,9 @@ msgstr "E424: For mange forskjellige uthevingsattributter i bruk"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Ikke-skrivbart tegn i gruppenavn"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ugyldig tegn i gruppenavn"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ugyldig tegn i gruppenavn"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5913,8 +5913,8 @@ msgstr ""
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr ""
|
||||
|
||||
#: ../syntax.c:7448
|
||||
|
@@ -5930,9 +5930,9 @@ msgstr "E424: For mange forskjellige uthevingsattributter i bruk"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Ikke-skrivbart tegn i gruppenavn"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ugyldig tegn i gruppenavn"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ugyldig tegn i gruppenavn"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5908,9 +5908,9 @@ msgstr "E424: Zbyt wiele różnych atrybutów podkreślania w użyciu"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Niedrukowalny znak w nazwie grupy"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: nieprawidłowy znak w nazwie grupy"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: nieprawidłowy znak w nazwie grupy"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -6070,8 +6070,8 @@ msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Caractere n<>o-imprim<69>vel no nome do grupo"
|
||||
|
||||
#: ../syntax.c:7320
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Caractere inv<6E>lido no nome do grupo"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Caractere inv<6E>lido no nome do grupo"
|
||||
|
||||
#: ../syntax.c:7334
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5977,9 +5977,9 @@ msgstr "E424: Используется слишком много разных а
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Непечатный символ в имени группы"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Недопустимый символ в имени группы"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Недопустимый символ в имени группы"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5940,9 +5940,9 @@ msgstr "E424: Pou
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Netla<6C>iteln<6C> znak v mene skupiny"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Chybn<62> znak v mene skupiny"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Chybn<62> znak v mene skupiny"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5940,9 +5940,9 @@ msgstr "E424: Pou
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Netla<6C>iteln<6C> znak v mene skupiny"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Chybn<62> znak v mene skupiny"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Chybn<62> znak v mene skupiny"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -6050,8 +6050,8 @@ msgstr "E424: У употреби је превише различитих ат
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: У имену групе је карактер који не може да се штампа"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Неважећи карактер у имену групе"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Неважећи карактер у имену групе"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Превише синтаксних и група истицања"
|
||||
|
@@ -2056,8 +2056,8 @@ msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Outskrivbart tecken i gruppnamn"
|
||||
|
||||
#: ../syntax.c:7292
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ogiltigt tecken i gruppnamn"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ogiltigt tecken i gruppnamn"
|
||||
|
||||
#: ../syntax.c:7306
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -3054,8 +3054,8 @@ msgstr "E423: İzin verilmeyen argüman: %s"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Grup adında yazdırılamayan karakter"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Grup adında geçersiz karakter"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Grup adında geçersiz karakter"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Çok fazla vurgulama ve sözdizim grupları"
|
||||
|
@@ -3058,8 +3058,8 @@ msgstr "E423: Неправильний аргумент: %s"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Недруковний символ у назві групи"
|
||||
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Некоректний символ у назві групи"
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Некоректний символ у назві групи"
|
||||
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
msgstr "E849: Забагато груп підсвічування і синтаксису"
|
||||
|
@@ -5975,9 +5975,9 @@ msgstr "E424: Sử dụng quá nhiều thuộc tính chiếu sáng cú pháp"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: Ký tự không thể tin ra trong tên nhóm"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: Ký tự không cho phép trong tên nhóm"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: Ký tự không cho phép trong tên nhóm"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5942,9 +5942,9 @@ msgstr "E424: 使用了太多不同的高亮度属性"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: 组名中存在不可显示字符"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: 组名中含有无效字符"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: 组名中含有无效字符"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -5969,9 +5969,9 @@ msgstr "E424: 使用了過多相異的高亮度屬性"
|
||||
msgid "E669: Unprintable character in group name"
|
||||
msgstr "E669: 群組名稱中有無法列印的字元"
|
||||
|
||||
#: ../syntax.c:7434
|
||||
msgid "W18: Invalid character in group name"
|
||||
msgstr "W18: 群組名稱中有不正確的字元"
|
||||
#: ../highlight_group.c:1756
|
||||
msgid "E5248: Invalid character in group name"
|
||||
msgstr "E5248: 群組名稱中有不正確的字元"
|
||||
|
||||
#: ../syntax.c:7448
|
||||
msgid "E849: Too many highlight and syntax groups"
|
||||
|
@@ -389,7 +389,7 @@ func Test_invalid_name()
|
||||
syn keyword Nop yes
|
||||
call assert_fails("syntax keyword Wr\x17ong bar", 'E669:')
|
||||
syntax keyword @Wrong bar
|
||||
call assert_match('W18:', execute('1messages'))
|
||||
call assert_fails("syntax keyword @#Wrong bar", 'E5248:')
|
||||
syn clear
|
||||
hi clear Nop
|
||||
hi clear @Wrong
|
||||
|
Reference in New Issue
Block a user