Skip to content

Instantly share code, notes, and snippets.

@jbman
Last active March 1, 2024 15:53
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save jbman/53b22072a2da24b6bd0d to your computer and use it in GitHub Desktop.
Save jbman/53b22072a2da24b6bd0d to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is based on the javascript.lang file of GtkSourceView.
It has additional Typescript keywords defined.
Author: Johannes Bergmann
Copyright (C) 2014 Johannes Bergmann
###
Author: Scott Martin <scott@coffeeblack.org>
Copyright (C) 2004 Scott Martin <scott@coffeeblack.org>
Copyright (C) 2005 Stef Walter (formerly Nate Nielsen) <stef@memberwebs.com>
Copyright (C) 2005-2007 Marco Barisione <barisione@gmail.com>
Copyright (C) 2005-2007 Emanuele Aina
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
GtkSourceView is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-->
<language id="ts" _name="TypeScript" version="2.0" _section="Scripts">
<metadata>
<property name="mimetypes">application/typescript;application/x-typescript;text/x-typescript;text/typescript;</property>
<property name="globs">*.ts</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
</metadata>
<styles>
<style id="escape" _name="Escaped Character" map-to="def:special-char"/>
<style id="null-value" _name="Null Value" map-to="def:special-constant"/>
<style id="undefined-value" _name="Undefined Value" map-to="def:special-constant"/>
<style id="boolean" _name="Boolean Value" map-to="def:boolean"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="type" _name="Data Type" map-to="def:type"/>
<style id="function" _name="Function" map-to="def:builtin"/>
<style id="properties" _name="Properties" map-to="def:statement"/>
<style id="constructors" _name="Constructors" map-to="def:type"/>
<style id="future-words" _name="Future Reserved Keywords" map-to="def:error"/>
<style id="string" _name="String" map-to="def:string"/>
<style id="regex" _name="Regular Expression" map-to="def:string"/>
</styles>
<definitions>
<!--regex-->
<define-regex id="regex-opts">[iomx]*[neus]?[iomx]*</define-regex>
<!--contexts NOT used in the main context-->
<context id="escape" style-ref="escape">
<match>\\((0-7){3}|(x[a-fA-F0-9]{2})|(c\S)|([CM]-\S)|(M-C-\S)|.)</match>
</context>
<context id="regex-bracketed" style-ref="escape" style-inside="true">
<start>(?&lt;!\\)[[]</start>
<end>(?&lt;!\\)]</end>
</context>
<!--contexts used in the main context-->
<context id="regex-simple" style-ref="regex">
<start extended="true">
((?&lt;=([(]|\s))|^)
\/
(?=
([^/\\]*(\\.))*
[^/]*
\/
\%{regex-opts}
([),;.]|\s|$)
)</start>
<end>\/\%{regex-opts}</end>
<include>
<context ref="escape"/>
<context ref="def:line-continue"/>
<context ref="regex-bracketed"/>
</include>
</context>
<!--
There was a long discussion on ##javascript on freenode between
'katspaugh', 'joo' and 'prog_' on whether 'undefined' should be
highlighted on not, specialy as a constant. The conclusion was "It can't
be highlighted as a constant literal value, because it can be an
identifier (of a variable value) but leave it be as it is. Let tradition
and convention obscure the details."
-->
<context id="undefined-value" style-ref="undefined-value">
<keyword>undefined</keyword>
</context>
<context id="null-value" style-ref="null-value">
<keyword>null</keyword>
</context>
<context id="boolean" style-ref="boolean">
<keyword>false</keyword>
<keyword>true</keyword>
</context>
<context id="keywords" style-ref="keyword">
<keyword>break</keyword>
<keyword>case</keyword>
<keyword>catch</keyword>
<keyword>continue</keyword>
<keyword>debugger</keyword>
<keyword>default</keyword>
<keyword>delete</keyword>
<keyword>do</keyword>
<keyword>else</keyword>
<keyword>export</keyword>
<keyword>finally</keyword>
<keyword>for</keyword>
<keyword>function</keyword>
<keyword>if</keyword>
<keyword>import</keyword>
<keyword>instanceof</keyword>
<keyword>in</keyword>
<keyword>new</keyword>
<keyword>return</keyword>
<keyword>switch</keyword>
<keyword>this</keyword>
<keyword>throw</keyword>
<keyword>try</keyword>
<keyword>typeof</keyword>
<keyword>var</keyword>
<keyword>void</keyword>
<keyword>while</keyword>
<keyword>with</keyword>
</context>
<context id="unofficial-keywords" style-ref="keyword">
<keyword>const</keyword>
<keyword>let</keyword>
<keyword>yield</keyword>
</context>
<context id="typescript-keywords" style-ref="keyword">
<keyword>class</keyword>
<keyword>interface</keyword>
<keyword>extends</keyword>
<keyword>implements</keyword>
<keyword>private</keyword>
<keyword>public</keyword>
</context>
<context id="typescript-primitive-types" style-ref="type">
<keyword>any</keyword>
<keyword>number</keyword>
<keyword>boolean</keyword>
<keyword>string</keyword>
<keyword>void</keyword>
</context>
<context id="types" style-ref="type">
<keyword>Infinity</keyword>
<keyword>NaN</keyword>
</context>
<context id="functions" style-ref="function">
<keyword>abs</keyword>
<keyword>acos</keyword>
<keyword>apply</keyword>
<keyword>asin</keyword>
<keyword>atan2</keyword>
<keyword>atan</keyword>
<keyword>call</keyword>
<keyword>ceil</keyword>
<keyword>charAt</keyword>
<keyword>charCodeAt</keyword>
<keyword>concat</keyword>
<keyword>cos</keyword>
<keyword>decodeURIComponent</keyword>
<keyword>decodeURI</keyword>
<keyword>encodeURIComponent</keyword>
<keyword>encodeURI</keyword>
<keyword>escape</keyword>
<keyword>eval</keyword>
<keyword>exec</keyword>
<keyword>exp</keyword>
<keyword>floor</keyword>
<keyword>fromCharCode</keyword>
<keyword>getDate</keyword>
<keyword>getDay</keyword>
<keyword>getFullYear</keyword>
<keyword>getHours</keyword>
<keyword>getMilliseconds</keyword>
<keyword>getMinutes</keyword>
<keyword>getMonth</keyword>
<keyword>getSeconds</keyword>
<keyword>getTime</keyword>
<keyword>getTimezoneOffset</keyword>
<keyword>getUTCDate</keyword>
<keyword>getUTCDay</keyword>
<keyword>getUTCFullYear</keyword>
<keyword>getUTCHours</keyword>
<keyword>getUTCMilliseconds</keyword>
<keyword>getUTCMinutes</keyword>
<keyword>getUTCMonth</keyword>
<keyword>getUTCSeconds</keyword>
<keyword>getYear</keyword>
<keyword>hasOwnProperty</keyword>
<keyword>indexOf</keyword>
<keyword>isFinite</keyword>
<keyword>isNaN</keyword>
<keyword>isPrototypeOf</keyword>
<keyword>join</keyword>
<keyword>lastIndexOf</keyword>
<keyword>localeCompare</keyword>
<keyword>log</keyword>
<keyword>match</keyword>
<keyword>max</keyword>
<keyword>min</keyword>
<keyword>parseFloat</keyword>
<keyword>parseInt</keyword>
<keyword>parse</keyword>
<keyword>pop</keyword>
<keyword>pow</keyword>
<keyword>propertyIsEnumerable</keyword>
<keyword>push</keyword>
<keyword>random</keyword>
<keyword>replace</keyword>
<keyword>reverse</keyword>
<keyword>round</keyword>
<keyword>search</keyword>
<keyword>setDate</keyword>
<keyword>setFullYear</keyword>
<keyword>setHours</keyword>
<keyword>setMilliseconds</keyword>
<keyword>setMinutes</keyword>
<keyword>setMonth</keyword>
<keyword>setSeconds</keyword>
<keyword>setTime</keyword>
<keyword>setUTCDate</keyword>
<keyword>setUTCFullYear</keyword>
<keyword>setUTCHours</keyword>
<keyword>setUTCMilliseconds</keyword>
<keyword>setUTCMinutes</keyword>
<keyword>setUTCMonth</keyword>
<keyword>setUTCSeconds</keyword>
<keyword>setYear</keyword>
<keyword>shift</keyword>
<keyword>sin</keyword>
<keyword>slice</keyword>
<keyword>sort</keyword>
<keyword>split</keyword>
<keyword>sqrt</keyword>
<keyword>substring</keyword>
<keyword>substr</keyword>
<keyword>tan</keyword>
<keyword>toDateString</keyword>
<keyword>toExponential</keyword>
<keyword>toFixed</keyword>
<keyword>toGMTString</keyword>
<keyword>toLocaleDateString</keyword>
<keyword>toLocaleLowerCase</keyword>
<keyword>toLocaleString</keyword>
<keyword>toLocaleTimeString</keyword>
<keyword>toLocaleUpperCase</keyword>
<keyword>toLowerCase</keyword>
<keyword>toPrecision</keyword>
<keyword>toString</keyword>
<keyword>toTimeString</keyword>
<keyword>toUpperCase</keyword>
<keyword>toUTCString</keyword>
<keyword>unescape</keyword>
<keyword>unshift</keyword>
<keyword>UTC</keyword>
<keyword>valueOf</keyword>
</context>
<context id="properties" style-ref="properties">
<prefix>\.</prefix>
<keyword>constructor</keyword>
<keyword>global</keyword>
<keyword>ignoreCase</keyword>
<keyword>lastIndex</keyword>
<keyword>length</keyword>
<keyword>message</keyword>
<keyword>multiline</keyword>
<keyword>name</keyword>
<keyword>NEGATIVE_INFINITY</keyword>
<keyword>POSITIVE_INFINITY</keyword>
<keyword>prototype</keyword>
<keyword>source</keyword>
</context>
<context id="constructors" style-ref="constructors">
<keyword>Array</keyword>
<keyword>Boolean</keyword>
<keyword>Date</keyword>
<keyword>Error</keyword>
<keyword>EvalError</keyword>
<keyword>Function</keyword>
<keyword>Math</keyword>
<keyword>Number</keyword>
<keyword>Object</keyword>
<keyword>RangeError</keyword>
<keyword>RegExp</keyword>
<keyword>String</keyword>
<keyword>SyntaxError</keyword>
<keyword>TypeError</keyword>
<keyword>URIError</keyword>
</context>
<context id="future-words" style-ref="future-words">
<keyword>class</keyword>
<keyword>enum</keyword>
<keyword>extends</keyword>
<keyword>super</keyword>
<!-- in strict mode -->
<keyword>implements</keyword>
<keyword>interface</keyword>
<keyword>package</keyword>
<keyword>private</keyword>
<keyword>protected</keyword>
<keyword>public</keyword>
<keyword>static</keyword>
</context>
<!--main context-->
<context id="ts" class="no-spell-check">
<include>
<context ref="def:c-like-comment"/>
<context ref="def:c-like-comment-multiline"/>
<context ref="def:c-like-close-comment-outside-comment"/>
<context ref="def:string" style-ref="string"/>
<context ref="def:single-quoted-string" style-ref="string"/>
<context ref="def:float"/>
<context ref="def:decimal"/>
<context ref="def:octal"/>
<context ref="def:hexadecimal"/>
<context ref="undefined-value"/>
<context ref="boolean"/>
<context ref="keywords"/>
<context ref="unofficial-keywords"/>
<context ref="typescript-keywords"/>
<context ref="typescript-primitive-types"/>
<context ref="types"/>
<context ref="functions"/>
<context ref="properties"/>
<context ref="constructors"/>
<context ref="future-words"/>
<context ref="regex-simple"/>
</include>
</context>
<!--main context-->
</definitions>
</language>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment