From d4376dc3ebea91abcb4d9ef9963ef5b968048b78 Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Sun, 20 Aug 2023 19:14:03 +0200 Subject: [PATCH] patch 9.0.1767: '.-' no allowed in highlight group names Problem: '.-' no allowed in highlight group names Solution: Allow dot and hyphen characters in highlight group names Allow dots and hyphens in group names. There does not seem to be any reason for these to be disallowed. closes: #12807 Signed-off-by: Christian Brabandt Co-authored-by: Gregory Anders Co-authored-by: Sean Dewar --- runtime/doc/syntax.txt | 8 ++++---- src/highlight.c | 4 ++-- src/version.c | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 8a5e5f4c9c..17f81391a9 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -214,10 +214,10 @@ 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, dots, or hyphens. 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* 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. diff --git a/src/highlight.c b/src/highlight.c index 3773ddf70b..8b1e832d7b 100644 --- a/src/highlight.c +++ b/src/highlight.c @@ -3452,7 +3452,7 @@ syn_add_group(char_u *name) char_u *p; char_u *name_up; - // Check that the name is ASCII letters, digits and underscore. + // Check that the name is valid (ASCII letters, digits, underscores, dots, or hyphens). for (p = name; *p != NUL; ++p) { if (!vim_isprintc(*p)) @@ -3461,7 +3461,7 @@ syn_add_group(char_u *name) vim_free(name); return 0; } - else if (!ASCII_ISALNUM(*p) && *p != '_') + else if (!ASCII_ISALNUM(*p) && *p != '_' && *p != '.' && *p != '-') { // This is an error, but since there previously was no check only // give a warning. diff --git a/src/version.c b/src/version.c index 056dc29679..e6f41a4a2f 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1767, /**/ 1766, /**/