path: root/userdiff.c
diff options
authorWilliam Duclot <>2016-06-03 12:32:26 (GMT)
committerJunio C Hamano <>2016-06-03 21:45:56 (GMT)
commit0719f3eecd1234f6331cab980088239207e93335 (patch)
treebb3a1a01ac9412ef6c35bf8337b278a221e96f14 /userdiff.c
parent4b0891ffe4ec3aef081cf48c5f9a747586076f7a (diff)
userdiff: add built-in pattern for CSS
CSS is widely used, motivating it being included as a built-in pattern. It must be noted that the word_regex for CSS (i.e. the regex defining what is a word in the language) does not consider '.' and '#' characters (in CSS selectors) to be part of the word. This behavior is documented by the test t/t4018/css-rule. The logic behind this behavior is the following: identifiers in CSS selectors are identifiers in a HTML/XML document. Therefore, the '.'/'#' character are not part of the identifier, but an indicator of the nature of the identifier in HTML/XML (class or id). Diffing ".class1" and ".class2" must show that the class name is changed, but we still are selecting a class. Logic behind the "pattern" regex is: 1. reject lines ending with a colon/semicolon (properties) 2. if a line begins with a name in column 1, pick the whole line Credits to Johannes Sixt ( for the pattern regex and most of the tests. Signed-off-by: William Duclot <> Signed-off-by: Matthieu Moy <> Reviewed-by: Johannes Sixt <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'userdiff.c')
1 files changed, 12 insertions, 0 deletions
diff --git a/userdiff.c b/userdiff.c
index 6bf2505..2125d6d 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -148,6 +148,18 @@ PATTERNS("csharp",
+ "![:;][[:space:]]*$\n"
+ "^[_a-z0-9].*$",
+ /* -- */
+ /*
+ * This regex comes from W3C CSS specs. Should theoretically also
+ * allow ISO 10646 characters U+00A0 and higher,
+ * but they are not handled in this regex.
+ */
+ "-?[_a-zA-Z][-_a-zA-Z0-9]*" /* identifiers */
+ "|-?[0-9]+|\\#[0-9a-fA-F]+" /* numbers */
{ "default", NULL, -1, { NULL, 0 } },