[gtksourceview: 9/13] javascript.lang (and family): Set prefix/suffix for keyword contexts



commit f98232da5fb5bce5fbc7c0c988c9ff79d76b2bc6
Author: Jeffery To <jeffery to gmail com>
Date:   Sun May 31 08:35:36 2020 +0800

    javascript.lang (and family): Set prefix/suffix for keyword contexts
    
    Keyword contexts have \%[ and \%] as default patterns for <prefix> and
    <suffix>.
    
    This replaces these word boundaries with custom regexes that only test
    "outside" the keyword.

 data/language-specs/javascript-expressions.lang    |   2 +
 .../javascript-functions-classes.lang              |   4 +
 data/language-specs/javascript-literals.lang       |   2 +
 data/language-specs/javascript-modules.lang        |   2 +
 data/language-specs/javascript-statements.lang     |   2 +
 data/language-specs/javascript-values.lang         | 108 +++++++++++++++++++++
 data/language-specs/javascript.lang                |   8 ++
 data/language-specs/objj.lang                      |  21 ++++
 .../typescript-js-functions-classes.lang           |   4 +
 data/language-specs/typescript-type-literals.lang  |   2 +
 data/language-specs/typescript.lang                |   4 +
 11 files changed, 159 insertions(+)
---
diff --git a/data/language-specs/javascript-expressions.lang b/data/language-specs/javascript-expressions.lang
index 877ba2f3..75ea7cbb 100644
--- a/data/language-specs/javascript-expressions.lang
+++ b/data/language-specs/javascript-expressions.lang
@@ -404,6 +404,8 @@
         <context ref="_increment-decrement-operators"/>
 
         <context id="_keyword-unary-operators" style-ref="js:keyword">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>await</keyword> <!-- ES2017 -->
           <keyword>delete</keyword>
           <keyword>typeof</keyword>
diff --git a/data/language-specs/javascript-functions-classes.lang 
b/data/language-specs/javascript-functions-classes.lang
index 736fea81..959a4d09 100644
--- a/data/language-specs/javascript-functions-classes.lang
+++ b/data/language-specs/javascript-functions-classes.lang
@@ -242,6 +242,8 @@
           <include>
 
             <context id="_choice-method-definition-modifier-keyword" style-ref="js:keyword" 
end-parent="true">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>get</keyword>
               <keyword>set</keyword>
             </context> <!-- /_choice-method-definition-modifier-keyword -->
@@ -389,6 +391,8 @@
           <include>
 
             <context id="_choice-class-body-member-modifier-keyword" style-ref="js:keyword" 
end-parent="true">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>static</keyword>
             </context> <!-- /_choice-class-body-member-modifier-keyword -->
 
diff --git a/data/language-specs/javascript-literals.lang b/data/language-specs/javascript-literals.lang
index c77bf722..6501a710 100644
--- a/data/language-specs/javascript-literals.lang
+++ b/data/language-specs/javascript-literals.lang
@@ -46,6 +46,8 @@
 
     <!-- <BooleanLiteral> -->
     <context id="boolean" style-ref="js:boolean">
+      <prefix>\%{js:keyword-start}</prefix>
+      <suffix>\%{js:keyword-end}</suffix>
       <keyword>false</keyword>
       <keyword>true</keyword>
     </context> <!-- /boolean -->
diff --git a/data/language-specs/javascript-modules.lang b/data/language-specs/javascript-modules.lang
index 8215d1db..f5e9ca91 100644
--- a/data/language-specs/javascript-modules.lang
+++ b/data/language-specs/javascript-modules.lang
@@ -140,6 +140,8 @@
           <include>
 
             <context id="_name-group-keywords" style-ref="js:keyword">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>default</keyword>
             </context> <!-- /_name-group-keywords -->
 
diff --git a/data/language-specs/javascript-statements.lang b/data/language-specs/javascript-statements.lang
index f8d04909..2230b0b9 100644
--- a/data/language-specs/javascript-statements.lang
+++ b/data/language-specs/javascript-statements.lang
@@ -251,6 +251,8 @@
           <include>
 
             <context id="_choice-for-statement-modifier-keyword" style-ref="js:keyword" end-parent="true">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>await</keyword> <!-- ES2018 -->
             </context> <!-- /_choice-for-statement-modifier-keyword -->
 
diff --git a/data/language-specs/javascript-values.lang b/data/language-specs/javascript-values.lang
index 21d50bcd..3a60ac90 100644
--- a/data/language-specs/javascript-values.lang
+++ b/data/language-specs/javascript-values.lang
@@ -51,6 +51,8 @@
 
         <!-- 18.1 Value Properties of the Global Object -->
         <context id="_values" style-ref="js:built-in-value">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>Infinity</keyword>
           <keyword>NaN</keyword>
           <keyword>undefined</keyword>
@@ -58,6 +60,8 @@
 
         <!-- 18.2 Function Properties of the Global Object -->
         <context id="_functions" style-ref="js:built-in-function">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>decodeURIComponent</keyword>
           <keyword>decodeURI</keyword>
           <keyword>encodeURIComponent</keyword>
@@ -70,6 +74,8 @@
         </context> <!-- /_functions -->
 
         <context id="_constructors" style-ref="js:built-in-constructor">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>ArrayBuffer</keyword>
           <keyword>Array</keyword>
           <keyword>BigInt</keyword> <!-- ES2020 -->
@@ -107,6 +113,8 @@
         </context> <!-- /_constructors -->
 
         <context id="_objects" style-ref="js:built-in-object">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>Intl</keyword>
           <keyword>JSON</keyword>
           <keyword>Math</keyword>
@@ -114,6 +122,8 @@
         </context> <!-- /_objects -->
 
         <context id="_object-keywords" style-ref="js:keyword">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>arguments</keyword>
           <keyword>globalThis</keyword> <!-- ES2020 -->
           <keyword>super</keyword>
@@ -166,6 +176,8 @@
       <include>
 
         <context id="_intl-constructors" style-ref="js:built-in-constructor">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>Collator</keyword>
           <keyword>DateTimeFormat</keyword>
           <keyword>NumberFormat</keyword>
@@ -173,6 +185,8 @@
         </context> <!-- /_intl-constructors -->
 
         <context id="_webassembly-constructors" style-ref="js:built-in-constructor">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>CompileError</keyword>
           <keyword>Global</keyword>
           <keyword>Instance</keyword>
@@ -184,10 +198,14 @@
         </context> <!-- /_webassembly-constructors -->
 
         <context id="_array-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>length</keyword>
         </context> <!-- /_array-properties -->
 
         <context id="_array-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>concat</keyword>
           <keyword>copyWithin</keyword>
           <keyword>entries</keyword>
@@ -222,27 +240,37 @@
         </context> <!-- /_array-methods -->
 
         <context id="_arraybuffer-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>byteLength</keyword>
         </context> <!-- /_arraybuffer-properties -->
 
         <context id="_arraybuffer-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>isView</keyword>
           <keyword>slice</keyword>
         </context> <!-- /_arraybuffer-methods -->
 
         <!-- ES2020 -->
         <context id="_bigint-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>asIntN</keyword>
           <keyword>asUintN</keyword>
         </context> <!-- /_bigint-methods -->
 
         <context id="_dataview-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>buffer</keyword>
           <keyword>byteLength</keyword>
           <keyword>byteOffset</keyword>
         </context> <!-- /_dataview-properties -->
 
         <context id="_dataview-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>getFloat32</keyword>
           <keyword>getFloat64</keyword>
           <keyword>getInt16</keyword>
@@ -262,6 +290,8 @@
         </context> <!-- /_dataview-methods -->
 
         <context id="_date-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>getDate</keyword>
           <keyword>getDay</keyword>
           <keyword>getFullYear</keyword>
@@ -308,28 +338,38 @@
         </context> <!-- /_date-methods -->
 
         <context id="_error-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>message</keyword>
           <keyword>name</keyword>
         </context> <!-- /_error-properties -->
 
         <context id="_function-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>length</keyword>
           <keyword>name</keyword>
         </context> <!-- /_function-properties -->
 
         <context id="_function-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>apply</keyword>
           <keyword>bind</keyword>
           <keyword>call</keyword>
         </context> <!-- /_function-methods -->
 
         <context id="_generator-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>next</keyword>
           <keyword>return</keyword>
           <keyword>throw</keyword>
         </context> <!-- /_generator-methods -->
 
         <context id="_intl-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>formatToParts</keyword> <!-- common to intl format object instances -->
           <keyword>format</keyword> <!-- common to intl format object instances -->
           <keyword>getCanonicalLocales</keyword>
@@ -338,23 +378,33 @@
         </context> <!-- /_intl-methods -->
 
         <context id="_intl-collator-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>compare</keyword>
         </context> <!-- /_intl-collator-methods -->
 
         <context id="_intl-pluralrules-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>select</keyword>
         </context> <!-- /_intl-pluralrules-methods -->
 
         <context id="_json-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>parse</keyword>
           <keyword>stringify</keyword>
         </context> <!-- /_json-methods -->
 
         <context id="_map-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>size</keyword>
         </context> <!-- /_map-properties -->
 
         <context id="_map-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>clear</keyword>
           <keyword>delete</keyword>
           <keyword>entries</keyword>
@@ -367,6 +417,8 @@
         </context> <!-- /_map-methods -->
 
         <context id="_math-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>E</keyword>
           <keyword>LN10</keyword>
           <keyword>LN2</keyword>
@@ -378,6 +430,8 @@
         </context> <!-- /_math-properties -->
 
         <context id="_math-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>abs</keyword>
           <keyword>acosh</keyword>
           <keyword>acos</keyword>
@@ -416,6 +470,8 @@
         </context> <!-- /_math-methods -->
 
         <context id="_number-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>EPSILON</keyword>
           <keyword>MAX_SAFE_INTEGER</keyword>
           <keyword>MAX_VALUE</keyword>
@@ -427,6 +483,8 @@
         </context> <!-- /_number-properties -->
 
         <context id="_number-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>isFinite</keyword>
           <keyword>isInteger</keyword>
           <keyword>isNaN</keyword>
@@ -439,11 +497,15 @@
         </context> <!-- /_number-methods -->
 
         <context id="_object-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>constructor</keyword>
           <keyword>prototype</keyword>
         </context> <!-- /_object-properties -->
 
         <context id="_object-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>assign</keyword>
           <keyword>create</keyword>
           <keyword>defineProperties</keyword>
@@ -474,6 +536,8 @@
         </context> <!-- /_object-methods -->
 
         <context id="_promise-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>allSettled</keyword> <!-- ES2020 -->
           <keyword>all</keyword>
           <keyword>catch</keyword>
@@ -485,10 +549,14 @@
         </context> <!-- /_promise-methods -->
 
         <context id="_proxy-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>revocable</keyword>
         </context> <!-- /_proxy-methods -->
 
         <context id="_reflect-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>apply</keyword>
           <keyword>construct</keyword>
           <keyword>defineProperty</keyword>
@@ -505,6 +573,8 @@
         </context> <!-- /_reflect-methods -->
 
         <context id="_regexp-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>flags</keyword>
           <keyword>global</keyword>
           <keyword>ignoreCase</keyword>
@@ -516,15 +586,21 @@
         </context> <!-- /_regexp-properties -->
 
         <context id="_regexp-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>exec</keyword>
           <keyword>test</keyword>
         </context> <!-- /_regexp-methods -->
 
         <context id="_set-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>size</keyword>
         </context> <!-- /_set-properties -->
 
         <context id="_set-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>add</keyword>
           <keyword>clear</keyword>
           <keyword>delete</keyword>
@@ -536,10 +612,14 @@
         </context> <!-- /_set-methods -->
 
         <context id="_string-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>length</keyword>
         </context> <!-- /_string-properties -->
 
         <context id="_string-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>charAt</keyword>
           <keyword>charCodeAt</keyword>
           <keyword>codePointAt</keyword>
@@ -574,6 +654,8 @@
         </context> <!-- /_string-methods -->
 
         <context id="_symbol-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>asyncIterator</keyword> <!-- ES2018 -->
           <keyword>description</keyword> <!-- ES2019 -->
           <keyword>hasInstance</keyword>
@@ -591,6 +673,8 @@
         </context> <!-- /_symbol-properties -->
 
         <context id="_symbol-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>for</keyword>
           <keyword>keyFor</keyword>
         </context> <!-- /_symbol-methods -->
@@ -607,6 +691,8 @@
              * Uint8ClampedArray
         -->
         <context id="_typedarray-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>buffer</keyword>
           <keyword>byteLength</keyword>
           <keyword>byteOffset</keyword>
@@ -616,6 +702,8 @@
         </context> <!-- /_typedarray-properties -->
 
         <context id="_typedarray-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>copyWithin</keyword>
           <keyword>entries</keyword>
           <keyword>every</keyword>
@@ -643,6 +731,8 @@
         </context> <!-- /_typedarray-methods -->
 
         <context id="_weakmap-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>delete</keyword>
           <keyword>get</keyword>
           <keyword>has</keyword>
@@ -650,12 +740,16 @@
         </context> <!-- /_weakmap-methods -->
 
         <context id="_weakset-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>add</keyword>
           <keyword>delete</keyword>
           <keyword>has</keyword>
         </context> <!-- /_weakset-methods -->
 
         <context id="_webassembly-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>compileStreaming</keyword>
           <keyword>compile</keyword>
           <keyword>instantiateStreaming</keyword>
@@ -664,32 +758,46 @@
         </context> <!-- /_webassembly-methods -->
 
         <context id="_webassembly-instance-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>exports</keyword>
         </context> <!-- /_webassembly-instance-properties -->
 
         <context id="_webassembly-global-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>value</keyword>
         </context> <!-- /_webassembly-global-properties -->
 
         <context id="_webassembly-module-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>customSections</keyword>
           <keyword>exports</keyword>
           <keyword>imports</keyword>
         </context> <!-- /_webassembly-module-methods -->
 
         <context id="_webassembly-memory-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>buffer</keyword>
         </context> <!-- /_webassembly-memory-properties -->
 
         <context id="_webassembly-memory-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>grow</keyword>
         </context> <!-- /_webassembly-memory-methods -->
 
         <context id="_webassembly-table-properties" style-ref="js:built-in-property">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>length</keyword>
         </context> <!-- /_webassembly-table-properties -->
 
         <context id="_webassembly-table-methods" style-ref="js:built-in-method">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>get</keyword>
           <keyword>grow</keyword>
           <keyword>set</keyword>
diff --git a/data/language-specs/javascript.lang b/data/language-specs/javascript.lang
index 2c87661a..5e409511 100644
--- a/data/language-specs/javascript.lang
+++ b/data/language-specs/javascript.lang
@@ -420,6 +420,8 @@
 
         <!-- <Keyword> -->
         <context id="_keywords" style-ref="reserved-word">
+          <prefix>\%{keyword-start}</prefix>
+          <suffix>\%{keyword-end}</suffix>
           <keyword>await</keyword> <!-- ES2017 -->
           <keyword>break</keyword>
           <keyword>case</keyword>
@@ -460,12 +462,16 @@
              restrictions"
              https://tc39.github.io/ecma262/#sec-keywords -->
         <context id="_strict-mode-keywords" style-ref="reserved-word">
+          <prefix>\%{keyword-start}</prefix>
+          <suffix>\%{keyword-end}</suffix>
           <keyword>let</keyword>
           <keyword>static</keyword>
         </context> <!-- /_strict-mode-keywords -->
 
         <!-- <FutureReservedWord> -->
         <context id="_future-reserved-words" style-ref="reserved-word">
+          <prefix>\%{keyword-start}</prefix>
+          <suffix>\%{keyword-end}</suffix>
           <keyword>enum</keyword>
         </context> <!-- /_future-reserved-words -->
 
@@ -473,6 +479,8 @@
              restrictions"
              https://tc39.github.io/ecma262/#sec-future-reserved-words -->
         <context id="_strict-mode-future-reserved-words" style-ref="reserved-word">
+          <prefix>\%{keyword-start}</prefix>
+          <suffix>\%{keyword-end}</suffix>
           <keyword>implements</keyword>
           <keyword>interface</keyword>
           <keyword>package</keyword>
diff --git a/data/language-specs/objj.lang b/data/language-specs/objj.lang
index 7fd00d16..d5b1ee40 100644
--- a/data/language-specs/objj.lang
+++ b/data/language-specs/objj.lang
@@ -94,6 +94,8 @@
     <!-- ## Objective-J types -->
 
     <context id="_common-types" style-ref="type">
+      <prefix>\%{js:keyword-start}</prefix>
+      <suffix>\%{js:keyword-end}</suffix>
       <keyword>BOOL</keyword>
       <keyword>byte</keyword>
       <keyword>char</keyword>
@@ -112,11 +114,14 @@
       <include>
 
         <context id="_variable-only-type-keywords" style-ref="type">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>IBOutlet</keyword>
         </context> <!-- /_variable-only-type-keywords -->
 
         <context id="_variable-only-at-type-keywords" style-ref="type">
           <prefix>@</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>outlet</keyword>
         </context> <!-- /_variable-only-at-type-keywords -->
 
@@ -127,12 +132,15 @@
       <include>
 
         <context id="_method-return-only-type-keywords" style-ref="type">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>IBAction</keyword>
           <keyword>void</keyword>
         </context> <!-- /_method-return-only-type-keywords -->
 
         <context id="_method-return-only-at-type-keywords" style-ref="type">
           <prefix>@</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>action</keyword>
         </context> <!-- /_method-return-only-at-type-keywords -->
 
@@ -187,6 +195,8 @@
           <include>
 
             <context id="_at-implementation-variable-declaration-accessor-modifier-keywords" 
style-ref="js:keyword">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>copy</keyword>
               <keyword>getter</keyword>
               <keyword>property</keyword>
@@ -339,6 +349,7 @@
 
             <context id="_at-protocol-at-keywords" style-ref="js:keyword">
               <prefix>@</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>optional</keyword>
               <keyword>required</keyword>
             </context> <!-- /_at-protocol-at-keywords -->
@@ -502,17 +513,23 @@
       <include>
 
         <context id="_boolean-constants" style-ref="js:boolean">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>NO</keyword>
           <keyword>YES</keyword>
         </context> <!-- /_boolean-constants -->
 
         <context id="_null-constants" style-ref="js:null-value">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>nil</keyword>
           <keyword>Nil</keyword>
           <keyword>NULL</keyword>
         </context> <!-- /_null-constants -->
 
         <context id="_math-constants" style-ref="js:built-in-value">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>E</keyword>
           <keyword>LOG10E</keyword>
           <keyword>LOG2E</keyword>
@@ -526,6 +543,8 @@
         </context> <!-- /_math-constants -->
 
         <context id="_math-functions" style-ref="js:built-in-function">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>ABS</keyword>
           <keyword>ACOS</keyword>
           <keyword>ASIN</keyword>
@@ -548,6 +567,8 @@
 
         <!-- "super" is already highlighted by default -->
         <context id="_object-keywords" style-ref="js:keyword">
+          <prefix>\%{js:keyword-start}</prefix>
+          <suffix>\%{js:keyword-end}</suffix>
           <keyword>_cmd</keyword>
           <keyword>self</keyword>
         </context> <!-- /_object-keywords -->
diff --git a/data/language-specs/typescript-js-functions-classes.lang 
b/data/language-specs/typescript-js-functions-classes.lang
index 6c629bff..da00c487 100644
--- a/data/language-specs/typescript-js-functions-classes.lang
+++ b/data/language-specs/typescript-js-functions-classes.lang
@@ -34,6 +34,8 @@
     <!-- # Accessibility modifier -->
 
     <context id="_accessibility-modifier" style-ref="js:keyword" once-only="true">
+      <prefix>\%{js:keyword-start}</prefix>
+      <suffix>\%{js:keyword-end}</suffix>
       <keyword>private</keyword>
       <keyword>protected</keyword>
       <keyword>public</keyword>
@@ -265,6 +267,8 @@
           <include>
 
             <context id="_class-body-member-modifier-keywords" style-ref="js:keyword">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>abstract</keyword>
               <keyword>declare</keyword>
               <keyword>readonly</keyword>
diff --git a/data/language-specs/typescript-type-literals.lang 
b/data/language-specs/typescript-type-literals.lang
index 541e17dd..eaec6b44 100644
--- a/data/language-specs/typescript-type-literals.lang
+++ b/data/language-specs/typescript-type-literals.lang
@@ -203,6 +203,8 @@
           <include>
 
             <context id="_choice-object-type-literal-modifier-keyword" style-ref="typescript:type-keyword" 
end-parent="true">
+              <prefix>\%{js:keyword-start}</prefix>
+              <suffix>\%{js:keyword-end}</suffix>
               <keyword>readonly</keyword>
             </context> <!-- /_choice-object-type-literal-modifier-keyword -->
 
diff --git a/data/language-specs/typescript.lang b/data/language-specs/typescript.lang
index 33e2c4c9..80160f1f 100644
--- a/data/language-specs/typescript.lang
+++ b/data/language-specs/typescript.lang
@@ -262,6 +262,8 @@
     <!-- ## Constructor modifier -->
 
     <context id="constructor-modifier" style-ref="type-keyword" once-only="true">
+      <prefix>\%{js:keyword-start}</prefix>
+      <suffix>\%{js:keyword-end}</suffix>
       <keyword>new</keyword>
     </context> <!-- /constructor-modifier -->
 
@@ -448,6 +450,8 @@
     <!-- ## Type name -->
 
     <context id="_built-in-library-types" style-ref="built-in-library-type">
+      <prefix>\%{js:keyword-start}</prefix>
+      <suffix>\%{js:keyword-end}</suffix>
       <keyword>Exclude</keyword>
       <keyword>Extract</keyword>
       <keyword>InstanceType</keyword>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]