userdiff: expand detected chunk headers for css
PATCH 1/1 userdiff: expand detected chunk headers for css
From: Sohom <[email protected]>
Added support for classes, ids, :root selectors
as well as @-based statements (ex: @page, @media
and @keyframes ).
Also added tests for the same.
---
userdiff: Expand detected chunk headers for css
Currently, the regex used for the CSS builtin diff driver in git is only able to show chunk headers for lines that start with a number, a letter or an underscore.
However, the regex fails to detect classes (starts with a .), ids (starts with a #), :root and attribute-value based selectors (for example [class*="col-"]), as well as @based block-level statements like @page,@keyframes and @media since all of them, start with a special character.
I've modified the chunk header CSS regex so that it is able to detect the statements above and add them to the chunk header.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v1
Pull-Request: https://github.com/git/git/pull/866
t/t4018/css-attribute-value-selector | 4 ++++ t/t4018/css-block-level-@-statements | 10 ++++++++++ t/t4018/css-class-selector | 4 ++++ t/t4018/css-id-selector | 4 ++++ t/t4018/css-root-selector | 4 ++++ userdiff.c | 2 +- 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 t/t4018/css-attribute-value-selector create mode 100644 t/t4018/css-block-level-@-statements create mode 100644 t/t4018/css-class-selector create mode 100644 t/t4018/css-id-selector create mode 100644 t/t4018/css-root-selector
t/t4018/css-attribute-value-selector new file +4 -0
@@ -0,0 +1,4 @@ +[class*="RIGHT"] { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-block-level-@-statements new file +10 -0
@@ -0,0 +1,10 @@ +@keyframes RIGHT { + from { + background : #000; + border : 10px ChangeMe #C6C6C6; + } + to { + background : #fff; + border : 10px solid #C6C6C6; + } +}
t/t4018/css-class-selector new file +4 -0
@@ -0,0 +1,4 @@ +.RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-id-selector new file +4 -0
@@ -0,0 +1,4 @@ +#RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-root-selector new file +4 -0
@@ -0,0 +1,4 @@ +:RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
userdiff.c +1 -1
@@ -200,7 +200,7 @@ PATTERNS("csharp", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), IPATTERN("css", "![:;][[:space:]]*$\n" - "^[_a-z0-9].*$", + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",/* -- */ /* * This regex comes from W3C CSS specs. Should theoretically also
base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
Signature · 1 line
gitgitgadget
Am 07.10.20 um 11:25 schrieb Sohom Datta via GitGitGadget:
Quoted 3 lines
From: Sohom <[email protected]>
Added support for classes, ids, :root selectors
s/Added/Add/ since we prefer this sentence in imperative mood.
Quoted 4 lines
as well as @-based statements (ex: @page, @media
and @keyframes ).Also added tests for the same.
Ditto, or just drop this sentence.
Quoted 9 lines
Signed-off-by Sohom Datta <[email protected]>---
userdiff: Expand detected chunk headers for cssCurrently, the regex used for the CSS builtin diff driver in git is only able to show chunk headers for lines that start with a number, a letter or an underscore.
Quoted 5 lines
However, the regex fails to detect classes (starts with a .), ids (starts with a #), :root and attribute-value based selectors (for example [class*="col-"]), as well as @based block-level statements like @page,@keyframes and @media since all of them, start with a special character.
This text would have made a very good introductory part of the commit message, but since it is after the three-dash separator, it is ignored.
The patch text looks good.
Quoted 93 lines
I've modified the chunk header CSS regex so that it is able to detect the statements above and add them to the chunk header.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v1
Pull-Request: https://github.com/git/git/pull/866t/t4018/css-attribute-value-selector | 4 ++++ t/t4018/css-block-level-@-statements | 10 ++++++++++ t/t4018/css-class-selector | 4 ++++ t/t4018/css-id-selector | 4 ++++ t/t4018/css-root-selector | 4 ++++ userdiff.c | 2 +- 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 t/t4018/css-attribute-value-selector create mode 100644 t/t4018/css-block-level-@-statements create mode 100644 t/t4018/css-class-selector create mode 100644 t/t4018/css-id-selector create mode 100644 t/t4018/css-root-selectort/t4018/css-attribute-value-selector new file +4
-0@@ -0,0 +1,4 @@ +[class*="RIGHT"] { + background : #000; + border : 10px ChangeMe #C6C6C6; +}t/t4018/css-block-level-@-statements new file +10
-0@@ -0,0 +1,10 @@ +@keyframes RIGHT { + from { + background : #000; + border : 10px ChangeMe #C6C6C6; + } + to { + background : #fff; + border : 10px solid #C6C6C6; + } +}t/t4018/css-class-selector new file +4
-0@@ -0,0 +1,4 @@ +.RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}t/t4018/css-id-selector new file +4
-0@@ -0,0 +1,4 @@ +#RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}t/t4018/css-root-selector new file +4
-0@@ -0,0 +1,4 @@ +:RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}userdiff.c +1
-1@@ -200,7 +200,7 @@ PATTERNS("csharp", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), IPATTERN("css", "![:;][[:space:]]*$\n" - "^[_a-z0-9].*$", + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",/* -- */ /* * This regex comes from W3C CSS specs. Should theoretically also base-commit:
d98273ba77e1ab9ec755576bc86c716a97bf59d7
Quoted 16 lines · Sohom Datta via GitGitGadget
From: Sohom <[email protected]>
Added support for classes, ids, :root selectors
as well as @-based statements (ex: @page, @media
and @keyframes ).Also added tests for the same.
Signed-off-by Sohom Datta <[email protected]>---
userdiff: Expand detected chunk headers for cssCurrently, the regex used for the CSS builtin diff driver in git is only able to show chunk headers for lines that start with a number, a letter or an underscore.
Quoted 5 lines
However, the regex fails to detect classes (starts with a .), ids (starts with a #), :root and attribute-value based selectors (for example [class*="col-"]), as well as @based block-level statements like @page,@keyframes and @media since all of them, start with a special character.
The above two would be much better beginning of the log message for this change modulo a few nits.
- We first explain what the current system does in the present tense. "Currently, " at the beginning is a pure noise.
- And we point out what may be lacking (which you did a very good job in the second paragraph).
- And finally, we write in imperative mood to give an order to the codebase to "become like so." or an order to the patch monkey to "make the codebase like so."
As the last paragraph to follow the two paragraphs, something like
Allow the selectors to begin with these special characters.
would be sufficient.
userdiff.c PATTERNS("csharp", · line 203
Quoted 2 lines
userdiff.c +1
-1- "^[_a-z0-9].*$", + "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
As we seem to allow ? (i.e. zero or one) in the patterns, it probably makes it easier to read to spell the above like this instead?
- "^[_a-z0-9].*$",
+ "^[:[@.#]?[_a-z0-9].*$"
PATCH v2 1/1 userdiff: expand detected chunk headers for css
In reply to Sohom Datta via GitGitGadgetFrom: Sohom <[email protected]>
The regex used for the CSS builtin diff driver in git is only able to show chunk headers for lines that start with a number, a letter or an underscore.
However, the regex fails to detect classes (starts with a .), ids (starts with a #), :root and attribute-value based selectors (for example [class*="col-"]), as well as @based block-level statements like @page,@keyframes and @media since all of them, start with a special character.
Allow the selectors and block level statements to begin with these special characters.
---
userdiff: Expand detected chunk headers for css
Changes since v1
* Updated commit message as suggested by Johannes Sixt and Junio C Hamano
* Simplified the regex as suggested by Junio C Hamano
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-866%2Fsohomdatta1%2Fcss-userdiff-fix-test-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-866/sohomdatta1/css-userdiff-fix-test-v2
Pull-Request: https://github.com/git/git/pull/866
Range-diff vs v1:
1: ca178c0cda ! 1: a76703d4ac userdiff: expand detected chunk headers for css
@@ Metadata
## Commit message ##
userdiff: expand detected chunk headers for css
- Added support for classes, ids, :root selectors
- as well as @-based statements (ex: @page, @media
- and @keyframes ).
+ The regex used for the CSS builtin diff driver in git is only
+ able to show chunk headers for lines that start with a number,
+ a letter or an underscore.
- Also added tests for the same.
+ However, the regex fails to detect classes (starts with a .), ids
+ (starts with a #), :root and attribute-value based selectors (for
+ example [class*="col-"]), as well as @based block-level statements
+ like @page,@keyframes and @media since all of them, start with a
+ special character.
+
+ Allow the selectors and block level statements to begin with these
+ special characters.
@@ userdiff.c: PATTERNS("csharp",
IPATTERN("css",
"![:;][[:space:]]*$\n"
- "^[_a-z0-9].*$",
-+ "^(([_a-z0-9]|[:[@.#][_a-z0-9]).*)$",
++ "^[:[@.#]?[_a-z0-9].*$",
/* -- */
/*
* This regex comes from W3C CSS specs. Should theoretically also
t/t4018/css-attribute-value-selector | 4 ++++ t/t4018/css-block-level-@-statements | 10 ++++++++++ t/t4018/css-class-selector | 4 ++++ t/t4018/css-id-selector | 4 ++++ t/t4018/css-root-selector | 4 ++++ userdiff.c | 2 +- 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 t/t4018/css-attribute-value-selector create mode 100644 t/t4018/css-block-level-@-statements create mode 100644 t/t4018/css-class-selector create mode 100644 t/t4018/css-id-selector create mode 100644 t/t4018/css-root-selector
t/t4018/css-attribute-value-selector new file +4 -0
@@ -0,0 +1,4 @@ +[class*="RIGHT"] { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-block-level-@-statements new file +10 -0
@@ -0,0 +1,10 @@ +@keyframes RIGHT { + from { + background : #000; + border : 10px ChangeMe #C6C6C6; + } + to { + background : #fff; + border : 10px solid #C6C6C6; + } +}
t/t4018/css-class-selector new file +4 -0
@@ -0,0 +1,4 @@ +.RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-id-selector new file +4 -0
@@ -0,0 +1,4 @@ +#RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
t/t4018/css-root-selector new file +4 -0
@@ -0,0 +1,4 @@ +:RIGHT { + background : #000; + border : 10px ChangeMe #C6C6C6; +}
userdiff.c +1 -1
@@ -200,7 +200,7 @@ PATTERNS("csharp", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), IPATTERN("css", "![:;][[:space:]]*$\n" - "^[_a-z0-9].*$", + "^[:[@.#]?[_a-z0-9].*$",/* -- */ /* * This regex comes from W3C CSS specs. Should theoretically also
base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
Signature · 1 line
gitgitgadget
Quoted 1 line · Sohom Datta via GitGitGadget
From: Sohom <[email protected]>
I'd call this line *1* for later reference...
Quoted 10 lines
The regex used for the CSS builtin diff driver in git is only able to show chunk headers for lines that start with a number, a letter or an underscore.
However, the regex fails to detect classes (starts with a .), ids (starts with a #), :root and attribute-value based selectors (for example [class*="col-"]), as well as @based block-level statements like @page,@keyframes and @media since all of them, start with a special character.
Quoted 5 lines
Allow the selectors and block level statements to begin with these special characters.
Signed-off-by Sohom Datta <[email protected]>---
Looking good.
The "Name <email>" on line *1* must match that on the last "signed-off-by" line, so I'll locally tweak the authorship information before applying the patch.
Thanks.