[gtksourceview: 4/9] css.lang (and family): Replace word boundaries with custom regexes
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview: 4/9] css.lang (and family): Replace word boundaries with custom regexes
- Date: Tue, 2 Jun 2020 18:31:29 +0000 (UTC)
commit 4fc20f804f0cf2c979604b973fef9ab8a26f873f
Author: Jeffery To <jeffery to gmail com>
Date: Tue Jun 2 01:11:39 2020 +0800
css.lang (and family): Replace word boundaries with custom regexes
This replaces uses of \%[ and \%] with custom regexes that only test
"outside" the keyword.
This also adds the custom regexes in places that should have a word
boundary test.
data/language-specs/css.lang | 138 +++++++++++++++++++++++++++++++-----------
data/language-specs/less.lang | 32 +++++++---
data/language-specs/scss.lang | 56 ++++++++++++-----
3 files changed, 170 insertions(+), 56 deletions(-)
---
diff --git a/data/language-specs/css.lang b/data/language-specs/css.lang
index 1dd21fc5..ec1e648f 100644
--- a/data/language-specs/css.lang
+++ b/data/language-specs/css.lang
@@ -232,6 +232,14 @@
-- \%{identifier-chars}+
</define-regex>
+ <define-regex id="keyword-start" extended="true">
+ (?<! \%{keyword-code-point} )
+ </define-regex>
+
+ <define-regex id="keyword-end" extended="true">
+ (?! \%{keyword-code-point} )
+ </define-regex>
+
<define-regex id="declaration-value-end">(?=[!;}])</define-regex>
<define-regex id="test-value-end">(?=\))</define-regex>
@@ -279,15 +287,21 @@
<!-- custom identifier -->
<context id="name" style-ref="name">
- <match>\%[\%{identifier}</match>
+ <match extended="true">
+ \%{keyword-start} \%{identifier}
+ </match>
</context>
<context id="vendor-specific-name" style-ref="vendor-specific">
- <match>\%[\%{vendor-specific-identifier}</match>
+ <match extended="true">
+ \%{keyword-start} \%{vendor-specific-identifier}
+ </match>
</context>
<context id="custom-property-name" style-ref="custom-property-name">
- <match>\%[\%{custom-property-identifier}</match>
+ <match extended="true">
+ \%{keyword-start} \%{custom-property-identifier}
+ </match>
</context>
<context id="escape" style-ref="escape">
@@ -329,7 +343,10 @@
</context>
<context id="hexadecimal-color" style-ref="color">
- <match>#(?:[a-f0-9]{8}|[a-f0-9]{6}|[a-f0-9]{4}|[a-f0-9]{3})\%]</match>
+ <match extended="true">
+ \# (?: [a-f0-9]{8} | [a-f0-9]{6} | [a-f0-9]{4} | [a-f0-9]{3} )
+ \%{keyword-end}
+ </match>
</context>
<context id="css3-named-color" style-ref="color">
@@ -593,8 +610,9 @@
<context id="unicode-range" style-ref="unicode-range">
<match extended="true">
- \%[ u \+ (?> [a-f0-9?]{1,6} ) (?> - [a-f0-9]{1,6} )?
- (?! \%{keyword-code-point} )
+ \%{keyword-start}
+ u \+ (?> [a-f0-9?]{1,6} ) (?> - [a-f0-9]{1,6} )?
+ \%{keyword-end}
</match>
</context>
@@ -625,7 +643,9 @@
</context>
<context id="url">
- <start>url\(</start>
+ <start extended="true">
+ \%{keyword-start} url \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="function"/>
@@ -639,7 +659,9 @@
<!-- https://drafts.csswg.org/css-variables/#using-variables -->
<context id="var">
- <start>var\(</start>
+ <start extended="true">
+ \%{keyword-start} var \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="function"/>
@@ -659,7 +681,9 @@
</context>
<context id="vendor-specific-function">
- <start>\%[\%{vendor-specific-identifier}\(</start>
+ <start extended="true">
+ \%{keyword-start} \%{vendor-specific-identifier} \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="vendor-specific"/>
@@ -671,7 +695,9 @@
</context>
<context id="function">
- <start>\%[\%{identifier}\(</start>
+ <start extended="true">
+ \%{keyword-start} \%{identifier} \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="function"/>
@@ -1894,7 +1920,9 @@
</context>
<context id="at-charset-error" style-ref="error">
- <start>@charset\%]</start>
+ <start extended="true">
+ @charset \%{keyword-end}
+ </start>
<include>
<context ref="embedded-lang-hook"/>
<!-- no comment here -->
@@ -1903,7 +1931,9 @@
</context>
<context id="at-charset-no-error">
- <start>@charset\%]</start>
+ <start extended="true">
+ @charset \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -1931,7 +1961,9 @@
-->
<context id="at-font-face">
- <start>@font-face\%]</start>
+ <start extended="true">
+ @font-face \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2015,7 +2047,9 @@
</context>
<context id="at-font-feature-values">
- <start>@font-feature-values\%]</start>
+ <start extended="true">
+ @font-feature-values \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2031,7 +2065,9 @@
-->
<context id="at-import">
- <start>@import\%]</start>
+ <start extended="true">
+ @import \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2075,7 +2111,9 @@
</context>
<context id="vendor-specific-at-keyframes">
- <start>@\%{vendor-specific-prefix}keyframes\%]</start>
+ <start extended="true">
+ @ \%{vendor-specific-prefix} keyframes \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="vendor-specific"/>
<context ref="embedded-lang-hook"/>
@@ -2087,7 +2125,9 @@
</context>
<context id="at-keyframes">
- <start>@keyframes\%]</start>
+ <start extended="true">
+ @keyframes \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2103,7 +2143,9 @@
-->
<context id="at-media">
- <start>@media\%]</start>
+ <start extended="true">
+ @media \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2124,7 +2166,9 @@
</context>
<context id="at-namespace">
- <start>@namespace\%]</start>
+ <start extended="true">
+ @namespace \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2145,7 +2189,9 @@
<context id="pseudo-page-names" end-parent="true" style-ref="pseudo-class">
<start extended="true">
- \%[ (?: blank | first | left | right ) \%]
+ \%{keyword-start}
+ (?: blank | first | left | right )
+ \%{keyword-end}
</start>
<end>\%{def:always-match}</end>
</context>
@@ -2196,7 +2242,9 @@
</context>
<context id="at-page">
- <start>@page\%]</start>
+ <start extended="true">
+ @page \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2261,7 +2309,9 @@
</context>
<context id="at-supports">
- <start>@supports\%]</start>
+ <start extended="true">
+ @supports \%{keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="at-rule"/>
<context ref="embedded-lang-hook"/>
@@ -2296,7 +2346,9 @@
<!-- namespace qualifier -->
<context id="namespace-qualifier">
- <match>(\%[\%{identifier}|\*)?(\|)</match>
+ <match extended="true">
+ ( \%{keyword-start} \%{identifier} | \* )? ( \| )
+ </match>
<include>
<context sub-pattern="1" style-ref="namespace"/>
<context sub-pattern="2" style-ref="namespace-qualifier"/>
@@ -2314,7 +2366,9 @@
</context>
<context id="type-selector" style-ref="type-selector">
- <match>\%[\%{identifier}</match>
+ <match extended="true">
+ \%{keyword-start} \%{identifier}
+ </match>
</context>
<context id="universal-selector" style-ref="universal-selector">
@@ -2322,7 +2376,9 @@
</context>
<context id="attribute-selector-attribute-name" once-only="true" style-ref="attribute-selector-name">
- <match>\%[\%{identifier}</match>
+ <match extended="true">
+ \%{keyword-start} \%{identifier}
+ </match>
</context>
<context id="attribute-selector-operator" once-only="true" style-ref="attribute-selector-operator">
@@ -2370,20 +2426,26 @@
<!-- pseudo-elements -->
<context id="vendor-specific-pseudo-element-name" end-parent="true" style-ref="vendor-specific">
- <start>\%[\%{vendor-specific-identifier}</start>
+ <start extended="true">
+ \%{keyword-start} \%{vendor-specific-identifier}
+ </start>
<end>\%{def:always-match}</end>
</context>
<context id="single-colon-pseudo-element-names" end-parent="true" style-ref="pseudo-element">
<start extended="true">
- \%[ (?: after | before | first-letter | first-line ) \%]
+ \%{keyword-start}
+ (?: after | before | first-letter | first-line )
+ \%{keyword-end}
</start>
<end>\%{def:always-match}</end>
</context>
<context id="pseudo-element-names" end-parent="true" style-ref="pseudo-element">
<start extended="true">
- \%[ (?: placeholder | selection ) \%]
+ \%{keyword-start}
+ (?: placeholder | selection )
+ \%{keyword-end}
</start>
<end>\%{def:always-match}</end>
</context>
@@ -2410,13 +2472,15 @@
<!-- pseudo-classes -->
<context id="vendor-specific-pseudo-class-name" end-parent="true" style-ref="vendor-specific">
- <start>\%[\%{vendor-specific-identifier}</start>
+ <start extended="true">
+ \%{keyword-start} \%{vendor-specific-identifier}
+ </start>
<end>\%{def:always-match}</end>
</context>
<context id="pseudo-class-names" end-parent="true" style-ref="pseudo-class">
<start extended="true">
- \%[
+ \%{keyword-start}
(?:
active |
checked |
@@ -2446,7 +2510,7 @@
valid |
visited
)
- \%]
+ \%{keyword-end}
</start>
<end>\%{def:always-match}</end>
</context>
@@ -2458,7 +2522,9 @@
</context>
<context id="lang-pseudo-class" end-parent="true">
- <start>\%[lang\(</start>
+ <start extended="true">
+ \%{keyword-start} lang \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="pseudo-class"/>
@@ -2484,7 +2550,9 @@
</context>
<context id="not-pseudo-class" end-parent="true">
- <start>\%[not\(</start>
+ <start extended="true">
+ \%{keyword-start} not \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="pseudo-class"/>
@@ -2556,7 +2624,9 @@
<context id="nth-pseudo-class" end-parent="true">
<start extended="true">
- \%[ (?: nth-child | nth-of-type | nth-last-child | nth-last-of-type ) \(
+ \%{keyword-start}
+ (?: nth-child | nth-of-type | nth-last-child | nth-last-of-type )
+ \(
</start>
<end>\)</end>
<include>
diff --git a/data/language-specs/less.lang b/data/language-specs/less.lang
index d0c7a177..2a20d4c1 100644
--- a/data/language-specs/less.lang
+++ b/data/language-specs/less.lang
@@ -121,7 +121,9 @@
</context>
<context id="arguments-variable" style-ref="built-in-variable">
- <match>@arguments\%]</match>
+ <match extended="true">
+ @arguments \%{css:keyword-end}
+ </match>
</context>
<context id="arguments-variable-interpolation" style-ref="built-in-variable">
@@ -278,7 +280,9 @@
<!-- functions -->
<context id="less-url">
- <start>url\(</start>
+ <start extended="true">
+ \%{css:keyword-start} url \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="css:function"/>
@@ -586,7 +590,9 @@
</context>
<context id="at-plugin">
- <start>@plugin\%]</start>
+ <start extended="true">
+ @plugin \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -601,7 +607,9 @@
</context>
<context id="standalone-plugin-function-call">
- <start>(?=\%{identifier}\()</start>
+ <start extended="true">
+ \%{css:keyword-start} (?= \%{identifier} \( )
+ </start>
<end>\%{statement-end}</end>
<include>
<context sub-pattern="0" where="end" style-ref="css:delimiter"/>
@@ -615,7 +623,9 @@
<!-- at-rules -->
<context id="less-at-charset">
- <start case-sensitive="true">@charset\%]</start>
+ <start case-sensitive="true" extended="true">
+ @charset \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -675,7 +685,9 @@
</context>
<context id="less-at-import">
- <start>@import\%]</start>
+ <start extended="true">
+ @import \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -766,7 +778,9 @@
</context>
<context id="guard">
- <start>\%[when\%]</start>
+ <start extended="true">
+ \%{css:keyword-start} when \%{css:keyword-end}
+ </start>
<end>(?={)</end>
<include>
<context sub-pattern="0" where="start" style-ref="guard-operator"/>
@@ -798,7 +812,9 @@
</context>
<context id="extend-pseudo-class" end-parent="true">
- <start>\%[extend\(</start>
+ <start extended="true">
+ \%{css:keyword-start} extend \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="css:pseudo-class"/>
diff --git a/data/language-specs/scss.lang b/data/language-specs/scss.lang
index 1266edf7..2fe5e545 100644
--- a/data/language-specs/scss.lang
+++ b/data/language-specs/scss.lang
@@ -245,7 +245,9 @@
</context>
<context id="scss-url">
- <start>url\(</start>
+ <start extended="true">
+ \%{css:keyword-start} url \(
+ </start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="css:function"/>
@@ -613,7 +615,9 @@
-->
<context id="at-extend">
- <start>@extend\%]</start>
+ <start extended="true">
+ @extend \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -669,7 +673,9 @@
</context>
<context id="at-at-root">
- <start>@at-root\%]</start>
+ <start extended="true">
+ @at-root \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -687,7 +693,9 @@
-->
<context id="at-debug-warn-error">
- <start>@(?:debug|warn|error)\%]</start>
+ <start extended="true">
+ @ (?: debug | warn | error ) \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -704,7 +712,9 @@
-->
<context id="at-if-else-if">
- <start>@(?:if|else\s+if)\%]</start>
+ <start extended="true">
+ @ (?: if | else \s+ if ) \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -715,7 +725,9 @@
</context>
<context id="at-else">
- <start>@else\%]</start>
+ <start extended="true">
+ @else \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -735,7 +747,9 @@
</context>
<context id="at-for">
- <start>@for\%]</start>
+ <start extended="true">
+ @for \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -756,7 +770,9 @@
</context>
<context id="at-each">
- <start>@each\%]</start>
+ <start extended="true">
+ @each \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -774,7 +790,9 @@
-->
<context id="at-while">
- <start>@while\%]</start>
+ <start extended="true">
+ @while \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -801,7 +819,9 @@
</context>
<context id="at-mixin">
- <start>@mixin\%]</start>
+ <start extended="true">
+ @mixin \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -817,7 +837,9 @@
-->
<context id="at-include">
- <start>@include\%]</start>
+ <start extended="true">
+ @include \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -834,7 +856,9 @@
-->
<context id="at-content">
- <start>@content\%]</start>
+ <start extended="true">
+ @content \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -860,7 +884,9 @@
</context>
<context id="at-function">
- <start>@function\%]</start>
+ <start extended="true">
+ @function \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
@@ -878,7 +904,9 @@
-->
<context id="at-return">
- <start>@return\%]</start>
+ <start extended="true">
+ @return \%{css:keyword-end}
+ </start>
<include>
<context sub-pattern="0" where="start" style-ref="css:at-rule"/>
<context ref="css:embedded-lang-hook"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]