New installer: 2021-04-29

This commit is contained in:
Tom Schoonjans
2021-04-29 13:18:31 +01:00
parent 15fdc2228e
commit 105f54e3c7
937 changed files with 6859 additions and 1359 deletions

View File

@@ -153,6 +153,24 @@
<value nick="lockscreen" value="0"/>
<value nick="always" value="1"/>
</enum>
<enum id="org.gnome.desktop.GDesktopFontAntialiasingMode">
<value nick="none" value="0"/>
<value nick="grayscale" value="1"/>
<value nick="rgba" value="2"/>
</enum>
<enum id="org.gnome.desktop.GDesktopFontHinting">
<value nick="none" value="0"/>
<value nick="slight" value="1"/>
<value nick="medium" value="2"/>
<value nick="full" value="3"/>
</enum>
<enum id="org.gnome.desktop.GDesktopFontRgbaOrder">
<value nick="rgba" value="0"/>
<value nick="rgb" value="1"/>
<value nick="bgr" value="2"/>
<value nick="vrgb" value="3"/>
<value nick="vbgr" value="4"/>
</enum>
</schemalist>
<!-- Generated data ends here -->

View File

@@ -273,5 +273,26 @@
If true, pressing a key will highlight the current pointer location on screen.
</description>
</key>
<key name="font-antialiasing" enum="org.gnome.desktop.GDesktopFontAntialiasingMode">
<default>'grayscale'</default>
<summary>Antialiasing</summary>
<description>
The type of antialiasing to use when rendering fonts. Possible values are: “none” for no antialiasing, “grayscale” for standard grayscale antialiasing, and “rgba” for subpixel antialiasing (LCD screens only).
</description>
</key>
<key name="font-hinting" enum="org.gnome.desktop.GDesktopFontHinting">
<default>'slight'</default>
<summary>Hinting</summary>
<description>
The type of hinting to use when rendering fonts. Possible values are: “none” for no hinting and “slight” for fitting only to the Y-axis like Microsofts ClearType, DirectWrite and Adobes proprietary font rendering engine. Ignores native hinting within the font, generates hints algorithmically. Used on Ubuntu by default. Recommended. The meaning of “medium” and “full” depends on the font format (.ttf, .otf, .pfa/.pfb) and the installed version of FreeType. They usually try to fit glyphs to both the X and the Y axis (except for .otf: Y-only). This can lead to distortion and/or inconsistent rendering depending on the quality of the font, the font format and the state of FreeTypes font engines.
</description>
</key>
<key name="font-rgba-order" enum="org.gnome.desktop.GDesktopFontRgbaOrder">
<default>'rgb'</default>
<summary>RGBA order</summary>
<description>
The order of subpixel elements on an LCD screen; only used when antialiasing is set to “rgba”. Possible values are: “rgb” for red on left (most common), “bgr” for blue on left, “vrgb” for red on top, “vbgr” for red on bottom.
</description>
</key>
</schema>
</schemalist>

View File

@@ -16,7 +16,7 @@
</key>
<key name="two-finger-scrolling-enabled" type="b">
<default>true</default>
<summary>Whether edge scrolling is enabled</summary>
<summary>Whether two-finger scrolling is enabled</summary>
<description>When enabled, touchpads that support two-finger scrolling will have that feature enabled.</description>
</key>
<key name="disable-while-typing" type="b">
@@ -130,6 +130,16 @@
<summary>Emulate middle click</summary>
<description>Set this to TRUE to enable middle click during simultaneous left and right click.</description>
</key>
<key name="double-click" type="i">
<default>400</default>
<summary>Double click time</summary>
<description>Length of a double click in milliseconds.</description>
</key>
<key name="drag-threshold" type="i">
<default>8</default>
<summary>Drag threshold</summary>
<description>Distance before a drag is started.</description>
</key>
</schema>
<schema id="org.gnome.desktop.peripherals.tablet">
<key name="output" type="as">
@@ -210,6 +220,11 @@
<range min="0" max="24"/>
<summary>Mouse wheel emulation button. 0 to disable the feature.</summary>
</key>
<key name="scroll-wheel-emulation-button-lock" type="b">
<default>false</default>
<summary>Mouse wheel emulation button lock</summary>
<description>Set this to TRUE to enable button locking for the wheel emulation button. If enabled, the first click of the button enables scrolling, the second click disables scrolling again.</description>
</key>
<key name="accel-profile" enum="org.gnome.desktop.GDesktopPointerAccelProfile">
<default>'default'</default>
<summary>Acceleration profile</summary>

View File

@@ -9,8 +9,8 @@
<key name="session-name" type="s">
<default>"gnome"</default>
<summary>Session type</summary>
<description>The name of the session to use. Known values are
“gnome” and “gnome-fallback”.</description>
<description>The name of the session to use. Known value is
“gnome”.</description>
</key>
</schema>
</schemalist>

View File

@@ -52,19 +52,19 @@
<summary>Switch to workspace 12</summary>
</key>
<key name="switch-to-workspace-left" type="as">
<default><![CDATA[['<Control><Alt>Left']]]></default>
<default><![CDATA[['<Super>Page_Up','<Super><Alt>Left','<Control><Alt>Left']]]></default>
<summary>Switch to workspace left</summary>
</key>
<key name="switch-to-workspace-right" type="as">
<default><![CDATA[['<Control><Alt>Right']]]></default>
<default><![CDATA[['<Super>Page_Down','<Super><Alt>Right','<Control><Alt>Right']]]></default>
<summary>Switch to workspace right</summary>
</key>
<key name="switch-to-workspace-up" type="as">
<default><![CDATA[['<Super>Page_Up','<Control><Alt>Up']]]></default>
<default><![CDATA[['<Control><Alt>Up']]]></default>
<summary>Switch to workspace above</summary>
</key>
<key name="switch-to-workspace-down" type="as">
<default><![CDATA[['<Super>Page_Down','<Control><Alt>Down']]]></default>
<default><![CDATA[['<Control><Alt>Down']]]></default>
<summary>Switch to workspace below</summary>
</key>
<key name="switch-to-workspace-last" type="as">
@@ -244,19 +244,19 @@
<summary>Move window to last workspace</summary>
</key>
<key name="move-to-workspace-left" type="as">
<default><![CDATA[['<Control><Shift><Alt>Left']]]></default>
<default><![CDATA[['<Super><Shift>Page_Up','<Super><Shift><Alt>Left','<Control><Shift><Alt>Left']]]></default>
<summary>Move window one workspace to the left</summary>
</key>
<key name="move-to-workspace-right" type="as">
<default><![CDATA[['<Control><Shift><Alt>Right']]]></default>
<default><![CDATA[['<Super><Shift>Page_Down','<Super><Shift><Alt>Right','<Control><Shift><Alt>Right']]]></default>
<summary>Move window one workspace to the right</summary>
</key>
<key name="move-to-workspace-up" type="as">
<default><![CDATA[['<Super><Shift>Page_Up','<Control><Shift><Alt>Up']]]></default>
<default><![CDATA[['<Control><Shift><Alt>Up']]]></default>
<summary>Move window one workspace up</summary>
</key>
<key name="move-to-workspace-down" type="as">
<default><![CDATA[['<Super><Shift>Page_Down','<Control><Shift><Alt>Down']]]></default>
<default><![CDATA[['<Control><Shift><Alt>Down']]]></default>
<summary>Move window one workspace down</summary>
</key>
<key name="move-to-monitor-left" type="as">

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<enum id='org.gtk.Demo4.Color'>
<value nick='red' value='0'/>
<value nick='green' value='1'/>
<value nick='blue' value='2'/>
</enum>
<schema id='org.gtk.Demo4' path='/org/gtk/Demo4/'>
<key name='color' enum='org.gtk.Demo4.Color'>
<default>'red'</default>
</key>
<key name='window-size' type='(ii)'>
<default>(-1, -1)</default>
</key>
<key name='maximized' type='b'>
<default>false</default>
</key>
<key name='fullscreen' type='b'>
<default>false</default>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id='org.gtk.gtk4.Settings.ColorChooser' path='/org/gtk/gtk4/settings/color-chooser/'>
<key name='custom-colors' type='a(dddd)'>
<default>[]</default>
<summary>Custom colors</summary>
<description>
An array of custom colors to show in the color chooser. Each color is
specified as a tuple of four doubles, specifying RGBA values between
0 and 1.
</description>
</key>
<key name='selected-color' type='(bdddd)'>
<default>(false,1.0,1.0,1.0,1.0)</default>
<summary>The selected color</summary>
<description>
The selected color, described as a tuple whose first member is a
boolean that is true if a color was selected, and the remaining
four members are four doubles, specifying RGBA values between
0 and 1.
</description>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id='org.gtk.gtk4.Settings.Debug' path='/org/gtk/gtk4/settings/debug/'>
<key name='enable-inspector-keybinding' type='b'>
<default>true</default>
<summary>Enable inspector keybinding</summary>
<description>
If this setting is true, GTK lets the user open an interactive
debugging window with a keybinding. The default shortcuts for
the keybinding are Control-Shift-I and Control-Shift-D.
</description>
</key>
<key name='inspector-warning' type='b'>
<default>true</default>
<summary>Inspector warning</summary>
<description>
If this setting is true, GTK shows a warning before letting
the user use the interactive debugger.
</description>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id='org.gtk.gtk4.Settings.EmojiChooser' path='/org/gtk/gtk4/settings/emoji-chooser/'>
<key name='recent-emoji' type='a((ausasu)u)'>
<default>[]</default>
<summary>Recently used Emoji</summary>
<description>
An array of Emoji definitions to show in the Emoji chooser. Each Emoji is
specified as an array of codepoints, name and keywords. The extra
integer after this pair is the code of the Fitzpatrick modifier to use in
place of a 0 in the codepoint array.
</description>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2010 Christian Persch
This library 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, or (at your option)
any later version.
This library 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, see <http://www.gnu.org/licenses/>.
-->
<schemalist>
<enum id='org.gtk.gtk4.Settings.FileChooser.LocationMode'>
<value nick='path-bar' value='0'/>
<value nick='filename-entry' value='1'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.SortColumn'>
<value nick='name' value='0'/>
<value nick='size' value='1'/>
<value nick='type' value='2'/>
<value nick='modified' value='3'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.SortOrder'>
<value nick='ascending' value='0'/>
<value nick='descending' value='1'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.StartupMode'>
<value nick='recent' value='0'/>
<value nick='cwd' value='1'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.ClockFormat'>
<value nick='24h' value='0'/>
<value nick='12h' value='1'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.DateFormat'>
<value nick='regular' value='0'/>
<value nick='with-time' value='1'/>
</enum>
<enum id='org.gtk.gtk4.Settings.FileChooser.TypeFormat'>
<value nick='mime' value='0'/>
<value nick='description' value='1'/>
<value nick='category' value='2'/>
</enum>
<schema id='org.gtk.gtk4.Settings.FileChooser' path='/org/gtk/gtk4/settings/file-chooser/'>
<key name='last-folder-uri' type='s'>
<default>""</default>
</key>
<key name='location-mode' enum='org.gtk.gtk4.Settings.FileChooser.LocationMode'>
<default>'path-bar'</default>
<summary>Location mode</summary>
<description>
Controls whether the file chooser shows just a path bar, or a visible entry
for the filename as well, for the benefit of typing-oriented users. The
possible values for these modes are "path-bar" and "filename-entry".
</description>
</key>
<key name='show-hidden' type='b'>
<default>false</default>
<summary>Show hidden files</summary>
<description>
Controls whether the file chooser shows hidden files or not.
</description>
</key>
<key type="b" name="sort-directories-first">
<default>false</default>
<summary>Show folders first</summary>
<description>
If set to true, then folders are shown before files in the list.
</description>
</key>
<key name='expand-folders' type='b'>
<default>false</default>
<summary>Expand folders</summary>
<description>This key is deprecated; do not use it.</description>
</key>
<key name='show-size-column' type='b'>
<default>true</default>
<summary>Show file sizes</summary>
<description>
Controls whether the file chooser shows a column with file sizes.
</description>
</key>
<key name='show-type-column' type='b'>
<default>true</default>
<summary>Show file types</summary>
<description>
Controls whether the file chooser shows a column with file types.
</description>
</key>
<key name='sort-column' enum='org.gtk.gtk4.Settings.FileChooser.SortColumn'>
<default>'name'</default>
<summary>Sort column</summary>
<description>
Can be one of "name", "modified", or "size". It controls
which of the columns in the file chooser is used for sorting
the list of files.
</description>
</key>
<key name='sort-order' enum='org.gtk.gtk4.Settings.FileChooser.SortOrder'>
<default>'ascending'</default>
<summary>Sort order</summary>
<description>
Can be one of the strings "ascending" or "descending".
</description>
</key>
<key name='window-position' type='(ii)'>
<default>(-1, -1)</default>
<summary>Window position</summary>
<description>
The (x, y) coordinates of the upper-left corner of the GtkFileChooserDialog's
window.
</description>
</key>
<key name='window-size' type='(ii)'>
<default>(-1, -1)</default>
<summary>Window size</summary>
<description>
The size (width, height) of the GtkFileChooserDialog's window, in pixels.
</description>
</key>
<key name='startup-mode' enum='org.gtk.gtk4.Settings.FileChooser.StartupMode'>
<default>'recent'</default>
<summary>Startup mode</summary>
<description>
Either "recent" or "cwd"; controls whether the file chooser
starts up showing the list of recently-used files, or the
contents of the current working directory.
</description>
</key>
<key name='sidebar-width' type='i'>
<default>-1</default>
<summary>Sidebar width</summary>
<description>
Width in pixels of the file chooser's places sidebar.
</description>
</key>
<key name="clock-format" enum="org.gtk.gtk4.Settings.FileChooser.ClockFormat">
<default>'24h'</default>
<summary>Time format</summary>
<description>
Whether the time is shown in 24h or 12h format.
</description>
</key>
<key name="date-format" enum="org.gtk.gtk4.Settings.FileChooser.DateFormat">
<default>'regular'</default>
<summary>Date format</summary>
<description>
The amount of detail to show in the Modified column.
</description>
</key>
<key name="type-format" enum="org.gtk.gtk4.Settings.FileChooser.TypeFormat">
<default>'category'</default>
<summary>Type format</summary>
<description>
Different ways to show the 'Type' column information.
Example outputs for a video mp4 file:
'mime' -> 'video/mp4'
'description' -> 'MPEG-4 video'
'category' -> 'Video'
</description>
</key>
</schema>
</schemalist>

View File

@@ -102,7 +102,7 @@
<match extended="true">
\%{preproc-start}
(include|import)\s*
(".*?"|&lt;.*&gt;)
(".*?"|&lt;.*?&gt;)
</match>
<include>
<context id="included-file" sub-pattern="2" style-ref="included-file" class="path"/>

View File

@@ -87,7 +87,7 @@
<match extended="true">
\%{preproc-start}
(include|import)\s*
(".*?"|&lt;.*&gt;)
(".*?"|&lt;.*?&gt;)
</match>
<include>
<context id="included-file" sub-pattern="2" style-ref="included-file"/>

View File

@@ -45,6 +45,7 @@
<context id="builtin-command" style-ref="builtin-command">
<prefix>(?i)\b</prefix> <!-- case insensitive -->
<keyword>ADD_COMPILE_DEFINITIONS</keyword>
<keyword>ADD_COMPILE_OPTIONS</keyword>
<keyword>ADD_CUSTOM_COMMAND</keyword>
<keyword>ADD_CUSTOM_TARGET</keyword>
@@ -58,6 +59,7 @@
<keyword>AUX_SOURCE_DIRECTORY</keyword>
<keyword>BUILD_COMMAND</keyword>
<keyword>CMAKE_HOST_SYSTEM_INFORMATION</keyword>
<keyword>CMAKE_LANGUAGE</keyword>
<keyword>CMAKE_MINIMUM_REQUIRED</keyword>
<keyword>CMAKE_PARSE_ARGUMENTS</keyword>
<keyword>CMAKE_POLICY</keyword>
@@ -110,8 +112,6 @@
<keyword>MESSAGE</keyword>
<keyword>OPTION</keyword>
<keyword>PROJECT</keyword>
<keyword>QT_WRAP_CPP</keyword>
<keyword>QT_WRAP_UI</keyword>
<keyword>REMOVE_DEFINITIONS</keyword>
<keyword>SEPARATE_ARGUMENTS</keyword>
<keyword>SET</keyword>
@@ -130,6 +130,7 @@
<keyword>TARGET_LINK_DIRECTORIES</keyword>
<keyword>TARGET_LINK_LIBRARIES</keyword>
<keyword>TARGET_LINK_OPTIONS</keyword>
<keyword>TARGET_PRECOMPILE_HEADERS</keyword>
<keyword>TARGET_SOURCES</keyword>
<keyword>TRY_COMPILE</keyword>
<keyword>TRY_RUN</keyword>
@@ -148,6 +149,8 @@
<keyword>LOAD_COMMAND</keyword>
<keyword>MAKE_DIRECTORY</keyword>
<keyword>OUTPUT_REQUIRED_FILES</keyword>
<keyword>QT_WRAP_CPP</keyword>
<keyword>QT_WRAP_UI</keyword>
<keyword>REMOVE</keyword>
<keyword>SUBDIR_DEPENDS</keyword>
<keyword>SUBDIRS</keyword>
@@ -173,6 +176,9 @@
<context id="builtin-variable" style-ref="builtin-variable">
<keyword>\w+_BINARY_DIR</keyword>
<keyword>\w+_DESCRIPTION</keyword>
<keyword>\w+_HOMEPAGE_URL</keyword>
<keyword>\w+_ROOT</keyword>
<keyword>\w+_SOURCE_DIR</keyword>
<keyword>\w+_VERSION</keyword>
<keyword>\w+_VERSION_MAJOR</keyword>
@@ -183,67 +189,66 @@
<keyword>APPLE</keyword>
<keyword>BORLAND</keyword>
<keyword>BUILD_SHARED_LIBS</keyword>
<keyword>CMAKE_\w+_POSTFIX</keyword>
<keyword>CMAKE_\w+_ANDROID_TOOLCHAIN_MACHINE</keyword>
<keyword>CMAKE_\w+_ANDROID_TOOLCHAIN_PREFIX</keyword>
<keyword>CMAKE_\w+_ANDROID_TOOLCHAIN_SUFFIX</keyword>
<keyword>CMAKE_\w+_ARCHIVE_APPEND</keyword>
<keyword>CMAKE_\w+_ARCHIVE_CREATE</keyword>
<keyword>CMAKE_\w+_ARCHIVE_FINISH</keyword>
<keyword>CMAKE_\w+_CLANG_TIDY</keyword>
<keyword>CMAKE_\w+_COMPILER</keyword>
<keyword>CMAKE_\w+_COMPILER_ABI</keyword>
<keyword>CMAKE_\w+_COMPILER_AR</keyword>
<keyword>CMAKE_\w+_COMPILER_ARCHITECTURE_ID</keyword>
<keyword>CMAKE_\w+_COMPILER_EXTERNAL_TOOLCHAIN</keyword>
<keyword>CMAKE_\w+_COMPILER_ID</keyword>
<keyword>CMAKE_\w+_COMPILER_LAUNCHER</keyword>
<keyword>CMAKE_\w+_COMPILER_LOADED</keyword>
<keyword>CMAKE_\w+_COMPILER_PREDEFINES_COMMAND</keyword>
<keyword>CMAKE_\w+_COMPILER_RANLIB</keyword>
<keyword>CMAKE_\w+_COMPILER_TARGET</keyword>
<keyword>CMAKE_\w+_COMPILER_VERSION</keyword>
<keyword>CMAKE_\w+_COMPILER_VERSION_INTERNAL</keyword>
<keyword>CMAKE_\w+_COMPILE_OBJECT</keyword>
<keyword>CMAKE_\w+_CPPCHECK</keyword>
<keyword>CMAKE_\w+_CPPLINT</keyword>
<keyword>CMAKE_\w+_CREATE_SHARED_LIBRARY</keyword>
<keyword>CMAKE_\w+_CREATE_SHARED_MODULE</keyword>
<keyword>CMAKE_\w+_CREATE_STATIC_LIBRARY</keyword>
<keyword>CMAKE_\w+_FLAGS</keyword>
<keyword>CMAKE_\w+_FLAGS_DEBUG</keyword>
<keyword>CMAKE_\w+_FLAGS_DEBUG_INIT</keyword>
<keyword>CMAKE_\w+_FLAGS_INIT</keyword>
<keyword>CMAKE_\w+_FLAGS_MINSIZEREL</keyword>
<keyword>CMAKE_\w+_FLAGS_MINSIZEREL_INIT</keyword>
<keyword>CMAKE_\w+_FLAGS_RELEASE</keyword>
<keyword>CMAKE_\w+_FLAGS_RELEASE_INIT</keyword>
<keyword>CMAKE_\w+_FLAGS_RELWITHDEBINFO</keyword>
<keyword>CMAKE_\w+_FLAGS_RELWITHDEBINFO_INIT</keyword>
<keyword>CMAKE_\w+_GHS_KERNEL_FLAGS_DEBUG</keyword>
<keyword>CMAKE_\w+_GHS_KERNEL_FLAGS_MINSIZEREL</keyword>
<keyword>CMAKE_\w+_GHS_KERNEL_FLAGS_RELEASE</keyword>
<keyword>CMAKE_\w+_GHS_KERNEL_FLAGS_RELWITHDEBINFO</keyword>
<keyword>CMAKE_\w+_IGNORE_EXTENSIONS</keyword>
<keyword>CMAKE_\w+_IMPLICIT_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_\w+_IMPLICIT_LINK_DIRECTORIES</keyword>
<keyword>CMAKE_\w+_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES</keyword>
<keyword>CMAKE_\w+_IMPLICIT_LINK_LIBRARIES</keyword>
<keyword>CMAKE_\w+_INCLUDE_WHAT_YOU_USE</keyword>
<keyword>CMAKE_\w+_LIBRARY_ARCHITECTURE</keyword>
<keyword>CMAKE_\w+_LINKER_PREFERENCE</keyword>
<keyword>CMAKE_\w+_LINKER_PREFERENCE_PROPAGATES</keyword>
<keyword>CMAKE_\w+_LINK_EXECUTABLE</keyword>
<keyword>CMAKE_\w+_OUTPUT_EXTENSION</keyword>
<keyword>CMAKE_\w+_PLATFORM_ID</keyword>
<keyword>CMAKE_\w+_SIMULATE_ID</keyword>
<keyword>CMAKE_\w+_SIMULATE_VERSION</keyword>
<keyword>CMAKE_\w+_SIZEOF_DATA_PTR</keyword>
<keyword>CMAKE_\w+_SOURCE_FILE_EXTENSIONS</keyword>
<keyword>CMAKE_\w+_STANDARD_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_\w+_STANDARD_LIBRARIES</keyword>
<keyword>CMAKE_\w+_VISIBILITY_PRESET</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ANDROID_TOOLCHAIN_MACHINE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ANDROID_TOOLCHAIN_PREFIX</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ANDROID_TOOLCHAIN_SUFFIX</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ARCHIVE_APPEND</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ARCHIVE_CREATE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_ARCHIVE_FINISH</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_ABI</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_AR</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_ARCHITECTURE_ID</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_EXTERNAL_TOOLCHAIN</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_ID</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_LOADED</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_PREDEFINES_COMMAND</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_RANLIB</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_TARGET</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_VERSION</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILER_VERSION_INTERNAL</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_COMPILE_OBJECT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_CREATE_SHARED_LIBRARY</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_CREATE_SHARED_MODULE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_CREATE_STATIC_LIBRARY</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_DEBUG</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_DEBUG_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_MINSIZEREL</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_MINSIZEREL_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_RELEASE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_RELEASE_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_RELWITHDEBINFO</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_FLAGS_RELWITHDEBINFO_INIT</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_IGNORE_EXTENSIONS</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_IMPLICIT_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_IMPLICIT_LINK_DIRECTORIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_IMPLICIT_LINK_LIBRARIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LIBRARY_ARCHITECTURE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINKER_PREFERENCE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINKER_PREFERENCE_PROPAGATES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINKER_WRAPPER_FLAG</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINKER_WRAPPER_FLAG_SEP</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINK_EXECUTABLE</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINK_LIBRARY_FILE_FLAG</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINK_LIBRARY_FLAG</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_LINK_LIBRARY_SUFFIX</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_OUTPUT_EXTENSION</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_PLATFORM_ID</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_SIMULATE_ID</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_SIMULATE_VERSION</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_SIZEOF_DATA_PTR</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_SOURCE_FILE_EXTENSIONS</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_STANDARD_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_STANDARD_LIBRARIES</keyword>
<keyword>CMAKE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)_VISIBILITY_PRESET</keyword>
<keyword>CMAKE_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_POSTFIX</keyword>
<keyword>CMAKE_ABSOLUTE_DESTINATION_FILES</keyword>
<keyword>CMAKE_AIX_EXPORT_ALL_SYMBOLS</keyword>
<keyword>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</keyword>
<keyword>CMAKE_ANDROID_API</keyword>
<keyword>CMAKE_ANDROID_API_MIN</keyword>
@@ -272,14 +277,18 @@
<keyword>CMAKE_APPBUNDLE_PATH</keyword>
<keyword>CMAKE_AR</keyword>
<keyword>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</keyword>
<keyword>CMAKE_ARCHIVE_OUTPUT_DIRECTORY_\w+</keyword>
<keyword>CMAKE_ARCHIVE_OUTPUT_DIRECTORY_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_ARGC</keyword>
<keyword>CMAKE_ARGV0</keyword>
<keyword>CMAKE_AUTOGEN_ORIGIN_DEPENDS</keyword>
<keyword>CMAKE_AUTOGEN_PARALLEL</keyword>
<keyword>CMAKE_AUTOGEN_VERBOSE</keyword>
<keyword>CMAKE_AUTOMOC</keyword>
<keyword>CMAKE_AUTOMOC_COMPILER_PREDEFINES</keyword>
<keyword>CMAKE_AUTOMOC_DEPEND_FILTERS</keyword>
<keyword>CMAKE_AUTOMOC_MACRO_NAMES</keyword>
<keyword>CMAKE_AUTOMOC_MOC_OPTIONS</keyword>
<keyword>CMAKE_AUTOMOC_PATH_PREFIX</keyword>
<keyword>CMAKE_AUTOMOC_RELAXED_MODE</keyword>
<keyword>CMAKE_AUTORCC</keyword>
<keyword>CMAKE_AUTORCC_OPTIONS</keyword>
@@ -289,6 +298,7 @@
<keyword>CMAKE_BACKWARDS_COMPATIBILITY</keyword>
<keyword>CMAKE_BINARY_DIR</keyword>
<keyword>CMAKE_BUILD_RPATH</keyword>
<keyword>CMAKE_BUILD_RPATH_USE_ORIGIN</keyword>
<keyword>CMAKE_BUILD_TOOL</keyword>
<keyword>CMAKE_BUILD_TYPE</keyword>
<keyword>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</keyword>
@@ -299,6 +309,7 @@
<keyword>CMAKE_CACHE_PATCH_VERSION</keyword>
<keyword>CMAKE_CFG_INTDIR</keyword>
<keyword>CMAKE_CL_64</keyword>
<keyword>CMAKE_CODEBLOCKS_COMPILER_ID</keyword>
<keyword>CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES</keyword>
<keyword>CMAKE_CODELITE_USE_TARGETS</keyword>
<keyword>CMAKE_COLOR_MAKEFILE</keyword>
@@ -308,53 +319,84 @@
<keyword>CMAKE_COMPILER_IS_GNUCXX</keyword>
<keyword>CMAKE_COMPILER_IS_GNUG77</keyword>
<keyword>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY</keyword>
<keyword>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_\w+</keyword>
<keyword>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_CONFIGURATION_TYPES</keyword>
<keyword>CMAKE_CPACK_COMMAND</keyword>
<keyword>CMAKE_CROSSCOMPILING</keyword>
<keyword>CMAKE_CROSSCOMPILING_EMULATOR</keyword>
<keyword>CMAKE_CROSS_CONFIGS</keyword>
<keyword>CMAKE_CTEST_ARGUMENTS</keyword>
<keyword>CMAKE_CTEST_COMMAND</keyword>
<keyword>CMAKE_CUDA_ARCHITECTURES</keyword>
<keyword>CMAKE_CUDA_COMPILE_FEATURES</keyword>
<keyword>CMAKE_CUDA_EXTENSIONS</keyword>
<keyword>CMAKE_CUDA_HOST_COMPILER</keyword>
<keyword>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</keyword>
<keyword>CMAKE_CUDA_RUNTIME_LIBRARY</keyword>
<keyword>CMAKE_CUDA_SEPARABLE_COMPILATION</keyword>
<keyword>CMAKE_CUDA_STANDARD</keyword>
<keyword>CMAKE_CUDA_STANDARD_REQUIRED</keyword>
<keyword>CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_CURRENT_BINARY_DIR</keyword>
<keyword>CMAKE_CURRENT_FUNCTION</keyword>
<keyword>CMAKE_CURRENT_FUNCTION_LIST_DIR</keyword>
<keyword>CMAKE_CURRENT_FUNCTION_LIST_FILE</keyword>
<keyword>CMAKE_CURRENT_FUNCTION_LIST_LINE</keyword>
<keyword>CMAKE_CURRENT_LIST_DIR</keyword>
<keyword>CMAKE_CURRENT_LIST_FILE</keyword>
<keyword>CMAKE_CURRENT_LIST_LINE</keyword>
<keyword>CMAKE_CURRENT_SOURCE_DIR</keyword>
<keyword>CMAKE_CXX_CLANG_TIDY</keyword>
<keyword>CMAKE_CXX_COMPILER_LAUNCHER</keyword>
<keyword>CMAKE_CXX_COMPILE_FEATURES</keyword>
<keyword>CMAKE_CXX_CPPCHECK</keyword>
<keyword>CMAKE_CXX_CPPLINT</keyword>
<keyword>CMAKE_CXX_EXTENSIONS</keyword>
<keyword>CMAKE_CXX_INCLUDE_WHAT_YOU_USE</keyword>
<keyword>CMAKE_CXX_STANDARD</keyword>
<keyword>CMAKE_CXX_STANDARD_REQUIRED</keyword>
<keyword>CMAKE_C_CLANG_TIDY</keyword>
<keyword>CMAKE_C_COMPILER_LAUNCHER</keyword>
<keyword>CMAKE_C_COMPILE_FEATURES</keyword>
<keyword>CMAKE_C_CPPCHECK</keyword>
<keyword>CMAKE_C_CPPLINT</keyword>
<keyword>CMAKE_C_EXTENSIONS</keyword>
<keyword>CMAKE_C_INCLUDE_WHAT_YOU_USE</keyword>
<keyword>CMAKE_C_STANDARD</keyword>
<keyword>CMAKE_C_STANDARD_REQUIRED</keyword>
<keyword>CMAKE_DEBUG_POSTFIX</keyword>
<keyword>CMAKE_DEBUG_TARGET_PROPERTIES</keyword>
<keyword>CMAKE_DEFAULT_BUILD_TYPE</keyword>
<keyword>CMAKE_DEFAULT_CONFIGS</keyword>
<keyword>CMAKE_DEPENDS_IN_PROJECT_ONLY</keyword>
<keyword>CMAKE_DIRECTORY_LABELS</keyword>
<keyword>CMAKE_DISABLE_FIND_PACKAGE_\w+</keyword>
<keyword>CMAKE_DISABLE_PRECOMPILE_HEADERS</keyword>
<keyword>CMAKE_DL_LIBS</keyword>
<keyword>CMAKE_DOTNET_TARGET_FRAMEWORK</keyword>
<keyword>CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION</keyword>
<keyword>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</keyword>
<keyword>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</keyword>
<keyword>CMAKE_ECLIPSE_MAKE_ARGUMENTS</keyword>
<keyword>CMAKE_ECLIPSE_RESOURCE_ENCODING</keyword>
<keyword>CMAKE_ECLIPSE_VERSION</keyword>
<keyword>CMAKE_EDIT_COMMAND</keyword>
<keyword>CMAKE_ENABLE_EXPORTS</keyword>
<keyword>CMAKE_ERROR_DEPRECATED</keyword>
<keyword>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</keyword>
<keyword>CMAKE_EXECUTABLE_SUFFIX</keyword>
<keyword>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS_\w+</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS_\w+_INIT</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_INIT</keyword>
<keyword>CMAKE_EXE_LINKER_FLAGS_INIT</keyword>
<keyword>CMAKE_EXPORT_COMPILE_COMMANDS</keyword>
<keyword>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_EXPORT_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_EXTRA_GENERATOR</keyword>
<keyword>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</keyword>
<keyword>CMAKE_FIND_APPBUNDLE</keyword>
<keyword>CMAKE_FIND_DEBUG_MODE</keyword>
<keyword>CMAKE_FIND_FRAMEWORK</keyword>
<keyword>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</keyword>
<keyword>CMAKE_FIND_LIBRARY_PREFIXES</keyword>
@@ -363,6 +405,8 @@
<keyword>CMAKE_FIND_PACKAGE_NAME</keyword>
<keyword>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_FIND_PACKAGE_PREFER_CONFIG</keyword>
<keyword>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</keyword>
<keyword>CMAKE_FIND_PACKAGE_SORT_DIRECTION</keyword>
<keyword>CMAKE_FIND_PACKAGE_SORT_ORDER</keyword>
<keyword>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</keyword>
@@ -371,15 +415,32 @@
<keyword>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</keyword>
<keyword>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</keyword>
<keyword>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</keyword>
<keyword>CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</keyword>
<keyword>CMAKE_FIND_USE_CMAKE_PATH</keyword>
<keyword>CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</keyword>
<keyword>CMAKE_FIND_USE_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</keyword>
<keyword>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</keyword>
<keyword>CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</keyword>
<keyword>CMAKE_FOLDER</keyword>
<keyword>CMAKE_FRAMEWORK</keyword>
<keyword>CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_FRAMEWORK_PATH</keyword>
<keyword>CMAKE_Fortran_FORMAT</keyword>
<keyword>CMAKE_Fortran_MODDIR_DEFAULT</keyword>
<keyword>CMAKE_Fortran_MODDIR_FLAG</keyword>
<keyword>CMAKE_Fortran_MODOUT_FLAG</keyword>
<keyword>CMAKE_Fortran_MODULE_DIRECTORY</keyword>
<keyword>CMAKE_Fortran_PREPROCESS</keyword>
<keyword>CMAKE_GENERATOR</keyword>
<keyword>CMAKE_GENERATOR_INSTANCE</keyword>
<keyword>CMAKE_GENERATOR_PLATFORM</keyword>
<keyword>CMAKE_GENERATOR_TOOLSET</keyword>
<keyword>CMAKE_GHS_NO_SOURCE_GROUP_FILE</keyword>
<keyword>CMAKE_GLOBAL_AUTOGEN_TARGET</keyword>
<keyword>CMAKE_GLOBAL_AUTOGEN_TARGET_NAME</keyword>
<keyword>CMAKE_GLOBAL_AUTORCC_TARGET</keyword>
<keyword>CMAKE_GLOBAL_AUTORCC_TARGET_NAME</keyword>
<keyword>CMAKE_GNUtoMS</keyword>
<keyword>CMAKE_HOME_DIRECTORY</keyword>
<keyword>CMAKE_HOST_APPLE</keyword>
@@ -399,26 +460,31 @@
<keyword>CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE</keyword>
<keyword>CMAKE_INCLUDE_PATH</keyword>
<keyword>CMAKE_INSTALL_DEFAULT_COMPONENT_NAME</keyword>
<keyword>CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</keyword>
<keyword>CMAKE_INSTALL_MESSAGE</keyword>
<keyword>CMAKE_INSTALL_NAME_DIR</keyword>
<keyword>CMAKE_INSTALL_PREFIX</keyword>
<keyword>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</keyword>
<keyword>CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</keyword>
<keyword>CMAKE_INSTALL_RPATH</keyword>
<keyword>CMAKE_INSTALL_RPATH_USE_LINK_PATH</keyword>
<keyword>CMAKE_INTERNAL_PLATFORM_ABI</keyword>
<keyword>CMAKE_INTERPROCEDURAL_OPTIMIZATION</keyword>
<keyword>CMAKE_INTERPROCEDURAL_OPTIMIZATION_\w+</keyword>
<keyword>CMAKE_INTERPROCEDURAL_OPTIMIZATION_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_IOS_INSTALL_COMBINED</keyword>
<keyword>CMAKE_JOB_POOLS</keyword>
<keyword>CMAKE_JOB_POOL_COMPILE</keyword>
<keyword>CMAKE_JOB_POOL_LINK</keyword>
<keyword>CMAKE_JOB_POOL_PRECOMPILE_HEADER</keyword>
<keyword>CMAKE_LIBRARY_ARCHITECTURE</keyword>
<keyword>CMAKE_LIBRARY_ARCHITECTURE_REGEX</keyword>
<keyword>CMAKE_LIBRARY_OUTPUT_DIRECTORY</keyword>
<keyword>CMAKE_LIBRARY_OUTPUT_DIRECTORY_\w+</keyword>
<keyword>CMAKE_LIBRARY_OUTPUT_DIRECTORY_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_LIBRARY_PATH</keyword>
<keyword>CMAKE_LIBRARY_PATH_FLAG</keyword>
<keyword>CMAKE_LINK_DEF_FILE_FLAG</keyword>
<keyword>CMAKE_LINK_DEPENDS_NO_SHARED</keyword>
<keyword>CMAKE_LINK_DIRECTORIES_BEFORE</keyword>
<keyword>CMAKE_LINK_INTERFACE_LIBRARIES</keyword>
<keyword>CMAKE_LINK_LIBRARY_FILE_FLAG</keyword>
<keyword>CMAKE_LINK_LIBRARY_FLAG</keyword>
@@ -430,48 +496,73 @@
<keyword>CMAKE_MACOSX_RPATH</keyword>
<keyword>CMAKE_MAJOR_VERSION</keyword>
<keyword>CMAKE_MAKE_PROGRAM</keyword>
<keyword>CMAKE_MAP_IMPORTED_CONFIG_\w+</keyword>
<keyword>CMAKE_MATCH_\d+</keyword>
<keyword>CMAKE_MAP_IMPORTED_CONFIG_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_MATCH_COUNT</keyword>
<keyword>CMAKE_MATCH_\d+</keyword>
<keyword>CMAKE_MAXIMUM_RECURSION_DEPTH</keyword>
<keyword>CMAKE_MESSAGE_CONTEXT</keyword>
<keyword>CMAKE_MESSAGE_CONTEXT_SHOW</keyword>
<keyword>CMAKE_MESSAGE_INDENT</keyword>
<keyword>CMAKE_MESSAGE_LOG_LEVEL</keyword>
<keyword>CMAKE_MFC_FLAG</keyword>
<keyword>CMAKE_MINIMUM_REQUIRED_VERSION</keyword>
<keyword>CMAKE_MINOR_VERSION</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS_\w+</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS_\w+_INIT</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_INIT</keyword>
<keyword>CMAKE_MODULE_LINKER_FLAGS_INIT</keyword>
<keyword>CMAKE_MODULE_PATH</keyword>
<keyword>CMAKE_MSVCIDE_RUN_PATH</keyword>
<keyword>CMAKE_MSVC_RUNTIME_LIBRARY</keyword>
<keyword>CMAKE_NETRC</keyword>
<keyword>CMAKE_NETRC_FILE</keyword>
<keyword>CMAKE_NINJA_OUTPUT_PATH_PREFIX</keyword>
<keyword>CMAKE_NOT_USING_CONFIG_FLAGS</keyword>
<keyword>CMAKE_NO_BUILTIN_CHRPATH</keyword>
<keyword>CMAKE_NO_SYSTEM_FROM_IMPORTED</keyword>
<keyword>CMAKE_OBJCXX_EXTENSIONS</keyword>
<keyword>CMAKE_OBJCXX_STANDARD</keyword>
<keyword>CMAKE_OBJCXX_STANDARD_REQUIRED</keyword>
<keyword>CMAKE_OBJC_EXTENSIONS</keyword>
<keyword>CMAKE_OBJC_STANDARD</keyword>
<keyword>CMAKE_OBJC_STANDARD_REQUIRED</keyword>
<keyword>CMAKE_OBJECT_PATH_MAX</keyword>
<keyword>CMAKE_OSX_ARCHITECTURES</keyword>
<keyword>CMAKE_OSX_DEPLOYMENT_TARGET</keyword>
<keyword>CMAKE_OSX_SYSROOT</keyword>
<keyword>CMAKE_PARENT_LIST_FILE</keyword>
<keyword>CMAKE_PATCH_VERSION</keyword>
<keyword>CMAKE_PCH_WARN_INVALID</keyword>
<keyword>CMAKE_PDB_OUTPUT_DIRECTORY</keyword>
<keyword>CMAKE_PDB_OUTPUT_DIRECTORY_\w+</keyword>
<keyword>CMAKE_PDB_OUTPUT_DIRECTORY_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_POLICY_DEFAULT_CMP\d{4}</keyword>
<keyword>CMAKE_POLICY_WARNING_CMP\d{4}</keyword>
<keyword>CMAKE_POSITION_INDEPENDENT_CODE</keyword>
<keyword>CMAKE_PREFIX_PATH</keyword>
<keyword>CMAKE_PROGRAM_PATH</keyword>
<keyword>CMAKE_PROJECT_\w+_INCLUDE</keyword>
<keyword>CMAKE_PROJECT_DESCRIPTION</keyword>
<keyword>CMAKE_PROJECT_HOMEPAGE_URL</keyword>
<keyword>CMAKE_PROJECT_INCLUDE</keyword>
<keyword>CMAKE_PROJECT_INCLUDE_BEFORE</keyword>
<keyword>CMAKE_PROJECT_NAME</keyword>
<keyword>CMAKE_PROJECT_VERSION</keyword>
<keyword>CMAKE_PROJECT_VERSION_MAJOR</keyword>
<keyword>CMAKE_PROJECT_VERSION_MINOR</keyword>
<keyword>CMAKE_PROJECT_VERSION_PATCH</keyword>
<keyword>CMAKE_PROJECT_VERSION_TWEAK</keyword>
<keyword>CMAKE_PROJECT_\w+_INCLUDE</keyword>
<keyword>CMAKE_PROJECT_\w+_INCLUDE_BEFORE</keyword>
<keyword>CMAKE_RANLIB</keyword>
<keyword>CMAKE_ROOT</keyword>
<keyword>CMAKE_RULE_MESSAGES</keyword>
<keyword>CMAKE_RUNTIME_OUTPUT_DIRECTORY</keyword>
<keyword>CMAKE_RUNTIME_OUTPUT_DIRECTORY_\w+</keyword>
<keyword>CMAKE_RUNTIME_OUTPUT_DIRECTORY_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_SCRIPT_MODE_FILE</keyword>
<keyword>CMAKE_SHARED_LIBRARY_PREFIX</keyword>
<keyword>CMAKE_SHARED_LIBRARY_SUFFIX</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS_\w+</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS_\w+_INIT</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_INIT</keyword>
<keyword>CMAKE_SHARED_LINKER_FLAGS_INIT</keyword>
<keyword>CMAKE_SHARED_MODULE_PREFIX</keyword>
<keyword>CMAKE_SHARED_MODULE_SUFFIX</keyword>
@@ -486,11 +577,12 @@
<keyword>CMAKE_STATIC_LIBRARY_PREFIX</keyword>
<keyword>CMAKE_STATIC_LIBRARY_SUFFIX</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS_\w+</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS_\w+_INIT</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS_(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)_INIT</keyword>
<keyword>CMAKE_STATIC_LINKER_FLAGS_INIT</keyword>
<keyword>CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS</keyword>
<keyword>CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE</keyword>
<keyword>CMAKE_SUPPRESS_REGENERATION</keyword>
<keyword>CMAKE_SYSROOT</keyword>
<keyword>CMAKE_SYSROOT_COMPILE</keyword>
<keyword>CMAKE_SYSROOT_LINK</keyword>
@@ -506,40 +598,76 @@
<keyword>CMAKE_SYSTEM_PROGRAM_PATH</keyword>
<keyword>CMAKE_SYSTEM_VERSION</keyword>
<keyword>CMAKE_Swift_LANGUAGE_VERSION</keyword>
<keyword>CMAKE_Swift_MODULE_DIRECTORY</keyword>
<keyword>CMAKE_Swift_NUM_THREADS</keyword>
<keyword>CMAKE_TOOLCHAIN_FILE</keyword>
<keyword>CMAKE_TRY_COMPILE_CONFIGURATION</keyword>
<keyword>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</keyword>
<keyword>CMAKE_TRY_COMPILE_TARGET_TYPE</keyword>
<keyword>CMAKE_TWEAK_VERSION</keyword>
<keyword>CMAKE_UNITY_BUILD</keyword>
<keyword>CMAKE_UNITY_BUILD_BATCH_SIZE</keyword>
<keyword>CMAKE_USER_MAKE_RULES_OVERRIDE</keyword>
<keyword>CMAKE_USER_MAKE_RULES_OVERRIDE_\w+</keyword>
<keyword>CMAKE_USER_MAKE_RULES_OVERRIDE_(C|CXX|CUDA|OBJC|OBJCXX|Fortran|ASM)</keyword>
<keyword>CMAKE_USE_RELATIVE_PATHS</keyword>
<keyword>CMAKE_VERBOSE_MAKEFILE</keyword>
<keyword>CMAKE_VERSION</keyword>
<keyword>CMAKE_VISIBILITY_INLINES_HIDDEN</keyword>
<keyword>CMAKE_VS_DEVENV_COMMAND</keyword>
<keyword>CMAKE_VS_GLOBALS</keyword>
<keyword>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</keyword>
<keyword>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</keyword>
<keyword>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</keyword>
<keyword>CMAKE_VS_JUST_MY_CODE_DEBUGGING</keyword>
<keyword>CMAKE_VS_MSBUILD_COMMAND</keyword>
<keyword>CMAKE_VS_NsightTegra_VERSION</keyword>
<keyword>CMAKE_VS_PLATFORM_NAME</keyword>
<keyword>CMAKE_VS_PLATFORM_NAME_DEFAULT</keyword>
<keyword>CMAKE_VS_PLATFORM_TOOLSET</keyword>
<keyword>CMAKE_VS_PLATFORM_TOOLSET_CUDA</keyword>
<keyword>CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR</keyword>
<keyword>CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE</keyword>
<keyword>CMAKE_VS_PLATFORM_TOOLSET_VERSION</keyword>
<keyword>CMAKE_VS_SDK_EXCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_INCLUDE_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_LIBRARY_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_REFERENCE_DIRECTORIES</keyword>
<keyword>CMAKE_VS_SDK_SOURCE_DIRECTORIES</keyword>
<keyword>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</keyword>
<keyword>CMAKE_VS_WINRT_BY_DEFAULT</keyword>
<keyword>CMAKE_WARN_DEPRECATED</keyword>
<keyword>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</keyword>
<keyword>CMAKE_WIN32_EXECUTABLE</keyword>
<keyword>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</keyword>
<keyword>CMAKE_XCODE_ATTRIBUTE_\w+</keyword>
<keyword>CMAKE_XCODE_GENERATE_SCHEME</keyword>
<keyword>CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY</keyword>
<keyword>CMAKE_XCODE_PLATFORM_TOOLSET</keyword>
<keyword>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</keyword>
<keyword>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</keyword>
<keyword>CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</keyword>
<keyword>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</keyword>
<keyword>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</keyword>
<keyword>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</keyword>
<keyword>CMAKE_XCODE_SCHEME_ENVIRONMENT</keyword>
<keyword>CMAKE_XCODE_SCHEME_GUARD_MALLOC</keyword>
<keyword>CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</keyword>
<keyword>CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES</keyword>
<keyword>CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE</keyword>
<keyword>CMAKE_XCODE_SCHEME_MALLOC_STACK</keyword>
<keyword>CMAKE_XCODE_SCHEME_THREAD_SANITIZER</keyword>
<keyword>CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP</keyword>
<keyword>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</keyword>
<keyword>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</keyword>
<keyword>CMAKE_XCODE_SCHEME_WORKING_DIRECTORY</keyword>
<keyword>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</keyword>
<keyword>CPACK_ABSOLUTE_DESTINATION_FILES</keyword>
<keyword>CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY</keyword>
<keyword>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</keyword>
<keyword>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</keyword>
<keyword>CPACK_INSTALL_SCRIPT</keyword>
<keyword>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</keyword>
<keyword>CPACK_PACKAGING_INSTALL_PREFIX</keyword>
<keyword>CPACK_SET_DESTDIR</keyword>
<keyword>CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</keyword>
@@ -569,7 +697,7 @@
<keyword>CTEST_CUSTOM_POST_TEST</keyword>
<keyword>CTEST_CUSTOM_PRE_MEMCHECK</keyword>
<keyword>CTEST_CUSTOM_PRE_TEST</keyword>
<keyword>CTEST_CUSTOM_TEST_IGNORE</keyword>
<keyword>CTEST_CUSTOM_TESTS_IGNORE</keyword>
<keyword>CTEST_CUSTOM_WARNING_EXCEPTION</keyword>
<keyword>CTEST_CUSTOM_WARNING_MATCH</keyword>
<keyword>CTEST_CVS_CHECKOUT</keyword>
@@ -599,9 +727,12 @@
<keyword>CTEST_P4_COMMAND</keyword>
<keyword>CTEST_P4_OPTIONS</keyword>
<keyword>CTEST_P4_UPDATE_OPTIONS</keyword>
<keyword>CTEST_RESOURCE_SPEC_FILE</keyword>
<keyword>CTEST_RUN_CURRENT_SCRIPT</keyword>
<keyword>CTEST_SCP_COMMAND</keyword>
<keyword>CTEST_SITE</keyword>
<keyword>CTEST_SOURCE_DIRECTORY</keyword>
<keyword>CTEST_SUBMIT_URL</keyword>
<keyword>CTEST_SVN_COMMAND</keyword>
<keyword>CTEST_SVN_OPTIONS</keyword>
<keyword>CTEST_SVN_UPDATE_OPTIONS</keyword>
@@ -611,10 +742,12 @@
<keyword>CTEST_UPDATE_COMMAND</keyword>
<keyword>CTEST_UPDATE_OPTIONS</keyword>
<keyword>CTEST_UPDATE_VERSION_ONLY</keyword>
<keyword>CTEST_UPDATE_VERSION_OVERRIDE</keyword>
<keyword>CTEST_USE_LAUNCHERS</keyword>
<keyword>CYGWIN</keyword>
<keyword>EXECUTABLE_OUTPUT_PATH</keyword>
<keyword>GHS-MULTI</keyword>
<keyword>IOS</keyword>
<keyword>LIBRARY_OUTPUT_PATH</keyword>
<keyword>MINGW</keyword>
<keyword>MSVC</keyword>
@@ -628,9 +761,12 @@
<keyword>MSVC80</keyword>
<keyword>MSVC90</keyword>
<keyword>MSVC_IDE</keyword>
<keyword>MSVC_TOOLSET_VERSION</keyword>
<keyword>MSVC_VERSION</keyword>
<keyword>MSYS</keyword>
<keyword>PROJECT_BINARY_DIR</keyword>
<keyword>PROJECT_DESCRIPTION</keyword>
<keyword>PROJECT_HOMEPAGE_URL</keyword>
<keyword>PROJECT_NAME</keyword>
<keyword>PROJECT_SOURCE_DIR</keyword>
<keyword>PROJECT_VERSION</keyword>
@@ -648,30 +784,379 @@
</context>
<context id="operator" style-ref="operator">
<keyword>@ONLY</keyword>
<keyword>ABSOLUTE</keyword>
<keyword>AFTER</keyword>
<keyword>ALIAS</keyword>
<keyword>ALPHABET</keyword>
<keyword>AND</keyword>
<keyword>ANDROID_MK</keyword>
<keyword>APPEND</keyword>
<keyword>APPEND_STRING</keyword>
<keyword>ARCHIVE</keyword>
<keyword>ARCHIVE_CREATE</keyword>
<keyword>ARCHIVE_EXTRACT</keyword>
<keyword>ARGS</keyword>
<keyword>ASCII</keyword>
<keyword>ASM_EXTENSIONS</keyword>
<keyword>ASM_STANDARD</keyword>
<keyword>ASM_STANDARD_REQUIRED</keyword>
<keyword>AUTHOR_WARNING</keyword>
<keyword>BEFORE</keyword>
<keyword>BOOL</keyword>
<keyword>BUILD</keyword>
<keyword>BUILD_ID</keyword>
<keyword>BUILD_TYPE</keyword>
<keyword>BRIEF_DOCS</keyword>
<keyword>BRUNDLE</keyword>
<keyword>BYPRODUCTS</keyword>
<keyword>C_EXTENSIONS</keyword>
<keyword>C_STANDARD</keyword>
<keyword>C_STANDARD_REQUIRED</keyword>
<keyword>CACHE</keyword>
<keyword>CACHED_VARIABLE</keyword>
<keyword>CALL</keyword>
<keyword>CAPTURE_CMAKE_ERROR</keyword>
<keyword>CDASH_UPLOAD</keyword>
<keyword>CDASH_UPLOAD_TYPE</keyword>
<keyword>CLEAR</keyword>
<keyword>CMAKE_FIND_ROOT_PATH_BOTH</keyword>
<keyword>CMAKE_FLAGS</keyword>
<keyword>CODE</keyword>
<keyword>COMMAND</keyword>
<keyword>COMMAND_ECHO</keyword>
<keyword>COMMAND_EXPAND_LISTS</keyword>
<keyword>COMMAND_NAME</keyword>
<keyword>COMMENT</keyword>
<keyword>COMPARE</keyword>
<keyword>COMPILE_DEFINITIONS</keyword>
<keyword>COMPILE_OUTPUT_VARIABLE</keyword>
<keyword>COMPONENT</keyword>
<keyword>COMPONENTS</keyword>
<keyword>CONCAT</keyword>
<keyword>CONFIGURATION</keyword>
<keyword>CONFIGURATIONS</keyword>
<keyword>CONFIGURE</keyword>
<keyword>COPY</keyword>
<keyword>COPY_FILE</keyword>
<keyword>COPY_FILE_ERROR</keyword>
<keyword>COPYONLY</keyword>
<keyword>CREATE_LINK</keyword>
<keyword>CRLF</keyword>
<keyword>CUDA_EXTENSIONS</keyword>
<keyword>CUDA_STANDARD</keyword>
<keyword>CUDA_STANDARD_REQUIRED</keyword>
<keyword>CXX_EXTENSIONS</keyword>
<keyword>CXX_STANDARD</keyword>
<keyword>CXX_STANDARD_REQUIRED</keyword>
<keyword>DEBUG</keyword>
<keyword>DECIMAL</keyword>
<keyword>DEFECT_COUNT</keyword>
<keyword>DEFINED</keyword>
<keyword>DEFINITION</keyword>
<keyword>DEPENDS</keyword>
<keyword>DEPFILE</keyword>
<keyword>DEPRECATION</keyword>
<keyword>DESCRIPTION</keyword>
<keyword>DESTDIR</keyword>
<keyword>DESTINATION</keyword>
<keyword>DIRECTORY</keyword>
<keyword>DIRECTORY_PERMISSIONS</keyword>
<keyword>DOC</keyword>
<keyword>DOS</keyword>
<keyword>DOWNLOAD</keyword>
<keyword>ECHO_ERROR_VARIABLE</keyword>
<keyword>ECHO_OUTPUT_VARIABLE</keyword>
<keyword>ENCODING</keyword>
<keyword>END</keyword>
<keyword>EQUAL</keyword>
<keyword>ERROR_FILE</keyword>
<keyword>ERROR_QUIET</keyword>
<keyword>ERROR_STRIP_TRAILING_WHITESPACE</keyword>
<keyword>ERROR_VARIABLE</keyword>
<keyword>ESCAPE_QUOTES</keyword>
<keyword>EVAL</keyword>
<keyword>EXACT</keyword>
<keyword>EXCLUDE</keyword>
<keyword>EXCLUDE_FIXTURE</keyword>
<keyword>EXCLUDE_FIXTURE_CLEANUP</keyword>
<keyword>EXCLUDE_FIXTURE_SETUP</keyword>
<keyword>EXCLUDE_FROM_ALL</keyword>
<keyword>EXCLUDE_LABEL</keyword>
<keyword>EXISTS</keyword>
<keyword>EXPORT</keyword>
<keyword>EXPORT_ANDROID_MK</keyword>
<keyword>EXPORT_LINK_INTERFACE_LIBRARIES</keyword>
<keyword>EXPR</keyword>
<keyword>EXT</keyword>
<keyword>EXTRA_INCLUDE</keyword>
<keyword>FATAL_ERROR</keyword>
<keyword>FLAGS</keyword>
<keyword>FILE</keyword>
<keyword>FILE_PERMISSIONS</keyword>
<keyword>FILES</keyword>
<keyword>FILES_MATCHING</keyword>
<keyword>FILEPATH</keyword>
<keyword>FILTER</keyword>
<keyword>FIND</keyword>
<keyword>FORCE</keyword>
<keyword>Fortran_EXTENSIONS</keyword>
<keyword>Fortran_STANDARD</keyword>
<keyword>Fortran_STANDARD_REQUIRED</keyword>
<keyword>FRAMEWORK</keyword>
<keyword>FULL_DOCS</keyword>
<keyword>FUNCTION</keyword>
<keyword>GENERATE</keyword>
<keyword>GENEX_STRIP</keyword>
<keyword>GET</keyword>
<keyword>GET_RUNTIME_DEPENDENCIES</keyword>
<keyword>GLOB</keyword>
<keyword>GLOB_RECURSE</keyword>
<keyword>GLOBAL</keyword>
<keyword>GREATER</keyword>
<keyword>GREATER_EQUAL</keyword>
<keyword>GROUP</keyword>
<keyword>GROUP_EXECUTE</keyword>
<keyword>GROUP_READ</keyword>
<keyword>GUID</keyword>
<keyword>HEX</keyword>
<keyword>HEXADECIMAL</keyword>
<keyword>HINTS</keyword>
<keyword>HOMEPAGE_URL</keyword>
<keyword>HTTPHEADER</keyword>
<keyword>IMPLICIT_DEPENDS</keyword>
<keyword>IMPORTED</keyword>
<keyword>IN</keyword>
<keyword>INCLUDE</keyword>
<keyword>INCLUDE_LABEL</keyword>
<keyword>INCLUDE_INTERNALS</keyword>
<keyword>INCLUDES</keyword>
<keyword>INHERITED</keyword>
<keyword>INPUT</keyword>
<keyword>INPUT_FILE</keyword>
<keyword>INSERT</keyword>
<keyword>INSTALL</keyword>
<keyword>INTERFACE</keyword>
<keyword>INTERNAL</keyword>
<keyword>IN_LIST</keyword>
<keyword>IS_ABSOLUTE</keyword>
<keyword>IS_DIRECTORY</keyword>
<keyword>IS_NEWER_THAN</keyword>
<keyword>IS_SYMLINK</keyword>
<keyword>ITEMS</keyword>
<keyword>JOB_POOL</keyword>
<keyword>JOIN</keyword>
<keyword>LABELS</keyword>
<keyword>LANGUAGES</keyword>
<keyword>LAST_EXT</keyword>
<keyword>LENGTH</keyword>
<keyword>LESS</keyword>
<keyword>LESS_EQUAL</keyword>
<keyword>LF</keyword>
<keyword>LIBRARY</keyword>
<keyword>LINK_INTERFACE_LIBRARIES</keyword>
<keyword>LINK_LIBRARIES</keyword>
<keyword>LINK_OPTIONS</keyword>
<keyword>LINK_PRIVATE</keyword>
<keyword>LINK_PUBLIC</keyword>
<keyword>LOCK</keyword>
<keyword>MACOSX_BUNDLE</keyword>
<keyword>MAIN_DEPENDENCY</keyword>
<keyword>MAKE_C_IDENTIFIER</keyword>
<keyword>MAKE_DIRECTORY</keyword>
<keyword>MATCH</keyword>
<keyword>MATCHALL</keyword>
<keyword>MATCHES</keyword>
<keyword>MD5</keyword>
<keyword>MESSAGE_NEVER</keyword>
<keyword>MODULE</keyword>
<keyword>NAME</keyword>
<keyword>NAMES</keyword>
<keyword>NAME_WE</keyword>
<keyword>NAME_WLE</keyword>
<keyword>NAME_WE</keyword>
<keyword>NAMELINK_COMPONENT</keyword>
<keyword>NAMELINK_ONLY</keyword>
<keyword>NAMELINK_SKIP</keyword>
<keyword>NAMES</keyword>
<keyword>NAMESPACE</keyword>
<keyword>NATIVE_COMMAND</keyword>
<keyword>NEW</keyword>
<keyword>NEW_PROCESS</keyword>
<keyword>NEWLINE_STYLE</keyword>
<keyword>NO_CMAKE_ENVIRONMENT_PATH</keyword>
<keyword>NO_CMAKE_FIND_ROOT_PATH</keyword>
<keyword>NO_CMAKE_PATH</keyword>
<keyword>NO_CMAKE_SYSTEM_PATH</keyword>
<keyword>NO_DEFAULT_PATH</keyword>
<keyword>NO_PACKAGE_ROOT_PATH</keyword>
<keyword>NO_POLICY_SCOPE</keyword>
<keyword>NOT</keyword>
<keyword>NOTEQUAL</keyword>
<keyword>NOTICE</keyword>
<keyword>NUMBER_ERRORS</keyword>
<keyword>NUMBER_WARNINGS</keyword>
<keyword>OBJC_EXTENSIONS</keyword>
<keyword>OBJC_STANDARD</keyword>
<keyword>OBJC_STANDARD_REQUIRED</keyword>
<keyword>OBJCXX_EXTENSIONS</keyword>
<keyword>OBJCXX_STANDARD</keyword>
<keyword>OBJCXX_STANDARD_REQUIRED</keyword>
<keyword>OBJECT</keyword>
<keyword>OBJECTS</keyword>
<keyword>OLD</keyword>
<keyword>ONLY_CMAKE_FIND_ROOT_PATH</keyword>
<keyword>OPTIONAL</keyword>
<keyword>OPTIONAL_COMPONENTS</keyword>
<keyword>OPTIONS</keyword>
<keyword>OR</keyword>
<keyword>OUTPUT</keyword>
<keyword>OUTPUT_FILE</keyword>
<keyword>OUTPUT_FORMAT</keyword>
<keyword>OUTPUT_QUIET</keyword>
<keyword>OUTPUT_STRIP_TRAILING_WHITESPACE</keyword>
<keyword>OUTPUT_VARIABLE</keyword>
<keyword>OWNER_EXECUTE</keyword>
<keyword>OWNER_READ</keyword>
<keyword>OWNER_WRITE</keyword>
<keyword>PARALLEL_LEVEL</keyword>
<keyword>PARENT_SCOPE</keyword>
<keyword>PARTS</keyword>
<keyword>PATH</keyword>
<keyword>PATH_SUFFIXES</keyword>
<keyword>PATHS</keyword>
<keyword>PATTERN</keyword>
<keyword>PERMISSIONS</keyword>
<keyword>PLATFORM</keyword>
<keyword>POLICY</keyword>
<keyword>POP</keyword>
<keyword>POP_BACK</keyword>
<keyword>POP_FRONT</keyword>
<keyword>POST_BUILD</keyword>
<keyword>PREFIX</keyword>
<keyword>PREORDER</keyword>
<keyword>PREPEND</keyword>
<keyword>PRE_BUILD</keyword>
<keyword>PRE_LINK</keyword>
<keyword>PRIVATE</keyword>
<keyword>PRIVATE_HEADER</keyword>
<keyword>PROGRAM</keyword>
<keyword>PROGRAM_ARGS</keyword>
<keyword>PROGRAMS</keyword>
<keyword>PROPERTY</keyword>
<keyword>PROPERTIES</keyword>
<keyword>PUBLIC</keyword>
<keyword>PUBLIC_HEADER</keyword>
<keyword>PUSH</keyword>
<keyword>QUERY</keyword>
<keyword>QUIET</keyword>
<keyword>RANDOM</keyword>
<keyword>RANDOM_SEED</keyword>
<keyword>RANGE</keyword>
<keyword>READ</keyword>
<keyword>READ_SYMLINK</keyword>
<keyword>READ_WITH_PREFIX</keyword>
<keyword>REALPATH</keyword>
<keyword>REGEX</keyword>
<keyword>REGULAR_EXPRESSION</keyword>
<keyword>RELATIVE_PATH</keyword>
<keyword>REMOVE</keyword>
<keyword>REMOVE_AT</keyword>
<keyword>REMOVE_DUPLICATES</keyword>
<keyword>REMOVE_ITEM</keyword>
<keyword>REMOVE_RECURSE</keyword>
<keyword>RENAME</keyword>
<keyword>REPEAT</keyword>
<keyword>REPLACE</keyword>
<keyword>REQUIRED</keyword>
<keyword>RESOURCE</keyword>
<keyword>RESOURCE_SPEC_FILE</keyword>
<keyword>RESULT</keyword>
<keyword>RESULT_VARIABLE</keyword>
<keyword>RESULTS_VARIABLE</keyword>
<keyword>RETRY_COUNT</keyword>
<keyword>RETRY_DELAY</keyword>
<keyword>RETURN_VALUE</keyword>
<keyword>REUSE_FROM</keyword>
<keyword>REVERSE</keyword>
<keyword>RUN_OUTPUT_VARIABLE</keyword>
<keyword>RUNTIME</keyword>
<keyword>RUNTIME_DIRECTORY</keyword>
<keyword>SCHEDULE_RANDOM</keyword>
<keyword>SCRIPT</keyword>
<keyword>SEND_ERROR</keyword>
<keyword>SET</keyword>
<keyword>SHA1</keyword>
<keyword>SHA224</keyword>
<keyword>SHA256</keyword>
<keyword>SHA384</keyword>
<keyword>SHA512</keyword>
<keyword>SHA3_224</keyword>
<keyword>SHA3_256</keyword>
<keyword>SHA3_384</keyword>
<keyword>SHA3_512</keyword>
<keyword>SHARED</keyword>
<keyword>SIZE</keyword>
<keyword>SORT</keyword>
<keyword>SOURCE</keyword>
<keyword>START</keyword>
<keyword>STATIC</keyword>
<keyword>STATUS</keyword>
<keyword>STOP_ON_FAILURE</keyword>
<keyword>STOP_TIME</keyword>
<keyword>STREQUAL</keyword>
<keyword>STRGREATER</keyword>
<keyword>STRGREATER_EQUAL</keyword>
<keyword>STRIDE</keyword>
<keyword>STRING</keyword>
<keyword>STRINGS</keyword>
<keyword>STRIP</keyword>
<keyword>STRLESS</keyword>
<keyword>STRLESS_EQUAL</keyword>
<keyword>SUBLIST</keyword>
<keyword>SUBMIT_URL</keyword>
<keyword>SUBSTRING</keyword>
<keyword>SYSTEM</keyword>
<keyword>TARGET</keyword>
<keyword>TARGET_DIRECTORY</keyword>
<keyword>TARGETS</keyword>
<keyword>TEST</keyword>
<keyword>TEST_LOAD</keyword>
<keyword>TIMEOUT</keyword>
<keyword>TIMESTAMP</keyword>
<keyword>TOLOWER</keyword>
<keyword>TOUCH</keyword>
<keyword>TOUCH_NOCREATE</keyword>
<keyword>TOUPPER</keyword>
<keyword>TO_CMAKE_PATH</keyword>
<keyword>TO_NATIVE_PATH</keyword>
<keyword>TRACE</keyword>
<keyword>TRANSFORM</keyword>
<keyword>TREE</keyword>
<keyword>TYPE</keyword>
<keyword>UNIX</keyword>
<keyword>UNIX_COMMAND</keyword>
<keyword>UNKNOWN</keyword>
<keyword>UPLOAD</keyword>
<keyword>UPPER</keyword>
<keyword>USE_SOURCE_PERMISSIONS</keyword>
<keyword>USES_TERMINAL</keyword>
<keyword>UTC</keyword>
<keyword>UUID</keyword>
<keyword>VARIABLE</keyword>
<keyword>VERBATIM</keyword>
<keyword>VERBOSE</keyword>
<keyword>VERSION</keyword>
<keyword>VERSION_EQUAL</keyword>
<keyword>VERSION_GREATER</keyword>
<keyword>VERSION_GREATER_EQUAL</keyword>
<keyword>VERSION_LESS</keyword>
<keyword>VERSION_LESS_EQUAL</keyword>
<keyword>WARNING</keyword>
<keyword>WIN32</keyword>
<keyword>WINDOWS_COMMAND</keyword>
<keyword>WORKING_DIRECTORY</keyword>
<keyword>WRITE</keyword>
<keyword>ZIP_LISTS</keyword>
</context>
<context id="control" style-ref="control">

View File

@@ -131,6 +131,7 @@
<keyword>private</keyword>
<keyword>protected</keyword>
<keyword>public</keyword>
<keyword>record</keyword>
<keyword>ref</keyword>
<keyword>sealed</keyword>
<keyword>static</keyword>
@@ -157,6 +158,7 @@
<keyword>goto</keyword>
<keyword>if</keyword>
<keyword>in</keyword>
<keyword>init</keyword>
<keyword>is</keyword>
<keyword>nameof</keyword>
<keyword>new</keyword>

View File

@@ -7,7 +7,7 @@
Copyright (C) 2004 Scott Martin <scott@coffeeblack.org>
Copyright (C) 2010 Patryk Zawadzki <patrys@pld-linux.org>
Copyright (C) 2016 Tobias Schönberg <tobias47n9e@gmail.com>
Copyright (C) 2018-2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2018-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -96,7 +96,8 @@
<default-regex-options case-sensitive="false"/>
<keyword-char-class>[a-z0-9_\x{80}-\x{10ffff}\\-]</keyword-char-class>
<!-- from keyword-code-point -->
<keyword-char-class>[^\x{0}-\x{2C}\x{2E}\x{2F}\x{3A}-\x{40}\x{5B}\x{5D}\x{5E}\x{60}\x{7B}-\x{7F}]</keyword-char-class>
<definitions>
@@ -125,30 +126,78 @@
)
</define-regex>
<!-- https://drafts.csswg.org/css-syntax/#non-ascii-code-point -->
<define-regex id="non-ascii">[\x{80}-\x{10ffff}]</define-regex>
<!--
https://drafts.csswg.org/css-syntax/#name-start-code-point
includes:
U+0041-U+005A Latin capital letter A to Z (A-Z)
U+005F Low line (_)
U+0061-U+007A Latin small letter A to Z (a-z)
U+0080- Non-ASCII
-->
<define-regex id="identifier-start-code-point" extended="true">
[^\x{0}-\x{40}\x{5B}-\x{5E}\x{60}\x{7B}-\x{7F}]
</define-regex>
<!--
https://drafts.csswg.org/css-syntax/#name-code-point
includes:
U+002D Hyphen-minus (-)
U+0030-U+0039 Digit zero to nine (0-9)
U+0041-U+005A Latin capital letter A to Z (A-Z)
U+005F Low line (_)
U+0061-U+007A Latin small letter A to Z (a-z)
U+0080- Non-ASCII
-->
<define-regex id="identifier-code-point" extended="true">
[^\x{0}-\x{2C}\x{2E}\x{2F}\x{3A}-\x{40}\x{5B}-\x{5E}\x{60}\x{7B}-\x{7F}]
</define-regex>
<!--
identifier-code-point, excluding hyphen
includes:
U+0030-U+0039 Digit zero to nine (0-9)
U+0041-U+005A Latin capital letter A to Z (A-Z)
U+005F Low line (_)
U+0061-U+007A Latin small letter A to Z (a-z)
U+0080- Non-ASCII
-->
<define-regex id="identifier-prefix-code-point" extended="true">
[^\x{0}-\x{2F}\x{3A}-\x{40}\x{5B}-\x{5E}\x{60}\x{7B}-\x{7F}]
</define-regex>
<!--
identifier-code-point, including backslash
includes:
U+002D Hyphen-minus (-)
U+0030-U+0039 Digit zero to nine (0-9)
U+0041-U+005A Latin capital letter A to Z (A-Z)
U+005C Reverse solidus (\)
U+005F Low line (_)
U+0061-U+007A Latin small letter A to Z (a-z)
U+0080- Non-ASCII
-->
<define-regex id="keyword-code-point" extended="true">
[^\x{0}-\x{2C}\x{2E}\x{2F}\x{3A}-\x{40}\x{5B}\x{5D}\x{5E}\x{60}\x{7B}-\x{7F}]
</define-regex>
<!--
a combination of name-start code point and escape
https://drafts.csswg.org/css-syntax/#name-start-code-point
https://www.w3.org/TR/selectors-3/#lex
-->
<define-regex id="identifier-start-char" extended="true">
[a-z_] | \%{non-ascii} | \%{escape}
\%{identifier-start-code-point} | \%{escape}
</define-regex>
<!--
a combination of name code point and escape
https://drafts.csswg.org/css-syntax/#name-code-point
https://www.w3.org/TR/selectors-3/#lex
-->
<define-regex id="identifier-chars" extended="true">
(?&gt; (?: [a-z0-9_-]+ | \%{non-ascii}+ | \%{escape}+ )+ )
</define-regex>
<!-- for lookbehinds (and lookaheads) -->
<define-regex id="single-identifier-char" extended="true">
[a-z0-9_-] | \%{non-ascii}
(?&gt; (?: \%{identifier-code-point}+ | \%{escape}+ )+ )
</define-regex>
<!-- https://drafts.csswg.org/css-syntax/#ident-token-diagram -->
@@ -156,12 +205,22 @@
(?: -- | -? \%{identifier-start-char} ) \%{identifier-chars}?
</define-regex>
<!-- identifier-chars, excluding hyphen -->
<define-regex id="identifier-prefix-chars" extended="true">
(?&gt; (?: \%{identifier-prefix-code-point}+ | \%{escape}+ )+ )
</define-regex>
<!--
https://www.w3.org/TR/CSS21/syndata.html#vendor-keywords
https://en.wikipedia.org/wiki/CSS_hack#List_of_prefixes
-->
<define-regex id="vendor-specific-prefix" extended="true">
(?: [_-] \%{identifier-start-char}+ | mso | prince ) -
(?:
[_-] \%{identifier-start-char} \%{identifier-prefix-chars}? |
mso |
prince
)
-
</define-regex>
<define-regex id="vendor-specific-identifier" extended="true">
@@ -173,6 +232,14 @@
-- \%{identifier-chars}+
</define-regex>
<define-regex id="keyword-start" extended="true">
(?&lt;! \%{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>
@@ -220,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">
@@ -270,10 +343,15 @@
</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">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>aliceblue</keyword>
<keyword>antiquewhite</keyword>
<keyword>aquamarine</keyword>
@@ -408,6 +486,8 @@
</context>
<context id="named-color" style-ref="color">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>aqua</keyword>
<keyword>black</keyword>
<keyword>blue</keyword>
@@ -452,11 +532,12 @@
</define-regex>
<define-regex id="non-number-char" extended="true">
\%{single-identifier-char} | \.
\%{keyword-code-point} | \.
</define-regex>
<context id="dimension" style-ref="dimension">
<prefix>(?&lt;!\%{non-number-char})\%{number}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>ch</keyword>
<keyword>cm</keyword>
<keyword>deg</keyword>
@@ -492,6 +573,7 @@
<context id="resolution" style-ref="dimension">
<prefix>(?&lt;!\%{non-number-char})\%{positive-number}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>dpcm</keyword>
<keyword>dpi</keyword>
<keyword>dppx</keyword>
@@ -534,8 +616,9 @@
<context id="unicode-range" style-ref="unicode-range">
<match extended="true">
\%[ u \+ (?&gt; [a-f0-9?]{1,6} ) (?&gt; - [a-f0-9]{1,6} )?
(?! \%{single-identifier-char} )
\%{keyword-start}
u \+ (?&gt; [a-f0-9?]{1,6} ) (?&gt; - [a-f0-9]{1,6} )?
\%{keyword-end}
</match>
</context>
@@ -543,6 +626,8 @@
<!-- functions -->
<context id="css3-function-arguments" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>at</keyword>
<keyword>auto-fill</keyword>
<keyword>auto-fit</keyword>
@@ -566,7 +651,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"/>
@@ -580,7 +667,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"/>
@@ -600,7 +689,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"/>
@@ -612,7 +703,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"/>
@@ -686,6 +779,8 @@
<!-- style properties -->
<context id="svg-property-names" style-ref="property-name">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>clip-path</keyword>
<keyword>clip-rule</keyword>
<keyword>color-interpolatation-filters</keyword>
@@ -716,6 +811,8 @@
</context>
<context id="css3-property-names" style-ref="property-name">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>align-content</keyword>
<keyword>align-items</keyword>
<keyword>align-self</keyword>
@@ -851,6 +948,8 @@
</context>
<context id="property-names" style-ref="property-name">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>azimuth</keyword>
<keyword>background-attachment</keyword>
<keyword>background-color</keyword>
@@ -981,6 +1080,8 @@
</context>
<context id="animatable-properties" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>background-color</keyword>
<keyword>background-position</keyword>
<keyword>background-size</keyword>
@@ -1075,6 +1176,8 @@
</context>
<context id="svg-property-values" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>alphabetic</keyword>
<keyword>bevel</keyword>
<keyword>butt</keyword>
@@ -1108,6 +1211,8 @@
</context>
<context id="east-asian-variant-values" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>jis04</keyword>
<keyword>jis78</keyword>
<keyword>jis83</keyword>
@@ -1117,6 +1222,8 @@
</context>
<context id="page-sizes" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>A3</keyword>
<keyword>A4</keyword>
<keyword>A5</keyword>
@@ -1130,12 +1237,13 @@
</context>
<context id="css3-property-values" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>active</keyword>
<keyword>add</keyword>
<keyword>allow-end</keyword>
<keyword>all-petite-caps</keyword>
<keyword>all-small-caps</keyword>
<keyword>all-scroll</keyword> <!-- css2, but needed for regex -->
<keyword>all</keyword>
<keyword>alpha</keyword>
<keyword>alternate-reverse</keyword>
@@ -1209,7 +1317,6 @@
<keyword>kashida</keyword>
<keyword>keep-all</keyword>
<keyword>last</keyword>
<keyword>left-side</keyword> <!-- css2, but needed for regex -->
<keyword>left</keyword>
<keyword>lighten</keyword>
<keyword>linear</keyword>
@@ -1287,6 +1394,8 @@
</context>
<context id="property-values" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>above</keyword>
<keyword>absolute</keyword>
<keyword>alias</keyword>
@@ -1546,6 +1655,8 @@
<!-- modifiers -->
<context id="modifiers" style-ref="modifier">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>important</keyword>
</context>
@@ -1623,12 +1734,16 @@
<!-- media queries -->
<context id="media-query-operators" style-ref="media-query-operator">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>and</keyword>
<keyword>not</keyword>
<keyword>only</keyword>
</context>
<context id="media-types" style-ref="media-type">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>all</keyword>
<keyword>print</keyword>
<keyword>screen</keyword>
@@ -1636,6 +1751,8 @@
</context>
<context id="css3-media-features" style-ref="media-feature">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>any-hover</keyword>
<keyword>any-pointer</keyword>
<keyword>aspect-ratio</keyword>
@@ -1672,6 +1789,8 @@
</context>
<context id="css3-media-feature-values" style-ref="media-feature-value">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>browser</keyword>
<keyword>coarse</keyword>
<keyword>fast</keyword>
@@ -1835,7 +1954,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 -->
@@ -1844,7 +1965,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"/>
@@ -1872,7 +1995,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"/>
@@ -1891,6 +2016,7 @@
<context id="font-feature-types" style-ref="at-rule-inner-selector">
<prefix>@</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>annotation</keyword>
<keyword>character-variant</keyword>
<keyword>ornaments</keyword>
@@ -1956,7 +2082,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"/>
@@ -1972,7 +2100,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"/>
@@ -1991,6 +2121,8 @@
-->
<context id="keyframe-selector" style-ref="at-rule-inner-selector">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>from</keyword>
<keyword>to</keyword>
</context>
@@ -2016,7 +2148,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"/>
@@ -2028,7 +2162,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"/>
@@ -2044,7 +2180,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"/>
@@ -2065,7 +2203,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"/>
@@ -2086,7 +2226,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>
@@ -2104,6 +2246,7 @@
<context id="page-margin-box-types" style-ref="at-rule-inner-selector">
<prefix>@</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>bottom-center</keyword>
<keyword>bottom-left-corner</keyword>
<keyword>bottom-left</keyword>
@@ -2137,7 +2280,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"/>
@@ -2154,6 +2299,8 @@
-->
<context id="at-supports-operators" style-ref="at-rule-operator">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>and</keyword>
<keyword>not</keyword>
<keyword>or</keyword>
@@ -2202,7 +2349,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"/>
@@ -2237,7 +2386,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"/>
@@ -2255,7 +2406,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">
@@ -2263,7 +2416,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">
@@ -2311,20 +2466,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>
@@ -2351,13 +2512,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 |
@@ -2387,7 +2550,7 @@
valid |
visited
)
\%]
\%{keyword-end}
</start>
<end>\%{def:always-match}</end>
</context>
@@ -2399,7 +2562,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"/>
@@ -2425,7 +2590,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"/>
@@ -2441,6 +2608,8 @@
</context>
<context id="nth-pseudo-class-keywords" once-only="true" style-ref="keyword">
<prefix>\%{keyword-start}</prefix>
<suffix>\%{keyword-end}</suffix>
<keyword>even</keyword>
<keyword>odd</keyword>
</context>
@@ -2497,7 +2666,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>

View File

@@ -152,15 +152,31 @@
<!-- $^ never matches. -->
<define-regex id="never-match">$^</define-regex>
<!-- Unicode ID_Start and ID_Continue characters
Descriptions from https://www.unicode.org/reports/tr31/#Table_Lexical_Classes_for_Identifiers
Other_ID_Start and Other_ID_Continue code points from https://www.unicode.org/Public/12.1.0/ucd/PropList.txt
<!-- Unicode lexical classes for identifiers
Descriptions from:
https://www.unicode.org/reports/tr31/#Table_Lexical_Classes_for_Identifiers
Code point data from:
https://www.unicode.org/Public/13.0.0/ucd/DerivedCoreProperties.txt
https://www.unicode.org/Public/13.0.0/ucd/PropList.txt
U+2E2F VERTICAL TILDE is the only applicable code point in
Pattern_Syntax (and Pattern_White_Space) to subtract to form
ID_Start and ID_Continue
-->
<define-regex id="unicode-id-start" extended="true">
[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}]
(?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}]
</define-regex>
<define-regex id="unicode-id-continue" extended="true">
[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}]
(?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}]
</define-regex>
<define-regex id="unicode-xid-start" extended="true">
(?![\x{037A}\x{0E33}\x{0EB3}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}\x{FF9E}-\x{FF9F}])
\%{unicode-id-start}
</define-regex>
<define-regex id="unicode-xid-continue" extended="true">
(?![\x{037A}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}])
\%{unicode-id-continue}
</define-regex>
<define-regex id="decimal" extended="true">

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
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, see <http://www.gnu.org/licenses/>.
-->
<language id="erb-html" name="ERB (HTML)" version="2.0" _section="Markup">
<metadata>
<property name="mimetypes">text/rhtml</property>
<property name="globs">*.html.erb;*.rhtml</property>
<property name="block-comment-start">&lt;!--</property>
<property name="block-comment-end">--&gt;</property>
</metadata>
<definitions>
<replace id="html:embedded-lang-hook" ref="erb:erb"/>
<context id="erb-html">
<include>
<context ref="erb:erb"/>
<context ref="html:html"/>
</include>
</context>
</definitions>
</language>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
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, see <http://www.gnu.org/licenses/>.
-->
<language id="erb-js" name="ERB (JavaScript)" version="2.0" _section="Markup">
<metadata>
<property name="globs">*.js.erb</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
</metadata>
<definitions>
<replace id="js:embedded-lang-hooks" ref="erb:erb"/>
<context id="erb-js">
<include>
<context ref="erb:erb"/>
<context ref="js:js"/>
</include>
</context>
</definitions>
</language>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
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, see <http://www.gnu.org/licenses/>.
-->
<language id="erb" name="ERB" version="2.0" _section="Markup">
<metadata>
<property name="mimetypes">text/erb</property>
<property name="globs">*.erb</property>
<property name="block-comment-start">&lt;%#</property>
<property name="block-comment-end">%&gt;</property>
</metadata>
<styles>
<style id="preprocessor" name="Preprocessor tags" map-to="def:preprocessor"/>
<style id="erb-comment" name="Embedded Ruby comment" map-to="def:comment"/>
<style id="erb-block" name="Embedded Ruby code"/>
</styles>
<definitions>
<context id="erb-comment" style-ref="erb-comment" class-disabled="no-spell-check" class="comment">
<start>&lt;%#</start>
<end>%&gt;</end>
<include>
<context ref="def:in-comment"/>
</include>
</context>
<context id="erb-literal" style-ref="preprocessor">
<match>&lt;%%</match>
</context>
<context id="erb-block" style-ref="erb-block" class="no-spell-check">
<start>&lt;%[=-]?</start>
<end>-?%&gt;</end>
<include>
<context sub-pattern="0" where="start" style-ref="preprocessor"/>
<context sub-pattern="0" where="end" style-ref="preprocessor"/>
<context ref="ruby:ruby:*"/>
</include>
</context>
<context id="erb">
<include>
<context ref="erb-comment"/>
<context ref="erb-literal"/>
<context ref="erb-block"/>
</include>
</context>
</definitions>
</language>

View File

@@ -77,7 +77,7 @@
<match extended="true">
\%{preproc-start}
(include|import)\s*
(".*?"|&lt;.*&gt;)
(".*?"|&lt;.*?&gt;)
</match>
<include>
<context id="included-file" sub-pattern="2" style-ref="included-file" class="path"/>

View File

@@ -142,7 +142,7 @@
</define-regex>
<context id="imaginary" style-ref="imaginary">
<match>(?&lt;![\w\.])(\%{float}|\%{oct}|\%{bin}|\%{hex}|\[0-9]+)[i]\b</match>
<match>(?&lt;![\w\.])(\%{float}|\%{oct}|\%{bin}|\%{hex}|\%{dec})[i]\b</match>
</context>
<context id="float" style-ref="floating-point">

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-expr" name="JavaScript Expressions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -37,11 +37,11 @@
<!--
Expression / context structure:
left-hand side (lhs) expression: new Array ()
=== ===== ==
/ | \
pre-primary primary post-primary
expression expression expression
left-hand side (lhs) expression: Array ()
===== ==
/ \
primary post-primary
expression expression
expression: - obj.count + 1
= ========= ===
@@ -51,48 +51,134 @@
-->
<!-- # Pre-primary expression -->
<!-- # "import" expression
<context id="_pre-primary-expression">
import("module")
import.meta
-->
<!-- a consequence of this is that "import" by itself (when used as
a primary expression) will not be highlighted as an error -->
<!-- ES2020 -->
<!-- <ImportCall> (part of) -->
<context id="_choice-import-call-expression" end-parent="true">
<start>\(</start>
<end>\)</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<!-- ES2017, cannot be followed by line terminator -->
<context id="_async-pre-primary-expression-keyword" style-ref="js:keyword">
<match extended="true">
\%[ async \%]
(?= # preceeds arrow function
\%{js:optional-whitespace-or-comments}
(?:
\%{js:identifier}
\%{js:optional-whitespace-or-comments}
=&gt; |
\( # can this be better?
)
)
(?! # does not preceed "function" (leave to function expression)
\%{js:optional-whitespace-or-comments}
\%[ function \%]
)
</match>
</context> <!-- /_async-pre-primary-expression-keyword -->
<context id="_import-call-expression-content">
<include>
<context ref="expression-without-comma"/>
</include>
</context> <!-- /_import-call-expression-content -->
</include>
</context> <!-- /_choice-import-call-expression -->
<context id="_new-pre-primary-expression-keyword" style-ref="js:keyword">
<match extended="true">
\%[ new \%] (?! \%{js:new-target-object-keyword-suffix} )
</match>
</context> <!-- /_new-pre-primary-expression-keyword -->
<!-- ES2020 -->
<!-- <ImportMeta> (part of) -->
<context id="_choice-import-meta-expression" end-parent="true">
<start>\.</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_import-meta-expression-content">
<include>
<context id="_import-meta-expression-keyword" style-ref="js:keyword" once-only="true">
<match>\%{js:meta-keyword}</match>
</context> <!-- /_import-meta-expression-keyword -->
</include>
</context> <!-- /_import-meta-expression-content -->
</include>
</context> <!-- /_pre-primary-expression -->
</context> <!-- /_choice-import-meta-expression -->
<context id="_ordered-pre-primary-expression" once-only="true">
<context id="_choice-import-expression" end-parent="true">
<start>\%{js:import-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_import-expression-content">
<include>
<context ref="_choice-import-call-expression"/>
<context ref="_choice-import-meta-expression"/>
</include>
</context> <!-- /_import-expression-content -->
</include>
</context> <!-- /_choice-import-expression -->
<!-- # "new" expression
new Array()
new.target
-->
<!-- <NewTarget> (part of) -->
<context id="_choice-new-target-expression" end-parent="true">
<start>\.</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_new-target-expression-content">
<include>
<context id="_new-target-expression-keyword" style-ref="js:keyword" once-only="true">
<match>\%{js:target-keyword}</match>
</context> <!-- /_new-target-expression-keyword -->
</include>
</context> <!-- /_new-target-expression-content -->
</include>
</context> <!-- /_choice-new-target-expression -->
<context id="_choice-new-object-expression" end-parent="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_pre-primary-expression"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_new-object-expression-content">
<include>
<context ref="_primary-expression"/>
</include>
</context> <!-- /_new-object-expression-content -->
</include>
</context> <!-- /_ordered-pre-primary-expression -->
</context> <!-- /_choice-new-object-expression -->
<context id="_choice-new-expression" end-parent="true">
<start>\%{js:new-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_new-expression-content">
<include>
<context ref="_choice-new-target-expression"/>
<context ref="_choice-new-object-expression"/>
</include>
</context> <!-- /_new-expression-content -->
</include>
</context> <!-- /_choice-new-expression -->
<!-- # Grouping / arrow function parameters
@@ -181,24 +267,28 @@
<context ref="js-lit:choice-template-literal"/>
<context ref="js-fn:choice-function-expression"/>
<context ref="js-fn:choice-class-expression"/>
<context ref="_choice-import-expression"/>
<context ref="_choice-new-expression"/>
<context ref="_choice-grouping"/>
<context ref="js-lit:choice-number"/>
<context ref="js-lit:choice-string"/>
<context id="_choice-primary-expression-identifier" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
<!-- no comments here -->
<!-- do not extend the context by matching comments or
embedded-lang-hooks, which may lead to multiple identifiers -->
embedded-lang-hooks, which may lead to multiple
identifiers -->
<context id="_primary-expression-identifier-content">
<include>
<!-- technically these would be choices, but it would be very
difficult to turn large keyword contexts into container
contexts with end-parent="true" -->
<!-- technically these would be choices, but it
would be very difficult to turn large keyword
contexts into container contexts with
end-parent="true" -->
<context ref="js-lit:null-value"/>
<context ref="js-lit:boolean"/>
<context ref="js-val:global-values"/>
@@ -288,9 +378,33 @@
func?.()
-->
<context id="_choice-property-identifier" end-parent="true">
<start>\%{js:identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
<!-- no comments here -->
<!-- do not extend the context by matching comments or
embedded-lang-hooks, which may lead to multiple
identifiers -->
<context id="_property-identifier-content">
<include>
<!-- technically these would be choices, but it would be
very difficult to turn large keyword contexts into
container contexts with end-parent="true" -->
<context ref="js-val:properties-methods"/>
<context ref="js:identifier-name"/>
</include>
</context> <!-- /_property-identifier-content -->
</include>
</context> <!-- /_choice-property-identifier -->
<context id="_post-primary-expression">
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<!-- <MemberExpression> (part of) -->
<context id="_dot-property-accessors">
@@ -302,8 +416,7 @@
<context id="_dot-property-accessor-content">
<include>
<context ref="js-val:properties-methods"/>
<context ref="js:identifier-name"/>
<context ref="_choice-property-identifier"/>
</include>
</context> <!-- /_dot-property-accessor-content -->
@@ -329,7 +442,7 @@
<!-- ES2020 -->
<!-- <OptionalChain> (part of) -->
<context id="_optional-chain">
<context id="_optional-chains">
<start>\?\.(?![0-9])</start>
<end>\%{js:before-next-token}</end>
<include>
@@ -341,13 +454,12 @@
<!-- only match dot-property accessor content here
this context will end early for other cases
-->
<context ref="js-val:properties-methods"/>
<context ref="js:identifier-name"/>
<context ref="_choice-property-identifier"/>
</include>
</context> <!-- /_optional-chain-content -->
</include>
</context> <!-- /_optional-chain -->
</context> <!-- /_optional-chains -->
<context ref="_function-arguments-lists"/>
<context ref="js-lit:template-literals"/>
@@ -367,7 +479,7 @@
<!-- shared between pre- and post-lhs expressions -->
<context id="_increment-decrement-operators" style-ref="js:increment-decrement-operator">
<match>(\+\+|--)</match>
<match>\+\+|--</match>
</context> <!-- /_increment-decrement-operators -->
@@ -378,24 +490,42 @@
<context ref="js:embedded-lang-hooks"/>
<context ref="_increment-decrement-operators"/>
<!-- ES2017, cannot be followed by line terminator -->
<context id="_async-keywords" style-ref="js:keyword">
<match extended="true">
\%{js:async-keyword}
# preceeds arrow function
(?=
\%{js:optional-whitespace-or-comments}
(?:
\%{js:identifier} \%{js:optional-whitespace-or-comments} =&gt; |
\( # can this be better?
)
)
# does not preceed "function" (leave to function expression)
(?! \%{js:optional-whitespace-or-comments} \%{js:function-keyword} )
</match>
</context> <!-- /_async-keywords -->
<!-- await: ES2017 -->
<context id="_keyword-unary-operators" style-ref="js:keyword">
<keyword>await</keyword> <!-- ES2017 -->
<keyword>delete</keyword>
<keyword>typeof</keyword>
<keyword>void</keyword>
<keyword>yield</keyword>
<match extended="true">
\%{js:await-keyword} |
\%{js:delete-keyword} |
\%{js:typeof-keyword} |
\%{js:void-keyword} |
\%{js:yield-keyword}
</match>
</context> <!-- /_keyword-unary-operators -->
<context ref="js:generator-modifier"/> <!-- for yield* -->
<context id="_unary-operators" style-ref="js:unary-operator">
<match extended="true">
(
\+ | # unary plus
- | # unary negation
~ | # bitwise not
! # logical not
)
\+ | # unary plus
- | # unary negation
~ | # bitwise not
! # logical not
</match>
</context> <!-- /_unary-operators -->
@@ -437,7 +567,6 @@
<context id="_lhs-expression-content">
<include>
<context ref="_ordered-pre-primary-expression"/>
<context ref="_ordered-primary-expression"/>
<context ref="_ordered-post-primary-expression"/>
</include>
@@ -456,7 +585,7 @@
<!-- ## Without comma -->
<context id="_ternary-operator-without-comma-false-clause" once-only="true">
<context id="_ternary-operator-without-comma-false-expression" once-only="true">
<start>:</start>
<end>\%{js:before-next-token}</end>
<include>
@@ -464,14 +593,14 @@
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_ternary-operator-without-comma-false-clause-content">
<context id="_ternary-operator-without-comma-false-expression-content">
<include>
<context ref="expression-without-comma"/>
</include>
</context> <!-- /_ternary-operator-without-comma-false-clause-content -->
</context> <!-- /_ternary-operator-without-comma-false-expression-content -->
</include>
</context> <!-- /_ternary-operator-without-comma-false-clause -->
</context> <!-- /_ternary-operator-without-comma-false-expression -->
<context id="_choice-ternary-operator-without-comma-true-expression" end-parent="true">
<start>\%{js:before-next-token}</start>
@@ -483,7 +612,7 @@
<context id="_ternary-operator-without-comma-true-expression-content">
<include>
<context ref="expression-without-comma"/>
<context ref="_ternary-operator-without-comma-false-clause"/>
<context ref="_ternary-operator-without-comma-false-expression"/>
</include>
</context> <!-- /_ternary-operator-without-comma-true-expression-content -->
@@ -510,7 +639,7 @@
<!-- ## With comma -->
<context id="_ternary-operator-with-comma-false-clause" once-only="true">
<context id="_ternary-operator-with-comma-false-expression" once-only="true">
<start>:</start>
<end>\%{js:before-next-token}</end>
<include>
@@ -518,14 +647,14 @@
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_ternary-operator-with-comma-false-clause-content">
<context id="_ternary-operator-with-comma-false-expression-content">
<include>
<context ref="expression-with-comma"/>
</include>
</context> <!-- /_ternary-operator-with-comma-false-clause-content -->
</context> <!-- /_ternary-operator-with-comma-false-expression-content -->
</include>
</context> <!-- /_ternary-operator-with-comma-false-clause -->
</context> <!-- /_ternary-operator-with-comma-false-expression -->
<context id="_choice-ternary-operator-with-comma-true-expression" end-parent="true">
<start>\%{js:before-next-token}</start>
@@ -536,8 +665,8 @@
<context id="_ternary-operator-with-comma-true-expression-content">
<include>
<context ref="expression-with-comma"/>
<context ref="_ternary-operator-with-comma-false-clause"/>
<context ref="expression-without-comma"/> <!-- comma not allowed -->
<context ref="_ternary-operator-with-comma-false-expression"/>
</include>
</context> <!-- /_ternary-operator-with-comma-true-expression-content -->
@@ -566,22 +695,20 @@
<!-- # Binary operators -->
<define-regex id="_keyword-binary-operator" extended="true">
(?: \%[ (?: instanceof | in ) \%] )
\%{js:instanceof-keyword} | \%{js:in-keyword}
</define-regex> <!-- /_keyword-binary-operator -->
<!-- excluding comma operator -->
<define-regex id="_binary-operator" extended="true">
(?:
\*\* =? | # exponentiation (assignment) (ES2016)
[+/*%-] =? | # arithmetic (assignment)
[!=]==? | # equality
&amp;&amp; | \|\| | # logical
\?\? | # nullish coalescing (ES2020)
[&amp;|^] =? | # bitwise logical (assignment)
(?: &lt;&lt; | &gt;&gt;&gt;? ) =? | # bitwise shift (assignment)
[&lt;&gt;]=? | # relational
= # assignment
)
\*\* =? | # exponentiation (assignment) (ES2016)
[+/*%-] =? | # arithmetic (assignment)
[!=]==? | # equality
&amp;&amp; | \|\| | # logical
\?\? | # nullish coalescing (ES2020)
[&amp;|^] =? | # bitwise logical (assignment)
(?: &lt;&lt; | &gt;&gt;&gt;? ) =? | # bitwise shift (assignment)
[&lt;&gt;]=? | # relational
= # assignment
</define-regex> <!-- /_binary-operator -->
<!-- ## Without comma -->
@@ -640,7 +767,7 @@
</context> <!-- /_keyword-binary-operators-with-comma -->
<context id="_binary-operators-with-comma">
<start>(\%{_binary-operator}|,)</start>
<start>\%{_binary-operator}|,</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:binary-operator"/>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-fn" name="JavaScript Functions and Classes" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -43,8 +43,8 @@
<!-- ## Function expression keyword -->
<context id="_function-expression-async-keyword" style-ref="js:keyword">
<keyword>async</keyword>
<context id="_function-expression-async-keyword" style-ref="js:keyword" once-only="true">
<match>\%{js:async-keyword}</match>
</context> <!-- /_function-expression-async-keyword -->
<context id="_ordered-function-expression-async-keyword" once-only="true">
@@ -55,8 +55,8 @@
</include>
</context> <!-- /_ordered-function-expression-async-keyword -->
<context id="_function-expression-function-keyword" style-ref="js:keyword">
<keyword>function</keyword>
<context id="_function-expression-function-keyword" style-ref="js:keyword" once-only="true">
<match>\%{js:function-keyword}</match>
</context> <!-- /_function-expression-function-keyword -->
<context id="_ordered-function-expression-function-keyword" once-only="true">
@@ -72,7 +72,7 @@
<context id="_function-parameters-content">
<include>
<context ref="js:ordered-rest-syntax"/>
<context ref="js:ordered-assignment-target"/>
<context ref="js:ordered-binding"/>
<context ref="js:ordered-default-value-assignment"/>
</include>
</context> <!-- /_function-parameters-content -->
@@ -227,52 +227,24 @@
}
-->
<context id="_method-definition-modifier" once-only="true">
<context id="_property-accessor-keyword" style-ref="js:keyword" once-only="true">
<match extended="true">
\%{js:get-keyword} | \%{js:set-keyword}
</match>
</context> <!-- /_property-accessor-keyword -->
<context id="ordered-property-accessor-keyword" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_method-definition-modifier-content">
<include>
<context id="_choice-method-definition-modifier-keyword" style-ref="js:keyword" end-parent="true">
<keyword>get</keyword>
<keyword>set</keyword>
</context> <!-- /_choice-method-definition-modifier-keyword -->
<!-- ES2017, cannot be followed by line terminator -->
<context id="_choice-async-method-definition-modifier-keyword" style-ref="js:keyword" end-parent="true">
<match extended="true">
\%[ async \%]
(?=
\%{js:optional-whitespace-or-comments}
(?:
\%{js:identifier-start} |
\%{js:generator-modifier}
)
)
</match>
</context> <!-- /_choice-async-method-definition-modifier-keyword -->
</include>
</context> <!-- /_method-definition-modifier-content -->
<context ref="_property-accessor-keyword"/>
</include>
</context> <!-- /_method-definition-modifier -->
</context> <!-- /ordered-property-accessor-keyword -->
<context id="_ordered-method-definition-modifier" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_method-definition-modifier"/>
</include>
</context> <!-- /_ordered-method-definition-modifier -->
<!-- <MethodDefinition> -->
<context id="_method-definition" once-only="true">
<start>\%{js:before-next-token}</start>
<!-- <MethodDefinition> (part of) -->
<!-- note that this does not include js-lit:ordered-property-name -->
<context id="choice-method-definition" style-ref="js:function-expression" end-parent="true">
<start>(?=\()</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
@@ -280,24 +252,33 @@
<context id="_method-definition-content">
<include>
<context ref="_ordered-method-definition-modifier"/>
<context ref="js:ordered-generator-modifier"/>
<context ref="js-lit:ordered-property-name"/>
<context ref="_ordered-function-parameters-list" style-ref="js:function-expression"/>
<context ref="_last-function-body" style-ref="js:function-expression"/>
<context ref="_ordered-function-parameters-list"/>
<context ref="_last-function-body"/>
</include>
</context> <!-- /_method-definition-content -->
</include>
</context> <!-- /_method-definition -->
</context> <!-- /choice-method-definition -->
<context id="ordered-method-definition" once-only="true">
<start>\%{js:before-next-token}</start>
<!-- <MethodDefinition> (part of) -->
<context id="choice-method-keyword-method-definition" style-ref="js:function-expression" end-parent="true">
<start>\%{js:method-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_method-definition"/>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_method-keyword-method-definition-content">
<include>
<context ref="js:ordered-generator-modifier"/>
<context ref="js-lit:ordered-property-name"/>
<context ref="choice-method-definition"/>
</include>
</context> <!-- /_method-keyword-method-definition-content -->
</include>
</context> <!-- /ordered-method-definition -->
</context> <!-- /choice-method-keyword-method-definition -->
<!-- # Class expression
@@ -322,7 +303,7 @@
<include>
<context id="_choice-class-optional-name-ignore-extends" end-parent="true">
<start>(?=\%[extends\%])</start>
<start>(?=\%{js:extends-keyword})</start>
<end>\%{def:always-match}</end>
</context> <!-- /_choice-class-optional-name-ignore-extends -->
@@ -344,7 +325,7 @@
<!-- ## Class extends clause -->
<context id="_class-extends-clause" once-only="true">
<start>\%[extends\%]</start>
<start>\%{js:extends-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -370,24 +351,8 @@
<!-- ## Class body -->
<context id="_class-body-member-modifier" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_class-body-member-modifier-content">
<include>
<context id="_choice-class-body-member-modifier-keyword" style-ref="js:keyword" end-parent="true">
<keyword>static</keyword>
</context> <!-- /_choice-class-body-member-modifier-keyword -->
</include>
</context> <!-- /_class-body-member-modifier-content -->
</include>
<context id="_class-body-member-modifier" style-ref="js:keyword" once-only="true">
<match>\%{js:static-keyword}</match>
</context> <!-- /_class-body-member-modifier -->
<context id="_ordered-class-body-member-modifier" once-only="true">
@@ -398,6 +363,45 @@
</include>
</context> <!-- /_ordered-class-body-member-modifier -->
<context id="_choice-class-body-keyword-named-method-member" style-ref="js:function-expression" end-parent="true">
<start extended="true">
(?: \%{js:get-keyword} | \%{js:set-keyword} | \%{js:static-keyword} )
(?= \%{js:optional-whitespace-or-comments} \( )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:identifier"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_class-body-keyword-named-method-member-content">
<include>
<context ref="choice-method-definition"/>
</include>
</context> <!-- /_class-body-keyword-named-method-member-content -->
</include>
</context> <!-- /_choice-class-body-keyword-named-method-member -->
<context id="_choice-class-body-constructor-member" style-ref="js:function-expression" end-parent="true">
<start extended="true">
\%{js:keyword-start} constructor \%{js:keyword-end}
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:built-in-method"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_class-body-constructor-member-content">
<include>
<context ref="choice-method-definition"/>
</include>
</context> <!-- /_class-body-constructor-member-content -->
</include>
</context> <!-- /_choice-class-body-constructor-member -->
<context id="_class-body-members">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
@@ -407,8 +411,20 @@
<context id="_class-body-member-content">
<include>
<!-- try to match before and after modifier -->
<context ref="_choice-class-body-keyword-named-method-member"/>
<!-- should not be combined with modifier, but cannot prevent it -->
<context ref="_choice-class-body-constructor-member"/>
<context ref="_ordered-class-body-member-modifier"/>
<context ref="ordered-method-definition"/>
<context ref="choice-method-keyword-method-definition"/>
<context ref="ordered-property-accessor-keyword"/>
<context ref="js-lit:ordered-property-name"/>
<context ref="choice-method-definition"/>
</include>
</context> <!-- /_class-body-member-content -->
@@ -443,7 +459,7 @@
<!-- <ClassExpression> / <ClassDeclaration> -->
<context id="choice-class-expression" style-ref="js:class-expression" end-parent="true">
<start>\%{js:class-expression-keyword}</start>
<start>\%{js:class-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -463,7 +479,7 @@
<!-- <ClassExpression> / <ClassDeclaration> -->
<context id="choice-class-expression-required-name" style-ref="js:class-expression" end-parent="true">
<start>\%{js:class-expression-keyword}</start>
<start>\%{js:class-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-lit" name="JavaScript Literals" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -39,13 +39,14 @@
<!-- <NullLiteral> -->
<context id="null-value" style-ref="js:null-value">
<keyword>null</keyword>
<match>\%{js:null-keyword}</match>
</context> <!-- /null-value -->
<!-- <BooleanLiteral> -->
<context id="boolean" style-ref="js:boolean">
<keyword>false</keyword>
<keyword>true</keyword>
<match extended="true">
\%{js:false-keyword} | \%{js:true-keyword}
</match>
</context> <!-- /boolean -->
@@ -66,30 +67,20 @@
<!-- <DecimalLiteral> -->
<context id="_choice-decimal" style-ref="js:decimal" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_decimal}
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_decimal} \%{js:number-end} )
</start>
<end>\%{_decimal}</end>
</context> <!-- /_choice-decimal -->
<define-regex id="_decimal-integer" extended="true">
(?&gt;
(?: [1-9][0-9]* | 0 )
)
(?&gt; [1-9][0-9]* | 0 )
</define-regex> <!-- /_decimal-integer -->
<!-- ES2020 -->
<!-- <DecimalBigIntegerLiteral> -->
<context id="_choice-decimal-big-integer" style-ref="js:decimal" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_decimal-integer} n
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_decimal-integer} n \%{js:number-end} )
</start>
<end>\%{_decimal-integer}n</end>
</context> <!-- /_choice-decimal-big-integer -->
@@ -101,11 +92,7 @@
<!-- <BinaryIntegerLiteral> -->
<context id="_choice-binary-integer" style-ref="js:binary-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_binary-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_binary-integer} n? \%{js:number-end} )
</start>
<end>\%{_binary-integer}n?</end>
</context> <!-- /_choice-binary-integer -->
@@ -117,11 +104,7 @@
<!-- <OctalIntegerLiteral> -->
<context id="_choice-octal-integer" style-ref="js:octal-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_octal-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_octal-integer} n? \%{js:number-end} )
</start>
<end>\%{_octal-integer}n?</end>
</context> <!-- /_choice-octal-integer -->
@@ -133,11 +116,7 @@
<context id="_choice-hex-integer" style-ref="js:hex-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_hex-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_hex-integer} n? \%{js:number-end} )
</start>
<end>\%{_hex-integer}n?</end>
</context> <!-- /_choice-hex-integer -->
@@ -149,11 +128,7 @@
<!-- Annex B: <LegacyOctalIntegerLiteral> -->
<context id="_choice-legacy-octal-integer" style-ref="js:error" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_legacy-octal-integer}
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_legacy-octal-integer} \%{js:number-end} )
</start>
<end>\%{_legacy-octal-integer}</end>
</context> <!-- /_choice-legacy-octal-integer -->
@@ -172,7 +147,7 @@
<context id="_legacy-octal-escape-sequences" style-ref="js:escape">
<match extended="true">
\\
(
(?:
0 [0-7]{1,2} | # 0-padded number, not \0 (null character)
[1-3] [0-7]{0,2} | # max \377
[4-7] [0-7]{0,1}
@@ -183,13 +158,11 @@
<!-- <EscapeSequence> (preceeded by backslash) -->
<context id="_escape-sequences" style-ref="js:escape">
<match extended="true">
(
\%{js:unicode-escape} |
\\
(
x[0-9a-fA-F]{2} | # hexadecimal escape
[^1-9xu] # single character escape
)
\%{js:unicode-escape} |
\\
(?:
x[0-9a-fA-F]{2} | # hexadecimal escape
[^1-9xu] # single character escape
)
</match>
</context> <!-- /_escape-sequences -->
@@ -312,16 +285,6 @@
<context ref="choice-number"/>
<context ref="choice-string"/>
<define-regex id="_special-property-names" extended="true">
(?: \%[ constructor \%] )
</define-regex> <!-- /_special-property-names -->
<context id="_choice-special-property-name" style-ref="js:built-in-method" end-parent="true">
<start>(?=\%{_special-property-names})</start>
<end>\%{_special-property-names}</end>
</context> <!-- /_choice-special-property-name -->
<context ref="js:choice-identifier-name"/>
</include>
</context> <!-- /_property-name-content -->
@@ -342,7 +305,8 @@
{
propertyA: 'a',
propertyB: getB(),
"propertyB": getB(),
1: 'one',
[ computedName() ]: 2 + 3,
method() { ... },
get prop() { return this._prop; },
@@ -351,42 +315,103 @@
}
-->
<!-- ES2018 -->
<context id="_choice-object-literal-spread-syntax" end-parent="true">
<start>\%{js:spread-syntax}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:spread-syntax"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-spread-syntax-content">
<include>
<context ref="js-expr:expression-without-comma"/>
</include>
</context> <!-- /_object-literal-spread-syntax-content -->
</include>
</context> <!-- /_choice-object-literal-spread-syntax -->
<context id="_object-literal-property-value" once-only="true">
<start>:</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-property-value-content">
<include>
<context ref="js-expr:expression-without-comma"/>
</include>
</context> <!-- /_object-literal-property-value-content -->
</include>
</context> <!-- /_object-literal-property-value -->
<context id="_ordered-object-literal-property-value" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_object-literal-property-value"/>
</include>
</context> <!-- /_ordered-object-literal-property-value -->
<context id="_choice-object-literal-keyword-named-property-or-method" end-parent="true">
<start extended="true">
(?: \%{js:get-keyword} | \%{js:set-keyword} )
(?= \%{js:optional-whitespace-or-comments} [:=(] )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:identifier"/>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-keyword-named-property-or-method-content">
<include>
<context ref="js-fn:choice-method-definition"/>
<context ref="_ordered-object-literal-property-value"/>
<context ref="js:ordered-default-value-assignment"/> <!-- for destructuring assignment -->
</include>
</context> <!-- /_object-literal-keyword-named-property-or-method-content -->
</include>
</context> <!-- /_choice-object-literal-keyword-named-property-or-method -->
<context id="_choice-object-literal-property-or-method" end-parent="true">
<start extended="true">
(?= [\['"] ) | # computed property name, string
\%{js:number-start} (?= \.? [0-9] ) | # number
\%{js:identifier-container-start} # identifier
</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-property-or-method-content">
<include>
<context ref="js-fn:ordered-property-accessor-keyword"/>
<context ref="ordered-property-name"/>
<context ref="js-fn:choice-method-definition"/>
<context ref="_ordered-object-literal-property-value"/>
<context ref="js:ordered-default-value-assignment"/> <!-- for destructuring assignment -->
</include>
</context> <!-- /_object-literal-property-or-method-content -->
</include>
</context> <!-- /_choice-object-literal-property-or-method -->
<context id="_object-literal-property-content">
<include>
<context id="_object-literal-property-name" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-property-name-content">
<include>
<context ref="js:ordered-spread-syntax"/> <!-- ES2018 -->
<context ref="js-fn:ordered-method-definition"/> <!-- includes property-name -->
</include>
</context> <!-- /_object-literal-property-name-content -->
</include>
</context> <!-- /_object-literal-property-name -->
<context id="_object-literal-property-value" once-only="true">
<start>:</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_object-literal-property-value-content">
<include>
<context ref="js-expr:expression-without-comma"/>
</include>
</context> <!-- /_object-literal-property-value-content -->
</include>
</context> <!-- /_object-literal-property-value -->
<context ref="_choice-object-literal-spread-syntax"/>
<context ref="_choice-object-literal-keyword-named-property-or-method"/>
<context ref="js-fn:choice-method-keyword-method-definition"/>
<context ref="_choice-object-literal-property-or-method"/>
</include>
</context> <!-- /_object-literal-property-content -->
@@ -441,7 +466,7 @@
<!-- ES2018 -->
<context id="_unicode-property-escapes" style-ref="js:escape">
<match extended="true">
\\ [pP] \{ ( [a-zA-Z_]+ = )? [a-zA-Z0-9_]+ \}
\\ [pP] { (?: [a-zA-Z_]+ = )? [a-zA-Z0-9_]+ }
</match>
</context> <!-- /_unicode-property-escapes -->
@@ -529,7 +554,7 @@
<context id="_template-head" style-ref="js:template-literal" once-only="true">
<start>(?&lt;=`)</start>
<end>(?=`|\$\{)</end>
<end>(?=`|\${)</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<!-- no comments here -->
@@ -541,7 +566,7 @@
<context id="_template-substitution-tails" style-ref="js:template-literal">
<start>(?&lt;=})</start>
<end>(?=`|\$\{)</end>
<end>(?=`|\${)</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<!-- no comments here -->
@@ -550,7 +575,7 @@
</context> <!-- /_template-substitution-tails -->
<context id="_template-placeholders">
<start>\$\{</start>
<start>\${</start>
<end>}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:template-placeholder"/>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-mod" name="JavaScript Modules" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -43,7 +43,7 @@
-->
<context id="_from-module" once-only="true">
<start>\%[from\%]</start>
<start>\%{js:from-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -74,7 +74,7 @@
-->
<context id="_as-namespace" once-only="true">
<start>\%[as\%]</start>
<start>\%{js:as-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -124,7 +124,7 @@
-->
<context id="_name-group-identifier" once-only="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
@@ -136,7 +136,7 @@
<include>
<context id="_name-group-keywords" style-ref="js:keyword">
<keyword>default</keyword>
<match>\%{js:default-keyword}</match>
</context> <!-- /_name-group-keywords -->
<context ref="js:identifier"/>
@@ -147,7 +147,7 @@
</context> <!-- /_name-group-identifier -->
<context id="_name-group-as-identifier" once-only="true">
<start>\%[as\%]</start>
<start>\%{js:as-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -226,7 +226,7 @@
-->
<context id="_choice-export-named" end-parent="true">
<start>(?=\{)</start>
<start>(?={)</start>
<end>\%{js:statement-end}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
@@ -250,7 +250,7 @@
-->
<context id="_choice-export-default" end-parent="true">
<start>\%[default\%]</start>
<start>\%{js:default-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -279,7 +279,7 @@
<!-- <ExportDeclaration> -->
<context id="export-declarations" style-ref="js:export-import-declaration">
<start>\%[export\%]</start>
<start>\%{js:export-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -309,7 +309,7 @@
-->
<context id="_choice-import-named" end-parent="true">
<start>(?=\{)</start>
<start>(?={)</start>
<end>\%{js:statement-end}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
@@ -366,7 +366,7 @@
</context> <!-- /_choice-import-default-only -->
<context id="_choice-import-default" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
@@ -392,10 +392,9 @@
-->
<!-- <ImportDeclaration> -->
<!-- also matches import() and import.meta -->
<context id="import-declarations" style-ref="js:export-import-declaration">
<start extended="true">
\%[ import \%] (?! \%{js:import-function-keyword-suffix} )
</start>
<start>\%{js:import-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -404,6 +403,8 @@
<context id="_import-declaration-content">
<include>
<context ref="js-expr:_choice-import-call-expression"/>
<context ref="js-expr:_choice-import-meta-expression"/>
<context ref="_choice-import-named"/>
<context ref="_choice-all-as-namespace"/>
<context ref="_choice-import-default"/>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-st" name="JavaScript Statements" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -37,14 +37,10 @@
<!-- # Use strict directive -->
<!-- apparently, back references are not supported -->
<!-- apparently, back references are not supported within the same
regex -->
<context id="_use-strict-directives" style-ref="js:directive">
<start extended="true">
(?:
" use [ ] strict " |
' use [ ] strict '
)
</start>
<start>"use strict"|'use strict'</start>
<end>\%{js:statement-end}</end>
</context> <!-- /_use-strict-directives -->
@@ -121,7 +117,7 @@
<!-- <BreakStatement> -->
<context id="_break-statements" style-ref="js:break-statement">
<start>\%[break\%]</start>
<start>\%{js:break-keyword}</start>
<end>\%{js:statement-end-or-end-of-line}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -145,7 +141,7 @@
<!-- <ClassExpression> / <ClassDeclaration> -->
<context id="_class-declarations">
<start>(?=\%{js:class-expression-keyword})</start>
<start>(?=\%{js:class-keyword})</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
@@ -169,7 +165,7 @@
<!-- <ContinueStatement> -->
<context id="_continue-statements" style-ref="js:continue-statement">
<start>\%[continue\%]</start>
<start>\%{js:continue-keyword}</start>
<end>\%{js:statement-end-or-end-of-line}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -193,7 +189,7 @@
<!-- <DebuggerStatement> -->
<context id="_debugger-statements" style-ref="js:debugger-statement">
<start>\%[debugger\%]</start>
<start>\%{js:debugger-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -248,8 +244,10 @@
<context id="_for-statement-modifier-content">
<include>
<!-- await: ES2018 -->
<context id="_choice-for-statement-modifier-keyword" style-ref="js:keyword" end-parent="true">
<keyword>await</keyword> <!-- ES2018 -->
<start>(?=\%{js:await-keyword})</start>
<end>\%{js:await-keyword}</end>
</context> <!-- /_choice-for-statement-modifier-keyword -->
</include>
@@ -322,7 +320,7 @@
</context> <!-- /_for-statement-test -->
<context id="_for-statement-in" once-only="true">
<start>\%[in\%]</start>
<start>\%{js:in-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -339,7 +337,7 @@
</context> <!-- /_for-statement-in -->
<context id="_for-statement-of" once-only="true">
<start>\%[of\%]</start>
<start>\%{js:of-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -383,7 +381,7 @@
<!-- <IterationStatement> (part of) -->
<context id="_for-statements" style-ref="js:for-statement">
<start>\%[for\%]</start>
<start>\%{js:for-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -432,7 +430,7 @@
<!-- <IfStatement> (part of) -->
<context id="_if-statements" style-ref="js:if-statement">
<start>\%[if\%]</start>
<start>\%{js:if-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -450,7 +448,7 @@
<!-- <IfStatement> (part of) -->
<context id="_else-statements" style-ref="js:else-statement">
<start>\%[else\%]</start>
<start>\%{js:else-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -475,6 +473,7 @@
-->
<context id="_label-statements" style-ref="js:label-statement">
<start extended="true">
(?&lt;! \%{js:identifier-char} )
(?=
\%{js:identifier}
\%{js:optional-whitespace-or-comments}
@@ -509,7 +508,7 @@
<!-- <ReturnStatement> -->
<context id="_return-statements" style-ref="js:return-statement">
<start>\%[return\%]</start>
<start>\%{js:return-keyword}</start>
<end>\%{js:statement-end-or-end-of-line}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -536,7 +535,7 @@
-->
<context id="_case-clauses">
<start>\%[case\%]</start>
<start>\%{js:case-keyword}</start>
<end>:</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -553,7 +552,7 @@
</context> <!-- /_case-clauses -->
<context id="_default-clauses">
<start>\%[default\%]</start>
<start>\%{js:default-keyword}</start>
<end>:</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -593,7 +592,7 @@
<!-- <SwitchStatement> -->
<context id="_switch-statements" style-ref="js:switch-statement">
<start>\%[switch\%]</start>
<start>\%{js:switch-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -618,7 +617,7 @@
<!-- <ThrowStatement> -->
<context id="_throw-statements" style-ref="js:throw-statement">
<start>\%[throw\%]</start>
<start>\%{js:throw-keyword}</start>
<end>\%{js:statement-end-or-end-of-line}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -666,7 +665,7 @@
<!-- <TryStatement> -->
<context id="_try-statements" style-ref="js:try-catch-statement">
<start>\%[try\%]</start>
<start>\%{js:try-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -682,33 +681,34 @@
</include>
</context> <!-- /_try-statements -->
<context id="_catch-statement-exception" once-only="true">
<!-- <CatchParameter> -->
<context id="_catch-statement-parameter" once-only="true">
<start>\(</start>
<end>\)</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_catch-statement-exception-content">
<context id="_catch-statement-parameter-content">
<include>
<context ref="js:identifier"/>
<context ref="js:ordered-binding"/>
</include>
</context> <!-- /_catch-statement-exception-content -->
</context> <!-- /_catch-statement-parameter-content -->
</include>
</context> <!-- /_catch-statement-exception -->
</context> <!-- /_catch-statement-parameter -->
<context id="_ordered-catch-statement-exception" once-only="true">
<context id="_ordered-catch-statement-parameter" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_catch-statement-exception"/>
<context ref="_catch-statement-parameter"/>
</include>
</context> <!-- /_ordered-catch-statement-exception -->
</context> <!-- /_ordered-catch-statement-parameter -->
<!-- <Catch> -->
<context id="_catch-statements" style-ref="js:try-catch-statement">
<start>\%[catch\%]</start>
<start>\%{js:catch-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -717,7 +717,7 @@
<context id="_catch-statement-content">
<include>
<context ref="_ordered-catch-statement-exception"/>
<context ref="_ordered-catch-statement-parameter"/>
<context ref="_last-try-body"/>
</include>
</context> <!-- /_catch-statement-content -->
@@ -727,7 +727,7 @@
<!-- <Finally> -->
<context id="_finally-statements" style-ref="js:try-catch-statement">
<start>\%[finally\%]</start>
<start>\%{js:finally-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -752,12 +752,12 @@
-->
<define-regex id="_variable-declaration-keyword" extended="true">
(?: \%[ (?: const | let | var ) \%] )
\%{js:const-keyword} | \%{js:let-keyword} | \%{js:var-keyword}
</define-regex> <!-- /_variable-declaration-keyword -->
<context id="_variable-declaration-item-content">
<include>
<context ref="js:ordered-assignment-target"/>
<context ref="js:ordered-binding"/>
<context ref="js:ordered-default-value-assignment"/>
</include>
</context> <!-- /_variable-declaration-item-content -->
@@ -833,7 +833,7 @@
<!-- <IterationStatement> (part of) -->
<context id="_while-statements" style-ref="js:while-statement">
<start>\%[while\%]</start>
<start>\%{js:while-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -851,7 +851,7 @@
<!-- <IterationStatement> (part of) -->
<context id="_do-statements" style-ref="js:while-statement">
<start>\%[do\%]</start>
<start>\%{js:do-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -872,7 +872,7 @@
<!-- <WithStatement> -->
<context id="_with-statements" style-ref="js:with-statement">
<start>\%[with\%]</start>
<start>\%{js:with-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
-->
<language id="js-val" name="JavaScript Built-in Values" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -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,51 +113,24 @@
</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>
<keyword>WebAssembly</keyword>
</context> <!-- /_objects -->
<!-- globalThis: ES2020 -->
<context id="_object-keywords" style-ref="js:keyword">
<keyword>arguments</keyword>
<keyword>globalThis</keyword> <!-- ES2020 -->
<keyword>super</keyword>
<keyword>this</keyword>
<match extended="true">
\%{js:keyword-start} arguments \%{js:keyword-end} |
\%{js:keyword-start} globalThis \%{js:keyword-end} |
\%{js:super-keyword} |
\%{js:this-keyword}
</match>
</context> <!-- /_object-keywords -->
<context id="_import-function-keyword">
<start extended="true">
\%[ import \%] (?= \%{js:import-function-keyword-suffix} )
</start>
<end>(?=\()</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<!-- no embedded-lang-hooks here -->
<context ref="js:comments"/>
</include>
</context> <!-- /_import-function-keyword -->
<context id="_new-target-object-keyword">
<start extended="true">
\%[ new \%] (?= \%{js:new-target-object-keyword-suffix} )
</start>
<end>\%[target\%]</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context sub-pattern="0" where="end" style-ref="js:keyword"/>
<!-- no embedded-lang-hooks here -->
<context ref="js:comments"/>
<context id="_new-target-object-keyword-content">
<include>
<context ref="js:ordered-keyword-dot"/>
</include>
</context> <!-- /_new-target-object-keyword-content -->
</include>
</context> <!-- /_new-target-object-keyword -->
</include>
</context> <!-- /global-values -->
@@ -162,6 +141,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>
@@ -169,6 +150,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>
@@ -180,10 +163,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>
@@ -218,27 +205,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>
@@ -258,6 +255,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>
@@ -304,28 +303,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>
@@ -334,23 +343,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>
@@ -363,6 +382,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>
@@ -374,6 +395,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>
@@ -412,6 +435,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>
@@ -423,6 +448,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>
@@ -435,11 +462,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>
@@ -470,6 +501,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>
@@ -481,10 +514,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>
@@ -501,6 +538,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>
@@ -512,15 +551,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>
@@ -532,10 +577,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>
@@ -554,6 +603,7 @@
<keyword>padStart</keyword> <!-- ES2017 -->
<keyword>raw</keyword>
<keyword>repeat</keyword>
<keyword>replaceAll</keyword> <!-- ES2021 -->
<keyword>replace</keyword>
<keyword>search</keyword>
<keyword>slice</keyword>
@@ -570,6 +620,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>
@@ -587,6 +639,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 -->
@@ -603,6 +657,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>
@@ -612,6 +668,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>
@@ -639,6 +697,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>
@@ -646,12 +706,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>
@@ -660,32 +724,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>

View File

@@ -8,7 +8,7 @@
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
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,7 +27,7 @@
<language id="js" name="JavaScript" version="2.0" _section="Script">
<metadata>
<property name="mimetypes">application/javascript;application/x-javascript;text/x-javascript;text/javascript;text/x-js</property>
<property name="globs">*.js</property>
<property name="globs">*.js;*.mjs</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
@@ -75,8 +75,8 @@
<style id="identifier" name="Identifier"/>
<style id="rest-syntax" name="Rest syntax"/>
<style id="spread-syntax" name="Spread syntax"/>
<style id="array-destructuring" name="Array destructuring"/>
<style id="object-destructuring" name="Object destructuring"/>
<style id="array-binding-pattern" name="Array binding pattern"/>
<style id="object-binding-pattern" name="Object binding pattern"/>
<!-- Literals -->
<style id="array-literal" name="Array literal"/>
@@ -120,7 +120,7 @@
</styles>
<!-- from identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -134,7 +134,7 @@
Supported level: ES2020
Supported ES2021 proposals:
* (none yet)
* String.prototype.replaceAll
Features from Annex B of the spec are not highlighted to
discourage their use, except:
@@ -191,12 +191,12 @@
<!-- <UnicodeEscapeSequence> -->
<define-regex id="unicode-escape" extended="true">
(?: \\u (?: [0-9a-fA-F]{4} | \{ [0-9a-fA-F]{1,} \} ) )
\\u (?: [0-9a-fA-F]{4} | { [0-9a-fA-F]{1,} } )
</define-regex> <!-- /unicode-escape -->
<!-- <IdentifierStart> -->
<define-regex id="identifier-start" extended="true">
(?: \%{def:unicode-id-start} | [$_] | \%{unicode-escape} )
\%{def:unicode-id-start} | [$_] | \%{unicode-escape}
</define-regex> <!-- /identifier-start -->
<!-- for lookbehinds
@@ -205,19 +205,31 @@
U+200D Zero-width joiner <ZWJ>
-->
<define-regex id="identifier-char" extended="true">
(?: \%{def:unicode-id-continue} | [$\x{200C}\x{200D}] )
\%{def:unicode-id-continue} | [$\x{200C}\x{200D}]
</define-regex> <!-- /identifier-char -->
<!-- <IdentifierPart> -->
<define-regex id="identifier-part" extended="true">
(?: \%{identifier-char} | \%{unicode-escape} )
\%{identifier-char} | \%{unicode-escape}
</define-regex> <!-- /identifier-part -->
<!-- <IdentifierName> -->
<define-regex id="identifier" extended="true">
(?: \%{identifier-start} \%{identifier-part}* )
\%{identifier-start} \%{identifier-part}*
</define-regex> <!-- /identifier-->
<define-regex id="identifier-container-start" extended="true">
(?&lt;! \%{identifier-char} ) (?= \%{identifier-start} )
</define-regex> <!-- /identifier-container-start -->
<define-regex id="keyword-start" extended="true">
(?&lt;! \%{identifier-char} )
</define-regex> <!-- /keyword-start -->
<define-regex id="keyword-end" extended="true">
(?! \%{identifier-char} )
</define-regex> <!-- /keyword-end -->
<!-- <WhiteSpace> -->
<!-- does not include characters from <LineTerminator>,
to only allow space separators when we want match a
@@ -253,11 +265,11 @@
</define-regex> <!-- /before-next-token -->
<define-regex id="statement-end" extended="true">
(?: ; | \%{before-next-token} )
; | \%{before-next-token}
</define-regex> <!-- /statement-end -->
<define-regex id="statement-end-or-end-of-line" extended="true">
(?: \%{statement-end} | $ )
\%{statement-end} | $
</define-regex> <!-- /statement-end-or-end-of-line -->
<!-- wherever this is used, the highlighting will be more brittle,
@@ -268,6 +280,10 @@
<define-regex id="generator-modifier">\*</define-regex>
<define-regex id="rest-syntax">\.\.\.</define-regex>
<define-regex id="spread-syntax">\.\.\.</define-regex>
<!-- "unknown id" errors can occur when using a regex defined in one
component file in another component file
https://gitlab.gnome.org/GNOME/gtksourceview/issues/67
@@ -275,39 +291,235 @@
so we move the definitions of these regexes here
-->
<define-regex id="import-function-keyword-suffix" extended="true">
(?:
\%{optional-whitespace-or-comments}
\(
)
</define-regex> <!-- /import-function-keyword-suffix -->
<define-regex id="number-start" extended="true">
(?&lt;! \%{identifier-char} | \. )
</define-regex> <!-- /number-start -->
<define-regex id="new-target-object-keyword-suffix" extended="true">
(?:
\%{optional-whitespace-or-comments}
\.
\%{optional-whitespace-or-comments}
target \%]
)
</define-regex> <!-- /new-target-object-keyword-suffix -->
<define-regex id="number-end" extended="true">
(?! \%{identifier-part} | \. )
</define-regex> <!-- /number-end -->
<!-- async function (ES2017)
<!-- these regexes are keywords that appear as literals in the
grammar -->
<define-regex id="as-keyword" extended="true">
\%{keyword-start} as \%{keyword-end}
</define-regex> <!-- /as-keyword -->
<define-regex id="async-keyword" extended="true">
\%{keyword-start} async \%{keyword-end}
</define-regex> <!-- /async-keyword -->
<define-regex id="await-keyword" extended="true">
\%{keyword-start} await \%{keyword-end}
</define-regex> <!-- /await-keyword -->
<define-regex id="break-keyword" extended="true">
\%{keyword-start} break \%{keyword-end}
</define-regex> <!-- /break-keyword -->
<define-regex id="case-keyword" extended="true">
\%{keyword-start} case \%{keyword-end}
</define-regex> <!-- /case-keyword -->
<define-regex id="catch-keyword" extended="true">
\%{keyword-start} catch \%{keyword-end}
</define-regex> <!-- /catch-keyword -->
<define-regex id="class-keyword" extended="true">
\%{keyword-start} class \%{keyword-end}
</define-regex> <!-- /class-keyword -->
<define-regex id="const-keyword" extended="true">
\%{keyword-start} const \%{keyword-end}
</define-regex> <!-- /const-keyword -->
<define-regex id="continue-keyword" extended="true">
\%{keyword-start} continue \%{keyword-end}
</define-regex> <!-- /continue-keyword -->
<define-regex id="debugger-keyword" extended="true">
\%{keyword-start} debugger \%{keyword-end}
</define-regex> <!-- /debugger-keyword -->
<define-regex id="default-keyword" extended="true">
\%{keyword-start} default \%{keyword-end}
</define-regex> <!-- /default-keyword -->
<define-regex id="delete-keyword" extended="true">
\%{keyword-start} delete \%{keyword-end}
</define-regex> <!-- /delete-keyword -->
<define-regex id="do-keyword" extended="true">
\%{keyword-start} do \%{keyword-end}
</define-regex> <!-- /do-keyword -->
<define-regex id="else-keyword" extended="true">
\%{keyword-start} else \%{keyword-end}
</define-regex> <!-- /else-keyword -->
<define-regex id="export-keyword" extended="true">
\%{keyword-start} export \%{keyword-end}
</define-regex> <!-- /export-keyword -->
<define-regex id="extends-keyword" extended="true">
\%{keyword-start} extends \%{keyword-end}
</define-regex> <!-- /extends-keyword -->
<define-regex id="false-keyword" extended="true">
\%{keyword-start} false \%{keyword-end}
</define-regex> <!-- /false-keyword -->
<define-regex id="finally-keyword" extended="true">
\%{keyword-start} finally \%{keyword-end}
</define-regex> <!-- /finally-keyword -->
<define-regex id="for-keyword" extended="true">
\%{keyword-start} for \%{keyword-end}
</define-regex> <!-- /for-keyword -->
<define-regex id="from-keyword" extended="true">
\%{keyword-start} from \%{keyword-end}
</define-regex> <!-- /from-keyword -->
<define-regex id="function-keyword" extended="true">
\%{keyword-start} function \%{keyword-end}
</define-regex> <!-- /function-keyword -->
<define-regex id="get-keyword" extended="true">
\%{keyword-start} get \%{keyword-end}
</define-regex> <!-- /get-keyword -->
<define-regex id="if-keyword" extended="true">
\%{keyword-start} if \%{keyword-end}
</define-regex> <!-- /if-keyword -->
<define-regex id="import-keyword" extended="true">
\%{keyword-start} import \%{keyword-end}
</define-regex> <!-- /import-keyword -->
<define-regex id="in-keyword" extended="true">
\%{keyword-start} in \%{keyword-end}
</define-regex> <!-- /in-keyword -->
<define-regex id="instanceof-keyword" extended="true">
\%{keyword-start} instanceof \%{keyword-end}
</define-regex> <!-- /instanceof-keyword -->
<define-regex id="let-keyword" extended="true">
\%{keyword-start} let \%{keyword-end}
</define-regex> <!-- /let-keyword -->
<define-regex id="meta-keyword" extended="true">
\%{keyword-start} meta \%{keyword-end}
</define-regex> <!-- /meta-keyword -->
<define-regex id="new-keyword" extended="true">
\%{keyword-start} new \%{keyword-end}
</define-regex> <!-- /new-keyword -->
<define-regex id="null-keyword" extended="true">
\%{keyword-start} null \%{keyword-end}
</define-regex> <!-- /null-keyword -->
<define-regex id="of-keyword" extended="true">
\%{keyword-start} of \%{keyword-end}
</define-regex> <!-- /of-keyword -->
<define-regex id="return-keyword" extended="true">
\%{keyword-start} return \%{keyword-end}
</define-regex> <!-- /return-keyword -->
<define-regex id="set-keyword" extended="true">
\%{keyword-start} set \%{keyword-end}
</define-regex> <!-- /set-keyword -->
<define-regex id="static-keyword" extended="true">
\%{keyword-start} static \%{keyword-end}
</define-regex> <!-- /static-keyword -->
<define-regex id="super-keyword" extended="true">
\%{keyword-start} super \%{keyword-end}
</define-regex> <!-- /super-keyword -->
<define-regex id="switch-keyword" extended="true">
\%{keyword-start} switch \%{keyword-end}
</define-regex> <!-- /switch-keyword -->
<define-regex id="target-keyword" extended="true">
\%{keyword-start} target \%{keyword-end}
</define-regex> <!-- /target-keyword -->
<define-regex id="this-keyword" extended="true">
\%{keyword-start} this \%{keyword-end}
</define-regex> <!-- /this-keyword -->
<define-regex id="throw-keyword" extended="true">
\%{keyword-start} throw \%{keyword-end}
</define-regex> <!-- /throw-keyword -->
<define-regex id="true-keyword" extended="true">
\%{keyword-start} true \%{keyword-end}
</define-regex> <!-- /true-keyword -->
<define-regex id="try-keyword" extended="true">
\%{keyword-start} try \%{keyword-end}
</define-regex> <!-- /try-keyword -->
<define-regex id="typeof-keyword" extended="true">
\%{keyword-start} typeof \%{keyword-end}
</define-regex> <!-- /typeof-keyword -->
<define-regex id="var-keyword" extended="true">
\%{keyword-start} var \%{keyword-end}
</define-regex> <!-- /var-keyword -->
<define-regex id="void-keyword" extended="true">
\%{keyword-start} void \%{keyword-end}
</define-regex> <!-- /void-keyword -->
<define-regex id="while-keyword" extended="true">
\%{keyword-start} while \%{keyword-end}
</define-regex> <!-- /while-keyword -->
<define-regex id="with-keyword" extended="true">
\%{keyword-start} with \%{keyword-end}
</define-regex> <!-- /with-keyword -->
<define-regex id="yield-keyword" extended="true">
\%{keyword-start} yield \%{keyword-end}
</define-regex> <!-- /yield-keyword -->
<!-- async function: ES2017
no line terminator allowed between "async" and "function" -->
<define-regex id="function-expression-keyword" extended="true">
(?:
(?:
\%[ async \%]
\%{optional-whitespace-or-comments}
)?
\%[ function \%]
)
(?: \%{async-keyword} \%{optional-whitespace-or-comments} )?
\%{function-keyword}
</define-regex> <!-- /function-expression-keyword -->
<define-regex id="class-expression-keyword" extended="true">
(?: \%[ class \%] )
</define-regex> <!-- /class-expression-keyword -->
<!-- async function: ES2017
"async" cannot be followed by line terminator -->
<define-regex id="method-keyword" extended="true">
# get property() / set property()
(?: \%{js:get-keyword} | \%{js:set-keyword} )
(?=
\%{js:optional-whitespace-or-comments}
\%{js:identifier-start}
) |
# async method() / async * generator()
\%{js:async-keyword}
(?=
\%{js:optional-whitespace-or-comments}
(?: \%{js:identifier-start} | \%{js:generator-modifier} )
) |
# * generator()
(?= \%{js:generator-modifier} )
</define-regex> <!-- /method-keyword -->
<!-- ## Embedded lang hooks
a placeholder context where an embedding language (e.g. html)
can <replace>
-->
@@ -323,11 +535,23 @@
</include>
</context> <!-- /_comment-content -->
<context id="_single-line-comment-content">
<include>
<context ref="_comment-content"/>
</include>
</context> <!-- /_single-line-comment-content -->
<context id="_multiline-comment-content">
<include>
<context ref="_comment-content"/>
</include>
</context> <!-- /_multiline-comment-content -->
<!-- line continuations are not allowed inside single-line comments -->
<context id="_single-line-comments" style-ref="comment" end-at-line-end="true" class-disabled="no-spell-check" class="comment">
<start>//</start>
<include>
<context ref="_comment-content"/>
<context ref="_single-line-comment-content"/>
</include>
</context> <!-- /_single-line-comments -->
@@ -335,14 +559,14 @@
<start>/\*</start>
<end>\*/</end>
<include>
<context ref="_comment-content"/>
<context ref="_multiline-comment-content"/>
</include>
</context> <!-- /_multiline-comments -->
<context id="_single-line-comments-no-extend-parent" style-ref="comment" end-at-line-end="true" class-disabled="no-spell-check" class="comment" extend-parent="false">
<start>//</start>
<include>
<context ref="_comment-content"/>
<context ref="_single-line-comment-content"/>
</include>
</context> <!-- /_single-line-comments-no-extend-parent -->
@@ -350,7 +574,7 @@
<start>/\*</start>
<end>\*/</end>
<include>
<context ref="_comment-content"/>
<context ref="_multiline-comment-content"/>
</include>
</context> <!-- /_multiline-comments-no-extend-parent -->
@@ -371,7 +595,7 @@
<context id="_doc-comment-content">
<include>
<context ref="_comment-content"/>
<context ref="_multiline-comment-content"/>
<context ref="jsdoc:jsdoc"/>
</include>
</context> <!-- /_doc-comment-content -->
@@ -419,6 +643,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>
@@ -459,12 +685,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 -->
@@ -472,6 +702,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>
@@ -496,7 +728,7 @@
</context> <!-- /_identifier-name-content -->
<context id="identifier-name" once-only="true">
<start>(?=\%{identifier-start})</start>
<start>\%{identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
@@ -508,7 +740,7 @@
</context> <!-- /choice-identifier-name -->
<context id="choice-identifier-name" end-parent="true">
<start>(?=\%{identifier-start})</start>
<start>\%{identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
@@ -527,7 +759,7 @@
</context> <!-- /_identifier-content -->
<context id="identifier" once-only="true">
<start>(?=\%{identifier-start})</start>
<start>\%{identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
@@ -539,7 +771,7 @@
</context> <!-- /identifier -->
<context id="choice-identifier" end-parent="true">
<start>(?=\%{identifier-start})</start>
<start>\%{identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no embedded-lang-hooks here -->
@@ -587,20 +819,8 @@
<!-- ## Misc syntax -->
<context id="_keyword-dot" style-ref="keyword" once-only="true">
<match>\.</match>
</context> <!-- /_keyword-dot -->
<context id="ordered-keyword-dot" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="_keyword-dot"/>
</include>
</context> <!-- /ordered-keyword-dot -->
<context id="_rest-syntax" style-ref="rest-syntax" once-only="true">
<match>\.\.\.</match>
<match>\%{rest-syntax}</match>
</context> <!-- /_rest-syntax -->
<context id="ordered-rest-syntax" once-only="true">
@@ -612,7 +832,7 @@
</context> <!-- /ordered-rest-syntax -->
<context id="_spread-syntax" style-ref="spread-syntax" once-only="true">
<match>\.\.\.</match>
<match>\%{spread-syntax}</match>
</context> <!-- /_spread-syntax -->
<context id="ordered-spread-syntax" once-only="true">
@@ -636,170 +856,171 @@
</context> <!-- /ordered-generator-modifier -->
<!-- # Assignment target -->
<!-- # Binding
<!-- ## Array destructuring
Patterns for where variable names are bound/created:
* Variable declarations
* Function parameters
[ a, b, ...rest ] = [ 1, 2, 3, 4 ]
[ a = 1, b = 2, c = 3 ] = [ 11, 12 ]
This is not used in assignment expressions; array/object
literals will match for array/object destructuring.
-->
<context id="_array-destructuring-element-content">
<!-- ## Array binding pattern (destructuring)
var [ a, b, ...rest ] = [ 1, 2, 3, 4 ];
function fn([ a = 1, b = 2, c = 3 ]) { ... }
-->
<context id="_array-binding-pattern-element-content">
<include>
<context ref="ordered-rest-syntax"/>
<context ref="ordered-assignment-target"/>
<context ref="ordered-binding"/>
<context ref="ordered-default-value-assignment"/>
</include>
</context> <!-- /_array-destructuring-element-content -->
</context> <!-- /_array-binding-pattern-element-content -->
<!-- <ArrayBindingPattern> -->
<context id="_choice-array-destructuring" style-ref="array-destructuring" end-parent="true">
<context id="_choice-array-binding-pattern" style-ref="array-binding-pattern" end-parent="true">
<start>\[</start>
<end>]</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context id="_array-destructuring-content">
<context id="_array-binding-pattern-content">
<include>
<context id="_array-destructuring-first-element" once-only="true">
<context id="_array-binding-pattern-first-element" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context ref="_array-destructuring-element-content"/>
<context ref="_array-binding-pattern-element-content"/>
</include>
</context> <!-- /_array-destructuring-first-element -->
</context> <!-- /_array-binding-pattern-first-element -->
<context id="_array-destructuring-elements">
<context id="_array-binding-pattern-elements">
<start>,</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context ref="_array-destructuring-element-content"/>
<context ref="_array-binding-pattern-element-content"/>
</include>
</context> <!-- /_array-destructuring-elements -->
</context> <!-- /_array-binding-pattern-elements -->
</include>
</context> <!-- /_array-destructuring-content -->
</context> <!-- /_array-binding-pattern-content -->
</include>
</context> <!-- /_choice-array-destructuring -->
</context> <!-- /_choice-array-binding-pattern -->
<!-- ## Object destructuring
<!-- ## Object binding pattern (destructuring)
{ a, y: b, ...rest } = { a: 1, y: 2, i: 3, y: 4 }
{ a = 1, y: b = 2, c = 3 } = { a: 11, y: 12 }
var { a, y: b, ...rest } = { a: 1, y: 2, i: 3, y: 4 };
function fn({ a = 1, y: b = 2, c = 3 }) { ... }
-->
<context id="_object-destructuring-assignment-target" once-only="true">
<context id="_object-binding-pattern-inner-binding" once-only="true">
<start>:</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context id="_object-destructuring-assignment-target-content">
<context id="_object-binding-pattern-inner-binding-content">
<include>
<context ref="ordered-assignment-target"/>
<context ref="ordered-binding"/>
</include>
</context> <!-- /_object-destructuring-assignment-target-content -->
</context> <!-- /_object-binding-pattern-inner-binding-content -->
</include>
</context> <!-- /_object-destructuring-assignment-target -->
</context> <!-- /_object-binding-pattern-inner-binding -->
<context id="_ordered-object-destructuring-assignment-target" once-only="true">
<context id="_ordered-object-binding-pattern-inner-binding" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="_object-destructuring-assignment-target"/>
<context ref="_object-binding-pattern-inner-binding"/>
</include>
</context> <!-- /_ordered-object-destructuring-assignment-target -->
</context> <!-- /_ordered-object-binding-pattern-inner-binding -->
<context id="_object-destructuring-property-content">
<context id="_object-binding-pattern-property-content">
<include>
<context ref="ordered-rest-syntax"/> <!-- ES2018 -->
<context ref="js-lit:ordered-property-name"/>
<context ref="_ordered-object-destructuring-assignment-target"/>
<context ref="_ordered-object-binding-pattern-inner-binding"/>
<context ref="ordered-default-value-assignment"/>
</include>
</context> <!-- /_object-destructuring-property-content -->
</context> <!-- /_object-binding-pattern-property-content -->
<!-- <ObjectBindingPattern> -->
<context id="_choice-object-destructuring" style-ref="object-destructuring" end-parent="true">
<context id="_choice-object-binding-pattern" style-ref="object-binding-pattern" end-parent="true">
<start>{</start>
<end>}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context id="_object-destructuring-content">
<context id="_object-binding-pattern-content">
<include>
<context id="_object-destructuring-first-property" once-only="true">
<context id="_object-binding-pattern-first-property" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context ref="_object-destructuring-property-content"/>
<context ref="_object-binding-pattern-property-content"/>
</include>
</context> <!-- /_object-destructuring-properties -->
</context> <!-- /_object-binding-pattern-properties -->
<context id="_object-destructuring-properties">
<context id="_object-binding-pattern-properties">
<start>,</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context ref="_object-destructuring-property-content"/>
<context ref="_object-binding-pattern-property-content"/>
</include>
</context> <!-- /_object-destructuring-properties -->
</context> <!-- /_object-binding-pattern-properties -->
</include>
</context> <!-- /_object-destructuring-content -->
</context> <!-- /_object-binding-pattern-content -->
</include>
</context> <!-- /_choice-object-destructuring -->
</context> <!-- /_choice-object-binding-pattern -->
<!-- ## Assignment target
Things that can appear on the left side of an equals sign
(identifier or array/object destructuring assignment), in all
places (function parameters, variable declaration) *except* in
assignment expressions (array/object literals will match for
array/object destructuring)
-->
<!-- ## Binding -->
<!-- <VariableDeclaration> / <LexicalBinding> -->
<context id="_assignment-target" once-only="true">
<context id="_binding" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="comments"/>
<context id="_assignment-target-content">
<context id="_binding-content">
<include>
<context ref="_choice-array-destructuring"/>
<context ref="_choice-object-destructuring"/>
<context ref="_choice-array-binding-pattern"/>
<context ref="_choice-object-binding-pattern"/>
<context ref="choice-identifier"/>
</include>
</context> <!-- /_assignment-target-content -->
</context> <!-- /_binding-content -->
</include>
</context> <!-- /_assignment-target -->
</context> <!-- /_binding -->
<context id="ordered-assignment-target" once-only="true">
<context id="ordered-binding" once-only="true">
<start>\%{before-next-token}</start>
<end>\%{before-next-token}</end>
<include>
<context ref="_assignment-target"/>
<context ref="_binding"/>
</include>
</context> <!-- /ordered-assignment-target -->
</context> <!-- /ordered-binding -->
<!-- Approximate code order for component files:

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -35,7 +35,7 @@
</styles>
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -57,8 +57,8 @@
</context>
<context id="inline-tag" style-ref="inline-tag" end-at-line-end="true">
<start>\{@</start>
<end>\}</end>
<start>{@</start>
<end>}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="escape"/>
@@ -67,8 +67,8 @@
</context>
<context id="type" style-ref="type" end-at-line-end="true">
<start>\{</start>
<end>\}</end>
<start>{</start>
<end>}</end>
<include>
<context ref="embedded-lang-hooks"/>
<context ref="escape"/>
@@ -94,7 +94,7 @@
tutorial |
variation
)
\%]
\%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
@@ -113,7 +113,7 @@
fires |
listens
)
\%]
\%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
@@ -130,7 +130,7 @@
access |
kind
)
\%]
\%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
@@ -168,7 +168,7 @@
typeParam | # tsdoc
this
)
\%]
\%{js:keyword-end}
)
</start>
<end>(?=\S)</end>
@@ -198,7 +198,7 @@
typedef |
var
)
\%]
\%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
@@ -210,7 +210,9 @@
</context>
<context id="borrows-block-tag" end-at-line-end="true">
<start>@borrows\%]</start>
<start extended="true">
@borrows \%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
<context sub-pattern="0" where="start" style-ref="block-tag"/>
@@ -221,7 +223,9 @@
</context>
<context end-parent="true">
<start>\%[as\%]</start>
<start extended="true">
\%{js:keyword-start} as \%{js:keyword-end}
</start>
<end>(?=\S)</end>
<include>
<context ref="argument" style-ref="namepath"/>
@@ -232,7 +236,9 @@
</context>
<context id="note-block-tag" style-ref="block-tag">
<match>@todo\%]</match>
<match extended="true">
@todo \%{js:keyword-end}
</match>
<include>
<context sub-pattern="0" style-ref="note"/>
</include>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -37,7 +37,7 @@
</styles>
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -67,13 +67,17 @@
</include>
</context> <!-- /main-lang -->
<define-regex id="_start-tag-start">(?:&lt;(?!/))</define-regex>
<define-regex id="_start-tag-start">&lt;(?!/)</define-regex>
<!-- # Names -->
<define-regex id="_identifier-char" extended="true">
\%{js:identifier-char} | -
</define-regex> <!-- /_identifier-char -->
<define-regex id="_identifier-part" extended="true">
(?: \%{js:identifier-part} | - )
\%{_identifier-char} | \%{js:unicode-escape}
</define-regex> <!-- /_identifier-part -->
<!-- <JSXIdentifier> -->
@@ -81,32 +85,36 @@
\%{js:identifier-start} \%{_identifier-part}*
</define-regex> <!-- /_identifier -->
<context id="_identifier" once-only="true">
<match>\%{_identifier}</match>
</context> <!-- /_identifier -->
<define-regex id="_identifier-container-start" extended="true">
(?&lt;! \%{_identifier-char} ) (?= \%{js:identifier-start} )
</define-regex> <!-- /_identifier-container-start -->
<context id="_choice-identifier" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{_identifier-container-start}</start>
<end>\%{_identifier}</end>
</context> <!-- /_choice-identifier -->
<!-- <JSXNamespacedName> -->
<define-regex id="_namespaced-name" extended="true">
(?: \%{_identifier} : \%{_identifier} )
\%{_identifier} : \%{_identifier}
</define-regex> <!-- /_namespaced-name -->
<context id="_choice-namespaced-name" end-parent="true">
<start>(?=\%{_namespaced-name})</start>
<start extended="true">
(?&lt;! \%{_identifier-char} ) (?= \%{_namespaced-name} )
</start>
<end>\%{_namespaced-name}</end>
</context> <!-- /_choice-namespaced-name -->
<!-- <JSXMemberExpression> -->
<define-regex id="_member-expression" extended="true">
(?: \%{_identifier} (?: \. \%{_identifier} )+ )
\%{_identifier} (?: \. \%{_identifier} )+
</define-regex> <!-- /_member-expression -->
<context id="_choice-member-expression" end-parent="true">
<start>(?=\%{_member-expression})</start>
<start extended="true">
(?&lt;! \%{_identifier-char} ) (?= \%{_member-expression} )
</start>
<end>\%{_member-expression}</end>
</context> <!-- /_choice-member-expression -->
@@ -115,7 +123,7 @@
<!-- <JSXElementName> -->
<context id="_element-name" style-ref="xml:element-name" once-only="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{_identifier-container-start}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
@@ -165,7 +173,7 @@
<!-- <JSXAttributeName> -->
<context id="_attribute-names" style-ref="xml:attribute-name">
<start>(?=\%{js:identifier-start})</start>
<start>\%{_identifier-container-start}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
@@ -243,38 +251,10 @@
<!-- # Element / fragment -->
<context id="_element-content">
<context id="_start-tag-tail-non-empty-element-content">
<include>
<!-- ## Start tag -->
<!-- <JSXOpeningElement> / <JSXSelfClosingElement> -->
<context id="_start-tag-head" style-ref="xml:tag" once-only="true" class="no-spell-check">
<start>\%{_start-tag-start}</start>
<end>(?=/?&gt;)</end>
<include>
<context sub-pattern="0" where="start" style-ref="xml:element-name"/>
<context ref="js:comments"/>
<context id="_start-tag-head-content">
<include>
<context ref="_ordered-element-name"/>
<context ref="_spread-attributes"/>
<context ref="_attribute-names"/>
<context ref="_attribute-initializers"/>
</include>
</context> <!-- /_start-tag-head-content -->
</include>
</context> <!-- /_start-tag-head -->
<context id="_start-tag-tail-empty-element-end-parent" style-ref="xml:tag" end-parent="true" class="no-spell-check">
<start>(?=/&gt;)</start>
<end>/&gt;</end>
<include>
<context sub-pattern="0" where="end" style-ref="xml:element-name"/>
</include>
</context> <!-- /_start-tag-tail-empty-element-end-parent -->
<!-- ## Start tag tail -->
<context id="_start-tag-tail" style-ref="xml:tag" once-only="true" class="no-spell-check">
<match>&gt;</match>
@@ -308,8 +288,7 @@
<context id="_elements" style-ref="element" class-disabled="no-spell-check">
<start>(?=\%{_start-tag-start})</start>
<include>
<!-- no comments here - comments appear to be parsed as regular
text -->
<!-- no comments here - comments parsed as regular text -->
<context ref="_element-content"/>
</include>
</context> <!-- /_elements -->
@@ -340,6 +319,59 @@
appear to be parsed -->
<context ref="xml:entity"/>
<context ref="xml:character-reference"/>
<!-- ## Invalid characters -->
<!-- the spec does not allow these characters: { < > }
but we will only highlight > and } as errors -->
<context id="_invalid-characters" style-ref="xml:error">
<match>[&gt;}]</match>
</context> <!-- /_invalid-characters -->
</include>
</context> <!-- /_start-tag-tail-non-empty-element-content -->
<context id="_element-content">
<include>
<!-- ## Start tag -->
<!-- <JSXOpeningElement> / <JSXSelfClosingElement> -->
<context id="_start-tag-head" style-ref="xml:tag" once-only="true" class="no-spell-check">
<start>\%{_start-tag-start}</start>
<end>(?=/?&gt;)</end>
<include>
<context sub-pattern="0" where="start" style-ref="xml:element-name"/>
<context ref="js:comments"/>
<context id="_start-tag-head-content">
<include>
<context ref="_ordered-element-name"/>
<context ref="_spread-attributes"/>
<context ref="_attribute-names"/>
<context ref="_attribute-initializers"/>
</include>
</context> <!-- /_start-tag-head-content -->
</include>
</context> <!-- /_start-tag-head -->
<context id="_choice-start-tag-tail-empty-element" style-ref="xml:tag" end-parent="true" class="no-spell-check">
<start>(?=/&gt;)</start>
<end>/&gt;</end>
<include>
<context sub-pattern="0" where="end" style-ref="xml:element-name"/>
</include>
</context> <!-- /_choice-start-tag-tail-empty-element -->
<context id="_choice-start-tag-tail-non-empty-element" end-parent="true">
<start>(?=&gt;)</start>
<include>
<!-- no comments here - comments parsed as regular text -->
<context ref="_start-tag-tail-non-empty-element-content"/>
</include>
</context> <!-- /_choice-start-tag-tail-non-empty-element -->
</include>
</context> <!-- /_element-content -->
@@ -347,8 +379,7 @@
<context id="choice-element" style-ref="element" end-parent="true" class-disabled="no-spell-check">
<start>(?=\%{_start-tag-start})</start>
<include>
<!-- no comments here - comments appear to be parsed as regular
text -->
<!-- no comments here - comments parsed as regular text -->
<context ref="_element-content"/>
</include>
</context> <!-- /choice-element -->

View File

@@ -34,6 +34,9 @@
<style id="inline-math" name="Inline Math Mode" map-to="latex:display-math"/>
<style id="math" name="Math Mode" map-to="latex:display-math"/>
<style id="math-boundary" name="Math Boundary" map-to="latex:display-math"/>
<style id="class-name" name="Document class name" map-to="def:text"/>
<style id="pkg-name" name="Package name" map-to="def:text"/>
<style id="env-name" name="Environment name" map-to="def:text"/>
<style id="include" name="Include" map-to="def:keyword"/>
<style id="common-commands" name="Command" map-to="def:keyword"/>
<style id="command" name="Command" map-to="def:keyword"/>
@@ -355,23 +358,26 @@
<context id="specific-commands">
<include>
<context id="documentclass" class="no-spell-check">
<match>(\\documentclass)(\[.*\])?(\{.*\})?</match>
<match>(\\documentclass)(\[.*\])?(\{(.*)\})?</match>
<include>
<context sub-pattern="1" style-ref="common-commands"/>
<context sub-pattern="4" style-ref="class-name"/>
</include>
</context>
<context id="include" class="no-spell-check">
<match>(\\(input|include|includeonly|usepackage))\b(\[.*\])?(\{.*\})?</match>
<match>(\\(input|include|includeonly|usepackage))\b(\[.*\])?(\{(.*)\})?</match>
<include>
<context sub-pattern="1" style-ref="include"/>
<context sub-pattern="5" style-ref="pkg-name"/>
</include>
</context>
<context id="begin-end-command" class="no-spell-check">
<match>(\\(begin|end))\{.*\}</match>
<match>(\\(begin|end))\{(.*?)\}</match>
<include>
<context sub-pattern="1" style-ref="common-commands"/>
<context sub-pattern="3" style-ref="env-name"/>
</include>
</context>
</include>
@@ -597,7 +603,7 @@
</context>
<context id="math-env" style-ref="math" style-inside="true" class="no-spell-check">
<start>(\\begin)\{(math|displaymath|equation\*?|align\*?|eqnarray\*?)\}</start>
<start>(\\begin)\{(math|displaymath|equation\*?|align\*?|eqnarray\*?|multline\*?|gather\*?)\}</start>
<end>(\\end)\{\%{2@start}\}</end>
<include>
<context sub-pattern="1" where="start" style-ref="common-commands"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2018-2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2018-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -55,14 +55,15 @@
<default-regex-options case-sensitive="false"/>
<keyword-char-class>[a-z0-9_\x{80}-\x{10ffff}\\-]</keyword-char-class>
<!-- from css:keyword-code-point -->
<keyword-char-class>[^\x{0}-\x{2C}\x{2E}\x{2F}\x{3A}-\x{40}\x{5B}\x{5D}\x{5E}\x{60}\x{7B}-\x{7F}]</keyword-char-class>
<definitions>
<!-- global -->
<define-regex id="identifier">[\w-]+</define-regex>
<define-regex id="statement-end" extended="true">;|(?=})</define-regex>
<define-regex id="statement-end">;|(?=})</define-regex>
<context id="embedded-lang-hook"/>
@@ -120,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">
@@ -152,12 +155,10 @@
also not sure what are Less' rules regarding hyphen vs subtraction -->
<context id="arithmetic-operator" style-ref="operator-symbol">
<match extended="true">
(
[+*/] |
(?&lt;! \%{css:single-identifier-char} )
-
(?! \%{css:single-identifier-char} )
)
[+*/] |
(?&lt;! \%{css:keyword-code-point} )
-
(?! \%{css:keyword-code-point} )
</match>
</context>
@@ -165,6 +166,8 @@
<!-- Less data types -->
<context id="boolean" style-ref="boolean">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>true</keyword>
</context>
@@ -279,7 +282,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"/>
@@ -495,17 +500,17 @@
)
)
(
(?:
\+_?: | # property merge
:
(?:
(?! # not the start of a
\%{css:single-identifier-char} | # pseudo-class
[:\\] | # pseudo-element, escape
@{ | # variable interpolation
/\* # comment
) | # or
(?= # ends like a normal declaration
(?! # not the start of a
\%{css:keyword-code-point} | # pseudo-class
[:\\] | # pseudo-element, escape
@{ | # variable interpolation
/\* # comment
) | # or
(?= # ends like a normal declaration
(?:
(?&gt;
(?:
@@ -521,7 +526,7 @@
(?&amp;double_quote_string) |
(?&amp;single_quote_string)
)*
\%{css:declaration-value-end} # with a semicolon or at the end of a block
\%{css:declaration-value-end} # with a semicolon or at the end of a block
)
)
)
@@ -540,6 +545,7 @@
<context ref="css:at-rule"/> <!-- because Less variables look like at-rules -->
<context ref="detached-ruleset-call"/>
<context ref="standalone-plugin-function-call"/>
<context ref="inside-ruleset-extend"/>
<context ref="css:style-block-content" original="true"/>
<context ref="css:selector"/>
<context ref="css:style-block"/>
@@ -587,7 +593,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"/>
@@ -602,7 +610,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"/>
@@ -616,7 +626,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"/>
@@ -653,6 +665,8 @@
-->
<context id="less-at-import-options-keyword" style-ref="css:keyword">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>css</keyword>
<keyword>inline</keyword>
<keyword>less</keyword>
@@ -676,7 +690,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"/>
@@ -744,13 +760,15 @@
<!-- guards -->
<context id="guard-logical-operator" style-ref="guard-operator">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>and</keyword>
<keyword>not</keyword>
<keyword>or</keyword>
</context>
<context id="guard-comparison-operator" style-ref="operator-symbol">
<match>(&gt;=?|=&lt;?|&lt;)</match>
<match>&gt;=?|=&lt;?|&lt;</match>
</context>
<context id="guard-test">
@@ -767,7 +785,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"/>
@@ -782,6 +802,9 @@
<!-- Less selectors -->
<!-- Less does not appear to allow comments between the colon(s) and
pseudo-element/class name -->
<context id="parent-combinator">
<match>(&amp;)(\%{css:identifier-chars}?)</match>
<include>
@@ -795,11 +818,15 @@
</context>
<context id="extend-pseudo-class-keyword" once-only="true" style-ref="css:keyword">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>all</keyword>
</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"/>
@@ -811,6 +838,17 @@
</include>
</context>
<context id="inside-ruleset-extend">
<start>(?=&amp;:extend\()</start>
<end>\%{statement-end}</end>
<include>
<context sub-pattern="0" where="end" style-ref="css:delimiter"/>
<context ref="css:embedded-lang-hook"/>
<context ref="css:comment"/>
<context ref="css:selector"/>
</include>
</context>
<!-- selectors -->

View File

@@ -79,6 +79,7 @@
<keyword>add_project_arguments</keyword>
<keyword>add_project_link_arguments</keyword>
<keyword>add_test_setup</keyword>
<keyword>alias_target</keyword>
<keyword>assert</keyword>
<keyword>benchmark</keyword>
<keyword>both_libraries</keyword>
@@ -104,12 +105,14 @@
<keyword>install_headers</keyword>
<keyword>install_man</keyword>
<keyword>install_subdir</keyword>
<keyword>is_disabler</keyword>
<keyword>is_variable</keyword>
<keyword>jar</keyword>
<keyword>join_paths</keyword>
<keyword>library</keyword>
<keyword>message</keyword>
<keyword>warning</keyword>
<keyword>summary</keyword>
<keyword>project</keyword>
<keyword>run_command</keyword>
<keyword>run_target</keyword>
@@ -117,8 +120,8 @@
<keyword>shared_library</keyword>
<keyword>shared_module</keyword>
<keyword>static_library</keyword>
<keyword>subdir_done</keyword>
<keyword>subdir</keyword>
<keyword>subdir_done</keyword>
<keyword>subproject</keyword>
<keyword>test</keyword>
<keyword>vcs_tag</keyword>

View File

@@ -7,7 +7,7 @@
Author: Patryk Zawadzki <patrys@pld-linux.org>
Copyright (C) 2007 Yevgen Muntyan <muntyan@math.tamu.edu>
Copyright (C) 2010 Patryk Zawadzki <patrys@pld-linux.org>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -37,7 +37,7 @@
</styles>
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -84,7 +84,7 @@
undef |
warning
)
\%]
\%{js:keyword-end}
</start>
<include>
<context ref="def:line-continue"/>
@@ -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 -->
@@ -143,7 +151,9 @@
<!-- # @class statement -->
<context id="at-class-statements">
<start>@class\%]</start>
<start extended="true">
@class \%{js:keyword-end}
</start>
<end>\%{js:identifier}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -157,7 +167,9 @@
<!-- # @global statement -->
<context id="at-global-statements">
<start>@global\%]</start>
<start extended="true">
@global \%{js:keyword-end}
</start>
<end>\%{js:identifier}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -183,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>
@@ -198,7 +212,9 @@
</context> <!-- /_at-implementation-variable-declaration-accessor-modifiers-end-parent -->
<context id="_at-implementation-variable-declaration-accessors">
<start>@accessors\%]</start>
<start extended="true">
@accessors \%{js:keyword-end}
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -264,8 +280,12 @@
<!-- ## @implementation declaration -->
<context id="at-implementation-declarations">
<start>@implementation\%]</start>
<end>@end\%]</end>
<start extended="true">
@implementation \%{js:keyword-end}
</start>
<end extended="true">
@end \%{js:keyword-end}
</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context sub-pattern="0" where="end" style-ref="js:keyword"/>
@@ -286,7 +306,9 @@
<!-- # @import statement -->
<context id="at-import-statements" style-ref="js:directive">
<start>@import\%]</start>
<start extended="true">
@import \%{js:keyword-end}
</start>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
@@ -310,8 +332,12 @@
<!-- # @protocol declaration -->
<context id="at-protocol-declarations">
<start>@protocol\%]</start>
<end>@end\%]</end>
<start extended="true">
@protocol \%{js:keyword-end}
</start>
<end extended="true">
@end \%{js:keyword-end}
</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context sub-pattern="0" where="end" style-ref="js:keyword"/>
@@ -323,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 -->
@@ -343,7 +370,9 @@
<!-- # @typedef statements -->
<context id="at-typedef-statements">
<start>@typedef\%]</start>
<start extended="true">
@typedef \%{js:keyword-end}
</start>
<end>\%{js:identifier}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -400,7 +429,7 @@
<!-- ## Literals -->
<define-regex id="_at-function-keyword" extended="true">
(?: @ (?: deref | ref ) \%] )
@ (?: deref | ref ) \%{js:keyword-end}
</define-regex> <!-- /_at-function-keyword -->
<context id="_choice-at-function-keyword" style-ref="js:keyword" end-parent="true">
@@ -409,7 +438,9 @@
</context> <!-- /_choice-at-function-keyword -->
<context id="_choice-at-selector-literal" end-parent="true">
<start>@selector\%]</start>
<start extended="true">
@selector \%{js:keyword-end}
</start>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:embedded-lang-hooks"/>
@@ -460,7 +491,7 @@
<context ref="js-lit:_array-literal-content" original="true"/>
<context ref="_message-parameter-data"/>
</include>
</context>
</context> <!-- /_array-literal-content -->
<replace id="js-lit:_array-literal-content" ref="_array-literal-content"/>
@@ -482,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>
</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>
</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>
@@ -503,9 +540,11 @@
<keyword>PI_2</keyword>
<keyword>SQRT1_2</keyword>
<keyword>SQRT2</keyword>
</context>
</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>
@@ -524,13 +563,15 @@
<keyword>SIN</keyword>
<keyword>SQRT</keyword>
<keyword>TAN</keyword>
</context>
</context> <!-- /_math-functions -->
<!-- "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>
</context> <!-- /_object-keywords -->
<context ref="js-val:global-values" original="true"/>
</include>

View File

@@ -267,6 +267,10 @@
<keyword>print_r</keyword>
<keyword>serialize</keyword>
<keyword>settype</keyword>
<keyword>str_contains</keyword>
<keyword>str_replace</keyword>
<keyword>strip_tags</keyword>
<keyword>strpos</keyword>
<keyword>strval</keyword>
<keyword>unserialize</keyword>
<keyword>var_dump</keyword>

View File

@@ -51,10 +51,10 @@
<definitions>
<!-- https://docs.python.org/3/reference/lexical_analysis.html#identifiers
Underscore ('LOW LINE' U+005F) is a member of \p{Pc}, and so included in def:unicode-id-continue
Underscore (U+005F LOW LINE) is a member of \p{Pc}, and so included in def:unicode-xid-continue
-->
<define-regex id="identifier" extended="true">
(?&gt; (?: _ | \%{def:unicode-id-start} ) \%{def:unicode-id-continue}* )
(?&gt; (?: _ | \%{def:unicode-xid-start} ) \%{def:unicode-xid-continue}* )
</define-regex>
<define-regex id="number">[1-9][0-9]*</define-regex>

View File

@@ -602,7 +602,7 @@
</context>
<context style-ref="string" style-inside="true">
<start>[%][QWx]?([^[:alnum:]{&lt;[(])</start>
<start>[%][QWx]?([^[:alnum:]{}&lt;&gt;[]()])</start>
<end>\%{1@start}</end>
<include>
<context where="start" sub-pattern="0" style-ref="literal"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2018-2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2018-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -58,7 +58,8 @@
<default-regex-options case-sensitive="false"/>
<keyword-char-class>[a-z0-9_\x{80}-\x{10ffff}\\-]</keyword-char-class>
<!-- from css:keyword-code-point -->
<keyword-char-class>[^\x{0}-\x{2C}\x{2E}\x{2F}\x{3A}-\x{40}\x{5B}\x{5D}\x{5E}\x{60}\x{7B}-\x{7F}]</keyword-char-class>
<definitions>
@@ -133,12 +134,10 @@
a division operation -->
<context id="arithmetic-operator" style-ref="operator-symbol">
<match extended="true">
(
[+*%] |
(?&lt;! \%{css:single-identifier-char} )
-
(?! \%{css:single-identifier-char} )
)
[+*%] |
(?&lt;! \%{css:keyword-code-point} )
-
(?! \%{css:keyword-code-point} )
</match>
</context>
@@ -147,10 +146,12 @@
</context>
<context id="comparison-operator" style-ref="operator-symbol">
<match>(&lt;=?|&gt;=?|[=!]=)</match>
<match>&lt;=?|&gt;=?|[=!]=</match>
</context>
<context id="logical-operator" style-ref="logical-operator">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>and</keyword>
<keyword>not</keyword>
<keyword>or</keyword>
@@ -160,11 +161,15 @@
<!-- Sass data types -->
<context id="boolean" style-ref="boolean">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>false</keyword>
<keyword>true</keyword>
</context>
<context id="null" style-ref="null">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>null</keyword>
</context>
@@ -246,7 +251,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"/>
@@ -344,11 +351,15 @@
<!-- Sass modifiers -->
<context id="variable-assignment-modifiers" style-ref="css:modifier">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>default</keyword>
<keyword>global</keyword>
</context>
<context id="at-extend-modifiers" style-ref="css:modifier">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>optional</keyword>
</context>
@@ -522,13 +533,13 @@
:
(?:
(?! # not the start of a
\%{css:single-identifier-char} | # pseudo-class
[:\\] | # pseudo-element, escape
\#{ | # interpolation
/\* # comment
) | # or
(?= # ends like a normal declaration
(?! # not the start of a
\%{css:keyword-code-point} | # pseudo-class
[:\\] | # pseudo-element, escape
\#{ | # interpolation
/\* # comment
) | # or
(?= # ends like a normal declaration
(?&gt;
(?:
(?&gt;
@@ -549,7 +560,7 @@
(?&amp;single_quote_string)
)*
)
\%{css:declaration-value-end} # with a semicolon or at the end of a block
\%{css:declaration-value-end} # with a semicolon or at the end of a block
)
)
</start>
@@ -614,7 +625,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"/>
@@ -630,11 +643,15 @@
-->
<context id="at-at-root-query-type" style-ref="css:property-name">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>without</keyword>
<keyword>with</keyword>
</context>
<context id="at-at-root-query-directive" style-ref="css:keyword">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>all</keyword>
<keyword>media</keyword>
<keyword>rule</keyword>
@@ -670,7 +687,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"/>
@@ -688,7 +707,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"/>
@@ -705,7 +726,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"/>
@@ -716,7 +739,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"/>
@@ -730,13 +755,17 @@
-->
<context id="at-for-keyword" style-ref="css:at-rule-operator">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>from</keyword>
<keyword>through</keyword>
<keyword>to</keyword>
</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"/>
@@ -753,11 +782,15 @@
-->
<context id="at-each-keyword" style-ref="css:at-rule-operator">
<prefix>\%{css:keyword-start}</prefix>
<suffix>\%{css:keyword-end}</suffix>
<keyword>in</keyword>
</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"/>
@@ -775,7 +808,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"/>
@@ -802,7 +837,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"/>
@@ -818,7 +855,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"/>
@@ -835,7 +874,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"/>
@@ -861,7 +902,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"/>
@@ -879,7 +922,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"/>
@@ -954,8 +999,8 @@
<context id="parent-combinator">
<match>(&amp;)(\%{css:identifier-chars}?)</match>
<include>
<context sub-pattern="1" style-ref="css:combinator"/>
<context sub-pattern="2" style-ref="selector-fragment"/>
<context sub-pattern="1" style-ref="css:combinator"/>
<context sub-pattern="2" style-ref="selector-fragment"/>
</include>
</context>

View File

@@ -95,7 +95,7 @@
</include>
</context>
<context id="command-substitution" style-ref="subshell">
<context id="command-substitution" style-ref="subshell" class="no-spell-check">
<start>\$\((?!\()</start>
<end>\)</end>
<include>
@@ -202,7 +202,7 @@
</include>
</context>
<context id="arithmetic-expansion">
<context id="arithmetic-expansion" class="no-spell-check">
<start>\$\({2}(?!\()</start>
<end>\){2}</end>
<include>
@@ -228,7 +228,7 @@
<!-- Treated separately, not including itself nor command-like contexts
(see https://gitlab.gnome.org/GNOME/gtksourceview/issues/94) -->
<context id="backtick-subshell" style-ref="subshell">
<context id="backtick-subshell" style-ref="subshell" class="no-spell-check">
<start>`</start>
<end>`</end>
<include>
@@ -426,33 +426,32 @@
</include>
</context>
<context id="short-parameter-expansion" style-ref="variable">
<context id="short-parameter-expansion" style-ref="variable" class="no-spell-check">
<match>\$(\%{special-parameter}|\%{identifier})</match>
</context>
<context id="parameter-expansion" style-ref="def:statement" style-inside="true">
<context id="parameter-expansion" style-ref="def:statement" style-inside="true" class="no-spell-check">
<start>\$\{(?=[!#]?\%{identifier}|\%{special-parameter})</start>
<end>\}</end>
<include>
<context sub-pattern="0" where="start" style-ref="variable"/>
<context sub-pattern="0" where="end" style-ref="variable"/>
<!-- The order of the two following contexts matters -->
<context id="array-variable" once-only="true">
<start>([!#])?(\%{identifier})(\[)</start>
<end>\]</end>
<context id="parameter" once-only="true">
<start>(?&lt;=\$\{)([!#]?)(\%{identifier}|\%{special-parameter})</start>
<end>\%{def:always-match}</end>
<include>
<context sub-pattern="1" where="start" style-ref="keyword"/>
<context sub-pattern="2" where="start" style-ref="variable"/>
<context sub-pattern="3" where="start" style-ref="keyword"/>
<context sub-pattern="0" where="end" style-ref="keyword"/>
<context ref="expansion-nesting"/>
<context ref="expansion-precedence"/>
</include>
</context>
<context id="simple-variable" once-only="true" style-ref="variable">
<match>([!#])?\%{identifier}|\%{special-parameter}</match>
<include>
<context sub-pattern="1" style-ref="keyword"/>
<context id="array-part" once-only="true">
<start>\[</start>
<end>\]</end>
<include>
<context sub-pattern="0" where="start" style-ref="keyword"/>
<context sub-pattern="0" where="end" style-ref="keyword"/>
<context ref="expansion-nesting"/>
<context ref="expansion-precedence"/>
</include>
</context>
</include>
</context>
<!-- Must be included first, to ensure unescaped boundaries -->
@@ -574,7 +573,7 @@
</include>
</context>
<context id="history-expansion-command">
<context id="history-expansion-command" class="no-spell-check">
<start extended="true">
# Event Designator
((?&lt;!\\)!) (?: (!|\#|-?[1-9][0-9]*) | (\?)[^?]+(\?|$)

View File

@@ -57,6 +57,26 @@
<keyword>BFILE</keyword>
<keyword>BINARY_(FLOAT|DOUBLE)</keyword>
</context>
<context id="psql-datatypes" style-ref="type">
<keyword>BOOL</keyword>
<keyword>BYTEA</keyword>
<keyword>CITEXT</keyword>
<keyword>FLOAT8</keyword>
<keyword>FLOAT4</keyword>
<keyword>INT</keyword>
<keyword>INT2</keyword>
<keyword>INT4</keyword>
<keyword>INT8</keyword>
<keyword>SERIAL2</keyword>
<keyword>SERIAL4</keyword>
<keyword>SERIAL8</keyword>
<keyword>TEXT</keyword>
<keyword>TIMESTAMPTZ</keyword>
<keyword>TIMETZ</keyword>
<keyword>UUID</keyword>
<keyword>VARBIT</keyword>
</context>
<context id="ansi-datatypes" style-ref="type">
<!-- FIXME no \n in patterns! -->
@@ -97,11 +117,12 @@
</context>
<context id="integer-literals" style-ref="decimal">
<match>\b[0-9]+\b</match>
<match>\b[0-9]+(?![Ee][\+\-]?[0-9]*)\b</match>
</context>
<context id="number-literals" style-ref="floating-point">
<match>(\b[0-9]+(\.[0-9]+)?|\.[0-9]+)([Ee][\+-]?[0-9]+)?\b</match>
<!--match>(\b[0-9]+(\.[0-9]+)?|\.[0-9]+)([Ee][\+-]?[0-9]+)?\b</match-->
<match>(?&lt;![\w\.])(([0-9]+\.[0-9]*|\.[0-9]+)([Ee][\+\-]?[0-9]*)?|([0-9]+[Ee][\+\-]?[0-9]*))(?![\w\.])</match>
</context>
<context id="size-clause" style-ref="decimal">
@@ -356,8 +377,11 @@
<keyword>ASC</keyword>
<keyword>BETWEEN</keyword>
<keyword>BY</keyword>
<keyword>CASCADE</keyword>
<keyword>CASCADED</keyword>
<keyword>CASE</keyword>
<keyword>CHECK</keyword>
<keyword>CONSTRAINT</keyword>
<keyword>CREATE</keyword>
<keyword>CROSS</keyword>
<keyword>CURRENT</keyword>
@@ -370,6 +394,7 @@
<keyword>END</keyword>
<keyword>FLOAT</keyword>
<keyword>FOR</keyword>
<keyword>FOREIGN[ \t]KEY</keyword>
<keyword>FROM</keyword>
<keyword>FULL</keyword>
<keyword>GRANT</keyword>
@@ -387,17 +412,23 @@
<keyword>LEFT</keyword>
<keyword>LEVEL</keyword>
<keyword>LIKE</keyword>
<keyword>LIMIT</keyword>
<keyword>LOOP</keyword>
<keyword>NATURAL</keyword>
<keyword>NOT</keyword>
<keyword>OF</keyword>
<keyword>OFFSET</keyword>
<keyword>ON</keyword>
<keyword>OPTION</keyword>
<keyword>ORDER</keyword>
<keyword>OR</keyword>
<keyword>OUTER</keyword>
<keyword>PRIMARY[ \t]KEY</keyword>
<keyword>PRIOR</keyword>
<keyword>PRIVILEGES</keyword>
<keyword>PUBLIC</keyword>
<keyword>REFERENCES</keyword>
<keyword>REVERSE</keyword>
<keyword>REVOKE</keyword>
<keyword>RIGHT</keyword>
<keyword>ROWS</keyword>
@@ -463,6 +494,29 @@
<keyword>WHERE</keyword>
</context>
<context id="psql-reserved-words" style-ref="keyword">
<keyword>BEGIN</keyword>
<keyword>DOMAIN</keyword>
<keyword>FUNCTION</keyword>
<keyword>GENERATED</keyword>
<keyword>IDENTITY</keyword>
<keyword>LANGUAGE</keyword>
<keyword>RETURNING</keyword>
<keyword>RETURNS</keyword>
</context>
<context id="plpgsql-reserved-words" style-ref="keyword">
<keyword>ARRAY</keyword>
<keyword>DECLARE</keyword>
<keyword>ERRCODE</keyword>
<keyword>EXCEPTION</keyword>
<keyword>HINT</keyword>
<keyword>IF</keyword>
<keyword>NOTICE</keyword>
<keyword>RAISE</keyword>
<keyword>RETURN</keyword>
</context>
<context id="sql-statements" style-ref="keyword">
<prefix>^[ \t]*</prefix>
<keyword>ALTER[ \t]+(CLUSTER|DATABASE|DIMENSION|DISKGROUP|FUNCTION|INDEX(TYPE)?|JAVA|MATERIALIZED[ \t]+VIEW([ \t]+LOG)?|OPERATOR|OUTLINE|PACKAGE|PROCEDURE|PROFILE|RESOURCE[ \t]+COST|ROLE|ROLLBACK[ \t]+SEGMENT|SEQUENCE|SESSION|SYSTEM|TABLE(SPACE)?|TRIGGER|TYPE|USER|VIEW)</keyword>
@@ -470,7 +524,7 @@
<keyword>(DIS)?ASSOCIATE[ \t]+STATISTICS</keyword>
<keyword>CALL</keyword>
<keyword>COMMIT([ \t]+WORK)?</keyword>
<keyword>CREATE[ \t]+(CLUSTER|CONTEXT|CONTROLFILE|DATABASE([ \t]+LINK)?|DIMENSION|DIRECTORY|DISKGROUP|FUNCTION|INDEX(TYPE)?|JAVA|LIBRARY|MATERIALIZED[ \t]+VIEW([ \t]+LOG)?|OPERATOR|OUTLINE|PACKAGE([ \t]+BODY)?|S?PFILE|PROCEDURE|PROFILE|RESTORE[ \t]+POINT|ROLE|ROLLBACK[ \t]+SEGMENT|SCHEMA|SEQUENCE|SYNONYM|TABLE(SPACE)?|TRIGGER|TYPE([ \t]+BODY)?|USER|VIEW)</keyword>
<keyword>CREATE[ \t]+(CLUSTER|CONTEXT|CONTROLFILE|DATABASE([ \t]+LINK)?|DIMENSION|DIRECTORY|DISKGROUP|DOMAIN|(OR[ \t]+REPLACE[ \t]+)?FUNCTION|INDEX(TYPE)?|JAVA|LIBRARY|MATERIALIZED[ \t]+VIEW([ \t]+LOG)?|OPERATOR|OUTLINE|PACKAGE([ \t]+BODY)?|S?PFILE|PROCEDURE|PROFILE|RESTORE[ \t]+POINT|ROLE|ROLLBACK[ \t]+SEGMENT|SCHEMA|SEQUENCE|SYNONYM|TABLE(SPACE)?|TRIGGER|TYPE([ \t]+BODY)?|USER|VIEW)</keyword>
<keyword>DROP[ \t]+(CLUSTER|CONTEXT|DATABASE([ \t]+LINK)?|DIMENSION|DIRECTORY|DISKGROUP|FUNCTION|INDEX(TYPE)?|JAVA|LIBRARY|MATERIALIZED[ \t]+VIEW([ \t]+LOG)?|OPERATOR|OUTLINE|PACKAGE|PROCEDURE|PROFILE|RESTORE[ \t]+POINT|ROLE|ROLLBACK[ \t]+SEGMENT|SEQUENCE|SYNONYM|TABLE(SPACE)?|TRIGGER|TYPE([ \t]+BODY)?|USER|VIEW)</keyword>
<keyword>EXPLAIN[ \t]+PLAN</keyword>
<keyword>FLASHBACK[ \t]+(DATABASE|TABLE)</keyword>
@@ -574,15 +628,17 @@
<context ref="ansi-datatypes"/>
<context ref="sql-ds-and-db2-datatypes"/>
<context ref="oracle-supplied-types"/>
<context ref="psql-datatypes"/>
<context ref="text-literals"/>
<context ref="integer-literals"/>
<context ref="number-literals"/>
<context ref="integer-literals"/>
<context ref="size-clause"/>
<context ref="unlimited"/>
<context ref="null"/>
<context ref="block-comment"/>
<context ref="line-comment"/>
<context ref="numeric-functions"/>
<context ref="sql-statements"/>
<context ref="character-functions-returning-character-values"/>
<context ref="nls-character-functions"/>
<context ref="character-functions-returning-number-values"/>
@@ -603,7 +659,8 @@
<context ref="model-functions"/>
<context ref="ansi-reserved-words"/>
<context ref="oracle-reserved-words"/>
<context ref="sql-statements"/>
<context ref="psql-reserved-words"/>
<context ref="plpgsql-reserved-words"/>
<context ref="operators"/>
<context ref="conditions"/>
<context ref="sql-plus-at-sign"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-js-expr" name="TypeScript JavaScript Expression Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -97,7 +97,7 @@
-->
<context id="_non-null-assertion-operators" style-ref="typescript:non-null-assertion-operator">
<match>!</match>
<match>!(?!=)</match>
</context> <!-- /_non-null-assertion-operators -->
@@ -140,6 +140,22 @@
<!-- # Post-primary expression -->
<!-- replaces js-expr:_dot-property-accessor-content -->
<context id="dot-property-accessor-content">
<include>
<context ref="typescript:choice-private-identifier"/>
<context ref="js-expr:_dot-property-accessor-content" original="true"/>
</include>
</context> <!-- /dot-property-accessor-content -->
<!-- replaces js-expr:_optional-chain-content -->
<context id="optional-chain-content">
<include>
<context ref="typescript:choice-private-identifier"/>
<context ref="js-expr:_optional-chain-content" original="true"/>
</include>
</context> <!-- /optional-chain-content -->
<!-- replaces js-expr:_post-primary-expression -->
<context id="post-primary-expression">
<include>
@@ -167,7 +183,7 @@
-->
<context id="_as-operators">
<start>\%[as\%]</start>
<start>\%{js:as-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-js-fn" name="TypeScript JavaScript Function and Class Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -34,9 +34,11 @@
<!-- # Accessibility modifier -->
<context id="_accessibility-modifier" style-ref="js:keyword" once-only="true">
<keyword>private</keyword>
<keyword>protected</keyword>
<keyword>public</keyword>
<match extended="true">
\%{typescript:private-keyword} |
\%{typescript:protected-keyword} |
\%{typescript:public-keyword}
</match>
</context> <!-- /_accessibility-modifier -->
<context id="_ordered-accessibility-modifier" once-only="true">
@@ -48,19 +50,29 @@
</context> <!-- /_ordered-accessibility-modifier -->
<!-- # Read-only property modifier -->
<context id="_read-only-property-modifier" style-ref="js:keyword" once-only="true">
<match>\%{typescript:readonly-keyword}</match>
</context> <!-- /_read-only-property-modifier -->
<context id="_ordered-read-only-property-modifier" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_read-only-property-modifier"/>
</include>
</context> <!-- /_ordered-read-only-property-modifier -->
<!-- # Function expression -->
<!-- <CallSignature> / <ParameterList> -->
<!-- replaces js-fn:_function-parameters-content -->
<context id="function-parameters-content">
<include>
<!-- decorators are valid for class declaration methods only -->
<context ref="typescript:ordered-decorators"/>
<!-- accessibility modifiers are valid for class
expression/declaration constructors only -->
<context ref="_ordered-accessibility-modifier"/>
<context ref="js:ordered-rest-syntax"/>
<context ref="js:ordered-assignment-target"/>
<context ref="js:ordered-binding"/>
<context ref="typescript:ordered-optional-modifier"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
@@ -72,20 +84,12 @@
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context id="_function-first-parameter-content">
<include>
<!-- decorators are valid for class declaration methods only -->
<context ref="typescript:ordered-decorators"/>
<!-- accessibility modifiers are valid for class
expression/declaration constructors only -->
<context ref="_ordered-accessibility-modifier"/>
<context ref="js:ordered-rest-syntax"/>
<!-- this parameters are valid for class
expression/declaration methods only -->
<context ref="typescript:ordered-this-parameter-or-assignment-target"/>
<context ref="typescript:ordered-this-parameter-or-binding"/>
<context ref="typescript:ordered-optional-modifier"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
@@ -115,63 +119,32 @@
<!-- # Method definition -->
<!-- ensure type annotation for functions:
method(): 'type' { ... }
doesn't conflict with object literal property value:
property: 'value'
-->
<context id="_function-parameters-list-and-type-annotation" once-only="true">
<start>(?=\()</start>
<!-- replaces js-fn:choice-method-definition -->
<context id="choice-method-definition" style-ref="js:function-expression" end-parent="true">
<start>(?=[&lt;(])</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_function-parameters-list-and-type-annotation-content">
<context id="_method-definition-content">
<include>
<context ref="js-fn:_ordered-function-parameters-list" style-ref="js:function-expression"/>
<context ref="typescript-type-gen:ordered-type-parameters-list"/>
<context ref="js-fn:_ordered-function-parameters-list"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js-fn:_last-function-body"/>
</include>
</context> <!-- /_function-parameters-list-and-type-annotation-content -->
</context> <!-- /_method-definition-content -->
</include>
</context> <!-- /_function-parameters-list-and-type-annotation -->
<context id="_ordered-function-parameters-list-and-type-annotation" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_function-parameters-list-and-type-annotation"/>
</include>
</context> <!-- /_ordered-function-parameters-list-and-type-annotation -->
<!-- replaces js-fn:_method-definition-content -->
<context id="method-definition-content">
<include>
<context ref="js-fn:_ordered-method-definition-modifier"/>
<context ref="js:ordered-generator-modifier"/>
<context ref="js-lit:ordered-property-name"/>
<!-- technically, only class members can be marked as optional,
not object members -->
<context ref="typescript:ordered-optional-modifier"/>
<!-- technically, only class properties can be marked as
definitely assigned, not object members -->
<!-- also, optional modifier and definitely assignment
assertion cannot both be specified -->
<context ref="typescript:ordered-definite-assignment-assertion"/>
<context ref="typescript-type-gen:ordered-type-parameters-list"/>
<context ref="_ordered-function-parameters-list-and-type-annotation"/>
<context ref="js-fn:_last-function-body" style-ref="js:function-expression"/>
</include>
</context> <!-- /method-definition-content -->
</context> <!-- /choice-method-definition -->
<!-- # Class expression -->
<!-- ## Class expression keyword -->
<context id="_class-expression-abstract-keyword" style-ref="js:keyword">
<keyword>abstract</keyword>
<context id="_class-expression-abstract-keyword" style-ref="js:keyword" once-only="true">
<match>\%{typescript:abstract-keyword}</match>
</context> <!-- /_class-expression-abstract-keyword -->
<context id="_ordered-class-expression-abstract-keyword" once-only="true">
@@ -182,8 +155,8 @@
</include>
</context> <!-- /_ordered-class-expression-abstract-keyword -->
<context id="_class-expression-class-keyword" style-ref="js:keyword">
<keyword>class</keyword>
<context id="_class-expression-class-keyword" style-ref="js:keyword" once-only="true">
<match>\%{js:class-keyword}</match>
</context> <!-- /_class-expression-class-keyword -->
<context id="_ordered-class-expression-class-keyword" once-only="true">
@@ -201,7 +174,7 @@
<include>
<context id="_choice-class-optional-name-ignore-implements" end-parent="true">
<start>(?=\%[implements\%])</start>
<start>(?=\%{typescript:implements-keyword})</start>
<end>\%{def:always-match}</end>
</context> <!-- /_choice-class-optional-name-ignore-implements -->
@@ -222,7 +195,7 @@
<!-- ## Class implements clause -->
<context id="_class-implements-clause" once-only="true">
<start>\%[implements\%]</start>
<start>\%{typescript:implements-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -247,25 +220,10 @@
<!-- ## Class body -->
<context id="_class-body-member-modifier" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-member-modifier-content">
<include>
<context id="_class-body-member-modifier-keywords" style-ref="js:keyword">
<keyword>abstract</keyword>
<keyword>declare</keyword>
<keyword>readonly</keyword>
</context> <!-- /_class-body-member-modifier-keywords -->
</include>
</context> <!-- /_class-body-member-modifier-content -->
</include>
<context id="_class-body-member-modifier" style-ref="js:keyword" once-only="true">
<match extended="true">
\%{typescript:abstract-keyword} | \%{js:static-keyword}
</match>
</context> <!-- /_class-body-member-modifier -->
<context id="_ordered-class-body-member-modifier" once-only="true">
@@ -276,6 +234,10 @@
</include>
</context> <!-- /_ordered-class-body-member-modifier -->
<context id="_class-body-declare-property-modifier" style-ref="js:keyword" once-only="true">
<match>\%{typescript:declare-keyword}</match>
</context> <!-- /_class-body-declare-property-modifier -->
<context id="_choice-class-body-index-member" end-parent="true">
<start>(?=\[)</start>
<end>\%{js:before-next-token}</end>
@@ -292,36 +254,283 @@
</include>
</context> <!-- /_choice-class-body-index-member -->
<context id="_choice-class-body-property-or-method-member" end-parent="true">
<context id="_choice-class-body-private-field" end-parent="true">
<start>(?=#\%{js:identifier-start})</start>
<end>;</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-private-field-content">
<include>
<context ref="typescript:ordered-private-identifier"/>
<context ref="typescript:ordered-optional-modifier"/>
<context ref="typescript:ordered-definite-assignment-assertion"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
</include>
</context> <!-- /_class-body-private-field-content -->
</include>
</context> <!-- /_choice-class-body-private-field -->
<context id="_class-body-method-parameters-list" once-only="true">
<start>\(</start>
<end>\)</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-method-parameters-list-content">
<include>
<context id="_class-body-method-first-parameter" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-method-first-parameter-content">
<include>
<!-- decorators are valid for class declaration
methods only (not class expressions) -->
<context ref="typescript:ordered-decorators"/>
<context ref="_function-first-parameter-content"/>
</include>
</context> <!-- /_class-body-method-first-parameter-content -->
</include>
</context> <!-- /_class-body-method-first-parameter -->
<context id="_class-body-method-parameters">
<start>,</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-method-parameters-content">
<include>
<!-- decorators are valid for class declaration
methods only (not class expressions) -->
<context ref="typescript:ordered-decorators"/>
<context ref="function-parameters-content"/>
</include>
</context> <!-- /_class-body-method-parameters-content -->
</include>
</context> <!-- /_class-body-method-parameters -->
</include>
</context> <!-- /_class-body-method-parameters-list-content -->
</include>
</context> <!-- /_class-body-method-parameters-list -->
<context id="_ordered-class-body-method-parameters-list" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_class-body-method-parameters-list"/>
</include>
</context> <!-- /_ordered-class-body-method-parameters-list -->
<context id="_choice-class-body-method-definition" style-ref="js:function-expression" end-parent="true">
<start>(?=[&lt;(])</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-property-or-method-member-content">
<context id="_class-body-method-definition-content">
<include>
<context ref="js-fn:ordered-method-definition"/>
<!-- method-definition has a type-annotation, but it is tied
to function-parameters-list -->
<context ref="typescript-type-gen:ordered-type-parameters-list"/>
<context ref="_ordered-class-body-method-parameters-list"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js-fn:_last-function-body"/>
</include>
</context> <!-- /_class-body-method-definition-content -->
</include>
</context> <!-- /_choice-class-body-method-definition -->
<context id="_choice-class-body-method-keyword-method-definition" style-ref="js:function-expression" end-parent="true">
<start>\%{js:method-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:comments"/>
<context id="_class-body-method-keyword-method-definition-content">
<include>
<context ref="js:ordered-generator-modifier"/>
<context ref="js-lit:ordered-property-name"/>
<context ref="_choice-class-body-method-definition"/>
</include>
</context> <!-- /_class-body-method-keyword-method-definition-content -->
</include>
</context> <!-- /choice-class-body-method-keyword-method-definition -->
<context id="_choice-class-body-keyword-named-property-or-method" end-parent="true">
<start extended="true">
(?:
\%{js:get-keyword} |
\%{js:set-keyword} |
\%{js:static-keyword} |
\%{typescript:abstract-keyword} |
\%{typescript:declare-keyword} |
\%{typescript:private-keyword} |
\%{typescript:protected-keyword} |
\%{typescript:public-keyword} |
\%{typescript:readonly-keyword}
)
(?= \%{js:optional-whitespace-or-comments} [;?!:=&lt;(] )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:identifier"/>
<context ref="js:comments"/>
<context id="_class-body-keyword-named-property-or-method-content">
<include>
<!-- for class properties and methods -->
<context ref="typescript:ordered-optional-modifier"/>
<!-- for class properties only -->
<context ref="typescript:ordered-definite-assignment-assertion"/>
<!-- optional modifier and definitely assignment assertion
cannot both be specified -->
<context ref="_choice-class-body-method-definition"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
</include>
</context> <!-- /_class-body-property-or-method-member-content -->
</context> <!-- /_class-body-keyword-named-property-or-method-content -->
</include>
</context> <!-- /_choice-class-body-property-or-method-member -->
</context> <!-- /_choice-class-body-keyword-named-property-or-method -->
<context id="_class-body-constructor-parameters-content">
<include>
<!-- decorators are valid for class declaration
methods only (not class expressions) -->
<context ref="typescript:ordered-decorators"/>
<context ref="_ordered-accessibility-modifier"/>
<context ref="_ordered-read-only-property-modifier"/>
<context ref="function-parameters-content"/>
</include>
</context> <!-- /_class-body-constructor-parameters-content -->
<context id="_class-body-constructor-parameters-list" once-only="true">
<start>\(</start>
<end>\)</end>
<include>
<context ref="js:comments"/>
<context id="_class-body-constructor-parameters-list-content">
<include>
<context id="_class-body-constructor-first-parameter" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<!-- constructors cannot have a "this" parameter -->
<context ref="_class-body-constructor-parameters-content"/>
</include>
</context> <!-- /_class-body-constructor-first-parameter -->
<context id="_class-body-constructor-parameters">
<start>,</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context ref="_class-body-constructor-parameters-content"/>
</include>
</context> <!-- /_class-body-constructor-parameters -->
</include>
</context> <!-- /_class-body-constructor-parameters-list-content -->
</include>
</context> <!-- /_class-body-constructor-parameters-list -->
<context id="_ordered-class-body-constructor-parameters-list" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_class-body-constructor-parameters-list"/>
</include>
</context> <!-- /_ordered-class-body-constructor-parameters-list -->
<context id="_choice-class-body-constructor-member" style-ref="js:function-expression" end-parent="true">
<start extended="true">
\%{js:keyword-start} constructor \%{js:keyword-end}
(?= \%{js:optional-whitespace-or-comments} \( )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:built-in-method"/>
<context ref="js:comments"/>
<context id="_class-body-constructor-member-content">
<include>
<context ref="_ordered-class-body-constructor-parameters-list"/>
<context ref="js-fn:_last-function-body"/>
</include>
</context> <!-- /_class-body-constructor-member-content -->
</include>
</context> <!-- /_choice-class-body-constructor-member -->
<!-- modifier order:
* accessibility ("public" / "protected" / "private")
* "abstract" / "static" (mutually exclusive)
* "readonly"
"declare" can be in any position:
https://github.com/microsoft/TypeScript/issues/34172
index members can only be modified with "readonly"
private fields can only be modified with "readonly"
cannot have abstract generators: abstract *generator()
https://github.com/Microsoft/TypeScript/issues/25710
"abstract async" will probably be not allowed in the future
https://github.com/microsoft/TypeScript/issues/28516
-->
<!-- replaces js-fn:_class-body-member-content -->
<context id="class-body-member-content">
<include>
<!-- only "readonly" applies to index members
but these all need to be here because of ordering -->
<!-- try to match before and after each modifier -->
<context ref="_choice-class-body-keyword-named-property-or-method"/>
<context ref="_class-body-declare-property-modifier"/>
<context ref="_ordered-accessibility-modifier"/>
<!-- "static" must precede "readonly" -->
<context ref="js-fn:_ordered-class-body-member-modifier"/>
<context ref="_ordered-class-body-member-modifier"/>
<context ref="_ordered-read-only-property-modifier"/>
<context ref="_choice-class-body-index-member"/>
<context ref="_choice-class-body-property-or-method-member"/>
<context ref="_choice-class-body-private-field"/>
<context ref="_choice-class-body-method-keyword-method-definition"/>
<!-- should not be combined with some modifiers, but cannot prevent it -->
<context ref="_choice-class-body-constructor-member"/>
<context ref="js-fn:ordered-property-accessor-keyword"/>
<context ref="js-lit:ordered-property-name"/>
<!-- for class properties and methods -->
<context ref="typescript:ordered-optional-modifier"/>
<!-- for class properties only -->
<context ref="typescript:ordered-definite-assignment-assertion"/>
<!-- optional modifier and definitely assignment assertion
cannot both be specified -->
<context ref="_choice-class-body-method-definition"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
</include>
</context> <!-- /class-body-member-content -->

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-js-lit" name="TypeScript JavaScript Literal Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -45,13 +45,7 @@
<include>
<define-regex id="_decimal-digits" extended="true">
(?&gt;
[0-9]
(?:
[0-9]+ |
(?: _ [0-9] )+
)*
)
(?&gt; [0-9] (?: [0-9]+ | (?: _ [0-9] )+ )* )
</define-regex> <!-- /_decimal-digits -->
<define-regex id="_decimal" extended="true">
@@ -64,91 +58,51 @@
<context id="_choice-decimal" style-ref="js:decimal" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_decimal}
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_decimal} \%{js:number-end} )
</start>
<end>\%{_decimal}</end>
</context> <!-- /_choice-decimal -->
<define-regex id="_decimal-integer" extended="true">
(?&gt;
(?: [1-9] _? \%{_decimal-digits} | [0-9] )
)
(?&gt; [1-9] _? \%{_decimal-digits} | [0-9] )
</define-regex> <!-- /_decimal-integer -->
<context id="_choice-decimal-big-integer" style-ref="js:decimal" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_decimal-integer} n
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_decimal-integer} n \%{js:number-end} )
</start>
<end>\%{_decimal-integer}n</end>
</context> <!-- /_choice-decimal-big-integer -->
<define-regex id="_binary-integer" extended="true">
(?&gt;
0 [bB] [01]
(?:
[01]+ |
(?: _ [01] )+
)*
)
(?&gt; 0 [bB] [01] (?: [01]+ | (?: _ [01] )+ )* )
</define-regex> <!-- /_binary-integer -->
<context id="_choice-binary-integer" style-ref="js:binary-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_binary-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_binary-integer} n? \%{js:number-end} )
</start>
<end>\%{_binary-integer}n?</end>
</context> <!-- /_choice-binary-integer -->
<define-regex id="_octal-integer" extended="true">
(?&gt;
0 [oO] [0-7]
(?:
[0-7]+ |
(?: _ [0-7] )+
)*
)
(?&gt; 0 [oO] [0-7] (?: [0-7]+ | (?: _ [0-7] )+ )* )
</define-regex> <!-- /_octal-integer -->
<context id="_choice-octal-integer" style-ref="js:octal-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_octal-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_octal-integer} n? \%{js:number-end} )
</start>
<end>\%{_octal-integer}n?</end>
</context> <!-- /_choice-octal-integer -->
<define-regex id="_hex-integer" extended="true">
(?&gt;
0 [xX] [0-9a-fA-F]
(?:
[0-9a-fA-F]+ |
(?: _ [0-9a-fA-F] )+
)*
)
(?&gt; 0 [xX] [0-9a-fA-F] (?: [0-9a-fA-F]+ | (?: _ [0-9a-fA-F] )+ )* )
</define-regex> <!-- /_hex-integer -->
<context id="_choice-hex-integer" style-ref="js:hex-integer" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} | \. )
(?=
\%{_hex-integer} n?
(?! \%{js:identifier-part} | \. )
)
\%{js:number-start} (?= \%{_hex-integer} n? \%{js:number-end} )
</start>
<end>\%{_hex-integer}n?</end>
</context> <!-- /_choice-hex-integer -->
@@ -157,5 +111,22 @@
</include>
</context> <!-- /choice-number -->
<!-- # Object literal -->
<!-- replaces js-lit:_choice-object-literal-keyword-named-property-or-method -->
<context id="choice-object-literal-keyword-named-property-or-method" end-parent="true">
<start extended="true">
(?: \%{js:get-keyword} | \%{js:set-keyword} )
(?= \%{js:optional-whitespace-or-comments} [:=&lt;(] )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:identifier"/>
<context ref="js:comments"/>
<context ref="js-lit:_object-literal-keyword-named-property-or-method-content"/>
</include>
</context> <!-- /choice-object-literal-keyword-named-property-or-method -->
</definitions>
</language>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-js-mod" name="TypeScript JavaScript Module Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -39,7 +39,7 @@
-->
<context id="_export-as-namespace-keyword" style-ref="js:keyword" once-only="true">
<keyword>namespace</keyword>
<match>\%{typescript:namespace-keyword}</match>
</context> <!-- /_export-as-namespace-keyword -->
<context id="_ordered-export-as-namespace-keyword" once-only="true">
@@ -51,7 +51,7 @@
</context> <!-- /_ordered-export-as-namespace-keyword -->
<context id="_choice-export-as-namespace" end-parent="true">
<start>\%[as\%]</start>
<start>\%{js:as-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -88,6 +88,42 @@
</include>
</context> <!-- /_choice-export-assignment -->
<!-- ## Type-only export or export type alias declaration
type-only export:
export type { T };
export type { T } from './mod';
export type alias declaration:
export type Name = string;
-->
<context id="_choice-export-type-alias-declaration" style-ref="typescript:type-alias-declaration" end-parent="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:statement-end}</end>
<include>
<context ref="js:comments"/>
<context ref="typescript-js-st:_type-alias-declaration-content"/>
</include>
</context> <!-- /_choice-export-type-alias-declaration -->
<context id="_choice-export-type-only-or-type-alias-declaration" end-parent="true">
<start>\%{typescript:type-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
<context ref="js:comments"/>
<context id="_export-type-only-or-type-alias-declaration-content">
<include>
<context ref="js-mod:_choice-export-named"/>
<context ref="_choice-export-type-alias-declaration"/>
</include>
</context> <!-- /_export-type-only-or-type-alias-declaration-content -->
</include>
</context> <!-- /_choice-export-type-only-or-type-alias-declaration -->
<!-- ## Export declaration -->
<!-- replaces js-mod:_export-declaration-content -->
@@ -98,10 +134,10 @@
<context ref="typescript-js-st:choice-ambient-declaration"/>
<context ref="typescript-js-st:choice-const-declaration"/>
<context ref="typescript-js-st:choice-enum-declaration"/>
<context ref="_choice-import-declaration"/> <!-- for import alias declaration -->
<context ref="_choice-import-default-declaration"/> <!-- for import alias declaration -->
<context ref="typescript-js-st:choice-interface-declaration"/>
<context ref="typescript-js-st:choice-namespace-declaration"/>
<context ref="typescript-js-st:choice-type-alias-declaration"/>
<context ref="_choice-export-type-only-or-type-alias-declaration"/>
<context ref="js-mod:_export-declaration-content" original="true"/>
</include>
</context> <!-- /export-declaration-content -->
@@ -120,7 +156,7 @@
-->
<context id="_choice-import-require" end-parent="true">
<start>\%[require\%]</start>
<start>\%{typescript:require-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -181,6 +217,31 @@
</include>
</context> <!-- /_choice-import-alias-or-require -->
<!-- ## Type-only import
import type T from './mod';
import type { A, B } from './mod';
import type * as Types from './mod';
-->
<context id="_choice-import-type-only" end-parent="true">
<start>\%{typescript:type-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
<context ref="js:comments"/>
<context id="_import-type-only-content">
<include>
<context ref="js-mod:_choice-import-named"/>
<context ref="js-mod:_choice-all-as-namespace"/>
<context ref="js-mod:_choice-import-default"/>
</include>
</context> <!-- _import-type-only-content -->
</include>
</context> <!-- /_choice-import-type-only -->
<!-- ## Import default -->
<!-- replaces js-mod:_import-default-content -->
@@ -193,37 +254,31 @@
</include>
</context> <!-- /import-default-content -->
<!-- ## Import declaration -->
<define-regex id="_import-declaration-keyword" extended="true">
(?:
\%[ import \%]
(?! \%{js:import-function-keyword-suffix} )
(?! \%{typescript:import-meta-object-keyword-suffix} )
)
</define-regex>
<!-- <ImportDeclaration> -->
<context id="_choice-import-declaration" style-ref="js:export-import-declaration" end-parent="true">
<start>\%{_import-declaration-keyword}</start>
<!-- this is like js-mod:import-declarations but only matches import
default (for import alias) -->
<context id="_choice-import-default-declaration" style-ref="js:export-import-declaration" end-parent="true">
<start>\%{js:import-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:comments"/>
<context ref="js-mod:_import-declaration-content"/>
</include>
</context> <!-- /_choice-import-declaration -->
<!-- replaces js-mod:import-declarations -->
<context id="import-declarations" style-ref="js:export-import-declaration">
<start>\%{_import-declaration-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context ref="js:comments"/>
<context ref="js-mod:_import-declaration-content"/>
<context id="_import-default-declaration-content">
<include>
<context ref="js-mod:_choice-import-default"/>
</include>
</context> <!-- /_import-default-declaration-content -->
</include>
</context> <!-- /import-declarations -->
</context> <!-- /_choice-import-default-declaration -->
<!-- replaces js-mod:_import-declaration-content -->
<context id="import-declaration-content">
<include>
<context ref="_choice-import-type-only"/>
<context ref="js-mod:_import-declaration-content" original="true"/>
</include>
</context> <!-- /import-declaration-content -->
</definitions>
</language>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-js-st" name="TypeScript JavaScript Statement Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -50,7 +50,7 @@
<!-- replaces js-st:_variable-declaration-item-content -->
<context id="variable-declaration-item-content">
<include>
<context ref="js:ordered-assignment-target"/>
<context ref="js:ordered-binding"/>
<context ref="typescript:ordered-definite-assignment-assertion"/>
<context ref="typescript:ordered-type-annotation"/>
<context ref="js:ordered-default-value-assignment"/>
@@ -71,12 +71,8 @@
declare global { ... }
-->
<define-regex id="_ambient-declaration-keyword" extended="true">
(?: \%[ declare \%] )
</define-regex> <!-- /_ambient-declaration-keyword -->
<context id="_choice-global-augmentation" style-ref="typescript:global-augmentation" end-parent="true">
<start>\%[global\%]</start>
<start>\%{typescript:global-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -106,7 +102,7 @@
<!-- <AmbientDeclaration> -->
<context id="_ambient-declarations" style-ref="typescript:ambient-declaration">
<start>\%{_ambient-declaration-keyword}</start>
<start>\%{typescript:declare-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -117,7 +113,7 @@
<!-- <AmbientDeclaration> -->
<context id="choice-ambient-declaration" style-ref="typescript:ambient-declaration" end-parent="true">
<start>\%{_ambient-declaration-keyword}</start>
<start>\%{typescript:declare-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -135,10 +131,6 @@
we need a custom const declaration to handle "const enum"
-->
<define-regex id="_const-declaration-keyword" extended="true">
(?: \%[ const \%] )
</define-regex> <!-- /_const-declaration-keyword -->
<context id="_const-declaration-content">
<include>
<context ref="choice-enum-declaration"/>
@@ -156,7 +148,7 @@
</context> <!-- /_const-declaration-content -->
<context id="_const-declarations" style-ref="js:variable-declaration">
<start>\%{_const-declaration-keyword}</start>
<start>\%{js:const-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -166,7 +158,7 @@
</context> <!-- /_const-declarations -->
<context id="choice-const-declaration" style-ref="js:variable-declaration" end-parent="true">
<start>\%{_const-declaration-keyword}</start>
<start>\%{js:const-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -181,10 +173,6 @@
enum Foo { A = 1, B, C }
-->
<define-regex id="_enum-declaration-keyword" extended="true">
(?: \%[ enum \%] )
</define-regex> <!-- /_enum-declaration-keyword -->
<context id="_enum-member-content">
<include>
<context ref="typescript-type-lit:ordered-property-name"/>
@@ -242,7 +230,7 @@
<!-- <EnumDeclaration> -->
<context id="_enum-declarations" style-ref="typescript:enum-declaration">
<start>\%{_enum-declaration-keyword}</start>
<start>\%{typescript:enum-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -253,7 +241,7 @@
<!-- <EnumDeclaration> -->
<context id="choice-enum-declaration" style-ref="typescript:enum-declaration" end-parent="true">
<start>\%{_enum-declaration-keyword}</start>
<start>\%{typescript:enum-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -270,12 +258,8 @@
AnotherThing<string, number> { ... }
-->
<define-regex id="_interface-declaration-keyword" extended="true">
(?: \%[ interface \%] )
</define-regex> <!-- /_interface-declaration-keyword -->
<context id="_interface-extends-clause" once-only="true">
<start>\%[extends\%]</start>
<start>\%{js:extends-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -309,7 +293,7 @@
<!-- <InterfaceDeclaration> -->
<context id="_interface-declarations" style-ref="typescript:interface-declaration">
<start>\%{_interface-declaration-keyword}</start>
<start>\%{typescript:interface-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -320,7 +304,7 @@
<!-- <InterfaceDeclaration> -->
<context id="choice-interface-declaration" style-ref="typescript:interface-declaration" end-parent="true">
<start>\%{_interface-declaration-keyword}</start>
<start>\%{typescript:interface-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -337,10 +321,6 @@
module "foo.bar" { ... } // "external module" for d.ts files
-->
<define-regex id="_module-declaration-keyword" extended="true">
(?: \%[ module \%] )
</define-regex> <!-- /_module-declaration-keyword -->
<context id="_module-identifier-or-string" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
@@ -374,7 +354,7 @@
<!-- <NamespaceDeclaration> -->
<context id="_module-declarations" style-ref="typescript:module-declaration">
<start>\%{_module-declaration-keyword}</start>
<start>\%{typescript:module-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -385,7 +365,7 @@
<!-- <NamespaceDeclaration> -->
<context id="choice-module-declaration" style-ref="typescript:module-declaration" end-parent="true">
<start>\%{_module-declaration-keyword}</start>
<start>\%{typescript:module-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -400,10 +380,6 @@
namespace Foo.Bar { ... }
-->
<define-regex id="_namespace-declaration-keyword" extended="true">
(?: \%[ namespace \%] )
</define-regex> <!-- /_namespace-declaration-keyword -->
<context id="_namespace-body" once-only="true">
<start>{</start>
<end>}</end>
@@ -438,7 +414,7 @@
<!-- <NamespaceDeclaration> -->
<context id="_namespace-declarations" style-ref="typescript:namespace-declaration">
<start>\%{_namespace-declaration-keyword}</start>
<start>\%{typescript:namespace-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -449,7 +425,7 @@
<!-- <NamespaceDeclaration> -->
<context id="choice-namespace-declaration" style-ref="typescript:namespace-declaration" end-parent="true">
<start>\%{_namespace-declaration-keyword}</start>
<start>\%{typescript:namespace-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
@@ -467,10 +443,6 @@
type Container<T> = { value: T };
-->
<define-regex id="_type-alias-declaration-keyword" extended="true">
(?: \%[ type \%] )
</define-regex> <!-- /_type-alias-declaration-keyword -->
<context id="_type-alias-value" once-only="true">
<start>=</start>
<end>\%{js:before-next-token}</end>
@@ -494,36 +466,25 @@
</include>
</context> <!-- /_ordered-type-alias-value -->
<context id="_type-alias-declaration-content">
<include>
<context ref="js:ordered-identifier"/>
<context ref="typescript-type-gen:ordered-type-parameters-list"/>
<context ref="_ordered-type-alias-value"/>
</include>
</context> <!-- /_type-alias-declaration-content -->
<!-- <TypeAliasDeclaration> -->
<context id="_type-alias-declarations" style-ref="typescript:type-alias-declaration">
<start>\%{_type-alias-declaration-keyword}</start>
<start>\%{typescript:type-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
<context ref="js:comments"/>
<context ref="_type-alias-declaration-content"/>
<context id="_type-alias-declaration-content">
<include>
<context ref="js:ordered-identifier"/>
<context ref="typescript-type-gen:ordered-type-parameters-list"/>
<context ref="_ordered-type-alias-value"/>
</include>
</context> <!-- /_type-alias-declaration-content -->
</include>
</context> <!-- /_type-alias-declarations -->
<!-- <TypeAliasDeclaration> -->
<context id="choice-type-alias-declaration" style-ref="typescript:type-alias-declaration" end-parent="true">
<start>\%{_type-alias-declaration-keyword}</start>
<end>\%{js:statement-end}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
<context ref="js:comments"/>
<context ref="_type-alias-declaration-content"/>
</include>
</context> <!-- /choice-type-alias-declaration -->
<!-- # Statements -->

View File

@@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
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, see <http://www.gnu.org/licenses/>.
-->
<language id="typescript-js-val" name="TypeScript JavaScript Built-in Value Additions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
<!--
See typescript.lang for general notes, naming conventions, etc.
-->
<!-- # Global values -->
<!-- replaces js-val:global-values -->
<context id="global-values">
<include>
<!-- import.meta: stage 3 proposal -->
<context id="_import-meta-object-keyword">
<start extended="true">
\%[ import \%] (?= \%{typescript:import-meta-object-keyword-suffix} )
</start>
<end>\%[meta\%]</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:keyword"/>
<context sub-pattern="0" where="end" style-ref="js:keyword"/>
<context ref="js:comments"/>
<context id="_import-meta-object-keyword-content">
<include>
<context ref="js:ordered-keyword-dot" style-ref="js:keyword"/>
</include>
</context> <!-- /_import-meta-object-keyword-content -->
</include>
</context> <!-- /_import-meta-object-keyword -->
<context ref="js-val:global-values" original="true"/>
</include>
</context> <!-- /global-values -->
</definitions>
</language>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -30,7 +30,7 @@
</metadata>
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -47,7 +47,7 @@
<include>
<context ref="typescript:typescript"/>
</include>
</context>
</context> <!-- /main-lang -->
<replace id="jsx:main-lang" ref="main-lang"/>
@@ -55,46 +55,40 @@
<!-- ## @jsx comment pragma
/* @jsx dom */
can only be preceded by comments or other triple-slash
directives (i.e. at the top of a file)
can appear anywhere inside the comment(!)
appears to be case-insensitive
https://github.com/microsoft/TypeScript/blob/3c49fb0d9ffb67fd645835589d66687b4fb7543a/src/services/classifier.ts#L768
-->
<!-- I believe the allowed syntax is less strict but I haven't found
any definitive documentation -->
<context id="_jsx-comment-pragmas" style-ref="js:directive" class="comment">
<start case-sensitive="false" extended="true">
/\*\*? \%{js:whitespace}* @jsx \%]
</start>
<end>\*/</end>
<include>
<context ref="js:_comment-content"/>
</include>
</context> <!-- /_jsx-comment-pragmas -->
<define-regex id="_jsx-comment-pragma" case-sensitive="false" extended="true">
@jsx \s+ (?&gt; \%{js:identifier} (?: \. \%{js:identifier} )* ) (?! \S )
</define-regex> <!-- /_jsx-comment-pragma -->
<context id="_jsx-comment-pragmas-no-extend-parent" style-ref="js:directive" class="comment" extend-parent="false">
<context id="_jsx-comment-pragma" style-ref="js:directive" class="no-spell-check" once-only="true">
<match>\%{_jsx-comment-pragma}</match>
</context> <!-- /_jsx-comment-pragma -->
<context id="_jsx-comment-pragma-multiline-comments" style-ref="js:directive" class-disabled="no-spell-check" class="comment">
<start extended="true">
/\*\*? \%{js:whitespace}* @jsx \%]
/\* (?= /* \** \s* \%{_jsx-comment-pragma} .*? \*/ )
</start>
<end>\*/</end>
<include>
<context ref="js:_comment-content"/>
<context ref="js:_multiline-comment-content"/>
</include>
</context> <!-- /_jsx-comment-pragmas-no-extend-parent -->
</context> <!-- /_jsx-comment-pragma-multiline-comments -->
<context id="_comments">
<context id="_multiline-comment-content">
<include>
<context ref="_jsx-comment-pragmas"/>
<context ref="typescript:_comments" original="true"/>
<context ref="_jsx-comment-pragma"/>
<context ref="typescript:_multiline-comment-content" original="true"/>
</include>
</context> <!-- /_comments -->
</context> <!-- /_multiline-comment-content -->
<context id="_comments-no-extend-parent">
<include>
<context ref="_jsx-comment-pragmas-no-extend-parent"/>
<context ref="typescript:_comments-no-extend-parent" original="true"/>
</include>
</context> <!-- /_comments-no-extend-parent -->
<replace id="js:comments" ref="_comments"/>
<replace id="js:comments-no-extend-parent" ref="_comments-no-extend-parent"/>
<replace id="js:_multiline-comment-content" ref="_multiline-comment-content"/>
<!-- # Types -->
@@ -131,11 +125,7 @@
\%{js:optional-whitespace-or-comments}
\%{js:identifier}
\%{js:optional-whitespace-or-comments}
(?:
\%[ extends \%] |
, |
=
)
(?: \%{js:extends-keyword} | [,=] )
)
</start>
<end>\%{js:before-next-token}</end>
@@ -170,7 +160,7 @@
<context ref="_arrow-function-type-parameters-list"/>
<context ref="js-expr:_pre-lhs-expression" original="true"/>
</include>
</context>
</context> <!-- /_pre-lhs-expression -->
<replace id="js-expr:_pre-lhs-expression" ref="_pre-lhs-expression"/>
@@ -185,7 +175,7 @@
<context ref="jsx:_attribute-names"/>
<context ref="jsx:_attribute-initializers"/>
</include>
</context>
</context> <!-- /_start-tag-head-content -->
<replace id="jsx:_start-tag-head-content" ref="_start-tag-head-content"/>
@@ -194,9 +184,10 @@
<context id="typescript-jsx" class="no-spell-check">
<include>
<context ref="_jsx-comment-pragma-multiline-comments"/>
<context ref="jsx:jsx"/>
</include>
</context>
</context> <!-- /typescript-jsx -->
</definitions>
</language>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-type-expr" name="TypeScript Type Expressions" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -41,7 +41,7 @@
-->
<context id="_choice-infer-declaration" end-parent="true">
<start>\%[infer\%]</start>
<start>\%{typescript:infer-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -71,22 +71,22 @@
<context ref="typescript:constructor-modifier"/>
<context ref="typescript-type-gen:type-parameters-list"/>
<context id="_asserts-type-predicates" style-ref="typescript:type-keyword">
<keyword>asserts</keyword>
</context> <!-- /_asserts-type-predicates -->
<context id="_asserts-type-predicate" style-ref="typescript:type-keyword" once-only="true">
<match>\%{typescript:asserts-keyword}</match>
</context> <!-- /_asserts-type-predicate -->
<context id="_indexed-type-queries" style-ref="typescript:type-keyword">
<keyword>keyof</keyword>
</context> <!-- /_indexed-type-queries -->
<context id="_indexed-type-query" style-ref="typescript:type-keyword" once-only="true">
<match>\%{typescript:keyof-keyword}</match>
</context> <!-- /_indexed-type-query -->
<context id="_readonly-type-modifier" style-ref="typescript:type-keyword">
<keyword>readonly</keyword>
<context id="_readonly-type-modifier" style-ref="typescript:type-keyword" once-only="true">
<match>\%{typescript:readonly-keyword}</match>
</context> <!-- /_readonly-type-modifier -->
<!-- for unique symbol subtype, can contain newlines between
"unique" and "symbol" -->
<context id="_unique-symbol-subtype" style-ref="typescript:basic-type" once-only="true">
<keyword>unique</keyword>
<match>\%{typescript:unique-keyword}</match>
</context> <!-- /_unique-symbol-subtype -->
</include>
@@ -113,41 +113,41 @@
<!-- ## Type "grouping" -->
<!-- this will only catch simple cases :-( -->
<context id="_choice-type-grouping-this-parameter-or-assignment-target" end-parent="true">
<context id="_choice-type-grouping-this-parameter-or-binding" end-parent="true">
<start extended="true">
(?:
(?&lt;= \.\.\. ) (?= \%{js:identifier} ) | # adding js:optional-whitespace-or-comments in between doesn't work
(?= \%{js:identifier} \%{js:optional-whitespace-or-comments} [?:,] )
)
(?&lt;= \%{js:rest-syntax} )
(?= \%{js:identifier} ) | # adding js:optional-whitespace-or-comments in between doesn't work
(?&lt;! \%{js:identifier-char} )
(?= \%{js:identifier} \%{js:optional-whitespace-or-comments} [?:,] )
</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_type-grouping-this-parameter-or-assignment-target-content">
<context id="_type-grouping-this-parameter-or-binding-content">
<include>
<context ref="typescript:ordered-this-parameter-or-assignment-target"/>
<context ref="typescript:ordered-this-parameter-or-binding"/>
</include>
</context> <!-- /_type-grouping-this-parameter-or-assignment-target-content -->
</context> <!-- /_type-grouping-this-parameter-or-binding-content -->
</include>
</context> <!-- /__choice-type-grouping-this-parameter-or-assignment-target -->
</context> <!-- /__choice-type-grouping-this-parameter-or-binding -->
<context id="_type-grouping-type-expression-or-this-parameter-or-assignment-target" once-only="true">
<context id="_type-grouping-type-expression-or-this-parameter-or-binding" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<!-- no comments here -->
<context id="_type-grouping-type-expression-or-this-parameter-or-assignment-target-content">
<context id="_type-grouping-type-expression-or-this-parameter-or-binding-content">
<include>
<context ref="_choice-type-grouping-this-parameter-or-assignment-target"/>
<context ref="_choice-type-grouping-this-parameter-or-binding"/>
<context ref="choice-type-expression"/>
</include>
</context> <!-- /_type-grouping-type-expression-or-this-parameter-or-assignment-target-content -->
</context> <!-- /_type-grouping-type-expression-or-this-parameter-or-binding-content -->
</include>
</context> <!-- /_type-grouping-type-expression-or-this-parameter-or-assignment-target -->
</context> <!-- /_type-grouping-type-expression-or-this-parameter-or-binding -->
<!-- function parameter list allows for accessibility modifiers and
default value assignment, but these are not allowed in a
@@ -173,7 +173,7 @@
<context id="_type-grouping-first-item-content">
<include>
<context ref="js:ordered-rest-syntax"/>
<context ref="_type-grouping-type-expression-or-this-parameter-or-assignment-target"/>
<context ref="_type-grouping-type-expression-or-this-parameter-or-binding"/>
<context ref="typescript:ordered-optional-modifier"/>
<context ref="typescript:ordered-type-annotation"/>
</include>
@@ -191,7 +191,7 @@
<context id="_type-grouping-item-content">
<include>
<context ref="js:ordered-rest-syntax"/>
<context ref="js:ordered-assignment-target"/>
<context ref="js:ordered-binding"/>
<context ref="typescript:ordered-optional-modifier"/>
<context ref="typescript:ordered-type-annotation"/>
</include>
@@ -281,7 +281,7 @@
<!-- <TypeQuery> -->
<context id="_choice-type-query" style-ref="typescript:type-query" end-parent="true">
<start>\%[typeof\%]</start>
<start>\%{js:typeof-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -330,21 +330,21 @@
<end>\%{def:always-match}</end>
</context> <!-- /_choice-conditional-type-operator-missing-true-type -->
<context id="_conditional-type-operator-false-clause" once-only="true">
<context id="_conditional-type-operator-false-type" once-only="true">
<start>:</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:conditional-type-operator"/>
<context ref="js:comments"/>
<context id="_conditional-type-operator-false-clause-content">
<context id="_conditional-type-operator-false-type-content">
<include>
<context ref="type-expression"/>
</include>
</context> <!-- /_conditional-type-operator-false-clause-content -->
</context> <!-- /_conditional-type-operator-false-type-content -->
</include>
</context> <!-- /_conditional-type-operator-false-clause -->
</context> <!-- /_conditional-type-operator-false-type -->
<context id="_choice-conditional-type-operator-true-type" end-parent="true">
<start>\%{js:before-next-token}</start>
@@ -355,7 +355,7 @@
<context id="_conditional-type-operator-true-type-content">
<include>
<context ref="type-expression"/>
<context ref="_conditional-type-operator-false-clause"/>
<context ref="_conditional-type-operator-false-type"/>
</include>
</context> <!-- /_conditional-type-operator-true-type-content -->
@@ -396,7 +396,7 @@
</context> <!-- /_choice-conditional-type-operator-super-type -->
<context id="_conditional-type-operators">
<start>\%[extends\%]</start>
<start>\%{js:extends-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -463,7 +463,7 @@
</context> <!-- /_union-intersection-type-operators -->
<context id="_type-predicate-operators">
<start>\%[is\%]</start>
<start>\%{typescript:is-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-type-gen" name="TypeScript Type Generics" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -39,7 +39,7 @@
<!-- <Constraint> -->
<context id="_type-parameter-constraint" once-only="true">
<start>\%[extends\%]</start>
<start>\%{js:extends-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>
@@ -151,8 +151,8 @@
-->
<context id="const-type-assertion-keyword-end-parent" style-ref="typescript:type-keyword" end-parent="true">
<start>(?=\%[const\%])</start>
<end>const</end>
<start>(?=\%{js:const-keyword})</start>
<end>\%{js:const-keyword}</end>
</context> <!-- /const-type-assertion-keyword-end-parent -->
<context id="_type-parameters-list-or-type-assertion-first-parameter" once-only="true">

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
-->
<language id="typescript-type-lit" name="TypeScript Type Literals" version="2.0" _section="Script" hidden="true">
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -38,24 +38,18 @@
-->
<define-regex id="_basic-types" extended="true">
(?:
\%[
(?:
any |
bigint |
boolean |
never |
null |
number |
object |
string |
symbol |
undefined |
unknown |
void
)
\%]
)
\%{typescript:any-keyword} |
\%{typescript:bigint-keyword} |
\%{typescript:boolean-keyword} |
\%{typescript:never-keyword} |
\%{js:null-keyword} |
\%{typescript:number-keyword} |
\%{typescript:object-keyword} |
\%{typescript:string-keyword} |
\%{typescript:symbol-keyword} |
\%{typescript:undefined-keyword} |
\%{typescript:unknown-keyword} |
\%{js:void-keyword}
</define-regex> <!-- /_basic-types -->
<!-- <PredefinedType> -->
@@ -71,14 +65,14 @@
false
-->
<define-regex id="_boolean-types" extended="true">
(?: \%[ (?: false | true ) \%] )
</define-regex> <!-- /_boolean-literal-types -->
<!-- <PredefinedType> -->
<context id="choice-boolean-type" style-ref="typescript:boolean-type" end-parent="true">
<start>(?=\%{_boolean-types})</start>
<end>\%{_boolean-types}</end>
<start extended="true">
(?= \%{js:false-keyword} | \%{js:true-keyword} )
</start>
<end extended="true">
\%{js:false-keyword} | \%{js:true-keyword}
</end>
</context> <!-- /choice-boolean-type -->
@@ -109,8 +103,8 @@
<!-- <ThisType> -->
<context id="choice-this-type" style-ref="typescript:basic-type" end-parent="true">
<start>(?=\%[this\%])</start>
<end>this</end>
<start>(?=\%{js:this-keyword})</start>
<end>\%{js:this-keyword}</end>
</context> <!-- /choice-this-type -->
@@ -203,7 +197,8 @@
<include>
<context id="_choice-object-type-literal-modifier-keyword" style-ref="typescript:type-keyword" end-parent="true">
<keyword>readonly</keyword>
<start>(?=\%{typescript:readonly-keyword})</start>
<end>\%{typescript:readonly-keyword}</end>
</context> <!-- /_choice-object-type-literal-modifier-keyword -->
</include>
@@ -237,7 +232,7 @@
<context ref="typescript:choice-type-annotation"/>
<context id="_choice-mapped-type" end-parent="true">
<start>\%[in\%]</start>
<start>\%{js:in-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="typescript:type-keyword"/>

View File

@@ -4,7 +4,7 @@
This file is part of GtkSourceView
Author: Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019 Jeffery To <jeffery.to@gmail.com>
Copyright (C) 2019-2020 Jeffery To <jeffery.to@gmail.com>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -88,7 +88,7 @@
</styles>
<!-- from js:identifier-char -->
<keyword-char-class>[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<keyword-char-class>(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}]</keyword-char-class>
<definitions>
@@ -98,7 +98,7 @@
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md
https://www.typescriptlang.org/
Supported level: TypeScript 3.7
Supported level: TypeScript 3.9
Naming conventions described in javascript.lang
-->
@@ -111,27 +111,129 @@
so we move the definitions of these regexes here
-->
<define-regex id="import-meta-object-keyword-suffix" extended="true">
(?:
\%{js:optional-whitespace-or-comments}
\.
\%{js:optional-whitespace-or-comments}
meta \%]
)
</define-regex> <!-- /import-meta-object-keyword-suffix -->
<define-regex id="abstract-keyword" extended="true">
\%{js:keyword-start} abstract \%{js:keyword-end}
</define-regex> <!-- /abstract-keyword -->
<define-regex id="any-keyword" extended="true">
\%{js:keyword-start} any \%{js:keyword-end}
</define-regex> <!-- /any-keyword -->
<define-regex id="asserts-keyword" extended="true">
\%{js:keyword-start} asserts \%{js:keyword-end}
</define-regex> <!-- /asserts-keyword -->
<define-regex id="bigint-keyword" extended="true">
\%{js:keyword-start} bigint \%{js:keyword-end}
</define-regex> <!-- /bigint-keyword -->
<define-regex id="boolean-keyword" extended="true">
\%{js:keyword-start} boolean \%{js:keyword-end}
</define-regex> <!-- /boolean-keyword -->
<define-regex id="declare-keyword" extended="true">
\%{js:keyword-start} declare \%{js:keyword-end}
</define-regex> <!-- /declare-keyword -->
<define-regex id="enum-keyword" extended="true">
\%{js:keyword-start} enum \%{js:keyword-end}
</define-regex> <!-- /enum-keyword -->
<define-regex id="global-keyword" extended="true">
\%{js:keyword-start} global \%{js:keyword-end}
</define-regex> <!-- /global-keyword -->
<define-regex id="implements-keyword" extended="true">
\%{js:keyword-start} implements \%{js:keyword-end}
</define-regex> <!-- /implements-keyword -->
<define-regex id="infer-keyword" extended="true">
\%{js:keyword-start} infer \%{js:keyword-end}
</define-regex> <!-- /infer-keyword -->
<define-regex id="interface-keyword" extended="true">
\%{js:keyword-start} interface \%{js:keyword-end}
</define-regex> <!-- /interface-keyword -->
<define-regex id="is-keyword" extended="true">
\%{js:keyword-start} is \%{js:keyword-end}
</define-regex> <!-- /is-keyword -->
<define-regex id="keyof-keyword" extended="true">
\%{js:keyword-start} keyof \%{js:keyword-end}
</define-regex> <!-- /keyof-keyword -->
<define-regex id="module-keyword" extended="true">
\%{js:keyword-start} module \%{js:keyword-end}
</define-regex> <!-- /module-keyword -->
<define-regex id="namespace-keyword" extended="true">
\%{js:keyword-start} namespace \%{js:keyword-end}
</define-regex> <!-- /namespace-keyword -->
<define-regex id="never-keyword" extended="true">
\%{js:keyword-start} never \%{js:keyword-end}
</define-regex> <!-- /never-keyword -->
<define-regex id="number-keyword" extended="true">
\%{js:keyword-start} number \%{js:keyword-end}
</define-regex> <!-- /number-keyword -->
<define-regex id="object-keyword" extended="true">
\%{js:keyword-start} object \%{js:keyword-end}
</define-regex> <!-- /object-keyword -->
<define-regex id="private-keyword" extended="true">
\%{js:keyword-start} private \%{js:keyword-end}
</define-regex> <!-- /private-keyword -->
<define-regex id="protected-keyword" extended="true">
\%{js:keyword-start} protected \%{js:keyword-end}
</define-regex> <!-- /protected-keyword -->
<define-regex id="public-keyword" extended="true">
\%{js:keyword-start} public \%{js:keyword-end}
</define-regex> <!-- /public-keyword -->
<define-regex id="readonly-keyword" extended="true">
\%{js:keyword-start} readonly \%{js:keyword-end}
</define-regex> <!-- /readonly-keyword -->
<define-regex id="require-keyword" extended="true">
\%{js:keyword-start} require \%{js:keyword-end}
</define-regex> <!-- /require-keyword -->
<define-regex id="string-keyword" extended="true">
\%{js:keyword-start} string \%{js:keyword-end}
</define-regex> <!-- /string-keyword -->
<define-regex id="symbol-keyword" extended="true">
\%{js:keyword-start} symbol \%{js:keyword-end}
</define-regex> <!-- /symbol-keyword -->
<define-regex id="type-keyword" extended="true">
\%{js:keyword-start} type \%{js:keyword-end}
</define-regex> <!-- /type-keyword -->
<define-regex id="undefined-keyword" extended="true">
\%{js:keyword-start} undefined \%{js:keyword-end}
</define-regex> <!-- /undefined-keyword -->
<define-regex id="unique-keyword" extended="true">
\%{js:keyword-start} unique \%{js:keyword-end}
</define-regex> <!-- /unique-keyword -->
<define-regex id="unknown-keyword" extended="true">
\%{js:keyword-start} unknown \%{js:keyword-end}
</define-regex> <!-- /unknown-keyword -->
<!-- no line terminator allowed between "abstract" and "class"
technically, there can be abstract class declarations but not
abstract class expressions -->
<define-regex id="class-expression-keyword" extended="true">
(?:
(?:
\%[ abstract \%]
\%{js:optional-whitespace-or-comments}
)?
\%[ class \%]
)
</define-regex> <!-- / -->
(?: \%{abstract-keyword} \%{js:optional-whitespace-or-comments} )?
\%{js:class-keyword}
</define-regex> <!-- /class-expression-keyword -->
<context id="js-ordered-string" once-only="true">
<start>\%{js:before-next-token}</start>
@@ -141,33 +243,84 @@
</include>
</context> <!-- /js-ordered-string -->
<!-- ## @ts-ignore comment pragma
<!-- ## @ts-ignore / @ts-expect-error comment pragma
// @ts-ignore
/* @ts-expect-error some reasons */
can be at the start of a double- or triple-slash comment
https://github.com/microsoft/TypeScript/blob/3c49fb0d9ffb67fd645835589d66687b4fb7543a/src/compiler/scanner.ts#L275
can also be on the last line of a multi-line comment
https://github.com/microsoft/TypeScript/blob/3c49fb0d9ffb67fd645835589d66687b4fb7543a/src/compiler/scanner.ts#L280
in both cases, the pragma should be at the start of the
line/comment, but in practice there can be code before the
comment (on the same line)
also the regexes don't test for a word break, so any characters
can immediately follow the pragmas
-->
<!-- can be double- or triple-slash
pragma must be at start of comment
technically, must be at the start of the line
https://github.com/microsoft/TypeScript/blob/e82d0af554d96738b2e8c7f9027e53ac8bc31007/src/compiler/program.ts#L2
-->
<context id="_ts-ignore-comment-pragmas" style-ref="js:directive" end-at-line-end="true" class="comment">
<start extended="true">
///? \%{js:whitespace}* @ts-ignore \%]
</start>
<include>
<context ref="js:_comment-content"/>
</include>
</context> <!-- /_ts-ignore-comment-pragmas -->
<define-regex id="_ts-ignore-comment-pragma" extended="true">
@ (?: ts-expect-error | ts-ignore )
</define-regex> <!-- /_ts-ignore-comment-pragma -->
<context id="_ts-ignore-comment-pragmas-no-extend-parent" style-ref="js:directive" end-at-line-end="true" class="comment" extend-parent="false">
<context id="_ts-ignore-comment-pragma" style-ref="js:directive" class="no-spell-check" once-only="true">
<match>\%{_ts-ignore-comment-pragma}</match>
</context> <!-- /_ts-ignore-comment-pragma -->
<context id="_ts-ignore-comment-pragma-single-line-comments" style-ref="js:directive" end-at-line-end="true" class-disabled="no-spell-check" class="comment">
<start extended="true">
///? \%{js:whitespace}* @ts-ignore \%]
// (?= /? \s* \%{_ts-ignore-comment-pragma} )
</start>
<include>
<context ref="js:_comment-content"/>
<context ref="_ts-ignore-comment-pragma"/>
<context ref="js:_single-line-comment-content"/>
</include>
</context> <!-- /_ts-ignore-comment-pragmas-no-extend-parent -->
</context> <!-- /_ts-ignore-comment-pragma-single-line-comments -->
<context id="_ts-ignore-comment-pragma-single-line-comments-no-extend-parent" style-ref="js:directive" end-at-line-end="true" class-disabled="no-spell-check" class="comment" extend-parent="false">
<start extended="true">
// (?= /? \s* \%{_ts-ignore-comment-pragma} )
</start>
<include>
<context ref="_ts-ignore-comment-pragma"/>
<context ref="js:_single-line-comment-content"/>
</include>
</context> <!-- /_ts-ignore-comment-pragma-single-line-comments-no-extend-parent -->
<context id="_ts-ignore-comment-pragmas-multiline-comments" style-ref="js:directive" class-disabled="no-spell-check" class="comment">
<start extended="true">
/\* (?= /* \** \s* \%{_ts-ignore-comment-pragma} .*? \*/ )
</start>
<end>\*/</end>
<include>
<context ref="_ts-ignore-comment-pragma"/>
<context ref="_multiline-comment-content"/>
</include>
</context> <!-- /_ts-ignore-comment-pragmas-multiline-comments -->
<context id="_ts-ignore-comment-pragmas-multiline-comments-no-extend-parent" style-ref="js:directive" class-disabled="no-spell-check" class="comment" extend-parent="false">
<start extended="true">
/\* (?= /* \** \s* \%{_ts-ignore-comment-pragma} .*? \*/ )
</start>
<end>\*/</end>
<include>
<context ref="_ts-ignore-comment-pragma"/>
<context ref="_multiline-comment-content"/>
</include>
</context> <!-- /_ts-ignore-comment-pragmas-multiline-comments-no-extend-parent -->
<context id="_ts-ignore-comment-pragma-multiline-comment-last-line" once-only="true">
<start extended="true">
^ \s* /* \** \s* (?= \%{_ts-ignore-comment-pragma} .*? \*/ )
</start>
<end>\%{def:always-match}</end>
<include>
<context ref="_ts-ignore-comment-pragma"/>
</include>
</context> <!-- /_ts-ignore-comment-pragma-multiline-comment-last-line -->
<!-- ## @ts-nocheck comment pragma
@@ -175,42 +328,63 @@
can only be preceded by comments or other triple-slash
directives (i.e. at the top of a file)
appears to be case-insensitive (cannot find code reference though)
case-insensitive ("i" modifier on regex)
https://github.com/microsoft/TypeScript/blob/3c49fb0d9ffb67fd645835589d66687b4fb7543a/src/services/classifier.ts#L768
-->
<context id="_ts-nocheck-comment-pragmas" style-ref="js:directive" end-at-line-end="true" class="comment">
<define-regex id="_ts-nocheck-comment-pragma" case-sensitive="false" extended="true">
@ts-nocheck (?! \S )
</define-regex> <!-- /_ts-nocheck-comment-pragma -->
<context id="_ts-nocheck-comment-pragma-comments" style-ref="js:directive" end-at-line-end="true" class-disabled="no-spell-check" class="comment">
<start case-sensitive="false" extended="true">
///? \s* @ts-nocheck \%]
// (?= /? \s* \%{_ts-nocheck-comment-pragma} )
</start>
<include>
<context ref="js:_comment-content"/>
<context id="_ts-nocheck-comment-pragma" class="no-spell-check" once-only="true">
<match>\%{_ts-nocheck-comment-pragma}</match>
</context> <!-- /_ts-nocheck-comment-pragma -->
<context ref="js:_single-line-comment-content"/>
</include>
</context> <!-- /_ts-nocheck-comment-pragmas -->
</context> <!-- /_ts-nocheck-comment-pragma-comments -->
<!-- ## Triple-slash directive
/// <reference path="..."
/// <reference path="..." />
can only be preceded by comments or other triple-slash
directives (i.e. at the top of a file)
appears to be case-insensitive
https://github.com/microsoft/TypeScript/blob/ef0cca7d12a320bc98cefebbf4d391de36003149/src/services/classifier.ts#L768
case-insensitive ("i" modifier on regex)
https://github.com/microsoft/TypeScript/blob/3c49fb0d9ffb67fd645835589d66687b4fb7543a/src/services/classifier.ts#L768
-->
<context id="_triple-slash-directives" style-ref="js:directive" end-at-line-end="true" class="comment">
<start case-sensitive="false" extended="true">
/// \%{js:whitespace}* &lt;
(
amd-module |
amd-dependency |
reference
)
\%{js:whitespace}
<define-regex id="_triple-slash-directive" case-sensitive="false" extended="true">
&lt;
(?: amd-module | amd-dependency | reference )
(?&gt;
(?:
\s+ |
(?&lt;= \s ) [\w-]+ \s* = \s* (?: '[^']*' | "[^"]*" )
)*
)
/&gt;
</define-regex> <!-- /_triple-slash-directive -->
<context id="_triple-slash-directive-comments" style-ref="js:directive" end-at-line-end="true" class-disabled="no-spell-check" class="comment">
<start extended="true">
/// (?= \s* \%{_triple-slash-directive} )
</start>
<include>
<context ref="js:_comment-content"/>
<context id="_triple-slash-directive" class="no-spell-check" once-only="true">
<match>\%{_triple-slash-directive}</match>
</context> <!-- /_triple-slash-directive -->
<context ref="js:_single-line-comment-content"/>
</include>
</context> <!-- /_triple-slash-directives -->
</context> <!-- /_triple-slash-directive-comments -->
<!-- ## Namespace name
@@ -225,7 +399,7 @@
<!-- <NamespaceName> -->
<context id="choice-namespace-name" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{def:always-match}</end>
<include>
<!-- no comments here -->
@@ -263,10 +437,36 @@
</include>
</context> <!-- /ordered-namespace-name -->
<!-- ## Private identifier (stage 3 proposal)
#identifier
-->
<!-- <PrivateIdentifier> -->
<context id="choice-private-identifier" end-parent="true">
<start>#(?=\%{js:identifier-start})</start>
<end>\%{def:always-match}</end>
<include>
<context sub-pattern="0" where="start" style-ref="js:identifier"/>
<!-- no comments here -->
<!-- do not extend the context by matching comments, which may
lead to multiple identifiers -->
<context ref="js:_identifier-name-content"/>
</include>
</context> <!-- /choice-private-identifier -->
<context id="ordered-private-identifier" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="choice-private-identifier"/>
</include>
</context> <!-- /ordered-private-identifier -->
<!-- ## Constructor modifier -->
<context id="constructor-modifier" style-ref="type-keyword" once-only="true">
<keyword>new</keyword>
<match>\%{js:new-keyword}</match>
</context> <!-- /constructor-modifier -->
<context id="ordered-constructor-modifier" once-only="true">
@@ -316,44 +516,44 @@
</include>
</context> <!-- /ordered-definite-assignment-assertion -->
<!-- ## this parameter or assignment target -->
<!-- ## this parameter or binding -->
<context id="_this-parameter-or-assignment-target" once-only="true">
<context id="_this-parameter-or-binding" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
<context id="_this-parameter-or-assignment-target-content">
<context id="_this-parameter-or-binding-content">
<include>
<context id="_choice-this-parameter" style-ref="js:keyword" end-parent="true">
<keyword>this</keyword>
<match>\%{js:this-keyword}</match>
</context> <!-- /_choice-this-parameter -->
<context id="_js-choice-assignment-target" end-parent="true">
<context id="_js-choice-binding" end-parent="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:embedded-lang-hooks"/>
<context ref="js:comments"/>
<context ref="js:_assignment-target-content"/>
<context ref="js:_binding-content"/>
</include>
</context> <!-- /_js-choice-assignment-target -->
</context> <!-- /_js-choice-binding -->
</include>
</context> <!-- /_this-parameter-or-assignment-target-content -->
</context> <!-- /_this-parameter-or-binding-content -->
</include>
</context> <!-- /_this-parameter-or-assignment-target -->
</context> <!-- /_this-parameter-or-binding -->
<context id="ordered-this-parameter-or-assignment-target" once-only="true">
<context id="ordered-this-parameter-or-binding" once-only="true">
<start>\%{js:before-next-token}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="_this-parameter-or-assignment-target"/>
<context ref="_this-parameter-or-binding"/>
</include>
</context> <!-- /ordered-this-parameter-or-assignment-target -->
</context> <!-- /ordered-this-parameter-or-binding -->
<!-- ## Decorators
@@ -415,7 +615,7 @@
</context> <!-- /_decorator-dot-property-accessor-content -->
</include>
</context>
</context> <!-- /_decorator-dot-property-accessors -->
<context id="decorators" style-ref="decorator">
<start>@</start>
@@ -450,6 +650,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>
@@ -467,6 +669,7 @@
<context id="_choice-type-name-identifier-only" end-parent="true">
<start extended="true">
(?&lt;! \%{js:identifier-char} )
(?= (?&gt; \%{js:identifier} ) (?! \. ) )
</start>
<end>\%{def:always-match}</end>
@@ -485,7 +688,7 @@
</context> <!-- /_choice-type-name-identifier-only -->
<context id="_type-name" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{js:before-next-token}</end>
<include>
<!-- no comments here -->
@@ -552,7 +755,7 @@
</context> <!-- /_ordered-import-type-trailing-dot -->
<context id="_import-type" once-only="true">
<start>\%[import\%]</start>
<start>\%{js:import-keyword}</start>
<end>\%{js:before-next-token}</end>
<include>
<context sub-pattern="0" where="start" style-ref="type-keyword"/>
@@ -580,7 +783,7 @@
<!-- <TypeReference> -->
<context id="choice-type-reference" end-parent="true">
<start>(?=\%{js:identifier-start})</start>
<start>\%{js:identifier-container-start}</start>
<end>\%{js:before-next-token}</end>
<include>
<context ref="js:comments"/>
@@ -692,7 +895,6 @@
<context id="unknown-context-error-workaround">
<include>
<context ref="typescript-js-lit:choice-number"/>
<context ref="typescript-js-val:global-values"/>
<context ref="typescript-js-fn:function-parameters-content"/>
<context ref="typescript-js-expr:grouping-item-content"/>
<context ref="typescript-js-st:class-declarations"/>
@@ -705,32 +907,43 @@
<!-- ## General -->
<context id="_multiline-comment-content">
<include>
<context ref="_ts-ignore-comment-pragma-multiline-comment-last-line"/>
<context ref="js:_multiline-comment-content" original="true"/>
</include>
</context> <!-- /_multiline-comment-content -->
<context id="_comments">
<include>
<context ref="_ts-ignore-comment-pragmas"/>
<context ref="_ts-ignore-comment-pragma-single-line-comments"/>
<context ref="_ts-ignore-comment-pragmas-multiline-comments"/>
<context ref="js:comments" original="true"/>
</include>
</context> <!-- /_comments -->
<context id="_comments-no-extend-parent">
<include>
<context ref="_ts-ignore-comment-pragmas-no-extend-parent"/>
<context ref="_ts-ignore-comment-pragma-single-line-comments-no-extend-parent"/>
<context ref="_ts-ignore-comment-pragmas-multiline-comments-no-extend-parent"/>
<context ref="js:comments-no-extend-parent" original="true"/>
</include>
</context> <!-- /_comments-no-extend-parent -->
<replace id="js:_multiline-comment-content" ref="_multiline-comment-content"/>
<replace id="js:comments" ref="_comments"/>
<replace id="js:comments-no-extend-parent" ref="_comments-no-extend-parent"/>
<!-- ## Literals -->
<!-- ### Number -->
<replace id="js-lit:choice-number" ref="typescript-js-lit:choice-number"/>
<!-- ### Object literal -->
<!-- ## Values -->
<replace id="js-val:global-values" ref="typescript-js-val:global-values"/>
<replace id="js-lit:_choice-object-literal-keyword-named-property-or-method" ref="typescript-js-lit:choice-object-literal-keyword-named-property-or-method"/>
<!-- ## Functions and classes -->
@@ -743,7 +956,7 @@
<!-- ### Method definition -->
<replace id="js-fn:_method-definition-content" ref="typescript-js-fn:method-definition-content"/>
<replace id="js-fn:choice-method-definition" ref="typescript-js-fn:choice-method-definition"/>
<!-- ### Class expression -->
@@ -769,6 +982,8 @@
<!-- ### Post-primary expression -->
<replace id="js-expr:_dot-property-accessor-content" ref="typescript-js-expr:dot-property-accessor-content"/>
<replace id="js-expr:_optional-chain-content" ref="typescript-js-expr:optional-chain-content"/>
<replace id="js-expr:_post-primary-expression" ref="typescript-js-expr:post-primary-expression"/>
<!-- ### Pre-LHS expression -->
@@ -806,16 +1021,15 @@
<!-- ### Import declaration -->
<replace id="js-mod:_import-default-content" ref="typescript-js-mod:import-default-content"/>
<replace id="js-mod:import-declarations" ref="typescript-js-mod:import-declarations"/>
<replace id="js-mod:_import-declaration-content" ref="typescript-js-mod:import-declaration-content"/>
<!-- # Main context -->
<context id="typescript" class="no-spell-check">
<include>
<context ref="_ts-nocheck-comment-pragmas"/>
<context ref="_triple-slash-directives"/>
<context ref="_ts-nocheck-comment-pragma-comments"/>
<context ref="_triple-slash-directive-comments"/>
<context ref="js:js"/>
</include>
</context> <!-- /typescript -->

View File

@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of GtkSourceView
Author: Wes <13hurdw@gmail.com>
Copyright (C) 2017, 2020
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, see <http://www.gnu.org/licenses/>.
-->
<language id="yara" name="YARA" version="2.0" _section="Other">
<metadata>
<property name="mimetypes">text/yara;text/x-yara</property>
<property name="globs">*.yara;*.yar</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
</metadata>
<styles>
<style id="comment" name="Comment" map-to="def:comment"/>
<style id="include" name="Include" map-to="def:preprocessor"/>
<style id="keyword" name="Keyword" map-to="def:keyword"/>
<style id="rule" name="Rule" map-to="def:function"/>
<style id="string" name="String" map-to="def:string"/>
<style id="escaped-character" name="Escaped Character" map-to="def:special-char"/>
<style id="decimal" name="Decimal number" map-to="def:decimal"/>
<style id="hexadecimal" name="Hexadecimal number" map-to="def:base-n-integer"/>
<style id="boolean" name="Boolean value" map-to="def:boolean"/>
<style id="error" name="Error" map-to="def:error"/>
</styles>
<definitions>
<context id="include" style-ref="include">
<keyword>include</keyword>
<!-- 'import' is currently in keywords-->
</context>
<define-regex id="escaped-character" extended="true">
\\( # leading backslash
[\\\"nt] | # escaped character
x[0-9A-Fa-f]{2} # hex char
)
</define-regex>
<context id="string" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
<start>"</start>
<end>"</end>
<include>
<context id="escaped-character" style-ref="escaped-character">
<match>\%{escaped-character}</match>
</context>
<context ref="def:line-continue"/>
</include>
</context>
<!-- Match on YARA hex string chars -->
<context id="hex-string" style-ref="hexadecimal">
<match extended="true">
(?&lt;![\w\.])
([a-fA-F0-9?]{2})+
(?![\w\.])
</match>
</context>
<context id="hexadecimal" style-ref="hexadecimal">
<match extended="true">
(?&lt;![\w\.])
0[xX][a-fA-F0-9]+
(?![\w\.])
</match>
</context>
<context id="invalid-hexadecimal" style-ref="error">
<match extended="true">
(?&lt;![\w\.])
0[xX][a-fA-F0-9]*[g-zG-Z][a-zA-Z0-9]*
(?![\w\.])
</match>
</context>
<context id="decimal" style-ref="decimal">
<match extended="true">
(?&lt;![\w\.])
(0|[1-9][0-9]*)
(?![\w\.])
</match>
</context>
<!-- 'rule' is also present in the 'keywords' context, but has a lower
priority, so 'rule' is highlighted even if the rule name doesn't match. -->
<context id="rule">
<match extended="true">
(rule)
\s+
([a-zA-Z_]\w{0,127})
</match>
<include>
<context sub-pattern="1" style-ref="keyword"/>
<context sub-pattern="2" style-ref="rule"/>
</include>
</context>
<context id="keywords" style-ref="keyword">
<keyword>all</keyword>
<keyword>and</keyword>
<keyword>any</keyword>
<keyword>ascii</keyword>
<keyword>at</keyword>
<keyword>base64</keyword>
<keyword>base64wide</keyword>
<keyword>condition</keyword>
<keyword>contains</keyword>
<keyword>entrypoint</keyword> <!-- being deprecated-->
<keyword>filesize</keyword>
<keyword>for</keyword>
<keyword>fullword</keyword>
<keyword>global</keyword>
<keyword>import</keyword>
<keyword>in</keyword>
<keyword>int8</keyword>
<keyword>int16</keyword>
<keyword>int32</keyword>
<keyword>int8be</keyword>
<keyword>int16be</keyword>
<keyword>int32be</keyword>
<keyword>matches</keyword>
<keyword>meta</keyword>
<keyword>nocase</keyword>
<keyword>not</keyword>
<keyword>or</keyword>
<keyword>of</keyword>
<keyword>private</keyword>
<keyword>rule</keyword>
<keyword>strings</keyword>
<keyword>them</keyword>
<keyword>uint8</keyword>
<keyword>uint16</keyword>
<keyword>uint32</keyword>
<keyword>uint8be</keyword>
<keyword>uint16be</keyword>
<keyword>uint32be</keyword>
<keyword>wide</keyword>
<keyword>xor</keyword>
</context>
<context id="boolean" style-ref="boolean">
<keyword>true</keyword>
<keyword>false</keyword>
</context>
<!--Main context-->
<context id="yara" class="no-spell-check">
<include>
<context ref="def:c-like-comment" style-ref="comment"/>
<context ref="def:c-like-comment-multiline" style-ref="comment"/>
<context ref="def:c-like-close-comment-outside-comment" style-ref="comment"/>
<context ref="include"/>
<context ref="string"/>
<context ref="hex-string"/>
<context ref="hexadecimal"/>
<context ref="invalid-hexadecimal"/>
<context ref="decimal"/>
<context ref="rule"/>
<context ref="keywords"/>
<context ref="boolean"/>
</include>
</context>
</definitions>
</language>

View File

@@ -33,6 +33,7 @@
<color name="base1" value="#93A1A1"/>
<color name="base2" value="#EEE8D5"/>
<color name="base3" value="#FDF6E3"/>
<color name="base4" value="#C8CCC2"/>
<color name="yellow" value="#B58900"/>
<color name="orange" value="#CB4B16"/>
<color name="red" value="#DC322F"/>
@@ -51,6 +52,7 @@
<style name="current-line" background="base2"/>
<style name="line-numbers" foreground="base1" background="base2"/>
<style name="background-pattern" background="base3-2-blend"/>
<style name="draw-spaces" foreground="base4"/>
<!-- Bracket Matching -->
<style name="bracket-match" foreground="base3" background="base1"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 B

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 466 B

After

Width:  |  Height:  |  Size: 519 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 644 B

After

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 B

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 B

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 557 B

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 641 B

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 715 B

After

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 B

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 854 B

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Some files were not shown because too many files have changed in this diff Show More