diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,60 @@
 
+50200.8.0
+=========
+
+New features:
+ * Support for Personal Access Tokens and OAuth tokens was added. To
+   take advantage of this feature, paste either type of token in the
+   new "Access Token" field of the login user interface or set up the
+   new `tokencmd` configuration file setting. See the "Authentication"
+   section of the README for help and see `docs/sample-config.ini` for
+   documentation on `tokencmd`. Thanks to @ftilde for early work on this
+   feature!
+ * The attribute used to render the current user's username can now be
+   customized. By default the attribute still uses the same color as
+   before (chosen based on the username) but is bold. The new theme
+   attribute `currentUser` can be customized just like other attributes;
+   for details, see `/help themes`.
+ * The `focus-next-unread` (default: `M-a`) and
+   `focus-next-unread-user-or-channel` (default: no binding) events can
+   now be repeatedly triggered to cycle through channels with unread
+   activity and then return to the original channel where you started,
+   which is now marked with `~` in the channel sidebar.
+ * Matterhorn got a new `--check-config` argument that triggers a
+   configuration file validation check (thanks @glguy).
+ * The Matterhorn login user interface was greatly improved and
+   simplified. Now, instead of providing individual fields for server
+   hostname and port, the user interface provides a single "Server URL"
+   field that is capable of accepting server hostnames with or without
+   ports as well as full Mattermost web client browser URLs, complete
+   with team names and URL paths. This adds support for servers that run
+   at URL paths other than "/" and auto-detects teams in URLs to improve
+   the web client user's migration experience. As part of this change,
+   the configuration got a new setting, `urlPath`, that corresponds to
+   the URL path of the server URL in the login interface. Thanks, @glguy
+   and @immindich!
+
+Other improvements:
+ * The XML syntax highlighting descriptions were updated.
+ * Channels with unread join or leave messages now appear as unread in
+   the sidebar as intended.
+ * The format-specific command-line options for markdown and plain text
+   for generated command and keybinding tables were merged. The old
+   interface was:
+
+   * `-k`/`-K` to output configured keybindings in plain and markdown
+     formats, respectively
+   * `-m`/`-M` to output commands in plain and markdown formats,
+     respectively
+
+   And the new interface is:
+
+   * `-f` to set the output format (default: plain)
+   * `-k` to output configured keybindings in the active format
+   * `-m` to output commands in the active format
+ * The macOS example notification script was improved (thanks Geir
+   Skjotskift)
+
 50200.7.0
 =========
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -35,15 +35,71 @@
     $ matterhorn --help
     $ matterhorn
 
-When you run Matterhorn you'll be prompted for your server information
-and credentials. At present `matterhorn` supports only username/password
-authentication.
+When you run Matterhorn you'll be prompted for your server URL and
+credentials. To connect, just paste your web client's Mattermost URL
+into the Server URL box and enter your credentials. See the next section
+on the details for providing each kind of supported credentials.
 
 Note: Version `ABBCC.X.Y` matches Mattermost server version `A.BB.CC`.
 For example, if your Mattermost server version is `3.6.0` then you
 would download matterhorn version `30600.2.4`. See [Our Versioning
 Scheme](#our-versioning-scheme) for details.
 
+# Authentication
+
+`matterhorn` supports username/password authentication as well as
+authentication by Personal Access Token or session token. The following
+subsections provide details on using each method.
+
+## Username / Password Authentication
+
+Matterhorn's start-up login user interface will allow you to provide
+a username and password for authentication. We recommend that you
+put the username in your Matterhorn configuration file and configure
+Matterhorn to obtain your password from your system keychain. See the
+`docs/sample-config.ini` file for documentation on the `user` and
+`passcmd` settings, respectively.
+
+## Personal Access Token Authentication
+
+Matterhorn's start-up login user interface will also allow you to
+provide an session or Personal Access Token. If a token is provided, it
+will take precedence over a username and password.
+
+We recommend Personal Access Tokens because they don't expire except
+when revoked. To use a Personal Access Token:
+
+* Ask your Mattermost server administrator to enable Personal Access
+  Tokens on your Mattermost account.
+* Create a Personal Access Token.
+* Add the new token to your system keychain. (Details on how to do this
+  depend on your platform.)
+* Configure Matterhorn's `tokencmd` configuration option to query the
+  system keychain to get the token. See `docs/sample-config.ini` for
+  examples of how to do this with `passcmd` and `tokencmd`.
+
+The steps for configuring Personal Access Tokens can be found in [the
+Mattermost documentation](https://docs.mattermost.com/developer/personal-access-tokens.html).
+
+## Token Cookie Authentication
+
+If your server does not support username and password authentication
+(e.g. if GitLab authentication is the only supported method), you can
+use your browser client's token cookie to authenticate:
+
+* Authenticate to GitLab (or other identity provider) using the
+  Mattermost web client.
+* Once your browser has returned to the Mattermost interace, obtain the
+  value of the `MMAUTHTOKEN` browser cookie.
+* Start Matterhorn and enter the value of the `MMAUTHTOKEN` token in the
+  login interface field labeled `Access token:` or add the token to the
+  system keychain as described above.
+
+Please note that unlike a Personal Access Token, the web client's token
+cookie will expire, so these steps will need to be repeated each time
+you log in with Matterhorn. As a result, we strongly recommend the use
+of a Personal Access Token instead if at all possible.
+
 # Configuring
 
 For configuration options you have two choices:
@@ -79,14 +135,14 @@
 
 * The `/help` command within Matterhorn.
 * The `F1` key within Matterhorn.
-* Running matterhorn with the `-k` argument to get a text table of available keybindings.
-* Running matterhorn with the `-K` argument to get a [Markdown table of available keybindings](docs/keybindings.md).
-* Running matterhorn with the `-M` argument to get a [Markdown table of available commands](docs/commands.md).
+* Running matterhorn with the `-k` or `-m` arguments to get a text table of available keybindings or commands respectively.
+* Running matterhorn with the `-k` or `-m` arguments with `-f markdown` to get a [Markdown table of available keybindings](docs/keybindings.md) or [Markdown table of available commands](docs/commands.md).
 
-    Note: The latter three commands do not start the client but simply
-    print to stdout and exit. The keybindings shown include any user
-    overrides from the config files; use the `-i` flag to skip loading
-    the local config files and see the Matterhorn default keybindings.
+    Note: The keyboard and command output commands do not start the
+    client but simply print to stdout and exit. The keybindings shown
+    include any user overrides from the config files; use the `-i`
+    flag to skip loading the local config files and see the Matterhorn
+    default keybindings.
 
 Keybindings may include modifiers such as Control (indicated with a
 `C-` prefix) or Meta (indicated with a `M-` prefix). If your keyboard
@@ -131,7 +187,11 @@
 the channel list with a "`<`" indicator.
 
 To switch to the next channel with unread messages, use the default
-binding `M-a`.
+binding `M-a`. Pressing `M-a` repeatedly will visit other channels with
+unread messages, and the channel you started in when first pressing
+`M-a` will be marked with `~` in the sidebar. Pressing `M-a` will return
+to that channel after other channels with unread messages have been
+visited.
 
 To quickly show a list of URLs mentioned in the current channel and then
 open one in your local browser, use the default binding of `C-o` and
@@ -167,6 +227,8 @@
 * Markdown rendering
 * Convenient URL-opening with local browser
 * Secure password entry via external command (e.g. OSX keychain)
+* Secure authentication token entry via external command (e.g. OSX
+  keychain)
 * Yank verbatim content from messages into the system clipboard
 * Optional live preview during message editing
 * Optional smart quoting for efficient Markdown entry
@@ -293,6 +355,9 @@
 If you decide to contribute, that's great! Here are some guidelines you
 should consider to make submitting patches easier for all concerned:
 
+ - Please base all patches against the `develop` branch unless you are
+   specifically fixing a bug in a released version, in which case
+   `master` is a fine place to start.
  - If you want to take on big things, let's have a design/vision
    discussion before you start coding. Create a GitHub issue and we can
    use that as the place to hash things out. We'll be interested to
@@ -307,10 +372,14 @@
 
 ## Does matterhorn support Gitlab authentication?
 
-No. But we would be happy to work with contributors who are interested
-in investigating what this would take and/or implementing it. See the
-Contributing section for details.
+Matterhorn supports GitLab authentication indirectly. In order to use
+Matterhorn with GitLab authentication, see the Authentication section on
+Matterhorn details for use of session tokens.
 
+## Does matterhorn support Mattermost Personal Access Tokens?
+
+Yes. See the Authentication section above.
+
 ## How can I get Matterhorn to render emphasized Markdown text with an italic font?
 
 In `~/.config/matterhorn/theme.ini`,
@@ -352,3 +421,23 @@
 terminal emulators. Results may vary, and use of emoji characters may
 cause terminal rendering issues depending on the terminal emulator in
 use.
+
+## I'm running Matterhorn in Tmux. How can I paste tmux buffers into Matterhorn's editor?
+
+By default, `tmux`'s `paste-buffer` binding, `prefix-]`, pastes buffer
+text by replaying it as terminal input. This will cause unwanted
+behavior when Matterhorn receives that text and sends out each input
+line as a separate message. But `tmux` supports bracketed paste mode
+to make a `tmux` paste a block of text as *one* Matterhorn message.
+It can be enabled by changing the behavior of `prefix-]` in the Tmux
+configuration:
+
+```
+unbind-key -T prefix ]
+bind-key -T prefix ] paste-buffer -p
+```
+
+## I'm using Mattermost through an Nginx proxy and I keep getting disconnected.
+
+You might need to adjust your Nginx proxy settings.
+For context, see [this potentially related report](https://github.com/matterhorn-chat/matterhorn/issues/578).
diff --git a/docs/commands.md b/docs/commands.md
--- a/docs/commands.md
+++ b/docs/commands.md
@@ -18,7 +18,7 @@
 | `/join <~channel>` | Join the specified channel |
 | `/leave` | Leave the current channel |
 | `/left` | Focus on the previous channel |
-| `/log-mark <log marking message>` | Add marker message to the current log |
+| `/log-mark <message>` | Add a custom marker message to the Matterhorn log |
 | `/log-snapshot <path>` | Dump the current log buffer to the specified path |
 | `/log-start <path>` | Begin logging to the specified path |
 | `/log-status` | Show current logging status |
diff --git a/docs/keybindings.md b/docs/keybindings.md
--- a/docs/keybindings.md
+++ b/docs/keybindings.md
@@ -25,7 +25,7 @@
 | `C-o` | `enter-url-open` | Select and open a URL posted to the current channel |
 | `M-s` | `focus-last-channel` | Change to the most recently-focused channel |
 | `C-n` | `focus-next-channel` | Change to the next channel in the channel list |
-| `M-a` | `focus-next-unread` | Change to the next channel with unread messages |
+| `M-a` | `focus-next-unread` | Change to the next channel with unread messages or return to the channel marked '~' |
 | `C-p` | `focus-prev-channel` | Change to the previous channel in the channel list |
 | `M-k` | `invoke-editor` | Invoke *$EDITOR* to edit the current message |
 | `PgUp` | `page-up` | Page up in the channel message list (enters message select mode) |
diff --git a/matterhorn.cabal b/matterhorn.cabal
--- a/matterhorn.cabal
+++ b/matterhorn.cabal
@@ -1,5 +1,5 @@
 name:                matterhorn
-version:             50200.7.0
+version:             50200.8.0
 synopsis:            Terminal client for the Mattermost chat system
 description:         This is a terminal client for the Mattermost chat
                      system. Please see the README for a list of
@@ -12,7 +12,7 @@
 category:            Chat
 build-type:          Simple
 cabal-version:       >= 1.18
-tested-with:         GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3
+tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3
 
 data-files:          syntax/*.xml
                      syntax/language.dtd
@@ -41,6 +41,7 @@
   hs-source-dirs:      src
   main-is:             Main.hs
   other-modules:       Config
+                       Config.Schema
                        Command
                        Connection
                        App
@@ -134,49 +135,50 @@
                        ScopedTypeVariables,
                        NoImplicitPrelude
   ghc-options:         -Wall -threaded -with-rtsopts=-I0 -Wcompat
-  build-depends:       base                 >=4.8     && <5
-                     , mattermost-api       == 50200.4.0
-                     , base-compat          >= 0.9    && < 0.11
-                     , unordered-containers >= 0.2    && < 0.3
-                     , containers           >= 0.5.7  && < 0.7
-                     , data-clist           >= 0.1.2  && < 0.2
-                     , semigroups           >= 0.18   && < 0.19
-                     , connection           >= 0.2    && < 0.4
-                     , text                 >= 1.2    && < 1.3
-                     , bytestring           >= 0.10   && < 0.11
-                     , stm                  >= 2.4    && < 2.6
+  build-depends:       base                 >=4.8      && <5
+                     , mattermost-api       == 50200.5.0
+                     , base-compat          >= 0.9     && < 0.12
+                     , unordered-containers >= 0.2     && < 0.3
+                     , containers           >= 0.5.7   && < 0.7
+                     , data-clist           >= 0.1.2   && < 0.2
+                     , semigroups           >= 0.18    && < 0.20
+                     , connection           >= 0.2     && < 0.4
+                     , text                 >= 1.2     && < 1.3
+                     , bytestring           >= 0.10    && < 0.11
+                     , stm                  >= 2.4     && < 2.6
                      , config-ini           >= 0.2.2.0 && < 0.3
-                     , process              >= 1.4    && < 1.7
-                     , microlens-platform   >= 0.3    && < 0.5
-                     , brick                >= 0.52   && < 0.53
-                     , brick-skylighting    >= 0.2    && < 0.4
-                     , vty                  >= 5.28   && < 5.29
-                     , word-wrap            >= 0.4.0  && < 0.5
-                     , transformers         >= 0.4    && < 0.6
-                     , text-zipper          >= 0.10   && < 0.11
-                     , time                 >= 1.6    && < 2.0
-                     , xdg-basedir          >= 0.2    && < 0.3
-                     , filepath             >= 1.4    && < 1.5
-                     , directory            >= 1.3    && < 1.4
+                     , process              >= 1.4     && < 1.7
+                     , microlens-platform   >= 0.3     && < 0.5
+                     , brick                >= 0.52.1  && < 0.53
+                     , brick-skylighting    >= 0.2     && < 0.4
+                     , vty                  >= 5.28    && < 5.29
+                     , word-wrap            >= 0.4.0   && < 0.5
+                     , transformers         >= 0.4     && < 0.6
+                     , text-zipper          >= 0.10    && < 0.11
+                     , time                 >= 1.6     && < 2.0
+                     , xdg-basedir          >= 0.2     && < 0.3
+                     , filepath             >= 1.4     && < 1.5
+                     , directory            >= 1.3     && < 1.4
                      , vector               < 0.13
-                     , strict               >= 0.3    && < 0.4
-                     , hashable             >= 1.2    && < 1.4
-                     , cheapskate           >= 0.1    && < 0.2
-                     , utf8-string          >= 1.0    && < 1.1
-                     , temporary            >= 1.2    && < 1.4
-                     , gitrev               >= 1.3    && < 1.4
-                     , Hclip                >= 3.0    && < 3.1
-                     , mtl                  >= 2.2    && < 2.3
-                     , aspell-pipe          >= 0.3    && < 0.4
-                     , stm-delay            >= 0.1    && < 0.2
+                     , strict               >= 0.3     && < 0.4
+                     , hashable             >= 1.2     && < 1.4
+                     , cheapskate           >= 0.1     && < 0.2
+                     , utf8-string          >= 1.0     && < 1.1
+                     , temporary            >= 1.2     && < 1.4
+                     , gitrev               >= 1.3     && < 1.4
+                     , Hclip                >= 3.0     && < 3.1
+                     , mtl                  >= 2.2     && < 2.3
+                     , aspell-pipe          >= 0.4     && < 0.5
+                     , stm-delay            >= 0.1     && < 0.2
                      , unix                 >= 2.7.1.0 && < 2.7.3.0
-                     , skylighting-core     >= 0.7    && < 0.9
+                     , skylighting-core     >= 0.8     && < 0.9
                      , timezone-olson       >= 0.1.7   && < 0.2
                      , timezone-series      >= 0.1.6.1 && < 0.2
                      , aeson                >= 1.2.3.0 && < 1.5
                      , async                >= 2.2     && < 2.3
                      , uuid                 >= 1.3     && < 1.4
                      , random               >= 1.1     && < 1.2
+                     , network-uri          >= 2.6     && < 2.7
   default-language:    Haskell2010
 
 test-suite test_messages
@@ -196,41 +198,41 @@
                     , ScopedTypeVariables
   ghc-options:        -Wall -fno-warn-orphans -Wcompat
   hs-source-dirs:     src, test
-  build-depends:      base                 >=4.7     && <5
-                    , base-compat          >= 0.9    && < 0.11
-                    , brick                >= 0.52   && < 0.53
-                    , bytestring           >= 0.10   && < 0.11
-                    , cheapskate           >= 0.1    && < 0.2
-                    , checkers             >= 0.4    && < 0.6
+  build-depends:      base                 >=4.7      && <5
+                    , base-compat          >= 0.9     && < 0.12
+                    , brick                >= 0.52.1  && < 0.53
+                    , bytestring           >= 0.10    && < 0.11
+                    , cheapskate           >= 0.1     && < 0.2
+                    , checkers             >= 0.4     && < 0.6
                     , config-ini           >= 0.2.2.0 && < 0.3
-                    , connection           >= 0.2    && < 0.4
-                    , containers           >= 0.5.7  && < 0.7
-                    , directory            >= 1.3    && < 1.4
-                    , filepath             >= 1.4    && < 1.5
-                    , hashable             >= 1.2    && < 1.4
-                    , Hclip                >= 3.0    && < 3.1
-                    , mattermost-api       == 50200.4.0
-                    , mattermost-api-qc    == 50200.4.0
-                    , microlens-platform   >= 0.3    && < 0.5
-                    , mtl                  >= 2.2    && < 2.3
-                    , process              >= 1.4    && < 1.7
-                    , quickcheck-text      >= 0.1    && < 0.2
-                    , stm                  >= 2.4    && < 2.6
-                    , strict               >= 0.3    && < 0.4
-                    , string-conversions   >= 0.4    && < 0.5
-                    , tasty                >= 0.11   && < 1.3
-                    , tasty-hunit          >= 0.9    && < 0.12
-                    , tasty-quickcheck     >= 0.8    && < 0.12
-                    , text                 >= 1.2    && < 1.3
-                    , text-zipper          >= 0.10   && < 0.11
-                    , time                 >= 1.6    && < 2.0
-                    , timezone-olson       >= 0.1.7  && < 0.2
+                    , connection           >= 0.2     && < 0.4
+                    , containers           >= 0.5.7   && < 0.7
+                    , directory            >= 1.3     && < 1.4
+                    , filepath             >= 1.4     && < 1.5
+                    , hashable             >= 1.2     && < 1.4
+                    , Hclip                >= 3.0     && < 3.1
+                    , mattermost-api       == 50200.5.0
+                    , mattermost-api-qc    == 50200.5.0
+                    , microlens-platform   >= 0.3     && < 0.5
+                    , mtl                  >= 2.2     && < 2.3
+                    , process              >= 1.4     && < 1.7
+                    , quickcheck-text      >= 0.1     && < 0.2
+                    , stm                  >= 2.4     && < 2.6
+                    , strict               >= 0.3     && < 0.4
+                    , string-conversions   >= 0.4     && < 0.5
+                    , tasty                >= 0.11    && < 1.3
+                    , tasty-hunit          >= 0.9     && < 0.12
+                    , tasty-quickcheck     >= 0.8     && < 0.12
+                    , text                 >= 1.2     && < 1.3
+                    , text-zipper          >= 0.10    && < 0.11
+                    , time                 >= 1.6     && < 2.0
+                    , timezone-olson       >= 0.1.7   && < 0.2
                     , timezone-series      >= 0.1.6.1 && < 0.2
-                    , transformers         >= 0.4    && < 0.6
-                    , Unique               >= 0.4    && < 0.5
-                    , unordered-containers >= 0.2    && < 0.3
+                    , transformers         >= 0.4     && < 0.6
+                    , Unique               >= 0.4     && < 0.5
+                    , unordered-containers >= 0.2     && < 0.3
                     , vector               <  0.13
-                    , vty                  >= 5.28   && < 5.29
-                    , xdg-basedir          >= 0.2    && < 0.3
-                    , semigroups           >= 0.18   && < 0.19
-                    , uuid                 >= 1.3    && < 1.4
+                    , vty                  >= 5.28    && < 5.29
+                    , xdg-basedir          >= 0.2     && < 0.3
+                    , semigroups           >= 0.18    && < 0.20
+                    , uuid                 >= 1.3     && < 1.4
diff --git a/notification-scripts/notify b/notification-scripts/notify
--- a/notification-scripts/notify
+++ b/notification-scripts/notify
@@ -56,5 +56,5 @@
 if [ ! -z "$urgency" ]
 then
     test "$urgency" = "none" ||
-        notify-send -u "$urgency" -c "$notify_CATEGORY" "$notify_HEAD" "$notify_BODY"
+        notify-send -u "$urgency" -c "$notify_CATEGORY" -- "$notify_HEAD" "$notify_BODY"
 fi
diff --git a/src/Command.hs b/src/Command.hs
--- a/src/Command.hs
+++ b/src/Command.hs
@@ -176,8 +176,8 @@
     NoArg $ \ () ->
         stopLogging
 
-  , Cmd "log-mark" "Add marker message to the current log"
-    (LineArg "log marking message") $ \ markMsg ->
+  , Cmd "log-mark" "Add a custom marker message to the Matterhorn log"
+    (LineArg "message") $ \ markMsg ->
         mhLog LogUserMark markMsg
 
   , Cmd "log-status" "Show current logging status"
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -5,8 +5,8 @@
   ( Config(..)
   , PasswordSource(..)
   , findConfig
-  , getCredentials
   , defaultConfig
+  , configConnectionType
   )
 where
 
@@ -15,8 +15,7 @@
 
 import           Control.Monad.Trans.Except
 import           Control.Monad.Trans.Class ( lift )
-import           Control.Monad.IO.Class ( liftIO )
-import           Data.Ini.Config
+import           Config.Schema
 import qualified Data.Map.Strict as M
 import qualified Data.Text as T
 import qualified Data.Text.IO as T
@@ -24,6 +23,7 @@
 import           System.Environment ( getExecutablePath )
 import           System.FilePath ( (</>), takeDirectory, splitPath, joinPath )
 import           System.Process ( readProcess )
+import           Network.Mattermost.Types (ConnectionType(..))
 
 import           FilePaths
 import           IOUtil
@@ -71,6 +71,7 @@
     configHost           <- fieldMbOf "host" stringField
     configTeam           <- fieldMbOf "team" stringField
     configPort           <- fieldDefOf "port" number (configPort defaultConfig)
+    configUrlPath        <- fieldMbOf "urlPath" stringField
     configChannelListWidth <- fieldDefOf "channelListWidth" number
                               (configChannelListWidth defaultConfig)
     configCpuUsagePolicy <- fieldDefOf "cpuUsagePolicy" cpuUsagePolicy
@@ -104,9 +105,11 @@
       (configActivityBell defaultConfig)
     configHyperlinkingMode <- fieldFlagDef "hyperlinkURLs"
       (configHyperlinkingMode defaultConfig)
-    configPass <- (Just . PasswordCommand <$> field "passcmd") <|>
-                  (Just . PasswordString  <$> field "pass") <|>
+    configPass <- (Just . PasswordCommand <$> field "passcmd") <!>
+                  (Just . PasswordString  <$> field "pass") <!>
                   pure Nothing
+    configToken <- (Just . TokenCommand  <$> field "tokencmd") <!>
+                  pure Nothing
     configUnsafeUseHTTP <-
       fieldFlagDef "unsafeUseUnauthenticatedConnection" False
     configValidateServerCertificate <-
@@ -152,13 +155,13 @@
         "multiple" -> return MultipleCPUs
         _ -> Left $ "Invalid CPU usage policy value: " <> show t
 
-stringField :: Text -> Either String Text
+stringField :: Text -> Either e Text
 stringField t =
     case isQuoted t of
         True -> Right $ parseQuotedString t
         False -> Right t
 
-filePathField :: Text -> Either String FilePath
+filePathField :: Text -> Either e FilePath
 filePathField t = let path = T.unpack t in Right path
 
 parseQuotedString :: Text -> Text
@@ -182,7 +185,9 @@
            , configHost                        = Nothing
            , configTeam                        = Nothing
            , configPort                        = defaultPort
+           , configUrlPath                     = Nothing
            , configPass                        = Nothing
+           , configToken                       = Nothing
            , configTimeFormat                  = Nothing
            , configDateFormat                  = Nothing
            , configTheme                       = Nothing
@@ -211,14 +216,19 @@
            , configDefaultAttachmentPath       = Nothing
            }
 
-findConfig :: Maybe FilePath -> IO (Either String Config)
+findConfig :: Maybe FilePath -> IO (Either String ([String], Config))
 findConfig Nothing = runExceptT $ do
     cfg <- lift $ locateConfig configFileName
-    fixupPaths =<< case cfg of
-        Nothing -> return defaultConfig
+    (warns, config) <-
+      case cfg of
+        Nothing -> return ([], defaultConfig)
         Just path -> getConfig path
+    config' <- fixupPaths config
+    return (warns, config')
 findConfig (Just path) =
-    runExceptT $ fixupPaths =<< getConfig path
+    runExceptT $ do (warns, config) <- getConfig path
+                    config' <- fixupPaths config
+                    return (warns, config')
 
 -- | Fix path references in the configuration:
 --
@@ -255,7 +265,7 @@
 
         return $ c { configSyntaxDirs = newDirs }
 
-getConfig :: FilePath -> ExceptT String IO Config
+getConfig :: FilePath -> ExceptT String IO ([String], Config)
 getConfig fp = do
     absPath <- convertIOException $ makeAbsolute fp
     t <- (convertIOException $ T.readFile absPath) `catchE`
@@ -274,8 +284,8 @@
 
     case parseIniFile t' fromIni of
         Left err -> do
-            throwE $ "Unable to parse " ++ absPath ++ ":" ++ err
-        Right conf -> do
+            throwE $ "Unable to parse " ++ absPath ++ ":" ++ fatalString err
+        Right (warns, conf) -> do
             actualPass <- case configPass conf of
                 Just (PasswordCommand cmdString) -> do
                     let (cmd:rest) = T.unpack <$> T.words cmdString
@@ -285,23 +295,23 @@
                 Just (PasswordString pass) -> return $ Just pass
                 Nothing -> return Nothing
 
-            return conf { configPass = PasswordString <$> actualPass
-                        , configAbsPath = Just absPath
-                        }
+            actualToken <- case configToken conf of
+                Just (TokenCommand cmdString) -> do
+                    let (cmd:rest) = T.unpack <$> T.words cmdString
+                    output <- convertIOException (readProcess cmd rest "") `catchE`
+                              (\e -> throwE $ "Could not execute token command: " <> e)
+                    return $ Just $ T.pack (takeWhile (/= '\n') output)
+                Just (TokenString _) -> error $ "BUG: getConfig: token in the Config was already a TokenString"
+                Nothing -> return Nothing
 
--- | Returns the hostname, username, and password from the config. Only
--- returns Just if all three have been provided. The idea is that if
--- this returns Nothing, we're missing at least some of these values.
-getCredentials :: Config -> Maybe ConnectionInfo
-getCredentials config = do
-    pass <- configPass config
-    passStr <- case pass of
-        PasswordString p -> return p
-        PasswordCommand _ ->
-            error $ "BUG: unexpected credentials state: " <>
-                    show (configPass config)
+            let conf' = conf
+                  { configPass = PasswordString <$> actualPass
+                  , configToken = TokenString <$> actualToken
+                  , configAbsPath = Just absPath
+                  }
+            return (map warningString warns, conf')
 
-    ConnectionInfo <$> configHost config
-                   <*> (pure $ configPort config)
-                   <*> configUser config
-                   <*> (pure passStr)
+configConnectionType :: Config -> ConnectionType
+configConnectionType config
+  | configUnsafeUseHTTP config = ConnectHTTP
+  | otherwise = ConnectHTTPS (configValidateServerCertificate config)
diff --git a/src/Config/Schema.hs b/src/Config/Schema.hs
new file mode 100644
--- /dev/null
+++ b/src/Config/Schema.hs
@@ -0,0 +1,203 @@
+{- |
+
+This module provides an INI schema validator that is able to track unused
+sections and fields in order to report warning messages to the user.
+
+
+ -}
+module Config.Schema
+  ( IniParser
+  , parseIniFile
+  , (<!>)
+
+  , Fatal(..)
+  , fatalString
+
+  , Warning(..)
+  , warningString
+
+  , section
+  , sectionMb
+  , fieldMbOf
+  , fieldMb
+  , field
+  , fieldDefOf
+  , fieldFlagDef
+
+  -- * Re-exports
+  , number
+  , string
+  , listWithSeparator
+  ) where
+
+import           Prelude ()
+import           Prelude.MH
+
+import           Data.Map (Map)
+import qualified Data.Map as Map
+import           Data.List.NonEmpty (NonEmpty)
+import qualified Data.List.NonEmpty as NonEmpty
+import qualified Data.Text as T
+import           Control.Monad
+import           Data.Ini.Config (flag, number, listWithSeparator, string)
+import           Data.Ini.Config.Raw
+
+
+------------------------------------------------------------------------
+
+newtype Parser e t a = Parser { unParser :: e -> Map NormalizedText (NonEmpty t) -> Either Fatal (Map NormalizedText (NonEmpty t), [Warning], a) }
+
+instance Functor (Parser e t) where
+  fmap = liftM
+
+instance Applicative (Parser e t) where
+  pure x = Parser $ \_ s -> Right (s, [], x)
+  (<*>) = ap
+
+instance Monad (Parser e t) where
+  m >>= f = Parser $ \e s0 ->
+              do (s1, ws1, x1) <- unParser m e s0
+                 (s2, ws2, x2) <- unParser (f x1) e s1
+                 Right (s2, ws1++ws2, x2)
+
+
+
+(<!>) :: Parser e t a -> Parser e t a -> Parser e t a
+p <!> q = Parser $ \e s ->
+  case unParser p e s of
+    Right r -> Right r
+    Left {} -> unParser q e s
+
+getenv :: Parser e t e
+getenv = Parser $ \e s -> Right (s, [], e)
+
+request :: Text -> Parser e t (Maybe t)
+request name = Parser $ \_ s ->
+  let name' = normalize name in
+  Right $!
+  case Map.lookup name' s of
+    Nothing                 -> (s , [], Nothing)
+    Just (x NonEmpty.:| xs) -> (s', [], Just x)
+      where
+        s' = case NonEmpty.nonEmpty xs of
+               Nothing -> Map.delete name' s
+               Just ne -> Map.insert name' ne s
+
+fatal :: Fatal -> Parser e t a
+fatal e = Parser $ \_ _ -> Left e
+
+warnings :: [Warning] -> IniParser ()
+warnings ws = Parser $ \_ s -> Right (s, ws, ())
+
+------------------------------------------------------------------------
+
+type IniParser = Parser RawIni IniSection
+
+type SectionParser = Parser IniSection IniValue
+
+data Fatal
+  = NoSection Text
+  | MissingField IniSection Text
+  | BadField IniSection IniValue String
+  | ParseError String
+  deriving Show
+
+data Warning
+  = UnusedSection IniSection
+  | UnusedField IniSection IniValue
+  deriving Show
+
+------------------------------------------------------------------------
+
+fatalString :: Fatal -> String
+fatalString (NoSection name) = "No top-level section named " ++ show name
+fatalString (MissingField sec name) = "Missing field " ++ show name ++ " in section " ++ show (isName sec)
+fatalString (BadField sec val err) =
+  "Line " ++ show (vLineNo val) ++
+  " in section " ++ show (isName sec) ++
+  ": " ++ err
+fatalString (ParseError err) = err
+
+warningString :: Warning -> String
+warningString (UnusedSection sec) = "Unused section " ++ show (isName sec)
+warningString (UnusedField sec val) =
+  "Line " ++ show (vLineNo val) ++
+  " in section " ++ show (isName sec) ++
+  ": unused field"
+
+------------------------------------------------------------------------
+
+parseIniFile :: Text -> IniParser a -> Either Fatal ([Warning], a)
+parseIniFile text parser =
+  case parseRawIni text of
+    Left e -> Left (ParseError e)
+    Right ini ->
+      let entries = Map.fromListWith (<>)
+                       [ (k, pure v) | (k,v) <- toList (fromRawIni ini) ]
+      in
+      case unParser parser ini entries of
+        Left e -> Left e
+        Right (entries', ws, x) -> Right (ws ++ unused, x)
+          where
+            unused = [ UnusedSection e | e <- concatMap toList entries' ]
+
+------------------------------------------------------------------------
+
+section :: Text -> SectionParser a -> IniParser a
+section name parser =
+  do mb <- sectionMb name parser
+     case mb of
+       Nothing -> fatal (NoSection name)
+       Just x  -> pure x
+
+sectionMb :: Text -> SectionParser a -> IniParser (Maybe a)
+sectionMb name parser =
+  do mb <- request name
+     case mb of
+       Nothing -> pure Nothing
+       Just sec ->
+         let entries = Map.fromListWith (<>)
+                       [ (k, pure v) | (k,v) <- toList (isVals sec) ]
+         in
+         case unParser parser sec entries of
+           Left e -> fatal e
+           Right (entries', ws, result) ->
+             do warnings (ws ++ [ UnusedField sec v | v <- concatMap toList entries' ])
+                pure (Just result)
+
+------------------------------------------------------------------------
+
+field :: Text -> SectionParser Text
+field name =
+  do mb <- fieldMb name
+     case mb of
+       Just x -> pure x
+       Nothing ->
+         do s <- getenv
+            fatal (MissingField s name)
+
+fieldMbOf :: Text -> (Text -> Either String a) -> SectionParser (Maybe a)
+fieldMbOf name validate =
+  do mb <- request name
+     case mb of
+       Nothing -> pure Nothing
+       Just val ->
+         case validate (getVal val) of
+           Left e ->
+             do sec <- getenv
+                fatal (BadField sec val e)
+           Right x -> pure (Just x)
+
+fieldMb :: Text -> SectionParser (Maybe Text)
+fieldMb name = fmap getVal <$> request name
+
+fieldDefOf :: Text -> (Text -> Either String a) -> a -> SectionParser a
+fieldDefOf name validate def = fromMaybe def <$> fieldMbOf name validate
+
+fieldFlagDef :: Text -> Bool -> SectionParser Bool
+fieldFlagDef name def = fieldDefOf name flag def
+
+------------------------------------------------------------------------
+
+getVal :: IniValue -> Text
+getVal = T.strip . vValue
diff --git a/src/Draw/Autocomplete.hs b/src/Draw/Autocomplete.hs
--- a/src/Draw/Autocomplete.hs
+++ b/src/Draw/Autocomplete.hs
@@ -48,6 +48,7 @@
         footer = case renderAutocompleteFooterFor curChan =<< selElem of
             Just w -> hBorderWithLabel w
             _ -> hBorder
+        curUser = myUsername st
 
     in if numResults == 0
        then emptyWidget
@@ -60,7 +61,7 @@
            render $ translateBy (Location (0, rowOffset)) $
                     vBox [ hBorderWithLabel label
                          , vLimit visibleHeight $
-                           renderList renderAutocompleteAlternative True matchList
+                           renderList (renderAutocompleteAlternative curUser) True matchList
                          , footer
                          ]
 
@@ -83,18 +84,18 @@
                 ]
 renderAutocompleteFooterFor _ _ = Nothing
 
-renderAutocompleteAlternative :: Bool -> AutocompleteAlternative -> Widget Name
-renderAutocompleteAlternative sel (EmojiCompletion e) =
+renderAutocompleteAlternative :: Text -> Bool -> AutocompleteAlternative -> Widget Name
+renderAutocompleteAlternative _ sel (EmojiCompletion e) =
     padRight Max $ renderEmojiCompletion sel e
-renderAutocompleteAlternative sel (SpecialMention m) =
+renderAutocompleteAlternative _ sel (SpecialMention m) =
     padRight Max $ renderSpecialMention m sel
-renderAutocompleteAlternative sel (UserCompletion u inChan) =
-    padRight Max $ renderUserCompletion u inChan sel
-renderAutocompleteAlternative sel (ChannelCompletion inChan c) =
+renderAutocompleteAlternative curUser sel (UserCompletion u inChan) =
+    padRight Max $ renderUserCompletion curUser u inChan sel
+renderAutocompleteAlternative _ sel (ChannelCompletion inChan c) =
     padRight Max $ renderChannelCompletion c inChan sel
-renderAutocompleteAlternative _ (SyntaxCompletion t) =
+renderAutocompleteAlternative _ _ (SyntaxCompletion t) =
     padRight Max $ txt t
-renderAutocompleteAlternative _ (CommandCompletion n args desc) =
+renderAutocompleteAlternative _ _ (CommandCompletion n args desc) =
     padRight Max $ renderCommandCompletion n args desc
 
 renderSpecialMention :: SpecialMention -> Bool -> Widget Name
@@ -125,8 +126,8 @@
        txt $
        autocompleteAlternativeReplacement $ EmojiCompletion e
 
-renderUserCompletion :: User -> Bool -> Bool -> Widget Name
-renderUserCompletion u inChan selected =
+renderUserCompletion :: Text -> User -> Bool -> Bool -> Widget Name
+renderUserCompletion curUser u inChan selected =
     let usernameWidth = 18
         fullNameWidth = 25
         padTo n a = hLimit n $ vLimit 1 (a <+> fill ' ')
@@ -143,7 +144,7 @@
                              txt $ userNotInChannelMarker <> " "
     in maybeForce $
        hBox [ memberDisplay
-            , padTo usernameWidth $ colorUsername username ("@" <> username)
+            , padTo usernameWidth $ colorUsername curUser username ("@" <> username)
             , padTo fullNameWidth $ txt fullName
             , txt nickname
             ]
diff --git a/src/Draw/ChannelList.hs b/src/Draw/ChannelList.hs
--- a/src/Draw/ChannelList.hs
+++ b/src/Draw/ChannelList.hs
@@ -45,6 +45,7 @@
                          , entryHasUnread   :: Bool
                          , entryMentions    :: Int
                          , entryIsRecent    :: Bool
+                         , entryIsReturn    :: Bool
                          , entryIsCurrent   :: Bool
                          , entryUserStatus  :: Maybe UserStatus
                          }
@@ -56,9 +57,9 @@
         teamHeader = hCenter $
                      withDefAttr clientEmphAttr $
                      txt $ "Team: " <> teamNameStr
-        myUsername = MM.userUsername $ myUser st
+        myUsername_ = myUsername st
         selfHeader = hCenter $
-                     colorUsername myUsername (userSigil <> myUsername)
+                     colorUsername myUsername_ myUsername_ (userSigil <> myUsername_)
         teamNameStr = sanitizeUserText $ MM.teamDisplayName $ st^.csMyTeam
         body = case appMode st of
             ChannelSelect ->
@@ -76,7 +77,7 @@
                 vBox $
                 teamHeader :
                 selfHeader :
-                (renderChannelListGroup st (\s e -> renderChannelListEntry $ mkChannelEntryData s e) <$>
+                (renderChannelListGroup st (\s e -> renderChannelListEntry myUsername_ $ mkChannelEntryData s e) <$>
                     Z.toList (st^.csFocus))
 
 renderChannelListGroupHeading :: ChannelListGroup -> Bool -> Widget Name
@@ -108,12 +109,13 @@
                    -> ChannelListEntry
                    -> ChannelListEntryData
 mkChannelEntryData st e =
-    ChannelListEntryData sigilWithSpace name unread mentions recent current status
+    ChannelListEntryData sigilWithSpace name unread mentions recent ret current status
     where
         cId = channelListEntryChannelId e
         Just chan = findChannelById cId (st^.csChannels)
         unread = hasUnread' chan
         recent = isRecentChannel st cId
+        ret = isReturnChannel st cId
         current = isCurrentChannel st cId
         (name, normalSigil, addSpace, status) = case e of
             CLChannel _ ->
@@ -140,10 +142,10 @@
 
 -- | Render an individual Channel List entry (in Normal mode) with
 -- appropriate visual decorations.
-renderChannelListEntry :: ChannelListEntryData -> (Bool, Widget Name)
-renderChannelListEntry entry = (entryHasUnread entry, body)
+renderChannelListEntry :: Text -> ChannelListEntryData -> (Bool, Widget Name)
+renderChannelListEntry myUName entry = (entryHasUnread entry, body)
     where
-    body = decorate $ decorateRecent entry $ decorateMentions $ padRight Max $
+    body = decorate $ decorateEntry entry $ decorateMentions $ padRight Max $
            entryWidget $ entrySigil entry <> entryLabel entry
     decorate = if | entryIsCurrent entry ->
                       visible . forceAttr currentChannelNameAttr
@@ -154,7 +156,7 @@
                   | otherwise -> id
     entryWidget = case entryUserStatus entry of
                     Just Offline -> withDefAttr clientMessageAttr . txt
-                    Just _       -> colorUsername (entryLabel entry)
+                    Just _       -> colorUsername myUName (entryLabel entry)
                     Nothing      -> txt
     decorateMentions
       | entryMentions entry > 9 =
@@ -174,16 +176,28 @@
                       else id
         entryData = mkChannelEntryData st entry
     in (False, maybeSelect $
-               decorateRecent entryData $
+               decorateEntry entryData $
                padRight Max $
                  hBox [ txt $ entrySigil entryData <> preMatch
                       , forceAttr channelSelectMatchAttr $ txt inMatch
                       , txt postMatch
                       ])
 
--- | If this channel is the most recently viewed channel (prior to the
--- currently viewed channel), add a decoration to denote that.
-decorateRecent :: ChannelListEntryData -> Widget n -> Widget n
-decorateRecent entry = if entryIsRecent entry
-                       then (<+> (withDefAttr recentMarkerAttr $ str "<"))
-                       else id
+-- If this channel is the return channel, add a decoration to denote
+-- that.
+--
+-- Otherwise, if this channel is the most recently viewed channel (prior
+-- to the currently viewed channel), add a decoration to denote that.
+decorateEntry :: ChannelListEntryData -> Widget n -> Widget n
+decorateEntry entry =
+    if entryIsReturn entry
+    then (<+> (withDefAttr recentMarkerAttr $ str returnChannelSigil))
+    else if entryIsRecent entry
+         then (<+> (withDefAttr recentMarkerAttr $ str recentChannelSigil))
+         else id
+
+recentChannelSigil :: String
+recentChannelSigil = "<"
+
+returnChannelSigil :: String
+returnChannelSigil = "~"
diff --git a/src/Draw/Main.hs b/src/Draw/Main.hs
--- a/src/Draw/Main.hs
+++ b/src/Draw/Main.hs
@@ -255,6 +255,7 @@
                           , mdThreadState       = NoThread
                           , mdShowReactions     = True
                           , mdMessageWidthLimit = Nothing
+                          , mdMyUsername        = myUsername st
                           }
                         ]
             _ -> emptyWidget
@@ -314,7 +315,7 @@
         newlineToSpace c = c
         channelNamePair = mkChannelName (chan^.ccInfo) <> " - " <> (chan^.ccInfo.cdDisplayName)
 
-    in renderText'
+    in renderText' (myUsername st)
          hs
          (T.map newlineToSpace (channelNameString <> maybeTopic))
 
@@ -563,6 +564,7 @@
                                   , mdThreadState       = NoThread
                                   , mdShowReactions     = True
                                   , mdMessageWidthLimit = Nothing
+                                  , mdMyUsername        = myUsername st
                                   }
                  in (maybePreviewViewport msgPreview) <=>
                     hBorderWithLabel (withDefAttr clientEmphAttr $ str "[Preview ↑]")
diff --git a/src/Draw/Messages.hs b/src/Draw/Messages.hs
--- a/src/Draw/Messages.hs
+++ b/src/Draw/Messages.hs
@@ -13,7 +13,7 @@
 import qualified Data.Foldable as F
 import qualified Graphics.Vty as Vty
 import           Lens.Micro.Platform ( (.~), to )
-import           Network.Mattermost.Types ( ServerTime(..) )
+import           Network.Mattermost.Types ( ServerTime(..), userUsername )
 import           Prelude ()
 import           Prelude.MH
 
@@ -74,6 +74,7 @@
               , mdThreadState       = threadState
               , mdShowReactions     = True
               , mdMessageWidthLimit = Nothing
+              , mdMyUsername        = userUsername $ myUser st
               }
         fullMsg =
           case msg^.mUser of
diff --git a/src/Draw/ShowHelp.hs b/src/Draw/ShowHelp.hs
--- a/src/Draw/ShowHelp.hs
+++ b/src/Draw/ShowHelp.hs
@@ -442,7 +442,7 @@
 mkKeybindHelp :: Keybinding -> Widget Name
 mkKeybindHelp (KB desc ev _ _) =
     (withDefAttr helpEmphAttr $ txt $ padTo kbColumnWidth $ ppBinding $ eventToBinding ev) <+>
-    (vLimit 1 $ hLimit kbDescColumnWidth $ renderText desc <+> fill ' ')
+    (hLimit kbDescColumnWidth $ padRight Max $ renderText desc)
 
 mkKeybindEventSectionHelp :: ((Text, Text, [Text]) -> a)
                           -> ([a] -> a)
diff --git a/src/Draw/URLList.hs b/src/Draw/URLList.hs
--- a/src/Draw/URLList.hs
+++ b/src/Draw/URLList.hs
@@ -38,7 +38,7 @@
           let time = link^.linkTime
           in attr sel $ vLimit 2 $
             (vLimit 1 $
-             hBox [ let u = maybe "" id (link^.linkUser.to (nameForUserRef st)) in colorUsername u u
+             hBox [ let u = maybe "" id (link^.linkUser.to (nameForUserRef st)) in colorUsername (myUsername st) u u
                   , if link^.linkName == link^.linkURL
                       then emptyWidget
                       else (txt ": " <+> (renderText $ link^.linkName))
diff --git a/src/Draw/UserListOverlay.hs b/src/Draw/UserListOverlay.hs
--- a/src/Draw/UserListOverlay.hs
+++ b/src/Draw/UserListOverlay.hs
@@ -25,7 +25,7 @@
 drawUserListOverlay st =
     let overlay = drawListOverlay (st^.csUserListOverlay) userSearchScopeHeader
                                   userSearchScopeNoResults userSearchScopePrompt
-                                  renderUser
+                                  (renderUser (myUsername st))
     in joinBorders overlay : drawMain False st
 
 userSearchScopePrompt :: UserSearchScope -> Widget Name
@@ -51,13 +51,13 @@
         AllUsers Nothing     -> "Users On This Server"
         AllUsers (Just _)    -> "Users In My Team"
 
-renderUser :: Bool -> UserInfo -> Widget Name
-renderUser foc ui =
+renderUser :: Text -> Bool -> UserInfo -> Widget Name
+renderUser myUName foc ui =
     (if foc then forceAttr L.listSelectedFocusedAttr else id) $
     vLimit 2 $
     padRight Max $
-    hBox $ (padRight (Pad 1) $ colorUsername (ui^.uiName) (T.singleton $ userSigilFromInfo ui))
-           : (hLimit usernameWidth $ padRight Max $ colorUsername (ui^.uiName) (ui^.uiName))
+    hBox $ (padRight (Pad 1) $ colorUsername myUName (ui^.uiName) (T.singleton $ userSigilFromInfo ui))
+           : (hLimit usernameWidth $ padRight Max $ colorUsername myUName (ui^.uiName) (ui^.uiName))
            : extras
     where
         sanitize = T.strip . T.replace "\t" " "
diff --git a/src/Events/Main.hs b/src/Events/Main.hs
--- a/src/Events/Main.hs
+++ b/src/Events/Main.hs
@@ -21,9 +21,11 @@
 
 onEventMain :: Vty.Event -> MH ()
 onEventMain =
-  handleKeyboardEvent mainKeybindings $ \ ev -> case ev of
-    (Vty.EvPaste bytes) -> handlePaste bytes
-    _ -> handleEditingInput ev
+  handleKeyboardEvent mainKeybindings $ \ ev -> do
+      resetReturnChannel
+      case ev of
+          (Vty.EvPaste bytes) -> handlePaste bytes
+          _ -> handleEditingInput ev
 
 mainKeybindings :: KeyConfig -> [Keybinding]
 mainKeybindings = mkKeybindings
@@ -99,7 +101,7 @@
     , mkKb PrevChannelEvent "Change to the previous channel in the channel list"
          prevChannel
 
-    , mkKb NextUnreadChannelEvent "Change to the next channel with unread messages"
+    , mkKb NextUnreadChannelEvent "Change to the next channel with unread messages or return to the channel marked '~'"
          nextUnreadChannel
 
     , mkKb ShowAttachmentListEvent "Show the attachment list"
diff --git a/src/Login.hs b/src/Login.hs
--- a/src/Login.hs
+++ b/src/Login.hs
@@ -37,15 +37,16 @@
 -- status message that is shown is shown long enough for the user to
 -- see what is happening (rather than just flashing by in the case
 -- of a fast server connection). For this usability reason, we have
--- a "startup timer" thread: the thread waits a specified number of
--- milliseconds (see below) and then notifies the interface that it has
--- timed out. If there is an initial connection attempt underway that
--- succeeds *before* the timer fires, we wait until the timer fires
--- before quitting the application. This ensures that the "connecting
--- to..." message stays on the screen long enough to not be jarring, and
--- to show the user what is happening. If the connection fails before
--- the timer fires, we just resume normal operation and show the login
--- form so the user can intervene.
+-- a "startup timer" thread: the thread waits a specified number
+-- of milliseconds (see 'startupTimerMilliseconds' below) and then
+-- notifies the interface that it has timed out. If there is an initial
+-- connection attempt underway that succeeds *before* the timer
+-- fires, we wait until the timer fires before quitting the Login
+-- application and returning control to Matterhorn. This ensures that
+-- the "connecting to..." message stays on the screen long enough to not
+-- be jarring, and to show the user what is happening. If the connection
+-- fails before the timer fires, we just resume normal operation and
+-- show the login form so the user can intervene.
 module Login
   ( LoginAttempt(..)
   , interactiveGetLoginSession
@@ -63,41 +64,46 @@
 import           Brick.Widgets.Center
 import           Brick.Widgets.Edit
 import           Control.Concurrent ( forkIO, threadDelay )
-import           Control.Exception ( catch )
+import           Control.Exception ( SomeException, catch, try )
+import           Data.Char (isHexDigit)
+import           Data.List (tails, inits)
 import           System.IO.Error ( catchIOError )
 import qualified Data.Text as T
 import           Graphics.Vty hiding (mkVty)
 import           Lens.Micro.Platform ( (.~), Lens', makeLenses )
 import qualified System.IO.Error as Err
+import           Network.URI ( URI(..), URIAuth(..), parseURI )
 
 import           Network.Mattermost ( ConnectionData )
-import           Network.Mattermost.Types ( Session, User, Login(..), ConnectionPoolConfig(..)
-                                          , initConnectionData, ConnectionType(..) )
+import           Network.Mattermost.Types.Internal ( Token(..) )
+import           Network.Mattermost.Types ( Session(..), User, Login(..), ConnectionPoolConfig(..)
+                                          , initConnectionData, ConnectionType(..), UserParam(..) )
 import           Network.Mattermost.Exceptions ( LoginFailureException(..) )
-import           Network.Mattermost.Endpoints ( mmLogin )
+import           Network.Mattermost.Endpoints ( mmGetUser, mmGetLimitedClientConfiguration, mmLogin )
 
 import           Markdown
 import           Themes ( clientEmphAttr )
 import           Types ( ConnectionInfo(..)
-                       , ciPassword, ciUsername, ciHostname
-                       , ciPort, AuthenticationException(..)
+                       , ciPassword, ciUsername, ciHostname, ciUrlPath
+                       , ciPort, ciType, AuthenticationException(..)
                        , LogManager, LogCategory(..), ioLogWithManager
+                       , ciAccessToken
                        )
 
 
 -- | Resource names for the login interface.
 data Name =
-    Hostname
-    | Port
+      Server
     | Username
     | Password
+    | AccessToken
     deriving (Ord, Eq, Show)
 
 -- | The result of an authentication attempt.
 data LoginAttempt =
     AttemptFailed AuthenticationException
     -- ^ The attempt failed with the corresponding error.
-    | AttemptSucceeded ConnectionInfo ConnectionData Session User
+    | AttemptSucceeded ConnectionInfo ConnectionData Session User (Maybe Text) --team
     -- ^ The attempt succeeded.
 
 -- | The state of the login interface: whether a login attempt is
@@ -167,41 +173,92 @@
             -- attempt.
             -> LogManager
             -- ^ The log manager used to do logging.
-            -> ConnectionType
-            -- ^ The kind of connection to make to the server.
             -> BChan LoginRequest
             -- ^ The channel on which we'll await requests.
             -> BChan LoginEvent
             -- ^ The channel to which we'll send login attempt results.
             -> IO ()
-loginWorker setLogger logMgr connTy requestChan respChan = forever $ do
+loginWorker setLogger logMgr requestChan respChan = forever $ do
     req <- readBChan requestChan
     case req of
         DoLogin initial connInfo -> do
             writeBChan respChan $ StartConnect initial $ connInfo^.ciHostname
-            ioLogWithManager logMgr Nothing LogGeneral $ "Attempting authentication to " <> connInfo^.ciHostname
+            let doLog = ioLogWithManager logMgr Nothing LogGeneral
 
-            let login = Login { username = connInfo^.ciUsername
-                              , password = connInfo^.ciPassword
-                              }
+            doLog $ "Attempting authentication to " <> connInfo^.ciHostname
 
-            cd <- fmap setLogger $ initConnectionData (connInfo^.ciHostname) (fromIntegral (connInfo^.ciPort)) connTy poolCfg
+            cdResult <- findConnectionData connInfo
+            case cdResult of
+              Left e ->
+                do writeBChan respChan $ LoginResult $ AttemptFailed $ OtherAuthError e
+              Right (cd_, mbTeam) -> do
+                  let cd = setLogger cd_
+                      token = connInfo^.ciAccessToken
+                  case T.null token of
+                      False -> do
+                          let sess = Session cd $ Token $ T.unpack token
 
-            result <- convertLoginExceptions $ mmLogin cd login
-            case result of
-                Left e -> do
-                    ioLogWithManager logMgr Nothing LogGeneral $
-                        "Error authenticating to " <> connInfo^.ciHostname <> ": " <> (T.pack $ show e)
-                    writeBChan respChan $ LoginResult $ AttemptFailed e
-                Right (Left e) -> do
-                    ioLogWithManager logMgr Nothing LogGeneral $
-                        "Error authenticating to " <> connInfo^.ciHostname <> ": " <> (T.pack $ show e)
-                    writeBChan respChan $ LoginResult $ AttemptFailed $ LoginError e
-                Right (Right (sess, user)) -> do
-                    ioLogWithManager logMgr Nothing LogGeneral $
-                        "Authenticated successfully to " <> connInfo^.ciHostname <> " as " <> connInfo^.ciUsername
-                    writeBChan respChan $ LoginResult $ AttemptSucceeded connInfo cd sess user
+                          userResult <- try $ mmGetUser UserMe sess
+                          writeBChan respChan $ case userResult of
+                              Left (e::SomeException) ->
+                                  LoginResult $ AttemptFailed $ OtherAuthError e
+                              Right user ->
+                                  LoginResult $ AttemptSucceeded connInfo cd sess user mbTeam
+                      True -> do
+                          let login = Login { username = connInfo^.ciUsername
+                                            , password = connInfo^.ciPassword
+                                            }
 
+                          result <- convertLoginExceptions $ mmLogin cd login
+                          case result of
+                              Left e -> do
+                                  doLog $ "Error authenticating to " <> connInfo^.ciHostname <> ": " <> (T.pack $ show e)
+                                  writeBChan respChan $ LoginResult $ AttemptFailed e
+                              Right (Left e) -> do
+                                  doLog $ "Error authenticating to " <> connInfo^.ciHostname <> ": " <> (T.pack $ show e)
+                                  writeBChan respChan $ LoginResult $ AttemptFailed $ LoginError e
+                              Right (Right (sess, user)) -> do
+                                  doLog $ "Authenticated successfully to " <> connInfo^.ciHostname <> " as " <> connInfo^.ciUsername
+                                  writeBChan respChan $ LoginResult $ AttemptSucceeded connInfo cd sess user mbTeam
+
+
+
+-- | Searches prefixes of the given URL to determine Mattermost API URL path and team name
+findConnectionData :: ConnectionInfo -> IO (Either SomeException (ConnectionData, Maybe Text))
+findConnectionData connInfo = startSearch
+
+  where
+    components = filter (not . T.null) (T.split ('/'==) (connInfo^.ciUrlPath))
+
+    -- the candidates list is never empty because inits never returns an empty list
+    primary:alternatives =
+        reverse
+        [ (T.intercalate "/" l, listToMaybe r) | (l,r) <- zip (inits components) (tails components) ]
+
+    tryCandidate :: (Text, Maybe Text) -> IO (Either SomeException (ConnectionData, Maybe Text))
+    tryCandidate (path, team) =
+       do cd  <- initConnectionData (connInfo^.ciHostname) (fromIntegral (connInfo^.ciPort)) path (connInfo^.ciType) poolCfg
+          res <- try (mmGetLimitedClientConfiguration cd)
+          pure $! case res of
+                    Left e  -> Left e
+                    Right{} -> Right (cd, team)
+
+    -- This code prefers to report the error from the URL corresponding to what the user
+    -- actually provided. Errors from derived URLs are lost in favor of this first error.
+    startSearch =
+      do res1 <- tryCandidate primary
+         case res1 of
+           Left e -> search e alternatives
+           Right cd -> pure (Right cd)
+
+    search e [] = pure (Left e)
+    search e (x:xs) =
+      do res <- tryCandidate x
+         case res of
+           Left {}  -> search e xs
+           Right cd -> pure (Right cd)
+
+
 -- | The amount of time that the startup timer thread will wait before
 -- firing.
 startupTimerMilliseconds :: Int
@@ -228,9 +285,6 @@
                            -- never fires since the login app doesn't
                            -- use suspendAndResume, but we need it to
                            -- satisfy the Brick API.)
-                           -> ConnectionType
-                           -- ^ The kind of connection to make to the
-                           -- mattermost server.
                            -> (ConnectionData -> ConnectionData)
                            -- ^ The function to set the logger on
                            -- connection handles.
@@ -243,11 +297,11 @@
                            -- initial connection attempt is made without
                            -- first getting the user to hit Enter.
                            -> IO (Maybe LoginAttempt, Vty)
-interactiveGetLoginSession vty mkVty connTy setLogger logMgr initialConfig = do
+interactiveGetLoginSession vty mkVty setLogger logMgr initialConfig = do
     requestChan <- newBChan 10
     respChan <- newBChan 10
 
-    void $ forkIO $ loginWorker setLogger logMgr connTy requestChan respChan
+    void $ forkIO $ loginWorker setLogger logMgr requestChan respChan
     void $ forkIO $ startupTimer respChan
 
     let initialState = mkState initialConfig requestChan
@@ -268,8 +322,11 @@
 populatedConnectionInfo :: ConnectionInfo -> Bool
 populatedConnectionInfo ci =
     and [ not $ T.null $ ci^.ciHostname
-        , not $ T.null $ ci^.ciUsername
-        , not $ T.null $ ci^.ciPassword
+        , or [ and [ not $ T.null $ ci^.ciUsername
+                   , not $ T.null $ ci^.ciPassword
+                   ]
+             , not $ T.null $ ci^.ciAccessToken
+             ]
         , ci^.ciPort > 0
         ]
 
@@ -285,10 +342,10 @@
                       , _timeoutFired = False
                       }
         form = mkForm cInfo
-        initialFocus = if | T.null (cInfo^.ciHostname) -> Hostname
+        initialFocus = if | T.null (cInfo^.ciHostname) -> Server
                           | T.null (cInfo^.ciUsername) -> Username
                           | T.null (cInfo^.ciPassword) -> Password
-                          | otherwise                  -> Hostname
+                          | otherwise                  -> Server
 
 app :: App State LoginEvent Name
 app = App
@@ -345,33 +402,104 @@
 mkForm :: ConnectionInfo -> Form ConnectionInfo e Name
 mkForm =
     let label s w = padBottom (Pad 1) $
-                    (vLimit 1 $ hLimit 18 $ str s <+> fill ' ') <+> w
-    in newForm [ label "Server hostname:" @@=
-                   editHostname ciHostname Hostname
-               , label "Server port:" @@=
-                   editShowableField ciPort Port
-               , label "Username:" @@=
-                   editTextField ciUsername Username (Just 1)
-               , label "Password:" @@=
-                   editPasswordField ciPassword Password
+                    (vLimit 1 $ hLimit 22 $ str s <+> fill ' ') <+> w
+        above s w = hCenter (str s) <=> w
+    in newForm [ label "Server URL:"     @@= editServer
+               , (above "Provide a username and password:" .
+                  label "Username:")     @@= editTextField ciUsername Username (Just 1)
+               , label "Password:"       @@= editPasswordField ciPassword Password
+               , (above "Or provide an OAuth or Personal Access Token:" .
+                  label "Access Token:") @@= editPasswordField ciAccessToken AccessToken
                ]
 
-editHostname :: (Show n, Ord n) => Lens' s Text -> n -> s -> FormFieldState s e n
-editHostname stLens n =
-    let ini = id
-        val = validHostname
-        limit = Just 1
-        renderTxt = txt . T.unlines
-    in editField stLens n limit ini val renderTxt id
+serverLens :: Lens' ConnectionInfo (Text, Int, Text, ConnectionType)
+serverLens f ci = fmap (\(x,y,z,w) -> ci { _ciHostname = x, _ciPort = y, _ciUrlPath = z, _ciType = w})
+                       (f (ci^.ciHostname, ci^.ciPort, ci^.ciUrlPath, ci^.ciType))
 
-validHostname :: [Text] -> Maybe Text
-validHostname ls =
-    let s = T.unpack t
-        t = T.concat ls
-    in if all (flip notElem (":/"::String)) s
-       then Just t
-       else Nothing
+-- | Validate a server URI @hostname[:port][/path]@. Result is either an error message
+-- indicating why validation failed or a tuple of (hostname, port, path)
+validServer :: [Text] -> Either String (Text, Int, Text, ConnectionType)
+validServer ts =
 
+  do t <- case ts of
+            []  -> Left "No input"
+            [t] -> Right t
+            _   -> Left "Too many lines"
+
+     let inputWithScheme
+           | "://" `T.isInfixOf` t = t
+           | otherwise = "https://" <> t
+
+     uri <- case parseURI (T.unpack inputWithScheme) of
+              Nothing  -> Left "Unable to parse URI"
+              Just uri -> Right uri
+
+     auth <- case uriAuthority uri of
+               Nothing   -> Left "Missing authority part"
+               Just auth -> Right auth
+
+     ty <- case uriScheme uri of
+             "http:"           -> Right ConnectHTTP
+             "https:"          -> Right (ConnectHTTPS True)
+             "https-insecure:" -> Right (ConnectHTTPS False)
+             _                 -> Left "Unknown scheme"
+
+     port <- case (ty, uriPort auth) of
+               (ConnectHTTP   , "") -> Right 80
+               (ConnectHTTPS{}, "") -> Right 443
+               (_, ':':portStr)
+                 | Just port <- readMaybe portStr -> Right port
+               _ -> Left "Invalid port"
+
+     let host
+           | not (null (uriRegName auth))
+           , '[' == head (uriRegName auth)
+           , ']' == last (uriRegName auth)
+           = init (tail (uriRegName auth))
+           | otherwise = uriRegName auth
+
+     if null (uriRegName auth) then Left "Missing server name" else Right ()
+     if null (uriQuery uri) then Right () else Left "Unexpected URI query"
+     if null (uriFragment uri) then Right () else Left "Unexpected URI fragment"
+     if null (uriUserInfo auth) then Right () else Left "Unexpected credentials"
+
+     Right (T.pack host, port, T.pack (uriPath uri), ty)
+
+
+renderServer :: (Text, Int, Text, ConnectionType) -> Text
+renderServer (h,p,u,t) = scheme <> hStr <> portStr <> uStr
+  where
+    hStr
+      | T.all (\x -> isHexDigit x || ':'==x) h
+      , T.any (':'==) h = "[" <> h <> "]"
+      | otherwise = h
+
+    scheme =
+      case t of
+        ConnectHTTP        -> "http://"
+        ConnectHTTPS True  -> ""
+        ConnectHTTPS False -> "https-insecure://"
+
+    uStr
+      | T.null u = u
+      | otherwise = T.cons '/' (T.dropWhile ('/'==) u)
+
+    portStr =
+      case t of
+        ConnectHTTP    | p ==  80 -> T.empty
+        ConnectHTTPS{} | p == 443 -> T.empty
+        _                         -> T.pack (':':show p)
+
+editServer :: ConnectionInfo -> FormFieldState ConnectionInfo e Name
+editServer =
+    let val ts = case validServer ts of
+                   Left{} -> Nothing
+                   Right x-> Just x
+        limit = Just 1
+        renderTxt [""] = str "(Paste your Mattermost URL here)"
+        renderTxt ts = txt (T.unlines ts)
+    in editField serverLens Server limit renderServer val renderTxt id
+
 errorAttr :: AttrName
 errorAttr = "errorMessage"
 
@@ -417,7 +545,7 @@
                    txt "Connecting to " <+> withDefAttr clientEmphAttr (txt host) <+> txt "..."
     in case st^.currentState of
           Idle -> case st^.lastAttempt of
-              Just (AttemptSucceeded ci _ _ _) -> msg (ci^.ciHostname)
+              Just (AttemptSucceeded ci _ _ _ _) -> msg (ci^.ciHostname)
               _ -> emptyWidget
           (Connecting _ host) -> msg host
 
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -21,7 +21,7 @@
 
     configResult <- if optIgnoreConfig opts
                     then return $ Right defaultConfig
-                    else findConfig (optConfLocation opts)
+                    else fmap snd <$> findConfig (optConfLocation opts)
 
     config <- case configResult of
         Left err -> do
@@ -30,19 +30,20 @@
         Right c -> return c
 
     let keyConfig = configUserKeys config
+        format = optPrintFormat opts
 
     printedCommands <- case optPrintCommands opts of
-        Nothing -> return False
-        Just ty -> do
-            case ty of
+        False -> return False
+        True -> do
+            case format of
                 Markdown -> T.putStrLn commandMarkdownTable
                 Plain -> T.putStrLn commandTextTable
             return True
 
     printedKeybindings <- case optPrintKeybindings opts of
-        Nothing -> return False
-        Just ty -> do
-            case ty of
+        False -> return False
+        True -> do
+            case format of
                 Markdown -> T.putStrLn $ keybindingMarkdownTable keyConfig
                 Plain -> T.putStrLn $ keybindingTextTable keyConfig
             return True
diff --git a/src/Markdown.hs b/src/Markdown.hs
--- a/src/Markdown.hs
+++ b/src/Markdown.hs
@@ -142,6 +142,8 @@
                 -- rendering context. If specified, all non-code blocks
                 -- will be wrapped at this width and code blocks will be
                 -- rendered using the context's width.
+                , mdMyUsername :: Text
+                -- ^ The username of the user running Matterhorn.
                 }
 
 -- | renderMessage performs markdown rendering of the specified message.
@@ -156,13 +158,13 @@
             | isEmote msg ->
                 [ B.withDefAttr pinnedMessageIndicatorAttr $ B.txt $ if msg^.mPinned then "[PIN]" else ""
                 , B.txt $ (if msg^.mFlagged then "[!] " else "") <> "*"
-                , colorUsername un un
+                , colorUsername mdMyUsername un un
                 , botElem
                 , B.txt " "
                 ]
             | otherwise ->
                 [ B.withDefAttr pinnedMessageIndicatorAttr $ B.txt $ if msg^.mPinned then "[PIN] " else ""
-                , colorUsername un un
+                , colorUsername mdMyUsername un un
                 , botElem
                 , B.txt $ (if msg^.mFlagged then "[!]" else "") <> ": "
                 ]
@@ -245,7 +247,7 @@
         multiLnLayout hs w nameElems bs =
             if mdIndentBlocks
                then vBox [ hBox nameElems
-                         , hBox [B.txt "  ", renderMarkdown hs ((subtract 2) <$> w) bs]
+                         , hBox [B.txt "  ", renderMarkdown mdMyUsername hs ((subtract 2) <$> w) bs]
                          ]
                else nameNextToMessage hs w nameElems bs
 
@@ -253,7 +255,7 @@
             Widget Fixed Fixed $ do
                 nameResult <- render $ hBox nameElems
                 let newW = subtract (V.imageWidth (nameResult^.imageL)) <$> w
-                render $ hBox [raw (nameResult^.imageL), renderMarkdown hs newW bs]
+                render $ hBox [raw (nameResult^.imageL), renderMarkdown mdMyUsername hs newW bs]
 
         breakCheck C.LineBreak = True
         breakCheck C.SoftBreak = True
@@ -275,9 +277,9 @@
 cursorSentinel = '‸'
 
 -- Render markdown with username highlighting
-renderMarkdown :: HighlightSet -> Maybe Int -> Blocks -> Widget a
-renderMarkdown hSet w =
-  B.vBox . toList . fmap (blockToWidget hSet w) . addBlankLines
+renderMarkdown :: Text -> HighlightSet -> Maybe Int -> Blocks -> Widget a
+renderMarkdown curUser hSet w =
+  B.vBox . toList . fmap (blockToWidget curUser hSet w) . addBlankLines
 
 -- Add blank lines only between adjacent elements of the same type, to
 -- save space
@@ -303,10 +305,10 @@
 
 -- Render text to markdown without username highlighting
 renderText :: Text -> Widget a
-renderText txt = renderText' emptyHSet txt
+renderText txt = renderText' "" emptyHSet txt
 
-renderText' :: HighlightSet -> Text -> Widget a
-renderText' hSet txt = renderMarkdown hSet Nothing bs
+renderText' :: Text -> HighlightSet -> Text -> Widget a
+renderText' curUser hSet txt = renderMarkdown curUser hSet Nothing bs
   where C.Doc _ bs = C.markdown C.def txt
 
 vBox :: F.Foldable f => f (Widget a) -> Widget a
@@ -322,26 +324,26 @@
 maybeHLimit Nothing w = w
 maybeHLimit (Just i) w = hLimit i w
 
-blockToWidget :: HighlightSet -> Maybe Int -> Block -> Widget a
-blockToWidget hSet w (C.Para is) =
-    toInlineChunk w is hSet
-blockToWidget hSet w (C.Header n is) =
+blockToWidget :: Text -> HighlightSet -> Maybe Int -> Block -> Widget a
+blockToWidget curUser hSet w (C.Para is) =
+    toInlineChunk curUser w is hSet
+blockToWidget curUser hSet w (C.Header n is) =
     B.withDefAttr clientHeaderAttr $
-      hBox [B.padRight (B.Pad 1) $ header n, toInlineChunk (subtract 1 <$> w) is hSet]
-blockToWidget hSet w (C.Blockquote is) =
+      hBox [B.padRight (B.Pad 1) $ header n, toInlineChunk curUser (subtract 1 <$> w) is hSet]
+blockToWidget curUser hSet w (C.Blockquote is) =
     maybeHLimit w $
-    addQuoting (vBox $ fmap (blockToWidget hSet w) is)
-blockToWidget hSet w (C.List _ l bs) =
+    addQuoting (vBox $ fmap (blockToWidget curUser hSet w) is)
+blockToWidget curUser hSet w (C.List _ l bs) =
     maybeHLimit w $
-    blocksToList l w bs hSet
-blockToWidget hSet _ (C.CodeBlock ci tx) =
+    blocksToList curUser l w bs hSet
+blockToWidget _ hSet _ (C.CodeBlock ci tx) =
     let f = maybe rawCodeBlockToWidget (codeBlockToWidget (hSyntaxMap hSet)) mSyntax
         mSyntax = Sky.lookupSyntax (C.codeLang ci) (hSyntaxMap hSet)
     in f tx
-blockToWidget _ w (C.HtmlBlock txt) =
+blockToWidget _ _ w (C.HtmlBlock txt) =
     maybeHLimit w $
     textWithCursor txt
-blockToWidget _ w (C.HRule) =
+blockToWidget _ _ w (C.HRule) =
     maybeHLimit w $
     B.vLimit 1 (B.fill '*')
 
@@ -381,17 +383,17 @@
             expandEmpty s  = s
         in padding <+> (B.vBox $ textWithCursor <$> theLines)
 
-toInlineChunk :: Maybe Int -> Inlines -> HighlightSet -> Widget a
-toInlineChunk w is hSet = B.Widget B.Fixed B.Fixed $ do
+toInlineChunk :: Text -> Maybe Int -> Inlines -> HighlightSet -> Widget a
+toInlineChunk curUser w is hSet = B.Widget B.Fixed B.Fixed $ do
   ctx <- B.getContext
   let width = fromMaybe (ctx^.B.availWidthL) w
       fs    = toFragments hSet is
-      ws    = fmap gatherWidgets (split width hSet fs)
+      ws    = fmap (gatherWidgets curUser) (split width hSet fs)
   B.render (vBox (fmap hBox ws))
 
-blocksToList :: ListType -> Maybe Int -> [Blocks] -> HighlightSet -> Widget a
-blocksToList lt w bs hSet = vBox
-  [ B.txt i <+> (vBox (fmap (blockToWidget hSet w) b))
+blocksToList :: Text -> ListType -> Maybe Int -> [Blocks] -> HighlightSet -> Widget a
+blocksToList curUser lt w bs hSet = vBox
+  [ B.txt i <+> (vBox (fmap (blockToWidget curUser hSet w) b))
   | b <- bs | i <- is ]
   where is = case lt of
           C.Bullet _ -> repeat ("• ")
@@ -592,8 +594,8 @@
 
 -- This finds adjacent string-ey fragments and concats them, so
 -- we can use fewer widgets
-gatherWidgets :: Seq Fragment -> Seq (Widget a)
-gatherWidgets (viewl-> (Fragment frag style :< rs)) = go style (strOf frag) rs
+gatherWidgets :: Text -> Seq Fragment -> Seq (Widget a)
+gatherWidgets curUser (viewl-> (Fragment frag style :< rs)) = go style (strOf frag) rs
   where go s t (viewl-> (Fragment f s' :< xs))
           | s == s' = go s (t <> strOf f) xs
         go s t xs =
@@ -608,17 +610,17 @@
                 Link l ->
                     B.hyperlink l $ B.withDefAttr urlAttr $ case frag of
                         TComplex fs ->
-                            hBox $ gatherWidgets fs
+                            hBox $ gatherWidgets curUser fs
                         _ ->
                             rawText
                 Emoji  -> B.withDefAttr emojiAttr rawText
-                User u -> colorUsername u t
+                User u -> colorUsername curUser u t
                 Channel -> B.withDefAttr channelNameAttr rawText
               widget
                 | T.any (== cursorSentinel) t = B.visible rawWidget
                 | otherwise = rawWidget
-          in widget <| gatherWidgets xs
-gatherWidgets _ =
+          in widget <| gatherWidgets curUser xs
+gatherWidgets _ _ =
   S.empty
 
 textWithCursor :: Text -> Widget a
diff --git a/src/Options.hs b/src/Options.hs
--- a/src/Options.hs
+++ b/src/Options.hs
@@ -5,6 +5,10 @@
 import Prelude ()
 import Prelude.MH
 
+import Config
+import Data.Char ( toLower )
+import Data.Foldable (traverse_)
+import Data.Tuple ( swap )
 import Data.Version ( showVersion )
 import Development.GitRev
 import Network.Mattermost.Version ( mmApiVersion )
@@ -12,15 +16,17 @@
 import System.Console.GetOpt
 import System.Environment ( getArgs )
 import System.Exit ( exitFailure, exitSuccess )
+import System.IO ( hPutStrLn, stderr )
 
 
 data Behaviour
   = Normal
   | ShowVersion
   | ShowHelp
+  | CheckConfig
     deriving (Eq, Show)
 
-data PrintMode =
+data PrintFormat =
     Markdown | Plain deriving (Eq, Show)
 
 data Options = Options
@@ -28,8 +34,9 @@
   , optLogLocation      :: Maybe FilePath
   , optBehaviour        :: Behaviour
   , optIgnoreConfig     :: Bool
-  , optPrintKeybindings :: Maybe PrintMode
-  , optPrintCommands    :: Maybe PrintMode
+  , optPrintKeybindings :: Bool
+  , optPrintCommands    :: Bool
+  , optPrintFormat      :: PrintFormat
   } deriving (Eq, Show)
 
 defaultOptions :: Options
@@ -38,8 +45,9 @@
   , optLogLocation      = Nothing
   , optBehaviour        = Normal
   , optIgnoreConfig     = False
-  , optPrintKeybindings = Nothing
-  , optPrintCommands    = Nothing
+  , optPrintKeybindings = False
+  , optPrintCommands    = False
+  , optPrintFormat      = Plain
   }
 
 optDescrs :: [OptDescr (Options -> Options)]
@@ -59,20 +67,46 @@
   , Option ['i'] ["ignore-config"]
     (NoArg (\ c -> c { optIgnoreConfig = True }))
     "Start with no configuration"
-  , Option ['k'] ["keybindings-text"]
-    (NoArg (\ c -> c { optPrintKeybindings = Just Plain }))
-    "Print keybindings effective for the current configuration in plain text format"
-  , Option ['K'] ["keybindings-markdown"]
-    (NoArg (\ c -> c { optPrintKeybindings = Just Markdown }))
-    "Print keybindings effective for the current configuration in Markdown format"
-  , Option ['m'] ["commands-text"]
-    (NoArg (\ c -> c { optPrintCommands = Just Plain }))
-    "Print available commands in plain text format"
-  , Option ['M'] ["commands-markdown"]
-    (NoArg (\ c -> c { optPrintCommands = Just Markdown }))
-    "Print available commands in Markdown format"
+  , Option ['k'] ["keybindings"]
+    (NoArg (\ c -> c { optPrintKeybindings = True }))
+    "Print keybindings effective for the current configuration"
+  , Option ['m'] ["commands"]
+    (NoArg (\ c -> c { optPrintCommands = True }))
+    "Print available commands"
+  , Option ['f'] ["format"]
+    (ReqArg handleFormat "FORMAT")
+    ("Print keybinding or command output in the specified format " <>
+     "(options: " <> formatChoicesStr <> ", default: " <>
+     formatStringFor (optPrintFormat defaultOptions) <> ")")
+  , Option [] ["check-config"]
+    (NoArg (\ c -> c { optBehaviour = CheckConfig }))
+    "Validate configuration file"
   ]
 
+formatChoices :: [(String, PrintFormat)]
+formatChoices =
+    [ ("plain", Plain)
+    , ("markdown", Markdown)
+    ]
+
+formatStringFor :: PrintFormat -> String
+formatStringFor fmt =
+    case lookup fmt (swap <$> formatChoices) of
+        Nothing -> error $ "BUG: no format string for " <> show fmt
+        Just s -> s
+
+formatChoicesStr :: String
+formatChoicesStr = intercalate ", " $ fst <$> formatChoices
+
+handleFormat :: String -> Options -> Options
+handleFormat fmtStr c =
+    let fmt = case lookup (toLower <$> fmtStr) formatChoices of
+            Just f -> f
+            Nothing ->
+                error $ "Invalid format: " <> show fmtStr <> ", choices: " <>
+                        formatChoicesStr
+    in c { optPrintFormat = fmt }
+
 mhVersion :: String
 mhVersion
   | $(gitHash) == ("UNKNOWN" :: String) = "matterhorn " ++ showVersion version
@@ -95,10 +129,28 @@
         Normal -> return rs
         ShowHelp -> usage >> exitSuccess
         ShowVersion -> putStrLn fullVersionString >> exitSuccess
-    (_, _, []) -> do
-      usage
-      exitFailure
+        CheckConfig -> checkConfiguration (optConfLocation rs)
     (_, _, errs) -> do
       mapM_ putStr errs
       usage
       exitFailure
+
+checkConfiguration :: Maybe FilePath -> IO a
+checkConfiguration mb =
+  do res <- findConfig mb
+     let writeLn = hPutStrLn stderr
+         printLocation Nothing = "No configuration file"
+         printLocation (Just fp) = "Location: " ++ fp
+     case res of
+       Left e ->
+         do writeLn e
+            exitFailure
+       Right ([], config) ->
+         do writeLn "Configuration file valid"
+            writeLn (printLocation (configAbsPath config))
+            exitSuccess
+       Right (ws, config) ->
+         do writeLn "Configuration file generated warnings"
+            writeLn (printLocation (configAbsPath config))
+            traverse_ writeLn ws
+            exitFailure
diff --git a/src/State/Channels.hs b/src/State/Channels.hs
--- a/src/State/Channels.hs
+++ b/src/State/Channels.hs
@@ -21,6 +21,8 @@
   , prevChannel
   , nextChannel
   , recentChannel
+  , setReturnChannel
+  , resetReturnChannel
   , hideDMChannel
   , createGroupChannel
   , showGroupChannelPref
@@ -34,6 +36,7 @@
   , removeUserFromCurrentChannel
   , removeChannelFromState
   , isRecentChannel
+  , isReturnChannel
   , isCurrentChannel
   , deleteCurrentChannel
   , startLeaveCurrentChannel
@@ -411,7 +414,7 @@
 setFocus :: ChannelId -> MH ()
 setFocus cId = do
     showChannelInSidebar cId True
-    setFocusWith True (Z.findRight ((== cId) . channelListEntryChannelId))
+    setFocusWith True (Z.findRight ((== cId) . channelListEntryChannelId)) (return ())
 
 showChannelInSidebar :: ChannelId -> Bool -> MH ()
 showChannelInSidebar cId setPending = do
@@ -474,8 +477,10 @@
 
 setFocusWith :: Bool
              -> (Zipper ChannelListGroup ChannelListEntry
-             -> Zipper ChannelListGroup ChannelListEntry) -> MH ()
-setFocusWith updatePrev f = do
+             -> Zipper ChannelListGroup ChannelListEntry)
+             -> MH ()
+             -> MH ()
+setFocusWith updatePrev f onNoChange = do
     oldZipper <- use csFocus
     let newZipper = f oldZipper
         newFocus = Z.focus newZipper
@@ -483,18 +488,20 @@
 
     -- If we aren't changing anything, skip all the book-keeping because
     -- we'll end up clobbering things like csRecentChannel.
-    when (newFocus /= oldFocus) $ do
-        mh $ invalidateCacheEntry ChannelSidebar
-        resetAutocomplete
-        preChangeChannelCommon
-        csFocus .= newZipper
+    if newFocus /= oldFocus
+       then do
+          mh $ invalidateCacheEntry ChannelSidebar
+          resetAutocomplete
+          preChangeChannelCommon
+          csFocus .= newZipper
 
-        now <- liftIO getCurrentTime
-        newCid <- use csCurrentChannelId
-        csChannel(newCid).ccInfo.cdSidebarShowOverride .= Just now
+          now <- liftIO getCurrentTime
+          newCid <- use csCurrentChannelId
+          csChannel(newCid).ccInfo.cdSidebarShowOverride .= Just now
 
-        updateViewed updatePrev
-        postChangeChannelCommon
+          updateViewed updatePrev
+          postChangeChannelCommon
+       else onNoChange
 
 postChangeChannelCommon :: MH ()
 postChangeChannelCommon = do
@@ -660,32 +667,69 @@
             updateSidebar
 
 nextChannel :: MH ()
-nextChannel = setFocusWith True Z.right
+nextChannel = do
+    resetReturnChannel
+    setFocusWith True Z.right (return ())
 
 -- | This is almost never what you want; we use this when we delete a
 -- channel and we don't want to update the deleted channel's view time.
 nextChannelSkipPrevView :: MH ()
-nextChannelSkipPrevView = setFocusWith False Z.right
+nextChannelSkipPrevView = setFocusWith False Z.right (return ())
 
 prevChannel :: MH ()
-prevChannel = setFocusWith True Z.left
+prevChannel = do
+    resetReturnChannel
+    setFocusWith True Z.left (return ())
 
 recentChannel :: MH ()
 recentChannel = do
   recent <- use csRecentChannel
   case recent of
     Nothing  -> return ()
-    Just cId -> setFocus cId
+    Just cId -> do
+        ret <- use csReturnChannel
+        when (ret == Just cId) resetReturnChannel
+        setFocus cId
 
+resetReturnChannel :: MH ()
+resetReturnChannel = do
+  val <- use csReturnChannel
+  case val of
+      Nothing -> return ()
+      Just _ -> do
+          mh $ invalidateCacheEntry ChannelSidebar
+          csReturnChannel .= Nothing
+
+gotoReturnChannel :: MH ()
+gotoReturnChannel = do
+  ret <- use csReturnChannel
+  case ret of
+    Nothing  -> return ()
+    Just cId -> do
+        resetReturnChannel
+        setFocus cId
+
+setReturnChannel :: MH ()
+setReturnChannel = do
+  ret <- use csReturnChannel
+  case ret of
+    Nothing  -> do
+        cId <- use csCurrentChannelId
+        csReturnChannel .= Just cId
+        mh $ invalidateCacheEntry ChannelSidebar
+    Just _ -> return ()
+
 nextUnreadChannel :: MH ()
 nextUnreadChannel = do
     st <- use id
-    setFocusWith True (getNextUnreadChannel st)
+    setReturnChannel
+    setFocusWith True (getNextUnreadChannel st) gotoReturnChannel
 
 nextUnreadUserOrChannel :: MH ()
 nextUnreadUserOrChannel = do
     st <- use id
-    setFocusWith True (getNextUnreadUserOrChannel st)
+    setReturnChannel
+    setFocusWith True (getNextUnreadUserOrChannel st) gotoReturnChannel
 
 leaveChannel :: ChannelId -> MH ()
 leaveChannel cId = leaveChannelIfPossible cId False
@@ -912,6 +956,9 @@
 
 isRecentChannel :: ChatState -> ChannelId -> Bool
 isRecentChannel st cId = st^.csRecentChannel == Just cId
+
+isReturnChannel :: ChatState -> ChannelId -> Bool
+isReturnChannel st cId = st^.csReturnChannel == Just cId
 
 joinChannelByName :: Text -> MH ()
 joinChannelByName rawName = do
diff --git a/src/State/Common.hs b/src/State/Common.hs
--- a/src/State/Common.hs
+++ b/src/State/Common.hs
@@ -123,6 +123,7 @@
           (addMessage $ clientMessageToMessage msg & mMessageId .~ Just (MessageUUID uuid))
   csChannels %= modifyChannelById cid addCMsg
   mh $ invalidateCacheEntry $ ChannelMessages cid
+  mh $ invalidateCacheEntry ChannelSidebar
 
   let msgTy = case msg^.cmType of
         Error -> LogError
diff --git a/src/State/Messages.hs b/src/State/Messages.hs
--- a/src/State/Messages.hs
+++ b/src/State/Messages.hs
@@ -517,7 +517,7 @@
                     mh $ invalidateCacheEntry (ChannelMessages cId)
                     csChannels %= modifyChannelById cId
                       ((ccContents.cdMessages %~ addMessage msg') .
-                       (adjustUpdated new) .
+                       (if not ignoredJoinLeaveMessage then adjustUpdated new else id) .
                        (\c -> if currCId == cId
                               then c
                               else case newPostData of
diff --git a/src/State/Setup.hs b/src/State/Setup.hs
--- a/src/State/Setup.hs
+++ b/src/State/Setup.hs
@@ -40,13 +40,19 @@
 
 
 incompleteCredentials :: Config -> ConnectionInfo
-incompleteCredentials config = ConnectionInfo hStr (configPort config) uStr pStr
-    where
-        hStr = maybe "" id $ configHost config
-        uStr = maybe "" id $ configUser config
-        pStr = case configPass config of
-            Just (PasswordString s) -> s
-            _                       -> ""
+incompleteCredentials config = ConnectionInfo
+  { _ciHostname = fromMaybe "" (configHost config)
+  , _ciPort     = configPort config
+  , _ciUrlPath  = fromMaybe "" (configUrlPath config)
+  , _ciUsername = fromMaybe "" (configUser config)
+  , _ciPassword = case configPass config of
+                    Just (PasswordString s) -> s
+                    _                       -> ""
+  , _ciAccessToken = case configToken config of
+                       Just (TokenString s) -> s
+                       _                    -> ""
+  , _ciType     = configConnectionType config
+  }
 
 apiLogEventToLogMessage :: LogEvent -> IO LogMessage
 apiLogEventToLogMessage ev = do
@@ -73,11 +79,8 @@
 
   let logApiEvent ev = apiLogEventToLogMessage ev >>= sendLogMessage logMgr
       setLogger cd = cd `withLogger` logApiEvent
-      connTy = if configUnsafeUseHTTP config
-               then ConnectHTTP
-               else ConnectHTTPS $ configValidateServerCertificate config
 
-  (mLastAttempt, loginVty) <- interactiveGetLoginSession initialVty mkVty connTy
+  (mLastAttempt, loginVty) <- interactiveGetLoginSession initialVty mkVty
                                                          setLogger
                                                          logMgr
                                                          (incompleteCredentials config)
@@ -86,7 +89,7 @@
           Vty.shutdown vty
           exitSuccess
 
-  (session, me, cd) <- case mLastAttempt of
+  (session, me, cd, mbTeam) <- case mLastAttempt of
       Nothing ->
           -- The user never attempted a connection and just chose to
           -- quit.
@@ -95,10 +98,10 @@
           -- The user attempted a connection and failed, and then chose
           -- to quit.
           shutdown loginVty
-      Just (AttemptSucceeded _ cd sess user) ->
+      Just (AttemptSucceeded _ cd sess user mbTeam) ->
           -- The user attempted a connection and succeeded so continue
           -- with setup.
-          return (sess, user, cd)
+          return (sess, user, cd, mbTeam)
 
   teams <- mmGetUsersTeams UserMe session
   when (Seq.null teams) $ do
@@ -107,7 +110,7 @@
 
   (myTeam, teamSelVty) <- do
       let foundTeam = do
-             tName <- configTeam config
+             tName <- mbTeam <|> configTeam config
              let matchingTeam = listToMaybe $ filter matches $ toList teams
                  matches t = (sanitizeUserText $ teamName t) == tName
              matchingTeam
diff --git a/src/Themes.hs b/src/Themes.hs
--- a/src/Themes.hs
+++ b/src/Themes.hs
@@ -8,6 +8,7 @@
   , themeDocs
 
   -- * Attribute names
+  , currentUserAttr
   , timeAttr
   , channelHeaderAttr
   , channelListHeaderAttr
@@ -126,6 +127,9 @@
 timeAttr :: AttrName
 timeAttr = "time"
 
+currentUserAttr :: AttrName
+currentUserAttr = "currentUser"
+
 channelHeaderAttr :: AttrName
 channelHeaderAttr = "channelHeader"
 
@@ -236,6 +240,7 @@
 lightAttrs =
     let sty = Sky.kate
     in [ (timeAttr,                         fg black)
+       , (currentUserAttr,                  defAttr `withStyle` bold)
        , (channelHeaderAttr,                fg black `withStyle` underline)
        , (channelListHeaderAttr,            fg cyan)
        , (currentChannelNameAttr,           black `on` yellow `withStyle` bold)
@@ -290,6 +295,7 @@
 darkAttrs =
   let sty = Sky.espresso
   in [ (timeAttr,                         fg white)
+     , (currentUserAttr,                  defAttr `withStyle` bold)
      , (channelHeaderAttr,                fg white `withStyle` underline)
      , (channelListHeaderAttr,            fg cyan)
      , (currentChannelNameAttr,           black `on` yellow `withStyle` bold)
@@ -353,14 +359,46 @@
 usernameAttr :: Int -> AttrName
 usernameAttr i = "username" <> (attrName $ show i)
 
-colorUsername :: Text -> Text -> Widget a
-colorUsername username display =
+-- | Render a string with a color chosen based on the text of a
+-- username.
+--
+-- This function takes some display text and renders it using an
+-- attribute based on the username associated with the text. If the
+-- username associated with the text is equal to the username of
+-- the user running Matterhorn, the display text is formatted with
+-- 'currentAttr'. Otherwise it is formatted with an attribute chosen
+-- by hashing the associated username and choosing from amongst the
+-- username color hash buckets with 'usernameAttr'.
+--
+-- Usually the first argument to this function will be @myUsername st@,
+-- where @st@ is a 'ChatState'.
+--
+-- The most common way to call this function is
+--
+-- @colorUsername (myUsername st) u u
+--
+-- The third argument is allowed to vary from the second since sometimes
+-- we call this with the user's status sigil as the third argument.
+colorUsername :: Text
+              -- ^ The username for the user currently running
+              -- Matterhorn
+              -> Text
+              -- ^ The username associated with the text to render
+              -> Text
+              -- ^ The text to render
+              -> Widget a
+colorUsername current username display =
     let normalizedUsername = T.toLower username
         aName = if normalizedUsername `elem` specialUserMentions
                 then clientEmphAttr
                 else usernameAttr h
         h = hash normalizedUsername `mod` length usernameColors
-    in withDefAttr aName $ txt (display)
+        maybeWithCurrentAttr = if current == username
+                               then withAttr currentUserAttr
+                               else id
+    in withDefAttr aName $
+       maybeWithCurrentAttr $
+       txt (display)
 
 usernameColors :: [Attr]
 usernameColors =
@@ -633,6 +671,9 @@
       )
     , ( FB.fileBrowserUnixSocketAttr
       , "Attribute for Unix sockets in the file browser"
+      )
+    , ( currentUserAttr
+      , "Attribute for the username of the user running Matterhorn"
       )
     ] <> [ (usernameAttr i, T.pack $ "Username color " <> show i)
          | i <- [0..(length usernameColors)-1]
diff --git a/src/Types.hs b/src/Types.hs
--- a/src/Types.hs
+++ b/src/Types.hs
@@ -40,11 +40,15 @@
   , entryIsDMEntry
   , ciHostname
   , ciPort
+  , ciUrlPath
   , ciUsername
   , ciPassword
+  , ciType
+  , ciAccessToken
   , Config(..)
   , HelpScreen(..)
   , PasswordSource(..)
+  , TokenSource(..)
   , MatchType(..)
   , Mode(..)
   , ChannelSelectPattern(..)
@@ -76,6 +80,7 @@
   , csShowChannelList
   , csPostMap
   , csRecentChannel
+  , csReturnChannel
   , csPostListOverlay
   , csUserListOverlay
   , csChannelListOverlay
@@ -224,6 +229,7 @@
   , isMine
   , setUserStatus
   , myUser
+  , myUsername
   , myUserId
   , myTeamId
   , usernameForUserId
@@ -284,7 +290,7 @@
 import           Data.List ( sortBy, nub, elemIndex )
 import qualified Data.Sequence as Seq
 import qualified Data.Text as T
-import           Data.Time.Clock ( UTCTime, getCurrentTime, addUTCTime )
+import           Data.Time.Clock ( getCurrentTime, addUTCTime )
 import           Data.UUID ( UUID )
 import qualified Data.Vector as Vec
 import           Lens.Micro.Platform ( at, makeLenses, lens, (%~), (^?!), (.=)
@@ -326,6 +332,12 @@
     | PasswordCommand Text
     deriving (Eq, Read, Show)
 
+-- | An access token source.
+data TokenSource =
+    TokenString Text
+    | TokenCommand Text
+    deriving (Eq, Read, Show)
+
 -- | The type of channel list group headings.
 data ChannelListGroup =
     ChannelGroupPublicChannels
@@ -355,8 +367,12 @@
            -- ^ The team name to use when connecting.
            , configPort :: Int
            -- ^ The port to use when connecting.
+           , configUrlPath :: Maybe Text
+           -- ^ The server path to use when connecting.
            , configPass :: Maybe PasswordSource
            -- ^ The password source to use when connecting.
+           , configToken :: Maybe TokenSource
+           -- ^ The token source to use when connecting.
            , configTimeFormat :: Maybe Text
            -- ^ The format string for timestamps.
            , configDateFormat :: Maybe Text
@@ -646,11 +662,17 @@
 -- necessary to start a connection with a Mattermost server. This is
 -- built up during interactive authentication and then is used to log
 -- in.
+--
+-- If the access token field is non-empty, that value is used and the
+-- username and password values are ignored.
 data ConnectionInfo =
     ConnectionInfo { _ciHostname :: Text
                    , _ciPort     :: Int
+                   , _ciUrlPath  :: Text
                    , _ciUsername :: Text
                    , _ciPassword :: Text
+                   , _ciAccessToken :: Text
+                   , _ciType     :: ConnectionType
                    }
 
 -- | We want to continue referring to posts by their IDs, but we don't
@@ -1231,12 +1253,15 @@
               , _csShowMessagePreview :: Bool
               -- ^ Whether to show the message preview area.
               , _csShowChannelList :: Bool
-              -- ^ Whether to show the channe list.
+              -- ^ Whether to show the channel list.
               , _csChannelSelectState :: ChannelSelectState
               -- ^ The state of the user's input and selection for
               -- channel selection mode.
               , _csRecentChannel :: Maybe ChannelId
               -- ^ The most recently-selected channel, if any.
+              , _csReturnChannel :: Maybe ChannelId
+              -- ^ The channel to return to after visiting one or more
+              -- unread channels.
               , _csUrlList :: List Name LinkChoice
               -- ^ The URL list used to show URLs drawn from messages in
               -- a channel.
@@ -1317,6 +1342,7 @@
                      , _csShowChannelList             = configShowChannelList $ _crConfiguration startupStateResources
                      , _csChannelSelectState          = emptyChannelSelectState
                      , _csRecentChannel               = Nothing
+                     , _csReturnChannel               = Nothing
                      , _csUrlList                     = list UrlList mempty 2
                      , _csConnectionStatus            = Connected
                      , _csWorkerIsBusy                = Nothing
@@ -1875,6 +1901,9 @@
 
 myUser :: ChatState -> User
 myUser st = st^.csMe
+
+myUsername :: ChatState -> Text
+myUsername st = userUsername $ st^.csMe
 
 -- BEWARE: you probably don't want this, but instead
 -- State.Users.withFetchedUser, since this only looks up users in the
diff --git a/src/Types/Channels.hs b/src/Types/Channels.hs
--- a/src/Types/Channels.hs
+++ b/src/Types/Channels.hs
@@ -78,7 +78,7 @@
 import           Types.Messages ( Messages, noMessages, addMessage
                                 , clientMessageToMessage, Message, MessageType )
 import           Types.Posts ( ClientMessageType(UnknownGapBefore)
-                             , newClientMessage, postIsLeave, postIsJoin )
+                             , newClientMessage )
 import           Types.Users ( TypingUsers, noTypingUsers, addTypingUser )
 import           Types.Common
 
@@ -368,9 +368,7 @@
 -- | Adjust updated time based on a message, ensuring that the updated
 -- time does not move backward.
 adjustUpdated :: Post -> ClientChannel -> ClientChannel
-adjustUpdated m
-  | postIsLeave m || postIsJoin m = id
-  | otherwise =
+adjustUpdated m =
     ccInfo.cdUpdated %~ max (maxPostTimestamp m)
 
 adjustEditedThreshold :: Post -> ClientChannel -> ClientChannel
diff --git a/src/Windows/ViewMessage.hs b/src/Windows/ViewMessage.hs
--- a/src/Windows/ViewMessage.hs
+++ b/src/Windows/ViewMessage.hs
@@ -23,7 +23,6 @@
 import           Events.Keybindings
 import           Themes
 import           Types
-import           Types.Messages ( findMessage )
 import           Markdown
 import           Draw.Messages ( nameForUserRef )
 
@@ -113,7 +112,7 @@
         hs = getHighlightSet st
 
         usernameText uids =
-            renderText' hs $
+            renderText' (myUsername st) hs $
             T.intercalate ", " $
             fmap (userSigil <>) $
             catMaybes (lookupUsername <$> F.toList uids)
@@ -145,6 +144,7 @@
                                  , mdThreadState       = NoThread
                                  , mdShowReactions     = False
                                  , mdMessageWidthLimit = Just vpWidth
+                                 , mdMyUsername        = myUsername st
                                  }
             in renderMessage md
 
diff --git a/syntax/agda.xml b/syntax/agda.xml
--- a/syntax/agda.xml
+++ b/syntax/agda.xml
@@ -3,7 +3,7 @@
   <!ENTITY charsdelim "_;.&#34;(){}@">
   <!ENTITY wordsep "(?=([&charsdelim;]|\s|$))">
 ]>
-<language name="Agda" version="5" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
+<language name="Agda" version="6" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
   <highlighting>
     <list name="reserved keywords">
       <item>abstract</item>
@@ -11,6 +11,8 @@
       <item>coinductive</item>
       <item>constructor</item>
       <item>data</item>
+      <item>do</item>
+      <item>eta-equality</item>
       <item>field</item>
       <item>forall</item>
       <item>hiding</item>
@@ -20,25 +22,33 @@
       <item>infix</item>
       <item>infixl</item>
       <item>infixr</item>
+      <item>instance</item>
       <item>let</item>
+      <item>macro</item>
+      <item>module</item>
+      <item>mutual</item>
+      <item>no-eta-equality</item>
       <item>open</item>
+      <item>overlap</item>
       <item>pattern</item>
       <item>postulate</item>
       <item>primitive</item>
       <item>private</item>
       <item>public</item>
-      <item>module</item>
-      <item>mutual</item>
       <item>quote</item>
       <item>quoteGoal</item>
       <item>quoteTerm</item>
       <item>record</item>
       <item>renaming</item>
       <item>rewrite</item>
+      <item>tactic</item>
       <item>syntax</item>
       <item>to</item>
       <item>unquote</item>
+      <item>unquoteDecl</item>
+      <item>unquoteDef</item>
       <item>using</item>
+      <item>variable</item>
       <item>where</item>
       <item>with</item>
     </list>
@@ -46,7 +56,7 @@
       <context attribute="Normal" lineEndContext="#stay" name="code">
         <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}" />
         <keyword attribute="Keyword" context="#stay" String="reserved keywords" />
-        <RegExpr attribute="Type"    context="#stay" String="(Prop|Set[₀-₉]+|Set[0-9]*)&wordsep;" />
+        <RegExpr attribute="Type"    context="#stay" String="(Prop[₀-₉]+|Prop[0-9]*|Set[₀-₉]+|Set[0-9]*)&wordsep;" />
         <RegExpr attribute="Special" context="#stay" String="(-&gt;|→|∀|λ|:|=|\|)&wordsep;" />
         <RegExpr attribute="Float"   context="#stay" String="\d+\.\d+&wordsep;" />
         <RegExpr attribute="Decimal" context="#stay" String="[0-9]+&wordsep;" />
diff --git a/syntax/c.xml b/syntax/c.xml
--- a/syntax/c.xml
+++ b/syntax/c.xml
@@ -5,9 +5,12 @@
     <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]+)*)">
     <!ENTITY exp_float "(?:[eE][+-]?&int;)">
     <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)">
+
+    <!ENTITY ispphash "(?:#|&#37;\:|\?\?=)">
+    <!ENTITY pphash "&ispphash;\s*">
 ]>
 <language name="C" section="Sources"
-          version="6" kateversion="5.0"
+          version="7" kateversion="5.0"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -116,8 +119,8 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
-        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+	<RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr context="AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
@@ -126,6 +129,8 @@
         <DetectIdentifier />
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
+        <Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
 
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
@@ -158,19 +163,19 @@
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
-        <RegExpr attribute="Preprocessor" context="Include" String="#\s*(?:include|include_next)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Include" String="&pphash;(?:include|include_next)" insensitive="true" firstNonSpace="true" />
 
         <!-- define, elif, else, endif, error, if, ifdef, ifndef, line, pragma, undef, warning -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="&pphash;define.*((?=\\))" insensitive="true" firstNonSpace="true" />
 
         <!-- folding for apple style #pragma mark - label -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
 
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;(?:el(?:se|if)|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&ispphash;\s+[0-9]+" insensitive="true" firstNonSpace="true" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Include">
@@ -203,9 +208,9 @@
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
         <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
@@ -216,8 +221,8 @@
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
         <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
diff --git a/syntax/cmake.xml b/syntax/cmake.xml
--- a/syntax/cmake.xml
+++ b/syntax/cmake.xml
@@ -9,7 +9,7 @@
   Copyright 2004 Alexander Neundorf (neundorf@kde.org)
   Copyright 2005 Dominik Haumann (dhdev@gmx.de)
   Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
-  Copyright 2013-2015,2017-2018 Alex Turbov (i.zaufi@gmail.com)
+  Copyright 2013-2015,2017-2019 Alex Turbov (i.zaufi@gmail.com)
 
  **********************************************************************
  * This library is free software; you can redistribute it and/or      *
@@ -31,7 +31,7 @@
 
 <language
     name="CMake"
-    version="11"
+    version="19"
     kateversion="2.4"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -133,6 +133,7 @@
         <item>target_link_directories</item>
         <item>target_link_libraries</item>
         <item>target_link_options</item>
+        <item>target_precompile_headers</item>
         <item>target_sources</item>
         <item>try_compile</item>
         <item>try_run</item>
@@ -248,6 +249,7 @@
     </list>
     <list name="execute_process_nargs">
       <item>COMMAND</item>
+      <item>COMMAND_ECHO</item>
       <item>ENCODING</item>
       <item>ERROR_FILE</item>
       <item>ERROR_QUIET</item>
@@ -268,6 +270,8 @@
       <item>AUTO</item>
       <item>NONE</item>
       <item>OEM</item>
+      <item>STDERR</item>
+      <item>STDOUT</item>
       <item>UTF8</item>
     </list>
     <list name="file_nargs">
@@ -287,7 +291,9 @@
       <item>FILES_MATCHING</item>
       <item>FILE_PERMISSIONS</item>
       <item>FOLLOW_SYMLINKS</item>
+      <item>FOLLOW_SYMLINK_CHAIN</item>
       <item>GENERATE</item>
+      <item>GET_RUNTIME_DEPENDENCIES</item>
       <item>GLOB</item>
       <item>GLOB_RECURSE</item>
       <item>GUARD</item>
@@ -317,6 +323,7 @@
       <item>PATTERN</item>
       <item>PERMISSIONS</item>
       <item>READ</item>
+      <item>READ_SYMLINK</item>
       <item>REGEX</item>
       <item>RELATIVE</item>
       <item>RELATIVE_PATH</item>
@@ -335,6 +342,7 @@
       <item>SHA3_512</item>
       <item>SHA512</item>
       <item>SHOW_PROGRESS</item>
+      <item>SIZE</item>
       <item>STATUS</item>
       <item>STRINGS</item>
       <item>TIMEOUT</item>
@@ -474,6 +482,13 @@
       <item>LISTS</item>
       <item>RANGE</item>
     </list>
+    <list name="get_cmake_property_sargs">
+      <item>CACHE_VARIABLES</item>
+      <item>COMMANDS</item>
+      <item>COMPONENTS</item>
+      <item>MACROS</item>
+      <item>VARIABLES</item>
+    </list>
     <list name="get_directory_property_nargs">
       <item>DEFINITION</item>
       <item>DIRECTORY</item>
@@ -484,8 +499,10 @@
       <item>CACHE</item>
       <item>DIRECTORY</item>
       <item>EXT</item>
+      <item>LAST_EXT</item>
       <item>NAME</item>
       <item>NAME_WE</item>
+      <item>NAME_WLE</item>
       <item>PATH</item>
       <item>PROGRAM</item>
       <item>PROGRAM_ARGS</item>
@@ -563,6 +580,8 @@
       <item>LENGTH</item>
       <item>ORDER</item>
       <item>OUTPUT_VARIABLE</item>
+      <item>POP_BACK</item>
+      <item>POP_FRONT</item>
       <item>PREPEND</item>
       <item>REGEX</item>
       <item>REMOVE_AT</item>
@@ -598,10 +617,14 @@
     </list>
     <list name="message_nargs">
       <item>AUTHOR_WARNING</item>
+      <item>DEBUG</item>
       <item>DEPRECATION</item>
       <item>FATAL_ERROR</item>
+      <item>NOTICE</item>
       <item>SEND_ERROR</item>
       <item>STATUS</item>
+      <item>TRACE</item>
+      <item>VERBOSE</item>
       <item>WARNING</item>
     </list>
     <list name="separate_arguments_nargs">
@@ -667,6 +690,7 @@
       <item>RANDOM</item>
       <item>RANDOM_SEED</item>
       <item>REGEX</item>
+      <item>REPEAT</item>
       <item>REPLACE</item>
       <item>REVERSE</item>
       <item>SHA1</item>
@@ -733,6 +757,7 @@
       <item>DEPENDS</item>
       <item>DEPFILE</item>
       <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
       <item>MAIN_DEPENDENCY</item>
       <item>OUTPUT</item>
       <item>POST_BUILD</item>
@@ -753,6 +778,7 @@
       <item>DEPENDS</item>
       <item>DEPFILE</item>
       <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
       <item>SOURCES</item>
       <item>USES_TERMINAL</item>
       <item>VERBATIM</item>
@@ -783,6 +809,7 @@
     </list>
     <list name="add_test_nargs">
       <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
       <item>CONFIGURATIONS</item>
       <item>NAME</item>
       <item>WORKING_DIRECTORY</item>
@@ -811,10 +838,20 @@
       <item>OPTIONAL</item>
     </list>
     <list name="enable_language_sargs">
+      <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
       <item>C</item>
+      <item>CSharp</item>
+      <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>Java</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
       <item>RC</item>
+      <item>Swift</item>
     </list>
     <list name="export_nargs">
       <item>ANDROID_MK</item>
@@ -911,12 +948,20 @@
     </list>
     <list name="project_sargs">
       <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
       <item>C</item>
+      <item>CSharp</item>
       <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>Java</item>
       <item>NONE</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
       <item>RC</item>
+      <item>Swift</item>
     </list>
     <list name="set_source_files_properties_nargs">
       <item>PROPERTIES</item>
@@ -1043,6 +1088,12 @@
       <item>PRIVATE</item>
       <item>PUBLIC</item>
     </list>
+    <list name="target_precompile_headers_nargs">
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+      <item>REUSE_FROM</item>
+    </list>
     <list name="target_sources_nargs">
       <item>INTERFACE</item>
       <item>PRIVATE</item>
@@ -1054,6 +1105,7 @@
       <item>COPY_FILE</item>
       <item>COPY_FILE_ERROR</item>
       <item>LINK_LIBRARIES</item>
+      <item>LINK_OPTIONS</item>
       <item>OUTPUT_VARIABLE</item>
       <item>RESULT_VAR</item>
       <item>SOURCES</item>
@@ -1065,6 +1117,7 @@
       <item>COMPILE_OUTPUT_VARIABLE</item>
       <item>COMPILE_RESULT_VAR</item>
       <item>LINK_LIBRARIES</item>
+      <item>LINK_OPTIONS</item>
       <item>OUTPUT_VARIABLE</item>
       <item>RUN_OUTPUT_VARIABLE</item>
       <item>RUN_RESULT_VAR</item>
@@ -1129,6 +1182,7 @@
       <item>TRACK</item>
     </list>
     <list name="ctest_submit_nargs">
+      <item>BUILD_ID</item>
       <item>CDASH_UPLOAD</item>
       <item>CDASH_UPLOAD_TYPE</item>
       <item>FILES</item>
@@ -1138,6 +1192,7 @@
       <item>RETRY_COUNT</item>
       <item>RETRY_DELAY</item>
       <item>RETURN_VALUE</item>
+      <item>SUBMIT_URL</item>
     </list>
     <list name="ctest_test_nargs">
       <item>APPEND</item>
@@ -1208,12 +1263,13 @@
       <item>CMAKE_AR</item>
       <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item>
       <item>CMAKE_ARGC</item>
-      <item>CMAKE_ARGV0</item>
+      <item>CMAKE_AUTOGEN_ORIGIN_DEPENDS</item>
       <item>CMAKE_AUTOGEN_PARALLEL</item>
       <item>CMAKE_AUTOGEN_VERBOSE</item>
       <item>CMAKE_AUTOMOC</item>
       <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item>
       <item>CMAKE_AUTOMOC_MOC_OPTIONS</item>
+      <item>CMAKE_AUTOMOC_PATH_PREFIX</item>
       <item>CMAKE_AUTOMOC_RELAXED_MODE</item>
       <item>CMAKE_AUTORCC</item>
       <item>CMAKE_AUTORCC_OPTIONS</item>
@@ -1223,6 +1279,7 @@
       <item>CMAKE_BACKWARDS_COMPATIBILITY</item>
       <item>CMAKE_BINARY_DIR</item>
       <item>CMAKE_BUILD_RPATH</item>
+      <item>CMAKE_BUILD_RPATH_USE_ORIGIN</item>
       <item>CMAKE_BUILD_TOOL</item>
       <item>CMAKE_BUILD_TYPE</item>
       <item>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</item>
@@ -1248,6 +1305,7 @@
       <item>CMAKE_CROSSCOMPILING_EMULATOR</item>
       <item>CMAKE_CTEST_COMMAND</item>
       <item>CMAKE_CUDA_EXTENSIONS</item>
+      <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>
       <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item>
       <item>CMAKE_CUDA_STANDARD</item>
       <item>CMAKE_CUDA_STANDARD_REQUIRED</item>
@@ -1274,16 +1332,19 @@
       <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item>
       <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item>
       <item>CMAKE_ECLIPSE_MAKE_ARGUMENTS</item>
+      <item>CMAKE_ECLIPSE_RESOURCE_ENCODING</item>
       <item>CMAKE_ECLIPSE_VERSION</item>
       <item>CMAKE_EDIT_COMMAND</item>
       <item>CMAKE_ENABLE_EXPORTS</item>
       <item>CMAKE_ERROR_DEPRECATED</item>
       <item>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
       <item>CMAKE_EXECUTABLE_SUFFIX</item>
+      <item>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</item>
       <item>CMAKE_EXE_LINKER_FLAGS</item>
       <item>CMAKE_EXE_LINKER_FLAGS_INIT</item>
       <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
       <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item>
+      <item>CMAKE_EXPORT_PACKAGE_REGISTRY</item>
       <item>CMAKE_EXTRA_GENERATOR</item>
       <item>CMAKE_EXTRA_INCLUDE_FILES</item>
       <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item>
@@ -1297,6 +1358,8 @@
       <item>CMAKE_FIND_PACKAGE_NAME</item>
       <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>
       <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_PACKAGE_PREFER_CONFIG</item>
+      <item>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</item>
       <item>CMAKE_FIND_PACKAGE_SORT_DIRECTION</item>
       <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item>
       <item>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</item>
@@ -1305,7 +1368,15 @@
       <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item>
       <item>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</item>
       <item>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</item>
+      <item>CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</item>
+      <item>CMAKE_FIND_USE_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</item>
       <item>CMAKE_FOLDER</item>
+      <item>CMAKE_FRAMEWORK</item>
       <item>CMAKE_FRAMEWORK_PATH</item>
       <item>CMAKE_Fortran_FORMAT</item>
       <item>CMAKE_Fortran_MODDIR_DEFAULT</item>
@@ -1316,6 +1387,10 @@
       <item>CMAKE_GENERATOR_INSTANCE</item>
       <item>CMAKE_GENERATOR_PLATFORM</item>
       <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>CMAKE_GLOBAL_AUTOGEN_TARGET</item>
+      <item>CMAKE_GLOBAL_AUTOGEN_TARGET_NAME</item>
+      <item>CMAKE_GLOBAL_AUTORCC_TARGET</item>
+      <item>CMAKE_GLOBAL_AUTORCC_TARGET_NAME</item>
       <item>CMAKE_GNUtoMS</item>
       <item>CMAKE_HAS_ANSI_STRING_STREAM</item>
       <item>CMAKE_HOME_DIRECTORY</item>
@@ -1374,6 +1449,7 @@
       <item>CMAKE_INSTALL_OPENMP_LIBRARIES</item>
       <item>CMAKE_INSTALL_PREFIX</item>
       <item>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</item>
+      <item>CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
       <item>CMAKE_INSTALL_RPATH</item>
       <item>CMAKE_INSTALL_RPATH_USE_LINK_PATH</item>
       <item>CMAKE_INSTALL_RUNSTATEDIR</item>
@@ -1412,12 +1488,16 @@
       <item>CMAKE_MAJOR_VERSION</item>
       <item>CMAKE_MAKE_PROGRAM</item>
       <item>CMAKE_MATCH_COUNT</item>
+      <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>
+      <item>CMAKE_MESSAGE_INDENT</item>
       <item>CMAKE_MFC_FLAG</item>
       <item>CMAKE_MINIMUM_REQUIRED_VERSION</item>
       <item>CMAKE_MINOR_VERSION</item>
       <item>CMAKE_MODULE_LINKER_FLAGS</item>
       <item>CMAKE_MODULE_LINKER_FLAGS_INIT</item>
       <item>CMAKE_MODULE_PATH</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_MSVC_RUNTIME_LIBRARY</item>
       <item>CMAKE_NETRC</item>
       <item>CMAKE_NETRC_FILE</item>
       <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item>
@@ -1440,6 +1520,8 @@
       <item>CMAKE_PROGRAM_PATH</item>
       <item>CMAKE_PROJECT_DESCRIPTION</item>
       <item>CMAKE_PROJECT_HOMEPAGE_URL</item>
+      <item>CMAKE_PROJECT_INCLUDE</item>
+      <item>CMAKE_PROJECT_INCLUDE_BEFORE</item>
       <item>CMAKE_PROJECT_NAME</item>
       <item>CMAKE_PROJECT_VERSION</item>
       <item>CMAKE_PROJECT_VERSION_MAJOR</item>
@@ -1451,6 +1533,7 @@
       <item>CMAKE_REQUIRED_FLAGS</item>
       <item>CMAKE_REQUIRED_INCLUDES</item>
       <item>CMAKE_REQUIRED_LIBRARIES</item>
+      <item>CMAKE_REQUIRED_LINK_OPTIONS</item>
       <item>CMAKE_REQUIRED_QUIET</item>
       <item>CMAKE_ROOT</item>
       <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item>
@@ -1495,6 +1578,7 @@
       <item>CMAKE_SYSTEM_PROGRAM_PATH</item>
       <item>CMAKE_SYSTEM_VERSION</item>
       <item>CMAKE_Swift_LANGUAGE_VERSION</item>
+      <item>CMAKE_Swift_MODULE_DIRECTORY</item>
       <item>CMAKE_THREAD_LIBS_INIT</item>
       <item>CMAKE_THREAD_PREFER_PTHREAD</item>
       <item>CMAKE_TOOLCHAIN_FILE</item>
@@ -1502,6 +1586,8 @@
       <item>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</item>
       <item>CMAKE_TRY_COMPILE_TARGET_TYPE</item>
       <item>CMAKE_TWEAK_VERSION</item>
+      <item>CMAKE_UNITY_BUILD</item>
+      <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item>
       <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item>
       <item>CMAKE_USE_PTHREADS_INIT</item>
       <item>CMAKE_USE_RELATIVE_PATHS</item>
@@ -1515,6 +1601,7 @@
       <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item>
       <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item>
       <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>
+      <item>CMAKE_VS_JUST_MY_CODE_DEBUGGING</item>
       <item>CMAKE_VS_MSBUILD_COMMAND</item>
       <item>CMAKE_VS_NsightTegra_VERSION</item>
       <item>CMAKE_VS_PLATFORM_NAME</item>
@@ -1538,6 +1625,7 @@
       <item>CMAKE_XCODE_PLATFORM_TOOLSET</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
+      <item>CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
       <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
@@ -1644,6 +1732,7 @@
       <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item>
       <item>CPACK_IFW_PACKAGE_RESOURCES</item>
       <item>CPACK_IFW_PACKAGE_START_MENU_DIRECTORY</item>
+      <item>CPACK_IFW_PACKAGE_STYLE_SHEET</item>
       <item>CPACK_IFW_PACKAGE_TITLE</item>
       <item>CPACK_IFW_PACKAGE_TITLE_COLOR</item>
       <item>CPACK_IFW_PACKAGE_WATERMARK</item>
@@ -1664,6 +1753,7 @@
       <item>CPACK_INSTALL_COMMANDS</item>
       <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
       <item>CPACK_INSTALL_SCRIPT</item>
+      <item>CPACK_INSTALL_SCRIPTS</item>
       <item>CPACK_MONOLITHIC_INSTALL</item>
       <item>CPACK_NSIS_COMPRESSOR</item>
       <item>CPACK_NSIS_CONTACT</item>
@@ -1719,6 +1809,7 @@
       <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item>
       <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item>
       <item>CPACK_PACKAGE_NAME</item>
+      <item>CPACK_PACKAGE_RELOCATABLE</item>
       <item>CPACK_PACKAGE_VENDOR</item>
       <item>CPACK_PACKAGE_VERSION</item>
       <item>CPACK_PACKAGE_VERSION_MAJOR</item>
@@ -1884,6 +1975,7 @@
       <item>CTEST_SCP_COMMAND</item>
       <item>CTEST_SITE</item>
       <item>CTEST_SOURCE_DIRECTORY</item>
+      <item>CTEST_SUBMIT_URL</item>
       <item>CTEST_SVN_COMMAND</item>
       <item>CTEST_SVN_OPTIONS</item>
       <item>CTEST_SVN_UPDATE_OPTIONS</item>
@@ -1893,6 +1985,7 @@
       <item>CTEST_UPDATE_COMMAND</item>
       <item>CTEST_UPDATE_OPTIONS</item>
       <item>CTEST_UPDATE_VERSION_ONLY</item>
+      <item>CTEST_UPDATE_VERSION_OVERRIDE</item>
       <item>CTEST_USE_LAUNCHERS</item>
       <item>CYGWIN</item>
       <item>EXECUTABLE_OUTPUT_PATH</item>
@@ -1964,6 +2057,8 @@
       <item>PROJECT_VERSION_PATCH</item>
       <item>PROJECT_VERSION_TWEAK</item>
       <item>QTIFWDIR</item>
+      <item>SWIG_OUTFILE_DIR</item>
+      <item>SWIG_SOURCE_FILE_EXTENSIONS</item>
       <item>THREADS_PREFER_PTHREAD_FLAG</item>
       <item>UNIX</item>
       <item>WIN32</item>
@@ -1973,6 +2068,45 @@
       <item>XCODE</item>
       <item>XCODE_VERSION</item>
     </list>
+
+    <list name="environment-variables">
+      <item>CC</item>
+      <item>CFLAGS</item>
+      <item>CMAKE_APPBUNDLE_PATH</item>
+      <item>CMAKE_BUILD_PARALLEL_LEVEL</item>
+      <item>CMAKE_CONFIG_TYPE</item>
+      <item>CMAKE_FRAMEWORK_PATH</item>
+      <item>CMAKE_GENERATOR</item>
+      <item>CMAKE_GENERATOR_INSTANCE</item>
+      <item>CMAKE_GENERATOR_PLATFORM</item>
+      <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_NO_VERBOSE</item>
+      <item>CMAKE_OSX_ARCHITECTURES</item>
+      <item>CMAKE_PREFIX_PATH</item>
+      <item>CSFLAGS</item>
+      <item>CTEST_INTERACTIVE_DEBUG_MODE</item>
+      <item>CTEST_OUTPUT_ON_FAILURE</item>
+      <item>CTEST_PARALLEL_LEVEL</item>
+      <item>CTEST_PROGRESS_OUTPUT</item>
+      <item>CTEST_USE_LAUNCHERS_DEFAULT</item>
+      <item>CUDACXX</item>
+      <item>CUDAFLAGS</item>
+      <item>CUDAHOSTCXX</item>
+      <item>CXX</item>
+      <item>CXXFLAGS</item>
+      <item>DASHBOARD_TEST_FROM_CTEST</item>
+      <item>DESTDIR</item>
+      <item>FC</item>
+      <item>FFLAGS</item>
+      <item>LDFLAGS</item>
+      <item>MACOSX_DEPLOYMENT_TARGET</item>
+      <item>PATH</item>
+      <item>RC</item>
+      <item>RCFLAGS</item>
+      <item>SWIFTC</item>
+      <item>VERBOSE</item>
+    </list>
     <list name="global-properties">
       <item>ALLOW_DUPLICATE_CUSTOM_TARGETS</item>
       <item>AUTOGEN_SOURCE_GROUP</item>
@@ -1982,6 +2116,7 @@
       <item>AUTORCC_SOURCE_GROUP</item>
       <item>CMAKE_CXX_KNOWN_FEATURES</item>
       <item>CMAKE_C_KNOWN_FEATURES</item>
+      <item>CMAKE_ROLE</item>
       <item>DEBUG_CONFIGURATIONS</item>
       <item>DISABLED_FEATURES</item>
       <item>ECLIPSE_EXTRA_NATURES</item>
@@ -2014,6 +2149,7 @@
       <item>XCODE_EMIT_EFFECTIVE_PLATFORM_NAME</item>
     </list>
     <list name="directory-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
       <item>ADDITIONAL_MAKE_CLEAN_FILES</item>
       <item>BINARY_DIR</item>
       <item>BUILDSYSTEM_TARGETS</item>
@@ -2046,6 +2182,7 @@
       <item>VS_STARTUP_PROJECT</item>
     </list>
     <list name="target-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
       <item>ALIASED_TARGET</item>
       <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item>
       <item>ANDROID_API</item>
@@ -2067,17 +2204,25 @@
       <item>ARCHIVE_OUTPUT_DIRECTORY</item>
       <item>ARCHIVE_OUTPUT_NAME</item>
       <item>AUTOGEN_BUILD_DIR</item>
+      <item>AUTOGEN_ORIGIN_DEPENDS</item>
       <item>AUTOGEN_TARGET_DEPENDS</item>
       <item>AUTOMOC</item>
+      <item>AUTOMOC_COMPILER_PREDEFINES</item>
       <item>AUTOMOC_DEPEND_FILTERS</item>
+      <item>AUTOMOC_EXECUTABLE</item>
+      <item>AUTOMOC_MACRO_NAMES</item>
       <item>AUTOMOC_MOC_OPTIONS</item>
+      <item>AUTOMOC_PATH_PREFIX</item>
       <item>AUTORCC</item>
+      <item>AUTORCC_EXECUTABLE</item>
       <item>AUTORCC_OPTIONS</item>
       <item>AUTOUIC</item>
+      <item>AUTOUIC_EXECUTABLE</item>
       <item>AUTOUIC_OPTIONS</item>
       <item>AUTOUIC_SEARCH_PATHS</item>
       <item>BINARY_DIR</item>
       <item>BUILD_RPATH</item>
+      <item>BUILD_RPATH_USE_ORIGIN</item>
       <item>BUILD_WITH_INSTALL_NAME_DIR</item>
       <item>BUILD_WITH_INSTALL_RPATH</item>
       <item>BUNDLE</item>
@@ -2109,6 +2254,7 @@
       <item>DEFINE_SYMBOL</item>
       <item>DEPLOYMENT_ADDITIONAL_FILES</item>
       <item>DEPLOYMENT_REMOTE_DIRECTORY</item>
+      <item>DISABLE_PRECOMPILE_HEADERS</item>
       <item>DOTNET_TARGET_FRAMEWORK_VERSION</item>
       <item>ENABLE_EXPORTS</item>
       <item>EXCLUDE_FROM_ALL</item>
@@ -2143,6 +2289,7 @@
       <item>IMPORT_SUFFIX</item>
       <item>INCLUDE_DIRECTORIES</item>
       <item>INSTALL_NAME_DIR</item>
+      <item>INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
       <item>INSTALL_RPATH</item>
       <item>INSTALL_RPATH_USE_LINK_PATH</item>
       <item>INTERFACE_AUTOUIC_OPTIONS</item>
@@ -2155,6 +2302,7 @@
       <item>INTERFACE_LINK_LIBRARIES</item>
       <item>INTERFACE_LINK_OPTIONS</item>
       <item>INTERFACE_POSITION_INDEPENDENT_CODE</item>
+      <item>INTERFACE_PRECOMPILE_HEADERS</item>
       <item>INTERFACE_SOURCES</item>
       <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item>
       <item>INTERPROCEDURAL_OPTIMIZATION</item>
@@ -2182,6 +2330,7 @@
       <item>MACOSX_FRAMEWORK_INFO_PLIST</item>
       <item>MACOSX_RPATH</item>
       <item>MANUALLY_ADDED_DEPENDENCIES</item>
+      <item>MSVC_RUNTIME_LIBRARY</item>
       <item>NAME</item>
       <item>NO_SONAME</item>
       <item>NO_SYSTEM_FROM_IMPORTED</item>
@@ -2190,6 +2339,8 @@
       <item>PDB_NAME</item>
       <item>PDB_OUTPUT_DIRECTORY</item>
       <item>POSITION_INDEPENDENT_CODE</item>
+      <item>PRECOMPILE_HEADERS</item>
+      <item>PRECOMPILE_HEADERS_REUSE_FROM</item>
       <item>PREFIX</item>
       <item>PRIVATE_HEADER</item>
       <item>PROJECT_LABEL</item>
@@ -2207,7 +2358,14 @@
       <item>STATIC_LIBRARY_FLAGS</item>
       <item>STATIC_LIBRARY_OPTIONS</item>
       <item>SUFFIX</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_MODULE_DIRECTORY</item>
+      <item>Swift_MODULE_NAME</item>
       <item>TYPE</item>
+      <item>UNITY_BUILD</item>
+      <item>UNITY_BUILD_BATCH_SIZE</item>
+      <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item>
+      <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>
       <item>VERSION</item>
       <item>VISIBILITY_INLINES_HIDDEN</item>
       <item>VS_CONFIGURATION_TYPE</item>
@@ -2219,13 +2377,18 @@
       <item>VS_DOTNET_REFERENCES</item>
       <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item>
       <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item>
+      <item>VS_DPI_AWARE</item>
       <item>VS_GLOBAL_KEYWORD</item>
       <item>VS_GLOBAL_PROJECT_TYPES</item>
       <item>VS_GLOBAL_ROOTNAMESPACE</item>
       <item>VS_IOT_EXTENSIONS_VERSION</item>
       <item>VS_IOT_STARTUP_TASK</item>
+      <item>VS_JUST_MY_CODE_DEBUGGING</item>
       <item>VS_KEYWORD</item>
       <item>VS_MOBILE_EXTENSIONS_VERSION</item>
+      <item>VS_NO_SOLUTION_DEPLOY</item>
+      <item>VS_PACKAGE_REFERENCES</item>
+      <item>VS_PROJECT_IMPORT</item>
       <item>VS_SCC_AUXPATH</item>
       <item>VS_SCC_LOCALPATH</item>
       <item>VS_SCC_PROJECTNAME</item>
@@ -2239,10 +2402,13 @@
       <item>WIN32_EXECUTABLE</item>
       <item>WINDOWS_EXPORT_ALL_SYMBOLS</item>
       <item>XCODE_EXPLICIT_FILE_TYPE</item>
+      <item>XCODE_GENERATE_SCHEME</item>
       <item>XCODE_PRODUCT_TYPE</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
       <item>XCODE_SCHEME_ARGUMENTS</item>
+      <item>XCODE_SCHEME_DEBUG_AS_ROOT</item>
+      <item>XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
       <item>XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
       <item>XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
       <item>XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
@@ -2283,7 +2449,11 @@
       <item>SKIP_AUTOMOC</item>
       <item>SKIP_AUTORCC</item>
       <item>SKIP_AUTOUIC</item>
+      <item>SKIP_PRECOMPILE_HEADERS</item>
+      <item>SKIP_UNITY_BUILD_INCLUSION</item>
       <item>SYMBOLIC</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_DIAGNOSTICS_FILE</item>
       <item>VS_COPY_TO_OUT_DIR</item>
       <item>VS_DEPLOYMENT_CONTENT</item>
       <item>VS_DEPLOYMENT_LOCATION</item>
@@ -2324,6 +2494,7 @@
       <item>REQUIRED_FILES</item>
       <item>RESOURCE_LOCK</item>
       <item>RUN_SERIAL</item>
+      <item>SKIP_REGULAR_EXPRESSION</item>
       <item>SKIP_RETURN_CODE</item>
       <item>TIMEOUT</item>
       <item>TIMEOUT_AFTER_MATCH</item>
@@ -2350,61 +2521,76 @@
     <list name="generator-expressions">
       <item>0</item>
       <item>1</item>
-      <item>AND</item>
-      <item>ANGLE-R</item>
       <item>BOOL</item>
-      <item>BUILD_INTERFACE</item>
-      <item>COMMA</item>
-      <item>COMPILE_FEATURES</item>
-      <item>COMPILE_LANGUAGE</item>
+      <item>AND</item>
+      <item>OR</item>
+      <item>NOT</item>
+      <item>STREQUAL</item>
+      <item>EQUAL</item>
+      <item>IN_LIST</item>
+      <item>VERSION_LESS</item>
+      <item>VERSION_GREATER</item>
+      <item>VERSION_EQUAL</item>
+      <item>VERSION_LESS_EQUAL</item>
+      <item>VERSION_GREATER_EQUAL</item>
+      <item>TARGET_EXISTS</item>
       <item>CONFIG</item>
-      <item>CXX_COMPILER_ID</item>
-      <item>CXX_COMPILER_VERSION</item>
+      <item>PLATFORM_ID</item>
       <item>C_COMPILER_ID</item>
+      <item>CXX_COMPILER_ID</item>
+      <item>CUDA_COMPILER_ID</item>
+      <item>Fortran_COMPILER_ID</item>
       <item>C_COMPILER_VERSION</item>
-      <item>EQUAL</item>
-      <item>GENEX_EVAL</item>
+      <item>CXX_COMPILER_VERSION</item>
+      <item>CUDA_COMPILER_VERSION</item>
+      <item>Fortran_COMPILER_VERSION</item>
+      <item>TARGET_POLICY</item>
+      <item>COMPILE_FEATURES</item>
+      <item>COMPILE_LANG_AND_ID</item>
+      <item>COMPILE_LANGUAGE</item>
+      <item>ANGLE-R</item>
+      <item>COMMA</item>
+      <item>SEMICOLON</item>
       <item>IF</item>
-      <item>INSTALL_INTERFACE</item>
-      <item>INSTALL_PREFIX</item>
-      <item>IN_LIST</item>
       <item>JOIN</item>
-      <item>LINK_ONLY</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>FILTER</item>
       <item>LOWER_CASE</item>
-      <item>MAKE_C_IDENTIFIER</item>
-      <item>NOT</item>
-      <item>OR</item>
-      <item>PLATFORM_ID</item>
-      <item>SEMICOLON</item>
-      <item>SHELL_PATH</item>
-      <item>STREQUAL</item>
-      <item>TARGET_BUNDLE_CONTENT_DIR</item>
-      <item>TARGET_BUNDLE_DIR</item>
-      <item>TARGET_EXISTS</item>
+      <item>UPPER_CASE</item>
+      <item>GENEX_EVAL</item>
+      <item>TARGET_GENEX_EVAL</item>
+      <item>TARGET_NAME_IF_EXISTS</item>
       <item>TARGET_FILE</item>
-      <item>TARGET_FILE_DIR</item>
+      <item>TARGET_FILE_BASE_NAME</item>
+      <item>TARGET_FILE_PREFIX</item>
+      <item>TARGET_FILE_SUFFIX</item>
       <item>TARGET_FILE_NAME</item>
-      <item>TARGET_GENEX_EVAL</item>
+      <item>TARGET_FILE_DIR</item>
       <item>TARGET_LINKER_FILE</item>
-      <item>TARGET_LINKER_FILE_DIR</item>
+      <item>TARGET_LINKER_FILE_BASE_NAME</item>
+      <item>TARGET_LINKER_FILE_PREFIX</item>
+      <item>TARGET_LINKER_FILE_SUFFIX</item>
       <item>TARGET_LINKER_FILE_NAME</item>
-      <item>TARGET_NAME</item>
-      <item>TARGET_NAME_IF_EXISTS</item>
-      <item>TARGET_OBJECTS</item>
+      <item>TARGET_LINKER_FILE_DIR</item>
+      <item>TARGET_SONAME_FILE</item>
+      <item>TARGET_SONAME_FILE</item>
+      <item>TARGET_SONAME_FILE_NAME</item>
+      <item>TARGET_SONAME_FILE_DIR</item>
       <item>TARGET_PDB_FILE</item>
-      <item>TARGET_PDB_FILE_DIR</item>
+      <item>TARGET_PDB_FILE_BASE_NAME</item>
       <item>TARGET_PDB_FILE_NAME</item>
-      <item>TARGET_POLICY</item>
+      <item>TARGET_PDB_FILE_DIR</item>
+      <item>TARGET_BUNDLE_DIR</item>
+      <item>TARGET_BUNDLE_CONTENT_DIR</item>
       <item>TARGET_PROPERTY</item>
-      <item>TARGET_SONAME_FILE</item>
-      <item>TARGET_SONAME_FILE_DIR</item>
-      <item>TARGET_SONAME_FILE_NAME</item>
-      <item>UPPER_CASE</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_LESS_EQUAL</item>
+      <item>INSTALL_PREFIX</item>
+      <item>TARGET_NAME</item>
+      <item>LINK_ONLY</item>
+      <item>INSTALL_INTERFACE</item>
+      <item>BUILD_INTERFACE</item>
+      <item>MAKE_C_IDENTIFIER</item>
+      <item>TARGET_OBJECTS</item>
+      <item>SHELL_PATH</item>
     </list>
 
     <contexts>
@@ -2501,6 +2687,7 @@
         <WordDetect String="target_link_directories" insensitive="true" attribute="Command" context="target_link_directories_ctx" />
         <WordDetect String="target_link_libraries" insensitive="true" attribute="Command" context="target_link_libraries_ctx" />
         <WordDetect String="target_link_options" insensitive="true" attribute="Command" context="target_link_options_ctx" />
+        <WordDetect String="target_precompile_headers" insensitive="true" attribute="Command" context="target_precompile_headers_ctx" />
         <WordDetect String="target_sources" insensitive="true" attribute="Command" context="target_sources_ctx" />
         <WordDetect String="try_compile" insensitive="true" attribute="Command" context="try_compile_ctx" />
         <WordDetect String="try_run" insensitive="true" attribute="Command" context="try_run_ctx" />
@@ -2637,11 +2824,18 @@
         <DetectChar attribute="Normal Text" context="execute_process_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op">
+        <DetectChar attribute="Normal Text" context="execute_process_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
         <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
+        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx">
         <DetectChar attribute="Normal Text" context="file_ctx_op" char="(" />
       </context>
@@ -2711,6 +2905,7 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx_op">
         <IncludeRules context="EndCmdPop2" />
+        <keyword attribute="Special Args" context="#stay" String="get_cmake_property_sargs" />
         <keyword attribute="Property" context="#stay" String="global-properties" />
         <IncludeRules context="Detect More global-properties" />
         <IncludeRules context="User Function Args" />
@@ -2953,18 +3148,30 @@
         <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx">
         <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx">
         <DetectChar attribute="Normal Text" context="add_definitions_ctx_op" char="(" />
       </context>
@@ -3014,10 +3221,16 @@
         <DetectChar attribute="Normal Text" context="add_test_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_test_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx">
         <DetectChar attribute="Normal Text" context="aux_source_directory_ctx_op" char="(" />
       </context>
@@ -3297,6 +3510,14 @@
         <keyword attribute="Named Args" context="#stay" String="target_link_options_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx">
+        <DetectChar attribute="Normal Text" context="target_precompile_headers_ctx_op" char="(" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op">
+        <IncludeRules context="EndCmdPop2" />
+        <keyword attribute="Named Args" context="#stay" String="target_precompile_headers_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx">
         <DetectChar attribute="Normal Text" context="target_sources_ctx_op" char="(" />
       </context>
@@ -3538,6 +3759,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARY_DIRS\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_COUNT\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_STRING\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_MODULE_NAME\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_POSTFIX\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX\b" />
@@ -3598,6 +3820,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_LIBRARIES\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_VISIBILITY_PRESET\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARGV[0-9]+\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_DISABLE_FIND_PACKAGE_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;\b" />
@@ -3609,8 +3832,8 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP&id_re;\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP[0-9]{4}\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP[0-9]{4}\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PROJECT_&id_re;_INCLUDE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;\b" />
@@ -3629,7 +3852,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_GROUP\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_HIDDEN\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_REQUIRED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DESCRIPTION\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DESCRIPTION\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_FILE_NAME\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_BREAKS\b" />
@@ -3706,11 +3929,28 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
-        <RegExpr attribute="Environment Variable Substitution" context="#stay" String="\$ENV\{\s*[\w-]+\s*\}" />
+        <RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}" />
+        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$ENV\{\s*[\w-]+\s*\}" lookAhead="true" />
         <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />
         <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" />
       </context>
 
+      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
+        <DetectIdentifier />
+        <DetectChar attribute="Environment Variable Substitution" context="EnvVarSubstVar" char="{" />
+        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />
+      </context>
+
+      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubstVar">
+        <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_DIR\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_ROOT\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;FLAGS\b" />
+        <DetectIdentifier />
+        <DetectChar attribute="Environment Variable Substitution" context="#pop#pop" char="}" />
+      </context>
+
       <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
         <IncludeRules context="Detect Builtin Variables" />
         <DetectIdentifier />
@@ -3809,10 +4049,12 @@
       <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
       <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" />
       <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
+      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
       <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />
       <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
+      <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
       <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
+      <itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false" />
       <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" />
       <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" />
       <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
diff --git a/syntax/coffee.xml b/syntax/coffee.xml
--- a/syntax/coffee.xml
+++ b/syntax/coffee.xml
@@ -2,8 +2,8 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 
 <language name="CoffeeScript"
-          version="8"
-          kateversion="3.4"
+          version="10"
+          kateversion="5.0"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
           mimetype="text/x-coffeescript;application/x-coffeescript;application/vnd.coffeescript"
@@ -251,27 +251,27 @@
         <RegExpr attribute="Error" context="#stay" String="String\.raw(?=`)"/>
         <StringDetect attribute="JavaScript Template" context="Javascript RawTemplate" String="String.raw\`"/>
         <!-- Contexts of javascript.xml. -->
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript Object" char="{" beginRegion="Brace" />
+        <DetectChar context="JavaScript Object" char="{" beginRegion="Brace" />
       </context>
       <context name="JavaScript Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <DetectChar context="#pop" char="`" lookAhead="true"/>
-        <DetectChar attribute="JavaScript Symbol" context="#pop" char="}" endRegion="Brace"/>
+        <DetectChar context="#pop" char="}" endRegion="Brace"/>
         <IncludeRules context="Overwrite Javascript"/>
         <IncludeRules context="Object##JavaScript"/>
       </context>
       <context name="Javascript Template" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">
         <RegExpr attribute="Escape" context="#stay" String="\\\\\\`"/>
-        <Detect2Chars attribute="JavaScript Template" context="#pop" char="\" char1="`"/> <!-- End template. -->
+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->
         <DetectChar context="#pop" char="`" lookAhead="true"/>
         <Detect2Chars attribute="JavaScript Substitution" context="Javascript Substitution" char="$" char1="{"/>
         <IncludeRules context="Template##JavaScript"/>
-        <RegExpr attribute="Error" context="#stay" String="([^\\\s](?=`)|\S(?=\s+`))"/>
+        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
       </context>
       <context name="Javascript RawTemplate" attribute="JavaScript Template" lineEndContext="#stay">
         <Detect2Chars attribute="JavaScript Template" context="#stay" char="\" char1="\"/>
-        <Detect2Chars attribute="JavaScript Template" context="#pop" char="\" char1="`"/>
+        <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`"/> <!-- End template. -->
         <DetectChar context="#pop" char="`" lookAhead="true"/>
-        <RegExpr attribute="Error" context="#stay" String="([^\\\s](?=`)|\S(?=\s+`))"/>
+        <RegExpr attribute="Error" context="#stay" String="(?:[^\\\s](?=`)|\S(?=\s+`))"/>
       </context>
       <context name="Javascript Substitution" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <DetectChar attribute="Javascript" context="#pop" char="`" lookAhead="true"/>
@@ -279,16 +279,17 @@
         <IncludeRules context="Overwrite Javascript"/>
         <IncludeRules context="Substitution##JavaScript"/>
       </context>
+
       <!-- Embedded Javascript (triple backticks). -->
       <context name="Javascript Triple Backticks" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <StringDetect attribute="Javascript" context="#pop" String="```" endRegion="Javascript TB"/>
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
+        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
       </context>
       <context name="JavaScript-TB Object" attribute="Normal" lineEndContext="#stay" noIndentationBasedFolding="1">
         <StringDetect attribute="Javascript" context="#pop" String="```" lookAhead="true"/>
-        <DetectChar attribute="JavaScript Symbol" context="#pop" char="}" endRegion="Brace"/>
-        <DetectChar attribute="JavaScript Symbol" context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
+        <DetectChar context="#pop" char="}" endRegion="Brace"/>
+        <DetectChar context="JavaScript-TB Object" char="{" beginRegion="Brace"/>
         <IncludeRules context="Object##JavaScript"/>
       </context>
     </contexts>
@@ -320,7 +321,6 @@
       <itemData name="Literal Character Escape" defStyleNum="dsChar" spellChecking="false" />
       <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
 
-      <itemData name="JavaScript Symbol" defStyleNum="dsOperator" spellChecking="false"/>
       <itemData name="JavaScript Template" defStyleNum="dsVerbatimString"/>
       <itemData name="JavaScript Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
     </itemDatas>
diff --git a/syntax/cpp.xml b/syntax/cpp.xml
--- a/syntax/cpp.xml
+++ b/syntax/cpp.xml
@@ -11,12 +11,12 @@
 <language
     name="C++"
     section="Sources"
-    version="7"
+    version="8"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.ino;*.pde;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="9"
diff --git a/syntax/css.xml b/syntax/css.xml
--- a/syntax/css.xml
+++ b/syntax/css.xml
@@ -38,7 +38,8 @@
 
 -->
 
-<language name="CSS" version="8" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="CSS" version="9" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+    <!-- https://www.w3.org/Style/CSS/current-work -->
 
     <highlighting>
         <list name="properties">
@@ -1258,8 +1259,9 @@
             <item>selection</item>
         </list>
 
-        <list name="pseudoclass-not">
+        <list name="pseudoclass-selector">
             <item>not</item>
+            <item>matches</item>
         </list>
 
         <list name="pseudoclasses-@page">
@@ -1383,8 +1385,8 @@
                 <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
                 <keyword attribute="Value" context="#stay" String="values" />
                 <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3}){1,2}\b" />
-                <RegExpr attribute="Number" context="FindUnits" String="[-+]?[0-9.]+(?![-+])" />
+                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
+                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])" />
                 <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
             </context>
 
@@ -1393,7 +1395,8 @@
             </context>
 
             <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|ch|rem|vw|vh|vm|px|in|cm|mm|pt|pc|deg|rad|grad|turn|ms|s|Hz|kHz)\b)(?![-+])" />
+                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
+                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)(?![-+])" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
@@ -1548,7 +1551,7 @@
 
             <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-not" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
                 <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
                 <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
diff --git a/syntax/diff.xml b/syntax/diff.xml
--- a/syntax/diff.xml
+++ b/syntax/diff.xml
@@ -15,7 +15,7 @@
     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
      Fixed folding.
 -->
-<language name="Diff" version="4" kateversion="5.0" section="Other" extensions="*.diff;*patch" mimetype="text/x-patch">
+<language name="Diff" version="5" kateversion="5.0" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
 
   <highlighting>
 
diff --git a/syntax/djangotemplate.xml b/syntax/djangotemplate.xml
--- a/syntax/djangotemplate.xml
+++ b/syntax/djangotemplate.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="Django HTML Template" version="3" kateversion="2.4" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="4" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
 
 <!--
     Based off of the katepart html syntax highlighting by Wilbert Berendsen.
diff --git a/syntax/doxygen.xml b/syntax/doxygen.xml
--- a/syntax/doxygen.xml
+++ b/syntax/doxygen.xml
@@ -4,7 +4,7 @@
     <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->
 ]>
 <language name="Doxygen"
-          version="5"
+          version="6"
           kateversion="5.0"
           section="Markup"
           extensions="*.dox;*.doxygen"
@@ -463,7 +463,7 @@
       <itemData name="Tags"         defStyleNum="dsAnnotation" bold="1" />
       <itemData name="Custom Tags"  defStyleNum="dsAnnotation" />
       <itemData name="Word"         defStyleNum="dsCommentVar" bold="1" italic="0" />
-      <itemData name="HTML Tag"     defStyleNum="dsKeyword" color="#000000" bold="1" italic="0" />
+      <itemData name="HTML Tag"     defStyleNum="dsKeyword" bold="1" italic="0" />
       <itemData name="Entities"     defStyleNum="dsOthers" color="#4086C0" bold="1" italic="1" />
       <itemData name="Description"  defStyleNum="dsDocumentation" />
       <itemData name="Comment"      defStyleNum="dsComment" />
diff --git a/syntax/elixir.xml b/syntax/elixir.xml
--- a/syntax/elixir.xml
+++ b/syntax/elixir.xml
@@ -24,13 +24,13 @@
 <language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com)"
           extensions="*.ex;*.exs;*.eex;*.xml.eex;*.js.eex"
           indenter="elixir"
-          kateversion="5.0"
+          kateversion="5.53"
           license="LGPLv2+"
           mimetype="text/x-elixir"
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="4">
+          version="5">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
diff --git a/syntax/elm.xml b/syntax/elm.xml
--- a/syntax/elm.xml
+++ b/syntax/elm.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Elm" version="1.0" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
+<language name="Elm" version="2" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
   <highlighting>
     <list name="declarations">
       <item>type</item>
@@ -40,7 +40,7 @@
       <context attribute="Normal" lineEndContext="#stay" name="code">
         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />
         <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
-        <WordDetect attribute="Comment" context="documentation" string="{-|" />
+        <StringDetect attribute="Comment" context="documentation" String="{-|" />
 
         <keyword attribute="Keyword"          context="#stay" String="declarations" />
         <keyword attribute="Keyword"          context="#stay" String="letExpressions" />
@@ -81,16 +81,16 @@
       <context attribute="String" lineEndContext="#stay" name="multilineString">
         <RegExpr attribute="String" context="#stay" String="\s*" />
         <RegExpr attribute="String" context="#stay" String="\.*" />
-        <StringDetect attribute="String" context="#pop" char="&quot;&quot;&quot;" />
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" />
       </context>
-      <context attribute="Normal" name="module">
+      <context attribute="Normal" lineEndContext="#stay" name="module">
         <DetectChar attribute="Normal" context="moduleParentheses" char="(" />
         <keyword attribute="Keyword"          context="#stay" String="imports" />
         <RegExpr attribute="Name"         context="#stay" String="\b[a-z][\w]*" />
         <RegExpr attribute="Type"             context="#stay" String="\b[A-Z][\w]*" />
         <DetectChar attribute="Normal" context="#pop" char=")" />
       </context>
-      <context attribute="Normal" name="moduleParentheses">
+      <context attribute="Normal" lineEndContext="#stay" name="moduleParentheses">
         <DetectChar attribute="Normal" context="moduleParentheses" char="(" />
         <RegExpr attribute="Name"         context="#stay" String="\b[a-z][\w]*" />
         <RegExpr attribute="Type"             context="#stay" String="\b[A-Z][\w]*" />
@@ -99,7 +99,7 @@
       <context attribute="Normal" lineEndContext="#stay" name="port">
         <WordDetect attribute="Import" context="module" String="imports" />
       </context>
-      <context attribute="Normal" name="import">
+      <context attribute="Normal" lineEndContext="#stay" name="import">
         <DetectChar attribute="Normal" context="moduleParentheses" char="(" />
         <keyword attribute="Keyword"          context="#stay" String="imports" />
         <RegExpr attribute="Name"         context="#stay" String="\b[a-z][\w]*" />
@@ -110,27 +110,27 @@
         <WordDetect attribute="Comment" context="#stay" String="@docs" />
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
       </context>
+    </contexts>
 
-      <itemDatas>
-        <itemData name="Normal"           defStyleNum="dsNormal"   spellChecking="false" />
-        <itemData name="Comment"          defStyleNum="dsComment" />
+    <itemDatas>
+      <itemData name="Normal"           defStyleNum="dsNormal"   spellChecking="false" />
+      <itemData name="Comment"          defStyleNum="dsComment" />
 
-        <itemData name="Keyword"          defStyleNum="dsKeyword"  spellChecking="false" />
-        <itemData name="ControlFlowKeyword" defStyleNum="dsControlFlow"  spellChecking="false" />
+      <itemData name="Keyword"          defStyleNum="dsKeyword"  spellChecking="false" />
+      <itemData name="ControlFlowKeyword" defStyleNum="dsControlFlow"  spellChecking="false" />
 
-        <itemData name="Name"         defStyleNum="dsFunction"   spellChecking="false" />
-        <itemData name="Port"         defStyleNum="dsNormal"   spellChecking="false" />
-        <itemData name="Import"         defStyleNum="dsImport"   spellChecking="false" />
-        <itemData name="Operator"         defStyleNum="dsOperator" spellChecking="false" />
-        <itemData name="Type"             defStyleNum="dsDataType" spellChecking="false" />
+      <itemData name="Name"         defStyleNum="dsFunction"   spellChecking="false" />
+      <itemData name="Port"         defStyleNum="dsNormal"   spellChecking="false" />
+      <itemData name="Import"         defStyleNum="dsImport"   spellChecking="false" />
+      <itemData name="Operator"         defStyleNum="dsOperator" spellChecking="false" />
+      <itemData name="Type"             defStyleNum="dsDataType" spellChecking="false" />
 
-        <itemData name="Decimal"          defStyleNum="dsDecVal"   spellChecking="false" />
-        <itemData name="Hex"          defStyleNum="dsHexVal"   spellChecking="false" />
-        <itemData name="Float"            defStyleNum="dsFloat"    spellChecking="false" />
-        <itemData name="Char"             defStyleNum="dsChar"     spellChecking="false" />
-        <itemData name="String"           defStyleNum="dsString" />
-      </itemDatas>
-    </contexts>
+      <itemData name="Decimal"          defStyleNum="dsDecVal"   spellChecking="false" />
+      <itemData name="Hex"          defStyleNum="dsBaseN"   spellChecking="false" />
+      <itemData name="Float"            defStyleNum="dsFloat"    spellChecking="false" />
+      <itemData name="Char"             defStyleNum="dsChar"     spellChecking="false" />
+      <itemData name="String"           defStyleNum="dsString" />
+    </itemDatas>
   </highlighting>
   <general>
     <folding indentationsensitive="1"/>
diff --git a/syntax/glsl.xml b/syntax/glsl.xml
--- a/syntax/glsl.xml
+++ b/syntax/glsl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.frag;*.geom;*.tcs;*.tes" mimetype="text/x-glslsrc" version="3" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="4" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
 	<highlighting>
 		<list name="keywords">
 			<item>break</item>
diff --git a/syntax/haskell.xml b/syntax/haskell.xml
--- a/syntax/haskell.xml
+++ b/syntax/haskell.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Haskell" version="12" kateversion="3.4" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
+<language name="Haskell" version="13" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
   <highlighting>
   <list name="keywords">
     <item>case</item>
diff --git a/syntax/html.xml b/syntax/html.xml
--- a/syntax/html.xml
+++ b/syntax/html.xml
@@ -5,7 +5,7 @@
 	<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
 	<!ENTITY entref        "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="HTML" version="5" kateversion="3.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="10" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
@@ -20,8 +20,19 @@
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
     <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <IncludeRules context="FindSpecialHTMLTags" />
+    <IncludeRules context="FindHTMLTags" />
+    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <!-- This allows you to insert HTML tags in other syntax definitions -->
+  <context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">
     <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
     <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
+  </context>
+
+  <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
     <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
     <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
     <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
@@ -54,8 +65,6 @@
     <RegExpr attribute="Element" context="El Close" String="&lt;/nav\b" insensitive="true" endRegion="nav" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/section\b" insensitive="true" endRegion="section" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
-    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
-    <IncludeRules context="FindEntityRefs" />
   </context>
 
   <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
@@ -163,16 +172,23 @@
   </context>
 
   <context name="JS" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <RegExpr attribute="Attribute" context="Script-Type" String="(\s+|^)type(?=\=|\s|$)" insensitive="true"/>
     <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <IncludeRules context="DefaultJS" />
+  </context>
+  <context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
     <IncludeRules context="FindAttributes" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="JS content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="Default JS content"/>
+    <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+  </context>
+  <context name="Default JS content" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
     <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
-    <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
   </context>
 
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
@@ -200,6 +216,79 @@
   <context name="Value SQ" attribute="Value" lineEndContext="#stay">
     <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
     <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <!-- Read content from the "type" attribute to change the language to
+       highlight in the <script> tag. The default language is JavaScript. -->
+
+  <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+    <DetectSpaces />
+    <DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="=" />
+  </context>
+  <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Value">
+    <DetectSpaces />
+    <!-- TypeScript -->
+    <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&quot;text/typescript&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&apos;text/typescript&apos;"/>
+    <!-- JSX (JavaScript React) -->
+    <StringDetect attribute="Value" context="#pop#pop!JSX" String="&quot;text/jsx&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!JSX" String="&apos;text/jsx&apos;"/>
+    <StringDetect attribute="Value" context="#pop#pop!JSX" String="&quot;text/babel&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!JSX" String="&apos;text/babel&apos;"/>
+    <!-- MustacheJS / HandlebarsJS / RactiveJS -->
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;x-tmpl-mustache&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;x-tmpl-mustache&apos;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/mustache&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/mustache&apos;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/x-mustache-template&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/x-mustache-template&apos;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/x-handlebars-template&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/x-handlebars-template&apos;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/ractive&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/ractive&apos;"/>
+    <!-- HTML templates -->
+    <StringDetect attribute="Value" context="#pop#pop!Script HTML template" String="&quot;text/html&quot;"/>
+    <StringDetect attribute="Value" context="#pop#pop!Script HTML template" String="&apos;text/html&apos;"/>
+  </context>
+
+  <context name="JSX" attribute="Other Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="JSX content" char="&gt;" />
+    <IncludeRules context="DefaultJS" />
+  </context>
+  <context name="JSX content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="Default JS content"/>
+    <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
+  </context>
+
+  <context name="TypeScript" attribute="Other Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="TypeScript content" char="&gt;" />
+    <IncludeRules context="DefaultJS" />
+  </context>
+  <context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="Default JS content"/>
+    <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+  </context>
+
+  <context name="MustacheJS" attribute="Other Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="MustacheJS content" char="&gt;" />
+    <IncludeRules context="DefaultJS" />
+  </context>
+  <context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
+    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
+    <IncludeRules context="Base##Mustache/Handlebars (HTML)" includeAttrib="true"/>
+  </context>
+
+  <context name="Script HTML template" attribute="Other Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="Script HTML template content" char="&gt;" />
+    <IncludeRules context="DefaultJS" />
+  </context>
+  <context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
+    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
+    <IncludeRules context="FindHTML" />
   </context>
 
 </contexts>
diff --git a/syntax/idris.xml b/syntax/idris.xml
--- a/syntax/idris.xml
+++ b/syntax/idris.xml
@@ -9,13 +9,16 @@
     <item> case </item>
     <item> class </item>
     <item> codata </item>
+    <item> constructor </item>
     <item> covering </item>
     <item> data </item>
     <item> default </item>
     <item> do </item>
     <item> dsl </item>
     <item> else </item>
+    <item> export </item>
     <item> if </item>
+    <item> implementation </item>
     <item> implicit </item>
     <item> import </item>
     <item> impossible </item>
@@ -26,10 +29,11 @@
     <item> infixl </item>
     <item> infixr </item>
     <item> instance </item>
+    <item> interface </item>
     <item> lambda </item>
     <item> let </item>
     <item> module </item>
-    <item> mututal </item>
+    <item> mutual </item>
     <item> namespace </item>
     <item> of </item>
     <item> parameters </item>
diff --git a/syntax/ini.xml b/syntax/ini.xml
--- a/syntax/ini.xml
+++ b/syntax/ini.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;*.conf" mimetype="" version="4" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="5" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <list name="keywords">
diff --git a/syntax/isocpp.xml b/syntax/isocpp.xml
--- a/syntax/isocpp.xml
+++ b/syntax/isocpp.xml
@@ -22,7 +22,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="14"
+    version="17"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -38,6 +38,7 @@
     http://kde-files.org/content/show.php?content=90660
   -->
   <highlighting>
+    <!-- https://en.cppreference.com/w/cpp/keyword -->
     <list name="controlflow">
       <item>break</item>
       <item>case</item>
@@ -55,14 +56,14 @@
       <item>try</item>
       <item>while</item>
     </list>
+
     <list name="keywords">
       <item>alignof</item>
       <item>alignas</item>
       <item>asm</item>
       <item>auto</item>
       <item>class</item>
-      <item>concept</item> <!-- C++20 -->
-      <item>requires</item> <!-- C++20 -->
+      <item>consteval</item> <!-- C++20 -->
       <item>constexpr</item>
       <item>const_cast</item>
       <item>decltype</item>
@@ -70,7 +71,6 @@
       <item>dynamic_cast</item>
       <item>enum</item>
       <item>explicit</item>
-      <item>export</item> <!-- Unused but reserved for future use -->
       <item>false</item>
       <item>final</item> <!-- According N3272 -->
       <item>friend</item>
@@ -110,20 +110,26 @@
       <item>or_eq</item>
       <item>xor</item>
       <item>xor_eq</item>
+      <!-- Concept -->
+      <item>concept</item>
+      <item>requires</item>
       <!-- TM TS -->
-      <!-- <list>atomic_cancel</list>
-      <list>atomic_commit</list>
-      <list>atomic_noexcept</list>
-      <list>synchronized</list>
-      <list>transaction_safe</list>
-      <list>transaction_safe_dynamic</list> -->
-      <!-- module TS -->
-      <!-- <list>import</list>
-      <list>module</list> -->
-      <!-- coroutine TS -->
-      <!-- <list>co_await</list>
-      <list>co_return</list>
-      <list>co_yield</list> -->
+      <!-- <item>atomic_cancel</item>
+      <item>atomic_commit</item>
+      <item>atomic_noexcept</item>
+      <item>synchronized</item>
+      <item>transaction_safe</item>
+      <item>transaction_safe_dynamic</item> -->
+      <!-- module -->
+      <item>import</item>
+      <item>module</item>
+      <item>export</item> <!-- Unused but reserved, keyword since c++20 -->
+      <!-- coroutine -->
+      <item>co_await</item>
+      <item>co_return</item>
+      <item>co_yield</item>
+      <!-- reflexion TS -->
+      <!-- <item>reflexpr</item> -->
     </list>
     <!-- This keyword may appear in InternalsNS context. For example in code:
       details::some_class::template some_templated_static();
@@ -160,9 +166,11 @@
       <item>using</item>
     </list>
 
+    <!-- https://en.cppreference.com/w/cpp/keyword -->
     <list name="types">
       <item>bool</item>
       <item>char</item>
+      <item>char8_t</item> <!-- C++20 -->
       <item>char16_t</item>
       <item>char32_t</item>
       <item>double</item>
@@ -216,7 +224,7 @@
       <item>const</item>
       <item>extern</item>
       <item>mutable</item>
-      <item>register</item>
+      <item>register</item> <!-- The keyword is unused and reserved (c++17) -->
       <item>static</item>
       <item>thread_local</item>
       <item>volatile</item>
@@ -239,7 +247,10 @@
       <item>__func__</item>
       <item>assert</item>
       <item>_Pragma</item>
+      <!-- C++17 -->
       <item>__has_include</item>
+      <!-- C++20 -->
+      <item>__has_cpp_attribute</item>
     </list>
     <list name="InMacro">
       <item>__VA_ARGS__</item>
@@ -283,15 +294,15 @@
         <!-- Match scope regions -->
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
+        <Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
         <!-- Match comments -->
         <IncludeRules context="match comments and region markers" />
-        <!-- Match punctuators -->
-        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
-        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match keywords -->
         <IncludeRules context="match keywords" />
         <!-- Match string literals -->
@@ -309,6 +320,9 @@
         <IncludeRules context="match identifier" />
         <!-- Match preprocessor directives -->
         <RegExpr attribute="Preprocessor" context="AfterHash" String="&ispphash;" lookAhead="true" />
+        <!-- Match punctuators -->
+        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
+        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match invalid symbols -->
         <AnyChar attribute="Error" context="#stay" String="$@`" />
       </context>
@@ -505,8 +519,10 @@
 
 
       <context name="Attribute" attribute="Attribute" lineEndContext="#stay">
+        <DetectSpaces/>
         <keyword attribute="Standard Attribute" context="#stay" String="attributes" />
         <Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
+        <StringDetect attribute="Symbol" context="#pop" String=":&gt;:&gt;" /> <!-- Digraph: ]] -->
         <DetectChar attribute="Separator Symbol" context="#stay" char="," />
         <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
@@ -684,6 +700,7 @@
         <AnyChar attribute="Symbol" context="#stay" String="{}" />
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
         <!-- Match comments -->
diff --git a/syntax/javascript-react.xml b/syntax/javascript-react.xml
new file mode 100644
--- /dev/null
+++ b/syntax/javascript-react.xml
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY simpleName "(?:[a-z][a-z\d]*:)?[a-z][a-z\d]*">
+	<!ENTITY baseName   "[a-zA-Z_\$[:^ascii:]](?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
+	<!ENTITY name       "(?:&baseName;:)?&baseName;">
+	<!ENTITY baseNameWithBound "(?:\b[a-zA-Z_\$]|[^[:ascii:]])(?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
+	<!ENTITY nameWithBound     "(?:&baseNameWithBound;:)?&baseNameWithBound;"> <!-- Use this instead of "\b&name;" -->
+
+	<!ENTITY simpleTag  "&lt;\s*&simpleName;"> <!-- Element tag -->
+	<!ENTITY tag        "&lt;\s*(?:&name;|&gt;)">
+	<!ENTITY entref     "&amp;(?:[a-zA-Z\d]+|#\d+|#x[a-fA-F\d]+);">
+	<!ENTITY mlComment  "/\*(?:[^\*]|\*+[^/\*])*\*+/">
+	<!ENTITY endTagName "[\s&lt;&gt;]|/[&gt;/\*]|$"> <!-- Delimiter of end of Tag name -->
+
+	<!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+]>
+
+<!--
+    ====================================================================
+
+      This file is part of the KDE's KSyntaxHighlighting framework.
+
+      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)
+
+      This Source Code Form is subject to the terms of the MIT License.
+      If a copy of the license was not distributed with this file,
+      You can obtain one at: https://opensource.org/licenses/MIT
+
+    ====================================================================
+
+    This file is an extension of the JavaScript highlighter
+    (javascript.xml, Version 14 and higher).
+    IMPORTANT: Keep sync with "typescript-react.xml".
+
+    Based on the XML syntax highlighting (v7), by Wilbert Berendsen
+    (wilbert@kde.nl), and the TypeScript React grammar files,
+    available at: https://github.com/Microsoft/TypeScript-TmLanguage
+
+    Change log:
+     * v8 [2019-11-21]: Tag detection is more stricter.
+     * v7 [2019-11-19]: Rename definition "JavaScript React" to "JavaScript React (JSX)".
+     * v5 [2019-02-20]: Don't highlight tags within declarations of
+                        types, variables, classes and interfaces.
+                        Fixes tags after substitutions in templates.
+                        Reorder part of the code.
+     * v4 [2018-12-30]: Allow type assertion in the tag name.
+                        Allow tags after the keywords "await" & "yield".
+                        Allow empty tags and non-ASCII tag name & attributes.
+     * v3 [2018-11-18]: Fix Doxygen comments & shebang. Remove TSX extension.
+     * v2 [2018-08-18]: Remove "Conditional Expression" context.
+     * v1 [2018-06-20]: Initial version
+-->
+
+<language name="JavaScript React (JSX)" version="8" kateversion="5.0" section="Scripts" indenter="cstyle"
+          priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
+          author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
+
+<highlighting>
+
+	<contexts>
+
+		<context name="Shebang" attribute="Normal Text" lineEndContext="#pop!Normal" lineEmptyContext="#pop!Normal" fallthrough="true" fallthroughContext="#pop!Normal">
+			<Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
+		</context>
+		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop#pop!Normal" />
+
+		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="React" />
+			<IncludeRules context="Normal##JavaScript" />
+		</context>
+
+		<!-- JavaScript -->
+
+		<!-- Overwrite rules of 'javascript.xml'. These rules send to contexts
+		     that contain: <IncludeRules context="Normal"/> in the JavaScript XML file. -->
+		<context name="OverwriteJavaScript" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="Template" attribute="Template" char="`" />
+			<DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
+			<DetectChar attribute="Normal Text" context="NoRegExp##JavaScript" char="]" endRegion="List" />
+			<!-- NOTE: The "{" character sends to the "Object" context (see the "React" context) -->
+		</context>
+		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<IncludeRules context="React" />
+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=[^\{\}]*&identifier;\s*\:)" />
+			<IncludeRules context="Object##JavaScript" />
+		</context>
+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char=":" />
+			<IncludeRules context="React" />
+			<IncludeRules context="ConditionalExpression##JavaScript" />
+		</context>
+		<context name="Template" attribute="Template" lineEndContext="#stay">
+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />
+			<!-- Find tags and send to the "Substitution" context -->
+			<Detect2Chars context="Substitution-BeforeTag" attribute="Substitution" char="$" char1="{" />
+			<IncludeRules context="Template##JavaScript" />
+		</context>
+		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Substitution" char="}" />
+			<IncludeRules context="React" />
+			<IncludeRules context="Substitution##JavaScript" />
+		</context>
+
+		<!-- Do not highlight tags in some special contexts -->
+		<context name="FindDeclarationsWithNoTags" attribute="Normal Text" lineEndContext="#stay">
+			<WordDetect context="InterfaceDeclaration" attribute="Reserved" String="interface" />
+			<WordDetect context="ClassDeclaration" attribute="Reserved" String="class" />
+			<WordDetect context="VarDeclaration" attribute="Reserved" String="let" />
+			<WordDetect context="VarDeclaration" attribute="Keyword" String="var" />
+			<WordDetect context="VarDeclaration" attribute="Keyword" String="const" />
+		</context>
+		<!-- Do not highlight tags after ":" in variable declarations -->
+		<context name="VarDeclaration" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<DetectChar context="#pop!NoTag" attribute="Symbol" char=":" />
+			<RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*(?:[\?!]\s*)?:)" />
+			<AnyChar context="#stay" attribute="Symbol" String="?!" />
+			<IncludeRules context="AllComments" />
+		</context>
+		<context name="NoTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<IncludeRules context="AllComments" />
+			<DetectChar context="#pop" attribute="Symbol" char="&lt;" />
+			<RegExpr context="#stay" attribute="Normal Text" String="\(\s*(?=&lt;)" />
+			<RegExpr context="#stay" attribute="Normal Text" String="\[\s*(?=&lt;)" beginRegion="List" />
+			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;\s*/(?![\*/])" beginRegion="Brace" />
+			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;" beginRegion="Brace" />
+		</context>
+		<!-- Do not highlight tags in interface declarations -->
+		<context name="InterfaceDeclaration" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!InterfaceContentDeclaration" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#pop" char="}" lookAhead="true" />
+			<IncludeRules context="Normal##JavaScript" />
+		</context>
+		<context name="InterfaceContentDeclaration" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<IncludeRules context="Object##JavaScript" />
+		</context>
+		<!-- Do not highlight tags in class declarations -->
+		<context name="ClassDeclaration" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!ClassDeclarationContent" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#pop" char="}" lookAhead="true" />
+			<IncludeRules context="Normal##JavaScript" />
+		</context>
+		<context name="ClassDeclarationContent" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<DetectChar context="NoTag" attribute="Symbol" char=":" />
+			<IncludeRules context="Object" />
+		</context>
+
+		<!-- ReactJS -->
+
+		<!-- Tags highlighting -->
+		<context name="React" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Tag in new line -->
+			<RegExpr context="ValidTag" attribute="Normal Text" String="&tag;" firstNonSpace="true" lookAhead="true" />
+			<!-- Highlight tags only after some keywords -->
+			<RegExpr context="ValidTag" attribute="ControlFlow" String="\b(?:return|await)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Module" String="\b(?:default)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Reserved" String="\b(?:yield)\s*(?=&tag;|/\*)" />
+
+			<!-- Characters before a valid tag -->
+			<RegExpr context="ValidTag" attribute="Special Operators" String="\=&gt;\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Symbol" String="(?:[,\=&gt;:\*\?]|&amp;&amp;|\|\|)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Normal Text" String="\[\s*(?=&tag;|/\*)" beginRegion="List" />
+			<RegExpr context="ValidTag" attribute="Normal Text" String="\(\s*(?=&tag;|/\*)" />
+			<!-- The "Object-BeforeTag" context looks for a valid Tag and then sends the "Object" context -->
+			<DetectChar context="Object-BeforeTag" attribute="Normal Text" char="{" beginRegion="Brace" />
+
+			<RegExpr context="ValidTag" attribute="Symbol" String="&lt;\s*&gt;\s*(?=&tag;|/\*)" />
+
+			<!-- Tag after a comment on a new line -->
+			<Detect2Chars context="ValidTag" attribute="Comment" char="/" char1="*" firstNonSpace="true" lookAhead="true" />
+
+			<!-- Overwrite JavaScript rules to highlight tags within some contexts -->
+			<IncludeRules context="FindDeclarationsWithNoTags" />
+			<IncludeRules context="OverwriteJavaScript" />
+		</context>
+
+		<!-- Detect tags before starting a context -->
+		<context name="Object-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Object">
+			<IncludeRules context="ValidTag" />
+		</context>
+		<context name="Substitution-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Substitution">
+			<IncludeRules context="ValidTag" />
+		</context>
+		<context name="EvaluatedCode-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!EvaluatedCode">
+			<IncludeRules context="ValidTag" />
+		</context>
+
+		<!-- TAGS:
+		     NOTE & TODO: The following code is common for 'javascript-react.xml' and 'typescript-react.xml'
+		     and is replicated in both files. Look for some way to avoid having repeated code, for example,
+		     with a common XML file or with a generator script. The only drawback is that the
+		     "EvaluatedCode" context includes "Normal". -->
+
+		<!-- Highlight nested tags with comments in between.
+		     NOTE: The highlighting of Tags after a multiline comment does not work with: lineEndContext="#pop" -->
+		<context name="ValidTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<RegExpr context="#stay" attribute="Normal Text" String="\s+(?=&lt;|/\*)" />
+			<IncludeRules context="FindTags" />
+			<IncludeRules context="AllComments" />
+		</context>
+
+		<!-- Start tag.
+		     There are two contexts to find Tags:
+		     * FindTags: For Tags within TypeScript code; invalid name tags aren't highlighted.
+		     * FindTagsInTagContent: For Tag within another tag; highlight any Tag.
+		                             Tags with invalid names are highlighted as "Error".
+		-->
+		<context name="FindTags" attribute="Normal Text" lineEndContext="#stay">
+				<!-- Invalid Tag, do not highlight tags in these cases:
+				     * "?" or "," after tag name:
+				         <Tag ? ...
+				         <Tag< ? ...
+				         <Tag /* comment */ ? ...
+				     * Invalid delimiter after comment (without spaces):
+				         <Tag/* comment */#
+				-->
+			<RegExpr context="#pop" attribute="Symbol" String="&lt;(?=\s*&name;(?:(&lt;(?:\s*&mlComment;)*)?(?:\s*&mlComment;)*\s*[\?,]|(?:&mlComment;)+(?!&endTagName;|&baseName;|\{)))" />
+
+			<!-- Empty tag (element) -->
+			<RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
+			<!-- Detect Tags -->
+			<RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=&endTagName;)" beginRegion="Element" />
+			<RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;(?=&endTagName;)" beginRegion="ComponentElement" />
+			<!-- If a valid Tag was not detected -->
+			<DetectChar context="#pop" attribute="Symbol" char="&lt;" />
+		</context>
+
+		<context name="FindTagsInTagContent" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Empty tag (element) -->
+			<RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
+			<!-- Detect non-ASCII character in the tag name (component). This prevents highlighting as Element,
+			     tag names that don't start with a non-ASCII character. -->
+			<RegExpr context="ComponentTagNonASCII" attribute="Component Tag" String="&lt;\s*(?=(?:[a-z][a-z\d]*:)?(?:[a-z][a-z\d]*)?[^[:ascii:]])" beginRegion="ComponentElement" /> <!-- &simpleName; -->
+			<!-- Element & component tags -->
+			<RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+(?:[^\w\$\-\.]|$)|:(?:[^a-zA-Z_\$]|$))" beginRegion="Element" />
+			<RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;" beginRegion="ComponentElement" />
+		</context>
+		<!-- Highlight tag name with non-ASCII characters -->
+		<context name="ComponentTagNonASCII" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
+			<RegExpr context="#pop!ComponentTagFindType" attribute="Component Tag" String="&name;" />
+		</context>
+
+		<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#stay" attribute="EntityRef" String="&entref;" />
+		</context>
+
+		<!-- Type after the tag name. Ex: <C<number> /> -->
+		<context name="ComponentTagFindType" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
+			<DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
+		</context>
+		<context name="ElementTagFindType" attribute="Normal Text" lineEndContext="#pop!ElementTag" fallthrough="true" fallthroughContext="#pop!ElementTag">
+			<DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
+		</context>
+
+		<!-- Type assertion after the tag name -->
+		<context name="TypeInsideTag" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="#pop!ComponentTag" attribute="Symbol" char="&gt;" />
+			<IncludeRules context="DefaultTypeInsideTag" />
+		</context>
+		<context name="DefaultTypeInsideTag" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="TypeInsideTag-AngleBracket" attribute="Symbol" char="&lt;" />
+			<DetectChar context="TypeInsideTag-CurlyBracket" attribute="Symbol" char="{" />
+			<DetectChar context="TypeInsideTag-SquareBracket" attribute="Symbol" char="[" />
+			<DetectChar context="TypeInsideTag-RoundBracket" attribute="Symbol" char="(" />
+			<IncludeRules context="AllComments" />
+		</context>
+		<context name="TypeInsideTag-AngleBracket" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Symbol" char="&gt;" />
+			<IncludeRules context="DefaultTypeInsideTag" />
+		</context>
+		<context name="TypeInsideTag-CurlyBracket" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Symbol" char="}" />
+			<IncludeRules context="DefaultTypeInsideTag" />
+		</context>
+		<context name="TypeInsideTag-SquareBracket" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Symbol" char="]" />
+			<IncludeRules context="DefaultTypeInsideTag" />
+		</context>
+		<context name="TypeInsideTag-RoundBracket" attribute="Component Tag" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Symbol" char=")" />
+			<IncludeRules context="DefaultTypeInsideTag" />
+		</context>
+
+		<!-- Inside the tag -->
+		<context name="ElementTag" attribute="Normal Text" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="Element" />
+			<DetectChar context="#pop!ElementTagContent" attribute="Element Tag" char="&gt;" />
+			<IncludeRules context="DefaultTag" />
+		</context>
+		<context name="ComponentTag" attribute="Normal Text" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Component Tag" char="/" char1="&gt;" endRegion="ComponentElement" />
+			<DetectChar context="#pop!ComponentTagContent" attribute="Component Tag" char="&gt;" />
+			<IncludeRules context="DefaultTag" />
+		</context>
+		<context name="DefaultTag" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="Attribute" attribute="Attribute" String="&nameWithBound;" />
+			<IncludeRules context="FindEvaluatedCode" />
+			<IncludeRules context="AllComments" />
+			<RegExpr context="#stay" attribute="Error" String="\S+&name;" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+
+		<!-- Tag content: <Tag> content </Tag> -->
+		<context name="ElementTagContent" attribute="Tag Content Text" lineEndContext="#stay">
+			<RegExpr context="#pop" attribute="Element Tag" String="&lt;/\s*&gt;" endRegion="Element" />
+			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*&simpleName;" />
+			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*(?=[A-Z_\$])" /> <!-- Component tag (error) -->
+			<IncludeRules context="DefaultTagContent" />
+		</context>
+		<context name="ComponentTagContent" attribute="Tag Content Text" lineEndContext="#stay">
+			<RegExpr context="#pop" attribute="Component Tag" String="&lt;/\s*&gt;" endRegion="ComponentElement" />
+			<RegExpr context="ComponentTagEnd" attribute="Component Tag" String="&lt;/\s*&name;" />
+			<IncludeRules context="DefaultTagContent" />
+		</context>
+		<context name="DefaultTagContent" attribute="Tag Content Text" lineEndContext="#stay">
+			<IncludeRules context="FindTagsInTagContent" />
+			<IncludeRules context="FindEntityRefs" />
+			<IncludeRules context="FindEvaluatedCode" />
+			<DetectChar context="#stay" attribute="Error" char="&lt;" />
+		</context>
+
+		<context name="ElementTagEnd" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop#pop" attribute="Element Tag" char="&gt;" endRegion="Element" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+		<context name="ComponentTagEnd" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop#pop" attribute="Component Tag" char="&gt;" endRegion="ComponentElement" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+
+		<!-- Tag attribute -->
+		<context name="Attribute" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop" attribute="Error" String="\=(?=\s*/?&gt;)" />
+			<DetectChar context="#pop!Value" attribute="Symbol" char="=" />
+			<IncludeRules context="FindEndTag" />
+			<DetectChar context="#pop" char="{" lookAhead="true" /> <!-- EvaluatedCode -->
+			<IncludeRules context="AllComments" />
+			<RegExpr context="#stay" attribute="Attribute" String="&nameWithBound;" />
+			<RegExpr context="#stay" attribute="Error" String="\S+&name;" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+
+		<context name="Value" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!ValueDQ" attribute="Value" char="&quot;" />
+			<DetectChar context="#pop!ValueSQ" attribute="Value" char="&apos;" />
+			<DetectChar context="#pop" char="{" lookAhead="true" /> <!-- EvaluatedCode -->
+			<IncludeRules context="FindEndTag" />
+			<IncludeRules context="AllComments" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+		<context name="ValueDQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Value" char="&quot;" />
+			<IncludeRules context="FindEntityRefs" />
+		</context>
+		<context name="ValueSQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Value" char="&apos;" />
+			<IncludeRules context="FindEntityRefs" />
+		</context>
+
+		<context name="FindEndTag" attribute="Normal Text" lineEndContext="#stay">
+			<Detect2Chars context="#pop" char="/" char1="&gt;" lookAhead="true" />
+			<DetectChar context="#pop" char="&gt;" lookAhead="true" />
+		</context>
+
+		<context name="FindEvaluatedCode" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Find tags and send to the "EvaluatedCode" context -->
+			<DetectChar context="EvaluatedCode-BeforeTag" attribute="Code Brackets" char="{" beginRegion="Code" />
+		</context>
+		<context name="EvaluatedCode" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Code Brackets" char="}" endRegion="Code" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<context name="AllComments" attribute="Normal Text" lineEndContext="#stay">
+			<!-- TypeScript uses this for comments -->
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+	</contexts>
+
+	<itemDatas>
+		<itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Comment"          defStyleNum="dsComment" />
+
+		<itemData name="Tag Content Text" defStyleNum="dsNormal" />
+		<itemData name="Element Tag"      defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="Component Tag"    defStyleNum="dsFunction" bold="1" spellChecking="false" />
+		<itemData name="Attribute"        defStyleNum="dsOthers" spellChecking="false" />
+		<itemData name="Value"            defStyleNum="dsString" spellChecking="false" />
+		<itemData name="EntityRef"        defStyleNum="dsDecVal" spellChecking="false" />
+		<itemData name="Code Brackets"    defStyleNum="dsVariable" spellChecking="false" />
+		<itemData name="Error"            defStyleNum="dsError" spellChecking="false" />
+
+		<!-- itemDatas in JavaScript XML file -->
+		<itemData name="Symbol"           defStyleNum="dsOperator" />
+		<itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
+		<itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
+		<itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
+		<itemData name="Template"         defStyleNum="dsVerbatimString" />
+		<itemData name="Substitution"     defStyleNum="dsSpecialChar" spellChecking="false" />
+		<itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
+	</itemDatas>
+
+</highlighting>
+
+<general>
+	<keywords casesensitive="1" />
+	<comments>
+		<comment name="singleLine" start="//" />
+		<comment name="multiLine" start="/*" end="*/" />
+	</comments>
+</general>
+
+</language>
+<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->
diff --git a/syntax/javascript.xml b/syntax/javascript.xml
--- a/syntax/javascript.xml
+++ b/syntax/javascript.xml
@@ -1,293 +1,2029 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-  <!ENTITY identifier "([a-zA-Z_$]|[^[:ascii:]])([\w$]|[^[:ascii:]])*">
-]>
-<!-- Author: Anders Lund <anders@alweb.dk> //-->
-<!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
-<!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
-<language name="JavaScript" version="10" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
-          mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
-          author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
-  <highlighting>
-    <list name="controlflow">
-      <item>await</item>
-      <item>break</item>
-      <item>case</item>
-      <item>catch</item>
-      <item>continue</item>
-      <item>debugger</item>
-      <item>do</item>
-      <item>else</item>
-      <item>finally</item>
-      <item>for</item>
-      <item>if</item>
-      <item>return</item>
-      <item>switch</item>
-      <item>throw</item>
-      <item>try</item>
-      <item>while</item>
-      <item>with</item>
-    </list>
-    <list name="keywords">
-      <item>const</item>
-      <item>delete</item>
-      <item>function</item>
-      <item>in</item>
-      <item>instanceof</item>
-      <item>new</item>
-      <item>of</item>
-      <item>this</item>
-      <item>typeof</item>
-      <item>var</item>
-      <item>void</item>
-    </list>
-    <list name="reserved">
-      <item>async</item>
-      <item>class</item>
-      <item>enum</item>
-      <item>extends</item>
-      <item>super</item>
-
-      <!-- The following keywords are reserved only in strict-mode -->
-      <item>arguments</item>
-      <item>implements</item>
-      <item>interface</item>
-      <item>let</item>
-      <item>private</item>
-      <item>protected</item>
-      <item>public</item>
-      <item>static</item>
-      <item>yield</item>
-    </list>
-    <list name="module">
-      <item>import</item>
-      <item>from</item>
-      <item>as</item>
-      <item>default</item>
-      <item>export</item>
-      <item>package</item>
-    </list>
-    <list name="primitives">
-      <item>Infinity</item>
-      <item>NaN</item>
-      <item>false</item>
-      <item>null</item>
-      <item>true</item>
-      <item>undefined</item>
-    </list>
-    <contexts>
-
-      <!-- Shebang: ("#!") Detect shebang and fallthrough to Normal -->
-      <!-- Based on the similar clause from prolog.xml.
-        This uses "lineEmptyContext" & "lineEndContext" to force the highlight only on the first line.
-      -->
-      <context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal" >
-        <Detect2Chars column="0" char="#" char1="!" context="Shebang Line" attribute="Comment" />
-      </context>
-      <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal">
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <DetectSpaces/>
-        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />
-        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />
-
-        <Float attribute="Float" context="NoRegExp" />
-        <!-- Invalid Binary, Octal or Hex -->
-        <RegExpr attribute="Error" context="NoRegExp" String="\b0(b[01]*[2-9a-z]|o[0-7]*[89a-z]|x[0-9a-f]*[g-z])\w*\b" insensitive="true" />
-        <HlCHex attribute="Hex" context="NoRegExp" />
-        <RegExpr attribute="Octal" context="NoRegExp" String="\b0[oO][0-7]+" />
-        <RegExpr attribute="Binary" context="NoRegExp" String="\b0[bB][01]+" />
-        <Int attribute="Decimal" context="NoRegExp" />
-        <AnyChar context="NoRegExp" String="])" />
-
-        <keyword attribute="ControlFlow" String="controlflow" />
-        <keyword attribute="Keyword" String="keywords" />
-        <keyword attribute="Reserved" String="reserved" />
-        <keyword attribute="Keyword" context="NoRegExp" String="primitives" />
-        <keyword attribute="Module" String="module" />
-
-        <IncludeRules context="FindStrings" />
-
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Object Member" context="NoRegExp" String="&identifier;(?=\s*\()" />
-        <DetectChar context="Object Member" char="." />
-        <!--DetectIdentifier-->
-        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
-        <RegExpr context="NoRegExp" String="&identifier;" />
-        <RegExpr context="NoRegExp" String="[a-zA-Z_$][\w$]*" />
-
-        <IncludeRules context="FindComments" />
-
-        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
-        <Detect2Chars attribute="Normal Text" context="NoRegExp" char="&lt;" char1="/" />
-        <Detect2Chars attribute="Normal Text" context="NoRegExp" char="/" char1="&gt;" />
-        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
-
-        <DetectChar attribute="Symbol" context="Object" char="{" beginRegion="Brace" />
-        <DetectChar attribute="Symbol" context="Conditional Expression" char="?" />
-
-        <Detect2Chars context="#stay" attribute="Special Operators" char="=" char1="&gt;" />
-        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
-        <DetectChar context="#stay" char="." />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Objects" context="#stay" String="&identifier;(?=\s*\.)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="Object Member" context="#pop!NoRegExp" String="&identifier;" />
-        <IncludeRules context="NoRegExp" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop" name="NoRegExp">
-        <Detect2Chars context="#pop" lookAhead="true" char="/" char1="/" />
-        <Detect2Chars context="#pop" lookAhead="true" char="/" char1="*" />
-        <DetectChar context="#pop" char="/" />
-        <DetectSpaces/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Conditional Expression">
-        <DetectChar context="#pop" char=":" />
-        <IncludeRules context="Normal" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Object">
-        <!-- Mostly required for define: in switch blocks -->
-        <keyword attribute="Keyword" String="keywords" />
-        <RegExpr attribute="ControlFlow" String="\bdefault(?=\s*:)" />
-        <!--DetectIdentifier-->
-        <RegExpr attribute="JSON" String="&identifier;\s*(?=:)" />
-        <DetectChar attribute="Symbol" char="}" endRegion="Brace" context="#pop" />
-        <IncludeRules context="Normal" />
-      </context>
-
-      <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar attribute="Template" context="Template" char="`" />
-        <StringDetect attribute="Template" context="RawTemplate" String="String.raw`" />
-
-        <DetectChar attribute="String" context="String" char="&quot;" />
-        <DetectChar attribute="String" context="String SQ" char="'" />
-      </context>
-
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <IncludeRules context="Escape" />
-        <DetectChar attribute="String" context="#pop" char="&quot;" />
-      </context>
-      <context attribute="String" lineEndContext="#pop" name="String SQ">
-        <IncludeRules context="Escape" />
-        <DetectChar attribute="String" context="#pop" char="'" />
-      </context>
-      
-      <context attribute="Normal Text" lineEndContext="#stay" name="Escape">
-        <LineContinue attribute="Escape" context="#stay" />
-        <!-- Hexadecimal, unicode & octal -->
-        <RegExpr attribute="Escape" context="#stay" String="\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
-        <Detect2Chars attribute="Error" context="#stay" char="\" char1="x" />
-        <Detect2Chars attribute="Error" context="#stay" char="\" char1="u" />
-        <DetectChar attribute="Escape" context="Character Escape" char="\" />
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="Character Escape">
-        <AnyChar attribute="Reserved Char. Escape" context="#pop" String="0bfnrtv" /> <!-- Reserved Char. Escape. Also: "'/ -->
-        <RegExpr attribute="Escape" context="#pop" String="." /> <!-- Literal Char. Escape -->
-      </context>
-
-      <context attribute="Template" lineEndContext="#stay" name="Template">
-        <IncludeRules context="Escape" />
-        <Detect2Chars attribute="Substitution" context="Substitution" char="$" char1="{" />
-        <DetectChar attribute="Template" context="#pop" char="`" />
-      </context>
-      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">
-        <DetectChar attribute="Template" context="#pop" char="`" />
-      </context>
-      <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
-          <DetectChar attribute="Substitution" char="}" context="#pop"/>
-          <IncludeRules context="Normal"/>
-      </context>
-
-      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
-        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
-      </context>
-
-      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
-        <RegExpr attribute="Regular Expression" context="#pop#pop" String="/\w*" />
-        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\[bB]" />
-        <RegExpr attribute="Pattern Character Class" String="\\[nrtvfDdSsWw]" />
-        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\." />
-        <RegExpr attribute="Pattern Internal Operator" String="\$(?=/)" />
-        <AnyChar attribute="Pattern Internal Operator" String="?+*()|" />
-      </context>
-      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
-        <RegExpr String="\\[\[\]]" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\." />
-        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
-      </context>
-      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
-        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
-      </context>
-      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
-        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
-      </context>
-
-      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
-        <DetectIdentifier/>
-        <DetectSpaces/>
-      </context>
-    </contexts>
-    <itemDatas>
-      <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
-      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false" />
-      <itemData name="ControlFlow"  defStyleNum="dsControlFlow" spellChecking="false" />
-      <itemData name="Reserved"     defStyleNum="dsKeyword" italic="true" spellChecking="false" />
-      <itemData name="Module"       defStyleNum="dsImport" spellChecking="false" />
-      <itemData name="Objects"      defStyleNum="dsVariable" spellChecking="false" />
-      <itemData name="Object Member" defStyleNum="dsAttribute" spellChecking="false" />
-      <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
-
-      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
-      <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
-      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Reserved Char. Escape" defStyleNum="dsSpecialChar" bold="1" spellChecking="false" />
-      <itemData name="String"       defStyleNum="dsString" />
-      <itemData name="Template"     defStyleNum="dsVerbatimString" />
-      <itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
-
-      <itemData name="Comment"      defStyleNum="dsComment" />
-      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
-      <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
-      <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
-      <itemData name="JSON"         defStyleNum="dsDataType" spellChecking="false" />
-      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <comments>
-      <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
-    </comments>
-    <keywords casesensitive="1" />
-  </general>
+  <!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+]>
+
+<!--
+  Author: Anders Lund <anders@alweb.dk>
+  Minor changes: Joseph Wenninger <jowenn@kde.org>
+  Full JavaScript 1.0 support by Whitehawk Stormchaser
+
+  Last Update: Nov. 20, 2019 (Version 14)
+
+  IMPORTANT: This syntax highlighting definition depends on
+  JavaScript React (JSX), TypeScript and QML.
+-->
+<language name="JavaScript" version="14" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+          mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
+          author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
+
+  <highlighting>
+
+    <list name="controlflow">
+      <item>await</item>
+      <item>break</item>
+      <item>case</item>
+      <item>catch</item>
+      <item>continue</item>
+      <item>debugger</item>
+      <item>do</item>
+      <item>else</item>
+      <item>finally</item>
+      <item>for</item>
+      <item>if</item>
+      <item>return</item>
+      <item>switch</item>
+      <item>throw</item>
+      <item>try</item>
+      <item>while</item>
+      <item>with</item>
+    </list>
+    <list name="keywords">
+      <item>const</item>
+      <item>delete</item>
+      <item>function</item>
+      <item>in</item>
+      <item>instanceof</item>
+      <item>new</item>
+      <item>of</item>
+      <item>this</item>
+      <item>typeof</item>
+      <item>var</item>
+      <item>void</item>
+    </list>
+    <list name="reserved">
+      <item>async</item>
+      <item>class</item>
+      <item>enum</item>
+      <item>extends</item>
+      <item>super</item>
+
+      <!-- The following keywords are reserved only in strict-mode -->
+      <item>arguments</item>
+      <item>implements</item>
+      <item>interface</item>
+      <item>let</item>
+      <item>private</item>
+      <item>protected</item>
+      <item>public</item>
+      <item>static</item>
+      <item>yield</item>
+    </list>
+    <list name="module">
+      <item>import</item>
+      <item>from</item>
+      <item>as</item>
+      <item>default</item>
+      <item>export</item>
+      <item>package</item>
+    </list>
+    <list name="primitives">
+      <item>Infinity</item>
+      <item>NaN</item>
+      <item>false</item>
+      <item>null</item>
+      <item>true</item>
+      <item>undefined</item>
+    </list>
+
+    <!-- Built-in Classes, Functions & Constants -->
+
+    <list name="class_builtin">
+      <item>Array</item>
+      <item>ArrayBuffer</item>
+      <item>Atomics</item>
+      <item>Boolean</item>
+      <item>BigInt</item>
+      <item>BigInt64Array</item>
+      <item>BigUint64Array</item>
+      <item>DataView</item>
+      <item>Date</item>
+      <item>Float32Array</item>
+      <item>Float64Array</item>
+      <item>Function</item>
+      <item>Generator</item>
+      <item>GeneratorFunction</item>
+      <item>Int8Array</item>
+      <item>Int16Array</item>
+      <item>Int32Array</item>
+      <item>Intl</item>
+      <item>Map</item>
+      <item>Object</item>
+      <item>Proxy</item>
+      <item>Reflect</item>
+      <item>RegExp</item>
+      <item>Set</item>
+      <item>SharedArrayBuffer</item>
+      <item>SIMD</item>
+      <item>String</item>
+      <item>Symbol</item>
+      <item>TypedArray</item>
+      <item>Uint8Array</item>
+      <item>Uint16Array</item>
+      <item>Uint32Array</item>
+      <item>Uint8ClampedArray</item>
+      <item>WeakMap</item>
+      <item>WeakSet</item>
+      <!-- Class: Error -->
+      <item>Error</item>
+      <item>EvalError</item>
+      <item>InternalError</item>
+      <item>RangeError</item>
+      <item>ReferenceError</item>
+      <item>SyntaxError</item>
+      <item>TypeError</item>
+      <item>URIError</item>
+      <!-- Class: Number -->
+      <item>Number</item>
+      <!-- Class: Math -->
+      <item>Math</item>
+      <!-- Class: Promise -->
+      <item>Promise</item>
+      <!-- Other -->
+      <item>JSON</item>
+      <item>console</item>
+      <item>process</item>
+    </list>
+    <!-- DOM Classes -->
+    <list name="class_dom">
+      <item>AnalyserNode</item>
+      <item>ArrayBufferView</item>
+      <item>Attr</item>
+      <item>AudioBuffer</item>
+      <item>AudioBufferSourceNode</item>
+      <item>AudioContext</item>
+      <item>AudioDestinationNode</item>
+      <item>AudioListener</item>
+      <item>AudioNode</item>
+      <item>AudioParam</item>
+      <item>BatteryManager</item>
+      <item>BeforeUnloadEvent</item>
+      <item>BiquadFilterNode</item>
+      <item>Blob</item>
+      <item>BufferSource</item>
+      <item>ByteString</item>
+      <item>CSS</item>
+      <item>CSSConditionRule</item>
+      <item>CSSCounterStyleRule</item>
+      <item>CSSGroupingRule</item>
+      <item>CSSMatrix</item>
+      <item>CSSMediaRule</item>
+      <item>CSSPageRule</item>
+      <item>CSSPrimitiveValue</item>
+      <item>CSSRule</item>
+      <item>CSSRuleList</item>
+      <item>CSSStyleDeclaration</item>
+      <item>CSSStyleRule</item>
+      <item>CSSStyleSheet</item>
+      <item>CSSSupportsRule</item>
+      <item>CSSValue</item>
+      <item>CSSValueList</item>
+      <item>CanvasGradient</item>
+      <item>CanvasImageSource</item>
+      <item>CanvasPattern</item>
+      <item>CanvasRenderingContext2D</item>
+      <item>ChannelMergerNode</item>
+      <item>ChannelSplitterNode</item>
+      <item>CharacterData</item>
+      <item>ChromeWorker</item>
+      <item>CloseEvent</item>
+      <item>Comment</item>
+      <item>CompositionEvent</item>
+      <item>Console</item>
+      <item>ConvolverNode</item>
+      <item>Coordinates</item>
+      <item>Credential</item>
+      <item>CredentialsContainer</item>
+      <item>Crypto</item>
+      <item>CryptoKey</item>
+      <item>CustomEvent</item>
+      <item>DOMError</item>
+      <item>DOMException</item>
+      <item>DOMHighResTimeStamp</item>
+      <item>DOMImplementation</item>
+      <item>DOMString</item>
+      <item>DOMStringList</item>
+      <item>DOMStringMap</item>
+      <item>DOMTimeStamp</item>
+      <item>DOMTokenList</item>
+      <item>DataTransfer</item>
+      <item>DataTransferItem</item>
+      <item>DataTransferItemList</item>
+      <item>DedicatedWorkerGlobalScope</item>
+      <item>DelayNode</item>
+      <item>DeviceProximityEvent</item>
+      <item>DirectoryEntry</item>
+      <item>DirectoryEntrySync</item>
+      <item>DirectoryReader</item>
+      <item>DirectoryReaderSync</item>
+      <item>Document</item>
+      <item>DocumentFragment</item>
+      <item>DocumentTouch</item>
+      <item>DocumentType</item>
+      <item>DragEvent</item>
+      <item>DynamicsCompressorNode</item>
+      <item>Element</item>
+      <item>Entry</item>
+      <item>EntrySync</item>
+      <item>ErrorEvent</item>
+      <item>Event</item>
+      <item>EventListener</item>
+      <item>EventSource</item>
+      <item>EventTarget</item>
+      <item>FederatedCredential</item>
+      <item>FetchEvent</item>
+      <item>File</item>
+      <item>FileEntry</item>
+      <item>FileEntrySync</item>
+      <item>FileException</item>
+      <item>FileList</item>
+      <item>FileReader</item>
+      <item>FileReaderSync</item>
+      <item>FileSystem</item>
+      <item>FileSystemSync</item>
+      <item>FontFace</item>
+      <item>FormData</item>
+      <item>GainNode</item>
+      <item>Gamepad</item>
+      <item>GamepadButton</item>
+      <item>GamepadEvent</item>
+      <item>Geolocation</item>
+      <item>GlobalEventHandlers</item>
+      <item>HTMLAnchorElement</item>
+      <item>HTMLAreaElement</item>
+      <item>HTMLAudioElement</item>
+      <item>HTMLBRElement</item>
+      <item>HTMLBaseElement</item>
+      <item>HTMLBodyElement</item>
+      <item>HTMLButtonElement</item>
+      <item>HTMLCanvasElement</item>
+      <item>HTMLCollection</item>
+      <item>HTMLContentElement</item>
+      <item>HTMLDListElement</item>
+      <item>HTMLDataElement</item>
+      <item>HTMLDataListElement</item>
+      <item>HTMLDialogElement</item>
+      <item>HTMLDivElement</item>
+      <item>HTMLDocument</item>
+      <item>HTMLElement</item>
+      <item>HTMLEmbedElement</item>
+      <item>HTMLFieldSetElement</item>
+      <item>HTMLFontElement</item>
+      <item>HTMLFormControlsCollection</item>
+      <item>HTMLFormElement</item>
+      <item>HTMLHRElement</item>
+      <item>HTMLHeadElement</item>
+      <item>HTMLHeadingElement</item>
+      <item>HTMLHtmlElement</item>
+      <item>HTMLIFrameElement</item>
+      <item>HTMLImageElement</item>
+      <item>HTMLInputElement</item>
+      <item>HTMLKeygenElement</item>
+      <item>HTMLLIElement</item>
+      <item>HTMLLabelElement</item>
+      <item>HTMLLegendElement</item>
+      <item>HTMLLinkElement</item>
+      <item>HTMLMapElement</item>
+      <item>HTMLMediaElement</item>
+      <item>HTMLMetaElement</item>
+      <item>HTMLMeterElement</item>
+      <item>HTMLModElement</item>
+      <item>HTMLOListElement</item>
+      <item>HTMLObjectElement</item>
+      <item>HTMLOptGroupElement</item>
+      <item>HTMLOptionElement</item>
+      <item>HTMLOptionsCollection</item>
+      <item>HTMLOutputElement</item>
+      <item>HTMLParagraphElement</item>
+      <item>HTMLParamElement</item>
+      <item>HTMLPreElement</item>
+      <item>HTMLProgressElement</item>
+      <item>HTMLQuoteElement</item>
+      <item>HTMLScriptElement</item>
+      <item>HTMLSelectElement</item>
+      <item>HTMLShadowElement</item>
+      <item>HTMLSourceElement</item>
+      <item>HTMLSpanElement</item>
+      <item>HTMLStyleElement</item>
+      <item>HTMLTableCaptionElement</item>
+      <item>HTMLTableCellElement</item>
+      <item>HTMLTableColElement</item>
+      <item>HTMLTableDataCellElement</item>
+      <item>HTMLTableElement</item>
+      <item>HTMLTableHeaderCellElement</item>
+      <item>HTMLTableRowElement</item>
+      <item>HTMLTableSectionElement</item>
+      <item>HTMLTextAreaElement</item>
+      <item>HTMLTimeElement</item>
+      <item>HTMLTitleElement</item>
+      <item>HTMLTrackElement</item>
+      <item>HTMLUListElement</item>
+      <item>HTMLUnknownElement</item>
+      <item>HTMLVideoElement</item>
+      <item>HashChangeEvent</item>
+      <item>History</item>
+      <item>IDBCursor</item>
+      <item>IDBCursorWithValue</item>
+      <item>IDBDatabase</item>
+      <item>IDBEnvironment</item>
+      <item>IDBFactory</item>
+      <item>IDBIndex</item>
+      <item>IDBKeyRange</item>
+      <item>IDBMutableFile</item>
+      <item>IDBObjectStore</item>
+      <item>IDBOpenDBRequest</item>
+      <item>IDBRequest</item>
+      <item>IDBTransaction</item>
+      <item>IDBVersionChangeEvent</item>
+      <item>IIRFilterNode</item>
+      <item>IdentityManager</item>
+      <item>ImageBitmap</item>
+      <item>ImageBitmapFactories</item>
+      <item>ImageData</item>
+      <item>Index</item>
+      <item>InputDeviceCapabilities</item>
+      <item>InputEvent</item>
+      <item>InstallEvent</item>
+      <item>InstallTrigger</item>
+      <item>KeyboardEvent</item>
+      <item>LinkStyle</item>
+      <item>LocalFileSystem</item>
+      <item>LocalFileSystemSync</item>
+      <item>Location</item>
+      <item>MIDIAccess</item>
+      <item>MIDIConnectionEvent</item>
+      <item>MIDIInput</item>
+      <item>MIDIInputMap</item>
+      <item>MIDIOutputMap</item>
+      <item>MediaElementAudioSourceNode</item>
+      <item>MediaError</item>
+      <item>MediaKeyMessageEvent</item>
+      <item>MediaKeySession</item>
+      <item>MediaKeyStatusMap</item>
+      <item>MediaKeySystemAccess</item>
+      <item>MediaKeySystemConfiguration</item>
+      <item>MediaKeys</item>
+      <item>MediaRecorder</item>
+      <item>MediaStream</item>
+      <item>MediaStreamAudioDestinationNode</item>
+      <item>MediaStreamAudioSourceNode</item>
+      <item>MessageChannel</item>
+      <item>MessageEvent</item>
+      <item>MessagePort</item>
+      <item>MouseEvent</item>
+      <item>MutationObserver</item>
+      <item>MutationRecord</item>
+      <item>NamedNodeMap</item>
+      <item>Navigator</item>
+      <item>NavigatorConcurrentHardware</item>
+      <item>NavigatorGeolocation</item>
+      <item>NavigatorID</item>
+      <item>NavigatorLanguage</item>
+      <item>NavigatorOnLine</item>
+      <item>Node</item>
+      <item>NodeFilter</item>
+      <item>NodeIterator</item>
+      <item>NodeList</item>
+      <item>NonDocumentTypeChildNode</item>
+      <item>Notification</item>
+      <item>OfflineAudioCompletionEvent</item>
+      <item>OfflineAudioContext</item>
+      <item>OscillatorNode</item>
+      <item>PageTransitionEvent</item>
+      <item>PannerNode</item>
+      <item>ParentNode</item>
+      <item>PasswordCredential</item>
+      <item>Path2D</item>
+      <item>PaymentAddress</item>
+      <item>PaymentRequest</item>
+      <item>PaymentResponse</item>
+      <item>Performance</item>
+      <item>PerformanceEntry</item>
+      <item>PerformanceFrameTiming</item>
+      <item>PerformanceMark</item>
+      <item>PerformanceMeasure</item>
+      <item>PerformanceNavigation</item>
+      <item>PerformanceNavigationTiming</item>
+      <item>PerformanceObserver</item>
+      <item>PerformanceObserverEntryList</item>
+      <item>PerformanceResourceTiming</item>
+      <item>PerformanceTiming</item>
+      <item>PeriodicSyncEvent</item>
+      <item>PeriodicWave</item>
+      <item>Plugin</item>
+      <item>Point</item>
+      <item>PointerEvent</item>
+      <item>PopStateEvent</item>
+      <item>PortCollection</item>
+      <item>Position</item>
+      <item>PositionError</item>
+      <item>PositionOptions</item>
+      <item>PresentationConnectionClosedEvent</item>
+      <item>PresentationConnectionList</item>
+      <item>PresentationReceiver</item>
+      <item>ProcessingInstruction</item>
+      <item>ProgressEvent</item>
+      <item>PromiseRejectionEvent</item>
+      <item>PushEvent</item>
+      <item>PushRegistrationManager</item>
+      <item>RTCCertificate</item>
+      <item>RTCConfiguration</item>
+      <item>RTCPeerConnection</item>
+      <item>RTCSessionDescriptionCallback</item>
+      <item>RTCStatsReport</item>
+      <item>RadioNodeList</item>
+      <item>RandomSource</item>
+      <item>Range</item>
+      <item>ReadableByteStream</item>
+      <item>RenderingContext</item>
+      <item>SVGAElement</item>
+      <item>SVGAngle</item>
+      <item>SVGAnimateColorElement</item>
+      <item>SVGAnimateElement</item>
+      <item>SVGAnimateMotionElement</item>
+      <item>SVGAnimateTransformElement</item>
+      <item>SVGAnimatedAngle</item>
+      <item>SVGAnimatedBoolean</item>
+      <item>SVGAnimatedEnumeration</item>
+      <item>SVGAnimatedInteger</item>
+      <item>SVGAnimatedLength</item>
+      <item>SVGAnimatedLengthList</item>
+      <item>SVGAnimatedNumber</item>
+      <item>SVGAnimatedNumberList</item>
+      <item>SVGAnimatedPoints</item>
+      <item>SVGAnimatedPreserveAspectRatio</item>
+      <item>SVGAnimatedRect</item>
+      <item>SVGAnimatedString</item>
+      <item>SVGAnimatedTransformList</item>
+      <item>SVGAnimationElement</item>
+      <item>SVGCircleElement</item>
+      <item>SVGClipPathElement</item>
+      <item>SVGCursorElement</item>
+      <item>SVGDefsElement</item>
+      <item>SVGDescElement</item>
+      <item>SVGElement</item>
+      <item>SVGEllipseElement</item>
+      <item>SVGEvent</item>
+      <item>SVGFilterElement</item>
+      <item>SVGFontElement</item>
+      <item>SVGFontFaceElement</item>
+      <item>SVGFontFaceFormatElement</item>
+      <item>SVGFontFaceNameElement</item>
+      <item>SVGFontFaceSrcElement</item>
+      <item>SVGFontFaceUriElement</item>
+      <item>SVGForeignObjectElement</item>
+      <item>SVGGElement</item>
+      <item>SVGGlyphElement</item>
+      <item>SVGGradientElement</item>
+      <item>SVGHKernElement</item>
+      <item>SVGImageElement</item>
+      <item>SVGLength</item>
+      <item>SVGLengthList</item>
+      <item>SVGLineElement</item>
+      <item>SVGLinearGradientElement</item>
+      <item>SVGMPathElement</item>
+      <item>SVGMaskElement</item>
+      <item>SVGMatrix</item>
+      <item>SVGMissingGlyphElement</item>
+      <item>SVGNumber</item>
+      <item>SVGNumberList</item>
+      <item>SVGPathElement</item>
+      <item>SVGPatternElement</item>
+      <item>SVGPoint</item>
+      <item>SVGPolygonElement</item>
+      <item>SVGPolylineElement</item>
+      <item>SVGPreserveAspectRatio</item>
+      <item>SVGRadialGradientElement</item>
+      <item>SVGRect</item>
+      <item>SVGRectElement</item>
+      <item>SVGSVGElement</item>
+      <item>SVGScriptElement</item>
+      <item>SVGSetElement</item>
+      <item>SVGStopElement</item>
+      <item>SVGStringList</item>
+      <item>SVGStylable</item>
+      <item>SVGStyleElement</item>
+      <item>SVGSwitchElement</item>
+      <item>SVGSymbolElement</item>
+      <item>SVGTRefElement</item>
+      <item>SVGTSpanElement</item>
+      <item>SVGTests</item>
+      <item>SVGTextElement</item>
+      <item>SVGTextPositioningElement</item>
+      <item>SVGTitleElement</item>
+      <item>SVGTransform</item>
+      <item>SVGTransformList</item>
+      <item>SVGTransformable</item>
+      <item>SVGUseElement</item>
+      <item>SVGVKernElement</item>
+      <item>SVGViewElement</item>
+      <item>ServiceWorker</item>
+      <item>ServiceWorkerContainer</item>
+      <item>ServiceWorkerGlobalScope</item>
+      <item>ServiceWorkerRegistration</item>
+      <item>ServiceWorkerState</item>
+      <item>ShadowRoot</item>
+      <item>SharedWorker</item>
+      <item>SharedWorkerGlobalScope</item>
+      <item>SourceBufferList</item>
+      <item>StereoPannerNode</item>
+      <item>Storage</item>
+      <item>StorageEvent</item>
+      <item>StyleSheet</item>
+      <item>StyleSheetList</item>
+      <item>SubtleCrypto</item>
+      <item>SyncEvent</item>
+      <item>Text</item>
+      <item>TextMetrics</item>
+      <item>TimeEvent</item>
+      <item>TimeRanges</item>
+      <item>Touch</item>
+      <item>TouchEvent</item>
+      <item>TouchList</item>
+      <item>Transferable</item>
+      <item>TreeWalker</item>
+      <item>UIEvent</item>
+      <item>USVString</item>
+      <item>VRDisplayCapabilities</item>
+      <item>ValidityState</item>
+      <item>WaveShaperNode</item>
+      <item>WebGL</item>
+      <item>WebGLActiveInfo</item>
+      <item>WebGLBuffer</item>
+      <item>WebGLContextEvent</item>
+      <item>WebGLFramebuffer</item>
+      <item>WebGLProgram</item>
+      <item>WebGLRenderbuffer</item>
+      <item>WebGLRenderingContext</item>
+      <item>WebGLShader</item>
+      <item>WebGLShaderPrecisionFormat</item>
+      <item>WebGLTexture</item>
+      <item>WebGLTimerQueryEXT</item>
+      <item>WebGLTransformFeedback</item>
+      <item>WebGLUniformLocation</item>
+      <item>WebGLVertexArrayObject</item>
+      <item>WebGLVertexArrayObjectOES</item>
+      <item>WebSocket</item>
+      <item>WebSockets</item>
+      <item>WebVTT</item>
+      <item>WheelEvent</item>
+      <item>Window</item>
+      <item>WindowBase64</item>
+      <item>WindowEventHandlers</item>
+      <item>WindowTimers</item>
+      <item>Worker</item>
+      <item>WorkerGlobalScope</item>
+      <item>WorkerLocation</item>
+      <item>WorkerNavigator</item>
+      <item>XMLHttpRequest</item>
+      <item>XMLHttpRequestEventTarget</item>
+      <item>XMLSerializer</item>
+      <item>XPathExpression</item>
+      <item>XPathResult</item>
+      <item>XSLTProcessor</item>
+    </list>
+    <!-- Node.js Classes -->
+    <list name="class_node">
+      <item>Buffer</item>
+      <item>EventEmitter</item>
+      <item>Server</item>
+      <item>Pipe</item>
+      <item>Socket</item>
+      <item>REPLServer</item>
+      <item>ReadStream</item>
+      <item>WriteStream</item>
+      <item>Stream</item>
+      <item>Inflate</item>
+      <item>Deflate</item>
+      <item>InflateRaw</item>
+      <item>DeflateRaw</item>
+      <item>GZip</item>
+      <item>GUnzip</item>
+      <item>Unzip</item>
+      <item>Zip</item>
+    </list>
+
+    <!-- General Properties of Classes -->
+    <list name="variable_property">
+      <item>constructor</item>
+      <item>length</item>
+      <item>prototype</item>
+      <item>__proto__</item>
+    </list>
+    <!-- General Built-in Functions -->
+    <list name="functions">
+      <item>clearInterval</item>
+      <item>clearTimeout</item>
+      <item>decodeURI</item>
+      <item>decodeURIComponent</item>
+      <item>encodeURI</item>
+      <item>encodeURIComponent</item>
+      <item>escape</item>
+      <item>eval</item>
+      <item>isFinite</item>
+      <item>isNaN</item>
+      <item>parseFloat</item>
+      <item>parseInt</item>
+      <item>require</item>
+      <item>setTimeout</item>
+      <item>setInterval</item>
+      <item>super</item>
+      <item>unescape</item>
+      <item>uneval</item>
+    </list>
+
+    <!-- Functions of "console" -->
+    <list name="console_functions">
+      <item>assert</item>
+      <item>clear</item>
+      <item>count</item>
+      <item>debug</item>
+      <item>dir</item>
+      <item>error</item>
+      <item>group</item>
+      <item>groupCollapsed</item>
+      <item>groupEnd</item>
+      <item>info</item>
+      <item>log</item>
+      <item>profile</item>
+      <item>profileEnd</item>
+      <item>table</item>
+      <item>time</item>
+      <item>timeEnd</item>
+      <item>timeStamp</item>
+      <item>trace</item>
+      <item>warn</item>
+    </list>
+    <!-- Properties of "process" -->
+    <list name="process_property">
+      <item>arch</item>
+      <item>argv</item>
+      <item>config</item>
+      <item>connected</item>
+      <item>env</item>
+      <item>execArgv</item>
+      <item>execPath</item>
+      <item>exitCode</item>
+      <item>mainModule</item>
+      <item>pid</item>
+      <item>platform</item>
+      <item>release</item>
+      <item>stderr</item>
+      <item>stdin</item>
+      <item>stdout</item>
+      <item>title</item>
+      <item>version</item>
+      <item>versions</item>
+    </list>
+    <!-- Functions of "process" -->
+    <list name="process_functions">
+      <item>abort</item>
+      <item>chdir</item>
+      <item>cwd</item>
+      <item>disconnect</item>
+      <item>exit</item>
+      <item>setegid</item>
+      <item>seteuid</item>
+      <item>getegid</item>
+      <item>geteuid</item>
+      <item>setgid</item>
+      <item>setuid</item>
+      <item>getgid</item>
+      <item>getuid</item>
+      <item>send</item>
+      <item>setgroups</item>
+      <item>getgroups</item>
+      <item>initgroups</item>
+      <item>kill</item>
+      <item>memoryUsage</item>
+      <item>nextTick</item>
+      <item>umask</item>
+      <item>uptime</item>
+      <item>hrtime</item>
+    </list>
+
+    <!-- Constants of Number Class -->
+    <list name="number_constant">
+      <item>EPSILON</item>
+      <item>MAX_SAFE_INTEGER</item>
+      <item>MAX_VALUE</item>
+      <item>MIN_SAFE_INTEGER</item>
+      <item>MIN_VALUE</item>
+      <item>NEGATIVE_INFINITY</item>
+      <item>POSITIVE_INFINITY</item>
+    </list>
+    <!-- Constants of Math Class-->
+    <list name="math_constant">
+      <item>E</item>
+      <item>LN10</item>
+      <item>LN2</item>
+      <item>LOG10E</item>
+      <item>LOG2E</item>
+      <item>PI</item>
+      <item>SQRT1_2</item>
+      <item>SQRT2</item>
+    </list>
+    <!-- Methods of Math Class -->
+    <list name="math_functions">
+      <item>abs</item>
+      <item>acos</item>
+      <item>acosh</item>
+      <item>asin</item>
+      <item>asinh</item>
+      <item>atan</item>
+      <item>atan2</item>
+      <item>atanh</item>
+      <item>cbrt</item>
+      <item>ceil</item>
+      <item>clz32</item>
+      <item>cos</item>
+      <item>cosh</item>
+      <item>exp</item>
+      <item>expm1</item>
+      <item>floor</item>
+      <item>fround</item>
+      <item>hypot</item>
+      <item>imul</item>
+      <item>log</item>
+      <item>log10</item>
+      <item>log1p</item>
+      <item>log2</item>
+      <item>max</item>
+      <item>min</item>
+      <item>pow</item>
+      <item>random</item>
+      <item>round</item>
+      <item>sign</item>
+      <item>sin</item>
+      <item>sinh</item>
+      <item>sqrt</item>
+      <item>tan</item>
+      <item>tanh</item>
+      <item>trunc</item>
+    </list>
+    <!-- Methods of JSON Class -->
+    <list name="json_functions">
+      <item>parse</item>
+      <item>stringify</item>
+    </list>
+    <!-- Methods of Promise Class -->
+    <list name="promise_functions">
+      <item>all</item>
+      <item>catch</item>
+      <item>finally</item>
+      <item>race</item>
+      <item>reject</item>
+      <item>resolve</item>
+      <item>then</item>
+    </list>
+
+    <!-- Node.js Variables -->
+    <list name="node_variable">
+      <item>global</item>
+      <item>GLOBAL</item>
+      <item>root</item>
+      <item>__dirname</item>
+      <item>__filename</item>
+    </list>
+    <!-- DOM Variables -->
+    <list name="dom_variable">
+      <item>document</item>
+      <item>event</item>
+      <item>navigator</item>
+      <item>performance</item>
+      <item>screen</item>
+      <item>window</item>
+    </list>
+    <!-- DOM Constants -->
+    <list name="dom_constant">
+      <item>ATTRIBUTE_NODE</item>
+      <item>CDATA_SECTION_NODE</item>
+      <item>COMMENT_NODE</item>
+      <item>DOCUMENT_FRAGMENT_NODE</item>
+      <item>DOCUMENT_NODE</item>
+      <item>DOCUMENT_TYPE_NODE</item>
+      <item>DOMSTRING_SIZE_ERR</item>
+      <item>ELEMENT_NODE</item>
+      <item>ENTITY_NODE</item>
+      <item>ENTITY_REFERENCE_NODE</item>
+      <item>HIERARCHY_REQUEST_ERR</item>
+      <item>INDEX_SIZE_ERR</item>
+      <item>INUSE_ATTRIBUTE_ERR</item>
+      <item>INVALID_CHARACTER_ERR</item>
+      <item>NO_DATA_ALLOWED_ERR</item>
+      <item>NO_MODIFICATION_ALLOWED_ERR</item>
+      <item>NOT_FOUND_ERR</item>
+      <item>NOT_SUPPORTED_ERR</item>
+      <item>NOTATION_NODE</item>
+      <item>PROCESSING_INSTRUCTION_NODE</item>
+      <item>TEXT_NODE</item>
+      <item>WRONG_DOCUMENT_ERR</item>
+    </list>
+
+    <!-- For Autocomplete Keywords -->
+    <!-- Properties of DOM Classes -->
+    <list name="dom_property">
+      <item>_content</item>
+      <item>x</item>
+      <item>y</item>
+      <item>z</item>
+      <item>abbr</item>
+      <item>above</item>
+      <item>accept</item>
+      <item>acceptCharset</item>
+      <item>accessKey</item>
+      <item>action</item>
+      <item>align</item>
+      <item>aLink</item>
+      <item>vLink</item>
+      <item>aLinkcolor</item>
+      <item>vLinkcolor</item>
+      <item>all</item>
+      <item>alt</item>
+      <item>anchors</item>
+      <item>appCodeName</item>
+      <item>appCore</item>
+      <item>applets</item>
+      <item>appMinorVersion</item>
+      <item>appName</item>
+      <item>appVersion</item>
+      <item>archive</item>
+      <item>areas</item>
+      <item>arguments</item>
+      <item>attributes</item>
+      <item>availHeight</item>
+      <item>availLeft</item>
+      <item>availTop</item>
+      <item>availWidth</item>
+      <item>axis</item>
+      <item>background</item>
+      <item>backgroundColor</item>
+      <item>backgroundImage</item>
+      <item>below</item>
+      <item>bgColor</item>
+      <item>body</item>
+      <item>border</item>
+      <item>borderBottomWidth</item>
+      <item>borderColor</item>
+      <item>borderLeftWidth</item>
+      <item>borderRightWidth</item>
+      <item>borderStyle</item>
+      <item>borderTopWidth</item>
+      <item>borderWidth</item>
+      <item>bottom</item>
+      <item>bufferDepth</item>
+      <item>callee</item>
+      <item>caller</item>
+      <item>caption</item>
+      <item>cellPadding</item>
+      <item>cells</item>
+      <item>cellSpacing</item>
+      <item>ch</item>
+      <item>characterSet</item>
+      <item>charset</item>
+      <item>checked</item>
+      <item>childNodes</item>
+      <item>chOff</item>
+      <item>cite</item>
+      <item>classes</item>
+      <item>className</item>
+      <item>clear</item>
+      <item>clientInformation</item>
+      <item>clip</item>
+      <item>clipBoardData</item>
+      <item>closed</item>
+      <item>code</item>
+      <item>codeBase</item>
+      <item>codeType</item>
+      <item>color</item>
+      <item>colorDepth</item>
+      <item>cols</item>
+      <item>colSpan</item>
+      <item>compact</item>
+      <item>complete</item>
+      <item>components</item>
+      <item>content</item>
+      <item>controllers</item>
+      <item>cookie</item>
+      <item>cookieEnabled</item>
+      <item>cords</item>
+      <item>cpuClass</item>
+      <item>crypto</item>
+      <item>current</item>
+      <item>data</item>
+      <item>dateTime</item>
+      <item>declare</item>
+      <item>defaultCharset</item>
+      <item>defaultChecked</item>
+      <item>defaultSelected</item>
+      <item>defaultStatus</item>
+      <item>defaultValue</item>
+      <item>defaultView</item>
+      <item>defer</item>
+      <item>description</item>
+      <item>dialogArguments</item>
+      <item>dialogHeight</item>
+      <item>dialogLeft</item>
+      <item>dialogTop</item>
+      <item>dialogWidth</item>
+      <item>dir</item>
+      <item>directories</item>
+      <item>disabled</item>
+      <item>display</item>
+      <item>docmain</item>
+      <item>doctype</item>
+      <item>documentElement</item>
+      <item>elements</item>
+      <item>embeds</item>
+      <item>enabledPlugin</item>
+      <item>encoding</item>
+      <item>enctype</item>
+      <item>entities</item>
+      <item>event</item>
+      <item>expando</item>
+      <item>external</item>
+      <item>face</item>
+      <item>fgColor</item>
+      <item>filename</item>
+      <item>firstChild</item>
+      <item>fontFamily</item>
+      <item>fontSize</item>
+      <item>fontWeight</item>
+      <item>form</item>
+      <item>formName</item>
+      <item>forms</item>
+      <item>frame</item>
+      <item>frameBorder</item>
+      <item>frameElement</item>
+      <item>frames</item>
+      <item>hasFocus</item>
+      <item>hash</item>
+      <item>headers</item>
+      <item>height</item>
+      <item>history</item>
+      <item>host</item>
+      <item>hostname</item>
+      <item>href</item>
+      <item>hreflang</item>
+      <item>hspace</item>
+      <item>htmlFor</item>
+      <item>httpEquiv</item>
+      <item>id</item>
+      <item>ids</item>
+      <item>ignoreCase</item>
+      <item>images</item>
+      <item>implementation</item>
+      <item>index</item>
+      <item>innerHeight</item>
+      <item>innerWidth</item>
+      <item>input</item>
+      <item>isMap</item>
+      <item>label</item>
+      <item>lang</item>
+      <item>language</item>
+      <item>lastChild</item>
+      <item>lastIndex</item>
+      <item>lastMatch</item>
+      <item>lastModified</item>
+      <item>lastParen</item>
+      <item>layers</item>
+      <item>layerX</item>
+      <item>layerY</item>
+      <item>left</item>
+      <item>leftContext</item>
+      <item>lineHeight</item>
+      <item>link</item>
+      <item>linkColor</item>
+      <item>links</item>
+      <item>listStyleType</item>
+      <item>localName</item>
+      <item>location</item>
+      <item>locationbar</item>
+      <item>longDesc</item>
+      <item>lowsrc</item>
+      <item>lowSrc</item>
+      <item>marginBottom</item>
+      <item>marginHeight</item>
+      <item>marginLeft</item>
+      <item>marginRight</item>
+      <item>marginTop</item>
+      <item>marginWidth</item>
+      <item>maxLength</item>
+      <item>media</item>
+      <item>menubar</item>
+      <item>method</item>
+      <item>mimeTypes</item>
+      <item>multiline</item>
+      <item>multiple</item>
+      <item>name</item>
+      <item>nameProp</item>
+      <item>namespaces</item>
+      <item>namespaceURI</item>
+      <item>next</item>
+      <item>nextSibling</item>
+      <item>nodeName</item>
+      <item>nodeType</item>
+      <item>nodeValue</item>
+      <item>noHref</item>
+      <item>noResize</item>
+      <item>noShade</item>
+      <item>notationName</item>
+      <item>notations</item>
+      <item>noWrap</item>
+      <item>object</item>
+      <item>offscreenBuffering</item>
+      <item>onLine</item>
+      <item>onreadystatechange</item>
+      <item>opener</item>
+      <item>opsProfile</item>
+      <item>options</item>
+      <item>oscpu</item>
+      <item>outerHeight</item>
+      <item>outerWidth</item>
+      <item>ownerDocument</item>
+      <item>paddingBottom</item>
+      <item>paddingLeft</item>
+      <item>paddingRight</item>
+      <item>paddingTop</item>
+      <item>pageX</item>
+      <item>pageY</item>
+      <item>pageXOffset</item>
+      <item>pageYOffset</item>
+      <item>parent</item>
+      <item>parentLayer</item>
+      <item>parentNode</item>
+      <item>parentWindow</item>
+      <item>pathname</item>
+      <item>personalbar</item>
+      <item>pixelDepth</item>
+      <item>pkcs11</item>
+      <item>platform</item>
+      <item>plugins</item>
+      <item>port</item>
+      <item>prefix</item>
+      <item>previous</item>
+      <item>previousDibling</item>
+      <item>product</item>
+      <item>productSub</item>
+      <item>profile</item>
+      <item>profileend</item>
+      <item>prompt</item>
+      <item>prompter</item>
+      <item>protocol</item>
+      <item>publicId</item>
+      <item>readOnly</item>
+      <item>readyState</item>
+      <item>referrer</item>
+      <item>rel</item>
+      <item>responseText</item>
+      <item>responseXML</item>
+      <item>rev</item>
+      <item>right</item>
+      <item>rightContext</item>
+      <item>rowIndex</item>
+      <item>rows</item>
+      <item>rowSpan</item>
+      <item>rules</item>
+      <item>scheme</item>
+      <item>scope</item>
+      <item>screenX</item>
+      <item>screenY</item>
+      <item>screenLeft</item>
+      <item>screenTop</item>
+      <item>scripts</item>
+      <item>scrollbars</item>
+      <item>scrolling</item>
+      <item>sectionRowIndex</item>
+      <item>security</item>
+      <item>securityPolicy</item>
+      <item>selected</item>
+      <item>selectedIndex</item>
+      <item>selection</item>
+      <item>self</item>
+      <item>shape</item>
+      <item>siblingAbove</item>
+      <item>siblingBelow</item>
+      <item>size</item>
+      <item>source</item>
+      <item>specified</item>
+      <item>standby</item>
+      <item>start</item>
+      <item>status</item>
+      <item>statusbar</item>
+      <item>statusText</item>
+      <item>style</item>
+      <item>styleSheets</item>
+      <item>suffixes</item>
+      <item>summary</item>
+      <item>systemId</item>
+      <item>systemLanguage</item>
+      <item>tagName</item>
+      <item>tags</item>
+      <item>target</item>
+      <item>tBodies</item>
+      <item>text</item>
+      <item>textAlign</item>
+      <item>textDecoration</item>
+      <item>textIndent</item>
+      <item>textTransform</item>
+      <item>tFoot</item>
+      <item>tHead</item>
+      <item>title</item>
+      <item>toolbar</item>
+      <item>top</item>
+      <item>type</item>
+      <item>undefined</item>
+      <item>uniqueID</item>
+      <item>updateInterval</item>
+      <item>URL</item>
+      <item>URLUnencoded</item>
+      <item>useMap</item>
+      <item>userAgent</item>
+      <item>userLanguage</item>
+      <item>userProfile</item>
+      <item>vAlign</item>
+      <item>value</item>
+      <item>valueType</item>
+      <item>vendor</item>
+      <item>vendorSub</item>
+      <item>version</item>
+      <item>visibility</item>
+      <item>vspace</item>
+      <item>whiteSpace</item>
+      <item>width</item>
+      <item>XMLDocument</item>
+      <item>XSLDocument</item>
+      <item>zIndex</item>
+    </list>
+    <!-- Methods of DOM Classes -->
+    <list name="dom_functions">
+      <item>acceptNode</item>
+      <item>add</item>
+      <item>addEventListener</item>
+      <item>addTextTrack</item>
+      <item>adoptNode</item>
+      <item>after</item>
+      <item>animate</item>
+      <item>append</item>
+      <item>appendChild</item>
+      <item>appendData</item>
+      <item>before</item>
+      <item>blur</item>
+      <item>canPlayType</item>
+      <item>captureStream</item>
+      <item>caretPositionFromPoint</item>
+      <item>caretRangeFromPoint</item>
+      <item>checkValidity</item>
+      <item>clear</item>
+      <item>click</item>
+      <item>cloneContents</item>
+      <item>cloneNode</item>
+      <item>cloneRange</item>
+      <item>close</item>
+      <item>closest</item>
+      <item>collapse</item>
+      <item>compareBoundaryPoints</item>
+      <item>compareDocumentPosition</item>
+      <item>comparePoint</item>
+      <item>contains</item>
+      <item>convertPointFromNode</item>
+      <item>convertQuadFromNode</item>
+      <item>convertRectFromNode</item>
+      <item>createAttribute</item>
+      <item>createAttributeNS</item>
+      <item>createCaption</item>
+      <item>createCDATASection</item>
+      <item>createComment</item>
+      <item>createContextualFragment</item>
+      <item>createDocument</item>
+      <item>createDocumentFragment</item>
+      <item>createDocumentType</item>
+      <item>createElement</item>
+      <item>createElementNS</item>
+      <item>createEntityReference</item>
+      <item>createEvent</item>
+      <item>createExpression</item>
+      <item>createHTMLDocument</item>
+      <item>createNodeIterator</item>
+      <item>createNSResolver</item>
+      <item>createProcessingInstruction</item>
+      <item>createRange</item>
+      <item>createShadowRoot</item>
+      <item>createTBody</item>
+      <item>createTextNode</item>
+      <item>createTFoot</item>
+      <item>createTHead</item>
+      <item>createTreeWalker</item>
+      <item>delete</item>
+      <item>deleteCaption</item>
+      <item>deleteCell</item>
+      <item>deleteContents</item>
+      <item>deleteData</item>
+      <item>deleteRow</item>
+      <item>deleteTFoot</item>
+      <item>deleteTHead</item>
+      <item>detach</item>
+      <item>disconnect</item>
+      <item>dispatchEvent</item>
+      <item>elementFromPoint</item>
+      <item>elementsFromPoint</item>
+      <item>enableStyleSheetsForSet</item>
+      <item>entries</item>
+      <item>evaluate</item>
+      <item>execCommand</item>
+      <item>exitFullscreen</item>
+      <item>exitPointerLock</item>
+      <item>expand</item>
+      <item>extractContents</item>
+      <item>fastSeek</item>
+      <item>firstChild</item>
+      <item>focus</item>
+      <item>forEach</item>
+      <item>get</item>
+      <item>getAll</item>
+      <item>getAnimations</item>
+      <item>getAttribute</item>
+      <item>getAttributeNames</item>
+      <item>getAttributeNode</item>
+      <item>getAttributeNodeNS</item>
+      <item>getAttributeNS</item>
+      <item>getBoundingClientRect</item>
+      <item>getBoxQuads</item>
+      <item>getClientRects</item>
+      <item>getContext</item>
+      <item>getDestinationInsertionPoints</item>
+      <item>getElementById</item>
+      <item>getElementsByClassName</item>
+      <item>getElementsByName</item>
+      <item>getElementsByTagName</item>
+      <item>getElementsByTagNameNS</item>
+      <item>getItem</item>
+      <item>getNamedItem</item>
+      <item>getSelection</item>
+      <item>getStartDate</item>
+      <item>getVideoPlaybackQuality</item>
+      <item>has</item>
+      <item>hasAttribute</item>
+      <item>hasAttributeNS</item>
+      <item>hasAttributes</item>
+      <item>hasChildNodes</item>
+      <item>hasFeature</item>
+      <item>hasFocus</item>
+      <item>importNode</item>
+      <item>initEvent</item>
+      <item>insertAdjacentElement</item>
+      <item>insertAdjacentHTML</item>
+      <item>insertAdjacentText</item>
+      <item>insertBefore</item>
+      <item>insertCell</item>
+      <item>insertData</item>
+      <item>insertNode</item>
+      <item>insertRow</item>
+      <item>intersectsNode</item>
+      <item>isDefaultNamespace</item>
+      <item>isEqualNode</item>
+      <item>isPointInRange</item>
+      <item>isSameNode</item>
+      <item>item</item>
+      <item>key</item>
+      <item>keys</item>
+      <item>lastChild</item>
+      <item>load</item>
+      <item>lookupNamespaceURI</item>
+      <item>lookupPrefix</item>
+      <item>matches</item>
+      <item>move</item>
+      <item>moveAttribute</item>
+      <item>moveAttributeNode</item>
+      <item>moveChild</item>
+      <item>moveNamedItem</item>
+      <item>namedItem</item>
+      <item>nextNode</item>
+      <item>nextSibling</item>
+      <item>normalize</item>
+      <item>observe</item>
+      <item>open</item>
+      <item>parentNode</item>
+      <item>pause</item>
+      <item>play</item>
+      <item>postMessage</item>
+      <item>prepend</item>
+      <item>preventDefault</item>
+      <item>previousNode</item>
+      <item>previousSibling</item>
+      <item>probablySupportsContext</item>
+      <item>queryCommandEnabled</item>
+      <item>queryCommandIndeterm</item>
+      <item>queryCommandState</item>
+      <item>queryCommandSupported</item>
+      <item>queryCommandValue</item>
+      <item>querySelector</item>
+      <item>querySelectorAll</item>
+      <item>registerContentHandler</item>
+      <item>registerElement</item>
+      <item>registerProtocolHandler</item>
+      <item>releaseCapture</item>
+      <item>releaseEvents</item>
+      <item>remove</item>
+      <item>removeAttribute</item>
+      <item>removeAttributeNode</item>
+      <item>removeAttributeNS</item>
+      <item>removeChild</item>
+      <item>removeEventListener</item>
+      <item>removeItem</item>
+      <item>replace</item>
+      <item>replaceChild</item>
+      <item>replaceData</item>
+      <item>replaceWith</item>
+      <item>reportValidity</item>
+      <item>requestFullscreen</item>
+      <item>requestPointerLock</item>
+      <item>reset</item>
+      <item>scroll</item>
+      <item>scrollBy</item>
+      <item>scrollIntoView</item>
+      <item>scrollTo</item>
+      <item>seekToNextFrame</item>
+      <item>select</item>
+      <item>selectNode</item>
+      <item>selectNodeContents</item>
+      <item>set</item>
+      <item>setAttribute</item>
+      <item>setAttributeNode</item>
+      <item>setAttributeNodeNS</item>
+      <item>setAttributeNS</item>
+      <item>setCapture</item>
+      <item>setCustomValidity</item>
+      <item>setEnd</item>
+      <item>setEndAfter</item>
+      <item>setEndBefore</item>
+      <item>setItem</item>
+      <item>setNamedItem</item>
+      <item>setRangeText</item>
+      <item>setSelectionRange</item>
+      <item>setSinkId</item>
+      <item>setStart</item>
+      <item>setStartAfter</item>
+      <item>setStartBefore</item>
+      <item>slice</item>
+      <item>splitText</item>
+      <item>stepDown</item>
+      <item>stepUp</item>
+      <item>stopImmediatePropagation</item>
+      <item>stopPropagation</item>
+      <item>submit</item>
+      <item>substringData</item>
+      <item>supports</item>
+      <item>surroundContents</item>
+      <item>takeRecords</item>
+      <item>terminate</item>
+      <item>toBlob</item>
+      <item>toDataURL</item>
+      <item>toggle</item>
+      <!--<item>toString</item>--> <!-- Duplicated: function_common -->
+      <item>values</item>
+      <item>write</item>
+      <item>writeln</item>
+    </list>
+    <!-- Event Handler -->
+    <list name="eventhandler_property">
+      <item>onRowsinserted</item>
+      <item>onRowsdelete</item>
+      <item>onRowenter</item>
+      <item>onRowexit</item>
+      <item>onResize</item>
+      <item>onResizestart</item>
+      <item>onResizeend</item>
+      <item>onReset</item>
+      <item>onReadystatechange</item>
+      <item>onMouseout</item>
+      <item>onMouseover</item>
+      <item>onMousedown</item>
+      <item>onMouseup</item>
+      <item>onMousemove</item>
+      <item>onBeforecut</item>
+      <item>onBeforedeactivate</item>
+      <item>onBeforeunload</item>
+      <item>onBeforeupdate</item>
+      <item>onBeforepaste</item>
+      <item>onBeforeprint</item>
+      <item>onBeforeeditfocus</item>
+      <item>onBeforeactivate</item>
+      <item>onBlur</item>
+      <item>onScrolltop</item>
+      <item>onSubmit</item>
+      <item>onSelect</item>
+      <item>onSelectstart</item>
+      <item>onSelectionchange</item>
+      <item>onHover</item>
+      <item>onHelp</item>
+      <item>onChange</item>
+      <item>onContextmenu</item>
+      <item>onControlselect</item>
+      <item>onCut</item>
+      <item>onCellchange</item>
+      <item>onClock</item>
+      <item>onClose</item>
+      <item>onDeactivate</item>
+      <item>onDatasetchanged</item>
+      <item>onDatasetcomplete</item>
+      <item>onDataavailable</item>
+      <item>onDrop</item>
+      <item>onDrag</item>
+      <item>onDragstart</item>
+      <item>onDragover</item>
+      <item>onDragdrop</item>
+      <item>onDragenter</item>
+      <item>onDragend</item>
+      <item>onDragleave</item>
+      <item>onDblclick</item>
+      <item>onUnload</item>
+      <item>onPaste</item>
+      <item>onPropertychange</item>
+      <item>onError</item>
+      <item>onErrorupdate</item>
+      <item>onKeydown</item>
+      <item>onKeyup</item>
+      <item>onKeypress</item>
+      <item>onFocus</item>
+      <item>onLoad</item>
+      <item>onActivate</item>
+      <item>onAfterupdate</item>
+      <item>onAfterprint</item>
+      <item>onAbort</item>
+    </list>
+    <!-- Others Methods of Classes -->
+    <list name="function_common">
+      <item>shift</item>
+      <item>showModelessDialog</item>
+      <item>showModalDialog</item>
+      <item>showHelp</item>
+      <item>scroll</item>
+      <item>scrollX</item>
+      <item>scrollByPages</item>
+      <item>scrollByLines</item>
+      <item>scrollY</item>
+      <item>scrollTo</item>
+      <item>stop</item>
+      <item>strike</item>
+      <item>sizeToContent</item>
+      <item>sidebar</item>
+      <item>signText</item>
+      <item>sort</item>
+      <item>sup</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>substring</item>
+      <item>splice</item>
+      <item>split</item>
+      <item>send</item>
+      <item>setMilliseconds</item>
+      <item>setSeconds</item>
+      <item>setMinutes</item>
+      <item>setHours</item>
+      <item>setMonth</item>
+      <item>setYear</item>
+      <item>setFullYear</item>
+      <item>setDate</item>
+      <item>setUTCMilliseconds</item>
+      <item>setUTCSeconds</item>
+      <item>setUTCMinutes</item>
+      <item>setUTCHours</item>
+      <item>setUTCMonth</item>
+      <item>setUTCFullYear</item>
+      <item>setUTCDate</item>
+      <item>setTime</item>
+      <item>setHotkeys</item>
+      <item>setCursor</item>
+      <item>setZOptions</item>
+      <item>setActive</item>
+      <item>setResizable</item>
+      <item>setRequestHeader</item>
+      <item>search</item>
+      <item>slice</item>
+      <item>savePreferences</item>
+      <item>small</item>
+      <item>home</item>
+      <item>handleEvent</item>
+      <item>navigate</item>
+      <item>char</item>
+      <item>charCodeAt</item>
+      <item>charAt</item>
+      <item>concat</item>
+      <item>contextual</item>
+      <item>confirm</item>
+      <item>compile</item>
+      <item>clear</item>
+      <item>captureEvents</item>
+      <item>call</item>
+      <item>createStyleSheet</item>
+      <item>createPopup</item>
+      <item>createEventObject</item>
+      <item>toGMTString</item>
+      <item>toUTCString</item>
+      <item>toString</item>
+      <item>toSource</item>
+      <item>toUpperCase</item>
+      <item>toLowerCase</item>
+      <item>toLocaleString</item>
+      <item>test</item>
+      <item>taint</item>
+      <item>taintEnabled</item>
+      <item>indexOf</item>
+      <item>italics</item>
+      <item>disableExternalCapture</item>
+      <item>dump</item>
+      <item>detachEvent</item>
+      <item>unshift</item>
+      <item>untaint</item>
+      <item>unwatch</item>
+      <item>updateCommands</item>
+      <item>join</item>
+      <item>javaEnabled</item>
+      <item>pop</item>
+      <item>push</item>
+      <item>plugins.refresh</item>
+      <item>paddings</item>
+      <item>parse</item>
+      <item>print</item>
+      <item>prompt</item>
+      <item>preference</item>
+      <item>enableExternalCapture</item>
+      <item>exec</item>
+      <item>execScript</item>
+      <item>valueOf</item>
+      <item>UTC</item>
+      <item>find</item>
+      <item>file</item>
+      <item>fileModifiedDate</item>
+      <item>fileSize</item>
+      <item>fileCreatedDate</item>
+      <item>fileUpdatedDate</item>
+      <item>fixed</item>
+      <item>fontsize</item>
+      <item>fontcolor</item>
+      <item>forward</item>
+      <item>fromCharCode</item>
+      <item>watch</item>
+      <item>link</item>
+      <item>load</item>
+      <item>lastIndexOf</item>
+      <item>anchor</item>
+      <item>attachEvent</item>
+      <item>atob</item>
+      <item>apply</item>
+      <item>alert</item>
+      <item>abort</item>
+      <item>routeEvents</item>
+      <item>resize</item>
+      <item>resizeBy</item>
+      <item>resizeTo</item>
+      <item>recalc</item>
+      <item>returnValue</item>
+      <item>replace</item>
+      <item>reverse</item>
+      <item>reload</item>
+      <item>releaseCapture</item>
+      <item>releaseEvents</item>
+      <item>go</item>
+      <item>getMilliseconds</item>
+      <item>getSeconds</item>
+      <item>getMinutes</item>
+      <item>getHours</item>
+      <item>getMonth</item>
+      <item>getDay</item>
+      <item>getYear</item>
+      <item>getFullYear</item>
+      <item>getTime</item>
+      <item>getDate</item>
+      <item>getTimezoneOffset</item>
+      <item>getUTCMilliseconds</item>
+      <item>getUTCSeconds</item>
+      <item>getUTCMinutes</item>
+      <item>getUTCHours</item>
+      <item>getUTCDay</item>
+      <item>getUTCMonth</item>
+      <item>getUTCFullYear</item>
+      <item>getUTCDate</item>
+      <item>getAttention</item>
+      <item>getSelection</item>
+      <item>getResponseHeader</item>
+      <item>getAllResponseHeaders</item>
+      <item>moveBy</item>
+      <item>moveBelow</item>
+      <item>moveTo</item>
+      <item>moveToAbsolute</item>
+      <item>moveAbove</item>
+      <item>mergeAttributes</item>
+      <item>match</item>
+      <item>margins</item>
+      <item>btoa</item>
+      <item>big</item>
+      <item>bold</item>
+      <item>borderWidths</item>
+      <item>blink</item>
+      <item>back</item>
+    </list>
+
+    <contexts>
+
+      <!-- Shebang: ("#!") Detect shebang and fallthrough to Normal -->
+      <!-- Based on the similar clause from prolog.xml.
+           This uses "lineEmptyContext" & "lineEndContext" to force the highlight only on the first line. -->
+      <context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+        <Detect2Chars column="0" char="#" char1="!" context="Shebang Line" attribute="Comment" />
+      </context>
+      <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal" />
+
+      <!-- Normal Syntax of JavaScript. -->
+      <!-- NOTE: These IncludeRules rules, except BuiltInClasses and FindBrackets are included in qml.xml -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces/>
+        <IncludeRules context="FindNumbers" />
+        <IncludeRules context="FindKeywords" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="BuiltInClasses" />
+        <IncludeRules context="FindObjectMembersAndFunctions" />
+        <IncludeRules context="FindBrackets" />
+        <IncludeRules context="JSBase" />
+      </context>
+
+      <!-- Base Syntax. Used by the TypeScript highlighter. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="JSBase">
+        <AnyChar context="NoRegExp" String="])" />
+        <!--DetectIdentifier-->
+        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
+        <RegExpr context="NoRegExp" String="&identifier;" />
+
+        <IncludeRules context="FindComments" />
+
+        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
+        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=/\*|//)" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
+
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+
+        <!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
+        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
+        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
+      </context>
+
+
+      <!-- Content Contexts -->
+
+      <!-- Avoid highlighting regular expressions. -->
+      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop" name="NoRegExp">
+        <Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars context="#pop" char="/" char1="*" lookAhead="true" />
+        <DetectChar attribute="Symbol" context="#pop" char="/" />
+        <DetectSpaces/>
+      </context>
+
+      <!-- USE ONLY ANFTER STRINGS: Highlight only valid regular expressions of a single line. -->
+      <context attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop" name="RegExpAfterString">
+        <DetectSpaces/>
+        <Detect2Chars context="#pop#pop" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars context="#pop#pop" char="/" char1="*" lookAhead="true" />
+        <!-- Detect valid Regular expression in single line -->
+        <RegExpr attribute="Regular Expression" context="#pop#pop!(regex caret first check)" String="/(?=(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/(?:[gimsuy]+(?!\s*[\w$])|(?![/\*])|(?=/\*)))" />
+        <DetectChar attribute="Symbol" context="#pop#pop" char="/" />
+      </context>
+
+      <!-- Object, within { ... } -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindBrackets">
+        <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
+        <DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
+        <DetectChar attribute="Normal Text" context="NoRegExp" char="]" endRegion="List" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Object">
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Brace" />
+        <!-- Mostly required for define: in switch blocks -->
+        <keyword attribute="Keyword" String="keywords" />
+        <RegExpr attribute="ControlFlow" String="\bdefault(?=\s*:)" />
+
+        <RegExpr attribute="JSON" String="&identifier;(?=\s*:)" />
+        <!-- a ? b : c -->
+        <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\{\}]*&identifier;\s*\:)" />
+
+        <IncludeRules context="Normal" />
+      </context>
+      <!-- Highlight keywords before ":" in conditional expressions. -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="ConditionalExpression">
+        <DetectChar attribute="Symbol" context="#pop" char=":" />
+        <DetectChar attribute="Symbol" context="#stay" char="?" />
+        <AnyChar context="#pop" String="{}" lookAhead="true" />
+        <IncludeRules context="FindKeywords" />
+        <IncludeRules context="Normal" />
+      </context>
+
+      <!-- Keywords -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindKeywords">
+        <WordDetect attribute="Keyword" context="FunctionDeclaration" String="function" />
+        <keyword attribute="ControlFlow" String="controlflow" />
+        <keyword attribute="Keyword" String="keywords" />
+        <keyword attribute="Reserved" String="reserved" />
+        <keyword attribute="Keyword" context="NoRegExp" String="primitives" />
+        <keyword attribute="Module" String="module" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FunctionDeclaration" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Function Declaration" context="#pop" String="&identifier;(?=\s*\()" /> <!-- NoRegExp -->
+        <IncludeRules context="FindComments" />
+      </context>
+
+      <!-- Numbers -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindNumbers">
+        <Float attribute="Float" context="NoRegExp" />
+        <!-- Invalid Binary, Octal or Hex. IMPORTANT: Allow Bigint. -->
+        <RegExpr attribute="Error" context="NoRegExp" String="\b0(?:b[01]*[2-9]\d*|o[0-7]*[89]\d*|x[0-9a-f]*[g-mo-z][a-mo-z0-9]*)" insensitive="true" />
+        <HlCHex attribute="Hex" context="NoRegExp" />
+        <RegExpr attribute="Octal" context="NoRegExp" String="\b0[oO][0-7]+" />
+        <RegExpr attribute="Binary" context="NoRegExp" String="\b0[bB][01]+" />
+        <RegExpr attribute="Float" context="NoRegExp" String="\b\d+[eE][\+\-]?\d+" />
+        <Int attribute="Decimal" context="NoRegExp" />
+      </context>
+
+      <!-- Find Objects Member and Functions -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindObjectMembersAndFunctions">
+        <!-- The order of these rules is important: 1) Functions. 2) Constants. 3) Objects. -->
+        <RegExpr attribute="Function Name" context="Function" String="(&identifier;)(?=\s*\()" lookAhead="true" />
+        <IncludeRules context="BuiltInConstants" />
+        <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
+        <DetectChar attribute="Symbol" context="Object Member" char="." />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Function">
+        <keyword attribute="Function (Built-in)" context="#pop" String="functions" />
+        <StringDetect attribute="Function Name" context="#pop" String="%1" dynamic="true" />
+        <DetectChar context="#pop" char="(" lookAhead="true" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
+        <IncludeRules context="DefaultMemberObject" />
+        <!-- Common functions and properties, only for autocomplete keywords -->
+        <keyword attribute="Object Member" context="#pop!NoRegExp" String="dom_property" />
+        <keyword attribute="Function Name" context="#pop!NoRegExp" String="dom_functions" />
+        <keyword attribute="Object Member" context="#pop!NoRegExp" String="eventhandler_property" />
+        <keyword attribute="Function Name" context="#pop!NoRegExp" String="function_common" />
+      </context>
+      <!-- Used in common and built-in objects. -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="DefaultMemberObject">
+        <DetectChar attribute="Symbol" context="#stay" char="." />
+
+        <!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. -->
+        <!-- Function -->
+        <RegExpr attribute="Function Name" context="#pop" String="&identifier;(?=\s*\()" />
+        <!-- Generic constants and properties -->
+        <keyword attribute="Object Property (Built-in)" context="#pop!NoRegExp" String="variable_property" />
+        <keyword attribute="Constant" context="#pop!NoRegExp" String="dom_constant" />
+
+        <RegExpr attribute="Object Member" context="#stay" String="&identifier;(?=\s*\.)" />
+        <RegExpr attribute="Object Member" context="#pop!NoRegExp" String="&identifier;" />
+        <IncludeRules context="NoRegExp" />
+        <DetectSpaces />
+
+        <!-- Generic Functions -->
+        <keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
+      </context>
+
+      <!-- Strings -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+        <DetectChar attribute="Template" context="Template" char="`" />
+        <StringDetect attribute="Template" context="RawTemplate" String="String.raw`" />
+
+        <DetectChar attribute="String" context="String" char="&quot;" />
+        <DetectChar attribute="String" context="String SQ" char="'" />
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <IncludeRules context="Escape" />
+        <DetectChar attribute="String" context="RegExpAfterString" char="&quot;" />
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String SQ">
+        <IncludeRules context="Escape" />
+        <DetectChar attribute="String" context="RegExpAfterString" char="'" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Escape">
+        <LineContinue attribute="Escape" context="#stay" />
+        <!-- Hexadecimal, unicode & octal -->
+        <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="x" />
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="u" />
+        <DetectChar attribute="Escape" context="Character Escape" char="\" />
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="Character Escape">
+        <AnyChar attribute="Reserved Char. Escape" context="#pop" String="0bfnrtv" /> <!-- Reserved Char. Escape. Also: "'/ -->
+        <RegExpr attribute="Escape" context="#pop" String="." /> <!-- Literal Char. Escape -->
+      </context>
+
+      <!-- Template -->
+      <context attribute="Template" lineEndContext="#stay" name="Template">
+        <IncludeRules context="Escape" />
+        <Detect2Chars attribute="Substitution" context="Substitution" char="$" char1="{" />
+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />
+      </context>
+      <context attribute="Template" lineEndContext="#stay" name="RawTemplate">
+        <DetectChar attribute="Template" context="RegExpAfterString" char="`" />
+      </context>
+      <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Substitution" char="}" context="#pop"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <!-- Comments -->
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />
+        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />
+
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" />
+
+      <!-- Regular Expressions -->
+      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
+        <RegExpr attribute="Regular Expression" context="#pop#pop" String="/\w*" />
+        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\[bB]" />
+        <RegExpr attribute="Pattern Character Class" String="\\[nrtvfDdSsWw]" />
+        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\." />
+        <RegExpr attribute="Pattern Internal Operator" String="\$(?=/)" />
+        <AnyChar attribute="Pattern Internal Operator" String="?+*()|" />
+      </context>
+      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
+        <RegExpr String="\\[\[\]]" />
+        <RegExpr attribute="Pattern Internal Operator" String="\\." />
+        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
+      </context>
+
+
+      <!-- Built-in Classes -->
+      <!-- Keep in sync with typescript.xml -->
+
+      <context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
+        <WordDetect context="FindMemberObjectNumber" attribute="Built-in Objects" String="Number" />
+        <WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
+        <WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
+        <WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
+        <WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
+
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_builtin" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_dom" />
+        <keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="class_node" />
+        <keyword context="NoRegExp" attribute="Built-in Objects" String="node_variable" />
+      </context>
+      <!-- These constants are highlighted in "Normal" -->
+      <context name="BuiltInConstants" attribute="Normal Text" lineEndContext="#stay">
+        <keyword context="NoRegExp" attribute="Constant" String="math_constant" />
+        <keyword context="NoRegExp" attribute="Constant" String="number_constant" />
+        <keyword context="NoRegExp" attribute="Constant" String="dom_constant" />
+      </context>
+
+      <!-- DOM Variable -->
+      <context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!FindMemberObjectDOM" attribute="Object Property (Built-in)" String="dom_property" />
+        <keyword context="#pop!FindMemberObjectDOM" attribute="Object Method (Built-in)" String="dom_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+        <!-- Only for autocomplete -->
+        <keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+        <keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+      </context>
+      <!-- Math Class -->
+      <context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Constant" String="math_constant" />
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Number Class -->
+      <context name="FindMemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectNumber" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Constant" String="number_constant" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Promise Class -->
+      <context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- JSON Class -->
+      <context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Console Object -->
+      <context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+      <!-- Process Object -->
+      <context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+        <DetectSpaces />
+        <DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
+      </context>
+      <context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
+        <keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
+        <IncludeRules context="DefaultMemberObject" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
+      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="ControlFlow"  defStyleNum="dsControlFlow" spellChecking="false" />
+      <itemData name="Reserved"     defStyleNum="dsKeyword" italic="true" spellChecking="false" />
+      <itemData name="Module"       defStyleNum="dsImport" spellChecking="false" />
+      <itemData name="Objects"      defStyleNum="dsNormal" spellChecking="false" />
+      <itemData name="Object Member" defStyleNum="dsAttribute" spellChecking="false" />
+
+      <itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
+      <itemData name="Function Declaration" defStyleNum="dsFunction" spellChecking="false" />
+      <itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
+      <itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
+      <itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
+      <itemData name="Function (Built-in)" defStyleNum="dsPreprocessor" spellChecking="false" />
+      <itemData name="Constant"         defStyleNum="dsConstant" spellChecking="false" />
+
+      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
+      <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
+      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Reserved Char. Escape" defStyleNum="dsSpecialChar" bold="1" spellChecking="false" />
+      <itemData name="String"       defStyleNum="dsString" />
+      <itemData name="Template"     defStyleNum="dsVerbatimString" />
+      <itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
+
+      <itemData name="Comment"      defStyleNum="dsComment" />
+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
+      <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
+      <itemData name="JSON"         defStyleNum="dsDataType" bold="0" spellChecking="false" />
+      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+
 </language>
 
 <!-- kate: space-indent on; indent-width 2; -->
diff --git a/syntax/json.xml b/syntax/json.xml
--- a/syntax/json.xml
+++ b/syntax/json.xml
@@ -12,7 +12,7 @@
  ** http://tools.ietf.org/html/rfc4627
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="3" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="4" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
diff --git a/syntax/jsp.xml b/syntax/jsp.xml
--- a/syntax/jsp.xml
+++ b/syntax/jsp.xml
@@ -1,3054 +1,238 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="4" kateversion="2.4" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
-  <highlighting>
-
-    <list name="java-1.4.2-classes">
-      <item>ARG_IN</item>
-      <item>ARG_INOUT</item>
-      <item>ARG_OUT</item>
-      <item>AWTError</item>
-      <item>AWTEvent</item>
-      <item>AWTEventListener</item>
-      <item>AWTEventListenerProxy</item>
-      <item>AWTEventMulticaster</item>
-      <item>AWTException</item>
-      <item>AWTKeyStroke</item>
-      <item>AWTPermission</item>
-      <item>AbstractAction</item>
-      <item>AbstractBorder</item>
-      <item>AbstractButton</item>
-      <item>AbstractCellEditor</item>
-      <item>AbstractCollection</item>
-      <item>AbstractColorChooserPanel</item>
-      <item>AbstractDocument</item>
-      <item>AbstractFormatter</item>
-      <item>AbstractFormatterFactory</item>
-      <item>AbstractInterruptibleChannel</item>
-      <item>AbstractLayoutCache</item>
-      <item>AbstractList</item>
-      <item>AbstractListModel</item>
-      <item>AbstractMap</item>
-      <item>AbstractMethodError</item>
-      <item>AbstractPreferences</item>
-      <item>AbstractSelectableChannel</item>
-      <item>AbstractSelectionKey</item>
-      <item>AbstractSelector</item>
-      <item>AbstractSequentialList</item>
-      <item>AbstractSet</item>
-      <item>AbstractSpinnerModel</item>
-      <item>AbstractTableModel</item>
-      <item>AbstractUndoableEdit</item>
-      <item>AbstractWriter</item>
-      <item>AccessControlContext</item>
-      <item>AccessControlException</item>
-      <item>AccessController</item>
-      <item>AccessException</item>
-      <item>Accessible</item>
-      <item>AccessibleAction</item>
-      <item>AccessibleBundle</item>
-      <item>AccessibleComponent</item>
-      <item>AccessibleContext</item>
-      <item>AccessibleEditableText</item>
-      <item>AccessibleExtendedComponent</item>
-      <item>AccessibleExtendedTable</item>
-      <item>AccessibleHyperlink</item>
-      <item>AccessibleHypertext</item>
-      <item>AccessibleIcon</item>
-      <item>AccessibleKeyBinding</item>
-      <item>AccessibleObject</item>
-      <item>AccessibleRelation</item>
-      <item>AccessibleRelationSet</item>
-      <item>AccessibleResourceBundle</item>
-      <item>AccessibleRole</item>
-      <item>AccessibleSelection</item>
-      <item>AccessibleState</item>
-      <item>AccessibleStateSet</item>
-      <item>AccessibleTable</item>
-      <item>AccessibleTableModelChange</item>
-      <item>AccessibleText</item>
-      <item>AccessibleValue</item>
-      <item>AccountExpiredException</item>
-      <item>Acl</item>
-      <item>AclEntry</item>
-      <item>AclNotFoundException</item>
-      <item>Action</item>
-      <item>ActionEvent</item>
-      <item>ActionListener</item>
-      <item>ActionMap</item>
-      <item>ActionMapUIResource</item>
-      <item>Activatable</item>
-      <item>ActivateFailedException</item>
-      <item>ActivationDesc</item>
-      <item>ActivationException</item>
-      <item>ActivationGroup</item>
-      <item>ActivationGroupDesc</item>
-      <item>ActivationGroupID</item>
-      <item>ActivationGroup_Stub</item>
-      <item>ActivationID</item>
-      <item>ActivationInstantiator</item>
-      <item>ActivationMonitor</item>
-      <item>ActivationSystem</item>
-      <item>Activator</item>
-      <item>ActiveEvent</item>
-      <item>ActiveValue</item>
-      <item>AdapterActivator</item>
-      <item>AdapterActivatorOperations</item>
-      <item>AdapterAlreadyExists</item>
-      <item>AdapterAlreadyExistsHelper</item>
-      <item>AdapterInactive</item>
-      <item>AdapterInactiveHelper</item>
-      <item>AdapterNonExistent</item>
-      <item>AdapterNonExistentHelper</item>
-      <item>AddressHelper</item>
-      <item>Adjustable</item>
-      <item>AdjustmentEvent</item>
-      <item>AdjustmentListener</item>
-      <item>Adler32</item>
-      <item>AffineTransform</item>
-      <item>AffineTransformOp</item>
-      <item>AlgorithmParameterGenerator</item>
-      <item>AlgorithmParameterGeneratorSpi</item>
-      <item>AlgorithmParameterSpec</item>
-      <item>AlgorithmParameters</item>
-      <item>AlgorithmParametersSpi</item>
-      <item>AlignmentAction</item>
-      <item>AllPermission</item>
-      <item>AlphaComposite</item>
-      <item>AlreadyBound</item>
-      <item>AlreadyBoundException</item>
-      <item>AlreadyBoundHelper</item>
-      <item>AlreadyBoundHolder</item>
-      <item>AlreadyConnectedException</item>
-      <item>AncestorEvent</item>
-      <item>AncestorListener</item>
-      <item>Annotation</item>
-      <item>Any</item>
-      <item>AnyHolder</item>
-      <item>AnySeqHelper</item>
-      <item>AnySeqHelper</item>
-      <item>AnySeqHolder</item>
-      <item>AppConfigurationEntry</item>
-      <item>Applet</item>
-      <item>AppletContext</item>
-      <item>AppletInitializer</item>
-      <item>AppletStub</item>
-      <item>ApplicationException</item>
-      <item>Arc2D</item>
-      <item>Area</item>
-      <item>AreaAveragingScaleFilter</item>
-      <item>ArithmeticException</item>
-      <item>Array</item>
-      <item>Array</item>
-      <item>ArrayIndexOutOfBoundsException</item>
-      <item>ArrayList</item>
-      <item>ArrayStoreException</item>
-      <item>Arrays</item>
-      <item>AssertionError</item>
-      <item>AsyncBoxView</item>
-      <item>AsynchronousCloseException</item>
-      <item>Attr</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>AttributeContext</item>
-      <item>AttributeException</item>
-      <item>AttributeInUseException</item>
-      <item>AttributeList</item>
-      <item>AttributeList</item>
-      <item>AttributeListImpl</item>
-      <item>AttributeModificationException</item>
-      <item>AttributeSet</item>
-      <item>AttributeSet</item>
-      <item>AttributeSetUtilities</item>
-      <item>AttributeUndoableEdit</item>
-      <item>AttributedCharacterIterator</item>
-      <item>AttributedString</item>
-      <item>Attributes</item>
-      <item>Attributes</item>
-      <item>Attributes</item>
-      <item>AttributesImpl</item>
-      <item>AudioClip</item>
-      <item>AudioFileFormat</item>
-      <item>AudioFileReader</item>
-      <item>AudioFileWriter</item>
-      <item>AudioFormat</item>
-      <item>AudioInputStream</item>
-      <item>AudioPermission</item>
-      <item>AudioSystem</item>
-      <item>AuthPermission</item>
-      <item>AuthenticationException</item>
-      <item>AuthenticationNotSupportedException</item>
-      <item>Authenticator</item>
-      <item>Autoscroll</item>
-      <item>BAD_CONTEXT</item>
-      <item>BAD_INV_ORDER</item>
-      <item>BAD_OPERATION</item>
-      <item>BAD_PARAM</item>
-      <item>BAD_POLICY</item>
-      <item>BAD_POLICY_TYPE</item>
-      <item>BAD_POLICY_VALUE</item>
-      <item>BAD_TYPECODE</item>
-      <item>BCSIterator</item>
-      <item>BCSSServiceProvider</item>
-      <item>BYTE_ARRAY</item>
-      <item>BackingStoreException</item>
-      <item>BadKind</item>
-      <item>BadLocationException</item>
-      <item>BadPaddingException</item>
-      <item>BandCombineOp</item>
-      <item>BandedSampleModel</item>
-      <item>BasicArrowButton</item>
-      <item>BasicAttribute</item>
-      <item>BasicAttributes</item>
-      <item>BasicBorders</item>
-      <item>BasicButtonListener</item>
-      <item>BasicButtonUI</item>
-      <item>BasicCaret</item>
-      <item>BasicCheckBoxMenuItemUI</item>
-      <item>BasicCheckBoxUI</item>
-      <item>BasicColorChooserUI</item>
-      <item>BasicComboBoxEditor</item>
-      <item>BasicComboBoxRenderer</item>
-      <item>BasicComboBoxUI</item>
-      <item>BasicComboPopup</item>
-      <item>BasicDesktopIconUI</item>
-      <item>BasicDesktopPaneUI</item>
-      <item>BasicDirectoryModel</item>
-      <item>BasicEditorPaneUI</item>
-      <item>BasicFileChooserUI</item>
-      <item>BasicFormattedTextFieldUI</item>
-      <item>BasicGraphicsUtils</item>
-      <item>BasicHTML</item>
-      <item>BasicHighlighter</item>
-      <item>BasicIconFactory</item>
-      <item>BasicInternalFrameTitlePane</item>
-      <item>BasicInternalFrameUI</item>
-      <item>BasicLabelUI</item>
-      <item>BasicListUI</item>
-      <item>BasicLookAndFeel</item>
-      <item>BasicMenuBarUI</item>
-      <item>BasicMenuItemUI</item>
-      <item>BasicMenuUI</item>
-      <item>BasicOptionPaneUI</item>
-      <item>BasicPanelUI</item>
-      <item>BasicPasswordFieldUI</item>
-      <item>BasicPermission</item>
-      <item>BasicPopupMenuSeparatorUI</item>
-      <item>BasicPopupMenuUI</item>
-      <item>BasicProgressBarUI</item>
-      <item>BasicRadioButtonMenuItemUI</item>
-      <item>BasicRadioButtonUI</item>
-      <item>BasicRootPaneUI</item>
-      <item>BasicScrollBarUI</item>
-      <item>BasicScrollPaneUI</item>
-      <item>BasicSeparatorUI</item>
-      <item>BasicSliderUI</item>
-      <item>BasicSpinnerUI</item>
-      <item>BasicSplitPaneDivider</item>
-      <item>BasicSplitPaneUI</item>
-      <item>BasicStroke</item>
-      <item>BasicTabbedPaneUI</item>
-      <item>BasicTableHeaderUI</item>
-      <item>BasicTableUI</item>
-      <item>BasicTextAreaUI</item>
-      <item>BasicTextFieldUI</item>
-      <item>BasicTextPaneUI</item>
-      <item>BasicTextUI</item>
-      <item>BasicToggleButtonUI</item>
-      <item>BasicToolBarSeparatorUI</item>
-      <item>BasicToolBarUI</item>
-      <item>BasicToolTipUI</item>
-      <item>BasicTreeUI</item>
-      <item>BasicViewportUI</item>
-      <item>BatchUpdateException</item>
-      <item>BeanContext</item>
-      <item>BeanContextChild</item>
-      <item>BeanContextChildComponentProxy</item>
-      <item>BeanContextChildSupport</item>
-      <item>BeanContextContainerProxy</item>
-      <item>BeanContextEvent</item>
-      <item>BeanContextMembershipEvent</item>
-      <item>BeanContextMembershipListener</item>
-      <item>BeanContextProxy</item>
-      <item>BeanContextServiceAvailableEvent</item>
-      <item>BeanContextServiceProvider</item>
-      <item>BeanContextServiceProviderBeanInfo</item>
-      <item>BeanContextServiceRevokedEvent</item>
-      <item>BeanContextServiceRevokedListener</item>
-      <item>BeanContextServices</item>
-      <item>BeanContextServicesListener</item>
-      <item>BeanContextServicesSupport</item>
-      <item>BeanContextSupport</item>
-      <item>BeanDescriptor</item>
-      <item>BeanInfo</item>
-      <item>Beans</item>
-      <item>BeepAction</item>
-      <item>BevelBorder</item>
-      <item>BevelBorderUIResource</item>
-      <item>Bias</item>
-      <item>Bidi</item>
-      <item>BigDecimal</item>
-      <item>BigInteger</item>
-      <item>BinaryRefAddr</item>
-      <item>BindException</item>
-      <item>Binding</item>
-      <item>Binding</item>
-      <item>BindingHelper</item>
-      <item>BindingHolder</item>
-      <item>BindingIterator</item>
-      <item>BindingIteratorHelper</item>
-      <item>BindingIteratorHolder</item>
-      <item>BindingIteratorOperations</item>
-      <item>BindingIteratorPOA</item>
-      <item>BindingListHelper</item>
-      <item>BindingListHolder</item>
-      <item>BindingType</item>
-      <item>BindingTypeHelper</item>
-      <item>BindingTypeHolder</item>
-      <item>BitSet</item>
-      <item>Blob</item>
-      <item>BlockView</item>
-      <item>BoldAction</item>
-      <item>Book</item>
-      <item>Boolean</item>
-      <item>BooleanControl</item>
-      <item>BooleanHolder</item>
-      <item>BooleanSeqHelper</item>
-      <item>BooleanSeqHolder</item>
-      <item>Border</item>
-      <item>BorderFactory</item>
-      <item>BorderLayout</item>
-      <item>BorderUIResource</item>
-      <item>BoundedRangeModel</item>
-      <item>Bounds</item>
-      <item>Bounds</item>
-      <item>Box</item>
-      <item>BoxLayout</item>
-      <item>BoxPainter</item>
-      <item>BoxView</item>
-      <item>BoxedValueHelper</item>
-      <item>BreakIterator</item>
-      <item>Buffer</item>
-      <item>BufferCapabilities</item>
-      <item>BufferOverflowException</item>
-      <item>BufferStrategy</item>
-      <item>BufferUnderflowException</item>
-      <item>BufferedImage</item>
-      <item>BufferedImageFilter</item>
-      <item>BufferedImageOp</item>
-      <item>BufferedInputStream</item>
-      <item>BufferedOutputStream</item>
-      <item>BufferedReader</item>
-      <item>BufferedWriter</item>
-      <item>Button</item>
-      <item>ButtonAreaLayout</item>
-      <item>ButtonBorder</item>
-      <item>ButtonBorder</item>
-      <item>ButtonGroup</item>
-      <item>ButtonModel</item>
-      <item>ButtonUI</item>
-      <item>Byte</item>
-      <item>ByteArrayInputStream</item>
-      <item>ByteArrayOutputStream</item>
-      <item>ByteBuffer</item>
-      <item>ByteChannel</item>
-      <item>ByteHolder</item>
-      <item>ByteLookupTable</item>
-      <item>ByteOrder</item>
-      <item>CDATASection</item>
-      <item>CHAR_ARRAY</item>
-      <item>CMMException</item>
-      <item>COMM_FAILURE</item>
-      <item>CRC32</item>
-      <item>CRL</item>
-      <item>CRLException</item>
-      <item>CRLSelector</item>
-      <item>CSS</item>
-      <item>CTX_RESTRICT_SCOPE</item>
-      <item>Calendar</item>
-      <item>CallableStatement</item>
-      <item>Callback</item>
-      <item>CallbackHandler</item>
-      <item>CancelablePrintJob</item>
-      <item>CancelledKeyException</item>
-      <item>CannotProceed</item>
-      <item>CannotProceedException</item>
-      <item>CannotProceedHelper</item>
-      <item>CannotProceedHolder</item>
-      <item>CannotRedoException</item>
-      <item>CannotUndoException</item>
-      <item>Canvas</item>
-      <item>CardLayout</item>
-      <item>Caret</item>
-      <item>CaretEvent</item>
-      <item>CaretListener</item>
-      <item>CaretPolicy</item>
-      <item>CellEditor</item>
-      <item>CellEditorListener</item>
-      <item>CellRendererPane</item>
-      <item>CertPath</item>
-      <item>CertPathBuilder</item>
-      <item>CertPathBuilderException</item>
-      <item>CertPathBuilderResult</item>
-      <item>CertPathBuilderSpi</item>
-      <item>CertPathParameters</item>
-      <item>CertPathRep</item>
-      <item>CertPathValidator</item>
-      <item>CertPathValidatorException</item>
-      <item>CertPathValidatorResult</item>
-      <item>CertPathValidatorSpi</item>
-      <item>CertSelector</item>
-      <item>CertStore</item>
-      <item>CertStoreException</item>
-      <item>CertStoreParameters</item>
-      <item>CertStoreSpi</item>
-      <item>Certificate</item>
-      <item>Certificate</item>
-      <item>Certificate</item>
-      <item>CertificateEncodingException</item>
-      <item>CertificateEncodingException</item>
-      <item>CertificateException</item>
-      <item>CertificateException</item>
-      <item>CertificateExpiredException</item>
-      <item>CertificateExpiredException</item>
-      <item>CertificateFactory</item>
-      <item>CertificateFactorySpi</item>
-      <item>CertificateNotYetValidException</item>
-      <item>CertificateNotYetValidException</item>
-      <item>CertificateParsingException</item>
-      <item>CertificateParsingException</item>
-      <item>CertificateRep</item>
-      <item>ChangeEvent</item>
-      <item>ChangeListener</item>
-      <item>ChangedCharSetException</item>
-      <item>Channel</item>
-      <item>ChannelBinding</item>
-      <item>Channels</item>
-      <item>CharArrayReader</item>
-      <item>CharArrayWriter</item>
-      <item>CharBuffer</item>
-      <item>CharConversionException</item>
-      <item>CharHolder</item>
-      <item>CharSeqHelper</item>
-      <item>CharSeqHolder</item>
-      <item>CharSequence</item>
-      <item>Character</item>
-      <item>CharacterAttribute</item>
-      <item>CharacterCodingException</item>
-      <item>CharacterConstants</item>
-      <item>CharacterData</item>
-      <item>CharacterIterator</item>
-      <item>Charset</item>
-      <item>CharsetDecoder</item>
-      <item>CharsetEncoder</item>
-      <item>CharsetProvider</item>
-      <item>Checkbox</item>
-      <item>CheckboxGroup</item>
-      <item>CheckboxMenuItem</item>
-      <item>CheckedInputStream</item>
-      <item>CheckedOutputStream</item>
-      <item>Checksum</item>
-      <item>Choice</item>
-      <item>ChoiceCallback</item>
-      <item>ChoiceFormat</item>
-      <item>Chromaticity</item>
-      <item>Cipher</item>
-      <item>CipherInputStream</item>
-      <item>CipherOutputStream</item>
-      <item>CipherSpi</item>
-      <item>Class</item>
-      <item>ClassCastException</item>
-      <item>ClassCircularityError</item>
-      <item>ClassDesc</item>
-      <item>ClassFormatError</item>
-      <item>ClassLoader</item>
-      <item>ClassNotFoundException</item>
-      <item>ClientRequestInfo</item>
-      <item>ClientRequestInfoOperations</item>
-      <item>ClientRequestInterceptor</item>
-      <item>ClientRequestInterceptorOperations</item>
-      <item>Clip</item>
-      <item>Clipboard</item>
-      <item>ClipboardOwner</item>
-      <item>Clob</item>
-      <item>CloneNotSupportedException</item>
-      <item>Cloneable</item>
-      <item>ClosedByInterruptException</item>
-      <item>ClosedChannelException</item>
-      <item>ClosedSelectorException</item>
-      <item>CodeSets</item>
-      <item>CodeSource</item>
-      <item>Codec</item>
-      <item>CodecFactory</item>
-      <item>CodecFactoryHelper</item>
-      <item>CodecFactoryOperations</item>
-      <item>CodecOperations</item>
-      <item>CoderMalfunctionError</item>
-      <item>CoderResult</item>
-      <item>CodingErrorAction</item>
-      <item>CollationElementIterator</item>
-      <item>CollationKey</item>
-      <item>Collator</item>
-      <item>Collection</item>
-      <item>CollectionCertStoreParameters</item>
-      <item>Collections</item>
-      <item>Color</item>
-      <item>ColorAttribute</item>
-      <item>ColorChooserComponentFactory</item>
-      <item>ColorChooserUI</item>
-      <item>ColorConstants</item>
-      <item>ColorConvertOp</item>
-      <item>ColorModel</item>
-      <item>ColorSelectionModel</item>
-      <item>ColorSpace</item>
-      <item>ColorSupported</item>
-      <item>ColorType</item>
-      <item>ColorUIResource</item>
-      <item>ComboBoxEditor</item>
-      <item>ComboBoxModel</item>
-      <item>ComboBoxUI</item>
-      <item>ComboPopup</item>
-      <item>CommandEnvironment</item>
-      <item>Comment</item>
-      <item>CommunicationException</item>
-      <item>Comparable</item>
-      <item>Comparator</item>
-      <item>Compiler</item>
-      <item>CompletionStatus</item>
-      <item>CompletionStatusHelper</item>
-      <item>Component</item>
-      <item>ComponentAdapter</item>
-      <item>ComponentColorModel</item>
-      <item>ComponentEvent</item>
-      <item>ComponentIdHelper</item>
-      <item>ComponentInputMap</item>
-      <item>ComponentInputMapUIResource</item>
-      <item>ComponentListener</item>
-      <item>ComponentOrientation</item>
-      <item>ComponentSampleModel</item>
-      <item>ComponentUI</item>
-      <item>ComponentView</item>
-      <item>Composite</item>
-      <item>CompositeContext</item>
-      <item>CompositeName</item>
-      <item>CompositeView</item>
-      <item>CompoundBorder</item>
-      <item>CompoundBorderUIResource</item>
-      <item>CompoundControl</item>
-      <item>CompoundEdit</item>
-      <item>CompoundName</item>
-      <item>Compression</item>
-      <item>ConcurrentModificationException</item>
-      <item>Configuration</item>
-      <item>ConfigurationException</item>
-      <item>ConfirmationCallback</item>
-      <item>ConnectException</item>
-      <item>ConnectException</item>
-      <item>ConnectIOException</item>
-      <item>Connection</item>
-      <item>ConnectionEvent</item>
-      <item>ConnectionEventListener</item>
-      <item>ConnectionPendingException</item>
-      <item>ConnectionPoolDataSource</item>
-      <item>ConsoleHandler</item>
-      <item>Constraints</item>
-      <item>Constructor</item>
-      <item>Container</item>
-      <item>ContainerAdapter</item>
-      <item>ContainerEvent</item>
-      <item>ContainerListener</item>
-      <item>ContainerOrderFocusTraversalPolicy</item>
-      <item>Content</item>
-      <item>ContentHandler</item>
-      <item>ContentHandler</item>
-      <item>ContentHandlerFactory</item>
-      <item>ContentModel</item>
-      <item>Context</item>
-      <item>Context</item>
-      <item>ContextList</item>
-      <item>ContextNotEmptyException</item>
-      <item>ContextualRenderedImageFactory</item>
-      <item>Control</item>
-      <item>Control</item>
-      <item>ControlFactory</item>
-      <item>ControllerEventListener</item>
-      <item>ConvolveOp</item>
-      <item>CookieHolder</item>
-      <item>Copies</item>
-      <item>CopiesSupported</item>
-      <item>CopyAction</item>
-      <item>CredentialExpiredException</item>
-      <item>CropImageFilter</item>
-      <item>CubicCurve2D</item>
-      <item>Currency</item>
-      <item>Current</item>
-      <item>Current</item>
-      <item>Current</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHolder</item>
-      <item>CurrentOperations</item>
-      <item>CurrentOperations</item>
-      <item>CurrentOperations</item>
-      <item>Cursor</item>
-      <item>CustomMarshal</item>
-      <item>CustomValue</item>
-      <item>Customizer</item>
-      <item>CutAction</item>
-      <item>DATA_CONVERSION</item>
-      <item>DESKeySpec</item>
-      <item>DESedeKeySpec</item>
-      <item>DGC</item>
-      <item>DHGenParameterSpec</item>
-      <item>DHKey</item>
-      <item>DHParameterSpec</item>
-      <item>DHPrivateKey</item>
-      <item>DHPrivateKeySpec</item>
-      <item>DHPublicKey</item>
-      <item>DHPublicKeySpec</item>
-      <item>DOMException</item>
-      <item>DOMImplementation</item>
-      <item>DOMLocator</item>
-      <item>DOMResult</item>
-      <item>DOMSource</item>
-      <item>DSAKey</item>
-      <item>DSAKeyPairGenerator</item>
-      <item>DSAParameterSpec</item>
-      <item>DSAParams</item>
-      <item>DSAPrivateKey</item>
-      <item>DSAPrivateKeySpec</item>
-      <item>DSAPublicKey</item>
-      <item>DSAPublicKeySpec</item>
-      <item>DTD</item>
-      <item>DTDConstants</item>
-      <item>DTDHandler</item>
-      <item>DataBuffer</item>
-      <item>DataBufferByte</item>
-      <item>DataBufferDouble</item>
-      <item>DataBufferFloat</item>
-      <item>DataBufferInt</item>
-      <item>DataBufferShort</item>
-      <item>DataBufferUShort</item>
-      <item>DataFlavor</item>
-      <item>DataFormatException</item>
-      <item>DataInput</item>
-      <item>DataInputStream</item>
-      <item>DataInputStream</item>
-      <item>DataLine</item>
-      <item>DataOutput</item>
-      <item>DataOutputStream</item>
-      <item>DataOutputStream</item>
-      <item>DataSource</item>
-      <item>DataTruncation</item>
-      <item>DatabaseMetaData</item>
-      <item>DatagramChannel</item>
-      <item>DatagramPacket</item>
-      <item>DatagramSocket</item>
-      <item>DatagramSocketImpl</item>
-      <item>DatagramSocketImplFactory</item>
-      <item>Date</item>
-      <item>Date</item>
-      <item>DateEditor</item>
-      <item>DateFormat</item>
-      <item>DateFormatSymbols</item>
-      <item>DateFormatter</item>
-      <item>DateTimeAtCompleted</item>
-      <item>DateTimeAtCreation</item>
-      <item>DateTimeAtProcessing</item>
-      <item>DateTimeSyntax</item>
-      <item>DebugGraphics</item>
-      <item>DecimalFormat</item>
-      <item>DecimalFormatSymbols</item>
-      <item>DeclHandler</item>
-      <item>DefaultBoundedRangeModel</item>
-      <item>DefaultButtonModel</item>
-      <item>DefaultCaret</item>
-      <item>DefaultCellEditor</item>
-      <item>DefaultColorSelectionModel</item>
-      <item>DefaultComboBoxModel</item>
-      <item>DefaultDesktopManager</item>
-      <item>DefaultEditor</item>
-      <item>DefaultEditorKit</item>
-      <item>DefaultFocusManager</item>
-      <item>DefaultFocusTraversalPolicy</item>
-      <item>DefaultFormatter</item>
-      <item>DefaultFormatterFactory</item>
-      <item>DefaultHandler</item>
-      <item>DefaultHighlightPainter</item>
-      <item>DefaultHighlighter</item>
-      <item>DefaultKeyTypedAction</item>
-      <item>DefaultKeyboardFocusManager</item>
-      <item>DefaultListCellRenderer</item>
-      <item>DefaultListModel</item>
-      <item>DefaultListSelectionModel</item>
-      <item>DefaultMenuLayout</item>
-      <item>DefaultMetalTheme</item>
-      <item>DefaultMutableTreeNode</item>
-      <item>DefaultPersistenceDelegate</item>
-      <item>DefaultSelectionType</item>
-      <item>DefaultSingleSelectionModel</item>
-      <item>DefaultStyledDocument</item>
-      <item>DefaultTableCellRenderer</item>
-      <item>DefaultTableColumnModel</item>
-      <item>DefaultTableModel</item>
-      <item>DefaultTextUI</item>
-      <item>DefaultTreeCellEditor</item>
-      <item>DefaultTreeCellRenderer</item>
-      <item>DefaultTreeModel</item>
-      <item>DefaultTreeSelectionModel</item>
-      <item>DefinitionKind</item>
-      <item>DefinitionKindHelper</item>
-      <item>Deflater</item>
-      <item>DeflaterOutputStream</item>
-      <item>Delegate</item>
-      <item>Delegate</item>
-      <item>Delegate</item>
-      <item>DelegationPermission</item>
-      <item>DesignMode</item>
-      <item>DesktopIconUI</item>
-      <item>DesktopManager</item>
-      <item>DesktopPaneUI</item>
-      <item>Destination</item>
-      <item>DestinationType</item>
-      <item>DestroyFailedException</item>
-      <item>Destroyable</item>
-      <item>Dialog</item>
-      <item>DialogType</item>
-      <item>Dictionary</item>
-      <item>DigestException</item>
-      <item>DigestInputStream</item>
-      <item>DigestOutputStream</item>
-      <item>Dimension</item>
-      <item>Dimension2D</item>
-      <item>DimensionUIResource</item>
-      <item>DirContext</item>
-      <item>DirObjectFactory</item>
-      <item>DirStateFactory</item>
-      <item>DirectColorModel</item>
-      <item>DirectoryManager</item>
-      <item>DisplayMode</item>
-      <item>DnDConstants</item>
-      <item>Doc</item>
-      <item>DocAttribute</item>
-      <item>DocAttributeSet</item>
-      <item>DocFlavor</item>
-      <item>DocPrintJob</item>
-      <item>Document</item>
-      <item>Document</item>
-      <item>DocumentBuilder</item>
-      <item>DocumentBuilderFactory</item>
-      <item>DocumentEvent</item>
-      <item>DocumentFilter</item>
-      <item>DocumentFragment</item>
-      <item>DocumentHandler</item>
-      <item>DocumentListener</item>
-      <item>DocumentName</item>
-      <item>DocumentParser</item>
-      <item>DocumentType</item>
-      <item>DomainCombiner</item>
-      <item>DomainManager</item>
-      <item>DomainManagerOperations</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>DoubleBuffer</item>
-      <item>DoubleHolder</item>
-      <item>DoubleSeqHelper</item>
-      <item>DoubleSeqHolder</item>
-      <item>DragGestureEvent</item>
-      <item>DragGestureListener</item>
-      <item>DragGestureRecognizer</item>
-      <item>DragSource</item>
-      <item>DragSourceAdapter</item>
-      <item>DragSourceContext</item>
-      <item>DragSourceDragEvent</item>
-      <item>DragSourceDropEvent</item>
-      <item>DragSourceEvent</item>
-      <item>DragSourceListener</item>
-      <item>DragSourceMotionListener</item>
-      <item>Driver</item>
-      <item>DriverManager</item>
-      <item>DriverPropertyInfo</item>
-      <item>DropTarget</item>
-      <item>DropTargetAdapter</item>
-      <item>DropTargetAutoScroller</item>
-      <item>DropTargetContext</item>
-      <item>DropTargetDragEvent</item>
-      <item>DropTargetDropEvent</item>
-      <item>DropTargetEvent</item>
-      <item>DropTargetListener</item>
-      <item>DuplicateName</item>
-      <item>DuplicateNameHelper</item>
-      <item>DynAny</item>
-      <item>DynAny</item>
-      <item>DynAnyFactory</item>
-      <item>DynAnyFactoryHelper</item>
-      <item>DynAnyFactoryOperations</item>
-      <item>DynAnyHelper</item>
-      <item>DynAnyOperations</item>
-      <item>DynAnySeqHelper</item>
-      <item>DynArray</item>
-      <item>DynArray</item>
-      <item>DynArrayHelper</item>
-      <item>DynArrayOperations</item>
-      <item>DynEnum</item>
-      <item>DynEnum</item>
-      <item>DynEnumHelper</item>
-      <item>DynEnumOperations</item>
-      <item>DynFixed</item>
-      <item>DynFixed</item>
-      <item>DynFixedHelper</item>
-      <item>DynFixedOperations</item>
-      <item>DynSequence</item>
-      <item>DynSequence</item>
-      <item>DynSequenceHelper</item>
-      <item>DynSequenceOperations</item>
-      <item>DynStruct</item>
-      <item>DynStruct</item>
-      <item>DynStructHelper</item>
-      <item>DynStructOperations</item>
-      <item>DynUnion</item>
-      <item>DynUnion</item>
-      <item>DynUnionHelper</item>
-      <item>DynUnionOperations</item>
-      <item>DynValue</item>
-      <item>DynValue</item>
-      <item>DynValueBox</item>
-      <item>DynValueBoxOperations</item>
-      <item>DynValueCommon</item>
-      <item>DynValueCommonOperations</item>
-      <item>DynValueHelper</item>
-      <item>DynValueOperations</item>
-      <item>DynamicImplementation</item>
-      <item>DynamicImplementation</item>
-      <item>DynamicUtilTreeNode</item>
-      <item>ENCODING_CDR_ENCAPS</item>
-      <item>EOFException</item>
-      <item>EditorKit</item>
-      <item>Element</item>
-      <item>Element</item>
-      <item>Element</item>
-      <item>ElementChange</item>
-      <item>ElementEdit</item>
-      <item>ElementIterator</item>
-      <item>ElementSpec</item>
-      <item>Ellipse2D</item>
-      <item>EmptyBorder</item>
-      <item>EmptyBorderUIResource</item>
-      <item>EmptySelectionModel</item>
-      <item>EmptyStackException</item>
-      <item>EncodedKeySpec</item>
-      <item>Encoder</item>
-      <item>Encoding</item>
-      <item>Encoding</item>
-      <item>EncryptedPrivateKeyInfo</item>
-      <item>Engineering</item>
-      <item>Entity</item>
-      <item>Entity</item>
-      <item>EntityReference</item>
-      <item>EntityResolver</item>
-      <item>Entry</item>
-      <item>EnumControl</item>
-      <item>EnumSyntax</item>
-      <item>Enumeration</item>
-      <item>Environment</item>
-      <item>Error</item>
-      <item>ErrorHandler</item>
-      <item>ErrorListener</item>
-      <item>ErrorManager</item>
-      <item>EtchedBorder</item>
-      <item>EtchedBorderUIResource</item>
-      <item>Event</item>
-      <item>EventContext</item>
-      <item>EventDirContext</item>
-      <item>EventHandler</item>
-      <item>EventListener</item>
-      <item>EventListenerList</item>
-      <item>EventListenerProxy</item>
-      <item>EventObject</item>
-      <item>EventQueue</item>
-      <item>EventSetDescriptor</item>
-      <item>EventType</item>
-      <item>EventType</item>
-      <item>Exception</item>
-      <item>ExceptionInInitializerError</item>
-      <item>ExceptionList</item>
-      <item>ExceptionListener</item>
-      <item>ExemptionMechanism</item>
-      <item>ExemptionMechanismException</item>
-      <item>ExemptionMechanismSpi</item>
-      <item>ExpandVetoException</item>
-      <item>ExportException</item>
-      <item>Expression</item>
-      <item>ExtendedRequest</item>
-      <item>ExtendedResponse</item>
-      <item>Externalizable</item>
-      <item>FREE_MEM</item>
-      <item>FactoryConfigurationError</item>
-      <item>FailedLoginException</item>
-      <item>FeatureDescriptor</item>
-      <item>Fidelity</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>FieldBorder</item>
-      <item>FieldNameHelper</item>
-      <item>FieldNameHelper</item>
-      <item>FieldPosition</item>
-      <item>FieldView</item>
-      <item>File</item>
-      <item>FileCacheImageInputStream</item>
-      <item>FileCacheImageOutputStream</item>
-      <item>FileChannel</item>
-      <item>FileChooserUI</item>
-      <item>FileDescriptor</item>
-      <item>FileDialog</item>
-      <item>FileFilter</item>
-      <item>FileFilter</item>
-      <item>FileHandler</item>
-      <item>FileIcon16</item>
-      <item>FileImageInputStream</item>
-      <item>FileImageOutputStream</item>
-      <item>FileInputStream</item>
-      <item>FileLock</item>
-      <item>FileLockInterruptionException</item>
-      <item>FileNameMap</item>
-      <item>FileNotFoundException</item>
-      <item>FileOutputStream</item>
-      <item>FilePermission</item>
-      <item>FileReader</item>
-      <item>FileSystemView</item>
-      <item>FileView</item>
-      <item>FileWriter</item>
-      <item>FilenameFilter</item>
-      <item>Filler</item>
-      <item>Filter</item>
-      <item>Filter</item>
-      <item>FilterBypass</item>
-      <item>FilterBypass</item>
-      <item>FilterInputStream</item>
-      <item>FilterOutputStream</item>
-      <item>FilterReader</item>
-      <item>FilterWriter</item>
-      <item>FilteredImageSource</item>
-      <item>Finishings</item>
-      <item>FixedHeightLayoutCache</item>
-      <item>FixedHolder</item>
-      <item>FlatteningPathIterator</item>
-      <item>FlavorException</item>
-      <item>FlavorMap</item>
-      <item>FlavorTable</item>
-      <item>FlipContents</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>FloatBuffer</item>
-      <item>FloatControl</item>
-      <item>FloatHolder</item>
-      <item>FloatSeqHelper</item>
-      <item>FloatSeqHolder</item>
-      <item>FlowLayout</item>
-      <item>FlowStrategy</item>
-      <item>FlowView</item>
-      <item>Flush3DBorder</item>
-      <item>FocusAdapter</item>
-      <item>FocusEvent</item>
-      <item>FocusListener</item>
-      <item>FocusManager</item>
-      <item>FocusTraversalPolicy</item>
-      <item>FolderIcon16</item>
-      <item>Font</item>
-      <item>FontAttribute</item>
-      <item>FontConstants</item>
-      <item>FontFamilyAction</item>
-      <item>FontFormatException</item>
-      <item>FontMetrics</item>
-      <item>FontRenderContext</item>
-      <item>FontSizeAction</item>
-      <item>FontUIResource</item>
-      <item>ForegroundAction</item>
-      <item>FormView</item>
-      <item>Format</item>
-      <item>FormatConversionProvider</item>
-      <item>FormatMismatch</item>
-      <item>FormatMismatchHelper</item>
-      <item>Formatter</item>
-      <item>ForwardRequest</item>
-      <item>ForwardRequest</item>
-      <item>ForwardRequestHelper</item>
-      <item>ForwardRequestHelper</item>
-      <item>Frame</item>
-      <item>GSSContext</item>
-      <item>GSSCredential</item>
-      <item>GSSException</item>
-      <item>GSSManager</item>
-      <item>GSSName</item>
-      <item>GZIPInputStream</item>
-      <item>GZIPOutputStream</item>
-      <item>GapContent</item>
-      <item>GatheringByteChannel</item>
-      <item>GeneralPath</item>
-      <item>GeneralSecurityException</item>
-      <item>GetField</item>
-      <item>GlyphJustificationInfo</item>
-      <item>GlyphMetrics</item>
-      <item>GlyphPainter</item>
-      <item>GlyphVector</item>
-      <item>GlyphView</item>
-      <item>GradientPaint</item>
-      <item>GraphicAttribute</item>
-      <item>Graphics</item>
-      <item>Graphics2D</item>
-      <item>GraphicsConfigTemplate</item>
-      <item>GraphicsConfiguration</item>
-      <item>GraphicsDevice</item>
-      <item>GraphicsEnvironment</item>
-      <item>GrayFilter</item>
-      <item>GregorianCalendar</item>
-      <item>GridBagConstraints</item>
-      <item>GridBagLayout</item>
-      <item>GridLayout</item>
-      <item>Group</item>
-      <item>Guard</item>
-      <item>GuardedObject</item>
-      <item>HTML</item>
-      <item>HTMLDocument</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLFrameHyperlinkEvent</item>
-      <item>HTMLWriter</item>
-      <item>Handler</item>
-      <item>HandlerBase</item>
-      <item>HandshakeCompletedEvent</item>
-      <item>HandshakeCompletedListener</item>
-      <item>HasControls</item>
-      <item>HashAttributeSet</item>
-      <item>HashDocAttributeSet</item>
-      <item>HashMap</item>
-      <item>HashPrintJobAttributeSet</item>
-      <item>HashPrintRequestAttributeSet</item>
-      <item>HashPrintServiceAttributeSet</item>
-      <item>HashSet</item>
-      <item>Hashtable</item>
-      <item>HeadlessException</item>
-      <item>HierarchyBoundsAdapter</item>
-      <item>HierarchyBoundsListener</item>
-      <item>HierarchyEvent</item>
-      <item>HierarchyListener</item>
-      <item>Highlight</item>
-      <item>HighlightPainter</item>
-      <item>Highlighter</item>
-      <item>HostnameVerifier</item>
-      <item>HttpURLConnection</item>
-      <item>HttpsURLConnection</item>
-      <item>HyperlinkEvent</item>
-      <item>HyperlinkListener</item>
-      <item>ICC_ColorSpace</item>
-      <item>ICC_Profile</item>
-      <item>ICC_ProfileGray</item>
-      <item>ICC_ProfileRGB</item>
-      <item>IDLEntity</item>
-      <item>IDLType</item>
-      <item>IDLTypeHelper</item>
-      <item>IDLTypeOperations</item>
-      <item>ID_ASSIGNMENT_POLICY_ID</item>
-      <item>ID_UNIQUENESS_POLICY_ID</item>
-      <item>IIOByteBuffer</item>
-      <item>IIOException</item>
-      <item>IIOImage</item>
-      <item>IIOInvalidTreeException</item>
-      <item>IIOMetadata</item>
-      <item>IIOMetadataController</item>
-      <item>IIOMetadataFormat</item>
-      <item>IIOMetadataFormatImpl</item>
-      <item>IIOMetadataNode</item>
-      <item>IIOParam</item>
-      <item>IIOParamController</item>
-      <item>IIOReadProgressListener</item>
-      <item>IIOReadUpdateListener</item>
-      <item>IIOReadWarningListener</item>
-      <item>IIORegistry</item>
-      <item>IIOServiceProvider</item>
-      <item>IIOWriteProgressListener</item>
-      <item>IIOWriteWarningListener</item>
-      <item>IMPLICIT_ACTIVATION_POLICY_ID</item>
-      <item>IMP_LIMIT</item>
-      <item>INITIALIZE</item>
-      <item>INPUT_STREAM</item>
-      <item>INTERNAL</item>
-      <item>INTF_REPOS</item>
-      <item>INVALID_TRANSACTION</item>
-      <item>INV_FLAG</item>
-      <item>INV_IDENT</item>
-      <item>INV_OBJREF</item>
-      <item>INV_POLICY</item>
-      <item>IOException</item>
-      <item>IOR</item>
-      <item>IORHelper</item>
-      <item>IORHolder</item>
-      <item>IORInfo</item>
-      <item>IORInfoOperations</item>
-      <item>IORInterceptor</item>
-      <item>IORInterceptorOperations</item>
-      <item>IRObject</item>
-      <item>IRObjectOperations</item>
-      <item>ISO</item>
-      <item>Icon</item>
-      <item>IconUIResource</item>
-      <item>IconView</item>
-      <item>IdAssignmentPolicy</item>
-      <item>IdAssignmentPolicyOperations</item>
-      <item>IdAssignmentPolicyValue</item>
-      <item>IdUniquenessPolicy</item>
-      <item>IdUniquenessPolicyOperations</item>
-      <item>IdUniquenessPolicyValue</item>
-      <item>IdentifierHelper</item>
-      <item>Identity</item>
-      <item>IdentityHashMap</item>
-      <item>IdentityScope</item>
-      <item>IllegalAccessError</item>
-      <item>IllegalAccessException</item>
-      <item>IllegalArgumentException</item>
-      <item>IllegalBlockSizeException</item>
-      <item>IllegalBlockingModeException</item>
-      <item>IllegalCharsetNameException</item>
-      <item>IllegalComponentStateException</item>
-      <item>IllegalMonitorStateException</item>
-      <item>IllegalPathStateException</item>
-      <item>IllegalSelectorException</item>
-      <item>IllegalStateException</item>
-      <item>IllegalThreadStateException</item>
-      <item>Image</item>
-      <item>ImageCapabilities</item>
-      <item>ImageConsumer</item>
-      <item>ImageFilter</item>
-      <item>ImageGraphicAttribute</item>
-      <item>ImageIO</item>
-      <item>ImageIcon</item>
-      <item>ImageInputStream</item>
-      <item>ImageInputStreamImpl</item>
-      <item>ImageInputStreamSpi</item>
-      <item>ImageObserver</item>
-      <item>ImageOutputStream</item>
-      <item>ImageOutputStreamImpl</item>
-      <item>ImageOutputStreamSpi</item>
-      <item>ImageProducer</item>
-      <item>ImageReadParam</item>
-      <item>ImageReader</item>
-      <item>ImageReaderSpi</item>
-      <item>ImageReaderWriterSpi</item>
-      <item>ImageTranscoder</item>
-      <item>ImageTranscoderSpi</item>
-      <item>ImageTypeSpecifier</item>
-      <item>ImageView</item>
-      <item>ImageWriteParam</item>
-      <item>ImageWriter</item>
-      <item>ImageWriterSpi</item>
-      <item>ImagingOpException</item>
-      <item>ImplicitActivationPolicy</item>
-      <item>ImplicitActivationPolicyOperations</item>
-      <item>ImplicitActivationPolicyValue</item>
-      <item>IncompatibleClassChangeError</item>
-      <item>InconsistentTypeCode</item>
-      <item>InconsistentTypeCode</item>
-      <item>InconsistentTypeCodeHelper</item>
-      <item>IndexColorModel</item>
-      <item>IndexOutOfBoundsException</item>
-      <item>IndexedPropertyDescriptor</item>
-      <item>IndirectionException</item>
-      <item>Inet4Address</item>
-      <item>Inet6Address</item>
-      <item>InetAddress</item>
-      <item>InetSocketAddress</item>
-      <item>Inflater</item>
-      <item>InflaterInputStream</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>InheritableThreadLocal</item>
-      <item>InitialContext</item>
-      <item>InitialContextFactory</item>
-      <item>InitialContextFactoryBuilder</item>
-      <item>InitialDirContext</item>
-      <item>InitialLdapContext</item>
-      <item>InlineView</item>
-      <item>InputContext</item>
-      <item>InputEvent</item>
-      <item>InputMap</item>
-      <item>InputMapUIResource</item>
-      <item>InputMethod</item>
-      <item>InputMethodContext</item>
-      <item>InputMethodDescriptor</item>
-      <item>InputMethodEvent</item>
-      <item>InputMethodHighlight</item>
-      <item>InputMethodListener</item>
-      <item>InputMethodRequests</item>
-      <item>InputSource</item>
-      <item>InputStream</item>
-      <item>InputStream</item>
-      <item>InputStream</item>
-      <item>InputStreamReader</item>
-      <item>InputSubset</item>
-      <item>InputVerifier</item>
-      <item>InsertBreakAction</item>
-      <item>InsertContentAction</item>
-      <item>InsertHTMLTextAction</item>
-      <item>InsertTabAction</item>
-      <item>Insets</item>
-      <item>InsetsUIResource</item>
-      <item>InstantiationError</item>
-      <item>InstantiationException</item>
-      <item>Instrument</item>
-      <item>InsufficientResourcesException</item>
-      <item>IntBuffer</item>
-      <item>IntHolder</item>
-      <item>Integer</item>
-      <item>IntegerSyntax</item>
-      <item>Interceptor</item>
-      <item>InterceptorOperations</item>
-      <item>InternalError</item>
-      <item>InternalFrameAdapter</item>
-      <item>InternalFrameBorder</item>
-      <item>InternalFrameEvent</item>
-      <item>InternalFrameFocusTraversalPolicy</item>
-      <item>InternalFrameListener</item>
-      <item>InternalFrameUI</item>
-      <item>InternationalFormatter</item>
-      <item>InterruptedException</item>
-      <item>InterruptedIOException</item>
-      <item>InterruptedNamingException</item>
-      <item>InterruptibleChannel</item>
-      <item>IntrospectionException</item>
-      <item>Introspector</item>
-      <item>Invalid</item>
-      <item>InvalidAddress</item>
-      <item>InvalidAddressHelper</item>
-      <item>InvalidAddressHolder</item>
-      <item>InvalidAlgorithmParameterException</item>
-      <item>InvalidAttributeIdentifierException</item>
-      <item>InvalidAttributeValueException</item>
-      <item>InvalidAttributesException</item>
-      <item>InvalidClassException</item>
-      <item>InvalidDnDOperationException</item>
-      <item>InvalidKeyException</item>
-      <item>InvalidKeySpecException</item>
-      <item>InvalidMarkException</item>
-      <item>InvalidMidiDataException</item>
-      <item>InvalidName</item>
-      <item>InvalidName</item>
-      <item>InvalidName</item>
-      <item>InvalidNameException</item>
-      <item>InvalidNameHelper</item>
-      <item>InvalidNameHelper</item>
-      <item>InvalidNameHolder</item>
-      <item>InvalidObjectException</item>
-      <item>InvalidParameterException</item>
-      <item>InvalidParameterSpecException</item>
-      <item>InvalidPolicy</item>
-      <item>InvalidPolicyHelper</item>
-      <item>InvalidPreferencesFormatException</item>
-      <item>InvalidSearchControlsException</item>
-      <item>InvalidSearchFilterException</item>
-      <item>InvalidSeq</item>
-      <item>InvalidSlot</item>
-      <item>InvalidSlotHelper</item>
-      <item>InvalidTransactionException</item>
-      <item>InvalidTypeForEncoding</item>
-      <item>InvalidTypeForEncodingHelper</item>
-      <item>InvalidValue</item>
-      <item>InvalidValue</item>
-      <item>InvalidValueHelper</item>
-      <item>InvocationEvent</item>
-      <item>InvocationHandler</item>
-      <item>InvocationTargetException</item>
-      <item>InvokeHandler</item>
-      <item>IstringHelper</item>
-      <item>ItalicAction</item>
-      <item>ItemEvent</item>
-      <item>ItemListener</item>
-      <item>ItemSelectable</item>
-      <item>Iterator</item>
-      <item>Iterator</item>
-      <item>IvParameterSpec</item>
-      <item>JApplet</item>
-      <item>JButton</item>
-      <item>JCheckBox</item>
-      <item>JCheckBoxMenuItem</item>
-      <item>JColorChooser</item>
-      <item>JComboBox</item>
-      <item>JComponent</item>
-      <item>JDesktopIcon</item>
-      <item>JDesktopPane</item>
-      <item>JDialog</item>
-      <item>JEditorPane</item>
-      <item>JFileChooser</item>
-      <item>JFormattedTextField</item>
-      <item>JFrame</item>
-      <item>JIS</item>
-      <item>JInternalFrame</item>
-      <item>JLabel</item>
-      <item>JLayeredPane</item>
-      <item>JList</item>
-      <item>JMenu</item>
-      <item>JMenuBar</item>
-      <item>JMenuItem</item>
-      <item>JOptionPane</item>
-      <item>JPEGHuffmanTable</item>
-      <item>JPEGImageReadParam</item>
-      <item>JPEGImageWriteParam</item>
-      <item>JPEGQTable</item>
-      <item>JPanel</item>
-      <item>JPasswordField</item>
-      <item>JPopupMenu</item>
-      <item>JProgressBar</item>
-      <item>JRadioButton</item>
-      <item>JRadioButtonMenuItem</item>
-      <item>JRootPane</item>
-      <item>JScrollBar</item>
-      <item>JScrollPane</item>
-      <item>JSeparator</item>
-      <item>JSlider</item>
-      <item>JSpinner</item>
-      <item>JSplitPane</item>
-      <item>JTabbedPane</item>
-      <item>JTable</item>
-      <item>JTableHeader</item>
-      <item>JTextArea</item>
-      <item>JTextComponent</item>
-      <item>JTextField</item>
-      <item>JTextPane</item>
-      <item>JToggleButton</item>
-      <item>JToolBar</item>
-      <item>JToolTip</item>
-      <item>JTree</item>
-      <item>JViewport</item>
-      <item>JWindow</item>
-      <item>JarEntry</item>
-      <item>JarException</item>
-      <item>JarFile</item>
-      <item>JarInputStream</item>
-      <item>JarOutputStream</item>
-      <item>JarURLConnection</item>
-      <item>JobAttributes</item>
-      <item>JobHoldUntil</item>
-      <item>JobImpressions</item>
-      <item>JobImpressionsCompleted</item>
-      <item>JobImpressionsSupported</item>
-      <item>JobKOctets</item>
-      <item>JobKOctetsProcessed</item>
-      <item>JobKOctetsSupported</item>
-      <item>JobMediaSheets</item>
-      <item>JobMediaSheetsCompleted</item>
-      <item>JobMediaSheetsSupported</item>
-      <item>JobMessageFromOperator</item>
-      <item>JobName</item>
-      <item>JobOriginatingUserName</item>
-      <item>JobPriority</item>
-      <item>JobPrioritySupported</item>
-      <item>JobSheets</item>
-      <item>JobState</item>
-      <item>JobStateReason</item>
-      <item>JobStateReasons</item>
-      <item>KerberosKey</item>
-      <item>KerberosPrincipal</item>
-      <item>KerberosTicket</item>
-      <item>Kernel</item>
-      <item>Key</item>
-      <item>Key</item>
-      <item>KeyAdapter</item>
-      <item>KeyAgreement</item>
-      <item>KeyAgreementSpi</item>
-      <item>KeyBinding</item>
-      <item>KeyEvent</item>
-      <item>KeyEventDispatcher</item>
-      <item>KeyEventPostProcessor</item>
-      <item>KeyException</item>
-      <item>KeyFactory</item>
-      <item>KeyFactorySpi</item>
-      <item>KeyGenerator</item>
-      <item>KeyGeneratorSpi</item>
-      <item>KeyListener</item>
-      <item>KeyManagementException</item>
-      <item>KeyManager</item>
-      <item>KeyManagerFactory</item>
-      <item>KeyManagerFactorySpi</item>
-      <item>KeyPair</item>
-      <item>KeyPairGenerator</item>
-      <item>KeyPairGeneratorSpi</item>
-      <item>KeySelectionManager</item>
-      <item>KeySpec</item>
-      <item>KeyStore</item>
-      <item>KeyStoreException</item>
-      <item>KeyStoreSpi</item>
-      <item>KeyStroke</item>
-      <item>KeyboardFocusManager</item>
-      <item>Keymap</item>
-      <item>LDAPCertStoreParameters</item>
-      <item>LIFESPAN_POLICY_ID</item>
-      <item>LOCATION_FORWARD</item>
-      <item>Label</item>
-      <item>LabelUI</item>
-      <item>LabelView</item>
-      <item>LanguageCallback</item>
-      <item>LastOwnerException</item>
-      <item>LayerPainter</item>
-      <item>LayeredHighlighter</item>
-      <item>LayoutFocusTraversalPolicy</item>
-      <item>LayoutManager</item>
-      <item>LayoutManager2</item>
-      <item>LayoutQueue</item>
-      <item>LazyInputMap</item>
-      <item>LazyValue</item>
-      <item>LdapContext</item>
-      <item>LdapReferralException</item>
-      <item>Lease</item>
-      <item>Level</item>
-      <item>LexicalHandler</item>
-      <item>LifespanPolicy</item>
-      <item>LifespanPolicyOperations</item>
-      <item>LifespanPolicyValue</item>
-      <item>LimitExceededException</item>
-      <item>Line</item>
-      <item>Line2D</item>
-      <item>LineBorder</item>
-      <item>LineBorderUIResource</item>
-      <item>LineBreakMeasurer</item>
-      <item>LineEvent</item>
-      <item>LineListener</item>
-      <item>LineMetrics</item>
-      <item>LineNumberInputStream</item>
-      <item>LineNumberReader</item>
-      <item>LineUnavailableException</item>
-      <item>LinkController</item>
-      <item>LinkException</item>
-      <item>LinkLoopException</item>
-      <item>LinkRef</item>
-      <item>LinkageError</item>
-      <item>LinkedHashMap</item>
-      <item>LinkedHashSet</item>
-      <item>LinkedList</item>
-      <item>List</item>
-      <item>List</item>
-      <item>ListCellRenderer</item>
-      <item>ListDataEvent</item>
-      <item>ListDataListener</item>
-      <item>ListEditor</item>
-      <item>ListIterator</item>
-      <item>ListModel</item>
-      <item>ListPainter</item>
-      <item>ListResourceBundle</item>
-      <item>ListSelectionEvent</item>
-      <item>ListSelectionListener</item>
-      <item>ListSelectionModel</item>
-      <item>ListUI</item>
-      <item>ListView</item>
-      <item>LoaderHandler</item>
-      <item>LocalObject</item>
-      <item>Locale</item>
-      <item>LocateRegistry</item>
-      <item>Locator</item>
-      <item>LocatorImpl</item>
-      <item>LogManager</item>
-      <item>LogRecord</item>
-      <item>LogStream</item>
-      <item>Logger</item>
-      <item>LoggingPermission</item>
-      <item>LoginContext</item>
-      <item>LoginException</item>
-      <item>LoginModule</item>
-      <item>LoginModuleControlFlag</item>
-      <item>Long</item>
-      <item>LongBuffer</item>
-      <item>LongHolder</item>
-      <item>LongLongSeqHelper</item>
-      <item>LongLongSeqHolder</item>
-      <item>LongSeqHelper</item>
-      <item>LongSeqHolder</item>
-      <item>LookAndFeel</item>
-      <item>LookAndFeelInfo</item>
-      <item>LookupOp</item>
-      <item>LookupTable</item>
-      <item>MARSHAL</item>
-      <item>Mac</item>
-      <item>MacSpi</item>
-      <item>MalformedInputException</item>
-      <item>MalformedLinkException</item>
-      <item>MalformedURLException</item>
-      <item>ManagerFactoryParameters</item>
-      <item>Manifest</item>
-      <item>Map</item>
-      <item>MapMode</item>
-      <item>MappedByteBuffer</item>
-      <item>MarginBorder</item>
-      <item>MarshalException</item>
-      <item>MarshalledObject</item>
-      <item>MaskFormatter</item>
-      <item>Matcher</item>
-      <item>Math</item>
-      <item>MatteBorder</item>
-      <item>MatteBorderUIResource</item>
-      <item>Media</item>
-      <item>MediaName</item>
-      <item>MediaPrintableArea</item>
-      <item>MediaSize</item>
-      <item>MediaSizeName</item>
-      <item>MediaTracker</item>
-      <item>MediaTray</item>
-      <item>MediaType</item>
-      <item>Member</item>
-      <item>MemoryCacheImageInputStream</item>
-      <item>MemoryCacheImageOutputStream</item>
-      <item>MemoryHandler</item>
-      <item>MemoryImageSource</item>
-      <item>Menu</item>
-      <item>MenuBar</item>
-      <item>MenuBarBorder</item>
-      <item>MenuBarBorder</item>
-      <item>MenuBarUI</item>
-      <item>MenuComponent</item>
-      <item>MenuContainer</item>
-      <item>MenuDragMouseEvent</item>
-      <item>MenuDragMouseListener</item>
-      <item>MenuElement</item>
-      <item>MenuEvent</item>
-      <item>MenuItem</item>
-      <item>MenuItemBorder</item>
-      <item>MenuItemUI</item>
-      <item>MenuKeyEvent</item>
-      <item>MenuKeyListener</item>
-      <item>MenuListener</item>
-      <item>MenuSelectionManager</item>
-      <item>MenuShortcut</item>
-      <item>MessageDigest</item>
-      <item>MessageDigestSpi</item>
-      <item>MessageFormat</item>
-      <item>MessageProp</item>
-      <item>MetaEventListener</item>
-      <item>MetaMessage</item>
-      <item>MetalBorders</item>
-      <item>MetalButtonUI</item>
-      <item>MetalCheckBoxIcon</item>
-      <item>MetalCheckBoxUI</item>
-      <item>MetalComboBoxButton</item>
-      <item>MetalComboBoxEditor</item>
-      <item>MetalComboBoxIcon</item>
-      <item>MetalComboBoxUI</item>
-      <item>MetalDesktopIconUI</item>
-      <item>MetalFileChooserUI</item>
-      <item>MetalIconFactory</item>
-      <item>MetalInternalFrameTitlePane</item>
-      <item>MetalInternalFrameUI</item>
-      <item>MetalLabelUI</item>
-      <item>MetalLookAndFeel</item>
-      <item>MetalPopupMenuSeparatorUI</item>
-      <item>MetalProgressBarUI</item>
-      <item>MetalRadioButtonUI</item>
-      <item>MetalRootPaneUI</item>
-      <item>MetalScrollBarUI</item>
-      <item>MetalScrollButton</item>
-      <item>MetalScrollPaneUI</item>
-      <item>MetalSeparatorUI</item>
-      <item>MetalSliderUI</item>
-      <item>MetalSplitPaneUI</item>
-      <item>MetalTabbedPaneUI</item>
-      <item>MetalTextFieldUI</item>
-      <item>MetalTheme</item>
-      <item>MetalToggleButtonUI</item>
-      <item>MetalToolBarUI</item>
-      <item>MetalToolTipUI</item>
-      <item>MetalTreeUI</item>
-      <item>Method</item>
-      <item>MethodDescriptor</item>
-      <item>MidiChannel</item>
-      <item>MidiDevice</item>
-      <item>MidiDeviceProvider</item>
-      <item>MidiEvent</item>
-      <item>MidiFileFormat</item>
-      <item>MidiFileReader</item>
-      <item>MidiFileWriter</item>
-      <item>MidiMessage</item>
-      <item>MidiSystem</item>
-      <item>MidiUnavailableException</item>
-      <item>MimeTypeParseException</item>
-      <item>MinimalHTMLWriter</item>
-      <item>MissingResourceException</item>
-      <item>Mixer</item>
-      <item>MixerProvider</item>
-      <item>ModificationItem</item>
-      <item>Modifier</item>
-      <item>MouseAdapter</item>
-      <item>MouseDragGestureRecognizer</item>
-      <item>MouseEvent</item>
-      <item>MouseInputAdapter</item>
-      <item>MouseInputListener</item>
-      <item>MouseListener</item>
-      <item>MouseMotionAdapter</item>
-      <item>MouseMotionListener</item>
-      <item>MouseWheelEvent</item>
-      <item>MouseWheelListener</item>
-      <item>MultiButtonUI</item>
-      <item>MultiColorChooserUI</item>
-      <item>MultiComboBoxUI</item>
-      <item>MultiDesktopIconUI</item>
-      <item>MultiDesktopPaneUI</item>
-      <item>MultiDoc</item>
-      <item>MultiDocPrintJob</item>
-      <item>MultiDocPrintService</item>
-      <item>MultiFileChooserUI</item>
-      <item>MultiInternalFrameUI</item>
-      <item>MultiLabelUI</item>
-      <item>MultiListUI</item>
-      <item>MultiLookAndFeel</item>
-      <item>MultiMenuBarUI</item>
-      <item>MultiMenuItemUI</item>
-      <item>MultiOptionPaneUI</item>
-      <item>MultiPanelUI</item>
-      <item>MultiPixelPackedSampleModel</item>
-      <item>MultiPopupMenuUI</item>
-      <item>MultiProgressBarUI</item>
-      <item>MultiRootPaneUI</item>
-      <item>MultiScrollBarUI</item>
-      <item>MultiScrollPaneUI</item>
-      <item>MultiSeparatorUI</item>
-      <item>MultiSliderUI</item>
-      <item>MultiSpinnerUI</item>
-      <item>MultiSplitPaneUI</item>
-      <item>MultiTabbedPaneUI</item>
-      <item>MultiTableHeaderUI</item>
-      <item>MultiTableUI</item>
-      <item>MultiTextUI</item>
-      <item>MultiToolBarUI</item>
-      <item>MultiToolTipUI</item>
-      <item>MultiTreeUI</item>
-      <item>MultiViewportUI</item>
-      <item>MulticastSocket</item>
-      <item>MultipleComponentProfileHelper</item>
-      <item>MultipleComponentProfileHolder</item>
-      <item>MultipleDocumentHandling</item>
-      <item>MultipleDocumentHandlingType</item>
-      <item>MultipleMaster</item>
-      <item>MutableAttributeSet</item>
-      <item>MutableComboBoxModel</item>
-      <item>MutableTreeNode</item>
-      <item>NA</item>
-      <item>NO_IMPLEMENT</item>
-      <item>NO_MEMORY</item>
-      <item>NO_PERMISSION</item>
-      <item>NO_RESOURCES</item>
-      <item>NO_RESPONSE</item>
-      <item>NVList</item>
-      <item>Name</item>
-      <item>Name</item>
-      <item>NameAlreadyBoundException</item>
-      <item>NameCallback</item>
-      <item>NameClassPair</item>
-      <item>NameComponent</item>
-      <item>NameComponentHelper</item>
-      <item>NameComponentHolder</item>
-      <item>NameDynAnyPair</item>
-      <item>NameDynAnyPairHelper</item>
-      <item>NameDynAnyPairSeqHelper</item>
-      <item>NameHelper</item>
-      <item>NameHolder</item>
-      <item>NameNotFoundException</item>
-      <item>NameParser</item>
-      <item>NameValuePair</item>
-      <item>NameValuePair</item>
-      <item>NameValuePairHelper</item>
-      <item>NameValuePairHelper</item>
-      <item>NameValuePairSeqHelper</item>
-      <item>NamedNodeMap</item>
-      <item>NamedValue</item>
-      <item>NamespaceChangeListener</item>
-      <item>NamespaceSupport</item>
-      <item>Naming</item>
-      <item>NamingContext</item>
-      <item>NamingContextExt</item>
-      <item>NamingContextExtHelper</item>
-      <item>NamingContextExtHolder</item>
-      <item>NamingContextExtOperations</item>
-      <item>NamingContextExtPOA</item>
-      <item>NamingContextHelper</item>
-      <item>NamingContextHolder</item>
-      <item>NamingContextOperations</item>
-      <item>NamingContextPOA</item>
-      <item>NamingEnumeration</item>
-      <item>NamingEvent</item>
-      <item>NamingException</item>
-      <item>NamingExceptionEvent</item>
-      <item>NamingListener</item>
-      <item>NamingManager</item>
-      <item>NamingSecurityException</item>
-      <item>NavigationFilter</item>
-      <item>NegativeArraySizeException</item>
-      <item>NetPermission</item>
-      <item>NetworkInterface</item>
-      <item>NoClassDefFoundError</item>
-      <item>NoConnectionPendingException</item>
-      <item>NoContext</item>
-      <item>NoContextHelper</item>
-      <item>NoInitialContextException</item>
-      <item>NoPermissionException</item>
-      <item>NoRouteToHostException</item>
-      <item>NoServant</item>
-      <item>NoServantHelper</item>
-      <item>NoSuchAlgorithmException</item>
-      <item>NoSuchAttributeException</item>
-      <item>NoSuchElementException</item>
-      <item>NoSuchFieldError</item>
-      <item>NoSuchFieldException</item>
-      <item>NoSuchMethodError</item>
-      <item>NoSuchMethodException</item>
-      <item>NoSuchObjectException</item>
-      <item>NoSuchPaddingException</item>
-      <item>NoSuchProviderException</item>
-      <item>Node</item>
-      <item>NodeChangeEvent</item>
-      <item>NodeChangeListener</item>
-      <item>NodeDimensions</item>
-      <item>NodeList</item>
-      <item>NonReadableChannelException</item>
-      <item>NonWritableChannelException</item>
-      <item>NoninvertibleTransformException</item>
-      <item>NotActiveException</item>
-      <item>NotBoundException</item>
-      <item>NotContextException</item>
-      <item>NotEmpty</item>
-      <item>NotEmptyHelper</item>
-      <item>NotEmptyHolder</item>
-      <item>NotFound</item>
-      <item>NotFoundHelper</item>
-      <item>NotFoundHolder</item>
-      <item>NotFoundReason</item>
-      <item>NotFoundReasonHelper</item>
-      <item>NotFoundReasonHolder</item>
-      <item>NotOwnerException</item>
-      <item>NotSerializableException</item>
-      <item>NotYetBoundException</item>
-      <item>NotYetConnectedException</item>
-      <item>Notation</item>
-      <item>NullCipher</item>
-      <item>NullPointerException</item>
-      <item>Number</item>
-      <item>NumberEditor</item>
-      <item>NumberFormat</item>
-      <item>NumberFormatException</item>
-      <item>NumberFormatter</item>
-      <item>NumberOfDocuments</item>
-      <item>NumberOfInterveningJobs</item>
-      <item>NumberUp</item>
-      <item>NumberUpSupported</item>
-      <item>NumericShaper</item>
-      <item>OBJECT_NOT_EXIST</item>
-      <item>OBJ_ADAPTER</item>
-      <item>OMGVMCID</item>
-      <item>ORB</item>
-      <item>ORB</item>
-      <item>ORBInitInfo</item>
-      <item>ORBInitInfoOperations</item>
-      <item>ORBInitializer</item>
-      <item>ORBInitializerOperations</item>
-      <item>ObjID</item>
-      <item>Object</item>
-      <item>Object</item>
-      <item>ObjectAlreadyActive</item>
-      <item>ObjectAlreadyActiveHelper</item>
-      <item>ObjectChangeListener</item>
-      <item>ObjectFactory</item>
-      <item>ObjectFactoryBuilder</item>
-      <item>ObjectHelper</item>
-      <item>ObjectHolder</item>
-      <item>ObjectIdHelper</item>
-      <item>ObjectImpl</item>
-      <item>ObjectImpl</item>
-      <item>ObjectInput</item>
-      <item>ObjectInputStream</item>
-      <item>ObjectInputValidation</item>
-      <item>ObjectNotActive</item>
-      <item>ObjectNotActiveHelper</item>
-      <item>ObjectOutput</item>
-      <item>ObjectOutputStream</item>
-      <item>ObjectStreamClass</item>
-      <item>ObjectStreamConstants</item>
-      <item>ObjectStreamException</item>
-      <item>ObjectStreamField</item>
-      <item>ObjectView</item>
-      <item>Observable</item>
-      <item>Observer</item>
-      <item>OctetSeqHelper</item>
-      <item>OctetSeqHolder</item>
-      <item>Oid</item>
-      <item>OpenType</item>
-      <item>Operation</item>
-      <item>OperationNotSupportedException</item>
-      <item>Option</item>
-      <item>OptionDialogBorder</item>
-      <item>OptionPaneUI</item>
-      <item>OptionalDataException</item>
-      <item>OrientationRequested</item>
-      <item>OrientationRequestedType</item>
-      <item>OriginType</item>
-      <item>Other</item>
-      <item>OutOfMemoryError</item>
-      <item>OutputDeviceAssigned</item>
-      <item>OutputKeys</item>
-      <item>OutputStream</item>
-      <item>OutputStream</item>
-      <item>OutputStream</item>
-      <item>OutputStreamWriter</item>
-      <item>OverlappingFileLockException</item>
-      <item>OverlayLayout</item>
-      <item>Owner</item>
-      <item>PBEKey</item>
-      <item>PBEKeySpec</item>
-      <item>PBEParameterSpec</item>
-      <item>PDLOverrideSupported</item>
-      <item>PERSIST_STORE</item>
-      <item>PKCS8EncodedKeySpec</item>
-      <item>PKIXBuilderParameters</item>
-      <item>PKIXCertPathBuilderResult</item>
-      <item>PKIXCertPathChecker</item>
-      <item>PKIXCertPathValidatorResult</item>
-      <item>PKIXParameters</item>
-      <item>POA</item>
-      <item>POAHelper</item>
-      <item>POAManager</item>
-      <item>POAManagerOperations</item>
-      <item>POAOperations</item>
-      <item>PRIVATE_MEMBER</item>
-      <item>PSSParameterSpec</item>
-      <item>PUBLIC_MEMBER</item>
-      <item>Package</item>
-      <item>PackedColorModel</item>
-      <item>PageAttributes</item>
-      <item>PageFormat</item>
-      <item>PageRanges</item>
-      <item>Pageable</item>
-      <item>PagesPerMinute</item>
-      <item>PagesPerMinuteColor</item>
-      <item>Paint</item>
-      <item>PaintContext</item>
-      <item>PaintEvent</item>
-      <item>PaletteBorder</item>
-      <item>PaletteCloseIcon</item>
-      <item>Panel</item>
-      <item>PanelUI</item>
-      <item>Paper</item>
-      <item>ParagraphAttribute</item>
-      <item>ParagraphConstants</item>
-      <item>ParagraphView</item>
-      <item>ParagraphView</item>
-      <item>Parameter</item>
-      <item>ParameterBlock</item>
-      <item>ParameterDescriptor</item>
-      <item>ParameterMetaData</item>
-      <item>ParameterMode</item>
-      <item>ParameterModeHelper</item>
-      <item>ParameterModeHolder</item>
-      <item>ParseException</item>
-      <item>ParsePosition</item>
-      <item>Parser</item>
-      <item>Parser</item>
-      <item>Parser</item>
-      <item>ParserAdapter</item>
-      <item>ParserCallback</item>
-      <item>ParserConfigurationException</item>
-      <item>ParserDelegator</item>
-      <item>ParserFactory</item>
-      <item>PartialResultException</item>
-      <item>PasswordAuthentication</item>
-      <item>PasswordCallback</item>
-      <item>PasswordView</item>
-      <item>PasteAction</item>
-      <item>Patch</item>
-      <item>PathIterator</item>
-      <item>Pattern</item>
-      <item>PatternSyntaxException</item>
-      <item>Permission</item>
-      <item>Permission</item>
-      <item>PermissionCollection</item>
-      <item>Permissions</item>
-      <item>PersistenceDelegate</item>
-      <item>PhantomReference</item>
-      <item>Pipe</item>
-      <item>PipedInputStream</item>
-      <item>PipedOutputStream</item>
-      <item>PipedReader</item>
-      <item>PipedWriter</item>
-      <item>PixelGrabber</item>
-      <item>PixelInterleavedSampleModel</item>
-      <item>PlainDocument</item>
-      <item>PlainView</item>
-      <item>Point</item>
-      <item>Point2D</item>
-      <item>Policy</item>
-      <item>Policy</item>
-      <item>Policy</item>
-      <item>PolicyError</item>
-      <item>PolicyErrorCodeHelper</item>
-      <item>PolicyErrorHelper</item>
-      <item>PolicyErrorHolder</item>
-      <item>PolicyFactory</item>
-      <item>PolicyFactoryOperations</item>
-      <item>PolicyHelper</item>
-      <item>PolicyHolder</item>
-      <item>PolicyListHelper</item>
-      <item>PolicyListHolder</item>
-      <item>PolicyNode</item>
-      <item>PolicyOperations</item>
-      <item>PolicyQualifierInfo</item>
-      <item>PolicyTypeHelper</item>
-      <item>Polygon</item>
-      <item>PooledConnection</item>
-      <item>Popup</item>
-      <item>PopupFactory</item>
-      <item>PopupMenu</item>
-      <item>PopupMenuBorder</item>
-      <item>PopupMenuEvent</item>
-      <item>PopupMenuListener</item>
-      <item>PopupMenuUI</item>
-      <item>Port</item>
-      <item>PortUnreachableException</item>
-      <item>PortableRemoteObject</item>
-      <item>PortableRemoteObjectDelegate</item>
-      <item>Position</item>
-      <item>PreferenceChangeEvent</item>
-      <item>PreferenceChangeListener</item>
-      <item>Preferences</item>
-      <item>PreferencesFactory</item>
-      <item>PreparedStatement</item>
-      <item>PresentationDirection</item>
-      <item>Principal</item>
-      <item>Principal</item>
-      <item>PrincipalHolder</item>
-      <item>PrintEvent</item>
-      <item>PrintException</item>
-      <item>PrintGraphics</item>
-      <item>PrintJob</item>
-      <item>PrintJobAdapter</item>
-      <item>PrintJobAttribute</item>
-      <item>PrintJobAttributeEvent</item>
-      <item>PrintJobAttributeListener</item>
-      <item>PrintJobAttributeSet</item>
-      <item>PrintJobEvent</item>
-      <item>PrintJobListener</item>
-      <item>PrintQuality</item>
-      <item>PrintQualityType</item>
-      <item>PrintRequestAttribute</item>
-      <item>PrintRequestAttributeSet</item>
-      <item>PrintService</item>
-      <item>PrintServiceAttribute</item>
-      <item>PrintServiceAttributeEvent</item>
-      <item>PrintServiceAttributeListener</item>
-      <item>PrintServiceAttributeSet</item>
-      <item>PrintServiceLookup</item>
-      <item>PrintStream</item>
-      <item>PrintWriter</item>
-      <item>Printable</item>
-      <item>PrinterAbortException</item>
-      <item>PrinterException</item>
-      <item>PrinterGraphics</item>
-      <item>PrinterIOException</item>
-      <item>PrinterInfo</item>
-      <item>PrinterIsAcceptingJobs</item>
-      <item>PrinterJob</item>
-      <item>PrinterLocation</item>
-      <item>PrinterMakeAndModel</item>
-      <item>PrinterMessageFromOperator</item>
-      <item>PrinterMoreInfo</item>
-      <item>PrinterMoreInfoManufacturer</item>
-      <item>PrinterName</item>
-      <item>PrinterResolution</item>
-      <item>PrinterState</item>
-      <item>PrinterStateReason</item>
-      <item>PrinterStateReasons</item>
-      <item>PrinterURI</item>
-      <item>PrivateCredentialPermission</item>
-      <item>PrivateKey</item>
-      <item>PrivilegedAction</item>
-      <item>PrivilegedActionException</item>
-      <item>PrivilegedExceptionAction</item>
-      <item>Process</item>
-      <item>ProcessingInstruction</item>
-      <item>ProfileDataException</item>
-      <item>ProfileIdHelper</item>
-      <item>ProgressBarUI</item>
-      <item>ProgressMonitor</item>
-      <item>ProgressMonitorInputStream</item>
-      <item>Properties</item>
-      <item>PropertyChangeEvent</item>
-      <item>PropertyChangeListener</item>
-      <item>PropertyChangeListenerProxy</item>
-      <item>PropertyChangeSupport</item>
-      <item>PropertyDescriptor</item>
-      <item>PropertyEditor</item>
-      <item>PropertyEditorManager</item>
-      <item>PropertyEditorSupport</item>
-      <item>PropertyPermission</item>
-      <item>PropertyResourceBundle</item>
-      <item>PropertyVetoException</item>
-      <item>ProtectionDomain</item>
-      <item>ProtocolException</item>
-      <item>Provider</item>
-      <item>ProviderException</item>
-      <item>Proxy</item>
-      <item>ProxyLazyValue</item>
-      <item>PublicKey</item>
-      <item>PushbackInputStream</item>
-      <item>PushbackReader</item>
-      <item>PutField</item>
-      <item>QuadCurve2D</item>
-      <item>QueuedJobCount</item>
-      <item>RC2ParameterSpec</item>
-      <item>RC5ParameterSpec</item>
-      <item>READER</item>
-      <item>REQUEST_PROCESSING_POLICY_ID</item>
-      <item>RGBImageFilter</item>
-      <item>RMIClassLoader</item>
-      <item>RMIClassLoaderSpi</item>
-      <item>RMIClientSocketFactory</item>
-      <item>RMIFailureHandler</item>
-      <item>RMISecurityException</item>
-      <item>RMISecurityManager</item>
-      <item>RMIServerSocketFactory</item>
-      <item>RMISocketFactory</item>
-      <item>RSAKey</item>
-      <item>RSAKeyGenParameterSpec</item>
-      <item>RSAMultiPrimePrivateCrtKey</item>
-      <item>RSAMultiPrimePrivateCrtKeySpec</item>
-      <item>RSAOtherPrimeInfo</item>
-      <item>RSAPrivateCrtKey</item>
-      <item>RSAPrivateCrtKeySpec</item>
-      <item>RSAPrivateKey</item>
-      <item>RSAPrivateKeySpec</item>
-      <item>RSAPublicKey</item>
-      <item>RSAPublicKeySpec</item>
-      <item>RTFEditorKit</item>
-      <item>RadioButtonBorder</item>
-      <item>Random</item>
-      <item>RandomAccess</item>
-      <item>RandomAccessFile</item>
-      <item>Raster</item>
-      <item>RasterFormatException</item>
-      <item>RasterOp</item>
-      <item>ReadOnlyBufferException</item>
-      <item>ReadableByteChannel</item>
-      <item>Reader</item>
-      <item>Receiver</item>
-      <item>Rectangle</item>
-      <item>Rectangle2D</item>
-      <item>RectangularShape</item>
-      <item>Ref</item>
-      <item>RefAddr</item>
-      <item>Reference</item>
-      <item>Reference</item>
-      <item>ReferenceQueue</item>
-      <item>ReferenceUriSchemesSupported</item>
-      <item>Referenceable</item>
-      <item>ReferralException</item>
-      <item>ReflectPermission</item>
-      <item>RefreshFailedException</item>
-      <item>Refreshable</item>
-      <item>RegisterableService</item>
-      <item>Registry</item>
-      <item>RegistryHandler</item>
-      <item>RemarshalException</item>
-      <item>Remote</item>
-      <item>RemoteCall</item>
-      <item>RemoteException</item>
-      <item>RemoteObject</item>
-      <item>RemoteRef</item>
-      <item>RemoteServer</item>
-      <item>RemoteStub</item>
-      <item>RenderContext</item>
-      <item>RenderableImage</item>
-      <item>RenderableImageOp</item>
-      <item>RenderableImageProducer</item>
-      <item>RenderedImage</item>
-      <item>RenderedImageFactory</item>
-      <item>Renderer</item>
-      <item>RenderingHints</item>
-      <item>RepaintManager</item>
-      <item>ReplicateScaleFilter</item>
-      <item>RepositoryIdHelper</item>
-      <item>Request</item>
-      <item>RequestInfo</item>
-      <item>RequestInfoOperations</item>
-      <item>RequestProcessingPolicy</item>
-      <item>RequestProcessingPolicyOperations</item>
-      <item>RequestProcessingPolicyValue</item>
-      <item>RequestingUserName</item>
-      <item>RescaleOp</item>
-      <item>ResolutionSyntax</item>
-      <item>ResolveResult</item>
-      <item>Resolver</item>
-      <item>ResourceBundle</item>
-      <item>ResponseHandler</item>
-      <item>Result</item>
-      <item>Result</item>
-      <item>ResultSet</item>
-      <item>ResultSetMetaData</item>
-      <item>ReverbType</item>
-      <item>Robot</item>
-      <item>RolloverButtonBorder</item>
-      <item>RolloverButtonBorder</item>
-      <item>RootPaneContainer</item>
-      <item>RootPaneUI</item>
-      <item>RoundRectangle2D</item>
-      <item>RowMapper</item>
-      <item>RowSet</item>
-      <item>RowSetEvent</item>
-      <item>RowSetInternal</item>
-      <item>RowSetListener</item>
-      <item>RowSetMetaData</item>
-      <item>RowSetReader</item>
-      <item>RowSetWriter</item>
-      <item>RuleBasedCollator</item>
-      <item>RunTime</item>
-      <item>RunTimeOperations</item>
-      <item>Runnable</item>
-      <item>Runtime</item>
-      <item>RuntimeException</item>
-      <item>RuntimePermission</item>
-      <item>SAXException</item>
-      <item>SAXNotRecognizedException</item>
-      <item>SAXNotSupportedException</item>
-      <item>SAXParseException</item>
-      <item>SAXParser</item>
-      <item>SAXParserFactory</item>
-      <item>SAXResult</item>
-      <item>SAXSource</item>
-      <item>SAXTransformerFactory</item>
-      <item>SERVANT_RETENTION_POLICY_ID</item>
-      <item>SERVICE_FORMATTED</item>
-      <item>SQLData</item>
-      <item>SQLException</item>
-      <item>SQLInput</item>
-      <item>SQLOutput</item>
-      <item>SQLPermission</item>
-      <item>SQLWarning</item>
-      <item>SSLContext</item>
-      <item>SSLContextSpi</item>
-      <item>SSLException</item>
-      <item>SSLHandshakeException</item>
-      <item>SSLKeyException</item>
-      <item>SSLPeerUnverifiedException</item>
-      <item>SSLPermission</item>
-      <item>SSLProtocolException</item>
-      <item>SSLServerSocket</item>
-      <item>SSLServerSocketFactory</item>
-      <item>SSLSession</item>
-      <item>SSLSessionBindingEvent</item>
-      <item>SSLSessionBindingListener</item>
-      <item>SSLSessionContext</item>
-      <item>SSLSocket</item>
-      <item>SSLSocketFactory</item>
-      <item>STRING</item>
-      <item>SUCCESSFUL</item>
-      <item>SYNC_WITH_TRANSPORT</item>
-      <item>SYSTEM_EXCEPTION</item>
-      <item>SampleModel</item>
-      <item>Savepoint</item>
-      <item>ScatteringByteChannel</item>
-      <item>SchemaViolationException</item>
-      <item>ScrollBarUI</item>
-      <item>ScrollPane</item>
-      <item>ScrollPaneAdjustable</item>
-      <item>ScrollPaneBorder</item>
-      <item>ScrollPaneConstants</item>
-      <item>ScrollPaneLayout</item>
-      <item>ScrollPaneUI</item>
-      <item>Scrollable</item>
-      <item>Scrollbar</item>
-      <item>SealedObject</item>
-      <item>SearchControls</item>
-      <item>SearchResult</item>
-      <item>SecretKey</item>
-      <item>SecretKeyFactory</item>
-      <item>SecretKeyFactorySpi</item>
-      <item>SecretKeySpec</item>
-      <item>SecureClassLoader</item>
-      <item>SecureRandom</item>
-      <item>SecureRandomSpi</item>
-      <item>Security</item>
-      <item>SecurityException</item>
-      <item>SecurityManager</item>
-      <item>SecurityPermission</item>
-      <item>Segment</item>
-      <item>SelectableChannel</item>
-      <item>SelectionKey</item>
-      <item>Selector</item>
-      <item>SelectorProvider</item>
-      <item>Separator</item>
-      <item>Separator</item>
-      <item>SeparatorUI</item>
-      <item>Sequence</item>
-      <item>SequenceInputStream</item>
-      <item>Sequencer</item>
-      <item>Serializable</item>
-      <item>SerializablePermission</item>
-      <item>Servant</item>
-      <item>ServantActivator</item>
-      <item>ServantActivatorHelper</item>
-      <item>ServantActivatorOperations</item>
-      <item>ServantActivatorPOA</item>
-      <item>ServantAlreadyActive</item>
-      <item>ServantAlreadyActiveHelper</item>
-      <item>ServantLocator</item>
-      <item>ServantLocatorHelper</item>
-      <item>ServantLocatorOperations</item>
-      <item>ServantLocatorPOA</item>
-      <item>ServantManager</item>
-      <item>ServantManagerOperations</item>
-      <item>ServantNotActive</item>
-      <item>ServantNotActiveHelper</item>
-      <item>ServantObject</item>
-      <item>ServantRetentionPolicy</item>
-      <item>ServantRetentionPolicyOperations</item>
-      <item>ServantRetentionPolicyValue</item>
-      <item>ServerCloneException</item>
-      <item>ServerError</item>
-      <item>ServerException</item>
-      <item>ServerNotActiveException</item>
-      <item>ServerRef</item>
-      <item>ServerRequest</item>
-      <item>ServerRequestInfo</item>
-      <item>ServerRequestInfoOperations</item>
-      <item>ServerRequestInterceptor</item>
-      <item>ServerRequestInterceptorOperations</item>
-      <item>ServerRuntimeException</item>
-      <item>ServerSocket</item>
-      <item>ServerSocketChannel</item>
-      <item>ServerSocketFactory</item>
-      <item>ServiceContext</item>
-      <item>ServiceContextHelper</item>
-      <item>ServiceContextHolder</item>
-      <item>ServiceContextListHelper</item>
-      <item>ServiceContextListHolder</item>
-      <item>ServiceDetail</item>
-      <item>ServiceDetailHelper</item>
-      <item>ServiceIdHelper</item>
-      <item>ServiceInformation</item>
-      <item>ServiceInformationHelper</item>
-      <item>ServiceInformationHolder</item>
-      <item>ServicePermission</item>
-      <item>ServiceRegistry</item>
-      <item>ServiceUI</item>
-      <item>ServiceUIFactory</item>
-      <item>ServiceUnavailableException</item>
-      <item>Set</item>
-      <item>SetOfIntegerSyntax</item>
-      <item>SetOverrideType</item>
-      <item>SetOverrideTypeHelper</item>
-      <item>Severity</item>
-      <item>Shape</item>
-      <item>ShapeGraphicAttribute</item>
-      <item>SheetCollate</item>
-      <item>Short</item>
-      <item>ShortBuffer</item>
-      <item>ShortBufferException</item>
-      <item>ShortHolder</item>
-      <item>ShortLookupTable</item>
-      <item>ShortMessage</item>
-      <item>ShortSeqHelper</item>
-      <item>ShortSeqHolder</item>
-      <item>Sides</item>
-      <item>SidesType</item>
-      <item>Signature</item>
-      <item>SignatureException</item>
-      <item>SignatureSpi</item>
-      <item>SignedObject</item>
-      <item>Signer</item>
-      <item>SimpleAttributeSet</item>
-      <item>SimpleBeanInfo</item>
-      <item>SimpleDateFormat</item>
-      <item>SimpleDoc</item>
-      <item>SimpleFormatter</item>
-      <item>SimpleTimeZone</item>
-      <item>SinglePixelPackedSampleModel</item>
-      <item>SingleSelectionModel</item>
-      <item>SinkChannel</item>
-      <item>Size2DSyntax</item>
-      <item>SizeLimitExceededException</item>
-      <item>SizeRequirements</item>
-      <item>SizeSequence</item>
-      <item>Skeleton</item>
-      <item>SkeletonMismatchException</item>
-      <item>SkeletonNotFoundException</item>
-      <item>SliderUI</item>
-      <item>Socket</item>
-      <item>SocketAddress</item>
-      <item>SocketChannel</item>
-      <item>SocketException</item>
-      <item>SocketFactory</item>
-      <item>SocketHandler</item>
-      <item>SocketImpl</item>
-      <item>SocketImplFactory</item>
-      <item>SocketOptions</item>
-      <item>SocketPermission</item>
-      <item>SocketSecurityException</item>
-      <item>SocketTimeoutException</item>
-      <item>SoftBevelBorder</item>
-      <item>SoftReference</item>
-      <item>SortedMap</item>
-      <item>SortedSet</item>
-      <item>SortingFocusTraversalPolicy</item>
-      <item>Soundbank</item>
-      <item>SoundbankReader</item>
-      <item>SoundbankResource</item>
-      <item>Source</item>
-      <item>SourceChannel</item>
-      <item>SourceDataLine</item>
-      <item>SourceLocator</item>
-      <item>SpinnerDateModel</item>
-      <item>SpinnerListModel</item>
-      <item>SpinnerModel</item>
-      <item>SpinnerNumberModel</item>
-      <item>SpinnerUI</item>
-      <item>SplitPaneBorder</item>
-      <item>SplitPaneUI</item>
-      <item>Spring</item>
-      <item>SpringLayout</item>
-      <item>Stack</item>
-      <item>StackOverflowError</item>
-      <item>StackTraceElement</item>
-      <item>StartTlsRequest</item>
-      <item>StartTlsResponse</item>
-      <item>State</item>
-      <item>StateEdit</item>
-      <item>StateEditable</item>
-      <item>StateFactory</item>
-      <item>Statement</item>
-      <item>Statement</item>
-      <item>StreamCorruptedException</item>
-      <item>StreamHandler</item>
-      <item>StreamPrintService</item>
-      <item>StreamPrintServiceFactory</item>
-      <item>StreamResult</item>
-      <item>StreamSource</item>
-      <item>StreamTokenizer</item>
-      <item>Streamable</item>
-      <item>StreamableValue</item>
-      <item>StrictMath</item>
-      <item>String</item>
-      <item>StringBuffer</item>
-      <item>StringBufferInputStream</item>
-      <item>StringCharacterIterator</item>
-      <item>StringContent</item>
-      <item>StringHolder</item>
-      <item>StringIndexOutOfBoundsException</item>
-      <item>StringNameHelper</item>
-      <item>StringReader</item>
-      <item>StringRefAddr</item>
-      <item>StringSelection</item>
-      <item>StringSeqHelper</item>
-      <item>StringSeqHolder</item>
-      <item>StringTokenizer</item>
-      <item>StringValueHelper</item>
-      <item>StringWriter</item>
-      <item>Stroke</item>
-      <item>Struct</item>
-      <item>StructMember</item>
-      <item>StructMemberHelper</item>
-      <item>Stub</item>
-      <item>StubDelegate</item>
-      <item>StubNotFoundException</item>
-      <item>Style</item>
-      <item>StyleConstants</item>
-      <item>StyleContext</item>
-      <item>StyleSheet</item>
-      <item>StyledDocument</item>
-      <item>StyledEditorKit</item>
-      <item>StyledTextAction</item>
-      <item>Subject</item>
-      <item>SubjectDomainCombiner</item>
-      <item>Subset</item>
-      <item>SupportedValuesAttribute</item>
-      <item>SwingConstants</item>
-      <item>SwingPropertyChangeSupport</item>
-      <item>SwingUtilities</item>
-      <item>SyncFailedException</item>
-      <item>SyncMode</item>
-      <item>SyncScopeHelper</item>
-      <item>Synthesizer</item>
-      <item>SysexMessage</item>
-      <item>System</item>
-      <item>SystemColor</item>
-      <item>SystemException</item>
-      <item>SystemFlavorMap</item>
-      <item>TAG_ALTERNATE_IIOP_ADDRESS</item>
-      <item>TAG_CODE_SETS</item>
-      <item>TAG_INTERNET_IOP</item>
-      <item>TAG_JAVA_CODEBASE</item>
-      <item>TAG_MULTIPLE_COMPONENTS</item>
-      <item>TAG_ORB_TYPE</item>
-      <item>TAG_POLICIES</item>
-      <item>TCKind</item>
-      <item>THREAD_POLICY_ID</item>
-      <item>TRANSACTION_REQUIRED</item>
-      <item>TRANSACTION_ROLLEDBACK</item>
-      <item>TRANSIENT</item>
-      <item>TRANSPORT_RETRY</item>
-      <item>TabExpander</item>
-      <item>TabSet</item>
-      <item>TabStop</item>
-      <item>TabableView</item>
-      <item>TabbedPaneUI</item>
-      <item>TableCellEditor</item>
-      <item>TableCellRenderer</item>
-      <item>TableColumn</item>
-      <item>TableColumnModel</item>
-      <item>TableColumnModelEvent</item>
-      <item>TableColumnModelListener</item>
-      <item>TableHeaderBorder</item>
-      <item>TableHeaderUI</item>
-      <item>TableModel</item>
-      <item>TableModelEvent</item>
-      <item>TableModelListener</item>
-      <item>TableUI</item>
-      <item>TableView</item>
-      <item>Tag</item>
-      <item>TagElement</item>
-      <item>TaggedComponent</item>
-      <item>TaggedComponentHelper</item>
-      <item>TaggedComponentHolder</item>
-      <item>TaggedProfile</item>
-      <item>TaggedProfileHelper</item>
-      <item>TaggedProfileHolder</item>
-      <item>TargetDataLine</item>
-      <item>Templates</item>
-      <item>TemplatesHandler</item>
-      <item>Text</item>
-      <item>TextAction</item>
-      <item>TextArea</item>
-      <item>TextAttribute</item>
-      <item>TextComponent</item>
-      <item>TextEvent</item>
-      <item>TextField</item>
-      <item>TextFieldBorder</item>
-      <item>TextHitInfo</item>
-      <item>TextInputCallback</item>
-      <item>TextLayout</item>
-      <item>TextListener</item>
-      <item>TextMeasurer</item>
-      <item>TextOutputCallback</item>
-      <item>TextSyntax</item>
-      <item>TextUI</item>
-      <item>TexturePaint</item>
-      <item>Thread</item>
-      <item>ThreadDeath</item>
-      <item>ThreadGroup</item>
-      <item>ThreadLocal</item>
-      <item>ThreadPolicy</item>
-      <item>ThreadPolicyOperations</item>
-      <item>ThreadPolicyValue</item>
-      <item>Throwable</item>
-      <item>Tie</item>
-      <item>TileObserver</item>
-      <item>Time</item>
-      <item>TimeLimitExceededException</item>
-      <item>TimeZone</item>
-      <item>Timer</item>
-      <item>Timer</item>
-      <item>TimerTask</item>
-      <item>Timestamp</item>
-      <item>TitledBorder</item>
-      <item>TitledBorderUIResource</item>
-      <item>ToggleButtonBorder</item>
-      <item>ToggleButtonBorder</item>
-      <item>ToggleButtonModel</item>
-      <item>TooManyListenersException</item>
-      <item>ToolBarBorder</item>
-      <item>ToolBarUI</item>
-      <item>ToolTipManager</item>
-      <item>ToolTipUI</item>
-      <item>Toolkit</item>
-      <item>Track</item>
-      <item>TransactionRequiredException</item>
-      <item>TransactionRolledbackException</item>
-      <item>TransactionService</item>
-      <item>TransferHandler</item>
-      <item>Transferable</item>
-      <item>TransformAttribute</item>
-      <item>Transformer</item>
-      <item>TransformerConfigurationException</item>
-      <item>TransformerException</item>
-      <item>TransformerFactory</item>
-      <item>TransformerFactoryConfigurationError</item>
-      <item>TransformerHandler</item>
-      <item>Transmitter</item>
-      <item>Transparency</item>
-      <item>TreeCellEditor</item>
-      <item>TreeCellRenderer</item>
-      <item>TreeControlIcon</item>
-      <item>TreeExpansionEvent</item>
-      <item>TreeExpansionListener</item>
-      <item>TreeFolderIcon</item>
-      <item>TreeLeafIcon</item>
-      <item>TreeMap</item>
-      <item>TreeModel</item>
-      <item>TreeModelEvent</item>
-      <item>TreeModelListener</item>
-      <item>TreeNode</item>
-      <item>TreePath</item>
-      <item>TreeSelectionEvent</item>
-      <item>TreeSelectionListener</item>
-      <item>TreeSelectionModel</item>
-      <item>TreeSet</item>
-      <item>TreeUI</item>
-      <item>TreeWillExpandListener</item>
-      <item>TrustAnchor</item>
-      <item>TrustManager</item>
-      <item>TrustManagerFactory</item>
-      <item>TrustManagerFactorySpi</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>TypeCode</item>
-      <item>TypeCodeHolder</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatchHelper</item>
-      <item>TypeMismatchHelper</item>
-      <item>Types</item>
-      <item>UID</item>
-      <item>UIDefaults</item>
-      <item>UIManager</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>ULongLongSeqHelper</item>
-      <item>ULongLongSeqHolder</item>
-      <item>ULongSeqHelper</item>
-      <item>ULongSeqHolder</item>
-      <item>UNKNOWN</item>
-      <item>UNSUPPORTED_POLICY</item>
-      <item>UNSUPPORTED_POLICY_VALUE</item>
-      <item>URI</item>
-      <item>URIException</item>
-      <item>URIResolver</item>
-      <item>URISyntax</item>
-      <item>URISyntaxException</item>
-      <item>URL</item>
-      <item>URL</item>
-      <item>URLClassLoader</item>
-      <item>URLConnection</item>
-      <item>URLDecoder</item>
-      <item>URLEncoder</item>
-      <item>URLStreamHandler</item>
-      <item>URLStreamHandlerFactory</item>
-      <item>URLStringHelper</item>
-      <item>USER_EXCEPTION</item>
-      <item>UShortSeqHelper</item>
-      <item>UShortSeqHolder</item>
-      <item>UTFDataFormatException</item>
-      <item>UndeclaredThrowableException</item>
-      <item>UnderlineAction</item>
-      <item>UndoManager</item>
-      <item>UndoableEdit</item>
-      <item>UndoableEditEvent</item>
-      <item>UndoableEditListener</item>
-      <item>UndoableEditSupport</item>
-      <item>UnexpectedException</item>
-      <item>UnicastRemoteObject</item>
-      <item>UnicodeBlock</item>
-      <item>UnionMember</item>
-      <item>UnionMemberHelper</item>
-      <item>UnknownEncoding</item>
-      <item>UnknownEncodingHelper</item>
-      <item>UnknownError</item>
-      <item>UnknownException</item>
-      <item>UnknownGroupException</item>
-      <item>UnknownHostException</item>
-      <item>UnknownHostException</item>
-      <item>UnknownObjectException</item>
-      <item>UnknownServiceException</item>
-      <item>UnknownTag</item>
-      <item>UnknownUserException</item>
-      <item>UnknownUserExceptionHelper</item>
-      <item>UnknownUserExceptionHolder</item>
-      <item>UnmappableCharacterException</item>
-      <item>UnmarshalException</item>
-      <item>UnmodifiableSetException</item>
-      <item>UnrecoverableKeyException</item>
-      <item>Unreferenced</item>
-      <item>UnresolvedAddressException</item>
-      <item>UnresolvedPermission</item>
-      <item>UnsatisfiedLinkError</item>
-      <item>UnsolicitedNotification</item>
-      <item>UnsolicitedNotificationEvent</item>
-      <item>UnsolicitedNotificationListener</item>
-      <item>UnsupportedAddressTypeException</item>
-      <item>UnsupportedAudioFileException</item>
-      <item>UnsupportedCallbackException</item>
-      <item>UnsupportedCharsetException</item>
-      <item>UnsupportedClassVersionError</item>
-      <item>UnsupportedEncodingException</item>
-      <item>UnsupportedFlavorException</item>
-      <item>UnsupportedLookAndFeelException</item>
-      <item>UnsupportedOperationException</item>
-      <item>UserException</item>
-      <item>Util</item>
-      <item>UtilDelegate</item>
-      <item>Utilities</item>
-      <item>VMID</item>
-      <item>VM_ABSTRACT</item>
-      <item>VM_CUSTOM</item>
-      <item>VM_NONE</item>
-      <item>VM_TRUNCATABLE</item>
-      <item>ValueBase</item>
-      <item>ValueBaseHelper</item>
-      <item>ValueBaseHolder</item>
-      <item>ValueFactory</item>
-      <item>ValueHandler</item>
-      <item>ValueMember</item>
-      <item>ValueMemberHelper</item>
-      <item>VariableHeightLayoutCache</item>
-      <item>Vector</item>
-      <item>VerifyError</item>
-      <item>VersionSpecHelper</item>
-      <item>VetoableChangeListener</item>
-      <item>VetoableChangeListenerProxy</item>
-      <item>VetoableChangeSupport</item>
-      <item>View</item>
-      <item>ViewFactory</item>
-      <item>ViewportLayout</item>
-      <item>ViewportUI</item>
-      <item>VirtualMachineError</item>
-      <item>Visibility</item>
-      <item>VisibilityHelper</item>
-      <item>VoiceStatus</item>
-      <item>Void</item>
-      <item>VolatileImage</item>
-      <item>WCharSeqHelper</item>
-      <item>WCharSeqHolder</item>
-      <item>WStringSeqHelper</item>
-      <item>WStringSeqHolder</item>
-      <item>WStringValueHelper</item>
-      <item>WeakHashMap</item>
-      <item>WeakReference</item>
-      <item>Window</item>
-      <item>WindowAdapter</item>
-      <item>WindowConstants</item>
-      <item>WindowEvent</item>
-      <item>WindowFocusListener</item>
-      <item>WindowListener</item>
-      <item>WindowStateListener</item>
-      <item>WrappedPlainView</item>
-      <item>WritableByteChannel</item>
-      <item>WritableRaster</item>
-      <item>WritableRenderedImage</item>
-      <item>WriteAbortedException</item>
-      <item>Writer</item>
-      <item>WrongAdapter</item>
-      <item>WrongAdapterHelper</item>
-      <item>WrongPolicy</item>
-      <item>WrongPolicyHelper</item>
-      <item>WrongTransaction</item>
-      <item>WrongTransactionHelper</item>
-      <item>WrongTransactionHolder</item>
-      <item>X500Principal</item>
-      <item>X500PrivateCredential</item>
-      <item>X509CRL</item>
-      <item>X509CRLEntry</item>
-      <item>X509CRLSelector</item>
-      <item>X509CertSelector</item>
-      <item>X509Certificate</item>
-      <item>X509Certificate</item>
-      <item>X509EncodedKeySpec</item>
-      <item>X509Extension</item>
-      <item>X509KeyManager</item>
-      <item>X509TrustManager</item>
-      <item>XAConnection</item>
-      <item>XADataSource</item>
-      <item>XAException</item>
-      <item>XAResource</item>
-      <item>XMLDecoder</item>
-      <item>XMLEncoder</item>
-      <item>XMLFilter</item>
-      <item>XMLFilterImpl</item>
-      <item>XMLFormatter</item>
-      <item>XMLReader</item>
-      <item>XMLReaderAdapter</item>
-      <item>XMLReaderFactory</item>
-      <item>Xid</item>
-      <item>ZipEntry</item>
-      <item>ZipException</item>
-      <item>ZipFile</item>
-      <item>ZipInputStream</item>
-      <item>ZipOutputStream</item>
-      <item>ZoneView</item>
-      <item>_BindingIteratorImplBase</item>
-      <item>_BindingIteratorStub</item>
-      <item>_DynAnyFactoryStub</item>
-      <item>_DynAnyStub</item>
-      <item>_DynArrayStub</item>
-      <item>_DynEnumStub</item>
-      <item>_DynFixedStub</item>
-      <item>_DynSequenceStub</item>
-      <item>_DynStructStub</item>
-      <item>_DynUnionStub</item>
-      <item>_DynValueStub</item>
-      <item>_IDLTypeStub</item>
-      <item>_NamingContextExtStub</item>
-      <item>_NamingContextImplBase</item>
-      <item>_NamingContextStub</item>
-      <item>_PolicyStub</item>
-      <item>_Remote_Stub</item>
-      <item>_ServantActivatorStub</item>
-      <item>_ServantLocatorStub</item>
-    </list>
-
-    <list name="java-1.4.2-keywords">
-      <item>abstract</item>
-      <item>assert</item>
-      <item>break</item>
-      <item>case</item>
-      <item>catch</item>
-      <item>class</item>
-      <item>continue</item>
-      <item>default</item>
-      <item>do</item>
-      <item>else</item>
-      <item>extends</item>
-      <item>false</item>
-      <item>finally</item>
-      <item>for</item>
-      <item>goto</item>
-      <item>if</item>
-      <item>implements</item>
-      <item>import</item>
-      <item>instanceof</item>
-      <item>interface</item>
-      <item>native</item>
-      <item>new</item>
-      <item>null</item>
-      <item>package</item>
-      <item>private</item>
-      <item>protected</item>
-      <item>public</item>
-      <item>return</item>
-      <item>super</item>
-      <item>strictfp</item>
-      <item>switch</item>
-      <item>synchronized</item>
-      <item>this</item>
-      <item>throws</item>
-      <item>throw</item>
-      <item>transient</item>
-      <item>true</item>
-      <item>try</item>
-      <item>volatile</item>
-      <item>while</item>
-    </list>
-
-    <list name="java-1.4.2-types">
-      <item>boolean</item>
-      <item>byte</item>
-      <item>char</item>
-      <item>const</item>
-      <item>double</item>
-      <item>final</item>
-      <item>float</item>
-      <item>int</item>
-      <item>long</item>
-      <item>short</item>
-      <item>static</item>
-      <item>void</item>
-    </list>
-
-    <list name="jsp-reserved-words">
-      <item>and</item>
-      <item>eq</item>
-      <item>gt</item>
-      <item>true</item>
-      <item>instanceof</item>
-      <item>or</item>
-      <item>ne</item>
-      <item>le</item>
-      <item>false</item>
-      <item>empty</item>
-      <item>not</item>
-      <item>lt</item>
-      <item>ge</item>
-      <item>null</item>
-      <item>div</item>
-      <item>mod</item>
-    </list>
-
-    <contexts>
-        <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
-        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
-        <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
-      </context>
-
-      <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-      </context>
-
-      <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
-        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
-        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>
-      </context>
-
-      <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
-        <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
-        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
-        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
-        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
-        <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
-        <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
-        <DetectChar char="'" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>
-        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <keyword String="java-1.4.2-keywords" attribute="Keyword" context="#stay"/>
-        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
-        <keyword String="java-1.4.2-types" attribute="Types" context="#stay"/>
-        <keyword String="java-1.4.2-classes" attribute="Java 1.4.2 Classes" context="#stay"/>
-        <Float attribute="Float" context="Float Suffixes"/>
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <Int attribute="Decimal" context="Int Suffixes"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <RegExpr String="//\s*BEGIN.*$" attribute="Decimal" context="#stay" beginRegion="Region1" firstNonSpace="true"/>
-        <RegExpr String="//\s*END.*$" attribute="Decimal" context="#stay" endRegion="Region1" firstNonSpace="true"/>
-        <DetectChar char="&quot;" attribute="String" context="Java String"/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay" beginRegion="Brace1"/>
-        <DetectChar char="}" attribute="Normal Text" context="#stay" endRegion="Brace1"/>
-        <AnyChar String="!%&amp;()+,-&lt;=&gt;?[]^{|}~" attribute="Symbol" context="#stay"/>
-        <Detect2Chars char="/" char1="/" attribute="Java Comment" context="Java Single-Line Comment"/>
-        <Detect2Chars char="/" char1="*" attribute="Java Comment" context="Java Multi-Line Comment"/>
-      </context>
-
-      <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-          <AnyChar String="fF" attribute="Float" context="#pop"/>
-      </context>
-
-      <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-          <StringDetect attribute="Decimal" context="#pop" String="ULL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LUL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LLU" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="U" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="L" insensitive="true"/>
-      </context>
-
-      <context name="Jsp Expression" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="'${'" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Jsp Scriptlet" context="#pop"/>
-        <keyword String="java-1.4.2-keywords" attribute="Keyword" context="#stay"/>
-        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
-        <keyword String="java-1.4.2-types" attribute="Types" context="#stay"/>
-        <keyword String="java-1.4.2-classes" attribute="Java 1.4.2 Classes" context="#stay"/>
-        <Float attribute="Float" context="Float Suffixes"/>
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <Int attribute="Decimal" context="Int Suffixes"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <DetectChar char="&quot;" attribute="String" context="Java String"/>
-        <AnyChar String="!%&amp;()+,-&lt;=&gt;?[]^{|}~" attribute="Symbol" context="#stay"/>
-      </context>
-
-      <context name="Java Single-Line Comment" attribute="Java Comment" lineEndContext="#pop"/>
-
-      <context name="Java Multi-Line Comment" attribute="Java Comment" lineEndContext="#stay">
-        <Detect2Chars char="*" char1="/" attribute="Java Comment" context="#pop"/>
-      </context>
-
-      <context name="Java String" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="&quot;" attribute="String" context="#stay"/>
-        <DetectChar char="&quot;" attribute="String" context="#pop"/>
-      </context>
-
-      <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Html Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
-        <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
-        <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
-        <RegExpr String="\s+" attribute="Types" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>
-      </context>
-
-    </contexts>
-
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword" defStyleNum="dsKeyword"/>
-      <itemData name="Identifier" defStyleNum="dsOthers"/>
-      <itemData name="Types" defStyleNum="dsDataType"/>
-      <itemData name="String" defStyleNum="dsString"/>
-
-      <itemData name="Html Comment" defStyleNum="dsComment"/>
-
-      <itemData name="Decimal" defStyleNum="dsDecVal"/>
-      <itemData name="Octal" defStyleNum="dsBaseN"/>
-      <itemData name="Hex" defStyleNum="dsBaseN"/>
-      <itemData name="Float" defStyleNum="dsFloat"/>
-      <itemData name="Char" defStyleNum="dsChar"/>
-      <itemData name="Symbol" defStyleNum="dsNormal"/>
-      <itemData name="Java 1.4.2 Classes" defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
-
-      <itemData name="Jsp Directive" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="true" italic="true"/>
-      <itemData name="Jsp Scriptlet" defStyleNum="dsNormal" color="#000000" selColor="#ffffff" bold="true" italic="false"/>
-      <itemData name="Jsp Expression" defStyleNum="dsNormal" color="#000000" selColor="#ffffff" bold="true" italic="false"/>
-      <itemData name="Jsp Comment" defStyleNum="dsComment"/>
-
-      <itemData name="Jsp Param Name" defStyleNum="dsOthers"/>
-      <itemData name="Jsp Param Value" defStyleNum="dsString"/>
-
-      <itemData name="Java Comment" defStyleNum="dsComment"/>
+<language version="5" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
+  <highlighting>
+
+    <list name="jsp-reserved-words">
+      <item>and</item>
+      <item>eq</item>
+      <item>gt</item>
+      <item>true</item>
+      <item>instanceof</item>
+      <item>or</item>
+      <item>ne</item>
+      <item>le</item>
+      <item>false</item>
+      <item>empty</item>
+      <item>not</item>
+      <item>lt</item>
+      <item>ge</item>
+      <item>null</item>
+      <item>div</item>
+      <item>mod</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
+        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
+        <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
+        <RegExpr String="&lt;script\b" attribute="Normal Text" context="JS" beginRegion="script" />
+        <RegExpr String="&lt;style\b" attribute="Normal Text" context="CSS" beginRegion="style" />
+        <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
+      </context>
+
+      <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="CSS content" char="&gt;" />
+        <Detect2Chars attribute="Normal Text" context="#pop" char="/" char1="&gt;" endRegion="style" />
+        <IncludeRules context="Html Attribute" />
+      </context>
+
+      <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect attribute="Normal Text" context="#pop#pop" String="&lt;/style>" endRegion="style" />
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+
+      <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="JS content" char="&gt;" />
+        <Detect2Chars attribute="Normal Text" context="#pop" char="/" char1="&gt;" endRegion="script" />
+        <IncludeRules context="Html Attribute" />
+      </context>
+
+      <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script\b" endRegion="script" />
+        <RegExpr attribute="Jsp Comment" context="JS comment close" String="//(?=.*&lt;/script)" />
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context name="JS comment close" attribute="Jsp Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect attribute="Normal Text" context="#pop#pop#pop" String="&lt;/script" endRegion="script" />
+      </context>
+
+      <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+      </context>
+
+      <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
+        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
+        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>
+      </context>
+
+      <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
+        <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
+        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
+        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
+        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
+        <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
+        <DetectChar char="'" attribute="Types" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>
+        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+
+      <context name="Jsp Expression" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Jsp Expression" context="#pop"/>
+        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+
+      <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Html Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
+        <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
+        <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
+        <RegExpr String="\s+" attribute="Types" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>
+      </context>
+
+    </contexts>
+
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Identifier" defStyleNum="dsOthers"/>
+      <itemData name="Types" defStyleNum="dsDataType"/>
+
+      <itemData name="Html Comment" defStyleNum="dsComment"/>
+
+      <itemData name="Jsp Directive" defStyleNum="dsBuiltIn" bold="true" italic="true"/>
+      <itemData name="Jsp Scriptlet" defStyleNum="dsPreprocessor" bold="true" italic="false"/>
+      <itemData name="Jsp Expression" defStyleNum="dsPreprocessor" bold="true" italic="false"/>
+      <itemData name="Jsp Comment" defStyleNum="dsComment"/>
+
+      <itemData name="Jsp Param Name" defStyleNum="dsOthers"/>
+      <itemData name="Jsp Param Value" defStyleNum="dsString"/>
     </itemDatas>
   </highlighting>
 
diff --git a/syntax/julia.xml b/syntax/julia.xml
--- a/syntax/julia.xml
+++ b/syntax/julia.xml
@@ -27,9 +27,13 @@
   Author: Timothy E. Holy, Washington University in St. Louis
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!ENTITY int "[0-9]([0-9_]*[0-9])?">
+  <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
+]>
 
-<language name="Julia" section="Sources" version="5" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" section="Sources" version="7" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="block_begin">
@@ -46,6 +50,7 @@
     </list>
     <list name="block_eb">
       <item>catch</item>
+      <item>finally</item>
       <item>else</item>
       <item>elseif</item>
     </list>
@@ -68,6 +73,16 @@
       <item>module</item>
       <item>return</item>
       <item>typealias</item>
+      <item>importall</item>
+      <item>baremodule</item>
+      <item>using</item>
+      <item>where</item>
+      <item>new</item>
+      <item>in</item>
+      <item>struct</item>
+      <item>ans</item>
+      <!-- C Interface -->
+      <item>ccall</item>
     </list>
     <list name="types">
       <item>AbstractArray</item>
@@ -128,11 +143,11 @@
       <item>Task</item>
       <item>Tuple</item>
       <item>Type</item>
-      <item>Uint</item>
-      <item>Uint8</item>
-      <item>Uint16</item>
-      <item>Uint32</item>
-      <item>Uint64</item>
+      <item>UInt</item>
+      <item>UInt8</item>
+      <item>UInt16</item>
+      <item>UInt32</item>
+      <item>UInt64</item>
       <item>Union</item>
       <item>Unsigned</item>
       <item>UTF8String</item>
@@ -140,66 +155,385 @@
       <item>Vector</item>
       <item>Void</item>
       <item>WeakRef</item>
+      <!-- Essentials -->
+      <item>Missing</item>
+      <item>Cmd</item>
+      <item>EnvDict</item>
+      <item>VersionNumber</item>
+      <item>ArgumentError</item>
+      <item>AssertionError</item>
+      <item>BoundsError</item>
+      <item>CompositeException</item>
+      <item>DimensionMismatch</item>
+      <item>DivideError</item>
+      <item>DomainError</item>
+      <item>EOFError</item>
+      <item>ErrorException</item>
+      <item>InexactError</item>
+      <item>InterruptException</item>
+      <item>KeyError</item>
+      <item>LoadError</item>
+      <item>MethodError</item>
+      <item>MissingException</item>
+      <item>OutOfMemoryError</item>
+      <item>ReadOnlyMemoryError</item>
+      <item>OverflowError</item>
+      <item>StackOverflowError</item>
+      <item>SystemError</item>
+      <item>TypeError</item>
+      <item>UndefKeywordError</item>
+      <item>UndefRefError</item>
+      <item>UndefVarError</item>
+      <item>StringIndexError</item>
+      <item>InitError</item>
+      <item>ExponentialBackOff</item>
+      <item>Timer</item>
+      <item>AsyncCondition</item>
+      <item>ParseError</item>
+      <!-- Collections and Data Structures -->
+      <item>IteratorEltype</item>
+      <item>AbstractRange</item>
+      <item>OrdinalRange</item>
+      <item>AbstractUnitRange</item>
+      <item>StepRange</item>
+      <item>UnitRange</item>
+      <item>LinRange</item>
+      <item>IdDict</item>
+      <item>WeakKeyDict</item>
+      <item>ImmutableDict</item>
+      <item>BitSet</item>
+      <item>Pair</item>
+      <!-- Math -->
+      <item>OneTo</item>
+      <item>StepRangeLen</item>
+      <item>RoundingMode</item>
+      <!-- Numbers -->
+      <item>AbstractFloat</item>
+      <item>AbstractIrrational</item>
+      <item>Float16</item>
+      <item>Float32</item>
+      <item>Float64</item>
+      <item>BigFloat</item>
+      <item>Int128</item>
+      <item>UInt128</item>
+      <item>BigInt</item>
+      <item>ComplexF16</item>
+      <item>ComplexF32</item>
+      <item>ComplexF64</item>
+      <item>Irrational</item>
+      <item>UnionAll</item>
+      <item>NamedTuple</item>
+      <item>Val</item>
+      <item>Vararg</item>
+      <item>Some</item>
+      <!-- String -->
+      <item>AbstractChar</item>
+      <item>SubstitutionString</item>
+      <item>AbstractString</item>
+      <!-- Array -->
+      <item>UndefInitializer</item>
+      <item>DenseArray</item>
+      <item>DenseVector</item>
+      <item>DenseMatrix</item>
+      <item>BitArray</item>
+      <item>IndexStyle</item>
+      <item>IndexLinear</item>
+      <item>IndexCartesian</item>
+      <item>BroadcastStyle</item>
+      <item>AbstractArrayStyle</item>
+      <item>ArrayStyle</item>
+      <item>DefaultArrayStyle</item>
+      <item>Colon</item>
+      <item>CartesianIndex</item>
+      <item>CartesianIndices</item>
+      <item>Dims</item>
+      <item>LinearIndices</item>
+      <item>PermutedDimsArray</item>
+      <!-- Tasks -->
+      <item>Condition</item>
+      <item>Channel</item>
+      <!-- Threads -->
+      <item>Atomic</item>
+      <item>AbstractLock</item>
+      <item>ReentrantLock</item>
+      <item>Mutex</item>
+      <item>SpinLock</item>
+      <item>RecursiveSpinLock</item>
+      <item>Semaphore</item>
+      <!-- Filesystem (Libc) -->
+      <item>RawFD</item>
+      <!-- I/O and Network -->
+      <item>IOBuffer</item>
+      <item>IOContext</item>
+      <item>TextDisplay</item>
+      <item>AbstractDisplay</item>
+      <!-- Sort -->
+      <item>PartialQuickSort</item>
+      <!-- Iteration utilities -->
+      <item>Stateful</item>
+      <!-- Iterators -->
+      <item>Pairs</item>
+      <!-- C Interface -->
+      <item>CFunction</item>
+      <item>Ptr</item>
+      <item>Ref</item>
+      <item>Cchar</item>
+      <item>Cuchar</item>
+      <item>Cshort</item>
+      <item>Cstring</item>
+      <item>Cushort</item>
+      <item>Cint</item>
+      <item>Cuint</item>
+      <item>Clong</item>
+      <item>Culong</item>
+      <item>Clonglong</item>
+      <item>Culonglong</item>
+      <item>Cintmax_t</item>
+      <item>Cuintmax_t</item>
+      <item>Csize_t</item>
+      <item>Cssize_t</item>
+      <item>Cptrdiff_t</item>
+      <item>Cwchar_t</item>
+      <item>Cwstring</item>
+      <item>Cfloat</item>
+      <item>Cdouble</item>
+      <!-- C Standard Library -->
+      <item>TmStruct</item>
+      <!-- StackTraces -->
+      <item>StackFrame</item>
+      <item>StackTrace</item>
+      <!-- Base64 -->
+      <item>Base64EncodePipe</item>
+      <item>Base64DecodePipe</item>
+      <!-- Dates -->
+      <item>Period</item>
+      <item>CompoundPeriod</item>
+      <item>Instant</item>
+      <item>UTInstant</item>
+      <item>TimeType</item>
+      <item>DateTime</item>
+      <item>Date</item>
+      <item>Time</item>
+      <item>DateFormat</item>
+      <!-- Base.CoreLogging -->
+      <item>LogLevel</item>
+      <item>AbstractLogger</item>
+      <item>NullLogger</item>
+      <item>ConsoleLogger</item>
+      <item>SimpleLogger</item>
+      <!-- Mmap -->
+      <item>Anonymous</item>
+      <!-- Random -->
+      <item>RandomDevice</item>
+      <item>MersenneTwister</item>
+      <!-- SharedArrays -->
+      <item>SharedArray</item>
+      <!-- Sockets -->
+      <item>IPv4</item>
+      <item>IPv6</item>
+      <item>TCPSocket</item>
+      <item>UDPSocket</item>
+      <!-- SparseArrays -->
+      <item>SparseVector</item>
+      <item>SparseMatrixCSC</item>
+      <!-- Others -->
+      <item>AbstractChannel</item>
+      <item>AbstractSet</item>
+      <item>AbstractDict</item>
+      <item>BitMatrix</item>
+      <item>BitVector</item>
+      <item>Enum</item>
+      <item>CapturedException</item>
+      <item>InvalidStateException</item>
+      <item>ProcessFailedException</item>
     </list>
+
+    <list name="constants">
+      <!-- Constants -->
+      <item>nothing</item>
+      <item>PROGRAM_FILE</item>
+      <item>ARGS</item>
+      <item>C_NULL</item>
+      <item>VERSION</item>
+      <item>LOAD_PATH</item>
+      <item>DEPOT_PATH</item>
+      <!-- Sys -->
+      <item>BINDIR</item>
+      <item>CPU_THREADS</item>
+      <item>WORD_SIZE</item>
+      <item>KERNEL</item>
+      <item>ARCH</item>
+      <item>MACHINE</item>
+      <!-- Essentials -->
+      <item>missing</item>
+      <item>devnull</item>
+      <item>ENV</item>
+      <!-- I/O and Network -->
+      <item>stdout</item>
+      <item>stderr</item>
+      <item>stdin</item>
+      <item>open</item>
+      <item>read</item>
+      <item>write</item>
+      <item>create</item>
+      <item>truncate</item>
+      <item>append</item>
+      <item>ENDIAN_BOM</item>
+      <!-- Numbers -->
+      <item>im</item>
+      <item>pi</item>
+      <item>e</item>
+      <item>catalan</item>
+      <item>eulergamma</item>
+      <item>golden</item>
+      <item>Inf</item>
+      <item>Inf64</item>
+      <item>Inf32</item>
+      <item>Inf16</item>
+      <item>NaN</item>
+      <item>NaN64</item>
+      <item>NaN32</item>
+      <item>NaN16</item>
+      <!-- Math -->
+      <item>RoundNearest</item>
+      <item>RoundNearestTiesAway</item>
+      <item>RoundNearestTiesUp</item>
+      <item>RoundToZero</item>
+      <item>RoundFromZero</item>
+      <item>RoundUp</item>
+      <item>RoundDown</item>
+      <!-- Array -->
+      <item>AbstractVecOrMat</item>
+      <item>undef</item>
+      <item>VecOrMat</item>
+      <item>DenseVecOrMat</item>
+      <item>StridedArray</item>
+      <item>StridedVector</item>
+      <item>StridedMatrix</item>
+      <item>StridedVecOrMat</item>
+      <!-- Sort -->
+      <item>InsertionSort</item>
+      <item>MergeSort</item>
+      <item>QuickSort</item>
+      <item>InsertionSort</item>
+      <!-- Libc -->
+      <item>MS_ASYNC</item>
+      <item>MS_INVALIDATE</item>
+      <item>MS_SYNC</item>
+    </list>
+    <list name="booleans">
+      <item>true</item>
+      <item>false</item>
+    </list>
+    <list name="modules">
+      <item>Base</item>
+      <item>Core</item>
+      <item>Main</item>
+      <item>Meta</item>
+      <item>StackTraces</item>
+      <item>Sys</item>
+      <item>Libc</item>
+      <item>Docs</item>
+      <item>Threads</item>
+      <item>Iterators</item>
+      <item>Broadcast</item>
+      <item>MathConstants</item>
+      <item>Math</item>
+      <item>Unicode</item>
+      <item>Sort</item>
+      <item>Base64</item>
+      <item>Dates</item>
+      <item>Mmap</item>
+      <item>Random</item>
+      <item>SharedArrays</item>
+      <item>Sockets</item>
+      <item>SparseArrays</item>
+      <item>CoreLogging</item>
+    </list>
     <contexts>
 
       <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
 
-	<DetectSpaces />
+        <DetectSpaces />
 
         <!-- Blocks -->
-        <keyword context="#stay" attribute="Keyword" String="block_begin" 
-beginRegion="block" />
-        <keyword context="#stay" attribute="Keyword" String="block_eb" 
-endRegion="block" beginRegion="block" />
-        <keyword context="#stay" attribute="Keyword" String="block_end" 
-endRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_begin"
+                 beginRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_eb"
+                 endRegion="block" beginRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_end"
+                 endRegion="block" />
         <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />
         <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
 
         <!-- Keywords, types, and comments -->
+        <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b" />
+        <RegExpr context="#stay" attribute="Keyword" String="\bmutable\s+struct\b" />
         <keyword context="#stay" attribute="Keyword" String="keywords" />
         <keyword context="#stay" attribute="Data Type" String="types" />
+        <keyword context="#stay" attribute="Boolean" String="booleans" />
+        <keyword context="#stay" attribute="Constant" String="constants" />
+        <keyword context="#stay" attribute="Module" String="modules" />
+        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>
         <DetectChar char="#" context="1-comment" attribute="Comment"/>
 
-	<!-- Lists and arrays -->
+        <!-- Lists and arrays -->
         <!-- <DetectChar char="(" context="nested" beginRegion="nested" attribute="Delimiter" />
         <DetectChar char="[" context="squared" beginRegion="squared" attribute="Delimiter" />
         <DetectChar char="{" context="curly" beginRegion="curly" attribute="Delimiter" /> -->
 
         <!-- Strings -->
-	<DetectChar attribute="String" context="String" char="&quot;"/>
+        <StringDetect attribute="String" context="Block-String" String="&quot;&quot;&quot;" beginRegion="block-string"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <!-- Regular expressions -->
+        <StringDetect attribute="String" context="Regex-Block-String" String="r&quot;&quot;&quot;" beginRegion="block-string"/>
+        <Detect2Chars attribute="String" context="Regex-String" char="r" char1="&quot;"/>
+        <!-- Byte Arrays -->
+        <StringDetect attribute="String" context="Block-String" String="b&quot;&quot;&quot;" beginRegion="block-string"/>
+        <Detect2Chars attribute="String" context="String" char="b" char1="&quot;"/>
+        <!-- Version Number -->
+        <Detect2Chars attribute="String" context="String" char="v" char1="&quot;"/>
+        <!-- Raw Strings -->
+        <StringDetect attribute="String" context="Raw-Block-String" String="raw&quot;&quot;&quot;" beginRegion="block-string"/>
+        <StringDetect attribute="String" context="Raw-String" String="raw&quot;"/>
+        <!-- Documentation -->
+        <StringDetect attribute="String" context="Block-String" String="doc&quot;&quot;&quot;" beginRegion="block-string"/>
+        <StringDetect attribute="String" context="String" String="doc&quot;"/>
 
+        <!-- For Running External Programs -->
+        <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
+        <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
+
         <!-- Multi-character operators -->
         <StringDetect context="#stay" attribute="Operator" String="..."/>
-        <StringDetect context="#stay" attribute="Operator" String="::"/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="=="/>
-        <StringDetect context="#stay" attribute="Operator" String="!="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String="||"/>
-        <StringDetect context="#stay" attribute="Operator" String=".*"/>
-        <StringDetect context="#stay" attribute="Operator" String=".^"/>
-        <StringDetect context="#stay" attribute="Operator" String="./"/>
-        <StringDetect context="#stay" attribute="Operator" String=".'"/>
-        <StringDetect context="#stay" attribute="Operator" String="+="/>
-        <StringDetect context="#stay" attribute="Operator" String="-="/>
-        <StringDetect context="#stay" attribute="Operator" String="*="/>
-        <StringDetect context="#stay" attribute="Operator" String="/="/>
-        <StringDetect context="#stay" attribute="Operator" String="&amp;="/>
-        <StringDetect context="#stay" attribute="Operator" String="|="/>
-        <StringDetect context="#stay" attribute="Operator" String="$="/>
+        <Detect2Chars context="#stay" attribute="Operator" char=":" char1=":"/>
         <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;="/>
         <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;="/>
         <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="-" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="*" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="$" char1="="/>
 
         <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
         <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
-        <RegExpr context="_adjoint" attribute="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?(?=')" />
+        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />
         <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
         <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
 
@@ -207,11 +541,17 @@
         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
         <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" />
 
+        <RegExpr context="#stay" attribute="Macro" String="@[a-zA-Z_]\w*" />
+        <RegExpr context="#stay" attribute="Function" String="\b[A-Za-z_]\w*(?=\!?\()" />
+
         <!-- Identifiers, numbers and braces -->
         <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
         <DetectIdentifier context="#stay" attribute="Variable" />
-        <RegExpr context="#stay" attribute="Hex" String="0x[0-9a-fA-F]+(im)?" />
-        <RegExpr context="#stay" attribute="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?" />
+        <RegExpr context="#stay" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?\d+(im)?"/>
+        <RegExpr context="#stay" attribute="Hex" String="0x&hex;(im)?" />
+        <RegExpr context="#stay" attribute="Octal" String="0o[0-7]([0-7_]*[0-7])?(im)?" />
+        <RegExpr context="#stay" attribute="Binary" String="0b[01]([01_]*[01])?(im)?" />
+        <RegExpr context="#stay" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
 
         <!-- Single-character operators -->
@@ -243,26 +583,98 @@
       <!-- Context entered after encountering an " (string) -->
       <context attribute="String" lineEndContext="#pop" name="String">
         <DetectSpaces />
-        <DetectIdentifier />
         <LineContinue attribute="String" context="#stay"/>
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
+      <context attribute="String" lineEndContext="#stay" name="Block-String">
+        <DetectSpaces />
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+      </context>
+      <!-- Raw String -->
+      <context attribute="String" lineEndContext="#pop" name="Raw-String">
+        <DetectSpaces />
+        <LineContinue attribute="String" context="#stay"/>
+        <RegExpr attribute="String Char" context="#stay" String="(\\\\)*\\&quot;"/>
+        <RegExpr attribute="String Char" context="#stay" String="(\\\\)+(?=&quot;)"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Raw-Block-String">
+        <DetectSpaces />
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
+      </context>
+      <!-- Command String -->
+      <context attribute="Command String" lineEndContext="#pop" name="Backtick-String">
+        <DetectSpaces />
+        <LineContinue attribute="Command String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Command String" context="#pop" char="`"/>
+      </context>
+      <context attribute="Command String" lineEndContext="#stay" name="Block-Backtick-String">
+        <DetectSpaces />
+        <StringDetect attribute="Command String" context="#pop" String="```" endRegion="block-string"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+      </context>
 
+      <!-- Regular expressions -->
+      <context attribute="String" lineEndContext="#pop" name="Regex-String">
+        <RegExpr attribute="String" context="#pop" String="&quot;[imsx]{1,4}"/>
+        <Detect2Chars attribute="Char" context="Regex-Square-Bracket" char="[" char1="^"/>
+        <DetectChar attribute="Char" context="Regex-Square-Bracket" char="["/>
+        <IncludeRules context="Default-Regex"/>
+        <IncludeRules context="String"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Regex-Block-String">
+        <RegExpr attribute="String" context="#pop" String="&quot;{3}[imsx]{1,4}" endRegion="block-string"/>
+        <Detect2Chars attribute="Char" context="Block-Regex-Square-Bracket" char="[" char1="^"/>
+        <DetectChar attribute="Char" context="Block-Regex-Square-Bracket" char="["/>
+        <IncludeRules context="Default-Regex"/>
+        <IncludeRules context="Block-String"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="Regex-Square-Bracket">
+        <LineContinue attribute="String" context="#stay"/>
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <DetectChar attribute="Char" context="#pop" char="]"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;" lookAhead="true"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Block-Regex-Square-Bracket">
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <DetectChar attribute="Char" context="#pop" char="]"/>
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" lookAhead="true"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Default-Regex">
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <Detect2Chars attribute="Char" context="#stay" char="(" char1="?"/>
+        <AnyChar attribute="Char" context="#stay" String="()|"/>
+        <AnyChar attribute="String Char" context="#stay" String="?+*." />
+      </context>
+
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
         <DetectSpaces />
-        <DetectIdentifier />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
+      <context name="block-comment" lineEndContext="#stay" attribute="Comment">
+        <DetectSpaces />
+        <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+
     </contexts>
 
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
       <itemData name="Variable" defStyleNum="dsNormal" />
-      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Operator" defStyleNum="dsOperator"/>
       <itemData name="Float" defStyleNum="dsFloat" />
       <itemData name="Hex" defStyleNum="dsBaseN" />
+      <itemData name="Octal" defStyleNum="dsBaseN" />
+      <itemData name="Binary" defStyleNum="dsBaseN" />
       <itemData name="Delimiter" defStyleNum="dsNormal" />
       <itemData name="String" defStyleNum="dsString"/>
       <itemData name="String Char" defStyleNum="dsSpecialChar"/>
@@ -270,8 +682,14 @@
       <itemData name="Incomplete Char" defStyleNum="dsChar"/>
       <itemData name="Keyword" defStyleNum="dsKeyword"/>
       <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Constant" defStyleNum="dsConstant"/>
+      <itemData name="Boolean" defStyleNum="dsExtension"/>
+      <itemData name="Macro" defStyleNum="dsPreprocessor"/>
+      <itemData name="Module" defStyleNum="dsBuiltIn"/>
+      <itemData name="Function" defStyleNum="dsNormal"/>
+      <itemData name="Command String" defStyleNum="dsSpecialString"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="FoldingComment" defStyleNum="dsComment" />
+      <itemData name="FoldingComment" defStyleNum="dsRegionMarker" />
     </itemDatas>
 
   </highlighting>
@@ -279,6 +697,7 @@
   <general>
     <comments>
       <comment name="singleLine" start="#" />
+      <comment name="multiLine" start="#=" end="=#" />
     </comments>
     <keywords casesensitive="1" weakDeliminator=""/>
   </general>
@@ -286,4 +705,4 @@
 </language>
 
 <!-- It's recommended to put the following line in the Variables field under Settings->Configure Kate->Open/Save->Modes&Filetypes -->
-<!-- kate: space-indent on; indent-width 4; mixed-indent off; indent-mode cstyle; -->
+<!-- kate: space-indent on; indent-width 2; mixed-indent off; indent-mode cstyle; -->
diff --git a/syntax/latex.xml b/syntax/latex.xml
--- a/syntax/latex.xml
+++ b/syntax/latex.xml
@@ -1,45 +1,321 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="LaTeX" version="8" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+    <!ENTITY bullet "&#xd7;">
+    <!ENTITY envname "[a-zA-Z]+\*?">
+    <!ENTITY regionmarker "&#037;\s*(?:BEGIN|END)">
+]>
+<language name="LaTeX" version="11" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
   <highlighting>
+    <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
+         Using a DetectChar rule with lookAhead to detect "\" at the beginning
+         avoids the requirement of the delimiter in the keyword. -->
+    <list name="beginEnv">
+      <item>\begin</item>
+    </list>
+
+    <list name="endEnv">
+      <item>\end</item>
+    </list>
+
+    <list name="Label">
+      <item>\Autocite</item>
+      <item>\autocite</item>
+      <item>\autoref</item>
+      <item>\Cite</item>
+      <item>\cite</item>
+      <item>\Citeauthor</item>
+      <item>\citeauthor</item>
+      <item>\citep</item>
+      <item>\citet</item>
+      <item>\citetitle</item>
+      <item>\citeurl</item>
+      <item>\citeyear</item>
+      <item>\cref</item>
+      <item>\Cref</item>
+      <item>\cref*</item>
+      <item>\Cref*</item>
+      <item>\eqref</item>
+      <item>\Footcite</item>
+      <item>\footcite</item>
+      <item>\footfullcite</item>
+      <item>\fullcite</item>
+      <item>\label</item>
+      <item>\nocite</item>
+      <item>\pagecite</item>
+      <item>\pageref</item>
+      <item>\Parencite</item>
+      <item>\parencite</item>
+      <item>\ref</item>
+      <item>\subref</item>
+      <item>\subref*</item>
+      <item>\supercite</item>
+      <item>\Textcite</item>
+      <item>\textcite</item>
+      <item>\vpageref</item>
+      <item>\vref</item>
+    </list>
+
+    <list name="macroFancyLabel">
+      <item>\documentclass</item>
+      <item>\includegraphics</item>
+      <item>\include</item>
+      <item>\usepackage</item>
+      <item>\bibliography</item>
+      <item>\bibliographystyle</item>
+    </list>
+
+    <list name="FancyLabel">
+      <item>\cites</item>
+      <item>\Cites</item>
+      <item>\parencites</item>
+      <item>\Parencites</item>
+      <item>\autocites</item>
+      <item>\Autocites</item>
+      <item>\supercites</item>
+      <item>\footcites</item>
+      <item>\Footcites</item>
+    </list>
+
+    <list name="Sectioning">
+      <item>\part*</item>
+      <item>\part</item>
+      <item>\chapter*</item>
+      <item>\chapter</item>
+      <item>\section*</item>
+      <item>\section</item>
+      <item>\subsection*</item>
+      <item>\subsection</item>
+      <item>\subsubsection*</item>
+      <item>\subsubsection</item>
+      <item>\paragraph*</item>
+      <item>\paragraph</item>
+      <item>\subparagraph*</item>
+      <item>\subparagraph</item>
+    </list>
+
+    <list name="SpecialCommand">
+      <item>\column</item>
+      <item>\definecolor</item>
+      <item>\geometry</item>
+      <item>\hspace*</item>
+      <item>\hspace</item>
+      <item>\input</item>
+      <item>\newboolean</item>
+      <item>\rule</item>
+      <item>\setboolean</item>
+      <item>\setcounter</item>
+      <item>\setlength</item>
+      <item>\special</item>
+      <item>\textcolor</item>
+      <item>\vspace*</item>
+      <item>\vspace</item>
+    </list>
+
+    <list name="Footnoting">
+      <item>\footnote*</item>
+      <item>\footnote</item>
+    </list>
+
+    <list name="NewCommand">
+      <item>\renewcommand*</item>
+      <item>\renewcommand</item>
+      <item>\providecommand*</item>
+      <item>\providecommand</item>
+      <item>\newcommand*</item>
+      <item>\newcommand</item>
+    </list>
+
+    <list name="DefCommand">
+      <item>\edef</item>
+      <item>\gdef</item>
+      <item>\xdef</item>
+    </list>
+
+    <list name="MathModeEnsure">
+      <item>\ensuremath</item>
+    </list>
+
+    <list name="iffalse">
+      <item>\iffalse</item>
+    </list>
+
+    <list name="iffalseend">
+      <item>\fi</item>
+      <item>\else</item>
+    </list>
+
+    <list name="Verb">
+      <item>verb*</item>
+      <item>verb</item>
+      <item>Verb</item>
+    </list>
+
+    <list name="Lstinline">
+      <item>lstinline</item>
+    </list>
+
+    <list name="MintParam">
+      <item>mint</item>
+    </list>
+
+    <list name="ListingsEnv">
+      <item>lstlisting*</item>
+      <item>lstlisting</item>
+    </list>
+
+    <list name="MintedEnv">
+      <item>minted*</item>
+      <item>minted</item>
+    </list>
+
+    <list name="VerbatimEnv">
+      <item>Verbatim*</item>
+      <item>Verbatim</item>
+      <item>BVerbatim*</item>
+      <item>BVerbatim</item>
+      <item>LVerbatim*</item>
+      <item>LVerbatim</item>
+      <item>verbatim*</item>
+      <item>verbatim</item>
+      <item>boxedverbatim*</item>
+      <item>boxedverbatim</item>
+    </list>
+
+    <list name="CommentEnv">
+      <item>comment*</item>
+      <item>comment</item>
+    </list>
+
+    <list name="MathEnvParam">
+      <item>alignat*</item>
+      <item>alignat</item>
+      <item>xalignat*</item>
+      <item>xalignat</item>
+      <item>xxalignat*</item>
+      <item>xxalignat</item>
+    </list>
+
+    <list name="MathEnv">
+      <item>Bmatrix*</item>
+      <item>Bmatrix</item>
+      <item>IEEEeqnarray*</item>
+      <item>IEEEeqnarray</item>
+      <item>IEEEeqnarraybox*</item>
+      <item>IEEEeqnarraybox</item>
+      <item>Vmatrix*</item>
+      <item>Vmatrix</item>
+      <item>align*</item>
+      <item>align</item>
+      <item>bmatrix*</item>
+      <item>bmatrix</item>
+      <item>cases*</item>
+      <item>cases</item>
+      <item>displaymath*</item>
+      <item>displaymath</item>
+      <item>eqnarray*</item>
+      <item>eqnarray</item>
+      <item>equation*</item>
+      <item>equation</item>
+      <item>flalign*</item>
+      <item>flalign</item>
+      <item>gather*</item>
+      <item>gather</item>
+      <item>math*</item>
+      <item>math</item>
+      <item>multline*</item>
+      <item>multline</item>
+      <item>pmatrix*</item>
+      <item>pmatrix</item>
+      <item>smallmatrix*</item>
+      <item>smallmatrix</item>
+      <item>subeqnarray*</item>
+      <item>subeqnarray</item>
+      <item>vmatrix*</item>
+      <item>vmatrix</item>
+    </list>
+
+    <list name="TabEnv">
+      <item>tabularx*</item>
+      <item>tabularx</item>
+      <item>tabular*</item>
+      <item>tabular</item>
+      <item>supertabular*</item>
+      <item>supertabular</item>
+      <item>mpsupertabular*</item>
+      <item>mpsupertabular</item>
+      <item>xtabular*</item>
+      <item>xtabular</item>
+      <item>mpxtabular*</item>
+      <item>mpxtabular</item>
+      <item>longtable*</item>
+      <item>longtable</item>
+    </list>
+
+    <list name="MathModeText">
+      <item>\text</item>
+      <item>\textit</item>
+      <item>\textbf</item>
+      <item>\textmd</item>
+      <item>\textsl</item>
+      <item>\textsc</item>
+      <item>\textrm</item>
+      <item>\textsf</item>
+      <item>\texttt</item>
+      <item>\textup</item>
+      <item>\textlf</item>
+      <item>\textnormal</item>
+      <item>\shortintertext</item>
+      <item>\intertext</item>
+      <item>\mbox</item>
+      <item>\emph</item>
+    </list>
+
+    <list name="ResetHL">
+      <item>\KileResetHL</item>
+      <item>\KateResetHL</item>
+    </list>
+
     <contexts>
       <!-- Normal text -->
       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindBeginEnvironment" beginRegion="block" />
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="FindEndEnvironment" />
-        <RegExpr String="\\(cite|citet|citep|parencite|autocite|Autocite|citetitle)\*(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(documentclass|includegraphics|include|usepackage|bibliography|bibliographystyle)(?=[^a-zA-Z])" attribute="Builtin Macro" context="FancyLabel"/>
-        <RegExpr String="\\(cites|Cites|parencites|Parencites|autocites|Autocites|supercites|footcites|Footcites)(?=[^a-zA-Z])" attribute="Structure" context="FancyLabel"/>
-        <RegExpr String="\\(cite|citet|citep|nocite|Cite|parencite|Parencite|footcite|Footcite|textcite|Textcite|supercite|autocite|Autocite|citeauthor|Citeauthor|citetitle|citeyear|citeurl|nocite|fullcite|footfullcite)(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(subref\*?|cref\*?|label|pageref|autoref|ref|vpageref|vref|pagecite|eqref)(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)\*?\s*(?=[\{\[])" attribute="Structure" context="Sectioning"/>
-        <RegExpr String="\\(input|hspace|hspace\*|vspace|vspace\*|rule|special|setlength|newboolean|setboolean|setcounter|geometry|textcolor|definecolor|column)(?=[^a-zA-Z])" attribute="Macro" context="SpecialCommand"/>
-        <RegExpr String="\\(footnote)\*?\s*(?=[\{\[])" attribute="Macro" context="Footnoting"/>
-        <RegExpr String="\\(renewcommand|providenewcommand|newcommand)\*?(?=[^a-zA-Z])" attribute="Macro" context="NewCommand"/>
-        <RegExpr String="\\(e|g|x)?def(?=[^a-zA-Z])" attribute="Macro" context="DefCommand"/>
-        <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" />
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
-        <StringDetect String="\[" attribute="Math" context="MathModeEquation" beginRegion="mathMode" />
-        <WordDetect String="\iffalse" attribute="Comment" context="Multiline Comment"/>
-        <StringDetect String="\ensuremath{" attribute="Math" context="MathModeEnsure"/>
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <StringDetect String="$$" attribute="Math" context="MathModeDisplay" beginRegion="mathMode" />
-        <DetectChar char="$" attribute="Math" context="MathMode" />
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true" />
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true" />
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex"/>
+        <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
 
-        <!-- NoWeb -->
-      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="^\s*@\s*" attribute="Normal Text" context="#pop" />
+      <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment" endRegion="block"/>
+        <keyword String="Label" attribute="Structure" context="#pop!Label"/>
+        <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>
+        <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>
+        <keyword String="Sectioning" attribute="Structure" context="#pop!Sectioning"/>
+        <keyword String="SpecialCommand" attribute="Macro" context="#pop!SpecialCommand"/>
+        <keyword String="Footnoting" attribute="Macro" context="#pop!Footnoting"/>
+        <keyword String="NewCommand" attribute="Macro" context="#pop!NewCommand"/>
+        <keyword String="DefCommand" attribute="Macro" context="#pop!DefCommand"/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="#pop!MathModeLatex"/>
+        <Detect2Chars char="\" char1="[" attribute="Math" context="#pop!MathModeLatexEquation" beginRegion="mathMode"/>
+        <keyword String="MathModeEnsure" attribute="Math" context="#pop!MathModeEnsure"/>
+        <keyword String="iffalse" attribute="Comment" context="#pop!Multiline Comment"/>
+        <DetectChar char="\" attribute="Macro" context="#pop!ContrSeq"/>
       </context>
 
+      <!-- NoWeb -->
+      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="@\s*$" attribute="Normal Text" context="#pop" column="0"/>
+      </context>
+
       <!-- LaTeX sectioning commands -->
       <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char=" " attribute="Normal Text" context="#stay"/>
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
@@ -47,36 +323,34 @@
       <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <StringDetect String="\(" attribute="Sectioning Math" context="SectioningMathMode" />
+        <Detect2Chars char="\" char1="(" attribute="Sectioning Math" context="SectioningMathMode" />
         <DetectChar char="\" attribute="Sectioning Macro" context="SectioningContrSeq"/>
         <DetectChar char="$" attribute="Sectioning Math" context="SectioningMathMode" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Sectioning Macro" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Sectioning Macro" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />
       </context>
       <context name="SectioningMathMode" attribute="Sectioning Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />
         <DetectChar char="$" attribute="Sectioning Math" context="#pop" />
         <Detect2Chars char="\" char1=")" attribute="Sectioning Math" context="#pop" />
         <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
         <DetectChar char="\" attribute="Sectioning Macro Mathmode" context="SectioningMathContrSeq"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="SectioningMathContrSeq" attribute="Sectioning Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+\*?" attribute="Sectioning Macro Mathmode" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Sectioning Macro Mathmode" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Sectioning Macro Mathmode" context="#pop" />
       </context>
 
       <!-- LaTeX Footnote commands -->
       <context name="Footnoting" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char=" " attribute="Normal Text" context="#stay"/>
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
@@ -84,54 +358,39 @@
       <context name="FootnotingInside" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <StringDetect String="\(" attribute="Math" context="FootnotingMathMode" />
-        <DetectChar char="$" attribute="Math" context="FootnotingMathMode" />
-        <IncludeRules context="Normal Text" />
-      </context>
-      <context name="FootnotingMathMode" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <IncludeRules context="MathMode" />
+        <IncludeRules context="Normal Text"/>
       </context>
 
       <!-- LaTeX commands \newcommand and \renewcommand -->
       <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-          <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LabelParameter"/>
-          <RegExpr String="\s*(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <RegExpr String="(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
         <DetectChar char="}" attribute="Error" context="#pop"/>
       </context>
 
       <!-- LaTeX command \def -->
       <context name="DefCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="CommandParameterStart"/>
+        <DetectSpaces/>
+        <RegExpr String="\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="#pop!CommandParameter"/>
         <DetectChar char="}" attribute="Error" context="#pop"/>
       </context>
 
       <!-- parse command argument -->
-      <context name="CommandParameterStart" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
-        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
-      </context>
       <context name="CommandParameter" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
+        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
       </context>
 
       <!-- LaTeX command in text mode -->
       <context name="ContrSeq" attribute="Macro" lineEndContext="#pop">
-        <StringDetect String="verb*" attribute="Macro" context="Verb"/>
-        <RegExpr String="(Verb|verb)(?=[^a-zA-Z])" attribute="Macro" context="Verb"/>
-        <RegExpr String="(lstinline)(?=[^a-zA-Z])" attribute="Macro" context="Lstinline"/>
-        <RegExpr String="mint(?=[^a-zA-Z])" attribute="Macro" context="MintParam"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z@]+(\+?|\*{0,3})" attribute="Macro" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Macro" context="#pop" />
+        <keyword String="Verb" attribute="Macro" context="Verb"/>
+        <keyword String="Lstinline" attribute="Macro" context="Lstinline"/>
+        <keyword String="MintParam" attribute="Macro" context="MintParam"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z@]+(\+?|\*{0,3})|." attribute="Macro" context="#pop" />
       </context>
 
       <!-- \mint command with parameter-->
@@ -147,92 +406,99 @@
       </context>
       <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
       </context>
 
       <!-- lstinline command, different from verb as it takes options -->
       <context name="Lstinline" attribute="Verbatim" lineEndContext="#pop#pop" >
-        <RegExpr String="\s*\[\s*" attribute="Normal Text" context="FancyLabelOption"/>
-        <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LstinlineParameter"/>
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="{" attribute="Normal Text" context="LstinlineParameter"/>
         <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="LstinlineEnd" />
       </context>
       <context name="LstinlineEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
+        <!-- TODO DetectChar segfault -->
         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
       </context>
       <context name="LstinlineParameter" attribute="Verbatim" lineEndContext="#stay">
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop#pop#pop"/>
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
       </context>
 
       <!-- label -->
       <context name="Label" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LabelParameter"/>
-        <RegExpr String="\s*\[\s*" attribute="Normal Text" context="LabelOption"/>
-        <RegExpr String="[^\[\{]+" attribute="Error" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="LabelOption"/>
       </context>
 
       <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <DetectChar char="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\]\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop"/>
       </context>
 
-      <context name="LabelParameter" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop#pop"/>
+      <context name="LabelParameter" attribute="Reference" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
       </context>
 
       <!-- labels from biblatex commands -->
       <context name="FancyLabel" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-              <RegExpr String="\s*\{\s*" attribute="Normal Text" context="FancyLabelParameter"/>
-              <RegExpr String="\s*\[\s*" attribute="Normal Text" context="FancyLabelOption"/>
-              <RegExpr String="\s*\(\s*" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="(" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
       </context>
 
       <context name="FancyLabelParameter" attribute="Environment" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <DetectChar char="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
       </context>
 
       <context name="FancyLabelOption" attribute="Option Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\]\s*" attribute="Normal Text" context="#pop"/>
+        <IncludeRules context="LabelOption"/>
       </context>
 
       <context name="FancyLabelRoundBrackets" attribute="Normal Text" lineEndContext="#stay">
-              <StringDetect String="\(" attribute="Math" context="MathMode" />
-              <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-              <DetectChar char="$" attribute="Math" context="MathMode" />
-              <DetectChar char="%" attribute="Comment" context="Comment"/>
-              <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-              <RegExpr String="\s*\)\s*" attribute="Normal Text" context="#pop"/>
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char=")" attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- Special commands -->
       <context name="SpecialCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-              <RegExpr String="\s*\{\s*" attribute="Normal Text" context="SpecialCommandParameterOption"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
       </context>
 
       <context name="SpecialCommandParameterOption" attribute="Option Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
       </context>
 
       <!-- end of an environment -->
@@ -242,306 +508,474 @@
       </context>
 
       <context name="EndEnvironment" attribute="Environment" lineEndContext="#stay">
-        <RegExpr String="[a-zA-Z]" attribute="Environment" context="EndLatexEnv"/>
-        <RegExpr String="\s+" attribute="Error" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Error" context="#pop"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnvEnd"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop"/>
       </context>
 
-       <context name="EndLatexEnv" attribute="Environment" lineEndContext="#stay">
+      <context name="LatexEnvEnd" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" endRegion="block" context="#pop#pop#pop"/>
-        <RegExpr String="[a-zA-Z]+(\*)?" attribute="Environment" context="#stay"/>
-        <RegExpr String="\s+" attribute="Error" context="#stay"/>
-        <RegExpr String="[a-zA-Z]" attribute="Error" context="#pop#pop#pop"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
 
       <!-- start of an environment -->
       <context name="FindBeginEnvironment" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
         <DetectChar char="{" attribute="Normal Text" context="BeginEnvironment"/>
-        <RegExpr String="\S" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="." attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- filter the environment name and check the type -->
       <context name="BeginEnvironment" attribute="Environment" lineEndContext="#stay">
-        <WordDetect String="lstlisting" attribute="Environment" context="ListingsEnvParam"/>
-        <WordDetect String="minted" attribute="Environment" context="MintedEnvParam"/>
-        <RegExpr String="((B|L)?Verbatim)" attribute="Environment" context="VerbatimEnvParam"/>
-        <RegExpr String="(verbatim|boxedverbatim)" attribute="Environment" context="VerbatimEnv"/>
-        <RegExpr String="comment" attribute="Environment" context="CommentEnv"/>
-        <RegExpr String="(alignat|xalignat|xxalignat)" attribute="Environment" context="MathEnvParam"/>
-        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|IEEEeqnarray|IEEEeqnarraybox|smallmatrix|pmatrix|bmatrix|Bmatrix|vmatrix|Vmatrix|cases)" attribute="Environment" context="MathEnv"/>
-        <RegExpr String="(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)" attribute="Environment" context="TabEnv"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" context="LatexEnv"/>
-        <RegExpr String="\s+" attribute="Error" context="#pop"/>
-        <RegExpr String="[^a-zA-Z\xd7]" attribute="Error" context="#pop"/>
+        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
+        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
+        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
+        <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathEnvWithParam"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathEnv"/>
+        <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
 
       <!-- environment type 1: normal -->
-      <context name="LatexEnv" attribute="Environment" lineEndContext="#stay">
+      <context name="LatexEnv" attribute="Error" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
-        <RegExpr String="[a-zA-Z]+" attribute="Environment" context="#stay"/>
-        <RegExpr String="\s+" attribute="Error" context="#stay"/>
-       <IncludeRules context="EnvCommon" />
       </context>
 
+      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay">
+        <WordDetect String="verbatim*" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="verbatim" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="boxedverbatim*" attribute="Environment" context="VerbatimEnv2"/>
+        <WordDetect String="boxedverbatim" attribute="Environment" context="VerbatimEnv2"/>
+
+        <WordDetect String="Verbatim*" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="Verbatim" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="BVerbatim*" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="BVerbatim" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="LVerbatim*" attribute="Environment" context="VerbatimEnv5"/>
+        <WordDetect String="LVerbatim" attribute="Environment" context="VerbatimEnv5"/>
+      </context>
+
       <!-- environment type 2: verbatim without parameter -->
-      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
-       </context>
+      <context name="VerbatimEnv1" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim1"/>
+      </context>
+      <context name="Verbatim1" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
 
+      <context name="VerbatimEnv2" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim2"/>
+      </context>
+      <context name="Verbatim2" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{boxedverbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
       <!-- environment type 3: verbatim with optional parameter -->
-      <context name="VerbatimEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <DetectChar char="]" attribute="Normal Text" context="Verbatim"/>
+      <context name="VerbatimEnv3" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv3Param"/>
       </context>
+      <context name="VerbatimEnv3Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim3">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim3"/>
+      </context>
+      <context name="Verbatim3" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{Verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
 
+      <context name="VerbatimEnv4" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv4Param"/>
+      </context>
+      <context name="VerbatimEnv4Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim4">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim4"/>
+      </context>
+      <context name="Verbatim4" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{BVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <context name="VerbatimEnv5" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv5Param"/>
+      </context>
+      <context name="VerbatimEnv5Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim5">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim5"/>
+      </context>
+      <context name="Verbatim5" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{LVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
       <!-- environment type 4: listings environment with optional parameter and HL switching-->
-      <context name="ListingsEnvParam" attribute="Normal Text" fallthrough="true" fallthroughContext="Verbatim" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <RegExpr String="language\s*=\s*(?=[^,]+)" minimal="true" attribute="Normal Text" context="HighlightningSelector"/>
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <DetectChar char="]" attribute="Normal Text" context="Verbatim"/>
+      <context name="ListingsEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!ListingsEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
+      <context name="ListingsEnvParam" attribute="Normal Text" lineEndContext="#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!ListingsEnvParamInside"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="ListingsEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectIdentifier/>
+        <RegExpr String="\s*language\s*=\s*(?=[^],])" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="]" attribute="Normal Text" context="ListingsEnvParamEnd"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="ListingsEnvParamEnd" attribute="Normal Text" lineEndContext="#pop#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
 
       <!-- environment type 5: minted environment with optional and HL switching -->
+      <context name="MintedEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!MintedEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
       <context name="MintedEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <Detect2Chars char="}" char1="{" attribute="Normal Text" context="HighlightningSelector"/>
-        <Detect2Chars char="]" char1="{" attribute="Normal Text" context="HighlightningSelector"/>
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!MintedEnvParamInside"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
       </context>
+      <context name="MintedEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop!MintedEnvLang"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="MintedEnvLang" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
 
+      <!-- parse verbatim text for lstinline and minted -->
+      <context name="UnknownHighlighting" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{(lstlisting|minted)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>
+      </context>
+      <context name="UnknownHighlightingEnd" attribute="Environment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <DetectIdentifier/>
+      </context>
+
+
       <!-- Selector for different highlightning schemes, in case the language is not implemented we pop and thus fallback to verbatim -->
-      <context name="HighlightningSelector" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect String="C++" insensitive="true" context="HighlightningBeginC++"/>
-        <WordDetect String="Python" insensitive="true" context="HighlightningBeginPython"/>
-        <RegExpr String=".*(?=\}|\])" context="#pop"/>
+      <context name="HighlightingSelector" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect String="C++" insensitive="true" context="HighlightingBeginC++"/>
+        <WordDetect String="Python" insensitive="true" context="HighlightingBeginPython"/>
+        <DetectChar char="}" context="#pop!UnknownHighlighting"/>
+        <DetectChar char="]" context="#pop!UnknownHighlighting"/>
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningCommon" attribute="Normal Text" lineEndContext="#stay">
+      <context name="HighlightingCommon" attribute="Normal Text" lineEndContext="#stay">
         <RegExpr String="\\end\s*\{(lstlisting|minted)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>
       </context>
 
-      <context name="HighlightningBeginC++" attribute="Normal Text" lineEndContext="#stay">
-       <!-- Eat the trailing characters including } or ] after the language specification -->
-        <RegExpr String=".*(\}|\])" context="HighlightningC++"/>
+      <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingC++"/>
+        <DetectChar char="]" context="HighlightingC++"/>
+        <!-- Eat the trailing characters including } or ] after the language specification -->
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningC++" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightningCommon"/>
+      <context name="HighlightingC++" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##C++" includeAttrib="true"/>
       </context>
 
-      <context name="HighlightningBeginPython" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String=".*(\}|\])" context="HighlightningPython"/>
+      <context name="HighlightingBeginPython" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingPython"/>
+        <DetectChar char="]" context="HighlightingPython"/>
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningPython" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightningCommon"/>
+      <context name="HighlightingPython" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##Python"/>
       </context>
 
-      <!-- parse verbatim text -->
-      <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim|minted)\*?\})" attribute="Structure"  context="VerbFindEnd"/>
-      </context>
-
       <!-- end of verbatim environment -->
       <context name="VerbFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim|minted)\*?" attribute="Environment" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="VerbatimEnv" attribute="Environment"/>
       </context>
 
-      <!-- begin comment environment  -->
-      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
+      <!-- begin comment environment -->
+      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="BlockComment"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
        </context>
 
       <!-- parse comment text -->
       <context name="BlockComment" attribute="Comment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
         <RegExpr String="\\end(?=\s*\{comment\*?\})" attribute="Structure" context="CommFindEnd"/>
       </context>
 
       <!-- end of comment environment -->
       <context name="CommFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="comment\*?" attribute="Environment" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="CommentEnv" attribute="Environment"/>
       </context>
 
       <!-- environment type 4: math environment with its own mathmode -->
       <context name="MathEnv" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
 
       <!-- environment type 5: math environment with its own mathmode and parameter -->
-      <context name="MathEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\}\{[^\}]*\}" attribute="Normal Text" context="MathModeEnv"/>
-        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+      <context name="MathEnvWithParam" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathEnvWithParamInside"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
-
-      <!-- environment common -->
-      <context name="EnvCommon" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\*(?=\})" attribute="Environment" context="#stay"/>
-        <RegExpr String="\*[^\}]*" attribute="Error" context="#pop#pop#pop"/>
-        <RegExpr String="[^a-zA-Z\xd7][^\}]*" attribute="Error" context="#pop#pop#pop"/>
+      <context name="MathEnvWithParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvParamInside"/>
       </context>
+      <context name="MathEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!MathModeEnv"/>
+      </context>
 
       <!-- parse math environment -->
       <context name="MathModeEnv" attribute="Math" lineEndContext="#stay">
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindBeginEnvironment" beginRegion="block"/>
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="MathFindEnd" endRegion="block"/>
-        <StringDetect String="\(" attribute="Error" context="#stay" />
-        <StringDetect String="\[" attribute="Error" context="#stay" />
-        <StringDetect String="\)" attribute="Error" context="#stay" />
-        <StringDetect String="\]" attribute="Error" context="#stay" />
-        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Macro Mathmode" context="MathModeText" />
-        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeEnv" lookAhead="true"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
+      <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironmentInMathMode" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd" endRegion="block"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>
+        <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="[" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#pop"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
 
+      <!-- start of an environment in math mode -->
+      <context name="FindBeginEnvironmentInMathMode" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="BeginEnvironmentInMathMode"/>
+        <RegExpr String="." attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- filter the environment name and check the type in math mode -->
+      <context name="BeginEnvironmentInMathMode" attribute="Environment" lineEndContext="#stay">
+        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
+        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
+        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
+        <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
+        <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <!-- keywords in MathEnvParam and MathEnv. Do not use keyword to avoid autocomplete -->
+        <RegExpr String="(equation|IEEEeqnarray(box)?|([BVvbp]|small)matrix|(fl)?align|x{0,2}alignat|cases|displaymath|gather|math|multline|(sub)?eqnarray)(?=[^a-zA-Z]|$)\*?" attribute="Error" context="#pop"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+
       <!-- end of math environment -->
       <context name="MathFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align(at)?|flalign|xalignat|xxalignat|IEEEeqnarray|IEEEeqnarraybox|smallmatrix|pmatrix|bmatrix|Bmatrix|vmatrix|Vmatrix|cases)\*?" attribute="Environment" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop"  endRegion="block"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathFindEndInside"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathFindEndInside"/>
+        <RegExpr String="&envname;" attribute="Environment" context="NoMathFindEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
+      <context name="MathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="NoMathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
 
-          <!-- environment type 9: tabular -->
+      <!-- environment type 9: tabular -->
       <context name="TabEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
         <DetectChar char="}" attribute="Normal Text" context="Tab"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
-       </context>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
 
       <!-- parse tabular text -->
       <context name="Tab" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="&amp;" attribute="Ampersand" context="#stay"/>
-        <StringDetect String="@{" attribute="Column Separator" context="Column Separator"/>
-        <RegExpr String="\\end(?=\s*\{(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?\})" attribute="Structure"  context="TabFindEnd"/>
+        <Detect2Chars char="@" char1="{" attribute="Column Separator" context="Column Separator"/>
+        <RegExpr String="\\end\b" attribute="Structure" context="TabFindEnd"/> <!-- endEnv -->
         <IncludeRules context="Normal Text" />
       </context>
 
       <context name="Column Separator" attribute="Column Separator" lineEndContext="#stay">
-              <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
-              <DetectChar char="}" attribute="Column Separator" context="#pop"/>
-              <RegExpr String="." attribute="Column Separator"  context="#stay"/>
-<!--          the last regexp is very stupid. Suggestions are welcome! Fallthrough did not help-->
+        <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
+        <DetectChar char="}" attribute="Column Separator" context="#pop"/>
       </context>
 
       <!-- end of tabular environment -->
       <context name="TabFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?" attribute="Environment" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="TabEnv" attribute="Environment" context="#stay"/>
       </context>
 
-      <!-- math mode: starting with $ or \( -->
+      <!-- math mode: starting with $ -->
+      <context name="MathModeTex" attribute="Math" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!MathMode">
+        <DetectChar char="$" attribute="Math" context="#pop!MathModeDisplay" beginRegion="mathMode"/>
+      </context>
       <context name="MathMode" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+        <DetectChar char="$" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
       <!-- math mode: starting with $$ -->
       <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Math" context="#pop" endRegion="mathMode" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+        <Detect2Chars char="$" char1="$" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
+      <!-- math mode: starting with \( -->
+      <context name="MathModeLatex" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
       <!-- math mode: starting with \[ -->
-      <context name="MathModeEquation" attribute="Math" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode" />
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+      <context name="MathModeLatexEquation" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
-      <!-- math mode: \ensuremath{...} !-->
+      <!-- math mode: \ensuremath{...} -->
       <context name="MathModeEnsure" attribute="Math" lineEndContext="#stay">
-              <DetectChar char="{" attribute="Math" context="MathModeEnsure" />
-              <DetectChar char="}" attribute="Math" context="#pop" />
-              <IncludeRules context="MathModeCommon" />
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Math" context="#pop!MathModeEnsureInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
+      <context name="MathModeEnsureInside" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Math" context="MathModeEnsureInside" />
+        <DetectChar char="}" attribute="Math" context="#pop" />
+        <IncludeRules context="MathModeCommon"/>
+      </context>
 
       <!-- math mode common -->
       <context name="MathModeCommon" attribute="Math" lineEndContext="#stay">
-        <RegExpr String="\\(begin|end)\s*\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat|IEEEeqnarray)\*?\}" attribute="Error" context="#stay"/>
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Macro Mathmode" context="#stay" beginRegion="block" />
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Macro Mathmode" context="#stay" endRegion="block" />
-        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Macro Mathmode" context="MathModeText" />
-        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeCommon" lookAhead="true"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
+      <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd" endRegion="block"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
+      <context name="MathEnvironment" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathEnvironmentEnd" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentEndInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>
+      </context>
 
       <!-- command in mathmode -->
       <context name="MathContrSeq" attribute="Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+\*?" attribute="Macro Mathmode" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Macro Mathmode" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Macro Mathmode" context="#pop" />
       </context>
 
       <!-- text in mathmode -->
-      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >
-         <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="MathContrSeq">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
       </context>
+      <context name="MathModeTextInside" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      </context>
 
       <context name="MathModeTextParameterStart" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\$.*\$" minimal="true" attribute="Math" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RangeDetect char="$" char1="$" attribute="Math" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextInside" lookAhead="true"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
       </context>
 
-      <context name="MathModeTextParameter" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      <!-- iffalse aka multiline comment -->
+      <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
+        <DetectChar char="\" attribute="Comment" context="BackslashMultilineComment" lookAhead="true"/>
       </context>
-
-     <!--    iffalse aka multiline comment    -->
-        <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
-          <WordDetect String="\fi" attribute="Comment" context="#pop"/>
-          <WordDetect String="\else" attribute="Comment" context="#pop"/>
-        </context>
+      <context name="BackslashMultilineComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="iffalseend" attribute="Comment" context="#pop#pop"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
 
      <!-- comment -->
+      <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-              <RegExpr String="(FIXME|TODO):?" attribute="Alert" context="#stay"/>
-        <StringDetect String="\KileResetHL" attribute="Comment" context="Normal Text"/>
-        <StringDetect String="\KateResetHL" attribute="Comment" context="Normal Text"/>
+        <DetectSpaces/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
       </context>
+      <context name="BackslashComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="ResetHL" attribute="Comment" context="#pop!Normal Text"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
     </contexts>
 
     <itemDatas>
@@ -556,12 +990,12 @@
       <itemData name="Builtin Macro" defStyleNum="dsBuiltIn" spellChecking="false"/>
       <itemData name="Macro Mathmode" defStyleNum="dsSpecialChar" spellChecking="false"/>
       <itemData name="Environment" defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Reference" defStyleNum="dsExtension" spellChecking="false"/>
       <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>
       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
       <itemData name="Bullet" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Ampersand" defStyleNum="dsOperator" bold="1" spellChecking="false"/>
       <itemData name="Column Separator" defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Alert" defStyleNum="dsAlert" spellChecking="false"/>
       <!-- in section headers -->
       <itemData name="Sectioning Text" defStyleNum="dsNormal" bold="1"/>
       <itemData name="Sectioning Macro" defStyleNum="dsFunction" bold="1" spellChecking="false"/>
@@ -571,7 +1005,7 @@
   </highlighting>
 
   <general>
-    <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+    <keywords weakDeliminator="\*" additionalDeliminator="$" wordWrapDeliminator=",{}[]"/>
     <comments>
       <comment name="singleLine" start="%" />
     </comments>
diff --git a/syntax/literate-haskell.xml b/syntax/literate-haskell.xml
--- a/syntax/literate-haskell.xml
+++ b/syntax/literate-haskell.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Haskell" version="4" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
+<language name="Literate Haskell" version="5" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
   <highlighting>
   <contexts>
     <context attribute="Text" lineEndContext="#stay" name="text">
diff --git a/syntax/lua.xml b/syntax/lua.xml
--- a/syntax/lua.xml
+++ b/syntax/lua.xml
@@ -8,6 +8,11 @@
 
     CHANGES
 
+    [ Version 1.05 (2019-06-03) by Jonathan Poelen ]
+
+    - warn and coroutine.kill (Lua 5.4)
+    - end of a function as Keyword rather than Control
+
     [ Version 1.04 (2018-04-30) by Jonathan Poelen ]
 
     - based on Lua 5.3
@@ -43,7 +48,7 @@
     - NOTE, FIXME, TODO alerts added on comments
     - improved highlighting
 -->
-<language name="Lua" version="5" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+<language name="Lua" version="7" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
   <highlighting>
     <list name="keywords">
       <item>and</item>
@@ -74,6 +79,22 @@
       <item>while</item>
     </list>
 
+    <list name="startcontrol">
+      <item>do</item>
+      <item>if</item>
+      <item>repeat</item>
+    </list>
+
+    <list name="elsecontrol">
+      <item>else</item>
+      <item>elseif</item>
+    </list>
+
+    <list name="endcontrol">
+      <item>end</item>
+      <item>until</item>
+    </list>
+
     <list name="basevar">
       <item>_PROMPT</item>
       <item>_PROMPT2</item>
@@ -121,12 +142,14 @@
       <item>tonumber</item>
       <item>tostring</item>
       <item>type</item>
+      <item>warn</item>
       <item>xpcall</item>
 
       <!-- Coroutine manipulation -->
       <item>coroutine.create</item>
       <item>coroutine.isyieldable</item>
       <item>coroutine.resume</item>
+      <item>coroutine.kill</item>
       <item>coroutine.running</item>
       <item>coroutine.status</item>
       <item>coroutine.wrap</item>
@@ -453,13 +476,9 @@
         <keyword      attribute="Metamethod" context="#stay"       String="metamethod"/>
         <keyword      attribute="BVar"     context="#stay"         String="basevar"/>
 
-        <WordDetect   attribute="Keyword"  context="#stay" beginRegion="chunk" String="function" />
+        <WordDetect   attribute="Keyword"  context="Function" beginRegion="chunk" String="function" />
         <keyword      attribute="Keyword"  context="#stay" String="keywords" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="else" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elseif" />
-        <WordDetect   attribute="Control"  context="#stay" beginRegion="chunk" String="do" />
-        <WordDetect   attribute="Control"  context="#stay" beginRegion="chunk" String="if" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   String="end" />
+        <keyword      attribute="Control"  context="StartControl" beginRegion="chunk" String="startcontrol" />
         <keyword      attribute="Control"  context="#stay" String="control" />
 
         <DetectChar   attribute="Symbols"  context="#stay" beginRegion="table" char="{" />
@@ -479,6 +498,17 @@
         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />
       </context>
 
+      <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">
+        <keyword      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elsecontrol" />
+        <keyword      attribute="Control"  context="#pop"  endRegion="chunk"   String="endcontrol" />
+        <IncludeRules context="Normal" />
+      </context>
+
+      <context name="Function" attribute="Normal Text"      lineEndContext="#stay">
+        <WordDetect   attribute="Keyword"  context="#pop"  endRegion="chunk"   String="end" />
+        <IncludeRules context="Normal" />
+      </context>
+
       <context name="String_single" attribute="Strings"     lineEndContext="Error">
         <DetectChar   attribute="Strings"  context="Special_char"  char="\" lookAhead="true"/>
         <DetectChar   attribute="Strings"  context="#pop"  char="'"/>
@@ -536,3 +566,4 @@
     <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'&quot;"/>
   </general>
 </language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/syntax/markdown.xml b/syntax/markdown.xml
--- a/syntax/markdown.xml
+++ b/syntax/markdown.xml
@@ -6,6 +6,7 @@
     Dual-Licensed under both GPL and BSD licenses.
 
     Extended 2009 Claes Holmerson. http://github.com/claes/kate-markdown/
+    Extended 2019 Nibaldo González S. <nibgonz@gmail.com> (changes under MIT license).
 -->
 <!--
     The [^\s]{1} is in the regex to avoid interfering with bullet list which
@@ -15,134 +16,623 @@
     Match space or newline, followed by "*", followed by one non-space,
     followed by anything non-asterisk, followed by "*", followed by
     space, end-of-sentence punctuation, or the end of the line.
+
+    TODO: We can be more specific and highlight text combinations in bold,
+          italic and strikethrough.
+          Example: **bold text and _italic and bold text_**
+                   __bold and ~~strikeout and bold~~__
 -->
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-<!ENTITY strongemphasisregex "(\s|^)[\*_]{3}[^\*_]+[\*_]{3}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY strongregex "(\s|^)[\*_]{2}[^\s]{1}[^\*_]+[\*_]{2}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY emphasisregex "(\s|^)[\*_]{1}[^\s]{1}[^\*_]+[\*_]{1}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY reflinkregex '\[[^\]\^]+\]\s*\[[^\]]*\]\s*(\s+\"[^\"]*\"){0,1}'>
-<!ENTITY reflinktargetregex '\[[^\]\^]+\]\:\s+[^\s]+(\s+\"[^\"]*\"){0,1}'>
-<!ENTITY footnoteregex "\[\^[^\]]+\]">
-<!ENTITY inlinelinkregex "\[[^\]\^]+\]\s*\([^\(]*\)">
-<!ENTITY inlineimageregex "\!\[[^\]\^]+\]\([^\(]*\)">
-<!ENTITY refimageregex "\!\[[^\]\^]+\]\[[^\[]*\]">
-<!ENTITY autolinkregex '&lt;(https?|ftp):[^\"&gt;\s]+&gt;'>
-<!ENTITY mailtolinkregex "&lt;(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)&gt;">
-<!ENTITY rulerregex "\s*([\*\-_]\s?){3,}\s*">
+<!-- NOTE: To correctly detect bold, italic or strike out text, use minimal="true" in RegExpr rules -->
+<!ENTITY contentregex_ast "(?:(?:[^\*\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\*\s\\]|\\\S)">
+<!ENTITY contentregex_und "(?:(?:[^_\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^_\s\\]|\\\S)">
+<!-- strong + emphasis text -->
+<!ENTITY strongemphasisregex_ast "\*{3,5}&contentregex_ast;\*{3}">
+<!ENTITY strongemphasisregex_und "\b_{3,5}&contentregex_und;_{3}">
+<!ENTITY strongemphasisregex_ast_und "\*{2,5}(?:(?:_|_{3}|_{5})&contentregex_und;_+|(?:_{2}|_{4})&contentregex_und;_)\*{2}">
+<!ENTITY strongemphasisregex_ast_und2 "\*_{2,5}&contentregex_und;_{2,5}\*(?!\*)">
+<!ENTITY strongemphasisregex_und_ast "\b_{2,5}(?:(?:\*|\*{3}|\*{5})&contentregex_ast;\*+|(?:\*{2}|\*{4})&contentregex_ast;\*)_{2}">
+<!ENTITY strongemphasisregex_und_ast2 "\b_(?:\*{2,5}&contentregex_ast;\*{2,5}_{0,4}|_{0,4}\*{2,5}&contentregex_ast;\*{2,5})_\b">
+<!-- strong text -->
+<!ENTITY strongregex_ast "\*{2}(?:&contentregex_ast;\*{2}|\*{1,3}&contentregex_ast;\*{2}(?!\*))">
+<!ENTITY strongregex_und "\b_{2}(?:&contentregex_und;_{2}|_{1,3}&contentregex_und;_{2}(?!_))">
+<!-- emphasis text -->
+<!ENTITY emphasisregex_ast "\*(?:&contentregex_ast;\*|\*{1,4}&contentregex_ast;\*(?!\*))">
+<!ENTITY emphasisregex_und "\b_(?:&contentregex_und;_+|_{1,4}&contentregex_und;_)\b">
+<!-- links -->
+<!ENTITY startlink "(?:https?|ftp)\://">
+<!ENTITY link "&startlink;[^&quot;&gt;\s]+">
+<!-- link in normal text -->
+<!ENTITY implicitlink "\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))">
+<!-- references: [name], [name][id], [name][id] "title", [name](https://example.com) -->
+<!ENTITY refchar "(?:\\.|[^\]\\])">
+<!ENTITY refname "(?:\\.|[^\s\[\]\\])&refchar;*">
+<!ENTITY reflinkid "\s*(?:&refname;)?">
+<!ENTITY reflinkidregex "(?:\s?\[&reflinkid;\]|\((?:\\.|[^\(\)\\])*\))">
+<!ENTITY reflinkregex "\[(?:(?=\s*&refname;\])|\s+(?=\]))">
+<!-- target ref.: [id]: https://example.com "Title" -->
+<!ENTITY reflinktargetregex '\[\s*(?:&refname;|\s)\]\:\s+(?=\S)'>
+<!-- footnote: [^name] -->
+<!ENTITY footnoteregex "\[\^&refchar;+\]">
+<!-- image: ![title](https://example.com), ![title][id] -->
+<!ENTITY startinlineimage "\!\[(?:\\.|[^\[\]\\])*\]\(">
+<!ENTITY endinlineimage "(?:\\.|[^\(\)\\])*\)">
+<!ENTITY inlineimageregex "&startinlineimage;(?=&endinlineimage;)">
+<!ENTITY refimageregex "\!\[(?:\\.|[^\[\]\\])*\]\[&reflinkid;\]">
+<!-- autolink & email: <https://example.com>, <example@kde.org>, <mailto:example@kde.org> -->
+<!ENTITY autolinkregex '&lt;&link;&gt;'>
+<!ENTITY email "[\-\.\w]+\@[\-a-z0-9]+(?:\.[\-a-z0-9]+)*\.[a-z]+">
+<!ENTITY mailtolinkregex "&lt;(?:mailto:)?(?=&email;&gt;)">
+<!-- horizontal rule: avoid conflicts with strong-emphasis text, lists and code blocks -->
+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">
 <!-- two spaces at end of line generates linebreak -->
 <!ENTITY linebreakregex "  $">
-<!ENTITY strikeoutregex "[~]{2}[^~].*[^~][~]{2}">
-<!-- pandoc style -->
+<!-- strikethrough text, pandoc style -->
+<!ENTITY strikeoutregex "[~]{2}[^~](?:.*[^~])?[~]{2}">
+<!-- start of fenced code block -->
+<!ENTITY fcode "(`{3,}|~{3,})">
+<!-- end of line & empty line -->
+<!ENTITY end "\s*$">
+<!ENTITY emptyline "^\s*$">
+<!-- indented code block -->
+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">
+<!-- bullet of list -->
+<!ENTITY listbullet "[\*\+\-]">
+<!-- metadata key & name of html tag -->
+<!ENTITY metadatakey "[a-zA-Z0-9][\w\-\s]*\:">
+<!ENTITY htmlname "[A-Za-z_\:][\w\.\:\-]*">
+<!-- comment -->
+<!ENTITY startcomment "&lt;!--">
+<!ENTITY endcomment "--&gt;">
+<!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
-<language name="Markdown" version="3" kateversion="3.8" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+
+<language name="Markdown" version="11" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
-        <DetectChar context="blockquote" char="&gt;" column="0"/>
-        <RegExpr attribute="h1" String="^#\s.*[#]?$"/>
-        <RegExpr attribute="h2" String="^##\s.*[#]?$"/>
-        <RegExpr attribute="h3" String="^###\s.*[#]?$"/>
-        <RegExpr attribute="h4" String="^####\s.*[#]?$"/>
-        <RegExpr attribute="h5" String="^#####\s.*[#]?$"/>
-        <RegExpr attribute="h6" String="^######\s.*[#]?$"/>
-        <RegExpr attribute="ruler" String="&rulerregex;"/>
-        <RegExpr attribute="strong" String="&strongregex;"/>
-        <RegExpr attribute="emphasis" String="&emphasisregex;"/>
-        <RegExpr attribute="strongemphasis" String="&strongemphasisregex;"/>
-        <RegExpr attribute="code" String="^([\s]{4,}|\t+).*$"/>
-        <RegExpr context="bullet" String="^[\*\+\-]\s"/>
-        <RegExpr context="numlist" String="^[\d]+\.\s"/>
-        <RegExpr attribute="meta" String="^(Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt):(.*)+$"/>
-        <IncludeRules context="inc"/>
+      <!-- Start of the Markdown document: find metadata or code block -->
+      <context name="Start Document" attribute="Normal Text" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthrough="true" fallthroughContext="Normal Text">
+        <!-- Some titles: (Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt) -->
+        <!-- Metadata: Markdown format -->
+        <RegExpr attribute="Metadata" context="metadata" String="\-{3}&end;" column="0" beginRegion="metadata"/>
+        <!-- Metadata: MultiMarkdown format -->
+        <RegExpr attribute="Metadata Title" context="metadata-mm-value" String="^&metadatakey;(?=\s|$)" column="0"/>
+        <!-- Code Block -->
+        <RegExpr attribute="Code" context="find-code-block-start" String="^&indentedcodeblock;" column="0"/>
       </context>
-      <context attribute="blockquote" lineEndContext="#stay" lineEmptyContext="#pop" name="blockquote">
-        <RegExpr attribute="bq-strong" String="&strongregex;"/>
-        <RegExpr attribute="bq-emphasis" String="&emphasisregex;"/>
+      <context name="metadata" attribute="Metadata" lineEndContext="#stay">
+        <StringDetect attribute="Metadata" context="#pop!Normal Text" String="---" column="0" endRegion="metadata"/>
+        <StringDetect attribute="Metadata" context="#pop!Normal Text" String="..." column="0" endRegion="metadata"/>
+        <RegExpr attribute="Metadata Title" String="^&metadatakey;(?=\s|$)" column="0"/>
+      </context>
+      <context name="metadata-mm-value" attribute="Metadata" lineEndContext="#pop!metadata-mm"/>
+      <context name="metadata-mm" attribute="Metadata" lineEndContext="#stay" lineEmptyContext="#pop!Normal Text" fallthrough="true" fallthroughContext="#pop!Normal Text">
+        <!-- Find Metadata key or value -->
+        <RegExpr attribute="Metadata Title" context="#pop!metadata-mm-value" String="^&metadatakey;(?=\s|$)" column="0"/>
+        <RegExpr attribute="Metadata" context="#pop!metadata-mm-value" String="^(?:\s{4}|\t)" column="0"/>
+      </context>
+      <context name="find-code-block-start" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthrough="true" fallthroughContext="#pop!Normal Text">
+        <IncludeRules context="find-code-block"/>
+      </context>
+
+      <!-- Normal Text Document -->
+      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="find-code-block">
+        <!-- Header -->
+        <DetectChar context="find-header" char="#" column="0" lookAhead="true"/>
+        <RegExpr attribute="Header H1" String="(?:\=\s*){2,}$" firstNonSpace="true"/>
+        <!-- Highlight code block after line only with spaces or comment -->
+        <RegExpr attribute="Normal Text" context="find-code-block" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
+        <!-- Horizontal rules, Blockquotes and Lists.
+             NOTE: The indentation of the lists is captured. -->
+        <RegExpr attribute="Horizontal Rule" context="find-code-block" String="^&rulerregex;" column="0"/>
+        <DetectChar attribute="Blockquote" context="blockquote" char="&gt;" firstNonSpace="true"/>
+        <RegExpr attribute="List" context="list" String="(\s*)&listbullet;(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist" String="(\s*)\d\.(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist2" String="(\s*)\d\d+\.(\s+)" column="0"/>
+        <!-- Find Strong, Emphasis and Strikethrough Text -->
+        <DetectChar context="find-strong-normal" char="*" lookAhead="true"/>
+        <DetectChar context="find-emphasis-normal" char="_" lookAhead="true"/>
+        <RegExpr attribute="Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="bullet" lineEndContext="#stay" lineEmptyContext="#pop" name="bullet">
-        <RegExpr attribute="bl-strong" String="&strongregex;"/>
-        <RegExpr attribute="bl-emphasis" String="&emphasisregex;"/>
+      <!-- Find indented code blocks. These are only allowed after an empty line or on the first line -->
+      <context name="find-code-block" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Code" String="^&indentedcodeblock;" column="0"/>
+        <RegExpr attribute="Normal Text" String="&end;" />
+        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;" column="0" beginRegion="comment"/>
+        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
+      </context>
+
+      <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Header H1" context="#pop" String="^#\s.*[#]?$"/>
+        <RegExpr attribute="Header H2" context="#pop" String="^##\s.*[#]?$"/>
+        <RegExpr attribute="Header H3" context="#pop" String="^###\s.*[#]?$"/>
+        <RegExpr attribute="Header H4" context="#pop" String="^####\s.*[#]?$"/>
+        <RegExpr attribute="Header H5" context="#pop" String="^#####\s.*[#]?$"/>
+        <RegExpr attribute="Header H6" context="#pop" String="^######\s.*[#]?$"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="#"/>
+      </context>
+      <context name="find-strong-normal" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="*"/>
+      </context>
+      <context name="find-emphasis-normal" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="_"/>
+      </context>
+
+      <!-- Blockquote -->
+      <context name="blockquote" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="default-blockquote-1"/>
+        <!-- Find code block -->
+        <RegExpr attribute="Normal Text" context="#pop!find-code-block" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="#pop!find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
+        <IncludeRules context="default-blockquote-2"/>
+      </context>
+      <!-- Blockquote within a list -->
+      <context name="blockquote-list" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="default-blockquote-1"/>
+        <!-- Don't find code block -->
+        <RegExpr attribute="Normal Text" context="#pop" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="#pop!comment" String="&startcomment;" firstNonSpace="true"/>
+        <IncludeRules context="default-blockquote-2"/>
+      </context>
+
+      <context name="default-blockquote-1" attribute="Blockquote: Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Blockquote" char="&gt;" firstNonSpace="true"/>
+        <!-- End with header, horizontal rule or list/numlist -->
+        <RegExpr context="#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s|&rulerregex;)" column="0" lookAhead="true"/>
+      </context>
+      <context name="default-blockquote-2" attribute="Blockquote: Normal Text" lineEndContext="#stay">
+        <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
+        <AnyChar context="find-strong-emphasis-blockquote" String="*_" lookAhead="true"/>
+        <RegExpr attribute="Blockquote: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="Blockquote: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="numlist" lineEndContext="#stay" lineEmptyContext="#pop" name="numlist">
-        <RegExpr attribute="nl-strong" String="&strongregex;"/>
-        <RegExpr attribute="nl-emphasis" String="&emphasisregex;"/>
+      <context name="find-strong-emphasis-blockquote" attribute="Blockquote: Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
+        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <AnyChar attribute="Blockquote: Normal Text" context="#pop" String="*_"/>
+      </context>
+
+      <!-- List and Numbered List -->
+      <!-- NOTE: The indentation of the lists is captured. New paragraphs, code blocks, blockquotes or
+           horizontal rules must have an indentation equal to or greater than the list, to be part of it. -->
+      <!-- * list -->
+      <context name="list" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s+&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s+&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured corresponds to the item list -->
+        <RegExpr context="content-list" String="%1%2\s" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+        <!-- Highlight checkbox at the start of the item (task list) -->
+        <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
+      </context>
+      <!-- 1. numlist (one digit) -->
+      <context name="numlist" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{2,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured -->
+        <RegExpr context="content-list" String="%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+      <!-- 10. numlist (two or more digits) -->
+      <context name="numlist2" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{3,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured -->
+        <RegExpr context="content-list" String="%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+
+      <!-- NOTE: Empty lines, blockquotes and horizontal rules send to contexts "list", "numlist" or "numlist2" (#pop),
+           to check the indentation of the text and determine if the content of the list ends. -->
+      <context name="content-list" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <RegExpr context="#pop" String="&emptyline;" column="0"/>
+        <!-- Blockquote and horzontal rule (check indentation) -->
+        <RegExpr context="#pop" String="^\s*(?:&gt;|&rulerregex;)" column="0" lookAhead="true"/>
+        <!-- End with header or new list/numlist -->
+        <RegExpr context="#pop#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
+        <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
+        <AnyChar context="find-strong-emphasis-list" String="*_" lookAhead="true"/>
+        <RegExpr attribute="List: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="List: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="comment" lineEndContext="#stay" name="comment">
-        <RegExpr String="--&gt;" attribute="comment" context="#pop" endRegion="comment"/>
+      <context name="find-strong-emphasis-list" attribute="List: Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
+        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <AnyChar attribute="List: Normal Text" context="#pop" String="*_"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="php-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
-        <IncludeRules context="phpsource##PHP/PHP"/>
+
+      <!-- Comments -->
+      <context name="comment" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="&endcomment;" endRegion="comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="python-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
-        <IncludeRules context="##Python"/>
+
+      <!-- Fenced Code Blocks -->
+      <context name="find-lang-fenced-code" attribute="Normal Text" lineEndContext="#pop">
+        <!-- Apply syntax highlighting to fenced code blocks for some languages -->
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;"/>
+        <RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|zsh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true"/> <!-- Block comment of Doxygen -->
+        <RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true"/> <!-- Included in the Haskell definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true"/> <!-- Included in the HTML definition. Also apply for TSX. -->
+        <RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl|perl6|p[lm]?6|nqp)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true"/> <!-- Included in the PHP definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context name="code" attribute="Code" lineEndContext="#stay"> <!-- Unknown language -->
+        <RegExpr attribute="Fenced Code" context="#pop" String="%1[~`]*(?=&end;)" firstNonSpace="true" dynamic="true" endRegion="code-block"/>
       </context>
-      <context attribute="common" name="inc" lineEndContext="#stay">
-        <RegExpr attribute="code" String="`[^`]+`"/>
-        <RegExpr context="comment" String="&lt;!--" beginRegion="comment"/>
-        <RegExpr attribute="reflink" String="&reflinkregex;"/>
-        <RegExpr attribute="footnote" String="&footnoteregex;"/>
-        <RegExpr attribute="inlinelink" String="&inlinelinkregex;"/>
-        <RegExpr attribute="reflinktarget" String="&reflinktargetregex;"/>
-        <RegExpr attribute="inlineimage" String="&inlineimageregex;"/>
-        <RegExpr attribute="refimage" String="&refimageregex;"/>
-        <RegExpr attribute="autolink" String="&autolinkregex;"/>
-        <RegExpr attribute="mailtolink" String="&mailtolinkregex;"/>
-        <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/>
-        <RegExpr attribute="linebreak" minimal="true" String="&linebreakregex;"/>
-        <WordDetect attribute="code" context="php-code" String="```php"/>
-        <WordDetect attribute="code" context="python-code" String="```python"/>
-        <StringDetect attribute="code" context="code" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="bash-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Bash" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##CMake" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="c-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##C" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpp-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##C++" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="csharp-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##C#" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="css-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="BlockComment##Doxygen" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="email-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Email" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="go-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Go" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="hamlet-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Hamlet" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="haskell-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Haskell" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="html-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##HTML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="java-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="javascript-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="jsx-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="json-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##JSON" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="find-code-block" name="markdown-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal Text"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Matlab" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mustache-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Mustache/Handlebars (HTML)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="perl-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Perl" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="php-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="phpsource##PHP/PHP" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="python-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Python" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="qml-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##QML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="r-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##reStructuredText" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Ruby" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rust-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Rust" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mysql-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="typescript-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="xml-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##XML" includeAttrib="true"/>
+      </context>
+
+      <!-- Common -->
+      <context name="inc" attribute="Normal Text" lineEndContext="#stay">
+        <!-- Code -->
+        <RegExpr attribute="Code" String="`[^`]+`(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{2}[^`](?:.*[^`])?`{2}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{3}[^`](?:.*[^`])?`{3}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{4}[^`](?:.*[^`])?`{4}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{5,}[^`](?:.*[^`])?`{5,}"/>
+        <!-- Find Fenced Code Block -->
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <!-- Comment -->
+        <StringDetect attribute="Comment" context="comment" String="&startcomment;" beginRegion="comment"/>
+        <!-- Links and References -->
+        <RegExpr attribute="Reference-Link Target" context="reflinktarget" String="&reflinktargetregex;" firstNonSpace="true"/>
+        <RegExpr attribute="Footnote" String="&footnoteregex;"/>
+        <RegExpr attribute="Reference-Link" context="find-reflink" String="&reflinkregex;"/>
+        <RegExpr attribute="Inline Image" context="inlineimage" String="&inlineimageregex;"/>
+        <RegExpr attribute="Reference Image" String="&refimageregex;"/>
+        <RegExpr attribute="Auto-Link" context="autolink" String="&autolinkregex;" lookAhead="true"/>
+        <RegExpr attribute="Mailto-Link" context="mailtolink" String="&mailtolinkregex;"/>
+        <!-- Line Break -->
+        <RegExpr attribute="Line Break" minimal="true" String="&linebreakregex;"/>
+        <!-- Backslash Escapes -->
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="\"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="`"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="*"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="_"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="{"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="}"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="["/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="]"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="("/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1=")"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="#"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="+"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="-"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="."/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="!"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&lt;"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&gt;"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&amp;"/>
+        <!-- Inline HTML -->
+        <RegExpr attribute="EntityRef" String="&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&htmlname;);"/>
+        <RegExpr context="find-html-block" String="&lt;/?&htmlname;(?:[\s&gt;]|/&gt;|$)" lookAhead="true"/>
+      </context>
+      <context name="find-html-block" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="FindSpecialHTMLTags##HTML"/>
+        <IncludeRules context="FindHTMLTags##HTML"/>
+      </context>
+
+      <!-- Links and email: <https://example.com>, <example@kde.org> -->
+      <context name="autolink" attribute="Auto-Link" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Auto-Link" char="&lt;"/>
+        <DetectChar attribute="Auto-Link" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Link" String="&startlink;[^&quot;&gt;\s]+"/>
+      </context>
+      <context name="mailtolink" attribute="Email" lineEndContext="#pop">
+        <DetectChar attribute="Mailto-Link" context="#pop" char="&gt;"/>
+      </context>
+
+      <!-- References: [example][id], [example](http://example.com) -->
+      <context name="find-reflink" attribute="Reference-Link Name" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link Name" char="\" char1="]"/>
+        <RegExpr attribute="Reference-Link" context="#pop!find-reflink-id" String="\](?=&reflinkidregex;)"/> <!-- Find id -->
+        <DetectChar attribute="Reference-Link" context="#pop" char="]"/>
+        <!-- Image as link or reference -->
+        <RegExpr attribute="Inline Image" context="inlineimage" String="&startinlineimage;(?=&endinlineimage;&refchar;*\])"/>
+        <RegExpr attribute="Reference Image" String="&refimageregex;(?=&refchar;*\])"/>
+        <RegExpr attribute="Reference-Link Name" context="#stay" String="(?:\[(?:\\.|[^\[\]\\])*\](?:\\.|[^\[\]\\])*)+(?=\])" minimal="true"/>
+      </context>
+      <context name="find-reflink-id" attribute="Reference-Link" lineEndContext="#pop">
+        <DetectSpaces />
+        <!-- Ref.: [an example][id] "Optional title" -->
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-id" char="["/>
+        <!-- Inline Ref.: [an example](http://example.com/ "Title") -->
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-inline-id" char="("/>
+      </context>
+      <context name="reflink-inline-id" attribute="Reference-Link" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link" char="\" char1=")"/>
+        <DetectChar attribute="Reference-Link" context="#pop" char=")"/>
+        <RegExpr attribute="Reference-Link: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\)\\])+"/>
+        <RegExpr attribute="Reference-Link: Email" String="\b&email;\b"/>
+      </context>
+      <context name="reflink-id" attribute="Reference-Link ID" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link ID" char="\" char1="]"/>
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-title" char="]"/>
+        <RegExpr attribute="Reference-Link: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\]\\])+"/>
+      </context>
+      <!-- [an example][id] "title" -->
+      <context name="reflink-title" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Reference-Link" context="#pop" String="\s+&quot;(?:\\.|[^&quot;\\])*&quot;"/>
+      </context>
+
+      <!-- Target Ref.: [foo]: http://example.com/  "Optional Title Here" -->
+      <context name="reflinktarget" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Reference-Link Target: Link" context="#pop!reflinktarget-title" String="\s*&link;(?=\s|$)"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop!reflinktarget-link" String="\s*&lt;(?=&link;&gt;(?:\s|$))"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop!reflinktarget-title" String="\s*#[\w\.\:\-]+\b"/>
+      </context>
+      <context name="reflinktarget-link" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Reference-Link Target" context="#pop!reflinktarget-title" char="&gt;"/>
+        <RegExpr attribute="Reference-Link Target: Link" String="&link;"/>
+      </context>
+      <context name="reflinktarget-title" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces attribute="Reference-Link Target"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="&quot;(?:\\.|[^&quot;\\])*&quot;"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="&apos;(?:\\.|[^&apos;\\])*&apos;"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="\((?:\\.|[^\)\\])*\)"/>
+      </context>
+
+      <!-- Image -->
+      <context name="inlineimage" attribute="Inline Image" lineEndContext="#pop">
+        <DetectChar attribute="Inline Image" context="#pop" char=")"/>
+        <Detect2Chars attribute="Inline Image" char="\" char1=")"/>
+        <RegExpr attribute="Inline Image: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\)\\])+"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="common" defStyleNum="dsNormal"/>
-      <itemData name="strongemphasis" defStyleNum="dsNormal" italic="true" bold="true"/>
-      <itemData name="emphasis" defStyleNum="dsNormal" italic="true"/>
-      <itemData name="strong" defStyleNum="dsNormal" bold="true"/>
-      <itemData name="ruler" defStyleNum="dsNormal" bold="true"/>
-      <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true"/>
-      <itemData name="linebreak" defStyleNum="dsNormal" underline="true" color="#999999"/>
-      <itemData name="h1" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h2" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h3" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h4" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h5" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h6" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="blockquote" defStyleNum="dsDataType"/>
-      <itemData name="bq-emphasis" defStyleNum="dsDataType" italic="true"/>
-      <itemData name="bq-strong" defStyleNum="dsDataType" bold="true"/>
-      <itemData name="bullet" defStyleNum="dsFloat"/>
-      <itemData name="bl-emphasis" defStyleNum="dsFloat" italic="true"/>
-      <itemData name="bl-strong" defStyleNum="dsFloat" bold="true"/>
-      <itemData name="numlist" defStyleNum="dsFloat"/>
-      <itemData name="nl-emphasis" defStyleNum="dsFloat" italic="true"/>
-      <itemData name="nl-strong" defStyleNum="dsFloat" bold="true"/>
-      <itemData name="comment" defStyleNum="dsComment"/>
-      <itemData name="code" defStyleNum="dsBaseN"/>
-      <itemData name="reflink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="inlinelink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="autolink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="mailtolink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="footnote" defStyleNum="dsOthers" italic="true"/>
-      <itemData name="meta" defStyleNum="dsComment"/>
-      <itemData name="reflinktarget" defStyleNum="dsOthers" italic="false" bold="false"/>
-      <itemData name="inlineimage" defStyleNum="dsAlert" italic="false" bold="false"/>
-      <itemData name="refimage" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Emphasis Text" defStyleNum="dsNormal" italic="true"/>
+      <itemData name="Strong Text" defStyleNum="dsNormal" bold="true"/>
+      <itemData name="Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
+      <itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="Normal Text: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
+      <itemData name="Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
+      <itemData name="Line Break" defStyleNum="dsNormal" underline="true" color="#999999" spellChecking="false"/>
+      <itemData name="Header H1" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H2" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H3" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H4" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H5" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H6" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Blockquote: Normal Text" defStyleNum="dsAttribute"/>
+      <itemData name="Blockquote: Emphasis Text" defStyleNum="dsAttribute" italic="true"/>
+      <itemData name="Blockquote: Strong Text" defStyleNum="dsAttribute" bold="true"/>
+      <itemData name="Blockquote: Strong-Emphasis Text" defStyleNum="dsAttribute" italic="true" bold="true"/>
+      <itemData name="Blockquote: Strikethrough Text" defStyleNum="dsAttribute" strikeOut="true"/>
+      <itemData name="Blockquote: Link" defStyleNum="dsAttribute" underline="true" spellChecking="false"/>
+      <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
+      <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="List: Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="List: Emphasis Text" defStyleNum="dsNormal" italic="true"/>
+      <itemData name="List: Strong Text" defStyleNum="dsNormal" bold="true"/>
+      <itemData name="List: Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
+      <itemData name="List: Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="List: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
+      <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Code" defStyleNum="dsInformation"/>
+      <itemData name="Fenced Code" defStyleNum="dsInformation" spellChecking="false"/>
+      <itemData name="Auto-Link" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
+      <itemData name="Mailto-Link" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Email" defStyleNum="dsOthers" italic="true" underline="true" spellChecking="false"/>
+      <itemData name="Footnote" defStyleNum="dsOthers" italic="true"/>
+      <itemData name="Reference-Link" defStyleNum="dsComment" italic="false"/>
+      <itemData name="Reference-Link Name" defStyleNum="dsOthers" underline="true" italic="false"/>
+      <itemData name="Reference-Link ID" defStyleNum="dsComment" italic="false"/>
+      <itemData name="Reference-Link: Link" defStyleNum="dsComment" underline="true" italic="false" spellChecking="false"/>
+      <itemData name="Reference-Link: Email" defStyleNum="dsComment" italic="true" underline="true" spellChecking="false"/>
+      <itemData name="Reference-Link Target" defStyleNum="dsOthers" italic="false" bold="false"/>
+      <itemData name="Reference-Link Target: Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
+      <itemData name="Inline Image" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Reference Image" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Inline Image: Link" defStyleNum="dsAlert" italic="false" bold="false" underline="true"/>
+      <itemData name="Metadata Title" defStyleNum="dsAnnotation"/>
+      <itemData name="Metadata" defStyleNum="dsComment" italic="0"/>
+      <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
+    <keywords additionalDeliminator="`"/>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment"/>
+      <comment name="multiLine" start="&startcomment;" end="&endcomment;" region="comment"/>
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
diff --git a/syntax/matlab.xml b/syntax/matlab.xml
--- a/syntax/matlab.xml
+++ b/syntax/matlab.xml
@@ -57,7 +57,7 @@
 
 <!DOCTYPE language SYSTEM "language.dtd">
 
-<language name="Matlab" version="2" kateversion="2.2" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
+<language name="Matlab" version="3" kateversion="5.0" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
   <highlighting>
 
     <!-- Reserved keywords in MATLAB -->
@@ -98,8 +98,10 @@
         <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
 
         <!-- If ' is not the adjoint operator, it starts a string or an unterminated string -->
-        <RegExpr context="#stay" attribute="String" String="'[^']*(''[^']*)*'(?=[^']|$)" />
-        <RegExpr context="#stay" attribute="Incomplete String" String="'[^']*(''[^']*)*" />
+        <RegExpr context="#stay" attribute="CharVector" String="'[^']*(''[^']*)*'(?=[^']|$)" />
+        <RegExpr context="#stay" attribute="Incomplete CharVector" String="'[^']*(''[^']*)*" />
+        <RegExpr context="#stay" attribute="String" String="&quot;[^&quot;]*(&quot;&quot;[^&quot;]*)*&quot;(?=[^&quot;]|$)" />
+        <RegExpr context="#stay" attribute="Incomplete String" String="&quot;[^&quot;]*(&quot;&quot;[^&quot;]*)*" />
 
         <!-- Handling of keywords, comments, system commands, identifiers, numbers and braces -->
         <keyword context="#stay" attribute="Keyword" String="KeywordsList" />
@@ -136,25 +138,18 @@
 
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
-      <itemData name="Variable" defStyleNum="dsNormal" />
-      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Variable" defStyleNum="dsVariable" />
+      <itemData name="Operator" defStyleNum="dsOperator"/>
       <itemData name="Number" defStyleNum="dsFloat" />
       <itemData name="Delimiter" defStyleNum="dsNormal" />
-      <itemData name="String" defStyleNum="dsString" color="#b20000"/>
-      <itemData name="System" defStyleNum="dsBaseN" color="#b28c00"/>
-      <itemData name="Incomplete String" defStyleNum="dsChar" color="#a020f0"/>
-      <itemData name="Keyword"  defStyleNum="dsNormal" color="#0000ff"/>
-      <itemData name="Comment" defStyleNum="dsComment" color="#009900"/>
+      <itemData name="CharVector" defStyleNum="dsSpecialString" />
+      <itemData name="String" defStyleNum="dsString" />
+      <itemData name="System" defStyleNum="dsBaseN" />
+      <itemData name="Incomplete CharVector" defStyleNum="dsError" />
+      <itemData name="Incomplete String" defStyleNum="dsError" />
+      <itemData name="Keyword"  defStyleNum="dsKeyword" />
+      <itemData name="Comment" defStyleNum="dsComment" />
     </itemDatas>
-    <!-- MATLAB 6.5 default color scheme
-          keywords             #0000ff
-          comments             #228b22
-          strings              #b20000
-          unterminated strings #a020f0
-          system commands      #b28c00
-          errors               #ff0000
-          all others           #000000
-    -->
 
   </highlighting>
 
@@ -166,65 +161,3 @@
   </general>
 
 </language>
-<!--
-%%=====================================================
-% MATLAB test code for Kate/Kwrite syntax highlighting
-%%=====================================================
-
-% Numbers _____________________________________________
-5, 5.5, .1, 0.1, 0.4e5, 1.2e-5, 5i, 5.3i, 6j, .345+3i
-5', 5.5', .1', 0.1', 0.4e5', 1.2e-5', 5i', 5.3i', 6j', .345+3i'
-
-% Operators ___________________________________________
-% relational operators
-'asdf'~=4, c<=4, d>=4, a<b, a>b, a==b, b||c, b&&c
-% elementwise arithmetic operators
-a.^b, a.*b a./b, 1:4:5
-% single-character binary arithmetic
-a+3, a-3, a*2, a^3, a/3, a\3, a|b, a&b
-% unary operators
-a = ~g; g = @sfdgdsf(sdfsd,345); g.' + 1i.' - ('asdf').'
-% separators and delimiter
-(asd),[sadf];{asdf},;;,;;;()
-% continuation
-a = 1+ ...
-  2;
-
-% Strings and adjoint _________________________________
-% incomplete strings
-'string
-'str''
-'str''ing
-% complete strings
-'string' % simple string
-'''' % string containing '
-'str''ing' % one string containing '
-'string' 'string'  % two strings
-'asdf'  'asdf''' variable  % two strings and a variable
-'asdf''asdf''   fsgdfg' + (asdf)' - 'asdf'.' + []''''.';''
-'sadf'.' % string transpose
-% adjoint
-{'asdf'}' + 1
-('asdf')' + 1
-['asdf']' + 1
-'' var''' % empty string, var with >1 adjoints
-[5]'*{5}'*('asd')'.'+(5)'*6'*asdf'*asdf'.'  % many adjoints
-A'*B + 1      % adjoint
-A.'*B + 1     % transpose
-A.'.'*B + 1   % double transpose
-A'.' + 1      % adjoint, then transpose
-A.''          % transpose, then adjoint
-
-% System command ______________________________________
-!hostname
-!cp * /tmp
-
-% Reserved keywords ___________________________________
-function, persistent, global
-switch, case, otherwise
-if, else, elseif
-try, catch
-for, while, break, continue
-end, return
-function, FUNCTION, Function  % case sensitive!
--->
diff --git a/syntax/mediawiki.xml b/syntax/mediawiki.xml
--- a/syntax/mediawiki.xml
+++ b/syntax/mediawiki.xml
@@ -6,7 +6,7 @@
   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">
   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]">
 ]>
-<language name="MediaWiki" section="Markup" version="5" kateversion="3.4" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="6" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
diff --git a/syntax/modelines.xml b/syntax/modelines.xml
--- a/syntax/modelines.xml
+++ b/syntax/modelines.xml
@@ -8,7 +8,7 @@
   Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)
   -->
 <language name="Modelines"
-          version="4"
+          version="5"
           kateversion="5.0"
           section="Other"
           extensions=""
@@ -130,10 +130,10 @@
     <context name="Normal" attribute="Comment" lineEndContext="#pop">
       <DetectSpaces />
       <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />
-      <RegExpr String="kate-(mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
+      <RegExpr String="kate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
     </context>
 
-    <context name="Modeline" attribute="Comment" lineEndContext="#pop">
+    <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="Booleans" context="Booleans" attribute="Variable" />
       <keyword String="Integrals" context="Integrals" attribute="Variable" />
@@ -142,7 +142,7 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="Booleans" attribute="Comment" lineEndContext="#pop">
+    <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="True" attribute="Option ON" context="#stay" />
       <keyword String="False" attribute="Option OFF" context="#stay" />
@@ -150,7 +150,7 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="Integrals" attribute="Comment" lineEndContext="#pop">
+    <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <Int attribute="Number" context="#stay" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
@@ -164,13 +164,13 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop">
+    <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
       <LineContinue context="#pop" />
     </context>
-    <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop">
+    <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
     </context>
 
diff --git a/syntax/mustache.xml b/syntax/mustache.xml
new file mode 100644
--- /dev/null
+++ b/syntax/mustache.xml
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name          "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY attributeName "(?:\s|^)[A-Za-z_:\*#\(\[][\)\]\w\.:_-]*">
+	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+	<!ENTITY tag           "&lt;\s*(?:&name;|&gt;)">
+	<!-- Handlebars identifier -->
+	<!ENTITY identifier    "(?:[a-zA-Z_$:\?]|[^[:ascii:]])(?:[\w$:\?\-]|[^[:ascii:]])*">
+]>
+
+<!--
+    Syntax Highlighting Defintion of
+    Mustache / Handlebars / Ractive templates for Kate.
+   ================================================================
+    This file is part of the KDE's KSyntaxHighlighting framework.
+
+    Based on the HTML syntax highlighting file, by Wilbert
+    Berendsen (wilbert@kde.nl), and in the Mustache syntax files
+    for Vim, available at:
+      https://github.com/mustache/vim-mustache-handlebars
+
+    This highlighter is also applicable to the templates of
+    Ractive.js, Hogan.js and Hulk.js.
+
+    This file is also used within the HTML highlighter,
+    inside the <script> tags.
+
+    FIXME: The support of Mustache variables in CSS is incomplete,
+    since variables aren't highlighted in many contexts.
+    This highlighter doesn't offer support for TypeScript and JSX
+    in the <script> tag.
+
+    TODO: This code can be generated by a script, in the same way
+    as the PHP highlight, injecting the "MustacheVariables" context
+    (via IncludeRules) in the HTML highlighter.
+
+    Change log:
+     * v3 [2019-10-03]: Minor fixes.
+     * v2 [2019-02-24]: Also highlight template files (HTML).
+                        Improve support for Handlebars.
+     * v1 [2019-02-10]: Initial version
+-->
+
+<language name="Mustache/Handlebars (HTML)" version="3" kateversion="5.44"
+          section="Markup" priority="1" mimetype=""
+          extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"
+          author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"
+          license="MIT">
+
+<highlighting>
+
+	<contexts>
+
+		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="CSS" attribute="Element Tag" String="&lt;style\b" insensitive="true" beginRegion="style" />
+			<RegExpr context="JS" attribute="Element Tag" String="&lt;script\b" insensitive="true" beginRegion="script" />
+			<IncludeRules context="Base" />
+		</context>
+
+		<!-- NOTE: Include this context within the <script> tag in the HTML highlighter -->
+		<context name="Base" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+
+			<StringDetect context="CDATA" attribute="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+			<RegExpr context="Doctype" attribute="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
+			<IncludeRules context="FindPI" />
+
+			<IncludeRules context="FindTags" />
+			<IncludeRules context="FindElementTagEnd" />
+			<IncludeRules context="FindComments" />
+			<IncludeRules context="FindDTDRules" />
+			<IncludeRules context="FindEntityRefs" />
+		</context>
+
+		<!-- Mustache/Handlebars Variables -->
+
+		<context name="MustacheVariables" attribute="Normal Text" lineEndContext="#stay">
+			<StringDetect context="#stay" attribute="Normal Text" String="\{{" />
+			<Detect2Chars context="StartMustacheVariable" char="{" char1="{" lookAhead="true" />
+		</context>
+		<context name="StartMustacheVariable" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Escaped -->
+			<RegExpr context="#pop!MustacheRawBlockContent" attribute="Mustache Block" String="\{{4}[^/].*\}{4}" minimal="true" beginRegion="HandlebarsRawBlock" />
+			<!-- Sections -->
+			<!-- For helpers (not included because it's redundant):
+			       Start: \{\{~?#?\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)
+			       End:   \{\{~?/\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)  -->
+			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?\s*else(?:\s+(?:if|unless|with|link\-to|each(?:\-in)?))?\b" />
+			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^][&gt;\*]?\s*&identifier;\b" beginRegion="MustacheBlock" />
+			<RegExpr context="#pop" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\s*\}\}" endRegion="MustacheBlock" />
+			<RegExpr context="#pop!MustacheVariableBlockEndFolding" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\b" />
+			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^/]" />
+			<!-- Comments -->
+			<StringDetect context="#pop!MustacheBlockComment" attribute="Comment" String="{{!--" beginRegion="MustacheBlockComment" /> <!-- Handlebars -->
+			<StringDetect context="#pop!MustacheInlineComment" attribute="Comment" String="{{!" beginRegion="MustacheInlineComment" />
+			<!-- Variables -->
+			<StringDetect context="#pop!MustachePartial" attribute="Mustache Variable" String="{{&lt;" />
+			<StringDetect context="#pop!MustachePartial" attribute="Mustache Variable" String="{{&gt;" />
+			<StringDetect context="#pop!MustacheMarkerSet" attribute="Mustache Variable" String="{{=" />
+			<StringDetect context="#pop!MustacheVariable" attribute="Mustache Variable" String="{{$" />
+			<RegExpr context="#pop!MustacheVariableUnescape" attribute="Mustache Variable Unescape" String="\{\{\{\s*(?:log|link)\b" />
+			<RegExpr context="#pop!MustacheVariable" attribute="Mustache Variable" String="\{\{\s*(?:log|link)\b" />
+
+			<StringDetect context="#pop!MustacheVariableUnescape" attribute="Mustache Variable Unescape" String="{{{" />
+			<Detect2Chars context="#pop!MustacheVariable" attribute="Mustache Variable" char="{" char1="{" />
+		</context>
+
+		<context name="MustacheRawBlockContent" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop" attribute="Mustache Block" String="\{{4}/.*\}{4}" minimal="true" endRegion="HandlebarsRawBlock" />
+		</context>
+
+		<context name="MustachePartial" attribute="Mustache Partial" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Mustache Variable" char="}" char1="}" />
+			<IncludeRules context="MustacheInside" />
+		</context>
+		<context name="MustacheMarkerSet" attribute="Mustache Marker Set" lineEndContext="#stay">
+			<StringDetect context="#pop" attribute="Mustache Variable" String="=}}" />
+		</context>
+
+		<context name="MustacheVariableBlock" attribute="Mustache Inside" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Mustache Block" char="}" char1="}" />
+			<IncludeRules context="MustacheInside" />
+		</context>
+		<context name="MustacheVariableBlockEndFolding" attribute="Mustache Inside" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Mustache Block" char="}" char1="}" endRegion="MustacheBlock" />
+			<IncludeRules context="MustacheInside" />
+		</context>
+		<context name="MustacheVariable" attribute="Mustache Inside" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Mustache Variable" char="}" char1="}" />
+			<IncludeRules context="MustacheInside" />
+		</context>
+		<context name="MustacheVariableUnescape" attribute="Mustache Inside" lineEndContext="#stay">
+			<StringDetect context="#pop" attribute="Mustache Variable Unescape" String="}}}" />
+			<IncludeRules context="MustacheInside" />
+		</context>
+
+		<!-- Within the variable -->
+		<context name="MustacheInside" attribute="Mustache Inside" lineEndContext="#pop">
+			<DetectChar context="MustacheStringDQ" attribute="String" char="&quot;" />
+			<DetectChar context="MustacheStringSQ" attribute="String" char="&apos;" />
+			<AnyChar context="#stay" attribute="Symbol" String=".[]|" />
+			<RegExpr context="MustacheSymbolValue" attribute="Attribute" String="&attributeName;(?=\s*\=)" />
+		</context>
+		<context name="MustacheStringDQ" attribute="String" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="String" char="&quot;" />
+			<LineContinue context="#stay" attribute="Escape" />
+			<HlCStringChar context="#stay" attribute="Escape" />
+		</context>
+		<context name="MustacheStringSQ" attribute="String" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="String" char="&apos;" />
+			<LineContinue context="#stay" attribute="Escape" />
+			<HlCStringChar context="#stay" attribute="Escape" />
+		</context>
+		<context name="MustacheSymbolValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<DetectChar context="#pop!MustacheValue" attribute="Symbol" char="=" />
+			<DetectSpaces />
+		</context>
+		<context name="MustacheValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<RegExpr context="#pop" attribute="Number" String="\d+(?=[\s\}\)\]]|$)" />
+		</context>
+
+		<context name="MustacheBlockComment" attribute="Comment" lineEndContext="#stay">
+			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="MustacheBlockComment" />
+			<IncludeRules context="##Alerts" />
+		</context>
+		<context name="MustacheInlineComment" attribute="Comment" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Comment" char="}" char1="}" endRegion="MustacheInlineComment" />
+			<IncludeRules context="##Alerts" />
+		</context>
+
+		<!-- Tags -->
+
+		<!-- Start tag -->
+		<context name="FindTags" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Common HTML tags (obtained from 'html.xml') -->
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;pre" insensitive="true" beginRegion="pre" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;div" insensitive="true" beginRegion="div" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;table" insensitive="true" beginRegion="table" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;ul" insensitive="true" beginRegion="ul" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;ol" insensitive="true" beginRegion="ol" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;dl" insensitive="true" beginRegion="dl" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;article" insensitive="true" beginRegion="article" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;aside" insensitive="true" beginRegion="aside" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;details" insensitive="true" beginRegion="details" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;figure" insensitive="true" beginRegion="figure" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;footer" insensitive="true" beginRegion="footer" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;header" insensitive="true" beginRegion="header" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;main" insensitive="true" beginRegion="main" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;nav" insensitive="true" beginRegion="nav" />
+			<WordDetect context="ElementTag" attribute="Element Tag" String="&lt;section" insensitive="true" beginRegion="section" />
+
+			<RegExpr context="#stay" attribute="Element Tag" String="&lt;\s*&gt;" />
+			<RegExpr context="ElementTag" attribute="Element Tag" String="&tag;" />
+		</context>
+		<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#stay" attribute="EntityRef" String="&entref;" />
+		</context>
+
+		<!-- Tag end: </tag> -->
+		<context name="FindElementTagEnd" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Common HTML tags (obtained from 'html.xml') -->
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/pre" insensitive="true" endRegion="pre" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/div" insensitive="true" endRegion="div" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/table" insensitive="true" endRegion="table" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/ul" insensitive="true" endRegion="ul" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/ol" insensitive="true" endRegion="ol" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/dl" insensitive="true" endRegion="dl" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/article" insensitive="true" endRegion="article" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/aside" insensitive="true" endRegion="aside" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/details" insensitive="true" endRegion="details" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/figure" insensitive="true" endRegion="figure" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/footer" insensitive="true" endRegion="footer" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/header" insensitive="true" endRegion="header" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/main" insensitive="true" endRegion="main" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/nav" insensitive="true" endRegion="nav" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/section" insensitive="true" endRegion="section" />
+
+			<RegExpr context="#stay" attribute="Element Tag" String="&lt;/\s*&gt;" />
+			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*&name;" />
+		</context>
+		<context name="ElementTagEnd" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Element Tag" char="&gt;" />
+			<IncludeRules context="MustacheVariables" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+
+		<!-- Inside the tag -->
+		<context name="ElementTag" attribute="Normal Text" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" />
+			<DetectChar context="#pop" attribute="Element Tag" char="&gt;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindAttributes" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+		<context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#stay" attribute="Attribute" String="&attributeName;" />
+			<RegExpr context="#stay" attribute="Error" String="\=(?=\s*/?&gt;)" />
+			<DetectChar context="Value" attribute="Symbol" char="=" />
+		</context>
+
+		<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!ValueNQ">
+			<DetectChar context="#pop!ValueDQ" attribute="Value" char="&quot;" />
+			<DetectChar context="#pop!ValueSQ" attribute="Value" char="&apos;" />
+			<RegExpr context="#pop" attribute="Number" String="\d+(?=\s|/?&gt;|$)" />
+			<DetectSpaces />
+		</context>
+		<context name="ValueDQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Value" char="&quot;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindEntityRefs" />
+		</context>
+		<context name="ValueSQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Value" char="&apos;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindEntityRefs" />
+		</context>
+		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindEntityRefs" />
+			<RegExpr context="#stay" attribute="Value" String="/(?!&gt;)" />
+			<RegExpr context="#stay" attribute="Value" String="[^/&gt;&lt;&quot;&apos;\s]" />
+		</context>
+
+		<!-- HTML -->
+		<!-- NOTE: This contexts are duplicated from 'html.xml', adding the Mustache variables -->
+
+		<context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
+			<StringDetect context="Comment" attribute="Comment" String="&lt;!--" beginRegion="Comment" />
+		</context>
+		<context name="Comment" attribute="Comment" lineEndContext="#stay">
+			<DetectSpaces/>
+			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" />
+			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="##Alerts" />
+		</context>
+
+		<context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+			<RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+			<AnyChar attribute="Error" context="#stay" String="&amp;%" />
+		</context>
+
+		<context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="Doctype Markupdecl" attribute="Doctype" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+		</context>
+		<context name="FindPI" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="PI" attribute="Processing Instruction" String="&lt;\?[\w:-]*" beginRegion="pi" />
+		</context>
+
+		<context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+			<StringDetect context="#pop" attribute="CDATA" String="]]&gt;" endRegion="cdata" />
+			<StringDetect context="#stay" attribute="EntityRef" String="]]&amp;gt;" />
+		</context>
+
+		<context name="PI" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+			<Detect2Chars context="#pop" attribute="Processing Instruction" char="?" char1="&gt;" endRegion="pi" />
+		</context>
+
+		<context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+			<DetectChar context="#pop" attribute="Doctype" char="&gt;" endRegion="doctype" />
+			<DetectChar context="Doctype Internal Subset" attribute="Doctype" char="[" beginRegion="int_subset" />
+		</context>
+		<context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Doctype" char="]" endRegion="int_subset" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindDTDRules" />
+			<IncludeRules context="FindComments" />
+			<IncludeRules context="FindPI" />
+			<IncludeRules context="FindPEntityRefs" />
+		</context>
+		<context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+			<IncludeRules context="MustacheVariables" />
+			<DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+			<DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+		</context>
+		<context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar attribute="Value" context="#pop" char="&quot;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindPEntityRefs" />
+		</context>
+		<context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+			<DetectChar attribute="Value" context="#pop" char="&apos;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindPEntityRefs" />
+		</context>
+
+		<!-- CSS -->
+
+		<context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="style" />
+			<DetectChar context="#pop!CSSContent" attribute="Element Tag" char="&gt;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindAttributes" />
+			<RegExpr context="#stay" attribute="Error" String="\S" />
+		</context>
+		<context name="CSSContent" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/style\b" insensitive="true" endRegion="style" />
+			<IncludeRules context="MustacheVariables" />
+
+			<DetectChar context="CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
+			<DetectChar context="CSS-SelectorAttr" attribute="CSS: Selector Attribute" char="[" />
+			<IncludeRules context="##CSS" includeAttrib="true"/>
+		</context>
+
+		<!-- Overwrite some rules of 'css.xml' to add Mustache variables -->
+		<context name="CSS-RuleSet" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="ruleset" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="RuleSet##CSS" />
+		</context>
+		<context name="CSS-SelectorAttr" attribute="CSS: Selector Attribute" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="CSS: Selector Attribute" char="]" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="SelectorAttr##CSS" />
+		</context>
+
+		<!-- JavaScript -->
+
+		<context name="JS" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!JSContent" attribute="Element Tag" char="&gt;" />
+			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="script" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="FindAttributes" />
+			<RegExpr attribute="Error" context="#stay" String="\S" />
+		</context>
+
+		<context name="JSContent" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<RegExpr context="JSCommentClose" attribute="Comment" String="//(?=.*&lt;/script\b)" insensitive="true" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="OverwriteJavaScript" />
+			<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+		</context>
+		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop">
+			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+		</context>
+
+		<!-- Overwrite some rules of 'javascript.xml' to add Mustache variables -->
+		<context name="OverwriteJavaScript" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="JavaScript-Template" attribute="JS: Template" char="`" />
+			<StringDetect context="JavaScript-RawTemplate" attribute="JS: Template" String="String.raw`" />
+			<DetectChar context="JavaScript-String" attribute="String" char="&quot;" />
+			<DetectChar context="JavaScript-StringSQ" attribute="String" char="'" />
+			<DetectChar context="JavaScript-Object" attribute="Symbol" char="{" beginRegion="Brace" />
+			<DetectChar context="#stay" attribute="Symbol" char="?" />
+		</context>
+		<context name="JavaScript-Object" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="OverwriteJavaScript" />
+			<IncludeRules context="Object##JavaScript" includeAttrib="true" />
+		</context>
+		<context name="JavaScript-Template" attribute="JS: Template" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="JS: Template" char="`" />
+			<Detect2Chars context="JavaScript-Substitution" attribute="JS: Substitution" char="$" char1="{" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="Template##JavaScript" />
+		</context>
+		<context name="JavaScript-Substitution" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="JS: Substitution" char="}" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="OverwriteJavaScript" />
+			<IncludeRules context="Substitution##JavaScript" />
+		</context>
+		<context name="JavaScript-String" attribute="String" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="String" char="&quot;" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="String##JavaScript" />
+		</context>
+		<context name="JavaScript-StringSQ" attribute="String" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="String" char="'" />
+			<IncludeRules context="MustacheVariables" />
+			<IncludeRules context="String SQ##JavaScript" />
+		</context>
+		<context name="JavaScript-RawTemplate" attribute="JS: Template" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="JS: Template" char="`" />
+			<IncludeRules context="MustacheVariables" />
+		</context>
+
+	</contexts>
+
+	<itemDatas>
+		<itemData name="Normal Text"       defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Comment"           defStyleNum="dsComment" />
+
+		<itemData name="Mustache Inside"   defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Mustache Block"    defStyleNum="dsFunction" bold="1" spellChecking="false" />
+		<itemData name="Mustache Variable" defStyleNum="dsVariable" spellChecking="false" />
+		<itemData name="Mustache Variable Unescape" defStyleNum="dsSpecialChar" spellChecking="false" />
+		<itemData name="Mustache Partial"  defStyleNum="dsChar" spellChecking="false" />
+		<itemData name="Mustache Marker Set" defStyleNum="dsVariable" spellChecking="false" />
+		<itemData name="String"            defStyleNum="dsString" />
+		<itemData name="Number"            defStyleNum="dsDecVal" />
+
+		<itemData name="Element Tag"       defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="Attribute"         defStyleNum="dsOthers" spellChecking="false" />
+		<itemData name="Value"             defStyleNum="dsString" spellChecking="false" />
+		<itemData name="Symbol"            defStyleNum="dsOperator" />
+		<itemData name="Escape"            defStyleNum="dsSpecialChar" />
+		<itemData name="Error"             defStyleNum="dsError" spellChecking="false" />
+
+		<itemData name="EntityRef"         defStyleNum="dsDecVal" spellChecking="false" />
+		<itemData name="PEntityRef"        defStyleNum="dsDecVal" spellChecking="false" />
+		<itemData name="CDATA"             defStyleNum="dsBaseN" bold="1" spellChecking="false" />
+		<itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="Doctype"           defStyleNum="dsDataType" bold="1" spellChecking="false" />
+
+		<!-- CSS itemDatas -->
+		<itemData name="CSS: Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+		<!-- JavaScript itemDatas -->
+		<itemData name="JS: Template"     defStyleNum="dsVerbatimString" />
+		<itemData name="JS: Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
+	</itemDatas>
+
+</highlighting>
+
+<general>
+	<comments>
+		<comment name="multiLine" start="{{!" end="}}" />
+	</comments>
+</general>
+
+</language>
+<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->
diff --git a/syntax/octave.xml b/syntax/octave.xml
--- a/syntax/octave.xml
+++ b/syntax/octave.xml
@@ -1,2217 +1,2832 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!--
-  ====================================================================
-  Octave syntax highlighting file for the KDE editors Kate and Kwrite
-  ====================================================================
-      based on Octave 2.1.64
-      function and variable list obtained by dispatch_help()'s output
-
-  Change log:
-  16-Dec-04  Created from Matlab and Scilab files.
-
-  Author: Federico Zenith, Norwegian University of Science and Technology
-  Thanks to Luis Silvestre for previous version and suggestions
--->
-
-
-<language name="Octave" version="3" kateversion="3.4" section="Scientific" extensions="*.octave;*.m;*.M" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
-
-  <highlighting>
-
-    <!-- Reserved keywords in Octave -->
-    <list name="keywords">
-      <item>all_va_args</item>
-      <item>break</item>
-      <item>case</item>
-      <item>continue</item>
-      <item>else</item>
-      <item>elseif</item>
-      <item>end_unwind_protect</item>
-      <item>global</item>
-      <item>gplot</item>
-      <item>gsplot</item>
-      <item>otherwise</item>
-      <item>persistent</item>
-      <item>replot</item>
-      <item>return</item>
-      <item>static</item>
-      <item>until</item>
-      <item>unwind_protect</item>
-      <item>unwind_protect_cleanup</item>
-      <item>varargin</item>
-      <item>varargout</item>
-    </list>
-
-    <list name="builtin">
-      <item>argv</item>
-      <item>e</item>
-      <item>eps</item>
-      <item>false</item>
-      <item>F_DUPFD</item>
-      <item>F_GETFD</item>
-      <item>F_GETFL</item>
-      <item>filesep</item>
-      <item>F_SETFD</item>
-      <item>F_SETFL</item>
-      <item>i</item>
-      <item>I</item>
-      <item>inf</item>
-      <item>Inf</item>
-      <item>j</item>
-      <item>J</item>
-      <item>NA</item>
-      <item>nan</item>
-      <item>NaN</item>
-      <item>O_APPEND</item>
-      <item>O_ASYNC</item>
-      <item>O_CREAT</item>
-      <item>OCTAVE_HOME</item>
-      <item>OCTAVE_VERSION</item>
-      <item>O_EXCL</item>
-      <item>O_NONBLOCK</item>
-      <item>O_RDONLY</item>
-      <item>O_RDWR</item>
-      <item>O_SYNC</item>
-      <item>O_TRUNC</item>
-      <item>O_WRONLY</item>
-      <item>pi</item>
-      <item>program_invocation_name</item>
-      <item>program_name</item>
-      <item>P_tmpdir</item>
-      <item>realmax</item>
-      <item>realmin</item>
-      <item>SEEK_CUR</item>
-      <item>SEEK_END</item>
-      <item>SEEK_SET</item>
-      <item>SIG</item>
-      <item>stderr</item>
-      <item>stdin</item>
-      <item>stdout</item>
-      <item>true</item>
-      <item>ans</item>
-      <item>automatic_replot</item>
-      <item>beep_on_error</item>
-      <item>completion_append_char</item>
-      <item>crash_dumps_octave_core</item>
-      <item>current_script_file_name</item>
-      <item>debug_on_error</item>
-      <item>debug_on_interrupt</item>
-      <item>debug_on_warning</item>
-      <item>debug_symtab_lookups</item>
-      <item>DEFAULT_EXEC_PATH</item>
-      <item>DEFAULT_LOADPATH</item>
-      <item>default_save_format</item>
-      <item>echo_executing_commands</item>
-      <item>EDITOR</item>
-      <item>EXEC_PATH</item>
-      <item>FFTW_WISDOM_PROGRAM</item>
-      <item>fixed_point_format</item>
-      <item>gnuplot_binary</item>
-      <item>gnuplot_command_axes</item>
-      <item>gnuplot_command_end</item>
-      <item>gnuplot_command_plot</item>
-      <item>gnuplot_command_replot</item>
-      <item>gnuplot_command_splot</item>
-      <item>gnuplot_command_title</item>
-      <item>gnuplot_command_using</item>
-      <item>gnuplot_command_with</item>
-      <item>gnuplot_has_frames</item>
-      <item>history_file</item>
-      <item>history_size</item>
-      <item>ignore_function_time_stamp</item>
-      <item>IMAGEPATH</item>
-      <item>INFO_FILE</item>
-      <item>INFO_PROGRAM</item>
-      <item>__kluge_procbuf_delay__</item>
-      <item>LOADPATH</item>
-      <item>MAKEINFO_PROGRAM</item>
-      <item>max_recursion_depth</item>
-      <item>octave_core_file_format</item>
-      <item>octave_core_file_limit</item>
-      <item>octave_core_file_name</item>
-      <item>output_max_field_width</item>
-      <item>output_precision</item>
-      <item>page_output_immediately</item>
-      <item>PAGER</item>
-      <item>page_screen_output</item>
-      <item>print_answer_id_name</item>
-      <item>print_empty_dimensions</item>
-      <item>print_rhs_assign_val</item>
-      <item>PS1</item>
-      <item>PS2</item>
-      <item>PS4</item>
-      <item>save_header_format_string</item>
-      <item>save_precision</item>
-      <item>saving_history</item>
-      <item>sighup_dumps_octave_core</item>
-      <item>sigterm_dumps_octave_core</item>
-      <item>silent_functions</item>
-      <item>split_long_rows</item>
-      <item>string_fill_char</item>
-      <item>struct_levels_to_print</item>
-      <item>suppress_verbose_help_message</item>
-      <item>variables_can_hide_functions</item>
-      <item>warn_assign_as_truth_value</item>
-      <item>warn_divide_by_zero</item>
-      <item>warn_empty_list_elements</item>
-      <item>warn_fortran_indexing</item>
-      <item>warn_function_name_clash</item>
-      <item>warn_future_time_stamp</item>
-      <item>warn_imag_to_real</item>
-      <item>warn_matlab_incompatible</item>
-      <item>warn_missing_semicolon</item>
-      <item>warn_neg_dim_as_zero</item>
-      <item>warn_num_to_str</item>
-      <item>warn_precedence_change</item>
-      <item>warn_reload_forces_clear</item>
-      <item>warn_resize_on_range_error</item>
-      <item>warn_separator_insert</item>
-      <item>warn_single_quote_string</item>
-      <item>warn_str_to_num</item>
-      <item>warn_undefined_return_values</item>
-      <item>warn_variable_switch_label</item>
-      <item>whos_line_format</item>
-    </list>
-    
-    <list name="commands">
-      <item>casesen</item>
-      <item>cd</item>
-      <item>chdir</item>
-      <item>clear</item>
-      <item>dbclear</item>
-      <item>dbstatus</item>
-      <item>dbstop</item>
-      <item>dbtype</item>
-      <item>dbwhere</item>
-      <item>diary</item>
-      <item>echo</item>
-      <item>edit_history</item>
-      <item>__end__</item>
-      <item>format</item>
-      <item>gset</item>
-      <item>gshow</item>
-      <item>help</item>
-      <item>history</item>
-      <item>hold</item>
-      <item>iskeyword</item>
-      <item>isvarname</item>
-      <item>load</item>
-      <item>ls</item>
-      <item>mark_as_command</item>
-      <item>mislocked</item>
-      <item>mlock</item>
-      <item>more</item>
-      <item>munlock</item>
-      <item>run_history</item>
-      <item>save</item>
-      <item>set</item>
-      <item>show</item>
-      <item>type</item>
-      <item>unmark_command</item>
-      <item>which</item>
-      <item>who</item>
-      <item>whos</item>
-    </list>
-    
-    <list name="functions">
-      <item>abs</item>
-      <item>acos</item>
-      <item>acosh</item>
-      <item>all</item>
-      <item>angle</item>
-      <item>any</item>
-      <item>append</item>
-      <item>arg</item>
-      <item>argnames</item>
-      <item>asin</item>
-      <item>asinh</item>
-      <item>assignin</item>
-      <item>atan</item>
-      <item>atan2</item>
-      <item>atanh</item>
-      <item>atexit</item>
-      <item>bitand</item>
-      <item>bitmax</item>
-      <item>bitor</item>
-      <item>bitshift</item>
-      <item>bitxor</item>
-      <item>casesen</item>
-      <item>cat</item>
-      <item>cd</item>
-      <item>ceil</item>
-      <item>cell</item>
-      <item>cell2struct</item>
-      <item>cellstr</item>
-      <item>char</item>
-      <item>chdir</item>
-      <item>class</item>
-      <item>clc</item>
-      <item>clear</item>
-      <item>clearplot</item>
-      <item>clg</item>
-      <item>closeplot</item>
-      <item>completion_matches</item>
-      <item>conj</item>
-      <item>conv</item>
-      <item>convmtx</item>
-      <item>cos</item>
-      <item>cosh</item>
-      <item>cumprod</item>
-      <item>cumsum</item>
-      <item>dbclear</item>
-      <item>dbstatus</item>
-      <item>dbstop</item>
-      <item>dbtype</item>
-      <item>dbwhere</item>
-      <item>deconv</item>
-      <item>det</item>
-      <item>dftmtx</item>
-      <item>diag</item>
-      <item>diary</item>
-      <item>disp</item>
-      <item>document</item>
-      <item>do_string_escapes</item>
-      <item>double</item>
-      <item>dup2</item>
-      <item>echo</item>
-      <item>edit_history</item>
-      <item>__end__</item>
-      <item>erf</item>
-      <item>erfc</item>
-      <item>ERRNO</item>
-      <item>error</item>
-      <item>__error_text__</item>
-      <item>error_text</item>
-      <item>eval</item>
-      <item>evalin</item>
-      <item>exec</item>
-      <item>exist</item>
-      <item>exit</item>
-      <item>exp</item>
-      <item>eye</item>
-      <item>fclose</item>
-      <item>fcntl</item>
-      <item>fdisp</item>
-      <item>feof</item>
-      <item>ferror</item>
-      <item>feval</item>
-      <item>fflush</item>
-      <item>fft</item>
-      <item>fgetl</item>
-      <item>fgets</item>
-      <item>fieldnames</item>
-      <item>file_in_loadpath</item>
-      <item>file_in_path</item>
-      <item>filter</item>
-      <item>find</item>
-      <item>find_first_of_in_loadpath</item>
-      <item>finite</item>
-      <item>fix</item>
-      <item>floor</item>
-      <item>fmod</item>
-      <item>fnmatch</item>
-      <item>fopen</item>
-      <item>fork</item>
-      <item>format</item>
-      <item>formula</item>
-      <item>fprintf</item>
-      <item>fputs</item>
-      <item>fread</item>
-      <item>freport</item>
-      <item>frewind</item>
-      <item>fscanf</item>
-      <item>fseek</item>
-      <item>ftell</item>
-      <item>func2str</item>
-      <item>functions</item>
-      <item>fwrite</item>
-      <item>gamma</item>
-      <item>gammaln</item>
-      <item>getegid</item>
-      <item>getenv</item>
-      <item>geteuid</item>
-      <item>getgid</item>
-      <item>getpgrp</item>
-      <item>getpid</item>
-      <item>getppid</item>
-      <item>getuid</item>
-      <item>glob</item>
-      <item>graw</item>
-      <item>gset</item>
-      <item>gshow</item>
-      <item>help</item>
-      <item>history</item>
-      <item>hold</item>
-      <item>home</item>
-      <item>horzcat</item>
-      <item>ifft</item>
-      <item>imag</item>
-      <item>inline</item>
-      <item>input</item>
-      <item>input_event_hook</item>
-      <item>int16</item>
-      <item>int32</item>
-      <item>int64</item>
-      <item>int8</item>
-      <item>intmax</item>
-      <item>intmin</item>
-      <item>inv</item>
-      <item>inverse</item>
-      <item>ipermute</item>
-      <item>isalnum</item>
-      <item>isalpha</item>
-      <item>isascii</item>
-      <item>isbool</item>
-      <item>iscell</item>
-      <item>iscellstr</item>
-      <item>ischar</item>
-      <item>iscntrl</item>
-      <item>iscomplex</item>
-      <item>isdigit</item>
-      <item>isempty</item>
-      <item>isfield</item>
-      <item>isfinite</item>
-      <item>isglobal</item>
-      <item>isgraph</item>
-      <item>ishold</item>
-      <item>isieee</item>
-      <item>isinf</item>
-      <item>iskeyword</item>
-      <item>islist</item>
-      <item>islogical</item>
-      <item>islower</item>
-      <item>ismatrix</item>
-      <item>isna</item>
-      <item>isnan</item>
-      <item>is_nan_or_na</item>
-      <item>isnumeric</item>
-      <item>isprint</item>
-      <item>ispunct</item>
-      <item>isreal</item>
-      <item>isspace</item>
-      <item>isstream</item>
-      <item>isstreamoff</item>
-      <item>isstruct</item>
-      <item>isupper</item>
-      <item>isvarname</item>
-      <item>isxdigit</item>
-      <item>kbhit</item>
-      <item>keyboard</item>
-      <item>kill</item>
-      <item>lasterr</item>
-      <item>lastwarn</item>
-      <item>length</item>
-      <item>lgamma</item>
-      <item>link</item>
-      <item>linspace</item>
-      <item>list</item>
-      <item>load</item>
-      <item>log</item>
-      <item>log10</item>
-      <item>ls</item>
-      <item>lstat</item>
-      <item>lu</item>
-      <item>mark_as_command</item>
-      <item>mislocked</item>
-      <item>mkdir</item>
-      <item>mkfifo</item>
-      <item>mkstemp</item>
-      <item>mlock</item>
-      <item>more</item>
-      <item>munlock</item>
-      <item>nargin</item>
-      <item>nargout</item>
-      <item>native_float_format</item>
-      <item>ndims</item>
-      <item>nth</item>
-      <item>numel</item>
-      <item>octave_config_info</item>
-      <item>octave_tmp_file_name</item>
-      <item>ones</item>
-      <item>pause</item>
-      <item>pclose</item>
-      <item>permute</item>
-      <item>pipe</item>
-      <item>popen</item>
-      <item>printf</item>
-      <item>__print_symbol_info__</item>
-      <item>__print_symtab_info__</item>
-      <item>prod</item>
-      <item>purge_tmp_files</item>
-      <item>putenv</item>
-      <item>puts</item>
-      <item>pwd</item>
-      <item>quit</item>
-      <item>rank</item>
-      <item>readdir</item>
-      <item>readlink</item>
-      <item>read_readline_init_file</item>
-      <item>real</item>
-      <item>rehash</item>
-      <item>rename</item>
-      <item>reshape</item>
-      <item>reverse</item>
-      <item>rmdir</item>
-      <item>rmfield</item>
-      <item>roots</item>
-      <item>round</item>
-      <item>run_history</item>
-      <item>save</item>
-      <item>scanf</item>
-      <item>set</item>
-      <item>shell_cmd</item>
-      <item>show</item>
-      <item>sign</item>
-      <item>sin</item>
-      <item>sinh</item>
-      <item>size</item>
-      <item>sizeof</item>
-      <item>sleep</item>
-      <item>sort</item>
-      <item>source</item>
-      <item>splice</item>
-      <item>sprintf</item>
-      <item>sqrt</item>
-      <item>squeeze</item>
-      <item>sscanf</item>
-      <item>stat</item>
-      <item>str2func</item>
-      <item>streamoff</item>
-      <item>struct</item>
-      <item>struct2cell</item>
-      <item>sum</item>
-      <item>sumsq</item>
-      <item>symlink</item>
-      <item>system</item>
-      <item>tan</item>
-      <item>tanh</item>
-      <item>tilde_expand</item>
-      <item>tmpfile</item>
-      <item>tmpnam</item>
-      <item>toascii</item>
-      <item>__token_count__</item>
-      <item>tolower</item>
-      <item>toupper</item>
-      <item>type</item>
-      <item>typeinfo</item>
-      <item>uint16</item>
-      <item>uint32</item>
-      <item>uint64</item>
-      <item>uint8</item>
-      <item>umask</item>
-      <item>undo_string_escapes</item>
-      <item>unlink</item>
-      <item>unmark_command</item>
-      <item>usage</item>
-      <item>usleep</item>
-      <item>va_arg</item>
-      <item>va_start</item>
-      <item>vectorize</item>
-      <item>vertcat</item>
-      <item>vr_val</item>
-      <item>waitpid</item>
-      <item>warning</item>
-      <item>warranty</item>
-      <item>which</item>
-      <item>who</item>
-      <item>whos</item>
-      <item>zeros</item>
-      <item>airy</item>
-      <item>balance</item>
-      <item>besselh</item>
-      <item>besseli</item>
-      <item>besselj</item>
-      <item>besselk</item>
-      <item>bessely</item>
-      <item>betainc</item>
-      <item>chol</item>
-      <item>colloc</item>
-      <item>daspk</item>
-      <item>daspk_options</item>
-      <item>dasrt</item>
-      <item>dasrt_options</item>
-      <item>dassl</item>
-      <item>dassl_options</item>
-      <item>det</item>
-      <item>eig</item>
-      <item>endgrent</item>
-      <item>endpwent</item>
-      <item>expm</item>
-      <item>fft</item>
-      <item>fft2</item>
-      <item>fftn</item>
-      <item>fftw_wisdom</item>
-      <item>filter</item>
-      <item>find</item>
-      <item>fsolve</item>
-      <item>fsolve_options</item>
-      <item>gammainc</item>
-      <item>gcd</item>
-      <item>getgrent</item>
-      <item>getgrgid</item>
-      <item>getgrnam</item>
-      <item>getpwent</item>
-      <item>getpwnam</item>
-      <item>getpwuid</item>
-      <item>getrusage</item>
-      <item>givens</item>
-      <item>gmtime</item>
-      <item>hess</item>
-      <item>ifft</item>
-      <item>ifft2</item>
-      <item>ifftn</item>
-      <item>inv</item>
-      <item>inverse</item>
-      <item>kron</item>
-      <item>localtime</item>
-      <item>lpsolve</item>
-      <item>lpsolve_options</item>
-      <item>lsode</item>
-      <item>lsode_options</item>
-      <item>lu</item>
-      <item>max</item>
-      <item>min</item>
-      <item>minmax</item>
-      <item>mktime</item>
-      <item>odessa</item>
-      <item>odessa_options</item>
-      <item>pinv</item>
-      <item>qr</item>
-      <item>quad</item>
-      <item>quad_options</item>
-      <item>qz</item>
-      <item>rand</item>
-      <item>randn</item>
-      <item>schur</item>
-      <item>setgrent</item>
-      <item>setpwent</item>
-      <item>sort</item>
-      <item>sqrtm</item>
-      <item>strftime</item>
-      <item>strptime</item>
-      <item>svd</item>
-      <item>syl</item>
-      <item>time</item>
-      <item>abcddim</item>
-      <item>__abcddims__</item>
-      <item>acot</item>
-      <item>acoth</item>
-      <item>acsc</item>
-      <item>acsch</item>
-      <item>analdemo</item>
-      <item>anova</item>
-      <item>arch_fit</item>
-      <item>arch_rnd</item>
-      <item>arch_test</item>
-      <item>are</item>
-      <item>arma_rnd</item>
-      <item>asctime</item>
-      <item>asec</item>
-      <item>asech</item>
-      <item>autocor</item>
-      <item>autocov</item>
-      <item>autoreg_matrix</item>
-      <item>axis</item>
-      <item>axis2dlim</item>
-      <item>__axis_label__</item>
-      <item>bar</item>
-      <item>bartlett</item>
-      <item>bartlett_test</item>
-      <item>base2dec</item>
-      <item>bddemo</item>
-      <item>beep</item>
-      <item>bessel</item>
-      <item>beta</item>
-      <item>beta_cdf</item>
-      <item>betai</item>
-      <item>beta_inv</item>
-      <item>beta_pdf</item>
-      <item>beta_rnd</item>
-      <item>bin2dec</item>
-      <item>bincoeff</item>
-      <item>binomial_cdf</item>
-      <item>binomial_inv</item>
-      <item>binomial_pdf</item>
-      <item>binomial_rnd</item>
-      <item>bitcmp</item>
-      <item>bitget</item>
-      <item>bitset</item>
-      <item>blackman</item>
-      <item>blanks</item>
-      <item>bode</item>
-      <item>bode_bounds</item>
-      <item>__bodquist__</item>
-      <item>bottom_title</item>
-      <item>bug_report</item>
-      <item>buildssic</item>
-      <item>c2d</item>
-      <item>cart2pol</item>
-      <item>cart2sph</item>
-      <item>cauchy_cdf</item>
-      <item>cauchy_inv</item>
-      <item>cauchy_pdf</item>
-      <item>cauchy_rnd</item>
-      <item>cellidx</item>
-      <item>center</item>
-      <item>chisquare_cdf</item>
-      <item>chisquare_inv</item>
-      <item>chisquare_pdf</item>
-      <item>chisquare_rnd</item>
-      <item>chisquare_test_homogeneity</item>
-      <item>chisquare_test_independence</item>
-      <item>circshift</item>
-      <item>clock</item>
-      <item>cloglog</item>
-      <item>close</item>
-      <item>colormap</item>
-      <item>columns</item>
-      <item>com2str</item>
-      <item>comma</item>
-      <item>common_size</item>
-      <item>commutation_matrix</item>
-      <item>compan</item>
-      <item>complement</item>
-      <item>computer</item>
-      <item>cond</item>
-      <item>contour</item>
-      <item>controldemo</item>
-      <item>conv</item>
-      <item>cor</item>
-      <item>corrcoef</item>
-      <item>cor_test</item>
-      <item>cot</item>
-      <item>coth</item>
-      <item>cov</item>
-      <item>cputime</item>
-      <item>create_set</item>
-      <item>cross</item>
-      <item>csc</item>
-      <item>csch</item>
-      <item>ctime</item>
-      <item>ctrb</item>
-      <item>cut</item>
-      <item>d2c</item>
-      <item>damp</item>
-      <item>dare</item>
-      <item>date</item>
-      <item>dcgain</item>
-      <item>deal</item>
-      <item>deblank</item>
-      <item>dec2base</item>
-      <item>dec2bin</item>
-      <item>dec2hex</item>
-      <item>deconv</item>
-      <item>delete</item>
-      <item>DEMOcontrol</item>
-      <item>demoquat</item>
-      <item>detrend</item>
-      <item>dezero</item>
-      <item>dgkfdemo</item>
-      <item>dgram</item>
-      <item>dhinfdemo</item>
-      <item>diff</item>
-      <item>diffpara</item>
-      <item>dir</item>
-      <item>discrete_cdf</item>
-      <item>discrete_inv</item>
-      <item>discrete_pdf</item>
-      <item>discrete_rnd</item>
-      <item>dkalman</item>
-      <item>dlqe</item>
-      <item>dlqg</item>
-      <item>dlqr</item>
-      <item>dlyap</item>
-      <item>dmr2d</item>
-      <item>dmult</item>
-      <item>dot</item>
-      <item>dre</item>
-      <item>dump_prefs</item>
-      <item>duplication_matrix</item>
-      <item>durbinlevinson</item>
-      <item>empirical_cdf</item>
-      <item>empirical_inv</item>
-      <item>empirical_pdf</item>
-      <item>empirical_rnd</item>
-      <item>erfinv</item>
-      <item>__errcomm__</item>
-      <item>errorbar</item>
-      <item>__errplot__</item>
-      <item>etime</item>
-      <item>exponential_cdf</item>
-      <item>exponential_inv</item>
-      <item>exponential_pdf</item>
-      <item>exponential_rnd</item>
-      <item>f_cdf</item>
-      <item>fftconv</item>
-      <item>fftfilt</item>
-      <item>fftshift</item>
-      <item>figure</item>
-      <item>fileparts</item>
-      <item>findstr</item>
-      <item>f_inv</item>
-      <item>fir2sys</item>
-      <item>flipdim</item>
-      <item>fliplr</item>
-      <item>flipud</item>
-      <item>flops</item>
-      <item>f_pdf</item>
-      <item>fractdiff</item>
-      <item>frdemo</item>
-      <item>freqchkw</item>
-      <item>__freqresp__</item>
-      <item>freqz</item>
-      <item>freqz_plot</item>
-      <item>f_rnd</item>
-      <item>f_test_regression</item>
-      <item>fullfile</item>
-      <item>fv</item>
-      <item>fvl</item>
-      <item>gamma_cdf</item>
-      <item>gammai</item>
-      <item>gamma_inv</item>
-      <item>gamma_pdf</item>
-      <item>gamma_rnd</item>
-      <item>geometric_cdf</item>
-      <item>geometric_inv</item>
-      <item>geometric_pdf</item>
-      <item>geometric_rnd</item>
-      <item>gls</item>
-      <item>gram</item>
-      <item>gray</item>
-      <item>gray2ind</item>
-      <item>grid</item>
-      <item>h2norm</item>
-      <item>h2syn</item>
-      <item>hamming</item>
-      <item>hankel</item>
-      <item>hanning</item>
-      <item>hex2dec</item>
-      <item>hilb</item>
-      <item>hinf_ctr</item>
-      <item>hinfdemo</item>
-      <item>hinfnorm</item>
-      <item>hinfsyn</item>
-      <item>hinfsyn_chk</item>
-      <item>hinfsyn_ric</item>
-      <item>hist</item>
-      <item>hotelling_test</item>
-      <item>hotelling_test_2</item>
-      <item>housh</item>
-      <item>hsv2rgb</item>
-      <item>hurst</item>
-      <item>hypergeometric_cdf</item>
-      <item>hypergeometric_inv</item>
-      <item>hypergeometric_pdf</item>
-      <item>hypergeometric_rnd</item>
-      <item>image</item>
-      <item>imagesc</item>
-      <item>impulse</item>
-      <item>imshow</item>
-      <item>ind2gray</item>
-      <item>ind2rgb</item>
-      <item>ind2sub</item>
-      <item>index</item>
-      <item>int2str</item>
-      <item>intersection</item>
-      <item>invhilb</item>
-      <item>iqr</item>
-      <item>irr</item>
-      <item>isa</item>
-      <item>is_abcd</item>
-      <item>is_bool</item>
-      <item>is_complex</item>
-      <item>is_controllable</item>
-      <item>isdefinite</item>
-      <item>is_detectable</item>
-      <item>is_dgkf</item>
-      <item>is_digital</item>
-      <item>is_duplicate_entry</item>
-      <item>is_global</item>
-      <item>is_leap_year</item>
-      <item>isletter</item>
-      <item>is_list</item>
-      <item>is_matrix</item>
-      <item>is_observable</item>
-      <item>ispc</item>
-      <item>is_sample</item>
-      <item>is_scalar</item>
-      <item>isscalar</item>
-      <item>is_signal_list</item>
-      <item>is_siso</item>
-      <item>is_square</item>
-      <item>issquare</item>
-      <item>is_stabilizable</item>
-      <item>is_stable</item>
-      <item>isstr</item>
-      <item>is_stream</item>
-      <item>is_struct</item>
-      <item>is_symmetric</item>
-      <item>issymmetric</item>
-      <item>isunix</item>
-      <item>is_vector</item>
-      <item>isvector</item>
-      <item>jet707</item>
-      <item>kendall</item>
-      <item>kolmogorov_smirnov_cdf</item>
-      <item>kolmogorov_smirnov_test</item>
-      <item>kolmogorov_smirnov_test_2</item>
-      <item>kruskal_wallis_test</item>
-      <item>krylov</item>
-      <item>krylovb</item>
-      <item>kurtosis</item>
-      <item>laplace_cdf</item>
-      <item>laplace_inv</item>
-      <item>laplace_pdf</item>
-      <item>laplace_rnd</item>
-      <item>lcm</item>
-      <item>lin2mu</item>
-      <item>listidx</item>
-      <item>list_primes</item>
-      <item>loadaudio</item>
-      <item>loadimage</item>
-      <item>log2</item>
-      <item>logical</item>
-      <item>logistic_cdf</item>
-      <item>logistic_inv</item>
-      <item>logistic_pdf</item>
-      <item>logistic_regression</item>
-      <item>logistic_regression_derivatives</item>
-      <item>logistic_regression_likelihood</item>
-      <item>logistic_rnd</item>
-      <item>logit</item>
-      <item>loglog</item>
-      <item>loglogerr</item>
-      <item>logm</item>
-      <item>lognormal_cdf</item>
-      <item>lognormal_inv</item>
-      <item>lognormal_pdf</item>
-      <item>lognormal_rnd</item>
-      <item>logspace</item>
-      <item>lower</item>
-      <item>lqe</item>
-      <item>lqg</item>
-      <item>lqr</item>
-      <item>lsim</item>
-      <item>ltifr</item>
-      <item>lyap</item>
-      <item>mahalanobis</item>
-      <item>manova</item>
-      <item>mcnemar_test</item>
-      <item>mean</item>
-      <item>meansq</item>
-      <item>median</item>
-      <item>menu</item>
-      <item>mesh</item>
-      <item>meshdom</item>
-      <item>meshgrid</item>
-      <item>minfo</item>
-      <item>mod</item>
-      <item>moddemo</item>
-      <item>moment</item>
-      <item>mplot</item>
-      <item>mu2lin</item>
-      <item>multiplot</item>
-      <item>nargchk</item>
-      <item>nextpow2</item>
-      <item>nichols</item>
-      <item>norm</item>
-      <item>normal_cdf</item>
-      <item>normal_inv</item>
-      <item>normal_pdf</item>
-      <item>normal_rnd</item>
-      <item>not</item>
-      <item>nper</item>
-      <item>npv</item>
-      <item>ntsc2rgb</item>
-      <item>null</item>
-      <item>num2str</item>
-      <item>nyquist</item>
-      <item>obsv</item>
-      <item>ocean</item>
-      <item>ols</item>
-      <item>oneplot</item>
-      <item>ord2</item>
-      <item>orth</item>
-      <item>__outlist__</item>
-      <item>pack</item>
-      <item>packedform</item>
-      <item>packsys</item>
-      <item>parallel</item>
-      <item>paren</item>
-      <item>pascal_cdf</item>
-      <item>pascal_inv</item>
-      <item>pascal_pdf</item>
-      <item>pascal_rnd</item>
-      <item>path</item>
-      <item>periodogram</item>
-      <item>perror</item>
-      <item>place</item>
-      <item>playaudio</item>
-      <item>plot</item>
-      <item>plot_border</item>
-      <item>__plr__</item>
-      <item>__plr1__</item>
-      <item>__plr2__</item>
-      <item>__plt__</item>
-      <item>__plt1__</item>
-      <item>__plt2__</item>
-      <item>__plt2mm__</item>
-      <item>__plt2mv__</item>
-      <item>__plt2ss__</item>
-      <item>__plt2vm__</item>
-      <item>__plt2vv__</item>
-      <item>__pltopt__</item>
-      <item>__pltopt1__</item>
-      <item>pmt</item>
-      <item>poisson_cdf</item>
-      <item>poisson_inv</item>
-      <item>poisson_pdf</item>
-      <item>poisson_rnd</item>
-      <item>pol2cart</item>
-      <item>polar</item>
-      <item>poly</item>
-      <item>polyder</item>
-      <item>polyderiv</item>
-      <item>polyfit</item>
-      <item>polyinteg</item>
-      <item>polyout</item>
-      <item>polyreduce</item>
-      <item>polyval</item>
-      <item>polyvalm</item>
-      <item>popen2</item>
-      <item>postpad</item>
-      <item>pow2</item>
-      <item>ppplot</item>
-      <item>prepad</item>
-      <item>probit</item>
-      <item>prompt</item>
-      <item>prop_test_2</item>
-      <item>pv</item>
-      <item>pvl</item>
-      <item>pzmap</item>
-      <item>qconj</item>
-      <item>qcoordinate_plot</item>
-      <item>qderiv</item>
-      <item>qderivmat</item>
-      <item>qinv</item>
-      <item>qmult</item>
-      <item>qqplot</item>
-      <item>qtrans</item>
-      <item>qtransv</item>
-      <item>qtransvmat</item>
-      <item>quaternion</item>
-      <item>qzhess</item>
-      <item>qzval</item>
-      <item>randperm</item>
-      <item>range</item>
-      <item>rank</item>
-      <item>ranks</item>
-      <item>rate</item>
-      <item>record</item>
-      <item>rectangle_lw</item>
-      <item>rectangle_sw</item>
-      <item>rem</item>
-      <item>repmat</item>
-      <item>residue</item>
-      <item>rgb2hsv</item>
-      <item>rgb2ind</item>
-      <item>rgb2ntsc</item>
-      <item>rindex</item>
-      <item>rldemo</item>
-      <item>rlocus</item>
-      <item>roots</item>
-      <item>rot90</item>
-      <item>rotdim</item>
-      <item>rotg</item>
-      <item>rows</item>
-      <item>run_cmd</item>
-      <item>run_count</item>
-      <item>run_test</item>
-      <item>saveaudio</item>
-      <item>saveimage</item>
-      <item>sec</item>
-      <item>sech</item>
-      <item>semicolon</item>
-      <item>semilogx</item>
-      <item>semilogxerr</item>
-      <item>semilogy</item>
-      <item>semilogyerr</item>
-      <item>series</item>
-      <item>setaudio</item>
-      <item>setstr</item>
-      <item>shg</item>
-      <item>shift</item>
-      <item>shiftdim</item>
-      <item>sign_test</item>
-      <item>sinc</item>
-      <item>sinetone</item>
-      <item>sinewave</item>
-      <item>skewness</item>
-      <item>sombrero</item>
-      <item>sortcom</item>
-      <item>spearman</item>
-      <item>spectral_adf</item>
-      <item>spectral_xdf</item>
-      <item>spencer</item>
-      <item>sph2cart</item>
-      <item>split</item>
-      <item>ss</item>
-      <item>ss2sys</item>
-      <item>ss2tf</item>
-      <item>ss2zp</item>
-      <item>stairs</item>
-      <item>starp</item>
-      <item>statistics</item>
-      <item>std</item>
-      <item>stdnormal_cdf</item>
-      <item>stdnormal_inv</item>
-      <item>stdnormal_pdf</item>
-      <item>stdnormal_rnd</item>
-      <item>step</item>
-      <item>__stepimp__</item>
-      <item>stft</item>
-      <item>str2mat</item>
-      <item>str2num</item>
-      <item>strappend</item>
-      <item>strcat</item>
-      <item>strcmp</item>
-      <item>strerror</item>
-      <item>strjust</item>
-      <item>strrep</item>
-      <item>struct_contains</item>
-      <item>struct_elements</item>
-      <item>studentize</item>
-      <item>sub2ind</item>
-      <item>subplot</item>
-      <item>substr</item>
-      <item>subwindow</item>
-      <item>swap</item>
-      <item>swapcols</item>
-      <item>swaprows</item>
-      <item>sylvester_matrix</item>
-      <item>synthesis</item>
-      <item>sys2fir</item>
-      <item>sys2ss</item>
-      <item>sys2tf</item>
-      <item>sys2zp</item>
-      <item>sysadd</item>
-      <item>sysappend</item>
-      <item>syschnames</item>
-      <item>__syschnamesl__</item>
-      <item>syschtsam</item>
-      <item>__sysconcat__</item>
-      <item>sysconnect</item>
-      <item>syscont</item>
-      <item>__syscont_disc__</item>
-      <item>__sysdefioname__</item>
-      <item>__sysdefstname__</item>
-      <item>sysdimensions</item>
-      <item>sysdisc</item>
-      <item>sysdup</item>
-      <item>sysgetsignals</item>
-      <item>sysgettsam</item>
-      <item>sysgettype</item>
-      <item>sysgroup</item>
-      <item>__sysgroupn__</item>
-      <item>sysidx</item>
-      <item>sysmin</item>
-      <item>sysmult</item>
-      <item>sysout</item>
-      <item>sysprune</item>
-      <item>sysreorder</item>
-      <item>sysrepdemo</item>
-      <item>sysscale</item>
-      <item>syssetsignals</item>
-      <item>syssub</item>
-      <item>sysupdate</item>
-      <item>table</item>
-      <item>t_cdf</item>
-      <item>tempdir</item>
-      <item>tempname</item>
-      <item>texas_lotto</item>
-      <item>tf</item>
-      <item>tf2ss</item>
-      <item>tf2sys</item>
-      <item>__tf2sysl__</item>
-      <item>tf2zp</item>
-      <item>__tfl__</item>
-      <item>tfout</item>
-      <item>tic</item>
-      <item>t_inv</item>
-      <item>title</item>
-      <item>toc</item>
-      <item>toeplitz</item>
-      <item>top_title</item>
-      <item>t_pdf</item>
-      <item>trace</item>
-      <item>triangle_lw</item>
-      <item>triangle_sw</item>
-      <item>tril</item>
-      <item>triu</item>
-      <item>t_rnd</item>
-      <item>t_test</item>
-      <item>t_test_2</item>
-      <item>t_test_regression</item>
-      <item>tzero</item>
-      <item>tzero2</item>
-      <item>ugain</item>
-      <item>uniform_cdf</item>
-      <item>uniform_inv</item>
-      <item>uniform_pdf</item>
-      <item>uniform_rnd</item>
-      <item>union</item>
-      <item>unix</item>
-      <item>unpacksys</item>
-      <item>unwrap</item>
-      <item>upper</item>
-      <item>u_test</item>
-      <item>values</item>
-      <item>vander</item>
-      <item>var</item>
-      <item>var_test</item>
-      <item>vec</item>
-      <item>vech</item>
-      <item>version</item>
-      <item>vol</item>
-      <item>weibull_cdf</item>
-      <item>weibull_inv</item>
-      <item>weibull_pdf</item>
-      <item>weibull_rnd</item>
-      <item>welch_test</item>
-      <item>wgt1o</item>
-      <item>wiener_rnd</item>
-      <item>wilcoxon_test</item>
-      <item>xlabel</item>
-      <item>xor</item>
-      <item>ylabel</item>
-      <item>yulewalker</item>
-      <item>zgfmul</item>
-      <item>zgfslv</item>
-      <item>zginit</item>
-      <item>__zgpbal__</item>
-      <item>zgreduce</item>
-      <item>zgrownorm</item>
-      <item>zgscal</item>
-      <item>zgsgiv</item>
-      <item>zgshsr</item>
-      <item>zlabel</item>
-      <item>zp</item>
-      <item>zp2ss</item>
-      <item>__zp2ssg2__</item>
-      <item>zp2sys</item>
-      <item>zp2tf</item>
-      <item>zpout</item>
-      <item>z_test</item>
-      <item>z_test_2</item>
-    </list>
-    
-    <list name="forge">
-      <item>airy_Ai</item>
-      <item>airy_Ai_deriv</item>
-      <item>airy_Ai_deriv_scaled</item>
-      <item>airy_Ai_scaled</item>
-      <item>airy_Bi</item>
-      <item>airy_Bi_deriv</item>
-      <item>airy_Bi_deriv_scaled</item>
-      <item>airy_Bi_scaled</item>
-      <item>airy_zero_Ai</item>
-      <item>airy_zero_Ai_deriv</item>
-      <item>airy_zero_Bi</item>
-      <item>airy_zero_Bi_deriv</item>
-      <item>atanint</item>
-      <item>bchdeco</item>
-      <item>bchenco</item>
-      <item>bessel_il_scaled</item>
-      <item>bessel_In</item>
-      <item>bessel_In_scaled</item>
-      <item>bessel_Inu</item>
-      <item>bessel_Inu_scaled</item>
-      <item>bessel_jl</item>
-      <item>bessel_Jn</item>
-      <item>bessel_Jnu</item>
-      <item>bessel_kl_scaled</item>
-      <item>bessel_Kn</item>
-      <item>bessel_Kn_scaled</item>
-      <item>bessel_Knu</item>
-      <item>bessel_Knu_scaled</item>
-      <item>bessel_lnKnu</item>
-      <item>bessel_yl</item>
-      <item>bessel_Yn</item>
-      <item>bessel_Ynu</item>
-      <item>bessel_zero_J0</item>
-      <item>bessel_zero_J1</item>
-      <item>beta_gsl</item>
-      <item>bfgsmin</item>
-      <item>bisectionstep</item>
-      <item>builtin</item>
-      <item>bwfill</item>
-      <item>bwlabel</item>
-      <item>cell2csv</item>
-      <item>celleval</item>
-      <item>Chi</item>
-      <item>chol</item>
-      <item>Ci</item>
-      <item>clausen</item>
-      <item>conicalP_0</item>
-      <item>conicalP_1</item>
-      <item>conicalP_half</item>
-      <item>conicalP_mhalf</item>
-      <item>conv2</item>
-      <item>cordflt2</item>
-      <item>coupling_3j</item>
-      <item>coupling_6j</item>
-      <item>coupling_9j</item>
-      <item>csv2cell</item>
-      <item>csvconcat</item>
-      <item>csvexplode</item>
-      <item>cyclgen</item>
-      <item>cyclpoly</item>
-      <item>dawson</item>
-      <item>debye_1</item>
-      <item>debye_2</item>
-      <item>debye_3</item>
-      <item>debye_4</item>
-      <item>deref</item>
-      <item>dispatch</item>
-      <item>dispatch_help</item>
-      <item>display_fixed_operations</item>
-      <item>dlmread</item>
-      <item>ellint_Ecomp</item>
-      <item>ellint_Kcomp</item>
-      <item>ellipj</item>
-      <item>erfc_gsl</item>
-      <item>erf_gsl</item>
-      <item>erf_Q</item>
-      <item>erf_Z</item>
-      <item>_errcore</item>
-      <item>eta</item>
-      <item>eta_int</item>
-      <item>expint_3</item>
-      <item>expint_E1</item>
-      <item>expint_E2</item>
-      <item>expint_Ei</item>
-      <item>expm1</item>
-      <item>exp_mult</item>
-      <item>exprel</item>
-      <item>exprel_2</item>
-      <item>exprel_n</item>
-      <item>fabs</item>
-      <item>fangle</item>
-      <item>farg</item>
-      <item>fatan2</item>
-      <item>fceil</item>
-      <item>fconj</item>
-      <item>fcos</item>
-      <item>fcosh</item>
-      <item>fcumprod</item>
-      <item>fcumsum</item>
-      <item>fdiag</item>
-      <item>fermi_dirac_3half</item>
-      <item>fermi_dirac_half</item>
-      <item>fermi_dirac_inc_0</item>
-      <item>fermi_dirac_int</item>
-      <item>fermi_dirac_mhalf</item>
-      <item>fexp</item>
-      <item>ffloor</item>
-      <item>fimag</item>
-      <item>finitedifference</item>
-      <item>fixed</item>
-      <item>flog</item>
-      <item>flog10</item>
-      <item>fprod</item>
-      <item>freal</item>
-      <item>freshape</item>
-      <item>fround</item>
-      <item>fsin</item>
-      <item>fsinh</item>
-      <item>fsqrt</item>
-      <item>fsum</item>
-      <item>fsumsq</item>
-      <item>ftan</item>
-      <item>ftanh</item>
-      <item>full</item>
-      <item>gamma_gsl</item>
-      <item>gamma_inc</item>
-      <item>gamma_inc_P</item>
-      <item>gamma_inc_Q</item>
-      <item>gammainv_gsl</item>
-      <item>gammastar</item>
-      <item>gdet</item>
-      <item>gdiag</item>
-      <item>gexp</item>
-      <item>gf</item>
-      <item>gfilter</item>
-      <item>_gfweight</item>
-      <item>ginv</item>
-      <item>ginverse</item>
-      <item>glog</item>
-      <item>glu</item>
-      <item>gpick</item>
-      <item>gprod</item>
-      <item>grab</item>
-      <item>grank</item>
-      <item>graycomatrix</item>
-      <item>__grcla__</item>
-      <item>__grclf__</item>
-      <item>__grcmd__</item>
-      <item>greshape</item>
-      <item>__grexit__</item>
-      <item>__grfigure__</item>
-      <item>__grgetstat__</item>
-      <item>__grhold__</item>
-      <item>__grinit__</item>
-      <item>__grishold__</item>
-      <item>__grnewset__</item>
-      <item>__grsetgraph__</item>
-      <item>gsl_sf</item>
-      <item>gsqrt</item>
-      <item>gsum</item>
-      <item>gsumsq</item>
-      <item>gtext</item>
-      <item>gzoom</item>
-      <item>hazard</item>
-      <item>houghtf</item>
-      <item>hyperg_0F1</item>
-      <item>hzeta</item>
-      <item>is_complex_sparse</item>
-      <item>isfixed</item>
-      <item>isgalois</item>
-      <item>isprimitive</item>
-      <item>is_real_sparse</item>
-      <item>is_sparse</item>
-      <item>jpgread</item>
-      <item>jpgwrite</item>
-      <item>lambert_W0</item>
-      <item>lambert_Wm1</item>
-      <item>legendre_Pl</item>
-      <item>legendre_Plm</item>
-      <item>legendre_Ql</item>
-      <item>legendre_sphPlm</item>
-      <item>legendre_sphPlm_array</item>
-      <item>leval</item>
-      <item>listen</item>
-      <item>lnbeta</item>
-      <item>lncosh</item>
-      <item>lngamma_gsl</item>
-      <item>lnpoch</item>
-      <item>lnsinh</item>
-      <item>log_1plusx</item>
-      <item>log_1plusx_mx</item>
-      <item>log_erfc</item>
-      <item>lp</item>
-      <item>make_sparse</item>
-      <item>mark_for_deletion</item>
-      <item>medfilt1</item>
-      <item>newtonstep</item>
-      <item>nnz</item>
-      <item>numgradient</item>
-      <item>numhessian</item>
-      <item>pchip_deriv</item>
-      <item>pngread</item>
-      <item>pngwrite</item>
-      <item>poch</item>
-      <item>pochrel</item>
-      <item>pretty</item>
-      <item>primpoly</item>
-      <item>psi</item>
-      <item>psi_1_int</item>
-      <item>psi_1piy</item>
-      <item>psi_n</item>
-      <item>rand</item>
-      <item>rande</item>
-      <item>randn</item>
-      <item>randp</item>
-      <item>regexp</item>
-      <item>remez</item>
-      <item>reset_fixed_operations</item>
-      <item>rotate_scale</item>
-      <item>rsdec</item>
-      <item>rsenc</item>
-      <item>samin</item>
-      <item>SBBacksub</item>
-      <item>SBEig</item>
-      <item>SBFactor</item>
-      <item>SBProd</item>
-      <item>SBSolve</item>
-      <item>Shi</item>
-      <item>Si</item>
-      <item>sinc_gsl</item>
-      <item>spabs</item>
-      <item>sparse</item>
-      <item>spfind</item>
-      <item>spimag</item>
-      <item>spinv</item>
-      <item>splu</item>
-      <item>spreal</item>
-      <item>SymBand</item>
-      <item>synchrotron_1</item>
-      <item>synchrotron_2</item>
-      <item>syndtable</item>
-      <item>taylorcoeff</item>
-      <item>transport_2</item>
-      <item>transport_3</item>
-      <item>transport_4</item>
-      <item>transport_5</item>
-      <item>trisolve</item>
-      <item>waitbar</item>
-      <item>xmlread</item>
-      <item>zeta</item>
-      <item>zeta_int</item>
-      <item>aar</item>
-      <item>aarmam</item>
-      <item>ac2poly</item>
-      <item>ac2rc</item>
-      <item>acorf</item>
-      <item>acovf</item>
-      <item>addpath</item>
-      <item>ademodce</item>
-      <item>adim</item>
-      <item>adsmax</item>
-      <item>amodce</item>
-      <item>anderson_darling_cdf</item>
-      <item>anderson_darling_test</item>
-      <item>anovan</item>
-      <item>apkconst</item>
-      <item>append_save</item>
-      <item>applylut</item>
-      <item>ar2poly</item>
-      <item>ar2rc</item>
-      <item>arburg</item>
-      <item>arcext</item>
-      <item>arfit2</item>
-      <item>ar_spa</item>
-      <item>aryule</item>
-      <item>assert</item>
-      <item>au</item>
-      <item>aucapture</item>
-      <item>auload</item>
-      <item>auplot</item>
-      <item>aurecord</item>
-      <item>ausave</item>
-      <item>autumn</item>
-      <item>average_moments</item>
-      <item>awgn</item>
-      <item>azimuth</item>
-      <item>BandToFull</item>
-      <item>BandToSparse</item>
-      <item>base64encode</item>
-      <item>battery</item>
-      <item>bchpoly</item>
-      <item>bestblk</item>
-      <item>best_dir</item>
-      <item>best_dir_cov</item>
-      <item>betaln</item>
-      <item>bfgs</item>
-      <item>bfgsmin_example</item>
-      <item>bi2de</item>
-      <item>biacovf</item>
-      <item>bilinear</item>
-      <item>bisdemo</item>
-      <item>bispec</item>
-      <item>biterr</item>
-      <item>blkdiag</item>
-      <item>blkproc</item>
-      <item>bmpwrite</item>
-      <item>bone</item>
-      <item>bound_convex</item>
-      <item>boxcar</item>
-      <item>boxplot</item>
-      <item>brighten</item>
-      <item>bs_gradient</item>
-      <item>butter</item>
-      <item>buttord</item>
-      <item>bwborder</item>
-      <item>bweuler</item>
-      <item>bwlabel</item>
-      <item>bwmorph</item>
-      <item>bwselect</item>
-      <item>calendar</item>
-      <item>cceps</item>
-      <item>cdiff</item>
-      <item>cellstr</item>
-      <item>char</item>
-      <item>cheb</item>
-      <item>cheb1ord</item>
-      <item>cheb2ord</item>
-      <item>chebwin</item>
-      <item>cheby1</item>
-      <item>cheby2</item>
-      <item>chirp</item>
-      <item>clf</item>
-      <item>clip</item>
-      <item>cmpermute</item>
-      <item>cmunique</item>
-      <item>cohere</item>
-      <item>col2im</item>
-      <item>colfilt</item>
-      <item>colorgradient</item>
-      <item>comms</item>
-      <item>compand</item>
-      <item>complex</item>
-      <item>concat</item>
-      <item>conndef</item>
-      <item>content</item>
-      <item>contents</item>
-      <item>Contents</item>
-      <item>contourf</item>
-      <item>convhull</item>
-      <item>convmtx</item>
-      <item>cool</item>
-      <item>copper</item>
-      <item>corr2</item>
-      <item>cosets</item>
-      <item>count</item>
-      <item>covm</item>
-      <item>cplxpair</item>
-      <item>cquadnd</item>
-      <item>create_lookup_table</item>
-      <item>crule</item>
-      <item>crule2d</item>
-      <item>crule2dgen</item>
-      <item>csape</item>
-      <item>csapi</item>
-      <item>csd</item>
-      <item>csvread</item>
-      <item>csvwrite</item>
-      <item>ctranspose</item>
-      <item>cumtrapz</item>
-      <item>czt</item>
-      <item>d2_min</item>
-      <item>datenum</item>
-      <item>datestr</item>
-      <item>datevec</item>
-      <item>dct</item>
-      <item>dct2</item>
-      <item>dctmtx</item>
-      <item>de2bi</item>
-      <item>deal</item>
-      <item>decimate</item>
-      <item>decode</item>
-      <item>deg2rad</item>
-      <item>del2</item>
-      <item>delaunay</item>
-      <item>delaunay3</item>
-      <item>delta_method</item>
-      <item>demo</item>
-      <item>demodmap</item>
-      <item>deriv</item>
-      <item>detrend</item>
-      <item>dfdp</item>
-      <item>dftmtx</item>
-      <item>dhbar</item>
-      <item>dilate</item>
-      <item>dispatch</item>
-      <item>distance</item>
-      <item>dlmread</item>
-      <item>dlmwrite</item>
-      <item>dos</item>
-      <item>double</item>
-      <item>drawnow</item>
-      <item>durlev</item>
-      <item>dxfwrite</item>
-      <item>edge</item>
-      <item>edit</item>
-      <item>ellip</item>
-      <item>ellipdemo</item>
-      <item>ellipj</item>
-      <item>ellipke</item>
-      <item>ellipord</item>
-      <item>__ellip_ws</item>
-      <item>__ellip_ws_min</item>
-      <item>encode</item>
-      <item>eomday</item>
-      <item>erode</item>
-      <item>example</item>
-      <item>ExampleEigenValues</item>
-      <item>ExampleGenEigenValues</item>
-      <item>expdemo</item>
-      <item>expfit</item>
-      <item>eyediagram</item>
-      <item>factor</item>
-      <item>factorial</item>
-      <item>fail</item>
-      <item>fcnchk</item>
-      <item>feedback</item>
-      <item>fem_test</item>
-      <item>ff2n</item>
-      <item>fftconv2</item>
-      <item>fieldnames</item>
-      <item>fill</item>
-      <item>fill3</item>
-      <item>filter2</item>
-      <item>filtfilt</item>
-      <item>filtic</item>
-      <item>findsym</item>
-      <item>fir1</item>
-      <item>fir2</item>
-      <item>fixedpoint</item>
-      <item>flag</item>
-      <item>flag_implicit_samplerate</item>
-      <item>flattopwin</item>
-      <item>flix</item>
-      <item>float</item>
-      <item>fmin</item>
-      <item>fminbnd</item>
-      <item>fmins</item>
-      <item>fminunc</item>
-      <item>fnder</item>
-      <item>fnplt</item>
-      <item>fnval</item>
-      <item>fplot</item>
-      <item>freqs</item>
-      <item>freqs_plot</item>
-      <item>fsort</item>
-      <item>fullfact</item>
-      <item>FullToBand</item>
-      <item>funm</item>
-      <item>fzero</item>
-      <item>gammaln</item>
-      <item>gapTest</item>
-      <item>gaussian</item>
-      <item>gausswin</item>
-      <item>gconv</item>
-      <item>gconvmtx</item>
-      <item>gdeconv</item>
-      <item>gdftmtx</item>
-      <item>gen2par</item>
-      <item>geomean</item>
-      <item>getfield</item>
-      <item>getfields</item>
-      <item>gfft</item>
-      <item>gftable</item>
-      <item>gfweight</item>
-      <item>gget</item>
-      <item>gifft</item>
-      <item>ginput</item>
-      <item>gmm_estimate</item>
-      <item>gmm_example</item>
-      <item>gmm_obj</item>
-      <item>gmm_results</item>
-      <item>gmm_variance</item>
-      <item>gmm_variance_inefficient</item>
-      <item>gquad</item>
-      <item>gquad2d</item>
-      <item>gquad2d6</item>
-      <item>gquad2dgen</item>
-      <item>gquad6</item>
-      <item>gquadnd</item>
-      <item>grace_octave_path</item>
-      <item>gradient</item>
-      <item>grayslice</item>
-      <item>grep</item>
-      <item>grid</item>
-      <item>griddata</item>
-      <item>groots</item>
-      <item>grpdelay</item>
-      <item>grule</item>
-      <item>grule2d</item>
-      <item>grule2dgen</item>
-      <item>hadamard</item>
-      <item>hammgen</item>
-      <item>hankel</item>
-      <item>hann</item>
-      <item>harmmean</item>
-      <item>hilbert</item>
-      <item>histeq</item>
-      <item>histfit</item>
-      <item>histo</item>
-      <item>histo2</item>
-      <item>histo3</item>
-      <item>histo4</item>
-      <item>hot</item>
-      <item>hsv</item>
-      <item>hup</item>
-      <item>idct</item>
-      <item>idct2</item>
-      <item>idplot</item>
-      <item>idsim</item>
-      <item>ifftshift</item>
-      <item>im2bw</item>
-      <item>im2col</item>
-      <item>imadjust</item>
-      <item>imginfo</item>
-      <item>imhist</item>
-      <item>imnoise</item>
-      <item>impad</item>
-      <item>impz</item>
-      <item>imread</item>
-      <item>imrotate</item>
-      <item>imshear</item>
-      <item>imtranslate</item>
-      <item>imwrite</item>
-      <item>innerfun</item>
-      <item>inputname</item>
-      <item>interp</item>
-      <item>interp1</item>
-      <item>interp2</item>
-      <item>interpft</item>
-      <item>intersect</item>
-      <item>invest0</item>
-      <item>invest1</item>
-      <item>invfdemo</item>
-      <item>invfreq</item>
-      <item>invfreqs</item>
-      <item>invfreqz</item>
-      <item>inz</item>
-      <item>irsa_act</item>
-      <item>irsa_actcore</item>
-      <item>irsa_check</item>
-      <item>irsa_dft</item>
-      <item>irsa_dftfp</item>
-      <item>irsa_genreal</item>
-      <item>irsa_idft</item>
-      <item>irsa_isregular</item>
-      <item>irsa_jitsp</item>
-      <item>irsa_mdsp</item>
-      <item>irsa_normalize</item>
-      <item>irsa_plotdft</item>
-      <item>irsa_resample</item>
-      <item>irsa_rgenreal</item>
-      <item>isa</item>
-      <item>isbw</item>
-      <item>isdir</item>
-      <item>isequal</item>
-      <item>isfield</item>
-      <item>isgray</item>
-      <item>isind</item>
-      <item>ismember</item>
-      <item>isprime</item>
-      <item>isrgb</item>
-      <item>issparse</item>
-      <item>isunix</item>
-      <item>jet</item>
-      <item>kaiser</item>
-      <item>kaiserord</item>
-      <item>lambertw</item>
-      <item>lattice</item>
-      <item>lauchli</item>
-      <item>leasqr</item>
-      <item>leasqrdemo</item>
-      <item>legend</item>
-      <item>legendre</item>
-      <item>levinson</item>
-      <item>lin2mu</item>
-      <item>line_min</item>
-      <item>lloyds</item>
-      <item>lookup</item>
-      <item>lookup_table</item>
-      <item>lpc</item>
-      <item>lp_test</item>
-      <item>mad</item>
-      <item>magic</item>
-      <item>makelut</item>
-      <item>MakeShears</item>
-      <item>map</item>
-      <item>mat2gray</item>
-      <item>mat2str</item>
-      <item>mdsmax</item>
-      <item>mean2</item>
-      <item>medfilt2</item>
-      <item>meshc</item>
-      <item>minimize</item>
-      <item>minpol</item>
-      <item>mkpp</item>
-      <item>mktheta</item>
-      <item>mle_estimate</item>
-      <item>mle_example</item>
-      <item>mle_obj</item>
-      <item>mle_results</item>
-      <item>mle_variance</item>
-      <item>modmap</item>
-      <item>mu2lin</item>
-      <item>mvaar</item>
-      <item>mvar</item>
-      <item>mvfilter</item>
-      <item>mvfreqz</item>
-      <item>myfeval</item>
-      <item>nanmax</item>
-      <item>nanmean</item>
-      <item>nanmedian</item>
-      <item>nanmin</item>
-      <item>nanstd</item>
-      <item>nansum</item>
-      <item>ncauer</item>
-      <item>nchoosek</item>
-      <item>ncrule</item>
-      <item>ndims</item>
-      <item>nelder_mead_min</item>
-      <item>newmark</item>
-      <item>nlfilter</item>
-      <item>nlnewmark</item>
-      <item>__nlnewmark_fcn__</item>
-      <item>nmsmax</item>
-      <item>nonzeros</item>
-      <item>normplot</item>
-      <item>now</item>
-      <item>nrm</item>
-      <item>nthroot</item>
-      <item>nze</item>
-      <item>OCTAVE_FORGE_VERSION</item>
-      <item>ode23</item>
-      <item>ode45</item>
-      <item>ode78</item>
-      <item>optimset</item>
-      <item>ordfilt2</item>
-      <item>orient</item>
-      <item>pacf</item>
-      <item>padarray</item>
-      <item>parameterize</item>
-      <item>parcor</item>
-      <item>pareto</item>
-      <item>pascal</item>
-      <item>patch</item>
-      <item>pburg</item>
-      <item>pcg</item>
-      <item>pchip</item>
-      <item>pcolor</item>
-      <item>pcr</item>
-      <item>peaks</item>
-      <item>penddot</item>
-      <item>pendulum</item>
-      <item>perms</item>
-      <item>pie</item>
-      <item>pink</item>
-      <item>plot3</item>
-      <item>__plt3__</item>
-      <item>poly2ac</item>
-      <item>poly2ar</item>
-      <item>poly_2_ex</item>
-      <item>poly2mask</item>
-      <item>poly2rc</item>
-      <item>poly2sym</item>
-      <item>poly2th</item>
-      <item>polyarea</item>
-      <item>polyconf</item>
-      <item>polyder</item>
-      <item>polyderiv</item>
-      <item>polygcd</item>
-      <item>polystab</item>
-      <item>__power</item>
-      <item>ppval</item>
-      <item>prctile</item>
-      <item>prettyprint</item>
-      <item>prettyprint_c</item>
-      <item>primes</item>
-      <item>princomp</item>
-      <item>print</item>
-      <item>prism</item>
-      <item>proplan</item>
-      <item>pulstran</item>
-      <item>pwelch</item>
-      <item>pyulear</item>
-      <item>qaskdeco</item>
-      <item>qaskenco</item>
-      <item>qtdecomp</item>
-      <item>qtgetblk</item>
-      <item>qtsetblk</item>
-      <item>quad2dc</item>
-      <item>quad2dcgen</item>
-      <item>quad2dg</item>
-      <item>quad2dggen</item>
-      <item>quadc</item>
-      <item>quadg</item>
-      <item>quadl</item>
-      <item>quadndg</item>
-      <item>quantiz</item>
-      <item>quiver</item>
-      <item>rad2deg</item>
-      <item>rainbow</item>
-      <item>randerr</item>
-      <item>randint</item>
-      <item>randsrc</item>
-      <item>rat</item>
-      <item>rats</item>
-      <item>rc2ac</item>
-      <item>rc2ar</item>
-      <item>rc2poly</item>
-      <item>rceps</item>
-      <item>read_options</item>
-      <item>read_pdb</item>
-      <item>rectpuls</item>
-      <item>resample</item>
-      <item>rgb2gray</item>
-      <item>rk2fixed</item>
-      <item>rk4fixed</item>
-      <item>rk8fixed</item>
-      <item>rmfield</item>
-      <item>rmle</item>
-      <item>rmpath</item>
-      <item>roicolor</item>
-      <item>rosser</item>
-      <item>rotparams</item>
-      <item>rotv</item>
-      <item>rref</item>
-      <item>rsdecof</item>
-      <item>rsencof</item>
-      <item>rsgenpoly</item>
-      <item>samin_example</item>
-      <item>save_vrml</item>
-      <item>sbispec</item>
-      <item>scale_data</item>
-      <item>scatter</item>
-      <item>scatterplot</item>
-      <item>select_3D_points</item>
-      <item>selmo</item>
-      <item>setdiff</item>
-      <item>setfield</item>
-      <item>setfields</item>
-      <item>setxor</item>
-      <item>sftrans</item>
-      <item>sgolay</item>
-      <item>sgolayfilt</item>
-      <item>sinvest1</item>
-      <item>slurp_file</item>
-      <item>sortrows</item>
-      <item>sound</item>
-      <item>soundsc</item>
-      <item>spdiags</item>
-      <item>specgram</item>
-      <item>speed</item>
-      <item>speye</item>
-      <item>spfun</item>
-      <item>sphcat</item>
-      <item>spline</item>
-      <item>splot</item>
-      <item>spones</item>
-      <item>sprand</item>
-      <item>sprandn</item>
-      <item>spring</item>
-      <item>spstats</item>
-      <item>spsum</item>
-      <item>sp_test</item>
-      <item>sptest</item>
-      <item>spvcat</item>
-      <item>spy</item>
-      <item>std2</item>
-      <item>stem</item>
-      <item>str2double</item>
-      <item>strcmpi</item>
-      <item>stretchlim</item>
-      <item>strfind</item>
-      <item>strmatch</item>
-      <item>strncmp</item>
-      <item>strncmpi</item>
-      <item>strsort</item>
-      <item>strtok</item>
-      <item>strtoz</item>
-      <item>struct</item>
-      <item>strvcat</item>
-      <item>summer</item>
-      <item>sumskipnan</item>
-      <item>surf</item>
-      <item>surfc</item>
-      <item>sym2poly</item>
-      <item>symerr</item>
-      <item>symfsolve</item>
-      <item>tabulate</item>
-      <item>tar</item>
-      <item>temp_name</item>
-      <item>test</item>
-      <item>test_d2_min_1</item>
-      <item>test_d2_min_2</item>
-      <item>test_d2_min_3</item>
-      <item>test_ellipj</item>
-      <item>test_fminunc_1</item>
-      <item>testimio</item>
-      <item>test_inline_1</item>
-      <item>test_min_1</item>
-      <item>test_min_2</item>
-      <item>test_min_3</item>
-      <item>test_min_4</item>
-      <item>test_minimize_1</item>
-      <item>test_nelder_mead_min_1</item>
-      <item>test_nelder_mead_min_2</item>
-      <item>test_sncndn</item>
-      <item>test_struct</item>
-      <item>test_vmesh</item>
-      <item>test_vrml_faces</item>
-      <item>test_wpolyfit</item>
-      <item>text</item>
-      <item>textread</item>
-      <item>tf2zp</item>
-      <item>tfe</item>
-      <item>thfm</item>
-      <item>tics</item>
-      <item>toeplitz</item>
-      <item>toggle_grace_use</item>
-      <item>transpose</item>
-      <item>trapz</item>
-      <item>triang</item>
-      <item>tril</item>
-      <item>trimmean</item>
-      <item>tripuls</item>
-      <item>trisolve</item>
-      <item>triu</item>
-      <item>tsademo</item>
-      <item>tsearchdemo</item>
-      <item>ucp</item>
-      <item>uintlut</item>
-      <item>unique</item>
-      <item>unix</item>
-      <item>unmkpp</item>
-      <item>unscale_parameters</item>
-      <item>vec2mat</item>
-      <item>view</item>
-      <item>vmesh</item>
-      <item>voronoi</item>
-      <item>voronoin</item>
-      <item>vrml_arrow</item>
-      <item>vrml_Background</item>
-      <item>vrml_browse</item>
-      <item>vrml_cyl</item>
-      <item>vrml_demo_tutorial_1</item>
-      <item>vrml_demo_tutorial_2</item>
-      <item>vrml_demo_tutorial_3</item>
-      <item>vrml_demo_tutorial_4</item>
-      <item>vrml_ellipsoid</item>
-      <item>vrml_faces</item>
-      <item>vrml_flatten</item>
-      <item>vrml_frame</item>
-      <item>vrml_group</item>
-      <item>vrml_kill</item>
-      <item>vrml_lines</item>
-      <item>vrml_material</item>
-      <item>vrml_parallelogram</item>
-      <item>vrml_PointLight</item>
-      <item>vrml_points</item>
-      <item>vrml_select_points</item>
-      <item>vrml_surf</item>
-      <item>vrml_text</item>
-      <item>vrml_thick_surf</item>
-      <item>vrml_transfo</item>
-      <item>wavread</item>
-      <item>wavwrite</item>
-      <item>weekday</item>
-      <item>wgn</item>
-      <item>white</item>
-      <item>wilkinson</item>
-      <item>winter</item>
-      <item>wpolyfit</item>
-      <item>wpolyfitdemo</item>
-      <item>write_pdb</item>
-      <item>wsolve</item>
-      <item>xcorr</item>
-      <item>xcorr2</item>
-      <item>xcov</item>
-      <item>xlsread</item>
-      <item>xmlwrite</item>
-      <item>y2res</item>
-      <item>zero_count</item>
-      <item>zoom</item>
-      <item>zp2tf</item>
-      <item>zplane</item>
-      <item>zscore</item>
-    </list>
-    
-    <contexts>
-
-      <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
-
-        <!-- Code folding -->
-        <!--TODO: with this implementation, code folding will close a block also with a wrong
-        end*: for istance, for can be closed by endif. This is done because the catchall end 
-        keyword is widely used to close a number of blocks (including if and for).
-        If you have an improvement, please contribute it!-->
-        <RegExpr context="#stay" attribute="Keyword" String="\b(for)\b" beginRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(endfor)\b" endRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(if)\b" beginRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(endif)\b" endRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(do)\b" beginRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(until)\b" endRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(while)\b" beginRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(endwhile)\b" endRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(function)\b" beginRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(endfunction)\b" endRegion="block" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(switch)\b" beginRegion="Switch" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(endswitch)\b" endRegion="Switch" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(try)\b" beginRegion="Try" />
-        <RegExpr context="#stay" attribute="Keyword" String="\b(end_try_catch)\b" endRegion="Try" />
-        <!-- Catchall end keyword -->
-        <RegExpr context="#stay" attribute="Keyword" String="\b(end)\b" endRegion="block" />
-        
-        <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
-        <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
-        <RegExpr context="_adjoint" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?(?=')" />
-        <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
-        <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
-
-        <!-- If ' is not the adjoint operator, it starts a string or an unterminated string;
-        strings can be also with ", and accept the respective delimiter in them either
-        by doubling it ('', "") or by escaping it (\', \") -->
-        <RegExpr context="#stay" attribute="String" String="'([^'\\]|''|\\'|\\[^'])*'(?=[^']|$)" />
-        <RegExpr context="#stay" attribute="Incomplete String" String="'([^']|''|\\')*" />
-        <RegExpr context="#stay" attribute="String" String="&quot;([^&quot;\\]|&quot;&quot;|\\&quot;|\\[^&quot;])*&quot;(?=[^&quot;]|$)" />
-        <RegExpr context="#stay" attribute="Incomplete String" String="&quot;([^&quot;]|&quot;&quot;|\\&quot;)*" />
-        
-        <!-- Handling of keywords, comments, functions, identifiers, numbers and braces -->
-        <keyword context="#stay" attribute="Keyword" String="keywords" />
-        <keyword context="#stay" attribute="Commands" String="commands" />
-        <keyword context="#stay" attribute="Functions" String="functions" />
-        <keyword context="#stay" attribute="Builtin" String="builtin"/>
-        <keyword context="#stay" attribute="Forge" String="forge" />
-        <RegExpr context="#stay" attribute="Comment" String="[%#].*$" />
-        <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
-        <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
-        <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
-              
-        <!-- Three- and two-character operators -->
-        <StringDetect context="#stay" attribute="Operator" String="..."/>
-        <StringDetect context="#stay" attribute="Operator" String="=="/>
-        <StringDetect context="#stay" attribute="Operator" String="~="/>
-        <StringDetect context="#stay" attribute="Operator" String="!="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String="||"/>
-        <StringDetect context="#stay" attribute="Operator" String="++"/>
-        <StringDetect context="#stay" attribute="Operator" String="--"/>
-        <StringDetect context="#stay" attribute="Operator" String="**"/>
-        <StringDetect context="#stay" attribute="Operator" String=".*"/>
-        <StringDetect context="#stay" attribute="Operator" String=".**"/>
-        <StringDetect context="#stay" attribute="Operator" String=".^"/>
-        <StringDetect context="#stay" attribute="Operator" String="./"/>
-        <StringDetect context="#stay" attribute="Operator" String=".'"/>
-
-        <!-- Single-character operators -->
-        <AnyChar context="#stay" attribute="Operator" String="!&quot;%(*+,/;=>[]|~#&amp;)-:&lt;&gt;\^"/>
-        
-      </context>
-
-
-      <!--Context entered after encountering an ' adjoint operator -->
-      <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
-        <RegExpr context="#pop" attribute="Operator" String="'+" />
-      </context>
-
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Variable" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Operator" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Number" defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="Delimiter" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="String" defStyleNum="dsString" color="#b20000"/>
-      <itemData name="Incomplete String" defStyleNum="dsChar" color="#a020f0" spellChecking="false"/>
-      <itemData name="Keyword"  defStyleNum="dsNormal" color="#0000ff" spellChecking="false"/>
-      <itemData name="Comment" defStyleNum="dsComment" color="#009900"/>
-      <itemData name="Functions" defStyleNum="dsFunction" color="#0000ff" selColor="#00ff00" bold="1" italic="1" spellChecking="false"/>
-      <itemData name="Forge" defStyleNum="dsFunction" color="#000099" selColor="#009900" bold="1" italic="1" spellChecking="false"/>
-      <itemData name="Builtin" defStyleNum="dsBaseN" color="#b28c00" spellChecking="false"/>
-      <itemData name="Commands" defStyleNum="dsFunction" color="#b28c00" spellChecking="false"/>
-    </itemDatas>
-
-  </highlighting>
-
-  <general>
-    <comments>
-      <comment name="singleLine" start="%" />
-      <comment name="singleLine" start="#" />
-    </comments>
-    <keywords casesensitive="1"/>
+  =====================================================================================================
+  Octave syntax highlighting file for the KDE editors Kate and Kwrite
+  =====================================================================================================
+      based on Octave 4.2.0
+      keywords, functions list bases on __builtins__ and __keywords__ commands. For details see
+      https://stackoverflow.com/questions/49840280/list-of-all-built-in-symbols-in-matlab-octave
+      Commands list bases on parsing source code (search inside embedded into code documentation
+      (by "@deftypefn") for commands, used without brackets).
+      (grep '@deftypefn' -r * | grep -v '@deftypefnx' | grep -v '(')
+
+
+  Change log:
+  16-Dec-04  Created from Matlab and Scilab files.
+  19-Feb-04  Update from Octave 4.2.0 (updated by sirgienko.n <warquark@gmail.com>)
+
+  Author: Federico Zenith, Norwegian University of Science and Technology
+  Thanks to Luis Silvestre for previous version and suggestions
+-->
+
+
+<language name="Octave" version="5" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
+
+  <highlighting>
+
+    <!-- Reserved keywords in Octave -->
+    <list name="keywords">
+      <item>case</item>
+      <item>catch</item>
+      <item>continue</item>
+      <item>else</item>
+      <item>elseif</item>
+      <item>global</item>
+      <item>otherwise</item>
+      <item>return</item>
+      <item>static</item>
+      <item>persistent</item>
+      <item>unwind_protect_cleanup</item>
+      <item>varargin</item>
+      <item>varargout</item>
+      <item>break</item>
+      <item>for</item>
+      <item>endfor</item>
+      <item>if</item>
+      <item>endif</item>
+      <item>do</item>
+      <item>until</item>
+      <item>while</item>
+      <item>endwhile</item>
+      <item>function</item>
+      <item>endfunction</item>
+      <item>unwind_protect</item>
+      <item>end_unwind_protect</item>
+      <item>parfor</item>
+      <item>endparfor</item>
+      <item>classdef</item>
+      <item>endclassdef</item>
+      <item>enumeration</item>
+      <item>endenumeration</item>
+      <item>events</item>
+      <item>endevents</item>
+      <item>methods</item>
+      <item>endmethods</item>
+      <item>properties</item>
+      <item>endproperties</item>
+      <item>switch</item>
+      <item>endswitch</item>
+      <item>try</item>
+      <item>end_try_catch</item>
+      <item>end</item>
+    </list>
+
+    <list name="builtin">
+      <item>EDITOR</item>
+      <item>EXEC_PATH</item>
+      <item>F_DUPFD</item>
+      <item>F_GETFD</item>
+      <item>F_GETFL</item>
+      <item>F_SETFD</item>
+      <item>F_SETFL</item>
+      <item>IMAGE_PATH</item>
+      <item>J</item>
+      <item>OCTAVE_HOME</item>
+      <item>OCTAVE_VERSION</item>
+      <item>O_APPEND</item>
+      <item>O_ASYNC</item>
+      <item>O_CREAT</item>
+      <item>O_EXCL</item>
+      <item>O_NONBLOCK</item>
+      <item>O_RDONLY</item>
+      <item>O_RDWR</item>
+      <item>O_SYNC</item>
+      <item>O_TRUNC</item>
+      <item>O_WRONLY</item>
+      <item>PAGER</item>
+      <item>PAGER_FLAGS</item>
+      <item>PS1</item>
+      <item>PS2</item>
+      <item>PS4</item>
+      <item>P_tmpdir</item>
+      <item>SEEK_CUR</item>
+      <item>SEEK_END</item>
+      <item>SEEK_SET</item>
+      <item>SIG</item>
+      <item>S_ISBLK</item>
+      <item>S_ISCHR</item>
+      <item>S_ISDIR</item>
+      <item>S_ISFIFO</item>
+      <item>S_ISLNK</item>
+      <item>S_ISREG</item>
+      <item>S_ISSOCK</item>
+      <item>WCONTINUE</item>
+      <item>WCOREDUMP</item>
+      <item>WEXITSTATUS</item>
+      <item>WIFCONTINUED</item>
+      <item>WIFEXITED</item>
+      <item>WIFSIGNALED</item>
+      <item>WIFSTOPPED</item>
+      <item>WNOHANG</item>
+      <item>WSTOPSIG</item>
+      <item>WTERMSIG</item>
+      <item>WUNTRACED</item>
+      <item>__accumarray_max__</item>
+      <item>__accumarray_min__</item>
+      <item>__accumarray_sum__</item>
+      <item>__accumdim_sum__</item>
+      <item>__builtins__</item>
+      <item>__calc_dimensions__</item>
+      <item>__compactformat__</item>
+      <item>__contourc__</item>
+      <item>__current_scope__</item>
+      <item>__db_next_breakpoint_quiet__</item>
+      <item>__diaryfile__</item>
+      <item>__diarystate__</item>
+      <item>__dispatch__</item>
+      <item>__display_tokens__</item>
+      <item>__dsearchn__</item>
+      <item>__dump_load_path__</item>
+      <item>__dump_symtab_info__</item>
+      <item>__dump_typeinfo__</item>
+      <item>__echostate__</item>
+      <item>__fieldnames__</item>
+      <item>__fnmatch__</item>
+      <item>__formatstring__</item>
+      <item>__ftp__</item>
+      <item>__ftp_ascii__</item>
+      <item>__ftp_binary__</item>
+      <item>__ftp_close__</item>
+      <item>__ftp_cwd__</item>
+      <item>__ftp_delete__</item>
+      <item>__ftp_dir__</item>
+      <item>__ftp_mget__</item>
+      <item>__ftp_mkdir__</item>
+      <item>__ftp_mode__</item>
+      <item>__ftp_mput__</item>
+      <item>__ftp_pwd__</item>
+      <item>__ftp_rename__</item>
+      <item>__ftp_rmdir__</item>
+      <item>__get__</item>
+      <item>__get_cmdline_fcn_txt__</item>
+      <item>__go_axes__</item>
+      <item>__go_axes_init__</item>
+      <item>__go_delete__</item>
+      <item>__go_execute_callback__</item>
+      <item>__go_figure__</item>
+      <item>__go_figure_handles__</item>
+      <item>__go_handles__</item>
+      <item>__go_hggroup__</item>
+      <item>__go_image__</item>
+      <item>__go_light__</item>
+      <item>__go_line__</item>
+      <item>__go_patch__</item>
+      <item>__go_surface__</item>
+      <item>__go_text__</item>
+      <item>__go_uibuttongroup__</item>
+      <item>__go_uicontextmenu__</item>
+      <item>__go_uicontrol__</item>
+      <item>__go_uimenu__</item>
+      <item>__go_uipanel__</item>
+      <item>__go_uipushtool__</item>
+      <item>__go_uitoggletool__</item>
+      <item>__go_uitoolbar__</item>
+      <item>__gud_mode__</item>
+      <item>__ichol0__</item>
+      <item>__icholt__</item>
+      <item>__ilu0__</item>
+      <item>__iluc__</item>
+      <item>__ilutp__</item>
+      <item>__image_pixel_size__</item>
+      <item>__is_handle_visible__</item>
+      <item>__java_exit__</item>
+      <item>__java_get__</item>
+      <item>__java_init__</item>
+      <item>__java_set__</item>
+      <item>__keywords__</item>
+      <item>__lexer_debug_flag__</item>
+      <item>__lin_interpn__</item>
+      <item>__list_functions__</item>
+      <item>__luinc__</item>
+      <item>__magick_finfo__</item>
+      <item>__magick_formats__</item>
+      <item>__magick_ping__</item>
+      <item>__magick_read__</item>
+      <item>__magick_write__</item>
+      <item>__meta_class_query__</item>
+      <item>__meta_get_package__</item>
+      <item>__methods__</item>
+      <item>__mkdir__</item>
+      <item>__octave_config_info__</item>
+      <item>__octave_link_edit_file__</item>
+      <item>__octave_link_enabled__</item>
+      <item>__octave_link_file_dialog__</item>
+      <item>__octave_link_input_dialog__</item>
+      <item>__octave_link_list_dialog__</item>
+      <item>__octave_link_message_dialog__</item>
+      <item>__octave_link_question_dialog__</item>
+      <item>__octave_link_show_doc__</item>
+      <item>__octave_link_show_preferences__</item>
+      <item>__open_with_system_app__</item>
+      <item>__operators__</item>
+      <item>__parent_classes__</item>
+      <item>__parse_file__</item>
+      <item>__parser_debug_flag__</item>
+      <item>__pathorig__</item>
+      <item>__pchip_deriv__</item>
+      <item>__profiler_data__</item>
+      <item>__profiler_enable__</item>
+      <item>__profiler_reset__</item>
+      <item>__qp__</item>
+      <item>__request_drawnow__</item>
+      <item>__sort_rows_idx__</item>
+      <item>__superclass_reference__</item>
+      <item>__textscan__</item>
+      <item>__token_count__</item>
+      <item>__usage__</item>
+      <item>__varval__</item>
+      <item>__version_info__</item>
+      <item>__wglob__</item>
+      <item>__which__</item>
+      <item>__zoom__</item>
+    </list>
+    
+    <list name="commands">
+      <item>Inf</item>
+      <item>NaN</item>
+      <item>e</item>
+      <item>eps</item>
+      <item>pi</item>
+      <item>realmax</item>
+      <item>realmin</item>
+      <item>I</item>
+      <item>NA</item>
+      <item>dbstop</item>
+      <item>dbclear</item>
+      <item>dbstatus</item>
+      <item>dbwhere</item>
+      <item>dbtype</item>
+      <item>dblist</item>
+      <item>dbstack</item>
+      <item>dbup</item>
+      <item>dbdown</item>
+      <item>dbstep</item>
+      <item>dbcont</item>
+      <item>dbquit</item>
+      <item>cd</item>
+      <item>rmdir</item>
+      <item>link</item>
+      <item>symlink</item>
+      <item>readlink</item>
+      <item>rename</item>
+      <item>diary</item>
+      <item>more</item>
+      <item>exit</item>
+      <item>load</item>
+      <item>save</item>
+      <item>edit_history</item>
+      <item>history</item>
+      <item>run_history</item>
+      <item>who</item>
+      <item>whos</item>
+      <item>clear</item>
+      <item>format</item>
+      <item>echo</item>
+    </list>
+    
+    <list name="functions">
+      <item>__actual_axis_position__</item>
+      <item>__all_opts__</item>
+      <item>__clabel__</item>
+      <item>__default_plot_options__</item>
+      <item>__delaunayn__</item>
+      <item>__eigs__</item>
+      <item>__finish__</item>
+      <item>__fltk_check__</item>
+      <item>__fltk_uigetfile__</item>
+      <item>__getlegenddata__</item>
+      <item>__glpk__</item>
+      <item>__gnuplot_drawnow__</item>
+      <item>__gripe_missing_component__</item>
+      <item>__have_feature__</item>
+      <item>__have_gnuplot__</item>
+      <item>__init_fltk__</item>
+      <item>__init_gnuplot__</item>
+      <item>__makeinfo__</item>
+      <item>__next_line_color__</item>
+      <item>__next_line_style__</item>
+      <item>__opengl_info__</item>
+      <item>__osmesa_print__</item>
+      <item>__player_audioplayer__</item>
+      <item>__player_get_channels__</item>
+      <item>__player_get_fs__</item>
+      <item>__player_get_id__</item>
+      <item>__player_get_nbits__</item>
+      <item>__player_get_sample_number__</item>
+      <item>__player_get_tag__</item>
+      <item>__player_get_total_samples__</item>
+      <item>__player_get_userdata__</item>
+      <item>__player_isplaying__</item>
+      <item>__player_pause__</item>
+      <item>__player_play__</item>
+      <item>__player_playblocking__</item>
+      <item>__player_resume__</item>
+      <item>__player_set_fs__</item>
+      <item>__player_set_tag__</item>
+      <item>__player_set_userdata__</item>
+      <item>__player_stop__</item>
+      <item>__plt_get_axis_arg__</item>
+      <item>__pltopt__</item>
+      <item>__printf_assert__</item>
+      <item>__prog_output_assert__</item>
+      <item>__recorder_audiorecorder__</item>
+      <item>__recorder_get_channels__</item>
+      <item>__recorder_get_fs__</item>
+      <item>__recorder_get_id__</item>
+      <item>__recorder_get_nbits__</item>
+      <item>__recorder_get_sample_number__</item>
+      <item>__recorder_get_tag__</item>
+      <item>__recorder_get_total_samples__</item>
+      <item>__recorder_get_userdata__</item>
+      <item>__recorder_getaudiodata__</item>
+      <item>__recorder_isrecording__</item>
+      <item>__recorder_pause__</item>
+      <item>__recorder_record__</item>
+      <item>__recorder_recordblocking__</item>
+      <item>__recorder_resume__</item>
+      <item>__recorder_set_fs__</item>
+      <item>__recorder_set_tag__</item>
+      <item>__recorder_set_userdata__</item>
+      <item>__recorder_stop__</item>
+      <item>__run_test_suite__</item>
+      <item>__unimplemented__</item>
+      <item>__voronoi__</item>
+      <item>abs</item>
+      <item>accumarray</item>
+      <item>accumdim</item>
+      <item>acos</item>
+      <item>acosd</item>
+      <item>acosh</item>
+      <item>acot</item>
+      <item>acotd</item>
+      <item>acoth</item>
+      <item>acsc</item>
+      <item>acscd</item>
+      <item>acsch</item>
+      <item>add_input_event_hook</item>
+      <item>addlistener</item>
+      <item>addpath</item>
+      <item>addpref</item>
+      <item>addproperty</item>
+      <item>addtodate</item>
+      <item>airy</item>
+      <item>all</item>
+      <item>allchild</item>
+      <item>allow_noninteger_range_as_index</item>
+      <item>amd</item>
+      <item>ancestor</item>
+      <item>and</item>
+      <item>angle</item>
+      <item>annotation</item>
+      <item>anova</item>
+      <item>ans</item>
+      <item>any</item>
+      <item>arch_fit</item>
+      <item>arch_rnd</item>
+      <item>arch_test</item>
+      <item>area</item>
+      <item>arg</item>
+      <item>argnames</item>
+      <item>argv</item>
+      <item>arma_rnd</item>
+      <item>arrayfun</item>
+      <item>asctime</item>
+      <item>asec</item>
+      <item>asecd</item>
+      <item>asech</item>
+      <item>asin</item>
+      <item>asind</item>
+      <item>asinh</item>
+      <item>assert</item>
+      <item>assignin</item>
+      <item>atan</item>
+      <item>atan2</item>
+      <item>atan2d</item>
+      <item>atand</item>
+      <item>atanh</item>
+      <item>atexit</item>
+      <item>audiodevinfo</item>
+      <item>audioformats</item>
+      <item>audioinfo</item>
+      <item>audioread</item>
+      <item>audiowrite</item>
+      <item>autoload</item>
+      <item>autoreg_matrix</item>
+      <item>autumn</item>
+      <item>available_graphics_toolkits</item>
+      <item>axes</item>
+      <item>axis</item>
+      <item>balance</item>
+      <item>bandwidth</item>
+      <item>bar</item>
+      <item>barh</item>
+      <item>bartlett</item>
+      <item>bartlett_test</item>
+      <item>base2dec</item>
+      <item>base64_decode</item>
+      <item>base64_encode</item>
+      <item>beep</item>
+      <item>beep_on_error</item>
+      <item>bessel</item>
+      <item>besselh</item>
+      <item>besseli</item>
+      <item>besselj</item>
+      <item>besselk</item>
+      <item>bessely</item>
+      <item>beta</item>
+      <item>betacdf</item>
+      <item>betainc</item>
+      <item>betaincinv</item>
+      <item>betainv</item>
+      <item>betaln</item>
+      <item>betapdf</item>
+      <item>betarnd</item>
+      <item>bicg</item>
+      <item>bicgstab</item>
+      <item>bicubic</item>
+      <item>bin2dec</item>
+      <item>bincoeff</item>
+      <item>binocdf</item>
+      <item>binoinv</item>
+      <item>binopdf</item>
+      <item>binornd</item>
+      <item>bitand</item>
+      <item>bitcmp</item>
+      <item>bitget</item>
+      <item>bitmax</item>
+      <item>bitor</item>
+      <item>bitpack</item>
+      <item>bitset</item>
+      <item>bitshift</item>
+      <item>bitunpack</item>
+      <item>bitxor</item>
+      <item>blackman</item>
+      <item>blanks</item>
+      <item>blkdiag</item>
+      <item>blkmm</item>
+      <item>bone</item>
+      <item>box</item>
+      <item>brighten</item>
+      <item>bsxfun</item>
+      <item>bug_report</item>
+      <item>built_in_docstrings_file</item>
+      <item>builtin</item>
+      <item>bunzip2</item>
+      <item>bzip2</item>
+      <item>calendar</item>
+      <item>camlight</item>
+      <item>canonicalize_file_name</item>
+      <item>cart2pol</item>
+      <item>cart2sph</item>
+      <item>cast</item>
+      <item>cat</item>
+      <item>cauchy_cdf</item>
+      <item>cauchy_inv</item>
+      <item>cauchy_pdf</item>
+      <item>cauchy_rnd</item>
+      <item>caxis</item>
+      <item>cbrt</item>
+      <item>ccolamd</item>
+      <item>ceil</item>
+      <item>cell</item>
+      <item>cell2mat</item>
+      <item>cell2struct</item>
+      <item>celldisp</item>
+      <item>cellfun</item>
+      <item>cellindexmat</item>
+      <item>cellslices</item>
+      <item>cellstr</item>
+      <item>center</item>
+      <item>cgs</item>
+      <item>char</item>
+      <item>chdir</item>
+      <item>chi2cdf</item>
+      <item>chi2inv</item>
+      <item>chi2pdf</item>
+      <item>chi2rnd</item>
+      <item>chisquare_test_homogeneity</item>
+      <item>chisquare_test_independence</item>
+      <item>chol</item>
+      <item>chol2inv</item>
+      <item>choldelete</item>
+      <item>cholinsert</item>
+      <item>cholinv</item>
+      <item>cholshift</item>
+      <item>cholupdate</item>
+      <item>chop</item>
+      <item>circshift</item>
+      <item>citation</item>
+      <item>cla</item>
+      <item>clabel</item>
+      <item>class</item>
+      <item>clc</item>
+      <item>clf</item>
+      <item>clock</item>
+      <item>cloglog</item>
+      <item>close</item>
+      <item>closereq</item>
+      <item>cmpermute</item>
+      <item>cmunique</item>
+      <item>colamd</item>
+      <item>colloc</item>
+      <item>colon</item>
+      <item>colorbar</item>
+      <item>colorcube</item>
+      <item>colormap</item>
+      <item>colperm</item>
+      <item>colstyle</item>
+      <item>columns</item>
+      <item>comet</item>
+      <item>comet3</item>
+      <item>comma</item>
+      <item>command_line_path</item>
+      <item>common_size</item>
+      <item>commutation_matrix</item>
+      <item>compan</item>
+      <item>compare_versions</item>
+      <item>compass</item>
+      <item>completion_append_char</item>
+      <item>completion_matches</item>
+      <item>complex</item>
+      <item>computer</item>
+      <item>cond</item>
+      <item>condeig</item>
+      <item>condest</item>
+      <item>confirm_recursive_rmdir</item>
+      <item>conj</item>
+      <item>contour</item>
+      <item>contour3</item>
+      <item>contourc</item>
+      <item>contourf</item>
+      <item>contrast</item>
+      <item>conv</item>
+      <item>conv2</item>
+      <item>convhull</item>
+      <item>convhulln</item>
+      <item>convn</item>
+      <item>cool</item>
+      <item>copper</item>
+      <item>copyfile</item>
+      <item>copyobj</item>
+      <item>cor_test</item>
+      <item>corr</item>
+      <item>corrcoef</item>
+      <item>cos</item>
+      <item>cosd</item>
+      <item>cosh</item>
+      <item>cot</item>
+      <item>cotd</item>
+      <item>coth</item>
+      <item>cov</item>
+      <item>cplxpair</item>
+      <item>cputime</item>
+      <item>crash_dumps_octave_core</item>
+      <item>cross</item>
+      <item>csc</item>
+      <item>cscd</item>
+      <item>csch</item>
+      <item>cstrcat</item>
+      <item>csvread</item>
+      <item>csvwrite</item>
+      <item>csymamd</item>
+      <item>ctime</item>
+      <item>ctranspose</item>
+      <item>cubehelix</item>
+      <item>cummax</item>
+      <item>cummin</item>
+      <item>cumprod</item>
+      <item>cumsum</item>
+      <item>cumtrapz</item>
+      <item>curl</item>
+      <item>cylinder</item>
+      <item>daspect</item>
+      <item>daspk</item>
+      <item>daspk_options</item>
+      <item>dasrt</item>
+      <item>dasrt_options</item>
+      <item>dassl</item>
+      <item>dassl_options</item>
+      <item>date</item>
+      <item>datenum</item>
+      <item>datestr</item>
+      <item>datetick</item>
+      <item>datevec</item>
+      <item>dawson</item>
+      <item>dblquad</item>
+      <item>dbnext</item>
+      <item>deal</item>
+      <item>debian_missing_handler</item>
+      <item>deblank</item>
+      <item>debug</item>
+      <item>debug_java</item>
+      <item>debug_jit</item>
+      <item>debug_on_error</item>
+      <item>debug_on_interrupt</item>
+      <item>debug_on_warning</item>
+      <item>dec2base</item>
+      <item>dec2bin</item>
+      <item>dec2hex</item>
+      <item>deconv</item>
+      <item>deg2rad</item>
+      <item>del2</item>
+      <item>delaunay</item>
+      <item>delaunay3</item>
+      <item>delaunayn</item>
+      <item>delete</item>
+      <item>dellistener</item>
+      <item>demo</item>
+      <item>desktop</item>
+      <item>det</item>
+      <item>detrend</item>
+      <item>diag</item>
+      <item>dialog</item>
+      <item>diff</item>
+      <item>diffpara</item>
+      <item>diffuse</item>
+      <item>dir</item>
+      <item>dir_in_loadpath</item>
+      <item>disable_diagonal_matrix</item>
+      <item>disable_permutation_matrix</item>
+      <item>disable_range</item>
+      <item>discrete_cdf</item>
+      <item>discrete_inv</item>
+      <item>discrete_pdf</item>
+      <item>discrete_rnd</item>
+      <item>disp</item>
+      <item>display</item>
+      <item>divergence</item>
+      <item>dlmread</item>
+      <item>dlmwrite</item>
+      <item>dmperm</item>
+      <item>do_braindead_shortcircuit_evaluation</item>
+      <item>do_string_escapes</item>
+      <item>doc</item>
+      <item>doc_cache_create</item>
+      <item>doc_cache_file</item>
+      <item>dos</item>
+      <item>dot</item>
+      <item>double</item>
+      <item>drawnow</item>
+      <item>dsearch</item>
+      <item>dsearchn</item>
+      <item>dump_prefs</item>
+      <item>dup2</item>
+      <item>duplication_matrix</item>
+      <item>durbinlevinson</item>
+      <item>echo_executing_commands</item>
+      <item>edit</item>
+      <item>eig</item>
+      <item>eigs</item>
+      <item>ellipj</item>
+      <item>ellipke</item>
+      <item>ellipsoid</item>
+      <item>empirical_cdf</item>
+      <item>empirical_inv</item>
+      <item>empirical_pdf</item>
+      <item>empirical_rnd</item>
+      <item>end</item>
+      <item>endgrent</item>
+      <item>endpwent</item>
+      <item>eomday</item>
+      <item>eq</item>
+      <item>erf</item>
+      <item>erfc</item>
+      <item>erfcinv</item>
+      <item>erfcx</item>
+      <item>erfi</item>
+      <item>erfinv</item>
+      <item>errno</item>
+      <item>errno_list</item>
+      <item>error</item>
+      <item>error_ids</item>
+      <item>errorbar</item>
+      <item>errordlg</item>
+      <item>etime</item>
+      <item>etree</item>
+      <item>etreeplot</item>
+      <item>eval</item>
+      <item>evalc</item>
+      <item>evalin</item>
+      <item>example</item>
+      <item>exec</item>
+      <item>exist</item>
+      <item>exp</item>
+      <item>expcdf</item>
+      <item>expint</item>
+      <item>expinv</item>
+      <item>expm</item>
+      <item>expm1</item>
+      <item>exppdf</item>
+      <item>exprnd</item>
+      <item>eye</item>
+      <item>ezcontour</item>
+      <item>ezcontourf</item>
+      <item>ezmesh</item>
+      <item>ezmeshc</item>
+      <item>ezplot</item>
+      <item>ezplot3</item>
+      <item>ezpolar</item>
+      <item>ezsurf</item>
+      <item>ezsurfc</item>
+      <item>f_test_regression</item>
+      <item>fact</item>
+      <item>factor</item>
+      <item>factorial</item>
+      <item>fail</item>
+      <item>false</item>
+      <item>fcdf</item>
+      <item>fclear</item>
+      <item>fclose</item>
+      <item>fcntl</item>
+      <item>fdisp</item>
+      <item>feather</item>
+      <item>feof</item>
+      <item>ferror</item>
+      <item>feval</item>
+      <item>fflush</item>
+      <item>fft</item>
+      <item>fft2</item>
+      <item>fftconv</item>
+      <item>fftfilt</item>
+      <item>fftn</item>
+      <item>fftshift</item>
+      <item>fftw</item>
+      <item>fgetl</item>
+      <item>fgets</item>
+      <item>fieldnames</item>
+      <item>figure</item>
+      <item>file_in_loadpath</item>
+      <item>file_in_path</item>
+      <item>fileattrib</item>
+      <item>filemarker</item>
+      <item>fileparts</item>
+      <item>fileread</item>
+      <item>filesep</item>
+      <item>fill</item>
+      <item>filter</item>
+      <item>filter2</item>
+      <item>find</item>
+      <item>find_dir_in_path</item>
+      <item>findall</item>
+      <item>findfigs</item>
+      <item>findobj</item>
+      <item>findstr</item>
+      <item>finite</item>
+      <item>finv</item>
+      <item>fix</item>
+      <item>fixed_point_format</item>
+      <item>flag</item>
+      <item>flintmax</item>
+      <item>flip</item>
+      <item>flipdim</item>
+      <item>fliplr</item>
+      <item>flipud</item>
+      <item>floor</item>
+      <item>fminbnd</item>
+      <item>fminsearch</item>
+      <item>fminunc</item>
+      <item>fmod</item>
+      <item>fnmatch</item>
+      <item>fopen</item>
+      <item>fork</item>
+      <item>formula</item>
+      <item>fpdf</item>
+      <item>fplot</item>
+      <item>fprintf</item>
+      <item>fputs</item>
+      <item>fractdiff</item>
+      <item>frame2im</item>
+      <item>fread</item>
+      <item>freport</item>
+      <item>freqz</item>
+      <item>freqz_plot</item>
+      <item>frewind</item>
+      <item>frnd</item>
+      <item>fscanf</item>
+      <item>fseek</item>
+      <item>fskipl</item>
+      <item>fsolve</item>
+      <item>ftell</item>
+      <item>full</item>
+      <item>fullfile</item>
+      <item>func2str</item>
+      <item>functions</item>
+      <item>fwrite</item>
+      <item>fzero</item>
+      <item>gallery</item>
+      <item>gamcdf</item>
+      <item>gaminv</item>
+      <item>gamma</item>
+      <item>gammainc</item>
+      <item>gammaln</item>
+      <item>gampdf</item>
+      <item>gamrnd</item>
+      <item>gca</item>
+      <item>gcbf</item>
+      <item>gcbo</item>
+      <item>gcd</item>
+      <item>gcf</item>
+      <item>gco</item>
+      <item>ge</item>
+      <item>genpath</item>
+      <item>genvarname</item>
+      <item>geocdf</item>
+      <item>geoinv</item>
+      <item>geopdf</item>
+      <item>geornd</item>
+      <item>get</item>
+      <item>get_first_help_sentence</item>
+      <item>get_help_text</item>
+      <item>get_help_text_from_file</item>
+      <item>get_home_directory</item>
+      <item>getappdata</item>
+      <item>getegid</item>
+      <item>getenv</item>
+      <item>geteuid</item>
+      <item>getfield</item>
+      <item>getgid</item>
+      <item>getgrent</item>
+      <item>getgrgid</item>
+      <item>getgrnam</item>
+      <item>gethostname</item>
+      <item>getpgrp</item>
+      <item>getpid</item>
+      <item>getppid</item>
+      <item>getpref</item>
+      <item>getpwent</item>
+      <item>getpwnam</item>
+      <item>getpwuid</item>
+      <item>getrusage</item>
+      <item>getuid</item>
+      <item>ginput</item>
+      <item>givens</item>
+      <item>glob</item>
+      <item>glpk</item>
+      <item>gls</item>
+      <item>gmap40</item>
+      <item>gmres</item>
+      <item>gmtime</item>
+      <item>gnuplot_binary</item>
+      <item>gplot</item>
+      <item>grabcode</item>
+      <item>gradient</item>
+      <item>graphics_toolkit</item>
+      <item>gray</item>
+      <item>gray2ind</item>
+      <item>grid</item>
+      <item>griddata</item>
+      <item>griddata3</item>
+      <item>griddatan</item>
+      <item>gt</item>
+      <item>gtext</item>
+      <item>guidata</item>
+      <item>guihandles</item>
+      <item>gunzip</item>
+      <item>gzip</item>
+      <item>hadamard</item>
+      <item>hamming</item>
+      <item>hankel</item>
+      <item>hanning</item>
+      <item>hash</item>
+      <item>have_window_system</item>
+      <item>hdl2struct</item>
+      <item>help</item>
+      <item>helpdlg</item>
+      <item>hess</item>
+      <item>hex2dec</item>
+      <item>hex2num</item>
+      <item>hggroup</item>
+      <item>hgload</item>
+      <item>hgsave</item>
+      <item>hidden</item>
+      <item>hilb</item>
+      <item>hist</item>
+      <item>histc</item>
+      <item>history_control</item>
+      <item>history_file</item>
+      <item>history_save</item>
+      <item>history_size</item>
+      <item>history_timestamp_format_string</item>
+      <item>hold</item>
+      <item>home</item>
+      <item>horzcat</item>
+      <item>hot</item>
+      <item>hotelling_test</item>
+      <item>hotelling_test_2</item>
+      <item>housh</item>
+      <item>hsv</item>
+      <item>hsv2rgb</item>
+      <item>hurst</item>
+      <item>hygecdf</item>
+      <item>hygeinv</item>
+      <item>hygepdf</item>
+      <item>hygernd</item>
+      <item>hypot</item>
+      <item>i</item>
+      <item>ichol</item>
+      <item>idivide</item>
+      <item>ifelse</item>
+      <item>ifft</item>
+      <item>ifft2</item>
+      <item>ifftn</item>
+      <item>ifftshift</item>
+      <item>ignore_function_time_stamp</item>
+      <item>ilu</item>
+      <item>im2double</item>
+      <item>im2frame</item>
+      <item>imag</item>
+      <item>image</item>
+      <item>imagesc</item>
+      <item>imfinfo</item>
+      <item>imformats</item>
+      <item>importdata</item>
+      <item>imread</item>
+      <item>imshow</item>
+      <item>imwrite</item>
+      <item>ind2gray</item>
+      <item>ind2rgb</item>
+      <item>ind2sub</item>
+      <item>index</item>
+      <item>inf</item>
+      <item>inferiorto</item>
+      <item>info</item>
+      <item>info_file</item>
+      <item>info_program</item>
+      <item>inline</item>
+      <item>inpolygon</item>
+      <item>input</item>
+      <item>inputParser</item>
+      <item>inputdlg</item>
+      <item>inputname</item>
+      <item>int16</item>
+      <item>int2str</item>
+      <item>int32</item>
+      <item>int64</item>
+      <item>int8</item>
+      <item>interp1</item>
+      <item>interp2</item>
+      <item>interp3</item>
+      <item>interpft</item>
+      <item>interpn</item>
+      <item>intersect</item>
+      <item>intmax</item>
+      <item>intmin</item>
+      <item>inv</item>
+      <item>inverse</item>
+      <item>invhilb</item>
+      <item>ipermute</item>
+      <item>iqr</item>
+      <item>is_absolute_filename</item>
+      <item>is_dq_string</item>
+      <item>is_function_handle</item>
+      <item>is_leap_year</item>
+      <item>is_rooted_relative_filename</item>
+      <item>is_sq_string</item>
+      <item>is_valid_file_id</item>
+      <item>isa</item>
+      <item>isalnum</item>
+      <item>isalpha</item>
+      <item>isappdata</item>
+      <item>isargout</item>
+      <item>isascii</item>
+      <item>isaxes</item>
+      <item>isbanded</item>
+      <item>isbool</item>
+      <item>iscell</item>
+      <item>iscellstr</item>
+      <item>ischar</item>
+      <item>iscntrl</item>
+      <item>iscolormap</item>
+      <item>iscolumn</item>
+      <item>iscomplex</item>
+      <item>isdebugmode</item>
+      <item>isdefinite</item>
+      <item>isdeployed</item>
+      <item>isdiag</item>
+      <item>isdigit</item>
+      <item>isdir</item>
+      <item>isempty</item>
+      <item>isequal</item>
+      <item>isequaln</item>
+      <item>isfield</item>
+      <item>isfigure</item>
+      <item>isfinite</item>
+      <item>isfloat</item>
+      <item>isglobal</item>
+      <item>isgraph</item>
+      <item>isguirunning</item>
+      <item>ishandle</item>
+      <item>ishermitian</item>
+      <item>ishghandle</item>
+      <item>ishold</item>
+      <item>isieee</item>
+      <item>isindex</item>
+      <item>isinf</item>
+      <item>isinteger</item>
+      <item>isjava</item>
+      <item>iskeyword</item>
+      <item>isletter</item>
+      <item>islogical</item>
+      <item>islower</item>
+      <item>ismac</item>
+      <item>ismatrix</item>
+      <item>ismember</item>
+      <item>ismethod</item>
+      <item>isna</item>
+      <item>isnan</item>
+      <item>isnull</item>
+      <item>isnumeric</item>
+      <item>isobject</item>
+      <item>isocaps</item>
+      <item>isocolors</item>
+      <item>isonormals</item>
+      <item>isosurface</item>
+      <item>ispc</item>
+      <item>ispref</item>
+      <item>isprime</item>
+      <item>isprint</item>
+      <item>isprop</item>
+      <item>ispunct</item>
+      <item>isreal</item>
+      <item>isrow</item>
+      <item>isscalar</item>
+      <item>issorted</item>
+      <item>isspace</item>
+      <item>issparse</item>
+      <item>issquare</item>
+      <item>isstr</item>
+      <item>isstrprop</item>
+      <item>isstruct</item>
+      <item>isstudent</item>
+      <item>issymmetric</item>
+      <item>istril</item>
+      <item>istriu</item>
+      <item>isunix</item>
+      <item>isupper</item>
+      <item>isvarname</item>
+      <item>isvector</item>
+      <item>isxdigit</item>
+      <item>j</item>
+      <item>java2mat</item>
+      <item>javaArray</item>
+      <item>javaMethod</item>
+      <item>javaObject</item>
+      <item>java_get</item>
+      <item>java_matrix_autoconversion</item>
+      <item>java_set</item>
+      <item>java_unsigned_autoconversion</item>
+      <item>javaaddpath</item>
+      <item>javachk</item>
+      <item>javaclasspath</item>
+      <item>javamem</item>
+      <item>javarmpath</item>
+      <item>jet</item>
+      <item>jit_enable</item>
+      <item>jit_failcnt</item>
+      <item>jit_startcnt</item>
+      <item>kbhit</item>
+      <item>kendall</item>
+      <item>keyboard</item>
+      <item>keywords</item>
+      <item>kill</item>
+      <item>kolmogorov_smirnov_cdf</item>
+      <item>kolmogorov_smirnov_test</item>
+      <item>kolmogorov_smirnov_test_2</item>
+      <item>kron</item>
+      <item>kruskal_wallis_test</item>
+      <item>krylov</item>
+      <item>kurtosis</item>
+      <item>laplace_cdf</item>
+      <item>laplace_inv</item>
+      <item>laplace_pdf</item>
+      <item>laplace_rnd</item>
+      <item>lasterr</item>
+      <item>lasterror</item>
+      <item>lastwarn</item>
+      <item>lcm</item>
+      <item>ldivide</item>
+      <item>le</item>
+      <item>legend</item>
+      <item>legendre</item>
+      <item>length</item>
+      <item>lgamma</item>
+      <item>license</item>
+      <item>light</item>
+      <item>lighting</item>
+      <item>lin2mu</item>
+      <item>line</item>
+      <item>lines</item>
+      <item>linkaxes</item>
+      <item>linkprop</item>
+      <item>linsolve</item>
+      <item>linspace</item>
+      <item>list_in_columns</item>
+      <item>list_primes</item>
+      <item>listdlg</item>
+      <item>loadaudio</item>
+      <item>loaded_graphics_toolkits</item>
+      <item>loadobj</item>
+      <item>localfunctions</item>
+      <item>localtime</item>
+      <item>log</item>
+      <item>log10</item>
+      <item>log1p</item>
+      <item>log2</item>
+      <item>logical</item>
+      <item>logistic_cdf</item>
+      <item>logistic_inv</item>
+      <item>logistic_pdf</item>
+      <item>logistic_regression</item>
+      <item>logistic_rnd</item>
+      <item>logit</item>
+      <item>loglog</item>
+      <item>loglogerr</item>
+      <item>logm</item>
+      <item>logncdf</item>
+      <item>logninv</item>
+      <item>lognpdf</item>
+      <item>lognrnd</item>
+      <item>logspace</item>
+      <item>lookfor</item>
+      <item>lookup</item>
+      <item>lower</item>
+      <item>ls</item>
+      <item>ls_command</item>
+      <item>lscov</item>
+      <item>lsode</item>
+      <item>lsode_options</item>
+      <item>lsqnonneg</item>
+      <item>lstat</item>
+      <item>lt</item>
+      <item>lu</item>
+      <item>luinc</item>
+      <item>luupdate</item>
+      <item>magic</item>
+      <item>mahalanobis</item>
+      <item>make_absolute_filename</item>
+      <item>makeinfo_program</item>
+      <item>manova</item>
+      <item>mat2cell</item>
+      <item>mat2str</item>
+      <item>material</item>
+      <item>matlabroot</item>
+      <item>matrix_type</item>
+      <item>max</item>
+      <item>max_recursion_depth</item>
+      <item>mcnemar_test</item>
+      <item>md5sum</item>
+      <item>mean</item>
+      <item>meansq</item>
+      <item>median</item>
+      <item>menu</item>
+      <item>merge</item>
+      <item>mesh</item>
+      <item>meshc</item>
+      <item>meshgrid</item>
+      <item>meshz</item>
+      <item>meta.class</item>
+      <item>meta.dynproperty</item>
+      <item>meta.event</item>
+      <item>meta.method</item>
+      <item>meta.package</item>
+      <item>meta.property</item>
+      <item>metaclass</item>
+      <item>methods</item>
+      <item>mex</item>
+      <item>mexext</item>
+      <item>mfilename</item>
+      <item>mgorth</item>
+      <item>min</item>
+      <item>minus</item>
+      <item>mislocked</item>
+      <item>missing_component_hook</item>
+      <item>missing_function_hook</item>
+      <item>mkdir</item>
+      <item>mkfifo</item>
+      <item>mkoctfile</item>
+      <item>mkpp</item>
+      <item>mkstemp</item>
+      <item>mktime</item>
+      <item>mldivide</item>
+      <item>mlock</item>
+      <item>mod</item>
+      <item>mode</item>
+      <item>moment</item>
+      <item>mouse_wheel_zoom</item>
+      <item>movefile</item>
+      <item>mpoles</item>
+      <item>mpower</item>
+      <item>mrdivide</item>
+      <item>msgbox</item>
+      <item>mtimes</item>
+      <item>mu2lin</item>
+      <item>munlock</item>
+      <item>namelengthmax</item>
+      <item>nan</item>
+      <item>nargchk</item>
+      <item>nargin</item>
+      <item>narginchk</item>
+      <item>nargout</item>
+      <item>nargoutchk</item>
+      <item>native_float_format</item>
+      <item>nbincdf</item>
+      <item>nbininv</item>
+      <item>nbinpdf</item>
+      <item>nbinrnd</item>
+      <item>nchoosek</item>
+      <item>ndgrid</item>
+      <item>ndims</item>
+      <item>ne</item>
+      <item>newplot</item>
+      <item>news</item>
+      <item>nextpow2</item>
+      <item>nfields</item>
+      <item>nnz</item>
+      <item>nonzeros</item>
+      <item>norm</item>
+      <item>normcdf</item>
+      <item>normest</item>
+      <item>normest1</item>
+      <item>norminv</item>
+      <item>normpdf</item>
+      <item>normrnd</item>
+      <item>not</item>
+      <item>now</item>
+      <item>nproc</item>
+      <item>nth_element</item>
+      <item>nthargout</item>
+      <item>nthroot</item>
+      <item>ntsc2rgb</item>
+      <item>null</item>
+      <item>num2cell</item>
+      <item>num2hex</item>
+      <item>num2str</item>
+      <item>numel</item>
+      <item>numfields</item>
+      <item>nzmax</item>
+      <item>ocean</item>
+      <item>octave_config_info</item>
+      <item>octave_core_file_limit</item>
+      <item>octave_core_file_name</item>
+      <item>octave_core_file_options</item>
+      <item>octave_tmp_file_name</item>
+      <item>ode23</item>
+      <item>ode45</item>
+      <item>odeget</item>
+      <item>odeplot</item>
+      <item>odeset</item>
+      <item>ols</item>
+      <item>onCleanup</item>
+      <item>onenormest</item>
+      <item>ones</item>
+      <item>open</item>
+      <item>optimget</item>
+      <item>optimize_subsasgn_calls</item>
+      <item>optimset</item>
+      <item>or</item>
+      <item>orderfields</item>
+      <item>ordschur</item>
+      <item>orient</item>
+      <item>orth</item>
+      <item>ostrsplit</item>
+      <item>output_precision</item>
+      <item>pack</item>
+      <item>padecoef</item>
+      <item>page_output_immediately</item>
+      <item>page_screen_output</item>
+      <item>pan</item>
+      <item>paren</item>
+      <item>pareto</item>
+      <item>parseparams</item>
+      <item>pascal</item>
+      <item>patch</item>
+      <item>path</item>
+      <item>pathdef</item>
+      <item>pathsep</item>
+      <item>pause</item>
+      <item>pbaspect</item>
+      <item>pcg</item>
+      <item>pchip</item>
+      <item>pclose</item>
+      <item>pcolor</item>
+      <item>pcr</item>
+      <item>peaks</item>
+      <item>periodogram</item>
+      <item>perl</item>
+      <item>perms</item>
+      <item>permute</item>
+      <item>pie</item>
+      <item>pie3</item>
+      <item>pink</item>
+      <item>pinv</item>
+      <item>pipe</item>
+      <item>pkg</item>
+      <item>planerot</item>
+      <item>playaudio</item>
+      <item>plot</item>
+      <item>plot3</item>
+      <item>plotmatrix</item>
+      <item>plotyy</item>
+      <item>plus</item>
+      <item>poisscdf</item>
+      <item>poissinv</item>
+      <item>poisspdf</item>
+      <item>poissrnd</item>
+      <item>pol2cart</item>
+      <item>polar</item>
+      <item>poly</item>
+      <item>polyaffine</item>
+      <item>polyarea</item>
+      <item>polyder</item>
+      <item>polyeig</item>
+      <item>polyfit</item>
+      <item>polygcd</item>
+      <item>polyint</item>
+      <item>polyout</item>
+      <item>polyreduce</item>
+      <item>polyval</item>
+      <item>polyvalm</item>
+      <item>popen</item>
+      <item>popen2</item>
+      <item>postpad</item>
+      <item>pow2</item>
+      <item>power</item>
+      <item>powerset</item>
+      <item>ppder</item>
+      <item>ppint</item>
+      <item>ppjumps</item>
+      <item>ppplot</item>
+      <item>ppval</item>
+      <item>pqpnonneg</item>
+      <item>prctile</item>
+      <item>prefdir</item>
+      <item>preferences</item>
+      <item>prepad</item>
+      <item>primes</item>
+      <item>print</item>
+      <item>print_empty_dimensions</item>
+      <item>print_struct_array_contents</item>
+      <item>print_usage</item>
+      <item>printd</item>
+      <item>printf</item>
+      <item>prism</item>
+      <item>probit</item>
+      <item>prod</item>
+      <item>profexplore</item>
+      <item>profexport</item>
+      <item>profile</item>
+      <item>profshow</item>
+      <item>program_invocation_name</item>
+      <item>program_name</item>
+      <item>prop_test_2</item>
+      <item>psi</item>
+      <item>publish</item>
+      <item>putenv</item>
+      <item>puts</item>
+      <item>pwd</item>
+      <item>python</item>
+      <item>qmr</item>
+      <item>qp</item>
+      <item>qqplot</item>
+      <item>qr</item>
+      <item>qrdelete</item>
+      <item>qrinsert</item>
+      <item>qrshift</item>
+      <item>qrupdate</item>
+      <item>quad</item>
+      <item>quad_options</item>
+      <item>quadcc</item>
+      <item>quadgk</item>
+      <item>quadl</item>
+      <item>quadv</item>
+      <item>quantile</item>
+      <item>questdlg</item>
+      <item>quit</item>
+      <item>quiver</item>
+      <item>quiver3</item>
+      <item>qz</item>
+      <item>qzhess</item>
+      <item>rad2deg</item>
+      <item>rainbow</item>
+      <item>rand</item>
+      <item>rande</item>
+      <item>randg</item>
+      <item>randi</item>
+      <item>randn</item>
+      <item>randp</item>
+      <item>randperm</item>
+      <item>range</item>
+      <item>rank</item>
+      <item>ranks</item>
+      <item>rat</item>
+      <item>rats</item>
+      <item>rcond</item>
+      <item>rdivide</item>
+      <item>readdir</item>
+      <item>readline_re_read_init_file</item>
+      <item>readline_read_init_file</item>
+      <item>real</item>
+      <item>reallog</item>
+      <item>realpow</item>
+      <item>realsqrt</item>
+      <item>record</item>
+      <item>rectangle</item>
+      <item>rectint</item>
+      <item>recycle</item>
+      <item>reducepatch</item>
+      <item>reducevolume</item>
+      <item>refresh</item>
+      <item>refreshdata</item>
+      <item>regexp</item>
+      <item>regexpi</item>
+      <item>regexprep</item>
+      <item>regexptranslate</item>
+      <item>register_graphics_toolkit</item>
+      <item>rehash</item>
+      <item>rem</item>
+      <item>remove_input_event_hook</item>
+      <item>repelems</item>
+      <item>repmat</item>
+      <item>reset</item>
+      <item>reshape</item>
+      <item>residue</item>
+      <item>resize</item>
+      <item>restoredefaultpath</item>
+      <item>rethrow</item>
+      <item>rgb2hsv</item>
+      <item>rgb2ind</item>
+      <item>rgb2ntsc</item>
+      <item>rgbplot</item>
+      <item>ribbon</item>
+      <item>rindex</item>
+      <item>rmappdata</item>
+      <item>rmfield</item>
+      <item>rmpath</item>
+      <item>rmpref</item>
+      <item>roots</item>
+      <item>rose</item>
+      <item>rosser</item>
+      <item>rot90</item>
+      <item>rotate</item>
+      <item>rotate3d</item>
+      <item>rotdim</item>
+      <item>round</item>
+      <item>roundb</item>
+      <item>rows</item>
+      <item>rref</item>
+      <item>rsf2csf</item>
+      <item>run</item>
+      <item>run_count</item>
+      <item>run_test</item>
+      <item>rundemos</item>
+      <item>runlength</item>
+      <item>runtests</item>
+      <item>save_default_options</item>
+      <item>save_header_format_string</item>
+      <item>save_precision</item>
+      <item>saveas</item>
+      <item>saveaudio</item>
+      <item>saveobj</item>
+      <item>savepath</item>
+      <item>scanf</item>
+      <item>scatter</item>
+      <item>scatter3</item>
+      <item>schur</item>
+      <item>sec</item>
+      <item>secd</item>
+      <item>sech</item>
+      <item>semicolon</item>
+      <item>semilogx</item>
+      <item>semilogxerr</item>
+      <item>semilogy</item>
+      <item>semilogyerr</item>
+      <item>set</item>
+      <item>setappdata</item>
+      <item>setaudio</item>
+      <item>setdiff</item>
+      <item>setenv</item>
+      <item>setfield</item>
+      <item>setgrent</item>
+      <item>setpref</item>
+      <item>setpwent</item>
+      <item>setxor</item>
+      <item>shading</item>
+      <item>shg</item>
+      <item>shift</item>
+      <item>shiftdim</item>
+      <item>shrinkfaces</item>
+      <item>sighup_dumps_octave_core</item>
+      <item>sign</item>
+      <item>sign_test</item>
+      <item>signbit</item>
+      <item>sigterm_dumps_octave_core</item>
+      <item>silent_functions</item>
+      <item>sin</item>
+      <item>sinc</item>
+      <item>sind</item>
+      <item>sinetone</item>
+      <item>sinewave</item>
+      <item>single</item>
+      <item>sinh</item>
+      <item>size</item>
+      <item>size_equal</item>
+      <item>sizemax</item>
+      <item>sizeof</item>
+      <item>skewness</item>
+      <item>sleep</item>
+      <item>slice</item>
+      <item>smooth3</item>
+      <item>sombrero</item>
+      <item>sort</item>
+      <item>sortrows</item>
+      <item>sound</item>
+      <item>soundsc</item>
+      <item>source</item>
+      <item>spalloc</item>
+      <item>sparse</item>
+      <item>sparse_auto_mutate</item>
+      <item>spaugment</item>
+      <item>spconvert</item>
+      <item>spdiags</item>
+      <item>spearman</item>
+      <item>spectral_adf</item>
+      <item>spectral_xdf</item>
+      <item>specular</item>
+      <item>speed</item>
+      <item>spencer</item>
+      <item>speye</item>
+      <item>spfun</item>
+      <item>sph2cart</item>
+      <item>sphere</item>
+      <item>spinmap</item>
+      <item>spline</item>
+      <item>splinefit</item>
+      <item>split_long_rows</item>
+      <item>spones</item>
+      <item>spparms</item>
+      <item>sprand</item>
+      <item>sprandn</item>
+      <item>sprandsym</item>
+      <item>sprank</item>
+      <item>spring</item>
+      <item>sprintf</item>
+      <item>spstats</item>
+      <item>spy</item>
+      <item>sqp</item>
+      <item>sqrt</item>
+      <item>sqrtm</item>
+      <item>squeeze</item>
+      <item>sscanf</item>
+      <item>stairs</item>
+      <item>stat</item>
+      <item>statistics</item>
+      <item>std</item>
+      <item>stderr</item>
+      <item>stdin</item>
+      <item>stdnormal_cdf</item>
+      <item>stdnormal_inv</item>
+      <item>stdnormal_pdf</item>
+      <item>stdnormal_rnd</item>
+      <item>stdout</item>
+      <item>stem</item>
+      <item>stem3</item>
+      <item>stemleaf</item>
+      <item>stft</item>
+      <item>str2double</item>
+      <item>str2func</item>
+      <item>str2num</item>
+      <item>strcat</item>
+      <item>strchr</item>
+      <item>strcmp</item>
+      <item>strcmpi</item>
+      <item>strfind</item>
+      <item>strftime</item>
+      <item>string_fill_char</item>
+      <item>strjoin</item>
+      <item>strjust</item>
+      <item>strmatch</item>
+      <item>strncmp</item>
+      <item>strncmpi</item>
+      <item>strptime</item>
+      <item>strread</item>
+      <item>strrep</item>
+      <item>strsplit</item>
+      <item>strtok</item>
+      <item>strtrim</item>
+      <item>strtrunc</item>
+      <item>struct</item>
+      <item>struct2cell</item>
+      <item>struct2hdl</item>
+      <item>struct_levels_to_print</item>
+      <item>structfun</item>
+      <item>strvcat</item>
+      <item>sub2ind</item>
+      <item>subplot</item>
+      <item>subsasgn</item>
+      <item>subsindex</item>
+      <item>subspace</item>
+      <item>subsref</item>
+      <item>substr</item>
+      <item>substruct</item>
+      <item>sum</item>
+      <item>summer</item>
+      <item>sumsq</item>
+      <item>superiorto</item>
+      <item>suppress_verbose_help_message</item>
+      <item>surf</item>
+      <item>surface</item>
+      <item>surfc</item>
+      <item>surfl</item>
+      <item>surfnorm</item>
+      <item>svd</item>
+      <item>svd_driver</item>
+      <item>svds</item>
+      <item>swapbytes</item>
+      <item>syl</item>
+      <item>sylvester</item>
+      <item>symamd</item>
+      <item>symbfact</item>
+      <item>symrcm</item>
+      <item>symvar</item>
+      <item>synthesis</item>
+      <item>system</item>
+      <item>t_test</item>
+      <item>t_test_2</item>
+      <item>t_test_regression</item>
+      <item>table</item>
+      <item>tan</item>
+      <item>tand</item>
+      <item>tanh</item>
+      <item>tar</item>
+      <item>tcdf</item>
+      <item>tempdir</item>
+      <item>tempname</item>
+      <item>terminal_size</item>
+      <item>test</item>
+      <item>tetramesh</item>
+      <item>texi_macros_file</item>
+      <item>text</item>
+      <item>textread</item>
+      <item>textscan</item>
+      <item>tic</item>
+      <item>tilde_expand</item>
+      <item>time</item>
+      <item>times</item>
+      <item>tinv</item>
+      <item>title</item>
+      <item>tmpfile</item>
+      <item>tmpnam</item>
+      <item>toascii</item>
+      <item>toc</item>
+      <item>toeplitz</item>
+      <item>tolower</item>
+      <item>toupper</item>
+      <item>tpdf</item>
+      <item>trace</item>
+      <item>transpose</item>
+      <item>trapz</item>
+      <item>treelayout</item>
+      <item>treeplot</item>
+      <item>tril</item>
+      <item>trimesh</item>
+      <item>triplequad</item>
+      <item>triplot</item>
+      <item>trisurf</item>
+      <item>triu</item>
+      <item>trnd</item>
+      <item>true</item>
+      <item>tsearch</item>
+      <item>tsearchn</item>
+      <item>type</item>
+      <item>typecast</item>
+      <item>typeinfo</item>
+      <item>u_test</item>
+      <item>uibuttongroup</item>
+      <item>uicontextmenu</item>
+      <item>uicontrol</item>
+      <item>uigetdir</item>
+      <item>uigetfile</item>
+      <item>uimenu</item>
+      <item>uint16</item>
+      <item>uint32</item>
+      <item>uint64</item>
+      <item>uint8</item>
+      <item>uipanel</item>
+      <item>uipushtool</item>
+      <item>uiputfile</item>
+      <item>uiresume</item>
+      <item>uitoggletool</item>
+      <item>uitoolbar</item>
+      <item>uiwait</item>
+      <item>umask</item>
+      <item>uminus</item>
+      <item>uname</item>
+      <item>undo_string_escapes</item>
+      <item>unidcdf</item>
+      <item>unidinv</item>
+      <item>unidpdf</item>
+      <item>unidrnd</item>
+      <item>unifcdf</item>
+      <item>unifinv</item>
+      <item>unifpdf</item>
+      <item>unifrnd</item>
+      <item>union</item>
+      <item>unique</item>
+      <item>unix</item>
+      <item>unlink</item>
+      <item>unmkpp</item>
+      <item>unpack</item>
+      <item>unsetenv</item>
+      <item>untabify</item>
+      <item>untar</item>
+      <item>unwrap</item>
+      <item>unzip</item>
+      <item>uplus</item>
+      <item>upper</item>
+      <item>urlread</item>
+      <item>urlwrite</item>
+      <item>usage</item>
+      <item>usejava</item>
+      <item>usleep</item>
+      <item>validateattributes</item>
+      <item>validatestring</item>
+      <item>vander</item>
+      <item>var</item>
+      <item>var_test</item>
+      <item>vec</item>
+      <item>vech</item>
+      <item>vectorize</item>
+      <item>ver</item>
+      <item>version</item>
+      <item>vertcat</item>
+      <item>view</item>
+      <item>viridis</item>
+      <item>voronoi</item>
+      <item>voronoin</item>
+      <item>waitbar</item>
+      <item>waitfor</item>
+      <item>waitforbuttonpress</item>
+      <item>waitpid</item>
+      <item>warndlg</item>
+      <item>warning</item>
+      <item>warning_ids</item>
+      <item>warranty</item>
+      <item>waterfall</item>
+      <item>wavread</item>
+      <item>wavwrite</item>
+      <item>wblcdf</item>
+      <item>wblinv</item>
+      <item>wblpdf</item>
+      <item>wblrnd</item>
+      <item>weekday</item>
+      <item>welch_test</item>
+      <item>what</item>
+      <item>which</item>
+      <item>white</item>
+      <item>whitebg</item>
+      <item>whos_line_format</item>
+      <item>wienrnd</item>
+      <item>wilcoxon_test</item>
+      <item>wilkinson</item>
+      <item>winter</item>
+      <item>xlabel</item>
+      <item>xlim</item>
+      <item>xor</item>
+      <item>yes_or_no</item>
+      <item>ylabel</item>
+      <item>ylim</item>
+      <item>yulewalker</item>
+      <item>z_test</item>
+      <item>z_test_2</item>
+      <item>zeros</item>
+      <item>zip</item>
+      <item>zlabel</item>
+      <item>zlim</item>
+      <item>zoom</item>
+      <item>zscore</item>
+    </list>
+    
+    <list name="forge">
+      <item>airy_Ai</item>
+      <item>airy_Ai_deriv</item>
+      <item>airy_Ai_deriv_scaled</item>
+      <item>airy_Ai_scaled</item>
+      <item>airy_Bi</item>
+      <item>airy_Bi_deriv</item>
+      <item>airy_Bi_deriv_scaled</item>
+      <item>airy_Bi_scaled</item>
+      <item>airy_zero_Ai</item>
+      <item>airy_zero_Ai_deriv</item>
+      <item>airy_zero_Bi</item>
+      <item>airy_zero_Bi_deriv</item>
+      <item>atanint</item>
+      <item>bchdeco</item>
+      <item>bchenco</item>
+      <item>bessel_il_scaled</item>
+      <item>bessel_In</item>
+      <item>bessel_In_scaled</item>
+      <item>bessel_Inu</item>
+      <item>bessel_Inu_scaled</item>
+      <item>bessel_jl</item>
+      <item>bessel_Jn</item>
+      <item>bessel_Jnu</item>
+      <item>bessel_kl_scaled</item>
+      <item>bessel_Kn</item>
+      <item>bessel_Kn_scaled</item>
+      <item>bessel_Knu</item>
+      <item>bessel_Knu_scaled</item>
+      <item>bessel_lnKnu</item>
+      <item>bessel_yl</item>
+      <item>bessel_Yn</item>
+      <item>bessel_Ynu</item>
+      <item>bessel_zero_J0</item>
+      <item>bessel_zero_J1</item>
+      <item>beta_gsl</item>
+      <item>bfgsmin</item>
+      <item>bisectionstep</item>
+      <item>builtin</item>
+      <item>bwfill</item>
+      <item>bwlabel</item>
+      <item>cell2csv</item>
+      <item>celleval</item>
+      <item>Chi</item>
+      <item>chol</item>
+      <item>Ci</item>
+      <item>clausen</item>
+      <item>conicalP_0</item>
+      <item>conicalP_1</item>
+      <item>conicalP_half</item>
+      <item>conicalP_mhalf</item>
+      <item>conv2</item>
+      <item>cordflt2</item>
+      <item>coupling_3j</item>
+      <item>coupling_6j</item>
+      <item>coupling_9j</item>
+      <item>csv2cell</item>
+      <item>csvconcat</item>
+      <item>csvexplode</item>
+      <item>cyclgen</item>
+      <item>cyclpoly</item>
+      <item>dawson</item>
+      <item>debye_1</item>
+      <item>debye_2</item>
+      <item>debye_3</item>
+      <item>debye_4</item>
+      <item>deref</item>
+      <item>dispatch</item>
+      <item>dispatch_help</item>
+      <item>display_fixed_operations</item>
+      <item>dlmread</item>
+      <item>ellint_Ecomp</item>
+      <item>ellint_Kcomp</item>
+      <item>ellipj</item>
+      <item>erfc_gsl</item>
+      <item>erf_gsl</item>
+      <item>erf_Q</item>
+      <item>erf_Z</item>
+      <item>_errcore</item>
+      <item>eta</item>
+      <item>eta_int</item>
+      <item>expint_3</item>
+      <item>expint_E1</item>
+      <item>expint_E2</item>
+      <item>expint_Ei</item>
+      <item>expm1</item>
+      <item>exp_mult</item>
+      <item>exprel</item>
+      <item>exprel_2</item>
+      <item>exprel_n</item>
+      <item>fabs</item>
+      <item>fangle</item>
+      <item>farg</item>
+      <item>fatan2</item>
+      <item>fceil</item>
+      <item>fconj</item>
+      <item>fcos</item>
+      <item>fcosh</item>
+      <item>fcumprod</item>
+      <item>fcumsum</item>
+      <item>fdiag</item>
+      <item>fermi_dirac_3half</item>
+      <item>fermi_dirac_half</item>
+      <item>fermi_dirac_inc_0</item>
+      <item>fermi_dirac_int</item>
+      <item>fermi_dirac_mhalf</item>
+      <item>fexp</item>
+      <item>ffloor</item>
+      <item>fimag</item>
+      <item>finitedifference</item>
+      <item>fixed</item>
+      <item>flog</item>
+      <item>flog10</item>
+      <item>fprod</item>
+      <item>freal</item>
+      <item>freshape</item>
+      <item>fround</item>
+      <item>fsin</item>
+      <item>fsinh</item>
+      <item>fsqrt</item>
+      <item>fsum</item>
+      <item>fsumsq</item>
+      <item>ftan</item>
+      <item>ftanh</item>
+      <item>full</item>
+      <item>gamma_gsl</item>
+      <item>gamma_inc</item>
+      <item>gamma_inc_P</item>
+      <item>gamma_inc_Q</item>
+      <item>gammainv_gsl</item>
+      <item>gammastar</item>
+      <item>gdet</item>
+      <item>gdiag</item>
+      <item>gexp</item>
+      <item>gf</item>
+      <item>gfilter</item>
+      <item>_gfweight</item>
+      <item>ginv</item>
+      <item>ginverse</item>
+      <item>glog</item>
+      <item>glu</item>
+      <item>gpick</item>
+      <item>gprod</item>
+      <item>grab</item>
+      <item>grank</item>
+      <item>graycomatrix</item>
+      <item>__grcla__</item>
+      <item>__grclf__</item>
+      <item>__grcmd__</item>
+      <item>greshape</item>
+      <item>__grexit__</item>
+      <item>__grfigure__</item>
+      <item>__grgetstat__</item>
+      <item>__grhold__</item>
+      <item>__grinit__</item>
+      <item>__grishold__</item>
+      <item>__grnewset__</item>
+      <item>__grsetgraph__</item>
+      <item>gsl_sf</item>
+      <item>gsqrt</item>
+      <item>gsum</item>
+      <item>gsumsq</item>
+      <item>gtext</item>
+      <item>gzoom</item>
+      <item>hazard</item>
+      <item>houghtf</item>
+      <item>hyperg_0F1</item>
+      <item>hzeta</item>
+      <item>is_complex_sparse</item>
+      <item>isfixed</item>
+      <item>isgalois</item>
+      <item>isprimitive</item>
+      <item>is_real_sparse</item>
+      <item>is_sparse</item>
+      <item>jpgread</item>
+      <item>jpgwrite</item>
+      <item>lambert_W0</item>
+      <item>lambert_Wm1</item>
+      <item>legendre_Pl</item>
+      <item>legendre_Plm</item>
+      <item>legendre_Ql</item>
+      <item>legendre_sphPlm</item>
+      <item>legendre_sphPlm_array</item>
+      <item>leval</item>
+      <item>listen</item>
+      <item>lnbeta</item>
+      <item>lncosh</item>
+      <item>lngamma_gsl</item>
+      <item>lnpoch</item>
+      <item>lnsinh</item>
+      <item>log_1plusx</item>
+      <item>log_1plusx_mx</item>
+      <item>log_erfc</item>
+      <item>lp</item>
+      <item>make_sparse</item>
+      <item>mark_for_deletion</item>
+      <item>medfilt1</item>
+      <item>newtonstep</item>
+      <item>nnz</item>
+      <item>numgradient</item>
+      <item>numhessian</item>
+      <item>pchip_deriv</item>
+      <item>pngread</item>
+      <item>pngwrite</item>
+      <item>poch</item>
+      <item>pochrel</item>
+      <item>pretty</item>
+      <item>primpoly</item>
+      <item>psi</item>
+      <item>psi_1_int</item>
+      <item>psi_1piy</item>
+      <item>psi_n</item>
+      <item>rand</item>
+      <item>rande</item>
+      <item>randn</item>
+      <item>randp</item>
+      <item>regexp</item>
+      <item>remez</item>
+      <item>reset_fixed_operations</item>
+      <item>rotate_scale</item>
+      <item>rsdec</item>
+      <item>rsenc</item>
+      <item>samin</item>
+      <item>SBBacksub</item>
+      <item>SBEig</item>
+      <item>SBFactor</item>
+      <item>SBProd</item>
+      <item>SBSolve</item>
+      <item>Shi</item>
+      <item>Si</item>
+      <item>sinc_gsl</item>
+      <item>spabs</item>
+      <item>sparse</item>
+      <item>spfind</item>
+      <item>spimag</item>
+      <item>spinv</item>
+      <item>splu</item>
+      <item>spreal</item>
+      <item>SymBand</item>
+      <item>synchrotron_1</item>
+      <item>synchrotron_2</item>
+      <item>syndtable</item>
+      <item>taylorcoeff</item>
+      <item>transport_2</item>
+      <item>transport_3</item>
+      <item>transport_4</item>
+      <item>transport_5</item>
+      <item>trisolve</item>
+      <item>waitbar</item>
+      <item>xmlread</item>
+      <item>zeta</item>
+      <item>zeta_int</item>
+      <item>aar</item>
+      <item>aarmam</item>
+      <item>ac2poly</item>
+      <item>ac2rc</item>
+      <item>acorf</item>
+      <item>acovf</item>
+      <item>addpath</item>
+      <item>ademodce</item>
+      <item>adim</item>
+      <item>adsmax</item>
+      <item>amodce</item>
+      <item>anderson_darling_cdf</item>
+      <item>anderson_darling_test</item>
+      <item>anovan</item>
+      <item>apkconst</item>
+      <item>append_save</item>
+      <item>applylut</item>
+      <item>ar2poly</item>
+      <item>ar2rc</item>
+      <item>arburg</item>
+      <item>arcext</item>
+      <item>arfit2</item>
+      <item>ar_spa</item>
+      <item>aryule</item>
+      <item>assert</item>
+      <item>au</item>
+      <item>aucapture</item>
+      <item>auload</item>
+      <item>auplot</item>
+      <item>aurecord</item>
+      <item>ausave</item>
+      <item>autumn</item>
+      <item>average_moments</item>
+      <item>awgn</item>
+      <item>azimuth</item>
+      <item>BandToFull</item>
+      <item>BandToSparse</item>
+      <item>base64encode</item>
+      <item>battery</item>
+      <item>bchpoly</item>
+      <item>bestblk</item>
+      <item>best_dir</item>
+      <item>best_dir_cov</item>
+      <item>betaln</item>
+      <item>bfgs</item>
+      <item>bfgsmin_example</item>
+      <item>bi2de</item>
+      <item>biacovf</item>
+      <item>bilinear</item>
+      <item>bisdemo</item>
+      <item>bispec</item>
+      <item>biterr</item>
+      <item>blkdiag</item>
+      <item>blkproc</item>
+      <item>bmpwrite</item>
+      <item>bone</item>
+      <item>bound_convex</item>
+      <item>boxcar</item>
+      <item>boxplot</item>
+      <item>brighten</item>
+      <item>bs_gradient</item>
+      <item>butter</item>
+      <item>buttord</item>
+      <item>bwborder</item>
+      <item>bweuler</item>
+      <item>bwlabel</item>
+      <item>bwmorph</item>
+      <item>bwselect</item>
+      <item>calendar</item>
+      <item>cceps</item>
+      <item>cdiff</item>
+      <item>cellstr</item>
+      <item>char</item>
+      <item>cheb</item>
+      <item>cheb1ord</item>
+      <item>cheb2ord</item>
+      <item>chebwin</item>
+      <item>cheby1</item>
+      <item>cheby2</item>
+      <item>chirp</item>
+      <item>clf</item>
+      <item>clip</item>
+      <item>cmpermute</item>
+      <item>cmunique</item>
+      <item>cohere</item>
+      <item>col2im</item>
+      <item>colfilt</item>
+      <item>colorgradient</item>
+      <item>comms</item>
+      <item>compand</item>
+      <item>complex</item>
+      <item>concat</item>
+      <item>conndef</item>
+      <item>content</item>
+      <item>contents</item>
+      <item>Contents</item>
+      <item>contourf</item>
+      <item>convhull</item>
+      <item>convmtx</item>
+      <item>cool</item>
+      <item>copper</item>
+      <item>corr2</item>
+      <item>cosets</item>
+      <item>count</item>
+      <item>covm</item>
+      <item>cplxpair</item>
+      <item>cquadnd</item>
+      <item>create_lookup_table</item>
+      <item>crule</item>
+      <item>crule2d</item>
+      <item>crule2dgen</item>
+      <item>csape</item>
+      <item>csapi</item>
+      <item>csd</item>
+      <item>csvread</item>
+      <item>csvwrite</item>
+      <item>ctranspose</item>
+      <item>cumtrapz</item>
+      <item>czt</item>
+      <item>d2_min</item>
+      <item>datenum</item>
+      <item>datestr</item>
+      <item>datevec</item>
+      <item>dct</item>
+      <item>dct2</item>
+      <item>dctmtx</item>
+      <item>de2bi</item>
+      <item>deal</item>
+      <item>decimate</item>
+      <item>decode</item>
+      <item>deg2rad</item>
+      <item>del2</item>
+      <item>delaunay</item>
+      <item>delaunay3</item>
+      <item>delta_method</item>
+      <item>demo</item>
+      <item>demodmap</item>
+      <item>deriv</item>
+      <item>detrend</item>
+      <item>dfdp</item>
+      <item>dftmtx</item>
+      <item>dhbar</item>
+      <item>dilate</item>
+      <item>dispatch</item>
+      <item>distance</item>
+      <item>dlmread</item>
+      <item>dlmwrite</item>
+      <item>dos</item>
+      <item>double</item>
+      <item>drawnow</item>
+      <item>durlev</item>
+      <item>dxfwrite</item>
+      <item>edge</item>
+      <item>edit</item>
+      <item>ellip</item>
+      <item>ellipdemo</item>
+      <item>ellipj</item>
+      <item>ellipke</item>
+      <item>ellipord</item>
+      <item>__ellip_ws</item>
+      <item>__ellip_ws_min</item>
+      <item>encode</item>
+      <item>eomday</item>
+      <item>erode</item>
+      <item>example</item>
+      <item>ExampleEigenValues</item>
+      <item>ExampleGenEigenValues</item>
+      <item>expdemo</item>
+      <item>expfit</item>
+      <item>eyediagram</item>
+      <item>factor</item>
+      <item>factorial</item>
+      <item>fail</item>
+      <item>fcnchk</item>
+      <item>feedback</item>
+      <item>fem_test</item>
+      <item>ff2n</item>
+      <item>fftconv2</item>
+      <item>fieldnames</item>
+      <item>fill</item>
+      <item>fill3</item>
+      <item>filter2</item>
+      <item>filtfilt</item>
+      <item>filtic</item>
+      <item>findsym</item>
+      <item>fir1</item>
+      <item>fir2</item>
+      <item>fixedpoint</item>
+      <item>flag</item>
+      <item>flag_implicit_samplerate</item>
+      <item>flattopwin</item>
+      <item>flix</item>
+      <item>float</item>
+      <item>fmin</item>
+      <item>fminbnd</item>
+      <item>fmins</item>
+      <item>fminunc</item>
+      <item>fnder</item>
+      <item>fnplt</item>
+      <item>fnval</item>
+      <item>fplot</item>
+      <item>freqs</item>
+      <item>freqs_plot</item>
+      <item>fsort</item>
+      <item>fullfact</item>
+      <item>FullToBand</item>
+      <item>funm</item>
+      <item>fzero</item>
+      <item>gammaln</item>
+      <item>gapTest</item>
+      <item>gaussian</item>
+      <item>gausswin</item>
+      <item>gconv</item>
+      <item>gconvmtx</item>
+      <item>gdeconv</item>
+      <item>gdftmtx</item>
+      <item>gen2par</item>
+      <item>geomean</item>
+      <item>getfield</item>
+      <item>getfields</item>
+      <item>gfft</item>
+      <item>gftable</item>
+      <item>gfweight</item>
+      <item>gget</item>
+      <item>gifft</item>
+      <item>ginput</item>
+      <item>gmm_estimate</item>
+      <item>gmm_example</item>
+      <item>gmm_obj</item>
+      <item>gmm_results</item>
+      <item>gmm_variance</item>
+      <item>gmm_variance_inefficient</item>
+      <item>gquad</item>
+      <item>gquad2d</item>
+      <item>gquad2d6</item>
+      <item>gquad2dgen</item>
+      <item>gquad6</item>
+      <item>gquadnd</item>
+      <item>grace_octave_path</item>
+      <item>gradient</item>
+      <item>grayslice</item>
+      <item>grep</item>
+      <item>grid</item>
+      <item>griddata</item>
+      <item>groots</item>
+      <item>grpdelay</item>
+      <item>grule</item>
+      <item>grule2d</item>
+      <item>grule2dgen</item>
+      <item>hadamard</item>
+      <item>hammgen</item>
+      <item>hankel</item>
+      <item>hann</item>
+      <item>harmmean</item>
+      <item>hilbert</item>
+      <item>histeq</item>
+      <item>histfit</item>
+      <item>histo</item>
+      <item>histo2</item>
+      <item>histo3</item>
+      <item>histo4</item>
+      <item>hot</item>
+      <item>hsv</item>
+      <item>hup</item>
+      <item>idct</item>
+      <item>idct2</item>
+      <item>idplot</item>
+      <item>idsim</item>
+      <item>ifftshift</item>
+      <item>im2bw</item>
+      <item>im2col</item>
+      <item>imadjust</item>
+      <item>imginfo</item>
+      <item>imhist</item>
+      <item>imnoise</item>
+      <item>impad</item>
+      <item>impz</item>
+      <item>imread</item>
+      <item>imrotate</item>
+      <item>imshear</item>
+      <item>imtranslate</item>
+      <item>imwrite</item>
+      <item>innerfun</item>
+      <item>inputname</item>
+      <item>interp</item>
+      <item>interp1</item>
+      <item>interp2</item>
+      <item>interpft</item>
+      <item>intersect</item>
+      <item>invest0</item>
+      <item>invest1</item>
+      <item>invfdemo</item>
+      <item>invfreq</item>
+      <item>invfreqs</item>
+      <item>invfreqz</item>
+      <item>inz</item>
+      <item>irsa_act</item>
+      <item>irsa_actcore</item>
+      <item>irsa_check</item>
+      <item>irsa_dft</item>
+      <item>irsa_dftfp</item>
+      <item>irsa_genreal</item>
+      <item>irsa_idft</item>
+      <item>irsa_isregular</item>
+      <item>irsa_jitsp</item>
+      <item>irsa_mdsp</item>
+      <item>irsa_normalize</item>
+      <item>irsa_plotdft</item>
+      <item>irsa_resample</item>
+      <item>irsa_rgenreal</item>
+      <item>isa</item>
+      <item>isbw</item>
+      <item>isdir</item>
+      <item>isequal</item>
+      <item>isfield</item>
+      <item>isgray</item>
+      <item>isind</item>
+      <item>ismember</item>
+      <item>isprime</item>
+      <item>isrgb</item>
+      <item>issparse</item>
+      <item>isunix</item>
+      <item>jet</item>
+      <item>kaiser</item>
+      <item>kaiserord</item>
+      <item>lambertw</item>
+      <item>lattice</item>
+      <item>lauchli</item>
+      <item>leasqr</item>
+      <item>leasqrdemo</item>
+      <item>legend</item>
+      <item>legendre</item>
+      <item>levinson</item>
+      <item>lin2mu</item>
+      <item>line_min</item>
+      <item>lloyds</item>
+      <item>lookup</item>
+      <item>lookup_table</item>
+      <item>lpc</item>
+      <item>lp_test</item>
+      <item>mad</item>
+      <item>magic</item>
+      <item>makelut</item>
+      <item>MakeShears</item>
+      <item>map</item>
+      <item>mat2gray</item>
+      <item>mat2str</item>
+      <item>mdsmax</item>
+      <item>mean2</item>
+      <item>medfilt2</item>
+      <item>meshc</item>
+      <item>minimize</item>
+      <item>minpol</item>
+      <item>mkpp</item>
+      <item>mktheta</item>
+      <item>mle_estimate</item>
+      <item>mle_example</item>
+      <item>mle_obj</item>
+      <item>mle_results</item>
+      <item>mle_variance</item>
+      <item>modmap</item>
+      <item>mu2lin</item>
+      <item>mvaar</item>
+      <item>mvar</item>
+      <item>mvfilter</item>
+      <item>mvfreqz</item>
+      <item>myfeval</item>
+      <item>nanmax</item>
+      <item>nanmean</item>
+      <item>nanmedian</item>
+      <item>nanmin</item>
+      <item>nanstd</item>
+      <item>nansum</item>
+      <item>ncauer</item>
+      <item>nchoosek</item>
+      <item>ncrule</item>
+      <item>ndims</item>
+      <item>nelder_mead_min</item>
+      <item>newmark</item>
+      <item>nlfilter</item>
+      <item>nlnewmark</item>
+      <item>__nlnewmark_fcn__</item>
+      <item>nmsmax</item>
+      <item>nonzeros</item>
+      <item>normplot</item>
+      <item>now</item>
+      <item>nrm</item>
+      <item>nthroot</item>
+      <item>nze</item>
+      <item>OCTAVE_FORGE_VERSION</item>
+      <item>ode23</item>
+      <item>ode45</item>
+      <item>ode78</item>
+      <item>optimset</item>
+      <item>ordfilt2</item>
+      <item>orient</item>
+      <item>pacf</item>
+      <item>padarray</item>
+      <item>parameterize</item>
+      <item>parcor</item>
+      <item>pareto</item>
+      <item>pascal</item>
+      <item>patch</item>
+      <item>pburg</item>
+      <item>pcg</item>
+      <item>pchip</item>
+      <item>pcolor</item>
+      <item>pcr</item>
+      <item>peaks</item>
+      <item>penddot</item>
+      <item>pendulum</item>
+      <item>perms</item>
+      <item>pie</item>
+      <item>pink</item>
+      <item>plot3</item>
+      <item>__plt3__</item>
+      <item>poly2ac</item>
+      <item>poly2ar</item>
+      <item>poly_2_ex</item>
+      <item>poly2mask</item>
+      <item>poly2rc</item>
+      <item>poly2sym</item>
+      <item>poly2th</item>
+      <item>polyarea</item>
+      <item>polyconf</item>
+      <item>polyder</item>
+      <item>polyderiv</item>
+      <item>polygcd</item>
+      <item>polystab</item>
+      <item>__power</item>
+      <item>ppval</item>
+      <item>prctile</item>
+      <item>prettyprint</item>
+      <item>prettyprint_c</item>
+      <item>primes</item>
+      <item>princomp</item>
+      <item>print</item>
+      <item>prism</item>
+      <item>proplan</item>
+      <item>pulstran</item>
+      <item>pwelch</item>
+      <item>pyulear</item>
+      <item>qaskdeco</item>
+      <item>qaskenco</item>
+      <item>qtdecomp</item>
+      <item>qtgetblk</item>
+      <item>qtsetblk</item>
+      <item>quad2dc</item>
+      <item>quad2dcgen</item>
+      <item>quad2dg</item>
+      <item>quad2dggen</item>
+      <item>quadc</item>
+      <item>quadg</item>
+      <item>quadl</item>
+      <item>quadndg</item>
+      <item>quantiz</item>
+      <item>quiver</item>
+      <item>rad2deg</item>
+      <item>rainbow</item>
+      <item>randerr</item>
+      <item>randint</item>
+      <item>randsrc</item>
+      <item>rat</item>
+      <item>rats</item>
+      <item>rc2ac</item>
+      <item>rc2ar</item>
+      <item>rc2poly</item>
+      <item>rceps</item>
+      <item>read_options</item>
+      <item>read_pdb</item>
+      <item>rectpuls</item>
+      <item>resample</item>
+      <item>rgb2gray</item>
+      <item>rk2fixed</item>
+      <item>rk4fixed</item>
+      <item>rk8fixed</item>
+      <item>rmfield</item>
+      <item>rmle</item>
+      <item>rmpath</item>
+      <item>roicolor</item>
+      <item>rosser</item>
+      <item>rotparams</item>
+      <item>rotv</item>
+      <item>rref</item>
+      <item>rsdecof</item>
+      <item>rsencof</item>
+      <item>rsgenpoly</item>
+      <item>samin_example</item>
+      <item>save_vrml</item>
+      <item>sbispec</item>
+      <item>scale_data</item>
+      <item>scatter</item>
+      <item>scatterplot</item>
+      <item>select_3D_points</item>
+      <item>selmo</item>
+      <item>setdiff</item>
+      <item>setfield</item>
+      <item>setfields</item>
+      <item>setxor</item>
+      <item>sftrans</item>
+      <item>sgolay</item>
+      <item>sgolayfilt</item>
+      <item>sinvest1</item>
+      <item>slurp_file</item>
+      <item>sortrows</item>
+      <item>sound</item>
+      <item>soundsc</item>
+      <item>spdiags</item>
+      <item>specgram</item>
+      <item>speed</item>
+      <item>speye</item>
+      <item>spfun</item>
+      <item>sphcat</item>
+      <item>spline</item>
+      <item>splot</item>
+      <item>spones</item>
+      <item>sprand</item>
+      <item>sprandn</item>
+      <item>spring</item>
+      <item>spstats</item>
+      <item>spsum</item>
+      <item>sp_test</item>
+      <item>sptest</item>
+      <item>spvcat</item>
+      <item>spy</item>
+      <item>std2</item>
+      <item>stem</item>
+      <item>str2double</item>
+      <item>strcmpi</item>
+      <item>stretchlim</item>
+      <item>strfind</item>
+      <item>strmatch</item>
+      <item>strncmp</item>
+      <item>strncmpi</item>
+      <item>strsort</item>
+      <item>strtok</item>
+      <item>strtoz</item>
+      <item>struct</item>
+      <item>strvcat</item>
+      <item>summer</item>
+      <item>sumskipnan</item>
+      <item>surf</item>
+      <item>surfc</item>
+      <item>sym2poly</item>
+      <item>symerr</item>
+      <item>symfsolve</item>
+      <item>tabulate</item>
+      <item>tar</item>
+      <item>temp_name</item>
+      <item>test</item>
+      <item>test_d2_min_1</item>
+      <item>test_d2_min_2</item>
+      <item>test_d2_min_3</item>
+      <item>test_ellipj</item>
+      <item>test_fminunc_1</item>
+      <item>testimio</item>
+      <item>test_inline_1</item>
+      <item>test_min_1</item>
+      <item>test_min_2</item>
+      <item>test_min_3</item>
+      <item>test_min_4</item>
+      <item>test_minimize_1</item>
+      <item>test_nelder_mead_min_1</item>
+      <item>test_nelder_mead_min_2</item>
+      <item>test_sncndn</item>
+      <item>test_struct</item>
+      <item>test_vmesh</item>
+      <item>test_vrml_faces</item>
+      <item>test_wpolyfit</item>
+      <item>text</item>
+      <item>textread</item>
+      <item>tf2zp</item>
+      <item>tfe</item>
+      <item>thfm</item>
+      <item>tics</item>
+      <item>toeplitz</item>
+      <item>toggle_grace_use</item>
+      <item>transpose</item>
+      <item>trapz</item>
+      <item>triang</item>
+      <item>tril</item>
+      <item>trimmean</item>
+      <item>tripuls</item>
+      <item>trisolve</item>
+      <item>triu</item>
+      <item>tsademo</item>
+      <item>tsearchdemo</item>
+      <item>ucp</item>
+      <item>uintlut</item>
+      <item>unique</item>
+      <item>unix</item>
+      <item>unmkpp</item>
+      <item>unscale_parameters</item>
+      <item>vec2mat</item>
+      <item>view</item>
+      <item>vmesh</item>
+      <item>voronoi</item>
+      <item>voronoin</item>
+      <item>vrml_arrow</item>
+      <item>vrml_Background</item>
+      <item>vrml_browse</item>
+      <item>vrml_cyl</item>
+      <item>vrml_demo_tutorial_1</item>
+      <item>vrml_demo_tutorial_2</item>
+      <item>vrml_demo_tutorial_3</item>
+      <item>vrml_demo_tutorial_4</item>
+      <item>vrml_ellipsoid</item>
+      <item>vrml_faces</item>
+      <item>vrml_flatten</item>
+      <item>vrml_frame</item>
+      <item>vrml_group</item>
+      <item>vrml_kill</item>
+      <item>vrml_lines</item>
+      <item>vrml_material</item>
+      <item>vrml_parallelogram</item>
+      <item>vrml_PointLight</item>
+      <item>vrml_points</item>
+      <item>vrml_select_points</item>
+      <item>vrml_surf</item>
+      <item>vrml_text</item>
+      <item>vrml_thick_surf</item>
+      <item>vrml_transfo</item>
+      <item>wavread</item>
+      <item>wavwrite</item>
+      <item>weekday</item>
+      <item>wgn</item>
+      <item>white</item>
+      <item>wilkinson</item>
+      <item>winter</item>
+      <item>wpolyfit</item>
+      <item>wpolyfitdemo</item>
+      <item>write_pdb</item>
+      <item>wsolve</item>
+      <item>xcorr</item>
+      <item>xcorr2</item>
+      <item>xcov</item>
+      <item>xlsread</item>
+      <item>xmlwrite</item>
+      <item>y2res</item>
+      <item>zero_count</item>
+      <item>zoom</item>
+      <item>zp2tf</item>
+      <item>zplane</item>
+      <item>zscore</item>
+    </list>
+    
+    <contexts>
+
+      <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
+
+        <!-- Code folding -->
+        <!--TODO: with this implementation, code folding will close a block also with a wrong
+        end*: for istance, for can be closed by endif. This is done because the catchall end 
+        keyword is widely used to close a number of blocks (including if and for).
+        If you have an improvement, please contribute it!-->
+        <WordDetect context="#stay" attribute="Keyword" String="for" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endfor" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="if" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endif" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="do" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="until" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="while" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endwhile" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="function" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endfunction" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="unwind_protect" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="end_unwind_protect" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="parfor" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endparfor" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="classdef" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endclassdef" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="enumeration" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endenumeration" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="events" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endevents" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="methods" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endmethods" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="properties" beginRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="endproperties" endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="switch" beginRegion="Switch" />
+        <WordDetect context="#stay" attribute="Keyword" String="endswitch" endRegion="Switch" />
+        <WordDetect context="#stay" attribute="Keyword" String="try" beginRegion="Try" />
+        <WordDetect context="#stay" attribute="Keyword" String="end_try_catch" endRegion="Try" />
+        <!-- Catchall end keyword -->
+        <WordDetect context="#stay" attribute="Keyword" String="end" endRegion="block" />
+
+        <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
+        <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
+        <RegExpr context="_adjoint" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?(?=')" />
+        <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
+        <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
+
+        <!-- If ' is not the adjoint operator, it starts a string or an unterminated string;
+        strings can be also with ", and accept the respective delimiter in them either
+        by doubling it ('', "") or by escaping it (\', \") -->
+        <RegExpr context="#stay" attribute="String" String="'([^'\\]|''|\\'|\\[^'])*'(?=[^']|$)" />
+        <RegExpr context="#stay" attribute="Incomplete String" String="'([^']|''|\\')*" />
+        <RegExpr context="#stay" attribute="String" String="&quot;([^&quot;\\]|&quot;&quot;|\\&quot;|\\[^&quot;])*&quot;(?=[^&quot;]|$)" />
+        <RegExpr context="#stay" attribute="Incomplete String" String="&quot;([^&quot;]|&quot;&quot;|\\&quot;)*" />
+        
+        <!-- Handling of keywords, comments, functions, identifiers, numbers and braces -->
+        <keyword context="#stay" attribute="Keyword" String="keywords" />
+        <keyword context="#stay" attribute="Commands" String="commands" />
+        <keyword context="#stay" attribute="Functions" String="functions" />
+        <keyword context="#stay" attribute="Builtin" String="builtin"/>
+        <keyword context="#stay" attribute="Forge" String="forge" />
+        <RegExpr context="#stay" attribute="Comment" String="[%#].*$" />
+        <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
+        <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
+        <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
+
+        <!-- Three- and two-character operators -->
+        <StringDetect context="#stay" attribute="Operator" String="..."/>
+        <StringDetect context="#stay" attribute="Operator" String="=="/>
+        <StringDetect context="#stay" attribute="Operator" String="~="/>
+        <StringDetect context="#stay" attribute="Operator" String="!="/>
+        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&lt;&gt;"/>
+        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
+        <StringDetect context="#stay" attribute="Operator" String="||"/>
+        <StringDetect context="#stay" attribute="Operator" String="++"/>
+        <StringDetect context="#stay" attribute="Operator" String="--"/>
+        <StringDetect context="#stay" attribute="Operator" String="**"/>
+        <StringDetect context="#stay" attribute="Operator" String=".*"/>
+        <StringDetect context="#stay" attribute="Operator" String=".**"/>
+        <StringDetect context="#stay" attribute="Operator" String=".^"/>
+        <StringDetect context="#stay" attribute="Operator" String="./"/>
+        <StringDetect context="#stay" attribute="Operator" String=".'"/>
+
+        <!-- Single-character operators -->
+        <AnyChar context="#stay" attribute="Operator" String="!&quot;%(*+,/;=>[]|~#&amp;)-:&lt;&gt;\^"/>
+        
+      </context>
+
+
+      <!--Context entered after encountering an ' adjoint operator -->
+      <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
+        <RegExpr context="#pop" attribute="Operator" String="'+" />
+      </context>
+
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Variable" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Number" defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="Delimiter" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Incomplete String" defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Keyword"  defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Functions" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Forge" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Commands" defStyleNum="dsBuiltIn" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="%" />
+      <comment name="singleLine" start="#" />
+    </comments>
+    <keywords weakDeliminator="." casesensitive="1"/>
   </general>
 
 </language>
diff --git a/syntax/perl.xml b/syntax/perl.xml
--- a/syntax/perl.xml
+++ b/syntax/perl.xml
@@ -39,7 +39,7 @@
 
    Enhance tr/// and y/// support.
 -->
-<language name="Perl" version="7" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm;*.pl6;*.PL6;*.p6;*.pm6;" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" version="10" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <item>if</item>
@@ -252,6 +252,7 @@
       <item>rewinddir</item>
       <item>rindex</item>
       <item>rmdir</item>
+      <item>say</item>
       <item>scalar</item>
       <item>seek</item>
       <item>seekdir</item>
@@ -383,8 +384,11 @@
 
         <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
 
-        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*/" />
-        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]/" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*//?\=?" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]//?\=?" />
+        <!-- Avoid conflicts between operators / and // -->
+        <StringDetect attribute="Normal Text" context="#stay" String="//=" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="/" char1="/" />
         <DetectChar attribute="Operator" context="pattern_slash" char="/" beginRegion="Pattern" />
         <RegExpr attribute="Operator" context="#stay" String="-[rwxoRWXOeszfdlpSbctugkTBMAC]\b" />
 
diff --git a/syntax/php.xml b/syntax/php.xml
--- a/syntax/php.xml
+++ b/syntax/php.xml
@@ -73,7 +73,7 @@
   <!ENTITY types "int|integer|bool|boolean|float|double|real|string|array|object">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="9" kateversion="3.4" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="10" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <list name="control structures">
diff --git a/syntax/powershell.xml b/syntax/powershell.xml
--- a/syntax/powershell.xml
+++ b/syntax/powershell.xml
@@ -1,7 +1,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
   name="PowerShell"
-  version="4"
+  version="5"
   kateversion="5.0"
   extensions="*.ps1;*.ps1m;*.ps1d"
   section="Scripts"
@@ -892,7 +892,12 @@
         <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
       </context>
+      <context attribute="String Char" lineEndContext="#stay" name="StringEscape">
+        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]" context="#stay"/>
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}" context="#stay"/>
+      </context>
       <context attribute="String" lineEndContext="#pop" name="String">
+        <IncludeRules context="StringEscape"/>
         <LineContinue attribute="String" context="#pop"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
@@ -916,6 +921,7 @@
       <itemData name="Function"     defStyleNum="dsFunction" spellChecking="false"/>
       <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar" spellChecking="false"/>
       <itemData name="HereString"       defStyleNum="dsVerbatimString"/>
       <itemData name="Comment"      defStyleNum="dsComment"/>
       <itemData name="Cmdlets"      defStyleNum="dsBuiltIn" spellChecking="false"/>
diff --git a/syntax/python.xml b/syntax/python.xml
--- a/syntax/python.xml
+++ b/syntax/python.xml
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY digitPart "[0-9](?:_?[0-9])*">
+	<!ENTITY beforeDigit "(?&lt;![\.\w[:^ascii:]])">
+	<!ENTITY beforePointFloat "(?&lt;![\w[:^ascii:]])">
+]>
 <!-- Python syntax highlightning v0.9 by Per Wigren -->
 <!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
 <!-- Python syntax highlighting v1.97 by Paul Giannaros -->
@@ -14,7 +19,7 @@
 <!-- v2.07 add support for %prog and co, see bug 142832 -->
 <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
 <!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="9" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="10" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -65,6 +70,7 @@
 			<item>ascii</item>
 			<item>basestring</item>
 			<item>bin</item>
+			<item>breakpoint</item>
 			<item>bool</item>
 			<item>buffer</item>
 			<item>bytearray</item>
@@ -342,15 +348,17 @@
 				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
 				<RegExpr attribute="Normal Text" String="[a-zA-Z_][a-zA-Z_0-9]{2,}" context="#stay"/>
 
-				<RegExpr attribute="Complex" String=" ((([0-9]*\.[0-9]+|[0-9]+\.)|([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.))[eE](\+|-)?[0-9]+)|[0-9]+)[jJ]" context="#stay"/>
-				<Float attribute="Float" context="#stay" />
-				<HlCHex attribute="Hex" context="#stay"/>
-				<HlCOct attribute="Octal" context="#stay"/>
-				<Int attribute="Int" context="Int Suffixes"/>
-
-				<RegExpr attribute="Int" String=" ([0-9]+_)+[0-9]+" context="#stay"/>
-				<RegExpr attribute="Float" String=" ([0-9]+_)+[0-9]+\.[0-9]+" context="#stay"/>
-				<RegExpr attribute="Hex" String=" [0-9]x([A-F0-9]+_)+[A-F0-9]+" context="#stay"/>
+				<!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->
+				<RegExpr attribute="Complex" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]\b" context="#stay"/>
+				<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
+				<RegExpr attribute="Hex" String="&beforeDigit;0[xX](?:_?[\da-fA-F])+\b" context="#stay"/>
+				<RegExpr attribute="Binary" String="&beforeDigit;0[bB](?:_?[01])+\b" context="#stay"/>
+				<RegExpr attribute="Octal" String="&beforeDigit;0[oO](?:_?[0-7])+\b" context="#stay"/>
+				<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
+				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)[eE][\+\-]?&digitPart;\b" context="#stay"/>
+				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;\.(?:&digitPart;\b)?|&beforePointFloat;\.&digitPart;\b)" context="#stay"/>
+				<!-- Decimal: 123 ; 000 -->
+				<RegExpr attribute="Int" String="&beforeDigit;(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?\b" context="#stay"/>
 
 				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
 				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
@@ -362,14 +370,10 @@
 
 				<IncludeRules context="StringVariants" />
 
-				<RegExpr attribute="Decorator" String="@[_a-zA-Z][\._a-zA-Z0-9]*" firstNonSpace="true"/>
+				<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
 				<AnyChar attribute="Operator" String="+*/%\|=;\!&lt;&gt;!^&amp;~-@" context="#stay"/>
 			</context>
 
-			<context name="Int Suffixes" attribute="Int" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-				<StringDetect attribute="Int" context="#pop" String="L" insensitive="true"/>
-			</context>
-
 			<context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 				<DetectSpaces/>
 				<LineContinue attribute="Normal Text" context="CheckForStringNext"/>
@@ -661,6 +665,7 @@
 			<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
 			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>
 			<itemData name="Comment" defStyleNum="dsComment"/>
 			<itemData name="String" defStyleNum="dsString"/>
diff --git a/syntax/qml.xml b/syntax/qml.xml
new file mode 100644
--- /dev/null
+++ b/syntax/qml.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!ENTITY identifier "[a-zA-Z_$][\w$]*">
+]>
+<!-- Author: Milian Wolff <mail@milianw.de> -->
+<language name="QML" version="7" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
+          mimetype="text/x-qml;application/x-qml" indenter="cstyle"
+          author="Milian Wolff (mail@milianw.de)" license="MIT">
+  <highlighting>
+    <list name="elements">
+      <!-- see: http://doc.trolltech.com/4.7-snapshot/qmlelements.html -->
+      <item>State</item>
+      <item>PropertyChanges</item>
+      <item>StateGroup</item>
+      <item>ParentChange</item>
+      <item>StateChangeScript</item>
+      <item>AnchorChanges</item>
+      <item>PropertyAnimation</item>
+      <item>NumberAnimation</item>
+      <item>ColorAnimation</item>
+      <item>SequentialAnimation</item>
+      <item>ParallelAnimation</item>
+      <item>PauseAnimation</item>
+      <item>PropertyAction</item>
+      <item>ParentAction</item>
+      <item>ScriptAction</item>
+      <item>Transition</item>
+      <item>SpringFollow</item>
+      <item>EaseFollow</item>
+      <item>Behavior</item>
+      <item>Binding</item>
+      <item>ListModel</item>
+      <item>ListElement</item>
+      <item>VisualItemModel</item>
+      <item>XmlListModel</item>
+      <item>XmlRole</item>
+      <item>DateTimeFormatter</item>
+      <item>NumberFormatter</item>
+      <item>Script</item>
+      <item>Connections</item>
+      <item>Component</item>
+      <item>Timer</item>
+      <item>QtObject</item>
+      <item>Item</item>
+      <item>Rectangle</item>
+      <item>Image</item>
+      <item>BorderImage</item>
+      <item>Text</item>
+      <item>TextInput</item>
+      <item>TextEdit</item>
+      <item>MouseArea</item>
+      <item>FocusScope</item>
+      <item>Flickable</item>
+      <item>Flipable</item>
+      <item>WebView</item>
+      <item>Loader</item>
+      <item>Repeater</item>
+      <item>SystemPalette</item>
+      <item>GraphicsObjectContainer</item>
+      <item>LayoutItem</item>
+      <item>ListView</item>
+      <item>GridView</item>
+      <item>PathView</item>
+      <item>Path</item>
+      <item>PathLine</item>
+      <item>PathQuad</item>
+      <item>PathCubic</item>
+      <item>PathAttribute</item>
+      <item>PathPercent</item>
+      <item>Column</item>
+      <item>Row</item>
+      <item>Grid</item>
+      <item>Scale</item>
+      <item>Rotation</item>
+      <item>Blur</item>
+      <item>Colorize</item>
+      <item>DropShadow</item>
+      <item>Opacity</item>
+      <item>Particles</item>
+      <item>ParticleMotionLinear</item>
+      <item>ParticleMotionGravity</item>
+      <item>ParticleMotionWander</item>
+      <!-- here some other items I find in the examples, we really need a proper list of them... -->
+      <item>Gradient</item>
+      <item>GradientStop</item>
+      <item>MouseRegion</item>
+    </list>
+    <!-- keywords not part of JavaScript -->
+    <list name="extra-keywords">
+      <item>readonly</item>
+    </list>
+    <list name="types">
+      <!-- see: http://doc.trolltech.com/4.7-snapshot/qml-extending-types.html -->
+      <item>string</item>
+      <item>int</item>
+      <item>bool</item>
+      <item>date</item>
+      <item>color</item>
+      <item>url</item>
+      <item>real</item>
+      <item>double</item>
+      <item>var</item>
+      <item>variant</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces/>
+        <WordDetect attribute="Import" context="Import" String="import"/>
+        <keyword attribute="Elements" context="#stay" String="elements" />
+        <keyword attribute="Keywords" String="extra-keywords"/>
+        <WordDetect attribute="Signal" context="Signal" String="signal" />
+        <WordDetect attribute="Keywords" context="Property" String="default property" />
+        <WordDetect attribute="Keywords" context="Property" String="property" />
+        <DetectChar attribute="String" context="String" char="&quot;" />
+        <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
+        <!-- Normal##JavaScript -->
+        <IncludeRules context="FindNumbers##JavaScript" />
+        <IncludeRules context="FindKeywords##JavaScript" />
+        <IncludeRules context="FindStrings##JavaScript" />
+        <RegExpr attribute="Objects" context="FindMemberObjectMath##JavaScript" String="\bMath(?=\s*\.)" />
+        <RegExpr attribute="Objects" context="#stay" String="\b[A-Z][\w$]*(?=\s*\.)" />
+        <IncludeRules context="FindObjectMembersAndFunctions##JavaScript" />
+        <IncludeRules context="JSBase##JavaScript" />
+      </context>
+      <context attribute="ImportValue" lineEndContext="#pop" name="Import">
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Property">
+        <WordDetect attribute="Property Type" context="#stay" String="alias" />
+        <keyword attribute="Property Type" context="#stay" String="types" />
+        <DetectSpaces />
+        <DetectIdentifier />
+        <DetectSpaces />
+        <DetectChar char=":" context="#pop" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Signal">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <DetectChar char="(" context="SignalParameter" />
+      </context>
+      <context attribute="Normal Text" name="SignalParameter" lineEndContext="#pop">
+        <DetectSpaces />
+        <keyword attribute="Property Type" context="#stay" String="types" />
+        <DetectSpaces />
+        <DetectIdentifier />
+        <DetectSpaces />
+        <DetectChar char=")" context="#pop"/>
+      </context>
+      <!-- QML supports multi-line strings, which are not supported by Javascript -->
+      <context attribute="String" lineEndContext="#stay" name="String">
+        <DetectChar attribute="String" context="RegExpAfterString##JavaScript" char="&quot;" />
+        <IncludeRules context="Escape##JavaScript" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Object">
+        <!--DetectIdentifier-->
+        <RegExpr attribute="Property Type" String="&identifier;\s*(?=:)" />
+        <!-- Avoid highlighting Property Type before ":" in conditional expressions. -->
+        <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\}]*&identifier;\s*\:)" />
+        <DetectChar attribute="Normal Text" char="}" endRegion="Brace" context="#pop" />
+        <IncludeRules context="Normal" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ConditionalExpression">
+        <AnyChar context="#pop" String=":}" lookAhead="true" />
+        <DetectChar attribute="Symbol" context="#stay" char="?" />
+        <IncludeRules context="Normal" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
+      <itemData name="Import"  defStyleNum="dsKeyword"  spellChecking="false" />
+      <itemData name="ImportValue"  defStyleNum="dsString"  spellChecking="false" />
+      <itemData name="Keywords"  defStyleNum="dsKeyword"  spellChecking="false" />
+      <itemData name="Elements" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0" spellChecking="false"/>
+      <itemData name="Signal" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" spellChecking="false"/>
+      <itemData name="Property Type" defStyleNum="dsDataType" spellChecking="false" />
+      <itemData name="String"       defStyleNum="dsString" />
+      <itemData name="Objects"      defStyleNum="dsExtension" bold="0" spellChecking="false" />
+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+
+<!-- kate: tab-width 2; replace-tabs on; indent-width 2; -->
diff --git a/syntax/rest.xml b/syntax/rest.xml
--- a/syntax/rest.xml
+++ b/syntax/rest.xml
@@ -1,9 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-        <!ENTITY inlinestart "(^|[-\s&apos;&quot;\(\[{&lt;/:‘“’«¡¿‐‑‒–— ])">
+        <!ENTITY inlinestart "(?:^|(?&lt;=[-\s&apos;&quot;\(\[{&lt;/:‘“’«¡¿‐‑‒–— ]))">
         <!ENTITY inlineend "(?=[-\s’”»‐‑‒–— &apos;&quot;\)\]}&gt;/:\.,;!\?\\]|$)">
         <!ENTITY SimpleReferenceNameChars "\w_\.:\+\-">
+
+        <!-- Keep in sync with Markdown -->
+        <!ENTITY startlink "(?:https?|ftp)\://">
 ]>
 <!--
   This file is part of KDE's kate project.
@@ -11,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="4" kateversion="2.4" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="6" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -24,11 +27,16 @@
         <RegExpr attribute="Citation" context="#stay" String="^\s*\.\. \[[&SimpleReferenceNameChars;]+\]\s" minimal="true" column="0"/>
         <RegExpr attribute="HyperlinkTarget" context="#stay" String="^\s*(\.\. (__:|_[&SimpleReferenceNameChars; ]+:(\s|$))|__ )" minimal="true" column="0"/>
         <StringDetect attribute="Code" String=".. code-block::" context="CodeBlock" firstNonSpace="true"/>
-        <RegExpr attribute="Directive" context="#stay" String="^\s*\.\. [\w\-_\.]+::(\s|$)" minimal="true" column="0"/>
+        <StringDetect attribute="Code" String=".. code::" context="CodeBlock" firstNonSpace="true"/>
+        <RegExpr attribute="Directive" context="#stay" String="^\s*\.\. ([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$)" minimal="true" column="0"/>
         <RegExpr attribute="Code" String="::$" context="CodeBlock" />
         <RegExpr attribute="SubstitutionDefinition" context="#stay" String="^\s*\.\. \|[&SimpleReferenceNameChars; ]+\|\s+[&SimpleReferenceNameChars;]+::\s" minimal="true" column="0"/>
         <RegExpr attribute="Field" String=":(?=([^:]*\\:)*[^:]*:(\s|$))" context="Field" firstNonSpace="true"/>
-        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.\s(?![\w\-_\.]+::(\s|$))" column="0"/>
+        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.(\s|$)(?!([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$))" column="0"/>
+
+        <!-- Keep in sync with Markdown’s implicitlink entity -->
+        <RegExpr attribute="StandaloneHyperlink" context="#stay" String="\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))" />
+
       </context>
 
       <context name="InlineMarkup" attribute="Normal" lineEndContext="#stay">
@@ -37,8 +45,9 @@
         <RegExpr attribute="InlineInternalTarget" context="#stay" String="&inlinestart;_`[^\s].*`&inlineend;" minimal="true"/>
         <RegExpr attribute="FootnoteReference" context="#stay" String="&inlinestart;\[[&SimpleReferenceNameChars;]+\]_&inlineend;" minimal="true"/>
         <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_&inlineend;" minimal="true"/>
-        <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:[\w\-_\.\+]+:)" minimal="true"/>
-        <RegExpr attribute="Role" String=":[\w\-_\.\+]+:(?=`)" context="Role"/>
+        <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:)" minimal="true"/>
+        <RegExpr attribute="Role" String=":([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:(?=`)" context="Role"/>
+        <RegExpr attribute="DefaultRole" context="#stay" String="&inlinestart;`[^\s].*`&inlineend;" minimal="true"/>
       </context>
 
       <context name="Field" attribute="Field" lineEndContext="#stay">
@@ -92,8 +101,10 @@
       <itemData name="Directive" defStyleNum="dsDataType" />
       <itemData name="SubstitutionDefinition" defStyleNum="dsDataType" />
       <itemData name="Role" defStyleNum="dsKeyword" />
+      <itemData name="DefaultRole" defStyleNum="dsDecVal" />
       <itemData name="Code" defStyleNum="dsDataType" />
       <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="StandaloneHyperlink" defStyleNum="dsOthers" />
     </itemDatas>
 
   </highlighting>
diff --git a/syntax/rust.xml b/syntax/rust.xml
--- a/syntax/rust.xml
+++ b/syntax/rust.xml
@@ -33,7 +33,7 @@
 	<!ENTITY commonEscape "([trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">
 	<!ENTITY unicodeEscape "u\{([0-9a-fA-F]_*){1,6}\}">
 ]>
-<language name="Rust" version="6" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" version="7" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
 <highlighting>
 	<list name="fn">
 		<item>fn</item>
@@ -45,6 +45,8 @@
 		<item>abstract</item>
 		<item>alignof</item>
 		<item>as</item>
+		<item>async</item>
+		<item>await</item>
 		<item>become</item>
 		<item>box</item>
 		<item>break</item>
@@ -53,6 +55,7 @@
 		<item>crate</item>
 		<item>default</item>
 		<item>do</item>
+		<item>dyn</item>
 		<item>else</item>
 		<item>enum</item>
 		<item>extern</item>
@@ -76,14 +79,12 @@
 		<item>pure</item>
 		<item>ref</item>
 		<item>return</item>
-		<item>Self</item>
-		<item>self</item>
 		<item>sizeof</item>
 		<item>static</item>
 		<item>struct</item>
 		<item>super</item>
 		<item>trait</item>
-		<item>type</item>
+		<item>try</item>
 		<item>typeof</item>
 		<item>union</item>
 		<item>unsafe</item>
@@ -93,52 +94,125 @@
 		<item>where</item>
 		<item>while</item>
 		<item>yield</item>
+		<!-- Also (these keywords are in other lists):
+		     type, Self, self. -->
 	</list>
 	<list name="traits">
-		<!-- FIXME: Some traits may be obsolete and must be removed -->
+		<!-- Core Traits -->
+		<item>Add</item>
+		<item>AddAssign</item>
+		<item>Alloc</item>
+		<item>Any</item>
 		<item>AsMut</item>
 		<item>AsRef</item>
-		<item>AsSlice</item>
-		<item>CharExt</item>
+		<item>Binary</item>
+		<item>BitAnd</item>
+		<item>BitAndAssign</item>
+		<item>BitOr</item>
+		<item>BitOrAssign</item>
+		<item>BitXor</item>
+		<item>BitXorAssign</item>
+		<item>Borrow</item>
+		<item>BorrowMut</item>
+		<item>BuildHasher</item>
 		<item>Clone</item>
+		<item>CoerceUnsized</item>
 		<item>Copy</item>
 		<item>Debug</item>
-		<item>Decodable</item>
 		<item>Default</item>
+		<item>Deref</item>
+		<item>DerefMut</item>
+		<item>DispatchFromDyn</item>
 		<item>Display</item>
+		<item>Div</item>
+		<item>DivAssign</item>
 		<item>DoubleEndedIterator</item>
 		<item>Drop</item>
-		<item>Encodable</item>
 		<item>Eq</item>
 		<item>ExactSizeIterator</item>
 		<item>Extend</item>
+		<item>FixedSizeArray</item>
 		<item>Fn</item>
+		<item>FnBox</item>
 		<item>FnMut</item>
 		<item>FnOnce</item>
 		<item>From</item>
-		<item>FromPrimitive</item>
+		<item>FromIterator</item>
+		<item>FromStr</item>
+		<item>FusedIterator</item>
+		<item>Future</item>
+		<item>Generator</item>
+		<item>GlobalAlloc</item>
 		<item>Hash</item>
+		<item>Hasher</item>
+		<item>Index</item>
+		<item>IndexMut</item>
 		<item>Into</item>
 		<item>IntoIterator</item>
 		<item>Iterator</item>
-		<item>IteratorExt</item>
-		<item>MutPtrExt</item>
+		<item>LowerExp</item>
+		<item>LowerHex</item>
+		<item>Mul</item>
+		<item>MulAssign</item>
+		<item>Neg</item>
+		<item>Not</item>
+		<item>Octal</item>
 		<item>Ord</item>
 		<item>PartialEq</item>
 		<item>PartialOrd</item>
-		<item>PtrExt</item>
-		<item>Rand</item>
-		<item>RustcDecodable</item>
-		<item>RustcEncodable</item>
+		<item>Pointer</item>
+		<item>Product</item>
+		<item>RangeBounds</item>
+		<item>Rem</item>
+		<item>RemAssign</item>
 		<item>Send</item>
+		<item>Shl</item>
+		<item>ShlAssign</item>
+		<item>Shr</item>
+		<item>ShrAssign</item>
 		<item>Sized</item>
+		<item>SliceIndex</item>
+		<item>Step</item>
+		<item>Sub</item>
+		<item>SubAssign</item>
+		<item>Sum</item>
+		<item>Sync</item>
+		<item>TrustedLen</item>
+		<item>Try</item>
+		<item>TryFrom</item>
+		<item>TryInto</item>
+		<item>Unpin</item>
+		<item>Unsize</item>
+		<item>UpperExp</item>
+		<item>UpperHex</item>
+		<item>Write</item>
+		<!-- Standard Library Traits -->
+		<item>AsSlice</item>
+		<item>BufRead</item>
+		<item>CharExt</item>
+		<item>Decodable</item>
+		<item>Encodable</item>
+		<item>Error</item>
+		<item>FromPrimitive</item>
+		<item>IteratorExt</item>
+		<item>MultiSpan</item>
+		<item>MutPtrExt</item>
+		<item>Pattern</item>
+		<item>PtrExt</item>
+		<item>Rand</item>
+		<item>Read</item>
+		<item>RefUnwindSafe</item>
+		<item>Seek</item>
 		<item>SliceConcatExt</item>
 		<item>SliceExt</item>
 		<item>Str</item>
 		<item>StrExt</item>
-		<item>Sync</item>
+		<item>TDynBenchFn</item>
+		<item>Termination</item>
 		<item>ToOwned</item>
+		<item>ToSocketAddrs</item>
 		<item>ToString</item>
+		<item>UnwindSafe</item>
 	</list>
 	<list name="types">
 		<item>bool</item>
@@ -213,6 +287,32 @@
 		<item>Failure</item>
 		<item>Cons</item>
 		<item>Nil</item>
+		<!-- Core Constants -->
+		<!-- char/f32 -->
+		<item>MAX</item>
+		<!-- char -->
+		<item>REPLACEMENT_CHARACTER</item>
+		<item>UNICODE_VERSION</item>
+		<!-- f32 -->
+		<item>DIGITS</item>
+		<item>EPSILON</item>
+		<item>INFINITY</item>
+		<item>MANTISSA_DIGITS</item>
+		<item>MAX_10_EXP</item>
+		<item>MAX_EXP</item>
+		<item>MIN</item>
+		<item>MIN_10_EXP</item>
+		<item>MIN_EXP</item>
+		<item>MIN_POSITIVE</item>
+		<item>NAN</item>
+		<item>NEG_INFINITY</item>
+		<item>RADIX</item>
+		<!-- path -->
+		<item>MAIN_SEPARATOR</item>
+		<!-- sync -->
+		<item>ONCE_INIT</item>
+		<!-- time -->
+		<item>UNIX_EPOCH</item>
 	</list>
 	<list name="cconstants">
 		<item>EXIT_FAILURE</item>
@@ -263,32 +363,43 @@
 			<DetectSpaces/>
 			<keyword String="fn" attribute="Keyword" context="Function"/>
 			<keyword String="type" attribute="Keyword" context="Type"/>
+			<keyword String="self" attribute="Self" context="#stay"/>
 			<keyword String="keywords" attribute="Keyword" context="#stay"/>
 			<keyword String="types" attribute="Type" context="#stay"/>
-			<keyword String="traits" attribute="Trait" context="#stay"/>
 			<keyword String="ctypes" attribute="CType" context="#stay"/>
-			<keyword String="self" attribute="Self" context="#stay"/>
 			<keyword String="constants" attribute="Constant" context="#stay"/>
 			<keyword String="cconstants" attribute="CConstant" context="#stay"/>
-			<Detect2Chars char="/" char1="/" attribute="Comment" context="Commentar 1"/>
-			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
-			<RegExpr String="\b0(x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/> <!-- Hexadecimal, Octal & Binary -->
-			<RegExpr String="\b[0-9][0-9_]*((\.[0-9][0-9_]*)?([eE][\+\-]?[0-9_]+)?(f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/> <!-- Float & Decimal -->
-			<RegExpr String="\b0(b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/> <!-- Invalid number -->
+			<keyword String="traits" attribute="Trait" context="#stay"/>
+			<IncludeRules context="FindComments"/>
+			<!-- Hexadecimal, Octal & Binary -->
+			<RegExpr String="\b0(x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/>
+			<!-- Float & Decimal -->
+			<RegExpr String="\b[0-9][0-9_]*((\.[0-9][0-9_]*)?([eE][\+\-]?[0-9_]+)?(f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/>
+			<!-- Invalid number -->
+			<RegExpr String="\b0(b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/>
 			<Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<RegExpr String="&rustIdent;::" attribute="Scope"/>
+			<RegExpr String="::(?=[^\s\:])" attribute="Scope"/> <!-- Points after keyword or group { } -->
 			<RegExpr String="&rustIdent;!" attribute="Macro"/>
 			<RegExpr String="&apos;&rustIdent;(?!&apos;)" attribute="Lifetime"/>
 			<DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" />
 			<DetectChar char="}" attribute="Symbol" context="#stay" endRegion="Brace" />
+			<!-- Raw Strings -->
 			<RegExpr String="b?r(#*)&quot;" attribute="String" context="RawString" dynamic="true"/>
+			<!-- Byte Strings -->
 			<Detect2Chars char="b" char1="&quot;" attribute="String" context="ByteString"/>
+			<!-- Strings -->
 			<DetectChar char="&quot;" attribute="String" context="String"/>
-			<RegExpr String="b&apos;(?=([^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/> <!-- Byte -->
+			<!-- Byte -->
+			<RegExpr String="b&apos;(?=([^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/>
+			<!-- Character -->
 			<DetectChar char="&apos;" attribute="Character" context="Character"/>
-			<DetectChar char="[" attribute="Symbol" context="#stay" beginRegion="Bracket" />
-			<DetectChar char="]" attribute="Symbol" context="#stay" endRegion="Bracket" />
+			<DetectChar char="[" attribute="Normal Text" context="#stay" beginRegion="Bracket" />
+			<DetectChar char="]" attribute="Normal Text" context="#stay" endRegion="Bracket" />
+			<!-- Raw identifier prefix -->
+			<RegExpr String="r#(?=&rustIdent;)" attribute="Raw Identifier" context="#stay"/>
+			<AnyChar String=";,.@~:$?=&gt;&lt;&amp;-+|*!/^%" attribute="Symbol" context="#stay"/>
 			<DetectIdentifier/>
 		</context>
 		<context attribute="Attribute" lineEndContext="#stay" name="Attribute">
@@ -297,28 +408,30 @@
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Function">
 			<DetectSpaces/>
-			<DetectChar char="(" attribute="Normal Text" context="#pop"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop"/>
+			<DetectChar char="(" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<IncludeRules context="FindComments"/>
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Type">
 			<DetectSpaces/>
-			<DetectChar char="=" attribute="Normal Text" context="#pop"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop"/>
-			<DetectChar char=";" attribute="Normal Text" context="#pop"/>
+			<DetectChar char="=" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char=";" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<IncludeRules context="FindComments"/>
 		</context>
-                <!-- Rustc allows strings to extend over multiple lines, and the
-                only thing a backshash at end-of-line does is remove the whitespace. -->
-                <context attribute="String" lineEndContext="#stay" name="String">
-                        <DetectChar char="\" attribute="CharEscape" context="CharEscapeWithUnicode"/>
-                        <DetectChar attribute="String" context="#pop" char="&quot;"/>
-                </context>
+		<!-- Rustc allows strings to extend over multiple lines, and the
+		     only thing a backshash at end-of-line does is remove the whitespace. -->
+		<context attribute="String" lineEndContext="#stay" name="String">
+			<DetectChar char="\" attribute="CharEscape" context="CharEscapeWithUnicode"/>
+			<DetectChar attribute="String" context="#pop" char="&quot;"/>
+		</context>
 		<context attribute="String" lineEndContext="#stay" name="ByteString">
 			<DetectChar char="\" attribute="CharEscape" context="CharEscape"/>
 			<DetectChar attribute="String" context="#pop" char="&quot;"/>
 		</context>
 		<context attribute="String" lineEndContext="#stay" name="RawString" dynamic="true">
 			<RegExpr String="&quot;%1" attribute="String" context="#pop" dynamic="true"/>
-		</context>		
+		</context>
 		<context attribute="Character" lineEndContext="#pop" name="Character" fallthrough="true" fallthroughContext="#pop">
 			<RegExpr String="[^&apos;\\](?=&apos;)" attribute="Character" context="#stay"/>
 			<RegExpr String="\\(&unicodeEscape;|&commonEscape;)(?=&apos;)" attribute="CharEscape" context="#stay"/>
@@ -333,6 +446,10 @@
 			<RegExpr String="&unicodeEscape;" attribute="CharEscape" context="#pop"/>
 			<IncludeRules context="CharEscape"/>
 		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+			<Detect2Chars char="/" char1="/" attribute="Comment" context="Commentar 1"/>
+			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
+		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 			<IncludeRules context="##Alerts" />
 			<IncludeRules context="##Modelines" />
@@ -365,6 +482,7 @@
 		<itemData name="Symbol"       defStyleNum="dsOperator"/>
 		<itemData name="Attribute"    defStyleNum="dsAttribute"/>
 		<itemData name="Lifetime"     defStyleNum="dsOthers" spellChecking="0"/>
+		<itemData name="Raw Identifier" defStyleNum="dsAnnotation" spellChecking="0"/>
 		<itemData name="Error"        defStyleNum="dsError"/>
 	</itemDatas>
 </highlighting>
@@ -376,4 +494,4 @@
 	<keywords casesensitive="1" />
 </general>
 </language>
-
+<!-- kate: replace-tabs off; -->
diff --git a/syntax/stata.xml b/syntax/stata.xml
new file mode 100644
--- /dev/null
+++ b/syntax/stata.xml
@@ -0,0 +1,3223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Stata" version="10" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
+ casesensitive="1" priority="5" author="Larry Radbill (Larry.Radbill gmail com)" license="LGPL" >
+
+  <highlighting>
+
+    <list name="graphics-options">
+
+      <item>addlabels</item>
+      <item>addlabopts</item>
+      <item>addplot</item>
+      <item>bar</item>
+      <item>barwidth</item>
+      <item>bin</item>
+      <item>blabel</item>
+      <item>caption</item>
+      <item>center</item>
+      <item>circle</item>
+      <item>circle_hollow</item>
+      <item>color</item>
+      <item>cols</item>
+      <item>combine</item>
+      <item>dot</item>
+      <item>draw</item>
+      <item>dropline</item>
+      <item>frequency</item>
+      <item>grid</item>
+      <item>hbar</item>
+      <item>imargin</item>
+      <item>labsize</item>
+      <item>legend</item>
+      <item>margin</item>
+      <item>medthick</item>
+      <item>mlabangle</item>
+      <item>mlabcolor</item>
+      <item>mlabel</item>
+      <item>mlabgap</item>
+      <item>mlabposition</item>
+      <item>mlabsize</item>
+      <item>mlabstyle</item>
+      <item>mlabtextstyle</item>
+      <item>mlabvposition</item>
+      <item>msymbol</item>
+      <item>name</item>
+      <item>nodraw</item>
+      <item>nogrid</item>
+      <item>over</item>
+      <item>plotregion</item>
+      <item>position</item>
+      <item>ring</item>
+      <item>rows</item>
+      <item>scale</item>
+      <item>size</item>
+      <item>start</item>
+      <item>subtitle</item>
+      <item>t1title</item>
+      <item>t2title</item>
+      <item>text</item>
+      <item>textsize</item>
+      <item>title</item>
+      <item>xcommon</item>
+      <item>xlabel</item>
+      <item>xline</item>
+      <item>xscale</item>
+      <item>xsize</item>
+      <item>xtitle</item>
+      <item>ycommon</item>
+      <item>ylabel</item>
+      <item>yline</item>
+      <item>yscale</item>
+      <item>ysize</item>
+      <item>ytitle</item>
+      <item>zero</item>
+    </list>
+
+    <list name="Stata-colors">
+      <item>background</item>
+      <item>bg</item>
+      <item>black</item>
+      <item>blue</item>
+      <item>bluishgray</item>
+      <item>brown</item>
+      <item>cranberry</item>
+      <item>cyan</item>
+      <item>dimgray</item>
+      <item>dkgreen</item>
+      <item>dknavy</item>
+      <item>dkorange</item>
+      <item>ebblue</item>
+      <item>ebg</item>
+      <item>edkblue</item>
+      <item>eggshell</item>
+      <item>eltblue</item>
+      <item>eltgreen</item>
+      <item>emerald</item>
+      <item>emidblue</item>
+      <item>erose</item>
+      <item>fg</item>
+      <item>foreground</item>
+      <item>forest_green</item>
+      <item>gold</item>
+      <item>gray</item>
+      <item>green</item>
+      <item>gs</item>
+      <item>khaki</item>
+      <item>lavender</item>
+      <item>lime</item>
+      <item>ltblue</item>
+      <item>ltbluishgray</item>
+      <item>ltkhaki</item>
+      <item>magenta</item>
+      <item>maroon</item>
+      <item>midblue</item>
+      <item>midgreen</item>
+      <item>mint</item>
+      <item>navy</item>
+      <item>none</item>
+      <item>olive</item>
+      <item>olive_teal</item>
+      <item>orange</item>
+      <item>orange_red</item>
+      <item>pink</item>
+      <item>purple</item>
+      <item>red</item>
+      <item>sand</item>
+      <item>sandb</item>
+      <item>sienna</item>
+      <item>stone</item>
+      <item>teal</item>
+      <item>white</item>
+      <item>yellow</item>
+    </list>
+
+    <list name="proc-options">
+      <item>accum</item>
+      <item>as</item>
+      <item>ascending</item>
+      <item>BASE</item>
+      <item>be</item>
+      <item>begin</item>
+      <item>bfgs</item>
+      <item>bhhh</item>
+      <item>brrweight</item>
+      <item>clean</item>
+      <item>close</item>
+      <item>clpatt</item>
+      <item>clpattern</item>
+      <item>clwidth</item>
+      <item>cole</item>
+      <item>color</item>
+      <item>confirm</item>
+      <item>continue</item>
+      <item>cov(unstr)</item>
+      <item>cov(unstructured)</item>
+      <item>covariance</item>
+      <item>dash</item>
+      <item>define</item>
+      <item>deft</item>
+      <item>delmacs</item>
+      <item>detail</item>
+      <item>dev</item>
+      <item>deviations</item>
+      <item>dfp</item>
+      <item>difficult</item>
+      <item>dirname</item>
+      <item>do</item>
+      <item>effects</item>
+      <item>eform</item>
+      <item>else</item>
+      <item>emdots</item>
+      <item>emiterate</item>
+      <item>emlog</item>
+      <item>emonly</item>
+      <item>emtolerance</item>
+      <item>end</item>
+      <item>error</item>
+      <item>estmetric</item>
+      <item>exchangeable</item>
+      <item>exit</item>
+      <item>family</item>
+      <item>fe</item>
+      <item>fitted</item>
+      <item>force</item>
+      <item>foreach</item>
+      <item>forvalues</item>
+      <item>fpc</item>
+      <item>frequency</item>
+      <item>function</item>
+      <item>global</item>
+      <item>gtolerance</item>
+      <item>hessian</item>
+      <item>ic</item>
+      <item>identity</item>
+      <item>if</item>
+      <item>in</item>
+      <item>independent</item>
+      <item>intpoints</item>
+      <item>irr</item>
+      <item>iterate</item>
+      <item>jkrweight</item>
+      <item>lincom</item>
+      <item>linearized</item>
+      <item>local</item>
+      <item>long</item>
+      <item>ltolerance</item>
+      <item>macro</item>
+      <item>manage</item>
+      <item>meff</item>
+      <item>meft</item>
+      <item>minimize</item>
+      <item>mle</item>
+      <item>mse</item>
+      <item>multiplier</item>
+      <item>noclear</item>
+      <item>nocons</item>
+      <item>noconstant</item>
+      <item>nodots</item>
+      <item>nofetable</item>
+      <item>nogroup</item>
+      <item>noheader</item>
+      <item>nolog</item>
+      <item>nolrtest</item>
+      <item>none</item>
+      <item>nonrtolerance</item>
+      <item>noobs</item>
+      <item>noomit</item>
+      <item>noretable</item>
+      <item>nostderr</item>
+      <item>not</item>
+      <item>nr</item>
+      <item>of</item>
+      <item>offset</item>
+      <item>or</item>
+      <item>p</item>
+      <item>parse</item>
+      <item>patterns</item>
+      <item>poststrata</item>
+      <item>postweight</item>
+      <item>prefix</item>
+      <item>program</item>
+      <item>r2_p</item>
+      <item>reffects</item>
+      <item>reml</item>
+      <item>reset</item>
+      <item>resid</item>
+      <item>run</item>
+      <item>scale</item>
+      <item>shift</item>
+      <item>showstep</item>
+      <item>SITE</item>
+      <item>size</item>
+      <item>star</item>
+      <item>stats</item>
+      <item>STBPLUS</item>
+      <item>stfmt</item>
+      <item>store</item>
+      <item>strata</item>
+      <item>syntax</item>
+      <item>tempfile</item>
+      <item>tempname</item>
+      <item>tempvar</item>
+      <item>tokenize</item>
+      <item>tolerance</item>
+      <item>unstructured</item>
+      <item>until</item>
+      <item>UPDATES</item>
+      <item>weight</item>
+      <item>while</item>
+      <item>wide</item>
+      <item>window</item>
+      <item>x2</item>
+      <item>xb</item>
+
+      <item>_b[</item>
+      <item>_coeff[</item>
+
+      <item>ereturn</item>
+      <item>rreturn</item>
+      <item>sreturn</item>
+
+      <item>e(</item>
+      <item>r(</item>
+      <item>s(</item>
+    </list>
+
+    <list name="macro-extended-functions">
+      <item>all</item>
+      <item>BASE</item>
+      <item>coleq</item>
+      <item>colfullnames</item>
+      <item>coln</item>
+      <item>colnames</item>
+      <item>constraint</item>
+      <item>data</item>
+      <item>dir</item>
+      <item>display</item>
+      <item>environment</item>
+      <item>format</item>
+      <item>l</item>
+      <item>label</item>
+      <item>length</item>
+      <item>list</item>
+      <item>nobreak</item>
+      <item>nofail</item>
+      <item>permname</item>
+      <item>PERSONAL</item>
+      <item>piece</item>
+      <item>PLUS</item>
+      <item>quoted</item>
+      <item>row</item>
+      <item>roweq</item>
+      <item>rowfullnames</item>
+      <item>rown</item>
+      <item>rownames</item>
+      <item>SITE</item>
+      <item>sortedby</item>
+      <item>STATA</item>
+      <item>strict</item>
+      <item>sysdir</item>
+      <item>tempfile</item>
+      <item>tempvar</item>
+      <item>tsnorm</item>
+      <item>UPDATES</item>
+      <item>value</item>
+      <item>variable</item>
+    </list>
+
+    <list name="Internal-Stata-commands">
+      <item>allstring</item>
+      <item>append</item>
+      <item>args</item>
+      <item>aweight</item>
+      <item>born</item>
+      <item>by</item>
+      <item>bys</item>
+      <item>bysort</item>
+      <item>byte</item>
+      <item>capture</item>
+      <item>cfreq</item>
+      <item>clear</item>
+      <item>Cns</item>
+      <item>Co</item>
+      <item>collinear</item>
+      <item>columns</item>
+      <item>comma</item>
+      <item>compress</item>
+      <item>connect</item>
+      <item>console</item>
+      <item>cpercent</item>
+      <item>cr</item>
+      <item>d0</item>
+      <item>data</item>
+      <item>datestring</item>
+      <item>decode</item>
+      <item>delimit</item>
+      <item>depnames</item>
+      <item>desc</item>
+      <item>describe</item>
+      <item>di</item>
+      <item>diparm_options</item>
+      <item>display</item>
+      <item>double</item>
+      <item>drop</item>
+      <item>eclass</item>
+      <item>encode</item>
+      <item>esample</item>
+      <item>Ev</item>
+      <item>exec</item>
+      <item>fam</item>
+      <item>fdadescribe</item>
+      <item>fdasave</item>
+      <item>fdause</item>
+      <item>filefilter</item>
+      <item>float</item>
+      <item>format</item>
+      <item>fweight</item>
+      <item>gen</item>
+      <item>generate</item>
+      <item>gr</item>
+      <item>green</item>
+      <item>gradient</item>
+      <item>hold</item>
+      <item>include</item>
+      <item>insert</item>
+      <item>insheet</item>
+      <item>int</item>
+      <item>iweight</item>
+      <item>k</item>
+      <item>keep</item>
+      <item>label</item>
+      <item>Ld</item>
+      <item>link</item>
+      <item>load</item>
+      <item>long</item>
+      <item>longstub</item>
+      <item>macrolen</item>
+      <item>markout</item>
+      <item>marksample</item>
+      <item>maximize</item>
+      <item>meanonly</item>
+      <item>mlmatsbysum</item>
+      <item>mlout</item>
+      <item>mode</item>
+      <item>model</item>
+      <item>more</item>
+      <item>N</item>
+      <item>namelen</item>
+      <item>noextend</item>
+      <item>nofootnote</item>
+      <item>noi</item>
+      <item>noisily</item>
+      <item>nolabel</item>
+      <item>nonotes</item>
+      <item>nopreserve</item>
+      <item>norescale</item>
+      <item>noscvars</item>
+      <item>nosummary</item>
+      <item>nototal</item>
+      <item>nrtolerance</item>
+      <item>obs</item>
+      <item>odbc</item>
+      <item>off</item>
+      <item>oim</item>
+      <item>on</item>
+      <item>oneway</item>
+      <item>opg</item>
+      <item>order</item>
+      <item>outfile</item>
+      <item>outsheet</item>
+      <item>percent</item>
+      <item>permanently</item>
+      <item>post</item>
+      <item>postclose</item>
+      <item>postfile</item>
+      <item>preserve</item>
+      <item>Psi</item>
+      <item>pweight</item>
+      <item>query</item>
+      <item>qui</item>
+      <item>quietly</item>
+      <item>rawsum</item>
+      <item>red</item>
+      <item>ren</item>
+      <item>rename</item>
+      <item>replace</item>
+      <item>Replay</item>
+      <item>report</item>
+      <item>repost</item>
+      <item>restore</item>
+      <item>robust</item>
+      <item>save</item>
+      <item>saving</item>
+      <item>SD</item>
+      <item>SE</item>
+      <item>search</item>
+      <item>set</item>
+      <item>shownrtolerance</item>
+      <item>sort</item>
+      <item>sqlfile</item>
+      <item>sqlshow</item>
+      <item>STATA</item>
+      <item>statistics</item>
+      <item>sum</item>
+      <item>summarize</item>
+      <item>t1title</item>
+      <item>t2title</item>
+      <item>tab</item>
+      <item>tabulate</item>
+      <item>technique</item>
+      <item>timer</item>
+      <item>total</item>
+      <item>unhold</item>
+      <item>unique</item>
+      <item>uniquemaster</item>
+      <item>uniqusing</item>
+      <item>use</item>
+      <item>using</item>
+      <item>V</item>
+      <item>values</item>
+      <item>variable</item>
+      <item>varlist</item>
+      <item>VCE</item>
+      <item>waldtest</item>
+      <item>width</item>
+      <item>xlabel</item>
+      <item>xmlsave</item>
+      <item>xmluse</item>
+      <item>yellow</item>
+      <item>ylabel</item>
+      <item>yline</item>
+    </list>
+
+  <!-- functions and constants -->
+
+    <list name="math-functions">
+      <item>abs</item>
+      <item>acos</item>
+      <item>asin</item>
+      <item>atan</item>
+      <item>atan2</item>
+      <item>atanh</item>
+      <item>ceil</item>
+      <item>cloglog</item>
+      <item>comb</item>
+      <item>cos</item>
+      <item>digamma</item>
+      <item>exp</item>
+      <item>floor</item>
+      <item>invcloglog</item>
+      <item>invlogit</item>
+      <item>ln</item>
+      <item>lnfact</item>
+      <item>lnfactorial</item>
+      <item>lngamma</item>
+      <item>log</item>
+      <item>log10</item>
+      <item>max</item>
+      <item>min</item>
+      <item>mod</item>
+      <item>reldif</item>
+      <item>round</item>
+      <item>sign</item>
+      <item>sin</item>
+      <item>sqrt</item>
+      <item>sum</item>
+      <item>tan</item>
+      <item>tanh</item>
+      <item>trigamma</item>
+      <item>trunc</item>
+    </list>
+
+    <list name="probability-functions">
+      <item>betaden</item>
+      <item>Binomial</item>
+      <item>binorm</item>
+      <item>binormal</item>
+      <item>chi2</item>
+      <item>chi2tail</item>
+      <item>dgammapda</item>
+      <item>dgammapdada</item>
+      <item>dgammapdadx</item>
+      <item>dgammapdx</item>
+      <item>dgammapdxdx</item>
+      <item>F</item>
+      <item>Fden</item>
+      <item>Ftail</item>
+      <item>gammaden</item>
+      <item>gammap</item>
+      <item>ibeta</item>
+      <item>invbinomial</item>
+      <item>invchi2</item>
+      <item>invchi2tail</item>
+      <item>invF</item>
+      <item>invFtail</item>
+      <item>invgammap</item>
+      <item>invibeta</item>
+      <item>invnchi2</item>
+      <item>invnFtail</item>
+      <item>invnibeta</item>
+      <item>invnorm</item>
+      <item>invnormal</item>
+      <item>invttail</item>
+      <item>nbetaden</item>
+      <item>nchi2</item>
+      <item>nFden</item>
+      <item>nFtail</item>
+      <item>nibeta</item>
+      <item>norm</item>
+      <item>normal</item>
+      <item>normalden</item>
+      <item>normd</item>
+      <item>npnchi2</item>
+      <item>tden</item>
+      <item>ttail</item>
+      <item>uniform()</item>
+    </list>
+
+    <list name="string-functions">
+      <item>abbrev</item>
+      <item>char</item>
+      <item>index</item>
+      <item>indexnot</item>
+      <item>length</item>
+      <item>lower</item>
+      <item>ltrim</item>
+      <item>match</item>
+      <item>plural</item>
+      <item>proper</item>
+      <item>real</item>
+      <item>regexm</item>
+      <item>regexr</item>
+      <item>regexs</item>
+      <item>reverse</item>
+      <item>rtrim</item>
+      <item>string</item>
+      <item>strlen</item>
+      <item>strlower</item>
+      <item>strltrim</item>
+      <item>strmatch</item>
+      <item>strofreal</item>
+      <item>strpos</item>
+      <item>strproper</item>
+      <item>strreverse</item>
+      <item>strrtrim</item>
+      <item>strtrim</item>
+      <item>strupper</item>
+      <item>subinstr</item>
+      <item>subinword</item>
+      <item>substr</item>
+      <item>trim</item>
+      <item>upper</item>
+      <item>word</item>
+      <item>wordcount</item>
+    </list>
+
+    <list name="programming-functions">
+      <item>_caller</item>
+      <item>autocode</item>
+      <item>byteorder</item>
+      <item>chop</item>
+      <item>clip</item>
+      <item>cond</item>
+      <item>e</item>
+      <item>epsdouble</item>
+      <item>epsfloat</item>
+      <item>group</item>
+      <item>inlist</item>
+      <item>inrange</item>
+      <item>irecode</item>
+      <item>matrix</item>
+      <item>maxbyte</item>
+      <item>maxdouble</item>
+      <item>maxfloat</item>
+      <item>maxint</item>
+      <item>maxlong</item>
+      <item>mi</item>
+      <item>minbyte</item>
+      <item>mindouble</item>
+      <item>minfloat</item>
+      <item>minint</item>
+      <item>minlong</item>
+      <item>missing</item>
+      <item>r</item>
+      <item>recode</item>
+      <item>replay</item>
+      <item>return</item>
+      <item>s</item>
+      <item>scalar</item>
+    </list>
+
+    <list name="date-functions">
+      <item>d</item>
+      <item>date</item>
+      <item>day</item>
+      <item>dow</item>
+      <item>doy</item>
+      <item>halfyear</item>
+      <item>mdy</item>
+      <item>month</item>
+      <item>quarter</item>
+      <item>week</item>
+      <item>year</item>
+    </list>
+
+    <list name="timeseries-functions">
+      <item>d</item>
+      <item>daily</item>
+      <item>dofd</item>
+      <item>dofh</item>
+      <item>dofm</item>
+      <item>dofq</item>
+      <item>dofw</item>
+      <item>dofy</item>
+      <item>h</item>
+      <item>halfyearly</item>
+      <item>hofd</item>
+      <item>m</item>
+      <item>mofd</item>
+      <item>monthly</item>
+      <item>q</item>
+      <item>qofd</item>
+      <item>quarterly</item>
+      <item>tin</item>
+      <item>twithin</item>
+      <item>w</item>
+      <item>weekly</item>
+      <item>wofd</item>
+      <item>y</item>
+      <item>yearly</item>
+      <item>yh</item>
+      <item>ym</item>
+      <item>yofd</item>
+      <item>yq</item>
+      <item>yw</item>
+    </list>
+
+    <list name="matrix-functions">
+      <item>cholesky</item>
+      <item>colnumb</item>
+      <item>colsof</item>
+      <item>corr</item>
+      <item>det</item>
+      <item>diag</item>
+      <item>diag0cnt</item>
+      <item>el</item>
+      <item>get</item>
+      <item>hadamard</item>
+      <item>I</item>
+      <item>inv</item>
+      <item>invsym</item>
+      <item>issym</item>
+      <item>issymmetric</item>
+      <item>J</item>
+      <item>matmissing</item>
+      <item>matuniform</item>
+      <item>mreldif</item>
+      <item>nullmat</item>
+      <item>rownumb</item>
+      <item>rowsof</item>
+      <item>sweep</item>
+      <item>syminv</item>
+      <item>trace</item>
+      <item>vec</item>
+      <item>vecdiag</item>
+    </list>
+
+    <list name="egen-functions">
+      <item>anycount</item>
+      <item>anymatch</item>
+      <item>anyvalue</item>
+      <item>at</item>
+      <item>concat</item>
+      <item>count</item>
+      <item>cut</item>
+      <item>diff</item>
+      <item>ends</item>
+      <item>field</item>
+      <item>fill</item>
+      <item>group</item>
+      <item>groupicodes</item>
+      <item>head</item>
+      <item>iqr</item>
+      <item>kurt</item>
+      <item>label</item>
+      <item>last</item>
+      <item>lname</item>
+      <item>mad</item>
+      <item>max</item>
+      <item>maxlength</item>
+      <item>maxmode</item>
+      <item>mdev</item>
+      <item>mean</item>
+      <item>median</item>
+      <item>min</item>
+      <item>minmode</item>
+      <item>missing</item>
+      <item>mode</item>
+      <item>mtr</item>
+      <item>nummodemissing</item>
+      <item>pc</item>
+      <item>prop</item>
+      <item>pctile</item>
+      <item>punct</item>
+      <item>rank</item>
+      <item>rowfirst</item>
+      <item>rowlast</item>
+      <item>rowmax</item>
+      <item>rowmean</item>
+      <item>rowmin</item>
+      <item>rowmiss</item>
+      <item>rownonmiss</item>
+      <item>rowsd</item>
+      <item>rowtotal</item>
+      <item>sd</item>
+      <item>seq</item>
+      <item>skew</item>
+      <item>std</item>
+      <item>strok</item>
+      <item>tag</item>
+      <item>tail</item>
+      <item>total</item>
+      <item>track</item>
+      <item>trim</item>
+      <item>truncate</item>
+    </list>
+
+    <list name="constants">
+      <item>_all</item>
+      <item>_column</item>
+      <item>_cons</item>
+      <item>_dta</item>
+      <item>_dup</item>
+      <item>_merge</item>
+      <item>_n</item>
+      <item>_newline</item>
+      <item>_pi</item>
+      <item>_rc</item>
+      <item>creturn</item>
+      <item>c(adopath)</item>
+      <item>c(adosize)</item>
+      <item>c(ALPHA)</item>
+      <item>c(born_date)</item>
+      <item>c(byteorder)</item>
+      <item>c(changed)</item>
+      <item>c(checksum)</item>
+      <item>c(cmdlen)</item>
+      <item>c(console)</item>
+      <item>c(copycolor)</item>
+      <item>c(current_date)</item>
+      <item>c(current_time)</item>
+      <item>c(dirsep)</item>
+      <item>c(dockable)</item>
+      <item>c(dockingguides)</item>
+      <item>c(dp)</item>
+      <item>c(epsdouble)</item>
+      <item>c(epsfloat)</item>
+      <item>c(filedate)</item>
+      <item>c(filename)</item>
+      <item>c(flavor)</item>
+      <item>c(graphics)</item>
+      <item>c(httpproxy)</item>
+      <item>c(httpproxyauth)</item>
+      <item>c(httpproxyhost)</item>
+      <item>c(httpproxyport)</item>
+      <item>c(httpproxypw)</item>
+      <item>c(httpproxyuser)</item>
+      <item>c(k)</item>
+      <item>c(level)</item>
+      <item>c(linegap)</item>
+      <item>c(linesize)</item>
+      <item>c(locksplitters)</item>
+      <item>c(logtype)</item>
+      <item>c(machine_type)</item>
+      <item>c(macrolen)</item>
+      <item>c(matacache)</item>
+      <item>c(matafavor)</item>
+      <item>c(matalibs)</item>
+      <item>c(matalnum)</item>
+      <item>c(matamofirst)</item>
+      <item>c(mataoptimize)</item>
+      <item>c(matastrict)</item>
+      <item>c(matsize)</item>
+      <item>c(max_cmdlen)</item>
+      <item>c(max_k_current)</item>
+      <item>c(max_k_theory)</item>
+      <item>c(max_macrolen)</item>
+      <item>c(max_matsize)</item>
+      <item>c(max_N_current)</item>
+      <item>c(max_N_theory)</item>
+      <item>c(max_width_current)</item>
+      <item>c(max_width_theory)</item>
+      <item>c(maxbyte)</item>
+      <item>c(maxdb)</item>
+      <item>c(maxdouble)</item>
+      <item>c(maxfloat)</item>
+      <item>c(maxint)</item>
+      <item>c(maxiter)</item>
+      <item>c(maxlong)</item>
+      <item>c(maxstrvarlen)</item>
+      <item>c(maxvar)</item>
+      <item>c(memory)</item>
+      <item>c(min_matsize)</item>
+      <item>c(minbyte)</item>
+      <item>c(mindouble)</item>
+      <item>c(minfloat)</item>
+      <item>c(minint)</item>
+      <item>c(minlong)</item>
+      <item>c(mode)</item>
+      <item>c(Mons)</item>
+      <item>c(Months)</item>
+      <item>c(more)</item>
+      <item>c(N)</item>
+      <item>c(namelen)</item>
+      <item>c(os)</item>
+      <item>c(osdtl)</item>
+      <item>c(pagesize)</item>
+      <item>c(persistfv)</item>
+      <item>c(persistvtopic)</item>
+      <item>c(pi)</item>
+      <item>c(printcolor)</item>
+      <item>c(pwd)</item>
+      <item>c(rc)</item>
+      <item>c(reventries)</item>
+      <item>c(rmsg_time)</item>
+      <item>c(rmsg)</item>
+      <item>c(scheme)</item>
+      <item>c(scrollbufsize)</item>
+      <item>c(SE)</item>
+      <item>c(searchdefault)</item>
+      <item>c(seed)</item>
+      <item>c(stata_version)</item>
+      <item>c(sysdir_base)</item>
+      <item>c(sysdir_oldplace)</item>
+      <item>c(sysdir_personal)</item>
+      <item>c(sysdir_plus)</item>
+      <item>c(sysdir_site)</item>
+      <item>c(sysdir_stata)</item>
+      <item>c(sysdir_updates)</item>
+      <item>c(timeout1)</item>
+      <item>c(timeout2)</item>
+      <item>c(trace)</item>
+      <item>c(tracedepth)</item>
+      <item>c(traceexpand)</item>
+      <item>c(tracehilite)</item>
+      <item>c(traceindent)</item>
+      <item>c(tracenumber)</item>
+      <item>c(tracesep)</item>
+      <item>c(type)</item>
+      <item>c(update_interval)</item>
+      <item>c(update_prompt)</item>
+      <item>c(update_query)</item>
+      <item>c(varabbrev)</item>
+      <item>c(varlabelpos)</item>
+      <item>c(version)</item>
+      <item>c(virtual)</item>
+      <item>c(Wdays)</item>
+      <item>c(Weekdays)</item>
+      <item>c(width)</item>
+      <item>c(xptheme)</item>
+    </list>
+
+    <list name="System-parameters">
+      <item>adosize</item>
+      <item>checksum</item>
+      <item>copycolor</item>
+      <item>dockable</item>
+      <item>dockingguides</item>
+      <item>dp</item>
+      <item>graphics</item>
+      <item>httpproxy</item>
+      <item>httpproxyauth</item>
+      <item>httpproxyhost</item>
+      <item>httpproxyport</item>
+      <item>httpproxypw</item>
+      <item>httpproxyuser</item>
+      <item>level</item>
+      <item>linegap</item>
+      <item>linesize</item>
+      <item>locksplitters</item>
+      <item>logtype</item>
+      <item>matacache</item>
+      <item>matafavor</item>
+      <item>matalibs</item>
+      <item>matalnum</item>
+      <item>matamofirst</item>
+      <item>mataoptimize</item>
+      <item>matastrict</item>
+      <item>matsize</item>
+      <item>maxdb</item>
+      <item>maxiter</item>
+      <item>maxvar</item>
+      <item>memory</item>
+      <item>more</item>
+      <item>pagesize</item>
+      <item>persistfv</item>
+      <item>persistvtopic</item>
+      <item>printcolor</item>
+      <item>reventries</item>
+      <item>rmsg</item>
+      <item>scheme</item>
+      <item>scrollbufsize</item>
+      <item>searchdefault</item>
+      <item>seed</item>
+      <item>timeout1</item>
+      <item>timeout2</item>
+      <item>trace</item>
+      <item>tracedepth</item>
+      <item>traceexpand</item>
+      <item>tracehilite</item>
+      <item>traceindent</item>
+      <item>tracenumber</item>
+      <item>tracesep</item>
+      <item>type</item>
+      <item>update_interval</item>
+      <item>update_prompt</item>
+      <item>update_query</item>
+      <item>varabbrev</item>
+      <item>varlabelpos</item>
+      <item>version</item>
+      <item>virtual</item>
+      <item>xptheme</item>
+    </list>
+
+  <!-- stata ado files   version 9.0    Date: 05/05/2005 -->
+    <list name="procedures">
+      <item>_a_cls_msg</item>
+      <item>_addgph</item>
+      <item>_assert</item>
+      <item>_assert_mreldif</item>
+      <item>_assert_mreldifp</item>
+      <item>_assert_mreldifs</item>
+      <item>_assert_obs</item>
+      <item>_assert_streq</item>
+      <item>_at</item>
+      <item>_bigtab</item>
+      <item>_binperfect</item>
+      <item>_binperfout</item>
+      <item>_biplotmat</item>
+      <item>_brr_sum</item>
+      <item>_bs_display</item>
+      <item>_bs_sum</item>
+      <item>_btcmd</item>
+      <item>_byoptnotallowed</item>
+      <item>_ca_parse_normalize</item>
+      <item>_callerr</item>
+      <item>_cci</item>
+      <item>_check_eformopt</item>
+      <item>_check4gropts</item>
+      <item>_choice_table</item>
+      <item>_ckirfset</item>
+      <item>_cknotsvaroi</item>
+      <item>_ckvec</item>
+      <item>_clsarr2list</item>
+      <item>_cmdxel</item>
+      <item>_coef_table</item>
+      <item>_coef_table_header</item>
+      <item>_confirm_date</item>
+      <item>_confirm_number_or_date</item>
+      <item>_copy_mat_stripes</item>
+      <item>_cpmatnm</item>
+      <item>_crc2use</item>
+      <item>_crc4fld</item>
+      <item>_crcacnt</item>
+      <item>_crcar1</item>
+      <item>_crcause</item>
+      <item>_crcbin</item>
+      <item>_crcbygr</item>
+      <item>_crcchi2</item>
+      <item>_crcchkw</item>
+      <item>_crccip</item>
+      <item>_crceprs</item>
+      <item>_crcgldv</item>
+      <item>_crcglil</item>
+      <item>_crcird</item>
+      <item>_crcirr</item>
+      <item>_crcmeq</item>
+      <item>_crcnuse</item>
+      <item>_crcor</item>
+      <item>_crcphdr</item>
+      <item>_crcra</item>
+      <item>_crcrd</item>
+      <item>_crcrr</item>
+      <item>_crcseq</item>
+      <item>_crcshdr</item>
+      <item>_crcslbl</item>
+      <item>_crcsrvc</item>
+      <item>_crcswxx</item>
+      <item>_crcunab</item>
+      <item>_crcunit</item>
+      <item>_crcvarl</item>
+      <item>_crcwsrv</item>
+      <item>_crczsku</item>
+      <item>_cvar</item>
+      <item>_date2elapsed</item>
+      <item>_diag2mat</item>
+      <item>_diparm</item>
+      <item>_diparm_8</item>
+      <item>_dots</item>
+      <item>_e2r</item>
+      <item>_egennoby</item>
+      <item>_evlist</item>
+      <item>_exp_list_expand</item>
+      <item>_exp_list_parse</item>
+      <item>_find_tsops</item>
+      <item>_fr_area_parse_and_log</item>
+      <item>_fr_aspect_parse_and_log</item>
+      <item>_fr_draw_rect</item>
+      <item>_fr_droplines_draw</item>
+      <item>_fr_erasearr</item>
+      <item>_fr_legend_parse_and_log</item>
+      <item>_fr_merged_implicit</item>
+      <item>_fr_runlog</item>
+      <item>_fr_sztextbox_parse_and_log</item>
+      <item>_fr_tbstyle_parse_and_log</item>
+      <item>_fr_tedits_parse_and_log</item>
+      <item>_fr_textbox_parse_and_log</item>
+      <item>_fr_title_parse_and_log</item>
+      <item>_fr_x_log_cleanup</item>
+      <item>_fr_x_log_create</item>
+      <item>_fracpp</item>
+      <item>_fracxo</item>
+      <item>_frr_sztextbox_pnl</item>
+      <item>_gany</item>
+      <item>_ganycount</item>
+      <item>_ganymatch</item>
+      <item>_ganyvalue</item>
+      <item>_gconcat</item>
+      <item>_gcount</item>
+      <item>_gcut</item>
+      <item>_gdiff</item>
+      <item>_gends</item>
+      <item>_geqany</item>
+      <item>_get_diparmopts</item>
+      <item>_get_diparmopts_8</item>
+      <item>_get_eformopts</item>
+      <item>_get_eqspec</item>
+      <item>_get_gropts</item>
+      <item>_get_irf</item>
+      <item>_get_offopt</item>
+      <item>_getbv</item>
+      <item>_getcovcorr</item>
+      <item>_getfilename</item>
+      <item>_getnewlabelname</item>
+      <item>_getrhs</item>
+      <item>_getvarcns</item>
+      <item>_getxel</item>
+      <item>_getxel2</item>
+      <item>_gfill</item>
+      <item>_ggroup</item>
+      <item>_giqr</item>
+      <item>_gkurt</item>
+      <item>_gm_edit</item>
+      <item>_gm_log</item>
+      <item>_gma</item>
+      <item>_gmad</item>
+      <item>_gmax</item>
+      <item>_gmdev</item>
+      <item>_gmean</item>
+      <item>_gmedian</item>
+      <item>_gmin</item>
+      <item>_gmode</item>
+      <item>_gmtr</item>
+      <item>_gneqany</item>
+      <item>_gpc</item>
+      <item>_gpctile</item>
+      <item>_gr_arrowhead</item>
+      <item>_gr_atomize_styles</item>
+      <item>_gr_common_axes</item>
+      <item>_gr_drawrect</item>
+      <item>_gr_linkstyles</item>
+      <item>_gr_symbol_of</item>
+      <item>_grank</item>
+      <item>_grfirst</item>
+      <item>_grlast</item>
+      <item>_grmax</item>
+      <item>_grmean</item>
+      <item>_grmin</item>
+      <item>_grmiss</item>
+      <item>_grobs</item>
+      <item>_growfirst</item>
+      <item>_growlast</item>
+      <item>_growmax</item>
+      <item>_growmean</item>
+      <item>_growmin</item>
+      <item>_growmiss</item>
+      <item>_grownonmiss</item>
+      <item>_growsd</item>
+      <item>_growtotal</item>
+      <item>_grsd</item>
+      <item>_grsum</item>
+      <item>_gs_addgrname</item>
+      <item>_gs_bygraph</item>
+      <item>_gs_clean_graphlist</item>
+      <item>_gs_default_bands</item>
+      <item>_gs_islivefile</item>
+      <item>_gs_parse_and_log_axoptions</item>
+      <item>_gs_parse_and_log_axtitle</item>
+      <item>_gs_parse_and_log_lines</item>
+      <item>_gs_parse_and_log_tickset</item>
+      <item>_gs_rdfilehdr</item>
+      <item>_gs_wrfilehdr</item>
+      <item>_gs_x_create</item>
+      <item>_gsd</item>
+      <item>_gseq</item>
+      <item>_gskew</item>
+      <item>_gstd</item>
+      <item>_gsum</item>
+      <item>_gtag</item>
+      <item>_gtotal</item>
+      <item>_hadamard_verify</item>
+      <item>_hw_comp</item>
+      <item>_hw_opt_d0</item>
+      <item>_hwsa_comp</item>
+      <item>_hwsa_opt_d0</item>
+      <item>_hwsm_comp</item>
+      <item>_hwsm_opt_d0</item>
+      <item>_isfit</item>
+      <item>_ivreg_project</item>
+      <item>_jk_nlegend</item>
+      <item>_jk_pseudo</item>
+      <item>_jk_sum</item>
+      <item>_labels2names</item>
+      <item>_linemax</item>
+      <item>_loop_brr</item>
+      <item>_loop_jknife</item>
+      <item>_loop_jknife_fw</item>
+      <item>_loop_jknife_iw</item>
+      <item>_loop_jknife2</item>
+      <item>_loop_rw</item>
+      <item>_lrtest7</item>
+      <item>_m2matrix</item>
+      <item>_m2scalar</item>
+      <item>_matplot</item>
+      <item>_matsort</item>
+      <item>_mdisplay</item>
+      <item>_mds_classical</item>
+      <item>_mds_dataheader</item>
+      <item>_mds_display</item>
+      <item>_mds_display_classical</item>
+      <item>_mds_euclidean</item>
+      <item>_mds_parse_dopts</item>
+      <item>_mds_parse_method</item>
+      <item>_mds_parse_s2d</item>
+      <item>_mds_s2d</item>
+      <item>_me_der</item>
+      <item>_me_der2</item>
+      <item>_me_derb</item>
+      <item>_me_derd</item>
+      <item>_me_l_der</item>
+      <item>_me_l_der2</item>
+      <item>_mfrmvec</item>
+      <item>_mka2</item>
+      <item>_mkg</item>
+      <item>_mkkmn</item>
+      <item>_mksigma</item>
+      <item>_mkvec</item>
+      <item>_mprobitestimator</item>
+      <item>_mtest</item>
+      <item>_mvec</item>
+      <item>_no_estat</item>
+      <item>_no_predict</item>
+      <item>_nobs</item>
+      <item>_on_colon_parse</item>
+      <item>_parmlist</item>
+      <item>_parse_optexp</item>
+      <item>_parsewt</item>
+      <item>_pk_p</item>
+      <item>_plotpos</item>
+      <item>_pred_me</item>
+      <item>_pred_se</item>
+      <item>_prefix_check4esample</item>
+      <item>_prefix_checkopt</item>
+      <item>_prefix_clear</item>
+      <item>_prefix_command</item>
+      <item>_prefix_display</item>
+      <item>_prefix_expand</item>
+      <item>_prefix_explist</item>
+      <item>_prefix_footnote</item>
+      <item>_prefix_getchars</item>
+      <item>_prefix_getmat</item>
+      <item>_prefix_legend</item>
+      <item>_prefix_mlogit</item>
+      <item>_prefix_model_test</item>
+      <item>_prefix_note</item>
+      <item>_prefix_reject</item>
+      <item>_prefix_relabel_eqns</item>
+      <item>_prefix_run_error</item>
+      <item>_prefix_saving</item>
+      <item>_prefix_title</item>
+      <item>_prefix_vcenotallowed</item>
+      <item>_qsort_index</item>
+      <item>_qsur</item>
+      <item>_r2e</item>
+      <item>_repost</item>
+      <item>_resample_warn</item>
+      <item>_restore_labels</item>
+      <item>_returnclear</item>
+      <item>_rmdcoll</item>
+      <item>_robust2</item>
+      <item>_roccom1</item>
+      <item>_roccom1_8</item>
+      <item>_rocsen</item>
+      <item>_rotate_clear</item>
+      <item>_rotate_text</item>
+      <item>_score_spec</item>
+      <item>_set_irf_vars</item>
+      <item>_shortenpath</item>
+      <item>_sigfm</item>
+      <item>_small2dotz</item>
+      <item>_stata_internalerror</item>
+      <item>_stcurv</item>
+      <item>_strip_labels</item>
+      <item>_sttrend</item>
+      <item>_stubstar2names</item>
+      <item>_sum_table</item>
+      <item>_sumaccum</item>
+      <item>_sunflower_binar</item>
+      <item>_svar_cnsmac</item>
+      <item>_svar_eqmac</item>
+      <item>_svar_newcns</item>
+      <item>_svar_post</item>
+      <item>_svard2</item>
+      <item>_svariden</item>
+      <item>_svaridenlr</item>
+      <item>_svarlrd2</item>
+      <item>_svd</item>
+      <item>_svy_check_cmdopts</item>
+      <item>_svy_check_fpc</item>
+      <item>_svy_check_postw</item>
+      <item>_svy_check_predict</item>
+      <item>_svy_check_vce</item>
+      <item>_svy_fpc_note</item>
+      <item>_svy_ftest</item>
+      <item>_svy_ivreg_first</item>
+      <item>_svy_mkdeff</item>
+      <item>_svy_mkmeff</item>
+      <item>_svy_mkvmsp</item>
+      <item>_svy_mkvsrs</item>
+      <item>_svy_newrule</item>
+      <item>_svy_setup</item>
+      <item>_svy_singleton_note</item>
+      <item>_svy_subpop</item>
+      <item>_svy_subpop_note</item>
+      <item>_svy_summarize</item>
+      <item>_svy_summarize_legend</item>
+      <item>_svy_tabulate</item>
+      <item>_svy2</item>
+      <item>_svydes_dlg</item>
+      <item>_svylc</item>
+      <item>_svyset</item>
+      <item>_sw_ood</item>
+      <item>_ts</item>
+      <item>_ts_dexp</item>
+      <item>_ts_exp</item>
+      <item>_ts_hw</item>
+      <item>_ts_hwsa</item>
+      <item>_ts_hwsm</item>
+      <item>_tsheadr</item>
+      <item>_tsinchk</item>
+      <item>_tsma</item>
+      <item>_ttest</item>
+      <item>_ttest1</item>
+      <item>_ttest2</item>
+      <item>_tutends</item>
+      <item>_var_mka</item>
+      <item>_varbsf</item>
+      <item>_vardisprmse</item>
+      <item>_varfcast</item>
+      <item>_varfcast_clear</item>
+      <item>_varfcast_fcast</item>
+      <item>_varfcast_graph</item>
+      <item>_varirf</item>
+      <item>_varsim</item>
+      <item>_vce_parserun</item>
+      <item>_vec_ckgraph</item>
+      <item>_vec_dreduced</item>
+      <item>_vec_grcroots</item>
+      <item>_vec_opck</item>
+      <item>_vec_pgparse</item>
+      <item>_vec_pgridplots</item>
+      <item>_vec_postvar</item>
+      <item>_vecauxdisp</item>
+      <item>_vecfcast_compute</item>
+      <item>_vecfcast_compute_w</item>
+      <item>_vecgetacns</item>
+      <item>_vecgetcv</item>
+      <item>_vecgtn</item>
+      <item>_vecmka</item>
+      <item>_vecmkapvp</item>
+      <item>_vecmkce</item>
+      <item>_vecmkgam</item>
+      <item>_vecmksi</item>
+      <item>_vecmktrend</item>
+      <item>_vecortho</item>
+      <item>_vecpclean</item>
+      <item>_vectparse</item>
+      <item>_vecu</item>
+      <item>_virf_add</item>
+      <item>_virf_char</item>
+      <item>_virf_fck</item>
+      <item>_virf_mknewfile</item>
+      <item>_virf_nlen</item>
+      <item>_virf_use</item>
+      <item>_writenum</item>
+      <item>_xtreg_chk_cl</item>
+
+      <item>ac</item>
+      <item>ac_7</item>
+      <item>acprplot</item>
+      <item>acprplot_7</item>
+      <item>adjust</item>
+      <item>adopath</item>
+      <item>alpha</item>
+      <item>ameans</item>
+      <item>anova_estat</item>
+      <item>anova_terms</item>
+      <item>aorder</item>
+      <item>arch</item>
+      <item>arch_dr</item>
+      <item>arch_estat</item>
+      <item>arch_p</item>
+      <item>archlm</item>
+      <item>areg</item>
+      <item>areg_p</item>
+      <item>arima</item>
+      <item>arima_dr</item>
+      <item>arima_estat</item>
+      <item>arima_p</item>
+      <item>asmprobit</item>
+      <item>asmprobit_estat</item>
+      <item>asmprobit_lf</item>
+      <item>asmprobit_p</item>
+      <item>avplot</item>
+      <item>avplot_7</item>
+      <item>avplots</item>
+      <item>avplots_7</item>
+      <item>bcskew0</item>
+      <item>bgodfrey</item>
+      <item>binreg</item>
+      <item>bip0_lf</item>
+      <item>biplot</item>
+      <item>bipp_lf</item>
+      <item>bipr_lf</item>
+      <item>bipr_p</item>
+      <item>biprobit</item>
+      <item>bitest</item>
+      <item>bitesti</item>
+      <item>bitowt</item>
+      <item>blogit</item>
+      <item>bmemsize</item>
+      <item>boot</item>
+      <item>bootsamp</item>
+      <item>bootstrap</item>
+      <item>bootstrap_8</item>
+      <item>boxco_l</item>
+      <item>boxco_p</item>
+      <item>boxcox</item>
+      <item>boxcox_6</item>
+      <item>boxcox_p</item>
+      <item>bprobit</item>
+      <item>brier</item>
+      <item>brr</item>
+      <item>brrstat</item>
+      <item>bs</item>
+      <item>bs_7</item>
+      <item>bsampl_w</item>
+      <item>bsample</item>
+      <item>bsample_7</item>
+      <item>bsqreg</item>
+      <item>bstat</item>
+      <item>bstat_7</item>
+      <item>bstat_8</item>
+      <item>bstrap</item>
+      <item>bstrap_7</item>
+      <item>ca</item>
+      <item>ca_estat</item>
+      <item>ca_p</item>
+      <item>cabiplot</item>
+      <item>camat</item>
+      <item>canon</item>
+      <item>canon_8</item>
+      <item>canon_8_p</item>
+      <item>canon_estat</item>
+      <item>canon_p</item>
+      <item>caprojection</item>
+      <item>cc</item>
+      <item>cchart</item>
+      <item>cchart_7</item>
+      <item>cci</item>
+      <item>censobs_table</item>
+      <item>centile</item>
+      <item>cf</item>
+      <item>checkdlgfiles</item>
+      <item>checkhlpfiles</item>
+      <item>ci</item>
+      <item>cii</item>
+      <item>classutil</item>
+      <item>clear</item>
+      <item>clo</item>
+      <item>clog</item>
+      <item>clog_lf</item>
+      <item>clog_p</item>
+      <item>clogi</item>
+      <item>clogi_sw</item>
+      <item>clogit</item>
+      <item>clogit_lf</item>
+      <item>clogit_p</item>
+      <item>clogitp</item>
+      <item>clogl_sw</item>
+      <item>cloglog</item>
+      <item>clonevar</item>
+      <item>clslistarray</item>
+      <item>cluster</item>
+      <item>cluster_measures</item>
+      <item>cluster_stop</item>
+      <item>cluster_tree</item>
+      <item>cluster_tree_8</item>
+      <item>clustermat</item>
+      <item>cnr</item>
+      <item>cnre</item>
+      <item>cnreg</item>
+      <item>cnreg_p</item>
+      <item>cnreg_sw</item>
+      <item>cnsreg</item>
+      <item>codebook</item>
+      <item>collaps4</item>
+      <item>collapse</item>
+      <item>colormult_nb</item>
+      <item>colormult_nw</item>
+      <item>compare</item>
+      <item>conren</item>
+      <item>contract</item>
+      <item>copyright</item>
+      <item>copysource</item>
+      <item>corc</item>
+      <item>corr_anti</item>
+      <item>corr_kmo</item>
+      <item>corr_smc</item>
+      <item>corr2data</item>
+      <item>corrgram</item>
+      <item>cox_p</item>
+      <item>cox_sw</item>
+      <item>coxbase</item>
+      <item>coxhaz</item>
+      <item>coxvar</item>
+      <item>cprplot</item>
+      <item>cprplot_7</item>
+      <item>crc</item>
+      <item>cross</item>
+      <item>cs</item>
+      <item>cscript</item>
+      <item>cscript_log</item>
+      <item>csi</item>
+      <item>ct</item>
+      <item>ct_is</item>
+      <item>ctset</item>
+      <item>ctst_5</item>
+      <item>ctst_st</item>
+      <item>cttost</item>
+      <item>cumsp</item>
+      <item>cumsp_7</item>
+      <item>cumul</item>
+      <item>cusum</item>
+      <item>cusum_7</item>
+      <item>cutil</item>
+
+      <item>d</item>
+      <item>datetof</item>
+      <item>db</item>
+      <item>dbeta</item>
+      <item>de</item>
+      <item>deff</item>
+      <item>des</item>
+      <item>desc</item>
+      <item>descr</item>
+      <item>descri</item>
+      <item>describ</item>
+      <item>describe</item>
+      <item>destring</item>
+      <item>dfbeta</item>
+      <item>dfgls</item>
+      <item>dfuller</item>
+      <item>dirstats</item>
+      <item>disp_res</item>
+      <item>disp_s</item>
+      <item>dotplot</item>
+      <item>dotplot_7</item>
+      <item>dprobit</item>
+      <item>drawnorm</item>
+      <item>ds</item>
+      <item>ds_util</item>
+      <item>dstdize</item>
+      <item>duplicates</item>
+      <item>durbina</item>
+      <item>dwstat</item>
+      <item>dydx</item>
+      <item>egen</item>
+      <item>eivreg</item>
+      <item>emdef</item>
+      <item>eq</item>
+      <item>ereg</item>
+      <item>ereg_lf</item>
+      <item>ereg_p</item>
+      <item>ereg_sw</item>
+      <item>ereghet</item>
+      <item>ereghet_glf</item>
+      <item>ereghet_glf_sh</item>
+      <item>ereghet_gp</item>
+      <item>ereghet_ilf</item>
+      <item>ereghet_ilf_sh</item>
+      <item>ereghet_ip</item>
+      <item>est</item>
+      <item>est_cfexist</item>
+      <item>est_cfname</item>
+      <item>est_clickable</item>
+      <item>est_expand</item>
+      <item>est_hold</item>
+      <item>est_table</item>
+      <item>est_unhold</item>
+      <item>est_unholdok</item>
+      <item>estat</item>
+      <item>estat_default</item>
+      <item>estat_summ</item>
+      <item>estat_vce_only</item>
+      <item>esti</item>
+      <item>estimates</item>
+      <item>etodow</item>
+      <item>etof</item>
+      <item>etomdy</item>
+      <item>expandcl</item>
+      <item>fac</item>
+      <item>fact</item>
+      <item>facto</item>
+      <item>factor</item>
+      <item>factor_estat</item>
+      <item>factor_p</item>
+      <item>factor_pca_rotated</item>
+      <item>factor_rotate</item>
+      <item>factormat</item>
+      <item>fcast</item>
+      <item>fcast_compute</item>
+      <item>fcast_graph</item>
+      <item>fh_st</item>
+      <item>fillin</item>
+      <item>find_hlp_file</item>
+      <item>findfile</item>
+      <item>findit</item>
+      <item>findit_7</item>
+      <item>fit</item>
+      <item>for</item>
+      <item>for5_0</item>
+      <item>fpredict</item>
+      <item>frac_154</item>
+      <item>frac_adj</item>
+      <item>frac_chk</item>
+      <item>frac_cox</item>
+      <item>frac_ddp</item>
+      <item>frac_dis</item>
+      <item>frac_dv</item>
+      <item>frac_in</item>
+      <item>frac_mun</item>
+      <item>frac_pp</item>
+      <item>frac_pq</item>
+      <item>frac_pv</item>
+      <item>frac_wgt</item>
+      <item>frac_xo</item>
+      <item>fracgen</item>
+      <item>fracplot</item>
+      <item>fracplot_7</item>
+      <item>fracpoly</item>
+      <item>fracpred</item>
+      <item>fron_ex</item>
+      <item>fron_hn</item>
+      <item>fron_p</item>
+      <item>fron_tn</item>
+      <item>fron_tn2</item>
+      <item>frontier</item>
+      <item>ftodate</item>
+      <item>ftoe</item>
+      <item>ftomdy</item>
+      <item>ftowdate</item>
+
+      <item>gamhet_glf</item>
+      <item>gamhet_gp</item>
+      <item>gamhet_ilf</item>
+      <item>gamhet_ip</item>
+      <item>gamma</item>
+      <item>gamma_d2</item>
+      <item>gamma_p</item>
+      <item>gamma_sw</item>
+      <item>gammahet</item>
+      <item>gdi_hexagon</item>
+      <item>gdi_spokes</item>
+      <item>genrank</item>
+      <item>genstd</item>
+      <item>genvmean</item>
+      <item>gladder</item>
+      <item>gladder_7</item>
+      <item>glim_l01</item>
+      <item>glim_l02</item>
+      <item>glim_l03</item>
+      <item>glim_l04</item>
+      <item>glim_l05</item>
+      <item>glim_l06</item>
+      <item>glim_l07</item>
+      <item>glim_l08</item>
+      <item>glim_l09</item>
+      <item>glim_l10</item>
+      <item>glim_l11</item>
+      <item>glim_l12</item>
+      <item>glim_lf</item>
+      <item>glim_mu</item>
+      <item>glim_nw1</item>
+      <item>glim_nw2</item>
+      <item>glim_nw3</item>
+      <item>glim_p</item>
+      <item>glim_v1</item>
+      <item>glim_v2</item>
+      <item>glim_v3</item>
+      <item>glim_v4</item>
+      <item>glim_v5</item>
+      <item>glim_v6</item>
+      <item>glim_v7</item>
+      <item>glm</item>
+      <item>glm_6</item>
+      <item>glm_p</item>
+      <item>glm_sw</item>
+      <item>glmpred</item>
+      <item>glogit</item>
+      <item>glogit_8</item>
+      <item>glogit_p</item>
+      <item>gmeans</item>
+      <item>gnbre_lf</item>
+      <item>gnbreg</item>
+      <item>gnbreg_5</item>
+      <item>gnbreg_p</item>
+      <item>gomp_lf</item>
+      <item>gompe_sw</item>
+      <item>gomper_p</item>
+      <item>gompertz</item>
+      <item>gompertzhet</item>
+      <item>gomphet_glf</item>
+      <item>gomphet_glf_sh</item>
+      <item>gomphet_gp</item>
+      <item>gomphet_ilf</item>
+      <item>gomphet_ilf_sh</item>
+      <item>gomphet_ip</item>
+      <item>gphdot</item>
+      <item>gphpen</item>
+      <item>gphprint</item>
+      <item>gprobi_p</item>
+      <item>gprobit</item>
+      <item>gprobit_8</item>
+      <item>gr</item>
+      <item>gr_copy</item>
+      <item>gr_current</item>
+      <item>gr_db</item>
+      <item>gr_describe</item>
+      <item>gr_dir</item>
+      <item>gr_draw</item>
+      <item>gr_draw_replay</item>
+      <item>gr_drop</item>
+      <item>gr_edit</item>
+      <item>gr_editviewopts</item>
+      <item>gr_example</item>
+      <item>gr_example2</item>
+      <item>gr_export</item>
+      <item>gr_print</item>
+      <item>gr_qscheme</item>
+      <item>gr_query</item>
+      <item>gr_read</item>
+      <item>gr_rename</item>
+      <item>gr_replay</item>
+      <item>gr_save</item>
+      <item>gr_set</item>
+      <item>gr_setscheme</item>
+      <item>gr_table</item>
+      <item>gr_undo</item>
+      <item>gr_use</item>
+      <item>graph</item>
+      <item>grebar</item>
+      <item>greigen</item>
+      <item>greigen_7</item>
+      <item>greigen_8</item>
+      <item>grmeanby</item>
+      <item>grmeanby_7</item>
+      <item>gs_fileinfo</item>
+      <item>gs_filetype</item>
+      <item>gs_graphinfo</item>
+      <item>gs_stat</item>
+      <item>gsort</item>
+      <item>gwood</item>
+      <item>h</item>
+      <item>hadimvo</item>
+      <item>hareg</item>
+      <item>hausman</item>
+      <item>he</item>
+      <item>heck_d2</item>
+      <item>heckma_p</item>
+      <item>heckman</item>
+      <item>heckp_lf</item>
+      <item>heckpr_p</item>
+      <item>heckprob</item>
+      <item>hel</item>
+      <item>help</item>
+      <item>hereg</item>
+      <item>hetpr_lf</item>
+      <item>hetpr_p</item>
+      <item>hetprob</item>
+      <item>hettest</item>
+      <item>hilite</item>
+      <item>hist</item>
+      <item>hist_7</item>
+      <item>histogram</item>
+      <item>hlogit</item>
+      <item>hlu</item>
+      <item>hmeans</item>
+      <item>hotel</item>
+      <item>hotelling</item>
+      <item>hprobit</item>
+      <item>hreg</item>
+      <item>icd9</item>
+      <item>icd9_ff</item>
+      <item>icd9p</item>
+      <item>iis</item>
+      <item>impute</item>
+      <item>imtest</item>
+      <item>inbase</item>
+      <item>integ</item>
+      <item>inten</item>
+      <item>intreg</item>
+      <item>intreg_7</item>
+      <item>intreg_p</item>
+      <item>intrg_ll</item>
+      <item>intrg_ll2</item>
+      <item>intrg2_ll</item>
+      <item>ipolate</item>
+      <item>iqreg</item>
+      <item>ir</item>
+      <item>irf</item>
+      <item>irf_create</item>
+      <item>irfm</item>
+      <item>iri</item>
+      <item>is_svy</item>
+      <item>is_svysum</item>
+      <item>isid</item>
+      <item>istdize</item>
+      <item>ivprob_1_lf</item>
+      <item>ivprob_lf</item>
+      <item>ivprobit</item>
+      <item>ivprobit_p</item>
+      <item>ivreg</item>
+      <item>ivreg_footnote</item>
+      <item>ivtob_1_lf</item>
+      <item>ivtob_lf</item>
+      <item>ivtobit</item>
+      <item>ivtobit_p</item>
+
+      <item>jackknife</item>
+      <item>jacknife</item>
+      <item>jknife</item>
+      <item>jknife_6</item>
+      <item>jknife_8</item>
+      <item>jkstat</item>
+      <item>joinby</item>
+      <item>kalarma1</item>
+      <item>kap</item>
+      <item>kap_3</item>
+      <item>kapmeier</item>
+      <item>kappa</item>
+      <item>kapwgt</item>
+      <item>kdensity</item>
+      <item>kdensity_7</item>
+      <item>ksm</item>
+      <item>ksmirnov</item>
+      <item>ktau</item>
+      <item>kwallis</item>
+      <item>labelbook</item>
+      <item>ladder</item>
+      <item>levels</item>
+      <item>levelsof</item>
+      <item>leverage</item>
+      <item>lfit</item>
+      <item>lfit_p</item>
+      <item>lincom</item>
+      <item>line</item>
+      <item>linktest</item>
+      <item>lloghet_glf</item>
+      <item>lloghet_glf_sh</item>
+      <item>lloghet_gp</item>
+      <item>lloghet_ilf</item>
+      <item>lloghet_ilf_sh</item>
+      <item>lloghet_ip</item>
+      <item>llogi_sw</item>
+      <item>llogis_p</item>
+      <item>llogist</item>
+      <item>llogistic</item>
+      <item>llogistichet</item>
+      <item>lnorm_lf</item>
+      <item>lnorm_sw</item>
+      <item>lnorma_p</item>
+      <item>lnormal</item>
+      <item>lnormalhet</item>
+      <item>lnormhet_glf</item>
+      <item>lnormhet_glf_sh</item>
+      <item>lnormhet_gp</item>
+      <item>lnormhet_ilf</item>
+      <item>lnormhet_ilf_sh</item>
+      <item>lnormhet_ip</item>
+      <item>lnskew0</item>
+      <item>loadingplot</item>
+      <item>logi</item>
+      <item>logis_lf</item>
+      <item>logistic</item>
+      <item>logistic_p</item>
+      <item>logit</item>
+      <item>logit_estat</item>
+      <item>logit_p</item>
+      <item>loglogs</item>
+      <item>logrank</item>
+      <item>loneway</item>
+      <item>lookfor</item>
+      <item>lowess</item>
+      <item>lowess_7</item>
+      <item>lpredict</item>
+      <item>lrecomp</item>
+      <item>lroc</item>
+      <item>lroc_7</item>
+      <item>lrtest</item>
+      <item>lsens</item>
+      <item>lsens_7</item>
+      <item>lsens_x</item>
+      <item>lstat</item>
+      <item>ltable</item>
+      <item>ltable_7</item>
+      <item>ltriang</item>
+      <item>lv</item>
+      <item>lvr2plot</item>
+      <item>lvr2plot_7</item>
+
+      <item>makecns</item>
+      <item>manova_estat</item>
+      <item>manova_p</item>
+      <item>mantel</item>
+      <item>mat_capp</item>
+      <item>mat_order</item>
+      <item>mat_rapp</item>
+      <item>mata_matdescribe</item>
+      <item>mata_matsave</item>
+      <item>mata_matuse</item>
+      <item>matalabel</item>
+      <item>matcproc</item>
+      <item>matlist</item>
+      <item>matname</item>
+      <item>matstrik</item>
+      <item>mcc</item>
+      <item>mcci</item>
+      <item>md0_</item>
+      <item>md1_</item>
+      <item>md1debug_</item>
+      <item>md2_</item>
+      <item>md2debug_</item>
+      <item>mds</item>
+      <item>mds_estat</item>
+      <item>mds_p</item>
+      <item>mdsconfig</item>
+      <item>mdslong</item>
+      <item>mdsmat</item>
+      <item>mdsshepard</item>
+      <item>mdytoe</item>
+      <item>mdytof</item>
+      <item>me_derd</item>
+      <item>mean</item>
+      <item>means</item>
+      <item>median</item>
+      <item>memsize</item>
+      <item>meqparse</item>
+      <item>mer</item>
+      <item>merg</item>
+      <item>merge</item>
+      <item>mfp</item>
+      <item>mfx</item>
+      <item>mhelp</item>
+      <item>mhodds</item>
+      <item>mixed_ll</item>
+      <item>mixed_ll_reparm</item>
+      <item>mkassert</item>
+      <item>mkmat</item>
+      <item>mkspline</item>
+      <item>ml</item>
+      <item>ml_5</item>
+      <item>ml_adjs</item>
+      <item>ml_bhhhs</item>
+      <item>ml_c_d</item>
+      <item>ml_check</item>
+      <item>ml_clear</item>
+      <item>ml_cnt</item>
+      <item>ml_debug</item>
+      <item>ml_defd</item>
+      <item>ml_e0</item>
+      <item>ml_e0_bfgs</item>
+      <item>ml_e0_cycle</item>
+      <item>ml_e0_dfp</item>
+      <item>ml_e0i</item>
+      <item>ml_e1</item>
+      <item>ml_e1_bfgs</item>
+      <item>ml_e1_bhhh</item>
+      <item>ml_e1_cycle</item>
+      <item>ml_e1_dfp</item>
+      <item>ml_e2</item>
+      <item>ml_e2_cycle</item>
+      <item>ml_ebfg0</item>
+      <item>ml_ebfr0</item>
+      <item>ml_ebfr1</item>
+      <item>ml_ebh0q</item>
+      <item>ml_ebhh0</item>
+      <item>ml_ebhr0</item>
+      <item>ml_ebr0i</item>
+      <item>ml_ecr0i</item>
+      <item>ml_edfp0</item>
+      <item>ml_edfr0</item>
+      <item>ml_edfr1</item>
+      <item>ml_edr0i</item>
+      <item>ml_eds</item>
+      <item>ml_eer0i</item>
+      <item>ml_egr0i</item>
+      <item>ml_elf</item>
+      <item>ml_elf_bfgs</item>
+      <item>ml_elf_bhhh</item>
+      <item>ml_elf_cycle</item>
+      <item>ml_elf_dfp</item>
+      <item>ml_elfi</item>
+      <item>ml_elfs</item>
+      <item>ml_enr0i</item>
+      <item>ml_enrr0</item>
+      <item>ml_erdu0</item>
+      <item>ml_erdu0_bfgs</item>
+      <item>ml_erdu0_bhhh</item>
+      <item>ml_erdu0_bhhhq</item>
+      <item>ml_erdu0_cycle</item>
+      <item>ml_erdu0_dfp</item>
+      <item>ml_erdu0_nrbfgs</item>
+      <item>ml_exde</item>
+      <item>ml_footnote</item>
+      <item>ml_geqnr</item>
+      <item>ml_grad0</item>
+      <item>ml_graph</item>
+      <item>ml_hbhhh</item>
+      <item>ml_hd0</item>
+      <item>ml_hold</item>
+      <item>ml_init</item>
+      <item>ml_inv</item>
+      <item>ml_log</item>
+      <item>ml_max</item>
+      <item>ml_mlout</item>
+      <item>ml_model</item>
+      <item>ml_nb0</item>
+      <item>ml_opt</item>
+      <item>ml_p</item>
+      <item>ml_plot</item>
+      <item>ml_query</item>
+      <item>ml_rdgrd</item>
+      <item>ml_repor</item>
+      <item>ml_s_e</item>
+      <item>ml_score</item>
+      <item>ml_searc</item>
+      <item>ml_technique</item>
+      <item>ml_unhold</item>
+      <item>mlf_</item>
+      <item>mlog</item>
+      <item>mlogi</item>
+      <item>mlogit</item>
+      <item>mlogit_footnote</item>
+      <item>mlogit_p</item>
+      <item>mlopts</item>
+      <item>mnl0_</item>
+      <item>mprobit</item>
+      <item>mprobit_lf</item>
+      <item>mprobit_p</item>
+      <item>mrdu0_</item>
+      <item>mrdu1_</item>
+      <item>mvdecode</item>
+      <item>mvencode</item>
+      <item>mvreg</item>
+      <item>mvreg_estat</item>
+      <item>nbreg</item>
+      <item>nbreg_al</item>
+      <item>nbreg_lf</item>
+      <item>nbreg_p</item>
+      <item>nbreg_sw</item>
+      <item>newey</item>
+      <item>newey_7</item>
+      <item>newey_p</item>
+      <item>nl</item>
+      <item>nl_7</item>
+      <item>nl_p</item>
+      <item>nl_p_7</item>
+      <item>nlcom</item>
+      <item>nlcom_p</item>
+      <item>nlexp2</item>
+      <item>nlexp2_7</item>
+      <item>nlexp2a</item>
+      <item>nlexp2a_7</item>
+      <item>nlexp3</item>
+      <item>nlexp3_7</item>
+      <item>nlgom3</item>
+      <item>nlgom3_7</item>
+      <item>nlgom4</item>
+      <item>nlgom4_7</item>
+      <item>nlinit</item>
+      <item>nllog3</item>
+      <item>nllog3_7</item>
+      <item>nllog4</item>
+      <item>nllog4_7</item>
+      <item>nlog_rd</item>
+      <item>nlogit</item>
+      <item>nlogit_p</item>
+      <item>nlogitgen</item>
+      <item>nlogittree</item>
+      <item>nlpred</item>
+      <item>note</item>
+      <item>notes</item>
+      <item>nptrend</item>
+      <item>numlabel</item>
+      <item>old_ver</item>
+      <item>olo</item>
+      <item>olog</item>
+      <item>ologi</item>
+      <item>ologi_sw</item>
+      <item>ologit</item>
+      <item>ologit_p</item>
+      <item>ologitp</item>
+      <item>op_colnm</item>
+      <item>op_comp</item>
+      <item>op_diff</item>
+      <item>op_inv</item>
+      <item>op_str</item>
+      <item>opr</item>
+      <item>opro</item>
+      <item>oprob</item>
+      <item>oprob_sw</item>
+      <item>oprobi</item>
+      <item>oprobi_p</item>
+      <item>oprobit</item>
+      <item>oprobitp</item>
+      <item>opts_exclusive</item>
+      <item>orthog</item>
+      <item>orthpoly</item>
+      <item>ovtest</item>
+
+      <item>pac</item>
+      <item>pac_7</item>
+      <item>palette</item>
+      <item>parse_dissim</item>
+      <item>pause</item>
+      <item>pca</item>
+      <item>pca_8</item>
+      <item>pca_display</item>
+      <item>pca_estat</item>
+      <item>pca_p</item>
+      <item>pca_rotate</item>
+      <item>pcamat</item>
+      <item>pchart</item>
+      <item>pchart_7</item>
+      <item>pchi</item>
+      <item>pchi_7</item>
+      <item>pcorr</item>
+      <item>pctile</item>
+      <item>pentium</item>
+      <item>pergram</item>
+      <item>pergram_7</item>
+      <item>permute</item>
+      <item>permute_8</item>
+      <item>personal</item>
+      <item>peto_st</item>
+      <item>pkcollapse</item>
+      <item>pkcross</item>
+      <item>pkequiv</item>
+      <item>pkexamine</item>
+      <item>pkexamine_7</item>
+      <item>pkshape</item>
+      <item>pksumm</item>
+      <item>pksumm_7</item>
+      <item>pnorm</item>
+      <item>pnorm_7</item>
+      <item>poisgof</item>
+      <item>poiss_lf</item>
+      <item>poiss_sw</item>
+      <item>poisso_p</item>
+      <item>poisson</item>
+      <item>poisson_estat</item>
+      <item>pperron</item>
+      <item>prais</item>
+      <item>prais_e</item>
+      <item>prais_e2</item>
+      <item>prais_p</item>
+      <item>predict</item>
+      <item>predictnl</item>
+      <item>print</item>
+      <item>prob</item>
+      <item>probi</item>
+      <item>probit</item>
+      <item>probit_estat</item>
+      <item>probit_p</item>
+      <item>proc_time</item>
+      <item>procoverlay</item>
+      <item>procrustes</item>
+      <item>procrustes_estat</item>
+      <item>procrustes_p</item>
+      <item>profiler</item>
+      <item>prop</item>
+      <item>proportion</item>
+      <item>prtest</item>
+      <item>prtesti</item>
+      <item>pwcorr</item>
+      <item>qby</item>
+      <item>qbys</item>
+      <item>qchi</item>
+      <item>qchi_7</item>
+      <item>qladder</item>
+      <item>qladder_7</item>
+      <item>qnorm</item>
+      <item>qnorm_7</item>
+      <item>qqplot</item>
+      <item>qqplot_7</item>
+      <item>qreg</item>
+      <item>qreg_c</item>
+      <item>qreg_p</item>
+      <item>qreg_sw</item>
+      <item>quadchk</item>
+      <item>quantile</item>
+      <item>quantile_7</item>
+      <item>range</item>
+      <item>ranksum</item>
+      <item>ratio</item>
+      <item>rchart</item>
+      <item>rchart_7</item>
+      <item>rcof</item>
+      <item>recast</item>
+      <item>recode</item>
+      <item>reg</item>
+      <item>reg3</item>
+      <item>reg3_p</item>
+      <item>regdw</item>
+      <item>regr</item>
+      <item>regre</item>
+      <item>regre_p2</item>
+      <item>regres</item>
+      <item>regres_p</item>
+      <item>regress</item>
+      <item>regress_estat</item>
+      <item>regriv_p</item>
+      <item>remap</item>
+      <item>renpfix</item>
+      <item>repeat</item>
+      <item>reshape</item>
+      <item>robvar</item>
+      <item>roccomp</item>
+      <item>roccomp_7</item>
+      <item>roccomp_8</item>
+      <item>rocf_lf</item>
+      <item>rocfit</item>
+      <item>rocfit_8</item>
+      <item>rocgold</item>
+      <item>rocplot</item>
+      <item>rocplot_7</item>
+      <item>roctab</item>
+      <item>roctab_7</item>
+      <item>rolling</item>
+      <item>rologit</item>
+      <item>rologit_p</item>
+      <item>rot</item>
+      <item>rota</item>
+      <item>rotat</item>
+      <item>rotate</item>
+      <item>rotatemat</item>
+      <item>rreg</item>
+      <item>rreg_p</item>
+      <item>runtest</item>
+      <item>rvfplot</item>
+      <item>rvfplot_7</item>
+      <item>rvpplot</item>
+      <item>rvpplot_7</item>
+
+      <item>safesum</item>
+      <item>sample</item>
+      <item>sampsi</item>
+      <item>savedresults</item>
+      <item>saveold</item>
+      <item>sc</item>
+      <item>scatter</item>
+      <item>scm_mine</item>
+      <item>sco</item>
+      <item>scob_lf</item>
+      <item>scob_p</item>
+      <item>scobi_sw</item>
+      <item>scobit</item>
+      <item>scor</item>
+      <item>score</item>
+      <item>scoreplot</item>
+      <item>scoreplot_help</item>
+      <item>scree</item>
+      <item>screeplot</item>
+      <item>screeplot_help</item>
+      <item>sdtest</item>
+      <item>sdtesti</item>
+      <item>separate</item>
+      <item>seperate</item>
+      <item>serrbar</item>
+      <item>serrbar_7</item>
+      <item>set_defaults</item>
+      <item>sfrancia</item>
+      <item>shewhart</item>
+      <item>shewhart_7</item>
+      <item>signrank</item>
+      <item>signtest</item>
+      <item>simul</item>
+      <item>simul_7</item>
+      <item>simulate</item>
+      <item>simulate_8</item>
+      <item>sktest</item>
+      <item>slogit</item>
+      <item>slogit_d2</item>
+      <item>slogit_p</item>
+      <item>smooth</item>
+      <item>snapspan</item>
+      <item>spearman</item>
+      <item>spikeplot</item>
+      <item>spikeplot_7</item>
+      <item>spikeplt</item>
+      <item>spline_x</item>
+      <item>split</item>
+      <item>sqreg</item>
+      <item>sqreg_p</item>
+      <item>ssc</item>
+      <item>st</item>
+      <item>st_ct</item>
+      <item>st_hc</item>
+      <item>st_hcd</item>
+      <item>st_hcd_sh</item>
+      <item>st_is</item>
+      <item>st_issys</item>
+      <item>st_note</item>
+      <item>st_promo</item>
+      <item>st_set</item>
+      <item>st_show</item>
+      <item>st_smpl</item>
+      <item>st_subid</item>
+      <item>stack</item>
+      <item>statsby</item>
+      <item>statsby_8</item>
+      <item>stbase</item>
+      <item>stci</item>
+      <item>stci_7</item>
+      <item>stcox</item>
+      <item>stcox_estat</item>
+      <item>stcox_fr</item>
+      <item>stcox_fr_ll</item>
+      <item>stcox_p</item>
+      <item>stcox_sw</item>
+      <item>stcoxkm</item>
+      <item>stcoxkm_7</item>
+      <item>stcstat</item>
+      <item>stcurv</item>
+      <item>stcurve</item>
+      <item>stcurve_7</item>
+      <item>stdes</item>
+      <item>stem</item>
+      <item>stepwise</item>
+      <item>stereg</item>
+      <item>stfill</item>
+      <item>stgen</item>
+      <item>stir</item>
+      <item>stjoin</item>
+      <item>stmc</item>
+      <item>stmh</item>
+      <item>stphplot</item>
+      <item>stphplot_7</item>
+      <item>stphtest</item>
+      <item>stphtest_7</item>
+      <item>stptime</item>
+      <item>strate</item>
+      <item>strate_7</item>
+      <item>streg</item>
+      <item>streg_sw</item>
+      <item>streset</item>
+      <item>sts</item>
+      <item>sts_7</item>
+      <item>stset</item>
+      <item>stsplit</item>
+      <item>stsum</item>
+      <item>sttocc</item>
+      <item>sttoct</item>
+      <item>stvary</item>
+      <item>stweib</item>
+      <item>suest</item>
+      <item>suest_8</item>
+      <item>sunflower</item>
+      <item>sureg</item>
+      <item>survcurv</item>
+      <item>survsum</item>
+      <item>svar</item>
+      <item>svar_p</item>
+      <item>svmat</item>
+      <item>svy</item>
+      <item>svy_disp</item>
+      <item>svy_dreg</item>
+      <item>svy_est</item>
+      <item>svy_est_7</item>
+      <item>svy_estat</item>
+      <item>svy_get</item>
+      <item>svy_gnbreg_p</item>
+      <item>svy_head</item>
+      <item>svy_header</item>
+      <item>svy_heckman_p</item>
+      <item>svy_heckprob_p</item>
+      <item>svy_intreg_p</item>
+      <item>svy_ivreg_p</item>
+      <item>svy_logistic_p</item>
+      <item>svy_logit_p</item>
+      <item>svy_mlogit_p</item>
+      <item>svy_nbreg_p</item>
+      <item>svy_ologit_p</item>
+      <item>svy_oprobit_p</item>
+      <item>svy_poisson_p</item>
+      <item>svy_probit_p</item>
+      <item>svy_regress_p</item>
+      <item>svy_sub</item>
+      <item>svy_sub_7</item>
+      <item>svy_x</item>
+      <item>svy_x_7</item>
+      <item>svy_x_p</item>
+      <item>svydes</item>
+      <item>svydes_8</item>
+      <item>svygen</item>
+      <item>svygnbreg</item>
+      <item>svyheckman</item>
+      <item>svyheckprob</item>
+      <item>svyintreg</item>
+      <item>svyintreg_7</item>
+      <item>svyintrg</item>
+      <item>svyivreg</item>
+      <item>svylc</item>
+      <item>svylog_p</item>
+      <item>svylogit</item>
+      <item>svymarkout</item>
+      <item>svymarkout_8</item>
+      <item>svymean</item>
+      <item>svymlog</item>
+      <item>svymlogit</item>
+      <item>svynbreg</item>
+      <item>svyolog</item>
+      <item>svyologit</item>
+      <item>svyoprob</item>
+      <item>svyoprobit</item>
+      <item>svyopts</item>
+      <item>svypois</item>
+      <item>svypois_7</item>
+      <item>svypoisson</item>
+      <item>svyprobit</item>
+      <item>svyprobt</item>
+      <item>svyprop</item>
+      <item>svyprop_7</item>
+      <item>svyratio</item>
+      <item>svyreg</item>
+      <item>svyreg_p</item>
+      <item>svyregress</item>
+      <item>svyset</item>
+      <item>svyset_7</item>
+      <item>svyset_8</item>
+      <item>svytab</item>
+      <item>svytab_7</item>
+      <item>svytest</item>
+      <item>svytotal</item>
+      <item>sw</item>
+      <item>sw_8</item>
+      <item>swcnreg</item>
+      <item>swcox</item>
+      <item>swereg</item>
+      <item>swilk</item>
+      <item>swlogis</item>
+      <item>swlogit</item>
+      <item>swologit</item>
+      <item>swoprbt</item>
+      <item>swpois</item>
+      <item>swprobit</item>
+      <item>swqreg</item>
+      <item>swtobit</item>
+      <item>swweib</item>
+      <item>symmetry</item>
+      <item>symmi</item>
+      <item>symplot</item>
+      <item>symplot_7</item>
+      <item>sysdescribe</item>
+      <item>sysuse</item>
+      <item>szroeter</item>
+      <item>tab_or</item>
+      <item>tab1</item>
+      <item>tab2</item>
+      <item>tabi</item>
+      <item>table</item>
+      <item>tabodds</item>
+      <item>tabodds_7</item>
+      <item>tabstat</item>
+      <item>te</item>
+      <item>tes</item>
+      <item>test</item>
+      <item>testnl</item>
+      <item>testparm</item>
+      <item>teststd</item>
+      <item>tetrachoric</item>
+      <item>time_it</item>
+      <item>tis</item>
+      <item>tob</item>
+      <item>tobi</item>
+      <item>tobit</item>
+      <item>tobit_p</item>
+      <item>tobit_sw</item>
+      <item>tostring</item>
+      <item>total</item>
+      <item>treat_ll</item>
+      <item>treatr_p</item>
+      <item>treatreg</item>
+      <item>trim</item>
+      <item>trnb_cons</item>
+      <item>trnb_mean</item>
+      <item>trpoiss_d2</item>
+      <item>trunc_ll</item>
+      <item>truncr_p</item>
+      <item>truncreg</item>
+      <item>tsappend</item>
+      <item>tset</item>
+      <item>tsfill</item>
+      <item>tsline</item>
+      <item>tsline_ex</item>
+      <item>tsreport</item>
+      <item>tsrline</item>
+      <item>tsset</item>
+      <item>tssmooth</item>
+      <item>tsunab</item>
+      <item>ttest</item>
+      <item>ttesti</item>
+      <item>tut_chk</item>
+      <item>tut_wait</item>
+      <item>tutorial</item>
+      <item>tw</item>
+      <item>tware_st</item>
+      <item>two</item>
+      <item>twoway</item>
+      <item>twoway__fpfit_serset</item>
+      <item>twoway__function_gen</item>
+      <item>twoway__histogram_gen</item>
+      <item>twoway__ipoint_serset</item>
+      <item>twoway__ipoints_serset</item>
+      <item>twoway__kdensity_gen</item>
+      <item>twoway__lfit_serset</item>
+      <item>twoway__normgen_gen</item>
+      <item>twoway__pci_serset</item>
+      <item>twoway__qfit_serset</item>
+      <item>twoway__scatteri_serset</item>
+      <item>twoway__sunflower_gen</item>
+      <item>twoway_ksm_serset</item>
+      <item>typeof</item>
+      <item>unab</item>
+      <item>unabbrev</item>
+      <item>uselabel</item>
+
+      <item>var</item>
+      <item>var_mkcompanion</item>
+      <item>var_p</item>
+      <item>varbasic</item>
+      <item>varfcast</item>
+      <item>vargranger</item>
+      <item>varirf</item>
+      <item>varirf_add</item>
+      <item>varirf_cgraph</item>
+      <item>varirf_create</item>
+      <item>varirf_ctable</item>
+      <item>varirf_describe</item>
+      <item>varirf_dir</item>
+      <item>varirf_drop</item>
+      <item>varirf_erase</item>
+      <item>varirf_graph</item>
+      <item>varirf_ograph</item>
+      <item>varirf_rename</item>
+      <item>varirf_set</item>
+      <item>varirf_table</item>
+      <item>varlmar</item>
+      <item>varnorm</item>
+      <item>varsoc</item>
+      <item>varstable</item>
+      <item>varstable_w</item>
+      <item>varstable_w2</item>
+      <item>varwle</item>
+      <item>vce</item>
+      <item>vec</item>
+      <item>vec_fevd</item>
+      <item>vec_mkphi</item>
+      <item>vec_p</item>
+      <item>vec_p_w</item>
+      <item>vecirf_create</item>
+      <item>veclmar</item>
+      <item>veclmar_w</item>
+      <item>vecnorm</item>
+      <item>vecnorm_w</item>
+      <item>vecrank</item>
+      <item>vecstable</item>
+      <item>verinst</item>
+      <item>viewsource</item>
+      <item>vif</item>
+      <item>vwls</item>
+      <item>wdatetof</item>
+      <item>webdescribe</item>
+      <item>webseek</item>
+      <item>webuse</item>
+      <item>weib_lf</item>
+      <item>weib_lf0</item>
+      <item>weib1_lf</item>
+      <item>weib2_lf</item>
+      <item>weibhet_glf</item>
+      <item>weibhet_glf_sh</item>
+      <item>weibhet_glfa</item>
+      <item>weibhet_glfa_sh</item>
+      <item>weibhet_gp</item>
+      <item>weibhet_ilf</item>
+      <item>weibhet_ilf_sh</item>
+      <item>weibhet_ilfa</item>
+      <item>weibhet_ilfa_sh</item>
+      <item>weibhet_ip</item>
+      <item>weibu_sw</item>
+      <item>weibul_p</item>
+      <item>weibull</item>
+      <item>weibull_c</item>
+      <item>weibull_s</item>
+      <item>weibullhet</item>
+      <item>whelp</item>
+      <item>wilc_st</item>
+      <item>wilcoxon</item>
+      <item>wntestb</item>
+      <item>wntestb_7</item>
+      <item>wntestq</item>
+      <item>xchart</item>
+      <item>xchart_7</item>
+      <item>xcorr</item>
+      <item>xcorr_7</item>
+      <item>xi</item>
+      <item>xi_6</item>
+      <item>xpose</item>
+      <item>xt_iis</item>
+      <item>xt_tis</item>
+      <item>xtab_p</item>
+      <item>xtabond</item>
+      <item>xtbin_p</item>
+      <item>xtclog</item>
+      <item>xtcloglog</item>
+      <item>xtcloglog_8</item>
+      <item>xtcloglog_d2</item>
+      <item>xtcloglog_re_p</item>
+      <item>xtcnt_p</item>
+      <item>xtcorr</item>
+      <item>xtdata</item>
+      <item>xtdes</item>
+      <item>xtfront_p</item>
+      <item>xtfrontier</item>
+      <item>xtgee</item>
+      <item>xtgee_elink</item>
+      <item>xtgee_estat</item>
+      <item>xtgee_makeivar</item>
+      <item>xtgee_p</item>
+      <item>xtgee_plink</item>
+      <item>xtgls</item>
+      <item>xtgls_p</item>
+      <item>xthaus</item>
+      <item>xthausman</item>
+      <item>xtht_p</item>
+      <item>xthtaylor</item>
+      <item>xtile</item>
+      <item>xtint_p</item>
+      <item>xtintreg</item>
+      <item>xtintreg_8</item>
+      <item>xtintreg_d2</item>
+      <item>xtintreg_p</item>
+      <item>xtivp_1</item>
+      <item>xtivp_2</item>
+      <item>xtivreg</item>
+      <item>xtline</item>
+      <item>xtline_ex</item>
+      <item>xtlogit</item>
+      <item>xtlogit_8</item>
+      <item>xtlogit_d2</item>
+      <item>xtlogit_fe_p</item>
+      <item>xtlogit_pa_p</item>
+      <item>xtlogit_re_p</item>
+      <item>xtmixed</item>
+      <item>xtmixed_estat</item>
+      <item>xtmixed_p</item>
+      <item>xtnb_fe</item>
+      <item>xtnb_lf</item>
+      <item>xtnbreg</item>
+      <item>xtnbreg_pa_p</item>
+      <item>xtnbreg_refe_p</item>
+      <item>xtpcse</item>
+      <item>xtpcse_p</item>
+      <item>xtpois</item>
+      <item>xtpoisson</item>
+      <item>xtpoisson_d2</item>
+      <item>xtpoisson_pa_p</item>
+      <item>xtpoisson_refe_p</item>
+      <item>xtpred</item>
+      <item>xtprobit</item>
+      <item>xtprobit_8</item>
+      <item>xtprobit_d2</item>
+      <item>xtprobit_re_p</item>
+      <item>xtps_fe</item>
+      <item>xtps_lf</item>
+      <item>xtps_ren</item>
+      <item>xtps_ren_8</item>
+      <item>xtrar_p</item>
+      <item>xtrc</item>
+      <item>xtrc_p</item>
+      <item>xtrchh</item>
+      <item>xtrefe_p</item>
+      <item>xtreg</item>
+      <item>xtreg_be</item>
+      <item>xtreg_fe</item>
+      <item>xtreg_ml</item>
+      <item>xtreg_pa_p</item>
+      <item>xtreg_re</item>
+      <item>xtregar</item>
+      <item>xtrere_p</item>
+      <item>xtsf_ll</item>
+      <item>xtsf_llti</item>
+      <item>xtsum</item>
+      <item>xttab</item>
+      <item>xttest0</item>
+      <item>xttobit</item>
+      <item>xttobit_8</item>
+      <item>xttobit_p</item>
+      <item>xttrans</item>
+      <item>yx</item>
+      <item>yxview__barlike_draw</item>
+      <item>yxview_area_draw</item>
+      <item>yxview_bar_draw</item>
+      <item>yxview_dot_draw</item>
+      <item>yxview_dropline_draw</item>
+      <item>yxview_function_draw</item>
+      <item>yxview_iarrow_draw</item>
+      <item>yxview_ilabels_draw</item>
+      <item>yxview_normal_draw</item>
+      <item>yxview_pcarrow_draw</item>
+      <item>yxview_pcbarrow_draw</item>
+      <item>yxview_pccapsym_draw</item>
+      <item>yxview_pcscatter_draw</item>
+      <item>yxview_pcspike_draw</item>
+      <item>yxview_rarea_draw</item>
+      <item>yxview_rbar_draw</item>
+      <item>yxview_rbarm_draw</item>
+      <item>yxview_rcap_draw</item>
+      <item>yxview_rcapsym_draw</item>
+      <item>yxview_rconnected_draw</item>
+      <item>yxview_rline_draw</item>
+      <item>yxview_rscatter_draw</item>
+      <item>yxview_rspike_draw</item>
+      <item>yxview_spike_draw</item>
+      <item>yxview_sunflower_draw</item>
+      <item>zap_s</item>
+      <item>zinb</item>
+      <item>zinb_llf</item>
+      <item>zinb_plf</item>
+      <item>zip</item>
+      <item>zip_llf</item>
+      <item>zip_p</item>
+      <item>zip_plf</item>
+      <item>zt_ct_5</item>
+      <item>zt_hc_5</item>
+      <item>zt_hcd_5</item>
+      <item>zt_is_5</item>
+      <item>zt_iss_5</item>
+      <item>zt_sho_5</item>
+      <item>zt_smp_5</item>
+      <item>ztbase_5</item>
+      <item>ztcox_5</item>
+      <item>ztdes_5</item>
+      <item>ztereg_5</item>
+      <item>ztfill_5</item>
+      <item>ztgen_5</item>
+      <item>ztir_5</item>
+      <item>ztjoin_5</item>
+      <item>ztnb</item>
+      <item>ztnb_p</item>
+      <item>ztp</item>
+      <item>ztp_p</item>
+      <item>zts_5</item>
+      <item>ztset_5</item>
+      <item>ztspli_5</item>
+      <item>ztsum_5</item>
+      <item>zttoct_5</item>
+      <item>ztvary_5</item>
+      <item>ztweib_5</item>
+    </list>
+
+    <list name="Mata">
+      <item>_cholinv</item>
+      <item>_cholsolve</item>
+      <item>_corr</item>
+      <item>_edittoint</item>
+      <item>_edittointtol</item>
+      <item>_edittozero</item>
+      <item>_edittozerotol</item>
+      <item>_eigen_work</item>
+      <item>_eigensystem</item>
+      <item>_eigenvalues</item>
+      <item>_equilc</item>
+      <item>_equilr</item>
+      <item>_equilrc</item>
+      <item>_ftell</item>
+      <item>_fullsvd</item>
+      <item>_hqrd</item>
+      <item>_hqrdp</item>
+      <item>_invlower</item>
+      <item>_jumble</item>
+      <item>_lefteigensystem</item>
+      <item>_lowertriangle</item>
+      <item>_lud</item>
+      <item>_lud_la</item>
+      <item>_luinv</item>
+      <item>_lusolve</item>
+      <item>_matexpsym</item>
+      <item>_matlogsym</item>
+      <item>_matpowersym</item>
+      <item>_mprobit_outer_prod</item>
+      <item>_mprobit_quadrature</item>
+      <item>_mprobit_quadrature_eval</item>
+      <item>_mprobit_quadrature_m</item>
+      <item>_mprobit_select</item>
+      <item>_mprobit_simulator</item>
+      <item>_mprobit_simulator_case_g</item>
+      <item>_mprobit_simulator_lk</item>
+      <item>_mprobit_simulator_m</item>
+      <item>_mprobit_simulator_mi</item>
+      <item>_mprobit_validate_choice</item>
+      <item>_mprobit_weights_roots_laguerre</item>
+      <item>_perhapsequilc</item>
+      <item>_perhapsequilr</item>
+      <item>_perhapsequilrc</item>
+      <item>_pinv</item>
+      <item>_qrinv</item>
+      <item>_qrsolve</item>
+      <item>_rowswap</item>
+      <item>_solvelower</item>
+      <item>_solveupper</item>
+      <item>_sort</item>
+      <item>_svd</item>
+      <item>_svdsv</item>
+      <item>_svsolve</item>
+      <item>_svy_design</item>
+      <item>_svy_group_sum</item>
+      <item>_svy_identify</item>
+      <item>_svy_mean</item>
+      <item>_svy_mean_post</item>
+      <item>_svy_mean_std</item>
+      <item>_svy_mean_stdpost</item>
+      <item>_svy_over_expand</item>
+      <item>_svy_over_sizes</item>
+      <item>_svy_post_sizes</item>
+      <item>_svy_ratio</item>
+      <item>_svy_ratio_post</item>
+      <item>_svy_ratio_std</item>
+      <item>_svy_ratio_stdpost</item>
+      <item>_svy_srs_variance</item>
+      <item>_svy_srssub_variance</item>
+      <item>_svy_std_sizes</item>
+      <item>_svy_total</item>
+      <item>_svy_total_post</item>
+      <item>_svy_variance</item>
+      <item>_symeigen_work</item>
+      <item>_symeigensystem</item>
+      <item>_symeigenvalues</item>
+      <item>_symmatfunc_work</item>
+      <item>_uppertriangle</item>
+      <item>_xtm_beta</item>
+      <item>_xtm_blup</item>
+      <item>_xtm_blup_save</item>
+      <item>_xtm_blup_save_u</item>
+      <item>_xtm_blup_u</item>
+      <item>_xtm_cleanup</item>
+      <item>_xtm_covtype</item>
+      <item>_xtm_de_th_u</item>
+      <item>_xtm_delta_to_theta</item>
+      <item>_xtm_det_upper</item>
+      <item>_xtm_em_get_rij</item>
+      <item>_xtm_em_get_uij</item>
+      <item>_xtm_em_iter</item>
+      <item>_xtm_em_iter_u</item>
+      <item>_xtm_em_solve</item>
+      <item>_xtm_fact_expand</item>
+      <item>_xtm_ga_th_u</item>
+      <item>_xtm_gamma_to_theta</item>
+      <item>_xtm_get_delta</item>
+      <item>_xtm_get_delta_u</item>
+      <item>_xtm_invert_R</item>
+      <item>_xtm_logdetr00</item>
+      <item>_xtm_logdetr00_u</item>
+      <item>_xtm_matexp</item>
+      <item>_xtm_matlog</item>
+      <item>_xtm_mixed_ll</item>
+      <item>_xtm_mixed_ll_u</item>
+      <item>_xtm_mixed_ll_uu</item>
+      <item>_xtm_mk_eqs</item>
+      <item>_xtm_ml_eqlist</item>
+      <item>_xtm_ml_eqlist_wrk</item>
+      <item>_xtm_setup</item>
+      <item>_xtm_start</item>
+      <item>_xtm_start_collapse</item>
+      <item>_xtm_start_u</item>
+      <item>_xtm_th_de_u</item>
+      <item>_xtm_th_ga_u</item>
+      <item>_xtm_theta_to_delta</item>
+      <item>_xtm_theta_to_gamma</item>
+      <item>acos</item>
+      <item>acosh</item>
+      <item>aggregate</item>
+      <item>array</item>
+      <item>asin</item>
+      <item>asinh</item>
+      <item>assert</item>
+      <item>asserteq</item>
+      <item>atan</item>
+      <item>atanh</item>
+      <item>blockdiag</item>
+      <item>boolean</item>
+      <item>break</item>
+      <item>byte</item>
+      <item>case</item>
+      <item>cat</item>
+      <item>catch</item>
+      <item>chdir</item>
+      <item>cholesky</item>
+      <item>cholinv</item>
+      <item>cholsolve</item>
+      <item>class</item>
+      <item>cloglog</item>
+      <item>collate</item>
+      <item>colmax</item>
+      <item>colmin</item>
+      <item>colscalefactors</item>
+      <item>colshape</item>
+      <item>colvector</item>
+      <item>complex</item>
+      <item>cond</item>
+      <item>const</item>
+      <item>continue</item>
+      <item>convolve</item>
+      <item>convolveslowly</item>
+      <item>Corr</item>
+      <item>correlation</item>
+      <item>Corrslowly</item>
+      <item>corruppercase</item>
+      <item>cosh</item>
+      <item>deconvolve</item>
+      <item>default</item>
+      <item>delegate</item>
+      <item>delete</item>
+      <item>designmatrix</item>
+      <item>det</item>
+      <item>dettriangular</item>
+      <item>diag</item>
+      <item>diag0cnt</item>
+      <item>do</item>
+      <item>double</item>
+      <item>dsign</item>
+      <item>e</item>
+      <item>editmissing</item>
+      <item>edittoint</item>
+      <item>edittointtol</item>
+      <item>edittozero</item>
+      <item>edittozerotol</item>
+      <item>editvalue</item>
+      <item>eigensystem</item>
+      <item>eigenvalues</item>
+      <item>else</item>
+      <item>eltypedef</item>
+      <item>end</item>
+      <item>enum</item>
+      <item>explicit</item>
+      <item>export</item>
+      <item>external</item>
+      <item>fft</item>
+      <item>fileexists</item>
+      <item>findfile</item>
+      <item>float</item>
+      <item>for</item>
+      <item>friend</item>
+      <item>ftell</item>
+      <item>ftfreqs</item>
+      <item>ftpad</item>
+      <item>ftperiodogram</item>
+      <item>ftretime</item>
+      <item>ftunwrap</item>
+      <item>ftwrap</item>
+      <item>fullsdiag</item>
+      <item>fullsvd</item>
+      <item>function</item>
+      <item>gamma</item>
+      <item>global</item>
+      <item>goto</item>
+      <item>helloworld</item>
+      <item>Hilbert</item>
+      <item>hqrd</item>
+      <item>hqrdmultq</item>
+      <item>hqrdmultq1t</item>
+      <item>hqrdp</item>
+      <item>hqrdq</item>
+      <item>hqrdq1</item>
+      <item>hqrdr</item>
+      <item>hqrdr1</item>
+      <item>if</item>
+      <item>inline</item>
+      <item>int</item>
+      <item>invcloglog</item>
+      <item>invfft</item>
+      <item>invHilbert</item>
+      <item>invlogit</item>
+      <item>invlower</item>
+      <item>invorder</item>
+      <item>invslowfft</item>
+      <item>invslowft</item>
+      <item>invvech</item>
+      <item>isdiagonal</item>
+      <item>jumble</item>
+      <item>lefteigensystem</item>
+      <item>local</item>
+      <item>log10</item>
+      <item>logit</item>
+      <item>long</item>
+      <item>lowertriangle</item>
+      <item>lud</item>
+      <item>luinv</item>
+      <item>lusolve</item>
+      <item>makesymmetric</item>
+      <item>mat_norm</item>
+      <item>mata</item>
+      <item>matexpsym</item>
+      <item>matlogsym</item>
+      <item>matpowersym</item>
+      <item>matrix</item>
+      <item>max</item>
+      <item>mean</item>
+      <item>meanvariance</item>
+      <item>min</item>
+      <item>mkdir</item>
+      <item>mmat_</item>
+      <item>mmat_describe</item>
+      <item>mmat_expandlist</item>
+      <item>mmat_readerror</item>
+      <item>mmat_save</item>
+      <item>mmat_use</item>
+      <item>mmat_writeerror</item>
+      <item>namespace</item>
+      <item>new</item>
+      <item>norm</item>
+      <item>NULL</item>
+      <item>numeric</item>
+      <item>operator</item>
+      <item>orgtypedef</item>
+      <item>panelsetup</item>
+      <item>panelsetup_u</item>
+      <item>panelstats</item>
+      <item>panelsubmatrix</item>
+      <item>panelsubview</item>
+      <item>pathlist</item>
+      <item>pathsubsysdir</item>
+      <item>pi</item>
+      <item>pinv</item>
+      <item>pointer</item>
+      <item>polyadd</item>
+      <item>polyadd_expand</item>
+      <item>polyderiv</item>
+      <item>polydiv</item>
+      <item>polyeval</item>
+      <item>polyinteg</item>
+      <item>polymorphic</item>
+      <item>polymult</item>
+      <item>polyroots</item>
+      <item>polysolve</item>
+      <item>polytrim</item>
+      <item>pragma</item>
+      <item>private</item>
+      <item>protected</item>
+      <item>public</item>
+      <item>qrd</item>
+      <item>qrdp</item>
+      <item>qrinv</item>
+      <item>qrsolve</item>
+      <item>quad</item>
+      <item>quadcorrelation</item>
+      <item>quadmeanvariance</item>
+      <item>quadrant</item>
+      <item>quadvariance</item>
+      <item>range</item>
+      <item>rangen</item>
+      <item>rank</item>
+      <item>rank_from_singular_values</item>
+      <item>real</item>
+      <item>return</item>
+      <item>revorder</item>
+      <item>rmdir</item>
+      <item>rowmax</item>
+      <item>rowmin</item>
+      <item>rowscalefactors</item>
+      <item>rowvector</item>
+      <item>scalar</item>
+      <item>scalar_norm</item>
+      <item>short</item>
+      <item>sign</item>
+      <item>signed</item>
+      <item>sinh</item>
+      <item>sizeof</item>
+      <item>slowfft</item>
+      <item>slowft</item>
+      <item>solve_tol</item>
+      <item>solve_tolscale</item>
+      <item>solvelower</item>
+      <item>solveupper</item>
+      <item>sort</item>
+      <item>spline3</item>
+      <item>spline3eval</item>
+      <item>splineeval</item>
+      <item>st_islmname</item>
+      <item>static</item>
+      <item>string</item>
+      <item>struct</item>
+      <item>super</item>
+      <item>svd</item>
+      <item>svdsv</item>
+      <item>svsolve</item>
+      <item>switch</item>
+      <item>symeigensystem</item>
+      <item>symeigenvalues</item>
+      <item>tanh</item>
+      <item>template</item>
+      <item>this</item>
+      <item>throw</item>
+      <item>Toeplitz</item>
+      <item>trace</item>
+      <item>trace_prod</item>
+      <item>transmorphic</item>
+      <item>transposeonly</item>
+      <item>try</item>
+      <item>typedef</item>
+      <item>typename</item>
+      <item>union</item>
+      <item>uniqrows</item>
+      <item>unitcircle</item>
+      <item>unorder</item>
+      <item>unsigned</item>
+      <item>uppertriangle</item>
+      <item>using</item>
+      <item>Vandermonde</item>
+      <item>variance</item>
+      <item>vec</item>
+      <item>vec_norm</item>
+      <item>vech</item>
+      <item>vector</item>
+      <item>version</item>
+      <item>virtual</item>
+      <item>void</item>
+      <item>volatile</item>
+      <item>while</item>
+    </list>
+
+    <contexts>
+
+      <context        attribute="Normal Text"   lineEndContext="#stay" name="Normal Text">
+
+        <keyword      attribute="Keyword"       context="#stay" String="proc-options" />
+        <keyword      attribute="Keyword"       context="#stay" String="Internal-Stata-commands" />
+        <keyword      attribute="Keyword"       context="#stay" String="procedures" />
+
+        <keyword      attribute="Graphics"      context="#stay" String="graphics-options" />
+        <keyword      attribute="Graphics"      context="#stay" String="Stata-colors" />
+
+        <keyword      attribute="Functions"     context="#stay" String="math-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="probability-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="string-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="programming-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="date-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="timeseries-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="matrix-functions" />
+        <keyword      attribute="Functions"     context="#stay" String="egen-functions" />
+
+        <keyword      attribute="Mata"          context="#stay" String="Mata" />
+
+        <keyword      attribute="Constants"     context="#stay" String="constants" />
+        <keyword      attribute="System Params" context="#stay" String="System-parameters" />
+
+        <keyword      attribute="Macro"         context="#stay" String="macro-extended-functions" />
+        <RegExpr      attribute="GlobalMacro"   context="#stay" String="\$[A-Za-z0-9_?{}!]+" />
+
+        <DetectChar   attribute="String"        context="string" char="&quot;"/>
+        <Detect2Chars attribute="String"        context="#stay" char="`" char1='"'/>
+
+        <RangeDetect  attribute="Macro"         context="#stay" char= "`" char1= "'" />
+
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+
+        <DetectChar   attribute="Normal Text"   context="#stay" char="{" beginRegion="block"/>
+        <DetectChar   attribute="Normal Text"   context="#stay" char="}" endRegion="block"/>
+
+        <StringDetect attribute="Normal Text"   context="#stay" String="program define" beginRegion="block"/>
+        <StringDetect attribute="Normal Text"   context="#stay" String="end" endRegion="block"/>
+
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string">
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+
+      <itemData name="Normal Text"    defStyleNum="dsNormal"/>
+      <itemData name="Keyword"        defStyleNum="dsKeyword"/>
+      <itemData name="Graphics"       defStyleNum="dsBaseN" />
+      <itemData name="Functions"      defStyleNum="dsFunction" />
+      <itemData name="Mata"           defStyleNum="dsKeyword" />
+      <itemData name="Constants"      defStyleNum="dsDataType" />
+      <itemData name="System Params"  defStyleNum="dsDecVal" />
+
+      <itemData name="String"         defStyleNum="dsString"/>
+      <itemData name="String Char"    defStyleNum="dsChar"/>
+
+      <itemData name="Macro"          defStyleNum="dsOthers"/>
+      <itemData name="GlobalMacro"    defStyleNum="dsOthers"/>
+
+      <itemData name="Comment"        defStyleNum="dsComment"/>
+
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+
+</language>
diff --git a/syntax/tcsh.xml b/syntax/tcsh.xml
--- a/syntax/tcsh.xml
+++ b/syntax/tcsh.xml
@@ -8,7 +8,7 @@
         <!ENTITY noword   "(?![\w$+-])">		<!-- no word, $, + or - following -->
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
 ]>
-<language name="Tcsh" version="5" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+<language name="Tcsh" version="6" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
 
 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
@@ -16,15 +16,9 @@
 
   <highlighting>
     <list name="keywords">
-      <item>else</item>
-      <item>for</item>
       <item>function</item>
       <item>in</item>
-      <item>select</item>
-      <item>until</item>
-      <item>while</item>
       <item>.</item>
-      <item>then</item>
     </list>
 
     <list name="builtins">
@@ -499,9 +493,6 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands">
         <!-- start expression in double parentheses -->
 <!--!--><Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
-        <!-- start expression in double brackets -->
-<!--!--><RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/>
-<!--!--><RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" />
         <!-- start expression in single brackets -->
 <!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/>
 <!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" />
@@ -510,13 +501,14 @@
         <!-- start a subshell -->
 <!--!--><DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" />
         <!-- match do and if blocks -->
-<!--!--><RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" />
-<!--!--><RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" />
-<!--!--><RegExpr attribute="Keyword" context="#stay" String="\belse\s+if&noword;" />
-<!--!--><RegExpr attribute="Keyword" context="#stay" String="\bif&noword;" beginRegion="if" />
-<!--!--><RegExpr attribute="Keyword" context="#stay" String="\bendif&noword;" endRegion="if" />
+<!--!--><RegExpr attribute="Control Flow" context="If" String="\bif&noword;" />
+<!--!--><RegExpr attribute="Control Flow" context="ElseIf" String="\belse\s+if&noword;" />
+<!--!--><RegExpr attribute="Control Flow" context="#stay" String="\belse&noword;" />
+<!--!--><RegExpr attribute="Control Flow" context="#stay" String="\bendif&noword;" endRegion="if" />
         <!-- handle switch as a special case -->
-<!--!--><RegExpr attribute="Keyword" context="Switch" String="\bswitch&noword;" beginRegion="switch" />
+<!--!--><RegExpr attribute="Control Flow" context="Switch" String="\bswitch&noword;" beginRegion="switch" />
+<!--!--><RegExpr attribute="Control Flow" context="#stay" String="\b(foreach|while)&noword;" beginRegion="loop" />
+<!--!--><RegExpr attribute="Control Flow" context="#stay" String="\bend&noword;" endRegion="loop" />
         <!-- handle command line options -->
         <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*" />
         <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
@@ -581,9 +573,7 @@
         <RegExpr attribute="Expression" context="#stay" String="-[rwxXeozsfdlbcpSugktRLDIFNZ](?=\s)"/>
         <RegExpr attribute="Expression" context="#stay" String="-[AMCUG]:?(?=\s)"/>
         <RegExpr attribute="Expression" context="#stay" String="-P[0-7]{,3}:?(?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="([|&amp;=&gt;&lt;])\1"/>
-        <RegExpr attribute="Expression" context="#stay" String="[|^&amp;&gt;&lt;+\-*/%!~]"/>
-        <RegExpr attribute="Expression" context="#stay" String="([!=]~|[!&gt;&lt;]=)"/>
+        <RegExpr attribute="Expression" context="#stay" String="[=!][~=]|[*>&lt;!~]"/>
       </context>
 
 
@@ -619,15 +609,6 @@
         <IncludeRules context="FindMost" />
       </context>
 
-      <!-- ExprDblBracket consumes an expression till ]] -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket">
-        <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&amp;]))" endRegion="expression" />
-        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindTests" />
-        <IncludeRules context="FindMost" />
-      </context>
-
       <!-- Group consumes shell input till } -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Group">
         <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" />
@@ -760,6 +741,31 @@
         <IncludeRules context="FindMost" />
       </context>
 
+      <context attribute="Normal Text" lineEndContext="#pop" name="If" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <StringDetect attribute="Control Flow" context="#pop" String="then" beginRegion="if" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ElseIf" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <StringDetect attribute="Control Flow" context="#pop" String="then" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ArithmeticCondition">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="cond" />
+        <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
+        <RegExpr attribute="Expression" context="#stay" String="[=!]~|[=!>&lt;]="/>
+        <AnyChar attribute="Expression" context="#stay" String="|^&amp;>&lt;+-*/%!~"/>
+        <IncludeRules context="FindComments" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
       <!-- SwitchCase is called when the construct 'switch ... case' has been found. -->
       <context attribute="Normal Text" lineEndContext="#stay" name="SwitchCase">
         <DetectChar attribute="Keyword" context="SwitchExpr" char=":" beginRegion="switchexpr" />
@@ -783,22 +789,23 @@
     <itemDatas>
       <itemData name="Normal Text"	defStyleNum="dsNormal" />
       <itemData name="Comment"		defStyleNum="dsComment" />
-      <itemData name="Keyword" 		defStyleNum="dsKeyword" />
-      <itemData name="Control" 		defStyleNum="dsKeyword" />
-      <itemData name="Builtin" 		defStyleNum="dsKeyword" />
-      <itemData name="Command" 		defStyleNum="dsKeyword" />
-      <itemData name="Redirection" 	defStyleNum="dsKeyword" />
-      <itemData name="Escape" 		defStyleNum="dsDataType" />
+      <itemData name="Control Flow" 	defStyleNum="dsControlFlow" spellChecking="false" />
+      <itemData name="Keyword" 		defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Control" 		defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Builtin" 		defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Command" 		defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Redirection" 	defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Escape" 		defStyleNum="dsDataType" spellChecking="false" />
       <itemData name="String SingleQ" 	defStyleNum="dsString" />
       <itemData name="String DoubleQ" 	defStyleNum="dsString" />
-      <itemData name="Backquote" 	defStyleNum="dsKeyword" />
-      <itemData name="String Transl." 	defStyleNum="dsString" />
-      <itemData name="String Escape" 	defStyleNum="dsDataType" />
-      <itemData name="Variable" 	defStyleNum="dsOthers" />
-      <itemData name="Expression" 	defStyleNum="dsOthers" />
-      <itemData name="Function" 	defStyleNum="dsFunction" />
-      <itemData name="Path" 		defStyleNum="dsNormal" />
-      <itemData name="Option" 		defStyleNum="dsNormal" />
+      <itemData name="Backquote" 	defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="String Transl." 	defStyleNum="dsString" spellChecking="false" />
+      <itemData name="String Escape" 	defStyleNum="dsDataType" spellChecking="false" />
+      <itemData name="Variable" 	defStyleNum="dsOthers" spellChecking="false" />
+      <itemData name="Expression" 	defStyleNum="dsOthers" spellChecking="false" />
+      <itemData name="Function" 	defStyleNum="dsFunction" spellChecking="false" />
+      <itemData name="Path" 		defStyleNum="dsNormal" spellChecking="false" />
+      <itemData name="Option" 		defStyleNum="dsNormal" spellChecking="false" />
     </itemDatas>
   </highlighting>
   <general>
diff --git a/syntax/typescript.xml b/syntax/typescript.xml
--- a/syntax/typescript.xml
+++ b/syntax/typescript.xml
@@ -1,2023 +1,707 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-	<!ENTITY identifier "([a-zA-Z_$]|[^[:ascii:]])([\w$]|[^[:ascii:]])*">
-]>
-
-<!--
-    ====================================================================
-
-      This file is part of the KDE's KSyntaxHighlighting framework.
-
-      Copyright 2018 Nibaldo González S. (nibgonz@gmail.com)
-
-      This Source Code Form is subject to the terms of the MIT License.
-      If a copy of the license was not distributed with this file,
-      You can obtain one at: https://opensource.org/licenses/MIT
-
-    ====================================================================
-
-    This file is an extension of the JavaScript highlighter
-    (javascript.xml, Version 10 and higher).
-    Based on the TypeScript grammar files,
-    available at: https://github.com/Microsoft/TypeScript-TmLanguage
-
-    NOTE: TypeScript directives are highlighted by "doxygen.xml",
-    included in the JavaScript highlighter.
-    Ex:
-      /// <reference no-default-lib="true"/>
-
-      Tags: reference, amd-dependency, amd-module
-      Attributes: path, types, no-default-lib, name
-
-    TODO: The keywords of built-in classes & functions can be included
-    in "javascript.xml". The only drawback is that some XML files use
-    JavaScript highlighting, through "IncludeRules", and should not
-    incorporate these keywords (for example: "qml.xml").
-
-    Change log:
-     * v2 [2018-12-29]: Don't highlight built-in classes as functions,
-                        fix float-points, improve types detection and other fixes.
-     * v1 [2018-11-18]: Initial version
--->
-
-<language name="TypeScript"
-          version="2"
-          kateversion="5.53"
-          section="Scripts"
-          extensions="*.ts"
-          priority="9"
-          mimetype="text/typescript;application/typescript;text/x-typescript;application/x-typescript"
-          indenter="cstyle"
-          author="Nibaldo González (nibgonz@gmail.com)"
-          license="MIT">
-
-<highlighting>
-
-	<!-- Include all JavaScript keywords! -->
-	<list name="controlflow">
-		<include>controlflow##JavaScript</include>
-		<item>goto</item>
-	</list>
-	<list name="keywords">
-		<include>keywords##JavaScript</include>
-		<item>declare</item> <!-- storage.modifier.ts -->
-	</list>
-	<list name="reserved">
-		<include>reserved##JavaScript</include>
-		<item>type</item>
-		<item>arguments</item>
-
-		<!-- Class -->
-		<item>readonly</item>
-		<item>abstract</item>
-		<item>constructor</item>
-		<item>get</item>
-		<item>set</item>
-		<!-- Also:
-		     public, protected, private, async, super, new, static -->
-	</list>
-	<list name="module">
-		<include>module##JavaScript</include>
-	</list>
-	<list name="primitives">
-		<include>primitives##JavaScript</include>
-
-		<!-- Types Built-in -->
-		<item>object</item>
-		<!-- Also:
-		     this, true, false, undefined, null -->
-	</list>
-
-	<list name="control_export_types">
-		<!-- storage.type.namespace.ts -->
-		<item>namespace</item>
-		<item>module</item>
-	</list>
-	<list name="object_iden">
-		<item>keyof</item>
-		<item>infer</item>
-	</list>
-	<list name="types_primitives">
-		<item>string</item>
-		<item>number</item>
-		<item>boolean</item>
-		<item>symbol</item>
-		<item>any</item>
-		<item>void</item>
-		<item>never</item>
-		<item>unknown</item>
-		<item>undefined</item>
-		<item>null</item>
-	</list>
-
-	<!-- Built-in Classes & Functions -->
-
-	<list name="class_builtin">
-		<item>Array</item>
-		<item>ArrayBuffer</item>
-		<item>Atomics</item>
-		<item>Boolean</item>
-		<item>DataView</item>
-		<item>Date</item>
-		<item>Float32Array</item>
-		<item>Float64Array</item>
-		<item>Function</item>
-		<item>Generator</item>
-		<item>GeneratorFunction</item>
-		<item>Int8Array</item>
-		<item>Int16Array</item>
-		<item>Int32Array</item>
-		<item>Intl</item>
-		<item>Map</item>
-		<item>Number</item>
-		<item>Object</item>
-		<item>Proxy</item>
-		<item>Reflect</item>
-		<item>RegExp</item>
-		<item>Set</item>
-		<item>SharedArrayBuffer</item>
-		<item>SIMD</item>
-		<item>String</item>
-		<item>Symbol</item>
-		<item>TypedArray</item>
-		<item>Uint8Array</item>
-		<item>Uint16Array</item>
-		<item>Uint32Array</item>
-		<item>Uint8ClampedArray</item>
-		<item>WeakMap</item>
-		<item>WeakSet</item>
-		<!-- Class: Error -->
-		<item>Error</item>
-		<item>EvalError</item>
-		<item>InternalError</item>
-		<item>RangeError</item>
-		<item>ReferenceError</item>
-		<item>SyntaxError</item>
-		<item>TypeError</item>
-		<item>URIError</item>
-		<!-- Class: Math -->
-		<item>Math</item>
-		<!-- Class: Promise -->
-		<item>Promise</item>
-		<!-- Other -->
-		<item>JSON</item>
-		<item>console</item>
-		<item>process</item>
-	</list>
-	<!-- DOM Classes -->
-	<list name="class_dom">
-		<item>AnalyserNode</item>
-		<item>ArrayBufferView</item>
-		<item>Attr</item>
-		<item>AudioBuffer</item>
-		<item>AudioBufferSourceNode</item>
-		<item>AudioContext</item>
-		<item>AudioDestinationNode</item>
-		<item>AudioListener</item>
-		<item>AudioNode</item>
-		<item>AudioParam</item>
-		<item>BatteryManager</item>
-		<item>BeforeUnloadEvent</item>
-		<item>BiquadFilterNode</item>
-		<item>Blob</item>
-		<item>BufferSource</item>
-		<item>ByteString</item>
-		<item>CSS</item>
-		<item>CSSConditionRule</item>
-		<item>CSSCounterStyleRule</item>
-		<item>CSSGroupingRule</item>
-		<item>CSSMatrix</item>
-		<item>CSSMediaRule</item>
-		<item>CSSPageRule</item>
-		<item>CSSPrimitiveValue</item>
-		<item>CSSRule</item>
-		<item>CSSRuleList</item>
-		<item>CSSStyleDeclaration</item>
-		<item>CSSStyleRule</item>
-		<item>CSSStyleSheet</item>
-		<item>CSSSupportsRule</item>
-		<item>CSSValue</item>
-		<item>CSSValueList</item>
-		<item>CanvasGradient</item>
-		<item>CanvasImageSource</item>
-		<item>CanvasPattern</item>
-		<item>CanvasRenderingContext2D</item>
-		<item>ChannelMergerNode</item>
-		<item>ChannelSplitterNode</item>
-		<item>CharacterData</item>
-		<item>ChromeWorker</item>
-		<item>CloseEvent</item>
-		<item>Comment</item>
-		<item>CompositionEvent</item>
-		<item>Console</item>
-		<item>ConvolverNode</item>
-		<item>Coordinates</item>
-		<item>Credential</item>
-		<item>CredentialsContainer</item>
-		<item>Crypto</item>
-		<item>CryptoKey</item>
-		<item>CustomEvent</item>
-		<item>DOMError</item>
-		<item>DOMException</item>
-		<item>DOMHighResTimeStamp</item>
-		<item>DOMImplementation</item>
-		<item>DOMString</item>
-		<item>DOMStringList</item>
-		<item>DOMStringMap</item>
-		<item>DOMTimeStamp</item>
-		<item>DOMTokenList</item>
-		<item>DataTransfer</item>
-		<item>DataTransferItem</item>
-		<item>DataTransferItemList</item>
-		<item>DedicatedWorkerGlobalScope</item>
-		<item>DelayNode</item>
-		<item>DeviceProximityEvent</item>
-		<item>DirectoryEntry</item>
-		<item>DirectoryEntrySync</item>
-		<item>DirectoryReader</item>
-		<item>DirectoryReaderSync</item>
-		<item>Document</item>
-		<item>DocumentFragment</item>
-		<item>DocumentTouch</item>
-		<item>DocumentType</item>
-		<item>DragEvent</item>
-		<item>DynamicsCompressorNode</item>
-		<item>Element</item>
-		<item>Entry</item>
-		<item>EntrySync</item>
-		<item>ErrorEvent</item>
-		<item>Event</item>
-		<item>EventListener</item>
-		<item>EventSource</item>
-		<item>EventTarget</item>
-		<item>FederatedCredential</item>
-		<item>FetchEvent</item>
-		<item>File</item>
-		<item>FileEntry</item>
-		<item>FileEntrySync</item>
-		<item>FileException</item>
-		<item>FileList</item>
-		<item>FileReader</item>
-		<item>FileReaderSync</item>
-		<item>FileSystem</item>
-		<item>FileSystemSync</item>
-		<item>FontFace</item>
-		<item>FormData</item>
-		<item>GainNode</item>
-		<item>Gamepad</item>
-		<item>GamepadButton</item>
-		<item>GamepadEvent</item>
-		<item>Geolocation</item>
-		<item>GlobalEventHandlers</item>
-		<item>HTMLAnchorElement</item>
-		<item>HTMLAreaElement</item>
-		<item>HTMLAudioElement</item>
-		<item>HTMLBRElement</item>
-		<item>HTMLBaseElement</item>
-		<item>HTMLBodyElement</item>
-		<item>HTMLButtonElement</item>
-		<item>HTMLCanvasElement</item>
-		<item>HTMLCollection</item>
-		<item>HTMLContentElement</item>
-		<item>HTMLDListElement</item>
-		<item>HTMLDataElement</item>
-		<item>HTMLDataListElement</item>
-		<item>HTMLDialogElement</item>
-		<item>HTMLDivElement</item>
-		<item>HTMLDocument</item>
-		<item>HTMLElement</item>
-		<item>HTMLEmbedElement</item>
-		<item>HTMLFieldSetElement</item>
-		<item>HTMLFontElement</item>
-		<item>HTMLFormControlsCollection</item>
-		<item>HTMLFormElement</item>
-		<item>HTMLHRElement</item>
-		<item>HTMLHeadElement</item>
-		<item>HTMLHeadingElement</item>
-		<item>HTMLHtmlElement</item>
-		<item>HTMLIFrameElement</item>
-		<item>HTMLImageElement</item>
-		<item>HTMLInputElement</item>
-		<item>HTMLKeygenElement</item>
-		<item>HTMLLIElement</item>
-		<item>HTMLLabelElement</item>
-		<item>HTMLLegendElement</item>
-		<item>HTMLLinkElement</item>
-		<item>HTMLMapElement</item>
-		<item>HTMLMediaElement</item>
-		<item>HTMLMetaElement</item>
-		<item>HTMLMeterElement</item>
-		<item>HTMLModElement</item>
-		<item>HTMLOListElement</item>
-		<item>HTMLObjectElement</item>
-		<item>HTMLOptGroupElement</item>
-		<item>HTMLOptionElement</item>
-		<item>HTMLOptionsCollection</item>
-		<item>HTMLOutputElement</item>
-		<item>HTMLParagraphElement</item>
-		<item>HTMLParamElement</item>
-		<item>HTMLPreElement</item>
-		<item>HTMLProgressElement</item>
-		<item>HTMLQuoteElement</item>
-		<item>HTMLScriptElement</item>
-		<item>HTMLSelectElement</item>
-		<item>HTMLShadowElement</item>
-		<item>HTMLSourceElement</item>
-		<item>HTMLSpanElement</item>
-		<item>HTMLStyleElement</item>
-		<item>HTMLTableCaptionElement</item>
-		<item>HTMLTableCellElement</item>
-		<item>HTMLTableColElement</item>
-		<item>HTMLTableDataCellElement</item>
-		<item>HTMLTableElement</item>
-		<item>HTMLTableHeaderCellElement</item>
-		<item>HTMLTableRowElement</item>
-		<item>HTMLTableSectionElement</item>
-		<item>HTMLTextAreaElement</item>
-		<item>HTMLTimeElement</item>
-		<item>HTMLTitleElement</item>
-		<item>HTMLTrackElement</item>
-		<item>HTMLUListElement</item>
-		<item>HTMLUnknownElement</item>
-		<item>HTMLVideoElement</item>
-		<item>HashChangeEvent</item>
-		<item>History</item>
-		<item>IDBCursor</item>
-		<item>IDBCursorWithValue</item>
-		<item>IDBDatabase</item>
-		<item>IDBEnvironment</item>
-		<item>IDBFactory</item>
-		<item>IDBIndex</item>
-		<item>IDBKeyRange</item>
-		<item>IDBMutableFile</item>
-		<item>IDBObjectStore</item>
-		<item>IDBOpenDBRequest</item>
-		<item>IDBRequest</item>
-		<item>IDBTransaction</item>
-		<item>IDBVersionChangeEvent</item>
-		<item>IIRFilterNode</item>
-		<item>IdentityManager</item>
-		<item>ImageBitmap</item>
-		<item>ImageBitmapFactories</item>
-		<item>ImageData</item>
-		<item>Index</item>
-		<item>InputDeviceCapabilities</item>
-		<item>InputEvent</item>
-		<item>InstallEvent</item>
-		<item>InstallTrigger</item>
-		<item>KeyboardEvent</item>
-		<item>LinkStyle</item>
-		<item>LocalFileSystem</item>
-		<item>LocalFileSystemSync</item>
-		<item>Location</item>
-		<item>MIDIAccess</item>
-		<item>MIDIConnectionEvent</item>
-		<item>MIDIInput</item>
-		<item>MIDIInputMap</item>
-		<item>MIDIOutputMap</item>
-		<item>MediaElementAudioSourceNode</item>
-		<item>MediaError</item>
-		<item>MediaKeyMessageEvent</item>
-		<item>MediaKeySession</item>
-		<item>MediaKeyStatusMap</item>
-		<item>MediaKeySystemAccess</item>
-		<item>MediaKeySystemConfiguration</item>
-		<item>MediaKeys</item>
-		<item>MediaRecorder</item>
-		<item>MediaStream</item>
-		<item>MediaStreamAudioDestinationNode</item>
-		<item>MediaStreamAudioSourceNode</item>
-		<item>MessageChannel</item>
-		<item>MessageEvent</item>
-		<item>MessagePort</item>
-		<item>MouseEvent</item>
-		<item>MutationObserver</item>
-		<item>MutationRecord</item>
-		<item>NamedNodeMap</item>
-		<item>Navigator</item>
-		<item>NavigatorConcurrentHardware</item>
-		<item>NavigatorGeolocation</item>
-		<item>NavigatorID</item>
-		<item>NavigatorLanguage</item>
-		<item>NavigatorOnLine</item>
-		<item>Node</item>
-		<item>NodeFilter</item>
-		<item>NodeIterator</item>
-		<item>NodeList</item>
-		<item>NonDocumentTypeChildNode</item>
-		<item>Notification</item>
-		<item>OfflineAudioCompletionEvent</item>
-		<item>OfflineAudioContext</item>
-		<item>OscillatorNode</item>
-		<item>PageTransitionEvent</item>
-		<item>PannerNode</item>
-		<item>ParentNode</item>
-		<item>PasswordCredential</item>
-		<item>Path2D</item>
-		<item>PaymentAddress</item>
-		<item>PaymentRequest</item>
-		<item>PaymentResponse</item>
-		<item>Performance</item>
-		<item>PerformanceEntry</item>
-		<item>PerformanceFrameTiming</item>
-		<item>PerformanceMark</item>
-		<item>PerformanceMeasure</item>
-		<item>PerformanceNavigation</item>
-		<item>PerformanceNavigationTiming</item>
-		<item>PerformanceObserver</item>
-		<item>PerformanceObserverEntryList</item>
-		<item>PerformanceResourceTiming</item>
-		<item>PerformanceTiming</item>
-		<item>PeriodicSyncEvent</item>
-		<item>PeriodicWave</item>
-		<item>Plugin</item>
-		<item>Point</item>
-		<item>PointerEvent</item>
-		<item>PopStateEvent</item>
-		<item>PortCollection</item>
-		<item>Position</item>
-		<item>PositionError</item>
-		<item>PositionOptions</item>
-		<item>PresentationConnectionClosedEvent</item>
-		<item>PresentationConnectionList</item>
-		<item>PresentationReceiver</item>
-		<item>ProcessingInstruction</item>
-		<item>ProgressEvent</item>
-		<item>PromiseRejectionEvent</item>
-		<item>PushEvent</item>
-		<item>PushRegistrationManager</item>
-		<item>RTCCertificate</item>
-		<item>RTCConfiguration</item>
-		<item>RTCPeerConnection</item>
-		<item>RTCSessionDescriptionCallback</item>
-		<item>RTCStatsReport</item>
-		<item>RadioNodeList</item>
-		<item>RandomSource</item>
-		<item>Range</item>
-		<item>ReadableByteStream</item>
-		<item>RenderingContext</item>
-		<item>SVGAElement</item>
-		<item>SVGAngle</item>
-		<item>SVGAnimateColorElement</item>
-		<item>SVGAnimateElement</item>
-		<item>SVGAnimateMotionElement</item>
-		<item>SVGAnimateTransformElement</item>
-		<item>SVGAnimatedAngle</item>
-		<item>SVGAnimatedBoolean</item>
-		<item>SVGAnimatedEnumeration</item>
-		<item>SVGAnimatedInteger</item>
-		<item>SVGAnimatedLength</item>
-		<item>SVGAnimatedLengthList</item>
-		<item>SVGAnimatedNumber</item>
-		<item>SVGAnimatedNumberList</item>
-		<item>SVGAnimatedPoints</item>
-		<item>SVGAnimatedPreserveAspectRatio</item>
-		<item>SVGAnimatedRect</item>
-		<item>SVGAnimatedString</item>
-		<item>SVGAnimatedTransformList</item>
-		<item>SVGAnimationElement</item>
-		<item>SVGCircleElement</item>
-		<item>SVGClipPathElement</item>
-		<item>SVGCursorElement</item>
-		<item>SVGDefsElement</item>
-		<item>SVGDescElement</item>
-		<item>SVGElement</item>
-		<item>SVGEllipseElement</item>
-		<item>SVGEvent</item>
-		<item>SVGFilterElement</item>
-		<item>SVGFontElement</item>
-		<item>SVGFontFaceElement</item>
-		<item>SVGFontFaceFormatElement</item>
-		<item>SVGFontFaceNameElement</item>
-		<item>SVGFontFaceSrcElement</item>
-		<item>SVGFontFaceUriElement</item>
-		<item>SVGForeignObjectElement</item>
-		<item>SVGGElement</item>
-		<item>SVGGlyphElement</item>
-		<item>SVGGradientElement</item>
-		<item>SVGHKernElement</item>
-		<item>SVGImageElement</item>
-		<item>SVGLength</item>
-		<item>SVGLengthList</item>
-		<item>SVGLineElement</item>
-		<item>SVGLinearGradientElement</item>
-		<item>SVGMPathElement</item>
-		<item>SVGMaskElement</item>
-		<item>SVGMatrix</item>
-		<item>SVGMissingGlyphElement</item>
-		<item>SVGNumber</item>
-		<item>SVGNumberList</item>
-		<item>SVGPathElement</item>
-		<item>SVGPatternElement</item>
-		<item>SVGPoint</item>
-		<item>SVGPolygonElement</item>
-		<item>SVGPolylineElement</item>
-		<item>SVGPreserveAspectRatio</item>
-		<item>SVGRadialGradientElement</item>
-		<item>SVGRect</item>
-		<item>SVGRectElement</item>
-		<item>SVGSVGElement</item>
-		<item>SVGScriptElement</item>
-		<item>SVGSetElement</item>
-		<item>SVGStopElement</item>
-		<item>SVGStringList</item>
-		<item>SVGStylable</item>
-		<item>SVGStyleElement</item>
-		<item>SVGSwitchElement</item>
-		<item>SVGSymbolElement</item>
-		<item>SVGTRefElement</item>
-		<item>SVGTSpanElement</item>
-		<item>SVGTests</item>
-		<item>SVGTextElement</item>
-		<item>SVGTextPositioningElement</item>
-		<item>SVGTitleElement</item>
-		<item>SVGTransform</item>
-		<item>SVGTransformList</item>
-		<item>SVGTransformable</item>
-		<item>SVGUseElement</item>
-		<item>SVGVKernElement</item>
-		<item>SVGViewElement</item>
-		<item>ServiceWorker</item>
-		<item>ServiceWorkerContainer</item>
-		<item>ServiceWorkerGlobalScope</item>
-		<item>ServiceWorkerRegistration</item>
-		<item>ServiceWorkerState</item>
-		<item>ShadowRoot</item>
-		<item>SharedWorker</item>
-		<item>SharedWorkerGlobalScope</item>
-		<item>SourceBufferList</item>
-		<item>StereoPannerNode</item>
-		<item>Storage</item>
-		<item>StorageEvent</item>
-		<item>StyleSheet</item>
-		<item>StyleSheetList</item>
-		<item>SubtleCrypto</item>
-		<item>SyncEvent</item>
-		<item>Text</item>
-		<item>TextMetrics</item>
-		<item>TimeEvent</item>
-		<item>TimeRanges</item>
-		<item>Touch</item>
-		<item>TouchEvent</item>
-		<item>TouchList</item>
-		<item>Transferable</item>
-		<item>TreeWalker</item>
-		<item>UIEvent</item>
-		<item>USVString</item>
-		<item>VRDisplayCapabilities</item>
-		<item>ValidityState</item>
-		<item>WaveShaperNode</item>
-		<item>WebGL</item>
-		<item>WebGLActiveInfo</item>
-		<item>WebGLBuffer</item>
-		<item>WebGLContextEvent</item>
-		<item>WebGLFramebuffer</item>
-		<item>WebGLProgram</item>
-		<item>WebGLRenderbuffer</item>
-		<item>WebGLRenderingContext</item>
-		<item>WebGLShader</item>
-		<item>WebGLShaderPrecisionFormat</item>
-		<item>WebGLTexture</item>
-		<item>WebGLTimerQueryEXT</item>
-		<item>WebGLTransformFeedback</item>
-		<item>WebGLUniformLocation</item>
-		<item>WebGLVertexArrayObject</item>
-		<item>WebGLVertexArrayObjectOES</item>
-		<item>WebSocket</item>
-		<item>WebSockets</item>
-		<item>WebVTT</item>
-		<item>WheelEvent</item>
-		<item>Window</item>
-		<item>WindowBase64</item>
-		<item>WindowEventHandlers</item>
-		<item>WindowTimers</item>
-		<item>Worker</item>
-		<item>WorkerGlobalScope</item>
-		<item>WorkerLocation</item>
-		<item>WorkerNavigator</item>
-		<item>XMLHttpRequest</item>
-		<item>XMLHttpRequestEventTarget</item>
-		<item>XMLSerializer</item>
-		<item>XPathExpression</item>
-		<item>XPathResult</item>
-		<item>XSLTProcessor</item>
-	</list>
-	<!-- Node.js Classes -->
-	<list name="class_node">
-		<item>Buffer</item>
-		<item>EventEmitter</item>
-		<item>Server</item>
-		<item>Pipe</item>
-		<item>Socket</item>
-		<item>REPLServer</item>
-		<item>ReadStream</item>
-		<item>WriteStream</item>
-		<item>Stream</item>
-		<item>Inflate</item>
-		<item>Deflate</item>
-		<item>InflateRaw</item>
-		<item>DeflateRaw</item>
-		<item>GZip</item>
-		<item>GUnzip</item>
-		<item>Unzip</item>
-		<item>Zip</item>
-	</list>
-	<!-- General Properties of Classes -->
-	<list name="variable_property">
-		<item>constructor</item>
-		<item>length</item>
-		<item>prototype</item>
-		<item>__proto__</item>
-		<item>EPSILON</item>
-		<item>MAX_SAFE_INTEGER</item>
-		<item>MAX_VALUE</item>
-		<item>MIN_SAFE_INTEGER</item>
-		<item>MIN_VALUE</item>
-		<item>NEGATIVE_INFINITY</item>
-		<item>POSITIVE_INFINITY</item>
-	</list>
-	<!-- General Built-in Functions -->
-	<list name="functions">
-		<item>clearInterval</item>
-		<item>clearTimeout</item>
-		<item>decodeURI</item>
-		<item>decodeURIComponent</item>
-		<item>encodeURI</item>
-		<item>encodeURIComponent</item>
-		<item>escape</item>
-		<item>eval</item>
-		<item>isFinite</item>
-		<item>isNaN</item>
-		<item>parseFloat</item>
-		<item>parseInt</item>
-		<item>require</item>
-		<item>setTimeout</item>
-		<item>setInterval</item>
-		<item>super</item>
-		<item>unescape</item>
-		<item>uneval</item>
-	</list>
-	<!-- Methods of Math Class -->
-	<list name="math_functions">
-		<item>abs</item>
-		<item>acos</item>
-		<item>acosh</item>
-		<item>asin</item>
-		<item>asinh</item>
-		<item>atan</item>
-		<item>atan2</item>
-		<item>atanh</item>
-		<item>cbrt</item>
-		<item>ceil</item>
-		<item>clz32</item>
-		<item>cos</item>
-		<item>cosh</item>
-		<item>exp</item>
-		<item>expm1</item>
-		<item>floor</item>
-		<item>fround</item>
-		<item>hypot</item>
-		<item>imul</item>
-		<item>log</item>
-		<item>log10</item>
-		<item>log1p</item>
-		<item>log2</item>
-		<item>max</item>
-		<item>min</item>
-		<item>pow</item>
-		<item>random</item>
-		<item>round</item>
-		<item>sign</item>
-		<item>sin</item>
-		<item>sinh</item>
-		<item>sqrt</item>
-		<item>tan</item>
-		<item>tanh</item>
-		<item>trunc</item>
-	</list>
-	<!-- Constants of Math Class-->
-	<list name="math_property_constants">
-		<item>E</item>
-		<item>LN10</item>
-		<item>LN2</item>
-		<item>LOG10E</item>
-		<item>LOG2E</item>
-		<item>PI</item>
-		<item>SQRT1_2</item>
-		<item>SQRT2</item>
-	</list>
-	<!-- Functions of "console" -->
-	<list name="console_functions">
-		<item>assert</item>
-		<item>clear</item>
-		<item>count</item>
-		<item>debug</item>
-		<item>dir</item>
-		<item>error</item>
-		<item>group</item>
-		<item>groupCollapsed</item>
-		<item>groupEnd</item>
-		<item>info</item>
-		<item>log</item>
-		<item>profile</item>
-		<item>profileEnd</item>
-		<item>table</item>
-		<item>time</item>
-		<item>timeEnd</item>
-		<item>timeStamp</item>
-		<item>trace</item>
-		<item>warn</item>
-	</list>
-	<!-- Methods of JSON Class -->
-	<list name="json_functions">
-		<item>parse</item>
-		<item>stringify</item>
-	</list>
-	<!-- Attributes of Node.js Classes -->
-	<list name="node_object">
-		<item>global</item>
-		<item>GLOBAL</item>
-		<item>root</item>
-		<item>__dirname</item>
-		<item>__filename</item>
-	</list>
-	<!-- Properties of "process" -->
-	<list name="process_property">
-		<item>arch</item>
-		<item>argv</item>
-		<item>config</item>
-		<item>connected</item>
-		<item>env</item>
-		<item>execArgv</item>
-		<item>execPath</item>
-		<item>exitCode</item>
-		<item>mainModule</item>
-		<item>pid</item>
-		<item>platform</item>
-		<item>release</item>
-		<item>stderr</item>
-		<item>stdin</item>
-		<item>stdout</item>
-		<item>title</item>
-		<item>version</item>
-		<item>versions</item>
-	</list>
-	<!-- Functions of "process" -->
-	<list name="process_functions">
-		<item>abort</item>
-		<item>chdir</item>
-		<item>cwd</item>
-		<item>disconnect</item>
-		<item>exit</item>
-		<item>setegid</item>
-		<item>seteuid</item>
-		<item>getegid</item>
-		<item>geteuid</item>
-		<item>setgid</item>
-		<item>setuid</item>
-		<item>getgid</item>
-		<item>getuid</item>
-		<item>send</item>
-		<item>setgroups</item>
-		<item>getgroups</item>
-		<item>initgroups</item>
-		<item>kill</item>
-		<item>memoryUsage</item>
-		<item>nextTick</item>
-		<item>umask</item>
-		<item>uptime</item>
-		<item>hrtime</item>
-	</list>
-	<!-- Methods of Promise Class -->
-	<list name="promise_functions">
-		<item>all</item>
-		<item>catch</item>
-		<item>finally</item>
-		<item>race</item>
-		<item>reject</item>
-		<item>resolve</item>
-		<item>then</item>
-	</list>
-	<!-- DOM Variables -->
-	<list name="dom_variable">
-		<item>document</item>
-		<item>event</item>
-		<item>navigator</item>
-		<item>performance</item>
-		<item>screen</item>
-		<item>window</item>
-	</list>
-	<!-- Constants of DOM Classes -->
-	<list name="dom_constant">
-		<item>ATTRIBUTE_NODE</item>
-		<item>CDATA_SECTION_NODE</item>
-		<item>COMMENT_NODE</item>
-		<item>DOCUMENT_FRAGMENT_NODE</item>
-		<item>DOCUMENT_NODE</item>
-		<item>DOCUMENT_TYPE_NODE</item>
-		<item>DOMSTRING_SIZE_ERR</item>
-		<item>ELEMENT_NODE</item>
-		<item>ENTITY_NODE</item>
-		<item>ENTITY_REFERENCE_NODE</item>
-		<item>HIERARCHY_REQUEST_ERR</item>
-		<item>INDEX_SIZE_ERR</item>
-		<item>INUSE_ATTRIBUTE_ERR</item>
-		<item>INVALID_CHARACTER_ERR</item>
-		<item>NO_DATA_ALLOWED_ERR</item>
-		<item>NO_MODIFICATION_ALLOWED_ERR</item>
-		<item>NOT_FOUND_ERR</item>
-		<item>NOT_SUPPORTED_ERR</item>
-		<item>NOTATION_NODE</item>
-		<item>PROCESSING_INSTRUCTION_NODE</item>
-		<item>TEXT_NODE</item>
-		<item>WRONG_DOCUMENT_ERR</item>
-	</list>
-	<!-- Properties of DOM Classes -->
-	<list name="dom_property">
-		<item>_content</item>
-		<item>x</item>
-		<item>y</item>
-		<item>z</item>
-		<item>abbr</item>
-		<item>above</item>
-		<item>accept</item>
-		<item>acceptCharset</item>
-		<item>accessKey</item>
-		<item>action</item>
-		<item>align</item>
-		<item>aLink</item>
-		<item>vLink</item>
-		<item>aLinkcolor</item>
-		<item>vLinkcolor</item>
-		<item>all</item>
-		<item>alt</item>
-		<item>anchors</item>
-		<item>appCodeName</item>
-		<item>appCore</item>
-		<item>applets</item>
-		<item>appMinorVersion</item>
-		<item>appName</item>
-		<item>appVersion</item>
-		<item>archive</item>
-		<item>areas</item>
-		<item>arguments</item>
-		<item>attributes</item>
-		<item>availHeight</item>
-		<item>availLeft</item>
-		<item>availTop</item>
-		<item>availWidth</item>
-		<item>axis</item>
-		<item>background</item>
-		<item>backgroundColor</item>
-		<item>backgroundImage</item>
-		<item>below</item>
-		<item>bgColor</item>
-		<item>body</item>
-		<item>border</item>
-		<item>borderBottomWidth</item>
-		<item>borderColor</item>
-		<item>borderLeftWidth</item>
-		<item>borderRightWidth</item>
-		<item>borderStyle</item>
-		<item>borderTopWidth</item>
-		<item>borderWidth</item>
-		<item>bottom</item>
-		<item>bufferDepth</item>
-		<item>callee</item>
-		<item>caller</item>
-		<item>caption</item>
-		<item>cellPadding</item>
-		<item>cells</item>
-		<item>cellSpacing</item>
-		<item>ch</item>
-		<item>characterSet</item>
-		<item>charset</item>
-		<item>checked</item>
-		<item>childNodes</item>
-		<item>chOff</item>
-		<item>cite</item>
-		<item>classes</item>
-		<item>className</item>
-		<item>clear</item>
-		<item>clientInformation</item>
-		<item>clip</item>
-		<item>clipBoardData</item>
-		<item>closed</item>
-		<item>code</item>
-		<item>codeBase</item>
-		<item>codeType</item>
-		<item>color</item>
-		<item>colorDepth</item>
-		<item>cols</item>
-		<item>colSpan</item>
-		<item>compact</item>
-		<item>complete</item>
-		<item>components</item>
-		<item>content</item>
-		<item>controllers</item>
-		<item>cookie</item>
-		<item>cookieEnabled</item>
-		<item>cords</item>
-		<item>cpuClass</item>
-		<item>crypto</item>
-		<item>current</item>
-		<item>data</item>
-		<item>dateTime</item>
-		<item>declare</item>
-		<item>defaultCharset</item>
-		<item>defaultChecked</item>
-		<item>defaultSelected</item>
-		<item>defaultStatus</item>
-		<item>defaultValue</item>
-		<item>defaultView</item>
-		<item>defer</item>
-		<item>description</item>
-		<item>dialogArguments</item>
-		<item>dialogHeight</item>
-		<item>dialogLeft</item>
-		<item>dialogTop</item>
-		<item>dialogWidth</item>
-		<item>dir</item>
-		<item>directories</item>
-		<item>disabled</item>
-		<item>display</item>
-		<item>docmain</item>
-		<item>doctype</item>
-		<item>documentElement</item>
-		<item>elements</item>
-		<item>embeds</item>
-		<item>enabledPlugin</item>
-		<item>encoding</item>
-		<item>enctype</item>
-		<item>entities</item>
-		<item>event</item>
-		<item>expando</item>
-		<item>external</item>
-		<item>face</item>
-		<item>fgColor</item>
-		<item>filename</item>
-		<item>firstChild</item>
-		<item>fontFamily</item>
-		<item>fontSize</item>
-		<item>fontWeight</item>
-		<item>form</item>
-		<item>formName</item>
-		<item>forms</item>
-		<item>frame</item>
-		<item>frameBorder</item>
-		<item>frameElement</item>
-		<item>frames</item>
-		<item>hasFocus</item>
-		<item>hash</item>
-		<item>headers</item>
-		<item>height</item>
-		<item>history</item>
-		<item>host</item>
-		<item>hostname</item>
-		<item>href</item>
-		<item>hreflang</item>
-		<item>hspace</item>
-		<item>htmlFor</item>
-		<item>httpEquiv</item>
-		<item>id</item>
-		<item>ids</item>
-		<item>ignoreCase</item>
-		<item>images</item>
-		<item>implementation</item>
-		<item>index</item>
-		<item>innerHeight</item>
-		<item>innerWidth</item>
-		<item>input</item>
-		<item>isMap</item>
-		<item>label</item>
-		<item>lang</item>
-		<item>language</item>
-		<item>lastChild</item>
-		<item>lastIndex</item>
-		<item>lastMatch</item>
-		<item>lastModified</item>
-		<item>lastParen</item>
-		<item>layers</item>
-		<item>layerX</item>
-		<item>layerY</item>
-		<item>left</item>
-		<item>leftContext</item>
-		<item>lineHeight</item>
-		<item>link</item>
-		<item>linkColor</item>
-		<item>links</item>
-		<item>listStyleType</item>
-		<item>localName</item>
-		<item>location</item>
-		<item>locationbar</item>
-		<item>longDesc</item>
-		<item>lowsrc</item>
-		<item>lowSrc</item>
-		<item>marginBottom</item>
-		<item>marginHeight</item>
-		<item>marginLeft</item>
-		<item>marginRight</item>
-		<item>marginTop</item>
-		<item>marginWidth</item>
-		<item>maxLength</item>
-		<item>media</item>
-		<item>menubar</item>
-		<item>method</item>
-		<item>mimeTypes</item>
-		<item>multiline</item>
-		<item>multiple</item>
-		<item>name</item>
-		<item>nameProp</item>
-		<item>namespaces</item>
-		<item>namespaceURI</item>
-		<item>next</item>
-		<item>nextSibling</item>
-		<item>nodeName</item>
-		<item>nodeType</item>
-		<item>nodeValue</item>
-		<item>noHref</item>
-		<item>noResize</item>
-		<item>noShade</item>
-		<item>notationName</item>
-		<item>notations</item>
-		<item>noWrap</item>
-		<item>object</item>
-		<item>offscreenBuffering</item>
-		<item>onLine</item>
-		<item>onreadystatechange</item>
-		<item>opener</item>
-		<item>opsProfile</item>
-		<item>options</item>
-		<item>oscpu</item>
-		<item>outerHeight</item>
-		<item>outerWidth</item>
-		<item>ownerDocument</item>
-		<item>paddingBottom</item>
-		<item>paddingLeft</item>
-		<item>paddingRight</item>
-		<item>paddingTop</item>
-		<item>pageX</item>
-		<item>pageY</item>
-		<item>pageXOffset</item>
-		<item>pageYOffset</item>
-		<item>parent</item>
-		<item>parentLayer</item>
-		<item>parentNode</item>
-		<item>parentWindow</item>
-		<item>pathname</item>
-		<item>personalbar</item>
-		<item>pixelDepth</item>
-		<item>pkcs11</item>
-		<item>platform</item>
-		<item>plugins</item>
-		<item>port</item>
-		<item>prefix</item>
-		<item>previous</item>
-		<item>previousDibling</item>
-		<item>product</item>
-		<item>productSub</item>
-		<item>profile</item>
-		<item>profileend</item>
-		<item>prompt</item>
-		<item>prompter</item>
-		<item>protocol</item>
-		<item>publicId</item>
-		<item>readOnly</item>
-		<item>readyState</item>
-		<item>referrer</item>
-		<item>rel</item>
-		<item>responseText</item>
-		<item>responseXML</item>
-		<item>rev</item>
-		<item>right</item>
-		<item>rightContext</item>
-		<item>rowIndex</item>
-		<item>rows</item>
-		<item>rowSpan</item>
-		<item>rules</item>
-		<item>scheme</item>
-		<item>scope</item>
-		<item>screenX</item>
-		<item>screenY</item>
-		<item>screenLeft</item>
-		<item>screenTop</item>
-		<item>scripts</item>
-		<item>scrollbars</item>
-		<item>scrolling</item>
-		<item>sectionRowIndex</item>
-		<item>security</item>
-		<item>securityPolicy</item>
-		<item>selected</item>
-		<item>selectedIndex</item>
-		<item>selection</item>
-		<item>self</item>
-		<item>shape</item>
-		<item>siblingAbove</item>
-		<item>siblingBelow</item>
-		<item>size</item>
-		<item>source</item>
-		<item>specified</item>
-		<item>standby</item>
-		<item>start</item>
-		<item>status</item>
-		<item>statusbar</item>
-		<item>statusText</item>
-		<item>style</item>
-		<item>styleSheets</item>
-		<item>suffixes</item>
-		<item>summary</item>
-		<item>systemId</item>
-		<item>systemLanguage</item>
-		<item>tagName</item>
-		<item>tags</item>
-		<item>target</item>
-		<item>tBodies</item>
-		<item>text</item>
-		<item>textAlign</item>
-		<item>textDecoration</item>
-		<item>textIndent</item>
-		<item>textTransform</item>
-		<item>tFoot</item>
-		<item>tHead</item>
-		<item>title</item>
-		<item>toolbar</item>
-		<item>top</item>
-		<item>type</item>
-		<item>undefined</item>
-		<item>uniqueID</item>
-		<item>updateInterval</item>
-		<item>URL</item>
-		<item>URLUnencoded</item>
-		<item>useMap</item>
-		<item>userAgent</item>
-		<item>userLanguage</item>
-		<item>userProfile</item>
-		<item>vAlign</item>
-		<item>value</item>
-		<item>valueType</item>
-		<item>vendor</item>
-		<item>vendorSub</item>
-		<item>version</item>
-		<item>visibility</item>
-		<item>vspace</item>
-		<item>whiteSpace</item>
-		<item>width</item>
-		<item>XMLDocument</item>
-		<item>XSLDocument</item>
-		<item>zIndex</item>
-	</list>
-	<!-- Methods of DOM Classes -->
-	<list name="dom_functions">
-		<item>acceptNode</item>
-		<item>add</item>
-		<item>addEventListener</item>
-		<item>addTextTrack</item>
-		<item>adoptNode</item>
-		<item>after</item>
-		<item>animate</item>
-		<item>append</item>
-		<item>appendChild</item>
-		<item>appendData</item>
-		<item>before</item>
-		<item>blur</item>
-		<item>canPlayType</item>
-		<item>captureStream</item>
-		<item>caretPositionFromPoint</item>
-		<item>caretRangeFromPoint</item>
-		<item>checkValidity</item>
-		<item>clear</item>
-		<item>click</item>
-		<item>cloneContents</item>
-		<item>cloneNode</item>
-		<item>cloneRange</item>
-		<item>close</item>
-		<item>closest</item>
-		<item>collapse</item>
-		<item>compareBoundaryPoints</item>
-		<item>compareDocumentPosition</item>
-		<item>comparePoint</item>
-		<item>contains</item>
-		<item>convertPointFromNode</item>
-		<item>convertQuadFromNode</item>
-		<item>convertRectFromNode</item>
-		<item>createAttribute</item>
-		<item>createAttributeNS</item>
-		<item>createCaption</item>
-		<item>createCDATASection</item>
-		<item>createComment</item>
-		<item>createContextualFragment</item>
-		<item>createDocument</item>
-		<item>createDocumentFragment</item>
-		<item>createDocumentType</item>
-		<item>createElement</item>
-		<item>createElementNS</item>
-		<item>createEntityReference</item>
-		<item>createEvent</item>
-		<item>createExpression</item>
-		<item>createHTMLDocument</item>
-		<item>createNodeIterator</item>
-		<item>createNSResolver</item>
-		<item>createProcessingInstruction</item>
-		<item>createRange</item>
-		<item>createShadowRoot</item>
-		<item>createTBody</item>
-		<item>createTextNode</item>
-		<item>createTFoot</item>
-		<item>createTHead</item>
-		<item>createTreeWalker</item>
-		<item>delete</item>
-		<item>deleteCaption</item>
-		<item>deleteCell</item>
-		<item>deleteContents</item>
-		<item>deleteData</item>
-		<item>deleteRow</item>
-		<item>deleteTFoot</item>
-		<item>deleteTHead</item>
-		<item>detach</item>
-		<item>disconnect</item>
-		<item>dispatchEvent</item>
-		<item>elementFromPoint</item>
-		<item>elementsFromPoint</item>
-		<item>enableStyleSheetsForSet</item>
-		<item>entries</item>
-		<item>evaluate</item>
-		<item>execCommand</item>
-		<item>exitFullscreen</item>
-		<item>exitPointerLock</item>
-		<item>expand</item>
-		<item>extractContents</item>
-		<item>fastSeek</item>
-		<item>firstChild</item>
-		<item>focus</item>
-		<item>forEach</item>
-		<item>get</item>
-		<item>getAll</item>
-		<item>getAnimations</item>
-		<item>getAttribute</item>
-		<item>getAttributeNames</item>
-		<item>getAttributeNode</item>
-		<item>getAttributeNodeNS</item>
-		<item>getAttributeNS</item>
-		<item>getBoundingClientRect</item>
-		<item>getBoxQuads</item>
-		<item>getClientRects</item>
-		<item>getContext</item>
-		<item>getDestinationInsertionPoints</item>
-		<item>getElementById</item>
-		<item>getElementsByClassName</item>
-		<item>getElementsByName</item>
-		<item>getElementsByTagName</item>
-		<item>getElementsByTagNameNS</item>
-		<item>getItem</item>
-		<item>getNamedItem</item>
-		<item>getSelection</item>
-		<item>getStartDate</item>
-		<item>getVideoPlaybackQuality</item>
-		<item>has</item>
-		<item>hasAttribute</item>
-		<item>hasAttributeNS</item>
-		<item>hasAttributes</item>
-		<item>hasChildNodes</item>
-		<item>hasFeature</item>
-		<item>hasFocus</item>
-		<item>importNode</item>
-		<item>initEvent</item>
-		<item>insertAdjacentElement</item>
-		<item>insertAdjacentHTML</item>
-		<item>insertAdjacentText</item>
-		<item>insertBefore</item>
-		<item>insertCell</item>
-		<item>insertData</item>
-		<item>insertNode</item>
-		<item>insertRow</item>
-		<item>intersectsNode</item>
-		<item>isDefaultNamespace</item>
-		<item>isEqualNode</item>
-		<item>isPointInRange</item>
-		<item>isSameNode</item>
-		<item>item</item>
-		<item>key</item>
-		<item>keys</item>
-		<item>lastChild</item>
-		<item>load</item>
-		<item>lookupNamespaceURI</item>
-		<item>lookupPrefix</item>
-		<item>matches</item>
-		<item>move</item>
-		<item>moveAttribute</item>
-		<item>moveAttributeNode</item>
-		<item>moveChild</item>
-		<item>moveNamedItem</item>
-		<item>namedItem</item>
-		<item>nextNode</item>
-		<item>nextSibling</item>
-		<item>normalize</item>
-		<item>observe</item>
-		<item>open</item>
-		<item>parentNode</item>
-		<item>pause</item>
-		<item>play</item>
-		<item>postMessage</item>
-		<item>prepend</item>
-		<item>preventDefault</item>
-		<item>previousNode</item>
-		<item>previousSibling</item>
-		<item>probablySupportsContext</item>
-		<item>queryCommandEnabled</item>
-		<item>queryCommandIndeterm</item>
-		<item>queryCommandState</item>
-		<item>queryCommandSupported</item>
-		<item>queryCommandValue</item>
-		<item>querySelector</item>
-		<item>querySelectorAll</item>
-		<item>registerContentHandler</item>
-		<item>registerElement</item>
-		<item>registerProtocolHandler</item>
-		<item>releaseCapture</item>
-		<item>releaseEvents</item>
-		<item>remove</item>
-		<item>removeAttribute</item>
-		<item>removeAttributeNode</item>
-		<item>removeAttributeNS</item>
-		<item>removeChild</item>
-		<item>removeEventListener</item>
-		<item>removeItem</item>
-		<item>replace</item>
-		<item>replaceChild</item>
-		<item>replaceData</item>
-		<item>replaceWith</item>
-		<item>reportValidity</item>
-		<item>requestFullscreen</item>
-		<item>requestPointerLock</item>
-		<item>reset</item>
-		<item>scroll</item>
-		<item>scrollBy</item>
-		<item>scrollIntoView</item>
-		<item>scrollTo</item>
-		<item>seekToNextFrame</item>
-		<item>select</item>
-		<item>selectNode</item>
-		<item>selectNodeContents</item>
-		<item>set</item>
-		<item>setAttribute</item>
-		<item>setAttributeNode</item>
-		<item>setAttributeNodeNS</item>
-		<item>setAttributeNS</item>
-		<item>setCapture</item>
-		<item>setCustomValidity</item>
-		<item>setEnd</item>
-		<item>setEndAfter</item>
-		<item>setEndBefore</item>
-		<item>setItem</item>
-		<item>setNamedItem</item>
-		<item>setRangeText</item>
-		<item>setSelectionRange</item>
-		<item>setSinkId</item>
-		<item>setStart</item>
-		<item>setStartAfter</item>
-		<item>setStartBefore</item>
-		<item>slice</item>
-		<item>splitText</item>
-		<item>stepDown</item>
-		<item>stepUp</item>
-		<item>stopImmediatePropagation</item>
-		<item>stopPropagation</item>
-		<item>submit</item>
-		<item>substringData</item>
-		<item>supports</item>
-		<item>surroundContents</item>
-		<item>takeRecords</item>
-		<item>terminate</item>
-		<item>toBlob</item>
-		<item>toDataURL</item>
-		<item>toggle</item>
-		<item>toString</item>
-		<item>values</item>
-		<item>write</item>
-		<item>writeln</item>
-	</list>
-
-	<!-- Event Handler Functions -->
-	<list name="function_eventhandler">
-		<item>onRowsinserted</item>
-		<item>onRowsdelete</item>
-		<item>onRowenter</item>
-		<item>onRowexit</item>
-		<item>onResize</item>
-		<item>onResizestart</item>
-		<item>onResizeend</item>
-		<item>onReset</item>
-		<item>onReadystatechange</item>
-		<item>onMouseout</item>
-		<item>onMouseover</item>
-		<item>onMousedown</item>
-		<item>onMouseup</item>
-		<item>onMousemove</item>
-		<item>onBeforecut</item>
-		<item>onBeforedeactivate</item>
-		<item>onBeforeunload</item>
-		<item>onBeforeupdate</item>
-		<item>onBeforepaste</item>
-		<item>onBeforeprint</item>
-		<item>onBeforeeditfocus</item>
-		<item>onBeforeactivate</item>
-		<item>onBlur</item>
-		<item>onScrolltop</item>
-		<item>onSubmit</item>
-		<item>onSelect</item>
-		<item>onSelectstart</item>
-		<item>onSelectionchange</item>
-		<item>onHover</item>
-		<item>onHelp</item>
-		<item>onChange</item>
-		<item>onContextmenu</item>
-		<item>onControlselect</item>
-		<item>onCut</item>
-		<item>onCellchange</item>
-		<item>onClock</item>
-		<item>onClose</item>
-		<item>onDeactivate</item>
-		<item>onDatasetchanged</item>
-		<item>onDatasetcomplete</item>
-		<item>onDataavailable</item>
-		<item>onDrop</item>
-		<item>onDrag</item>
-		<item>onDragstart</item>
-		<item>onDragover</item>
-		<item>onDragdrop</item>
-		<item>onDragenter</item>
-		<item>onDragend</item>
-		<item>onDragleave</item>
-		<item>onDblclick</item>
-		<item>onUnload</item>
-		<item>onPaste</item>
-		<item>onPropertychange</item>
-		<item>onError</item>
-		<item>onErrorupdate</item>
-		<item>onKeydown</item>
-		<item>onKeyup</item>
-		<item>onKeypress</item>
-		<item>onFocus</item>
-		<item>onLoad</item>
-		<item>onActivate</item>
-		<item>onAfterupdate</item>
-		<item>onAfterprint</item>
-		<item>onAbort</item>
-	</list>
-	<!-- Others Methods of Classes -->
-	<list name="function_common">
-		<item>shift</item>
-		<item>showModelessDialog</item>
-		<item>showModalDialog</item>
-		<item>showHelp</item>
-		<item>scroll</item>
-		<item>scrollX</item>
-		<item>scrollByPages</item>
-		<item>scrollByLines</item>
-		<item>scrollY</item>
-		<item>scrollTo</item>
-		<item>stop</item>
-		<item>strike</item>
-		<item>sizeToContent</item>
-		<item>sidebar</item>
-		<item>signText</item>
-		<item>sort</item>
-		<item>sup</item>
-		<item>sub</item>
-		<item>substr</item>
-		<item>substring</item>
-		<item>splice</item>
-		<item>split</item>
-		<item>send</item>
-		<item>setMilliseconds</item>
-		<item>setSeconds</item>
-		<item>setMinutes</item>
-		<item>setHours</item>
-		<item>setMonth</item>
-		<item>setYear</item>
-		<item>setFullYear</item>
-		<item>setDate</item>
-		<item>setUTCMilliseconds</item>
-		<item>setUTCSeconds</item>
-		<item>setUTCMinutes</item>
-		<item>setUTCHours</item>
-		<item>setUTCMonth</item>
-		<item>setUTCFullYear</item>
-		<item>setUTCDate</item>
-		<item>setTime</item>
-		<item>setHotkeys</item>
-		<item>setCursor</item>
-		<item>setZOptions</item>
-		<item>setActive</item>
-		<item>setResizable</item>
-		<item>setRequestHeader</item>
-		<item>search</item>
-		<item>slice</item>
-		<item>savePreferences</item>
-		<item>small</item>
-		<item>home</item>
-		<item>handleEvent</item>
-		<item>navigate</item>
-		<item>char</item>
-		<item>charCodeAt</item>
-		<item>charAt</item>
-		<item>concat</item>
-		<item>contextual</item>
-		<item>confirm</item>
-		<item>compile</item>
-		<item>clear</item>
-		<item>captureEvents</item>
-		<item>call</item>
-		<item>createStyleSheet</item>
-		<item>createPopup</item>
-		<item>createEventObject</item>
-		<item>toGMTString</item>
-		<item>toUTCString</item>
-		<item>toString</item>
-		<item>toSource</item>
-		<item>toUpperCase</item>
-		<item>toLowerCase</item>
-		<item>toLocaleString</item>
-		<item>test</item>
-		<item>taint</item>
-		<item>taintEnabled</item>
-		<item>indexOf</item>
-		<item>italics</item>
-		<item>disableExternalCapture</item>
-		<item>dump</item>
-		<item>detachEvent</item>
-		<item>unshift</item>
-		<item>untaint</item>
-		<item>unwatch</item>
-		<item>updateCommands</item>
-		<item>join</item>
-		<item>javaEnabled</item>
-		<item>pop</item>
-		<item>push</item>
-		<item>plugins.refresh</item>
-		<item>paddings</item>
-		<item>parse</item>
-		<item>print</item>
-		<item>prompt</item>
-		<item>preference</item>
-		<item>enableExternalCapture</item>
-		<item>exec</item>
-		<item>execScript</item>
-		<item>valueOf</item>
-		<item>UTC</item>
-		<item>find</item>
-		<item>file</item>
-		<item>fileModifiedDate</item>
-		<item>fileSize</item>
-		<item>fileCreatedDate</item>
-		<item>fileUpdatedDate</item>
-		<item>fixed</item>
-		<item>fontsize</item>
-		<item>fontcolor</item>
-		<item>forward</item>
-		<item>fromCharCode</item>
-		<item>watch</item>
-		<item>link</item>
-		<item>load</item>
-		<item>lastIndexOf</item>
-		<item>anchor</item>
-		<item>attachEvent</item>
-		<item>atob</item>
-		<item>apply</item>
-		<item>alert</item>
-		<item>abort</item>
-		<item>routeEvents</item>
-		<item>resize</item>
-		<item>resizeBy</item>
-		<item>resizeTo</item>
-		<item>recalc</item>
-		<item>returnValue</item>
-		<item>replace</item>
-		<item>reverse</item>
-		<item>reload</item>
-		<item>releaseCapture</item>
-		<item>releaseEvents</item>
-		<item>go</item>
-		<item>getMilliseconds</item>
-		<item>getSeconds</item>
-		<item>getMinutes</item>
-		<item>getHours</item>
-		<item>getMonth</item>
-		<item>getDay</item>
-		<item>getYear</item>
-		<item>getFullYear</item>
-		<item>getTime</item>
-		<item>getDate</item>
-		<item>getTimezoneOffset</item>
-		<item>getUTCMilliseconds</item>
-		<item>getUTCSeconds</item>
-		<item>getUTCMinutes</item>
-		<item>getUTCHours</item>
-		<item>getUTCDay</item>
-		<item>getUTCMonth</item>
-		<item>getUTCFullYear</item>
-		<item>getUTCDate</item>
-		<item>getAttention</item>
-		<item>getSelection</item>
-		<item>getResponseHeader</item>
-		<item>getAllResponseHeaders</item>
-		<item>moveBy</item>
-		<item>moveBelow</item>
-		<item>moveTo</item>
-		<item>moveToAbsolute</item>
-		<item>moveAbove</item>
-		<item>mergeAttributes</item>
-		<item>match</item>
-		<item>margins</item>
-		<item>btoa</item>
-		<item>big</item>
-		<item>bold</item>
-		<item>borderWidths</item>
-		<item>blink</item>
-		<item>back</item>
-	</list>
-
-	<contexts>
-
-		<context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
-			<Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
-		</context>
-		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop!Normal" />
-
-		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-			<StringDetect context="#stay" attribute="Symbol" String="..." />
-			<IncludeRules context="FindNumbers" />
-			<IncludeRules context="FindStrings" />
-
-			<!-- Abstract -->
-			<RegExpr context="#stay" attribute="Reserved" String="\b(abstract)(?=\s+(class|interface)\b)" />
-			<!-- New -->
-			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=\s*[\?!]?\.\s*target\b)" />
-			<RegExpr context="MemberObject" attribute="Objects" String="\bnew(?=[\?!]?\.)" />
-			<WordDetect context="#stay" attribute="Keyword" String="new" />
-			<!-- Import -->
-			<WordDetect context="Import" attribute="Module" String="import" />
-			<!-- Export types -->
-			<keyword context="ControlExport" attribute="Module" String="control_export_types" />
-
-			<!-- Keywords -->
-			<keyword context="#stay" attribute="ControlFlow" String="controlflow" />
-			<RegExpr context="#stay" attribute="ControlFlow" String="\bdefault(?=\s*[\?!]?:)" />
-			<RegExpr context="#stay" String="&identifier;(?=\s*[\?!]?:)" />
-
-			<WordDetect context="TypeDeclaration" attribute="Reserved" String="type" />
-			<keyword context="#stay" attribute="Module" String="module" />
-			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
-			<keyword context="#stay" attribute="Reserved" String="reserved" />
-			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
-			<keyword context="#stay" attribute="Keyword" String="object_iden" />
-
-			<!-- Built-in Classes -->
-			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
-			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
-			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
-			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
-			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
-			<keyword context="#stay" attribute="Built-in Objects" String="class_builtin" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="class_dom" />
-			<keyword context="FindMemberObjectNode" attribute="Built-in Objects" String="class_node" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
-
-			<IncludeRules context="FindFunctionName" />
-			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=\s*[\?!]?\.)" />
-			<DetectChar context="MemberObject" char="." />
-
-			<keyword context="#stay" attribute="Function Name" String="functions" />
-
-			<DetectChar context="Object" attribute="Symbol" char="{" beginRegion="Brace" />
-			<DetectChar context="#stay" attribute="Symbol" char="[" beginRegion="List" />
-			<DetectChar context="#stay" attribute="Symbol" char="]" endRegion="List" />
-			<DetectChar context="#stay" attribute="Symbol" char="?" /> <!-- Fix of conditional expression from the JavaScript highlighting -->
-
-			<!-- Highlight types after ":" and between "<" and ">" -->
-			<DetectChar context="Types" attribute="Symbol" char=":" />
-			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(&identifier;|[\[\{\(&lt;]).*&gt;)" />
-
-			<IncludeRules context="Normal##JavaScript" />
-		</context>
-
-		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
-			<keyword context="NoRegExp" attribute="Keyword" String="keywords" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<context name="NoRegExp" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="NoRegExp##JavaScript" />
-		</context>
-
-		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b(0x[\da-f][\da-f_]*)\b" insensitive="true" />
-			<RegExpr context="NoRegExp" attribute="Binary" String="\b(0b[01][01_]*)\b" insensitive="true" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(\b\d[\d_]*\.?|(\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*\b" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(\.\d[\d_]*\b|\b\d[\d_]*\.(\d[\d_]*\b)?)" />
-			<RegExpr context="NoRegExp" attribute="Octal" String="\b(0o?[0-7][0-7_]*)\b" insensitive="true" />
-			<RegExpr context="NoRegExp" attribute="Decimal" String="\b(\d[\d_]*)\b" />
-		</context>
-
-		<context name="FindFunctionName" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*(&lt;((\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|('(\\.|[^'])*')|(&quot;(\\.|[^&quot;])*&quot;)|(`(\\.|[^`])*`)|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()" />
-		</context>
-
-		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="Template" attribute="Template" char="`" />
-			<IncludeRules context="FindStrings##JavaScript" />
-		</context>
-		<context name="Template" attribute="Template" lineEndContext="#stay">
-			<IncludeRules context="Escape##JavaScript" />
-			<Detect2Chars context="Substitution" attribute="Substitution" char="$" char1="{" />
-			<DetectChar context="#pop" attribute="Template" char="`" />
-		</context>
-		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Substitution" char="}" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<!-- Highlight types after the "type" keyword -->
-		<context name="TypeDeclaration" attribute="Normal Text" lineEndContext="#stay">
-			<DetectSpaces />
-			<IncludeRules context="TypeDeclarationEnd" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="TypeDeclarationEnd" attribute="Normal Text" lineEndContext="#stay">
-			<AnyChar context="#pop" String=";,{})]" lookAhead="true" />
-		</context>
-
-		<!-- Highlight types after ":" -->
-		<context name="Types" attribute="Normal Text" lineEndContext="#pop">
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesCommon" />
-		</context>
-		<context name="TypesCommon" attribute="Normal Text" lineEndContext="#pop">
-			<DetectSpaces />
-			<!-- NOTE: The "TypesEnd" context is used by "typescript-react.xml" -->
-			<IncludeRules context="TypesEnd" />
-			<!-- IMPORTANT: If you modify this rule, do so in "typescript-react.xml"! -->
-			<RegExpr context="#pop!TypesNewLine" attribute="Symbol" String="\|(?=\s*($|//|(/\*.*\*/\s*)+$))" />
-
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="TypesEnd" attribute="Normal Text" lineEndContext="#stay">
-			<AnyChar context="#pop" String=";,})]" lookAhead="true" />
-			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" />
-			<Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
-		</context>
-		<context name="TypesNewLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!TypesCommon">
-			<DetectSpaces />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- NOTE: The "NoRegExp" context invalidates lineEndContext="#pop",
-		     therefore the following rule is necessary -->
-		<context name="FixPopLineEndContext" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop" String="\S" firstNonSpace="true" lookAhead="true" />
-		</context>
-
-		<context name="DefaultTypes" attribute="Normal Text" lineEndContext="#stay">
-			<keyword context="NoRegExp" attribute="Types/Primitives" String="types_primitives" />
-			<RegExpr context="#stay" attribute="Symbol" String="&lt;\s*&gt;" />
-		</context>
-		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="TypesSquareBracket" attribute="Symbol" char="[" beginRegion="List" />
-			<DetectChar context="TypesCurlyBracket" attribute="Symbol" char="{" beginRegion="Brace" />
-			<DetectChar context="TypesRoundBracket" char="(" />
-		</context>
-
-		<context name="TypesSquareBracket" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop" attribute="Symbol" char="]" endRegion="List" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="TypesCurlyBracket" attribute="Normal Text" lineEndContext="#pop!Object">
-			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
-			<RegExpr context="#pop!Object" String="\S" firstNonSpace="true" lookAhead="true" /> <!-- FixPopLineEndContext -->
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Object" />
-		</context>
-		<context name="TypesRoundBracket" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop" char=")" />
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-
-		<context name="TypesAngleBracket" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop" attribute="Symbol" char="&gt;" />
-			<IncludeRules context="TypesAngleBracketEnd" />
-			<IncludeRules context="FixPopLineEndContext" />
-			<IncludeRules context="TypesFindBrackets" />
-			<IncludeRules context="DefaultTypes" />
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="TypesAngleBracketEnd" attribute="Normal Text" lineEndContext="#stay">
-			<AnyChar context="#pop" String="})];" lookAhead="true" />
-		</context>
-
-		<!-- new.target -->
-		<context name="NewTarget" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<DetectSpaces />
-			<AnyChar context="#stay" attribute="Symbol" String=".?!" />
-			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="target" />
-		</context>
-
-		<!-- After keyword list "control_export_types" -->
-		<context name="ControlExport" attribute="Normal Text" lineEndContext="#pop">
-			<AnyChar context="#pop" attribute="Normal Text" String="{;" lookAhead="true" />
-			<IncludeRules context="FindStrings" />
-			<RegExpr context="#stay" attribute="Types/Primitives" String="&identifier;" />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- "import" keyword -->
-		<context name="Import" attribute="Normal Text" lineEndContext="#pop">
-			<DetectChar context="#pop!ImportRequireKey" attribute="Symbol" char="=" />
-			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> <!-- importmeta_property -->
-			<IncludeRules context="Normal" />
-		</context>
-		<context name="ImportRequireKey" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<RegExpr context="#stay" attribute="Keyword" String="\s*\b(require)\s*(?=\()" />
-			<DetectChar context="ImportRequire" attribute="Symbol" char="(" beginRegion="import" />
-		</context>
-		<context name="ImportRequire" attribute="Normal Text" lineEndContext="#stay">
-			<DetectChar context="#pop#pop" attribute="Symbol" char=")" endRegion="import" />
-			<IncludeRules context="FindStrings" />
-			<IncludeRules context="FindNumbers" />
-			<IncludeRules context="FindComments##JavaScript" />
-		</context>
-
-		<!-- Member Objects -->
-
-		<context name="MemberObject" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="DefaultMemberObject" />
-			<!-- Common functions -->
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_eventhandler" />
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
-		</context>
-
-		<context name="DefaultMemberObject" attribute="Normal Text" lineEndContext="#pop">
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#stay" attribute="Symbol" char="." />
-			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#stay" attribute="Symbol" char="!" char1="." />
-
-			<RegExpr context="#stay" attribute="Objects" String="&identifier;(?=\s*[\?!]?\.)" />
-			<IncludeRules context="FindFunctionName" /> <!-- #pop -->
-			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
-			<IncludeRules context="NoRegExp" />
-			<DetectSpaces />
-
-			<!-- Generic functions, variables y properties -->
-			<keyword context="#pop!NoRegExp" attribute="Object Member" String="variable_property" />
-			<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
-		</context>
-		<context name="FixPointMemberObject" attribute="Normal Text" lineEndContext="#pop">
-			<StringDetect context="#pop" attribute="Symbol" String="?..." />
-			<StringDetect context="#pop" attribute="Symbol" String="!..." />
-			<StringDetect context="#pop" attribute="Symbol" String="..." />
-		</context>
-
-		<!-- Built-in Classes -->
-
-		<!-- DOM Classes -->
-		<context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="dom_functions" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="dom_property" />
-			<IncludeRules context="DefaultMemberObject" />
-			<keyword context="#pop!NoRegExp" attribute="Object Member" String="dom_variable" />
-		</context>
-		<!-- Node.js Classes -->
-		<context name="FindMemberObjectNode" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectNode" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectNode" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectNode" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectNode" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<IncludeRules context="DefaultMemberObject" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="node_object" />
-		</context>
-		<!-- Math Class -->
-		<context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Constant" String="math_property_constants" />
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Promise Class -->
-		<context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- JSON Class -->
-		<context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Console Object -->
-		<context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-		<!-- Process Object -->
-		<context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
-			<DetectSpaces />
-			<IncludeRules context="FixPointMemberObject" />
-			<DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
-			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="?" char1="." />
-			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="!" char1="." />
-		</context>
-		<context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
-			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
-			<IncludeRules context="DefaultMemberObject" />
-		</context>
-
-	</contexts>
-
-	<itemDatas>
-		<itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
-		<itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
-		<itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
-		<itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
-		<itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
-		<itemData name="Objects"          defStyleNum="dsVariable" spellChecking="false" />
-		<itemData name="Object Member"    defStyleNum="dsAttribute" spellChecking="false" />
-		<itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
-		<itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
-		<itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
-		<itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
-		<itemData name="Constant"         defStyleNum="dsConstant" spellChecking="false" />
-		<itemData name="Types/Primitives" defStyleNum="dsDataType" spellChecking="false" />
-
-		<itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
-		<itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
-		<itemData name="Hexadecimal"  defStyleNum="dsBaseN" spellChecking="false" />
-		<itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
-		<itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
-		<itemData name="Template"     defStyleNum="dsVerbatimString" />
-		<itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
-
-		<itemData name="Comment"      defStyleNum="dsComment" />
-		<itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
-	</itemDatas>
-
-</highlighting>
-
-<general>
-	<comments>
-		<comment name="singleLine" start="//" />
-		<comment name="multiLine" start="/*" end="*/" />
-	</comments>
-	<keywords casesensitive="1" additionalDeliminator="&quot;&apos;`" weakDeliminator="+-$" />
+	<!ENTITY identifier   "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+	<!ENTITY numSuffix    "(?=n?(?:[^\w]|$))">
+	<!ENTITY objectOp     "[\?!]?">
+	<!ENTITY objectPoint  "\s*&objectOp;\.">
+	<!ENTITY endLine      "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">
+	<!ENTITY utilityTypes "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)">
+	<!-- function<...>( or function( -->
+	<!ENTITY functionSuffix "(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()">
+]>
+
+<!--
+    ====================================================================
+
+      This file is part of the KDE's KSyntaxHighlighting framework.
+
+      Copyright 2018-2019 Nibaldo González S. (nibgonz@gmail.com)
+
+      This Source Code Form is subject to the terms of the MIT License.
+      If a copy of the license was not distributed with this file,
+      You can obtain one at: https://opensource.org/licenses/MIT
+
+    ====================================================================
+
+    This file is an extension of the JavaScript highlighter
+    (javascript.xml, Version 14 and higher).
+    Based on the TypeScript grammar files,
+    available at: https://github.com/Microsoft/TypeScript-TmLanguage
+
+    NOTE: TypeScript directives are highlighted by "doxygen.xml",
+    included in the JavaScript highlighter.
+    Ex:
+      /// <reference no-default-lib="true"/>
+
+      Tags: reference, amd-dependency, amd-module
+      Attributes: path, types, no-default-lib, name
+
+    Change log:
+     * v8 [2019-12-12]: Add "bigint" primitive type.
+     * v7 [2019-11-20]: Move keywords of built-in object to "javascript.xml" and adapt.
+     * v6 [2019-10-01]: Add "asserts" keyword in type predicates.
+                        Highlight types after the "as" keyword.
+     * v5 [2019-08-30]: Avoid that ?: be used as conditional expressions.
+     * v4 [2019-07-16]: Fixed highlighting of keywords before ":" in conditional expressions.
+     * v3 [2019-02-18]: Add support to bigint and the "is" keyword.
+                        Fixes keyword delimiters. Don't highlight regex
+                        after "]" and ")". Multiple fixes and improvements.
+     * v2 [2018-12-29]: Don't highlight built-in classes as functions,
+                        fix float-points, improve types detection and other fixes.
+     * v1 [2018-11-18]: Initial version
+-->
+
+<language name="TypeScript"
+          version="8"
+          kateversion="5.53"
+          section="Scripts"
+          extensions="*.ts"
+          priority="9"
+          mimetype="text/typescript;application/typescript;text/x-typescript;application/x-typescript"
+          indenter="cstyle"
+          author="Nibaldo González (nibgonz@gmail.com)"
+          license="MIT">
+
+<highlighting>
+
+	<!-- Include all JavaScript keywords! -->
+	<list name="controlflow">
+		<include>controlflow##JavaScript</include>
+		<item>goto</item>
+	</list>
+	<list name="keywords">
+		<include>keywords##JavaScript</include>
+		<item>declare</item> <!-- storage.modifier.ts -->
+	</list>
+	<list name="reserved">
+		<include>reserved##JavaScript</include>
+		<item>type</item>
+		<item>arguments</item>
+		<!-- Class -->
+		<item>readonly</item>
+		<item>abstract</item>
+		<item>constructor</item>
+		<item>get</item>
+		<item>set</item>
+		<!-- Also:
+		     public, protected, private, async, super, new, static -->
+	</list>
+	<list name="module">
+		<include>module##JavaScript</include>
+	</list>
+	<list name="primitives">
+		<include>primitives##JavaScript</include>
+		<!-- Types Built-in -->
+		<item>object</item>
+		<!-- Also:
+		     this, true, false, undefined, null -->
+	</list>
+
+	<list name="control_export_types">
+		<!-- storage.type.namespace.ts -->
+		<item>namespace</item>
+		<item>module</item>
+	</list>
+	<list name="types_operator_expression">
+		<item>keyof</item>
+		<item>infer</item>
+		<!-- Also: is, typeof -->
+	</list>
+	<!-- Datatypes & Primitive Types -->
+	<list name="types">
+		<item>string</item>
+		<item>number</item>
+		<item>bigint</item>
+		<item>boolean</item>
+		<item>symbol</item>
+		<item>any</item>
+		<item>void</item>
+		<item>never</item>
+		<item>unknown</item>
+
+		<item>undefined</item>
+		<item>null</item>
+		<item>object</item>
+	</list>
+
+	<!-- Built-in Classes, Functions & Constants -->
+
+	<list name="class_builtin">
+		<include>class_builtin##JavaScript</include>
+	</list>
+	<!-- DOM Classes -->
+	<list name="class_dom">
+		<include>class_dom##JavaScript</include>
+	</list>
+	<!-- Node.js Classes -->
+	<list name="class_node">
+		<include>class_node##JavaScript</include>
+	</list>
+
+	<!-- General Properties of Classes -->
+	<list name="variable_property">
+		<include>variable_property##JavaScript</include>
+	</list>
+	<!-- General Built-in Functions -->
+	<list name="functions">
+		<include>functions##JavaScript</include>
+	</list>
+
+	<!-- Functions of "console" -->
+	<list name="console_functions">
+		<include>console_functions##JavaScript</include>
+	</list>
+	<!-- Properties of "process" -->
+	<list name="process_property">
+		<include>process_property##JavaScript</include>
+	</list>
+	<!-- Functions of "process" -->
+	<list name="process_functions">
+		<include>process_functions##JavaScript</include>
+	</list>
+
+	<!-- Constants of Number Class -->
+	<list name="number_constant">
+		<include>number_constant##JavaScript</include>
+	</list>
+	<!-- Constants of Math Class-->
+	<list name="math_constant">
+		<include>math_constant##JavaScript</include>
+	</list>
+	<!-- Methods of Math Class -->
+	<list name="math_functions">
+		<include>math_functions##JavaScript</include>
+	</list>
+	<!-- Methods of JSON Class -->
+	<list name="json_functions">
+		<include>json_functions##JavaScript</include>
+	</list>
+	<!-- Methods of Promise Class -->
+	<list name="promise_functions">
+		<include>promise_functions##JavaScript</include>
+	</list>
+
+	<!-- Node.js Variables -->
+	<list name="node_variable">
+		<include>node_variable##JavaScript</include>
+	</list>
+	<!-- DOM Variables -->
+	<list name="dom_variable">
+		<include>dom_variable##JavaScript</include>
+	</list>
+	<!-- DOM Constants -->
+	<list name="dom_constant">
+		<include>dom_constant##JavaScript</include>
+	</list>
+
+	<!-- For Autocomplete Keywords -->
+	<!-- Properties of DOM Classes -->
+	<list name="dom_property">
+		<include>dom_property##JavaScript</include>
+	</list>
+	<!-- Methods of DOM Classes -->
+	<list name="dom_functions">
+		<include>dom_functions##JavaScript</include>
+	</list>
+	<!-- Event Handler -->
+	<list name="eventhandler_property">
+		<include>eventhandler_property##JavaScript</include>
+	</list>
+	<!-- Others Methods of Classes -->
+	<list name="function_common">
+		<include>function_common##JavaScript</include>
+	</list>
+
+	<contexts>
+
+		<context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+			<Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
+		</context>
+		<context name="ShebangLine" attribute="Comment" lineEndContext="#pop!Normal" />
+
+		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+			<StringDetect context="#stay" attribute="Symbol" String="..." />
+			<IncludeRules context="FindNumbers" />
+			<IncludeRules context="FindStrings" />
+
+			<!-- Abstract -->
+			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
+			<!-- New -->
+			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=&objectPoint;\s*target\b)" />
+			<RegExpr context="MemberObject" attribute="Objects" String="\bnew(?=&objectOp;\.)" />
+			<WordDetect context="#stay" attribute="Keyword" String="new" />
+
+			<!-- Keywords: control flow -->
+			<keyword context="#stay" attribute="ControlFlow" String="controlflow" />
+			<RegExpr context="#stay" attribute="ControlFlow" String="\bdefault(?=\s*&objectOp;:)" />
+
+			<!-- NOTE & TODO: The identifiers before ":" are highlighted as "dsNormal".
+			     These identifiers should be highlighted in a different way depending on the
+			     context, for example, in the declaration of classes or interfaces, in sets, the
+			     parameters of a function, or after the keywords: "const", "var", "let" & "enum". -->
+			<RegExpr context="#stay" attribute="Parameter" String="&identifier;(?=\s*&objectOp;:)" />
+
+			<!-- Keywords -->
+			<WordDetect context="TypeDeclaration" attribute="Reserved" String="type" />
+			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />
+			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
+			<keyword context="#stay" attribute="Reserved" String="reserved" />
+
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
+			<!-- Built-in Classes -->
+			<IncludeRules context="BuiltInClasses" />
+			<IncludeRules context="BuiltInConstants" />
+			<!-- Objects -->
+			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
+			<DetectChar context="MemberObject" attribute="Symbol" char="." />
+
+			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
+			<!-- Import -->
+			<WordDetect context="Import" attribute="Module" String="import" />
+			<!-- Export types -->
+			<keyword context="ControlExport" attribute="Module" String="control_export_types" />
+			<!-- Keywords -->
+			<keyword context="#stay" attribute="Module" String="module" />
+			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
+			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
+
+			<!-- Functions: function(...) and function<...>(...) -->
+			<RegExpr context="Function" attribute="Function Name" String="(&identifier;)&functionSuffix;" lookAhead="true" />
+
+			<!-- Symbols & Operators -->
+			<!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
+			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<!-- NOTE: Avoid highlighting identifier?: string, -->
+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=.*&identifier;\s*\:)" />
+
+			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
+			<DetectChar context="Types" attribute="Symbol" char=":" />
+			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
+
+			<IncludeRules context="JSBase##JavaScript" />
+		</context>
+
+		<!-- Highlight keywords before ":" in conditional expressions. -->
+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char=":" />
+			<DetectChar context="#stay" attribute="Symbol" char="?" />
+
+			<!-- Keywords -->
+			<WordDetect context="#stay" attribute="Reserved" String="type" />
+			<WordDetect context="FunctionDeclaration" attribute="Keyword" String="function" />
+			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
+			<keyword context="#stay" attribute="Reserved" String="reserved" />
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
+			<!-- Built-in Classes -->
+			<IncludeRules context="BuiltInClasses" />
+			<IncludeRules context="BuiltInConstants" />
+			<!-- Import -->
+			<WordDetect context="#stay" attribute="Module" String="import" />
+			<!-- Export types -->
+			<keyword context="#stay" attribute="Module" String="control_export_types" />
+			<!-- Keywords -->
+			<keyword context="#stay" attribute="Module" String="module" />
+			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
+			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
+
+			<!-- NOTE: The identifiers before ":" should be highlighted as "Normal Text".
+			     However, currently, the "Parameter" attribute is equivalent to "Normal Text". -->
+			<!-- <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*&objectOp;:)" /> -->
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Object, within { ... } -->
+		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<keyword context="NoRegExp" attribute="Keyword" String="keywords" />
+			<!-- Highlight types in the following line.
+			     NOTE: Using the "NoRegExp" context can cause this to apply to multiple lines. -->
+			<RegExpr context="TypesNewLine" attribute="Symbol" String=":(?=&endLine;)" minimal="true" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Avoid highlighting regular expressions. -->
+		<context name="NoRegExp" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="NoRegExp##JavaScript" />
+		</context>
+		<!-- Avoid highlighting regular expressions on a single line. -->
+		<context name="NoRegExpSameLine" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="NoRegExp##JavaScript" />
+		</context>
+
+		<!-- Numbers -->
+		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
+		</context>
+
+		<!-- Function Name -->
+		<context name="Function" attribute="Normal Text" lineEndContext="#pop">
+			<keyword context="#pop" attribute="Function (Built-in)" String="functions" />
+			<StringDetect context="#pop" attribute="Function Name" String="%1" dynamic="true" />
+			<AnyChar context="#pop" String="(&lt;&gt;" lookAhead="true" />
+		</context>
+		<context name="FunctionDeclaration" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<RegExpr context="#pop" attribute="Function Declaration" String="&identifier;&functionSuffix;" /> <!-- NoRegExp -->
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- Strings -->
+		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="Template" attribute="Template" char="`" />
+			<IncludeRules context="FindStrings##JavaScript" />
+		</context>
+		<context name="Template" attribute="Template" lineEndContext="#stay">
+			<IncludeRules context="Escape##JavaScript" />
+			<Detect2Chars context="Substitution" attribute="Substitution" char="$" char1="{" />
+			<DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" />
+		</context>
+		<context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop" attribute="Substitution" char="}" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Type Declaration: Highlight types after the "type" keyword -->
+
+		<context name="TypeDeclaration" attribute="Normal Text" lineEndContext="#stay">
+			<DetectSpaces />
+			<AnyChar context="#pop" String=";,{})]" lookAhead="true" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<!-- Type Parameter: Highlight types after ":" -->
+
+		<context name="Types" attribute="Normal Text" lineEndContext="#pop">
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesCommon" />
+		</context>
+		<context name="TypesCommon" attribute="Normal Text" lineEndContext="#pop">
+			<DetectSpaces />
+			<IncludeRules context="TypesEnd" />
+			<!-- New line after "|" or "&".
+			     IMPORTANT: If you modify this rule, do so in "typescript-react.xml"! -->
+			<RegExpr context="#pop!TypesNewLine" attribute="Symbol" String="[\|&amp;](?=&endLine;)" minimal="true" />
+
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<!-- NOTE: Context used by "typescript-react.xml" -->
+		<context name="TypesEnd" attribute="Normal Text" lineEndContext="#stay">
+			<AnyChar context="#pop" String=";,})]" lookAhead="true" />
+			<RegExpr context="#pop" String="\=(?!&gt;)" lookAhead="true" />
+			<Detect2Chars context="#pop" char="/" char1="/" lookAhead="true" />
+		</context>
+		<context name="TypesNewLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!TypesCommon">
+			<DetectSpaces />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- NOTE: The "NoRegExp" context invalidates lineEndContext="#pop",
+		     therefore the following rule is necessary -->
+		<context name="FixPopLineEndContext" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr context="#pop" String="\S" firstNonSpace="true" lookAhead="true" />
+		</context>
+
+		<!-- Default: Type Parameter, Type Declaration, Angle Brackets -->
+
+		<context name="DefaultTypes" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Types Keywords -->
+			<keyword context="NoRegExpSameLine" attribute="Types" String="types" />
+			<!-- Assertions -->
+			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="asserts" />
+			<!-- Type Guards -->
+			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="is" />
+
+			<!-- FIXME: For a strange reason, the keywords before "}" are not highlighted.
+			     This rule fixes it provisionally. -->
+			<RegExpr context="#stay" attribute="Types" String="\b(?:string|number|bigint|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" />
+
+			<!-- Don't start this context again -->
+			<AnyChar context="#stay" attribute="Symbol" String="?:" />
+			<WordDetect context="#stay" attribute="Module" String="as" />
+		</context>
+		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="TypesSquareBracket" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="TypesCurlyBracket" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="TypesRoundBracket" attribute="Normal Text" char="(" />
+		</context>
+
+		<context name="TypesSquareBracket" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop!NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<context name="TypesCurlyBracket" attribute="Normal Text" lineEndContext="#pop!Object">
+			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
+			<RegExpr context="#pop!Object" String="\S" firstNonSpace="true" lookAhead="true" /> <!-- FixPopLineEndContext -->
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Object" />
+		</context>
+		<context name="TypesRoundBracket" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop!NoRegExp" attribute="Normal Text" char=")" />
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+
+		<context name="TypesAngleBracket" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char="&gt;" />
+			<IncludeRules context="TypesAngleBracketEnd" />
+			<IncludeRules context="FixPopLineEndContext" />
+			<IncludeRules context="TypesFindBrackets" />
+			<IncludeRules context="DefaultTypes" />
+			<IncludeRules context="Normal" />
+		</context>
+		<!-- NOTE: Context used by "typescript-react.xml" -->
+		<context name="TypesAngleBracketEnd" attribute="Normal Text" lineEndContext="#stay">
+			<AnyChar context="#pop" String="})];" lookAhead="true" />
+		</context>
+
+		<!-- new.target -->
+		<context name="NewTarget" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<DetectSpaces />
+			<AnyChar context="#stay" attribute="Symbol" String=".?!" />
+			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="target" />
+		</context>
+
+		<!-- After keyword list "control_export_types" -->
+		<context name="ControlExport" attribute="Normal Text" lineEndContext="#pop">
+			<AnyChar context="#pop" attribute="Normal Text" String="{;" lookAhead="true" />
+			<IncludeRules context="FindStrings" />
+			<RegExpr context="#stay" attribute="Types" String="&identifier;" />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- "import" keyword -->
+		<context name="Import" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop!ImportRequireKey" attribute="Symbol" char="=" />
+			<WordDetect context="#pop!NoRegExp" attribute="Keyword" String="meta" /> <!-- importmeta_property -->
+			<!-- Fix context NoRegExp (#pop in new line) -->
+			<RegExpr context="#pop" String="." lookAhead="true" firstNonSpace="true" />
+			<AnyChar context="#pop" String="{}()[];," lookAhead="true" />
+			<IncludeRules context="Normal" />
+		</context>
+		<context name="ImportRequireKey" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<RegExpr context="#stay" attribute="Keyword" String="\s*require\s*(?=\()" />
+			<DetectChar context="ImportRequire" attribute="Normal Text" char="(" beginRegion="import" />
+		</context>
+		<context name="ImportRequire" attribute="Normal Text" lineEndContext="#stay">
+			<DetectChar context="#pop#pop" attribute="Normal Text" char=")" endRegion="import" />
+			<IncludeRules context="FindStrings" />
+			<IncludeRules context="FindNumbers" />
+			<IncludeRules context="FindComments##JavaScript" />
+		</context>
+
+		<!-- Member Objects -->
+
+		<context name="MemberObject" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<IncludeRules context="DefaultMemberObject" />
+			<!-- Common functions and properties, only for autocomplete keywords -->
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="dom_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="dom_functions" />
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+		</context>
+
+		<context name="DefaultMemberObject" attribute="Normal Text" lineEndContext="#pop">
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#stay" attribute="Symbol" char="." />
+			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#stay" attribute="Symbol" char="!" char1="." />
+
+			<!-- The order of these rules is important: 1) Functions. 2) Constants & Properties. 3) Obj. Members. -->
+			<!-- function(...) and function<...>(...) -->
+			<RegExpr context="#pop" attribute="Function Name" String="&identifier;&functionSuffix;" />
+			<!-- Generic constants and properties -->
+			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="variable_property" />
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
+
+			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" />
+			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
+			<IncludeRules context="NoRegExp" />
+			<DetectSpaces />
+
+			<!-- Generic functions -->
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
+		</context>
+		<context name="FixPointMemberObject" attribute="Normal Text" lineEndContext="#pop">
+			<StringDetect context="#pop" attribute="Symbol" String="?..." />
+			<StringDetect context="#pop" attribute="Symbol" String="!..." />
+			<StringDetect context="#pop" attribute="Symbol" String="..." />
+		</context>
+
+
+		<!-- Built-in Classes -->
+		<!-- Keep in sync with javascript.xml -->
+
+		<context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
+			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
+			<WordDetect context="FindMemberObjectNumber" attribute="Built-in Objects" String="Number" />
+			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
+			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
+			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
+			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
+
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_builtin" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_dom" />
+			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="class_node" />
+			<keyword context="NoRegExp" attribute="Built-in Objects" String="node_variable" />
+		</context>
+		<!-- These constants are highlighted in "Normal" -->
+		<context name="BuiltInConstants" attribute="Normal Text" lineEndContext="#stay">
+			<keyword context="NoRegExp" attribute="Constant" String="math_constant" />
+			<keyword context="NoRegExp" attribute="Constant" String="number_constant" />
+			<keyword context="NoRegExp" attribute="Constant" String="dom_constant" />
+		</context>
+
+		<!-- DOM Variable -->
+		<context name="FindMemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectDOM" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectDOM" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectDOM" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!FindMemberObjectDOM" attribute="Object Property (Built-in)" String="dom_property" />
+			<keyword context="#pop!FindMemberObjectDOM" attribute="Object Method (Built-in)" String="dom_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+			<!-- Only for autocomplete -->
+			<keyword context="#pop!NoRegExp" attribute="Object Member" String="eventhandler_property" />
+			<keyword context="#pop!NoRegExp" attribute="Function Name" String="function_common" />
+		</context>
+		<!-- Math Class -->
+		<context name="FindMemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectMath" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectMath" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectMath" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="math_constant" />
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="math_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Number Class -->
+		<context name="FindMemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectNumber" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectNumber" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectNumber" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectNumber" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Constant" String="number_constant" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Promise Class -->
+		<context name="FindMemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectPromise" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectPromise" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectPromise" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="promise_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- JSON Class -->
+		<context name="FindMemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectJSON" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectJSON" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectJSON" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="json_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Console Object -->
+		<context name="FindMemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectConsole" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectConsole" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectConsole" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="console_functions" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+		<!-- Process Object -->
+		<context name="FindMemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectSpaces />
+			<IncludeRules context="FixPointMemberObject" />
+			<DetectChar context="#pop!MemberObjectProcess" attribute="Symbol" char="." />
+			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="?" char1="." />
+			<Detect2Chars context="#pop!MemberObjectProcess" attribute="Symbol" char="!" char1="." />
+		</context>
+		<context name="MemberObjectProcess" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+			<keyword context="#pop!NoRegExp" attribute="Object Method (Built-in)" String="process_functions" />
+			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="process_property" />
+			<IncludeRules context="DefaultMemberObject" />
+		</context>
+
+	</contexts>
+
+	<itemDatas>
+		<itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
+		<itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
+		<itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
+		<itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
+		<itemData name="Objects"          defStyleNum="dsNormal" spellChecking="false" />
+		<itemData name="Object Member"    defStyleNum="dsAttribute" spellChecking="false" />
+		<itemData name="Function Name"    defStyleNum="dsFunction" spellChecking="false" />
+		<itemData name="Function Declaration" defStyleNum="dsFunction" spellChecking="false" />
+		<itemData name="Built-in Objects" defStyleNum="dsBuiltIn" spellChecking="false" />
+		<itemData name="Object Property (Built-in)" defStyleNum="dsAttribute" italic="1" spellChecking="false" />
+		<itemData name="Object Method (Built-in)" defStyleNum="dsFunction" italic="1" spellChecking="false" />
+		<itemData name="Function (Built-in)" defStyleNum="dsPreprocessor" spellChecking="false" />
+		<itemData name="Constant"         defStyleNum="dsConstant" spellChecking="false" />
+		<itemData name="Types"            defStyleNum="dsDataType" spellChecking="false" />
+		<itemData name="Parameter"        defStyleNum="dsNormal" spellChecking="false" />
+
+		<itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false" />
+		<itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false" />
+		<itemData name="Hexadecimal"  defStyleNum="dsBaseN" spellChecking="false" />
+		<itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false" />
+		<itemData name="Float"        defStyleNum="dsFloat" spellChecking="false" />
+		<itemData name="Template"     defStyleNum="dsVerbatimString" />
+		<itemData name="Substitution" defStyleNum="dsSpecialChar" spellChecking="false" />
+
+		<itemData name="Comment"      defStyleNum="dsComment" />
+		<itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
+	</itemDatas>
+
+</highlighting>
+
+<general>
+	<comments>
+		<comment name="singleLine" start="//" />
+		<comment name="multiLine" start="/*" end="*/" />
+	</comments>
+	<keywords casesensitive="1" additionalDeliminator="&quot;&apos;`" weakDeliminator="$" />
 </general>
 
 </language>
diff --git a/syntax/vhdl.xml b/syntax/vhdl.xml
--- a/syntax/vhdl.xml
+++ b/syntax/vhdl.xml
@@ -8,7 +8,7 @@
   <!ENTITY label     "((&varname;)\s*:\s*)?">
 
 ]>
-<language name="VHDL" version="6" kateversion="3.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
+<language name="VHDL" version="7" kateversion="3.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
   <highlighting>
     <list name="keywordsToplevel">
       <item>file</item>
@@ -220,7 +220,7 @@
 
         <RegExpr attribute="Control" context="architecture_main" insensitive="true" dynamic="true" lookAhead="true"
                  String="&bos;architecture\s+(&varname;)&eos;"/>
-        <StringDetect attribute="Control" context="entity"
+        <StringDetect attribute="Control" context="entity" insensitive="true"
                  String="entity"/>
         <RegExpr attribute="Control" context="package" insensitive="true" lookAhead="true" dynamic="true" beginRegion="PackageRegion1"
                  String="&bos;package\s+(&varname;)\s+is&eos;"/>
@@ -414,7 +414,7 @@
         <IncludeRules context="preDetection"/>
         <RegExpr attribute="Reference"   context="#stay" String="&bos;%4&eos;" dynamic="true"/>
         <RegExpr attribute="Name"        context="#stay" String="&bos;%3&eos;" dynamic="true"/>
-        <RegExpr attribute="Keyword"     context="instanceMap" beginRegion="InstanceMapRegion"
+        <RegExpr attribute="Keyword"     context="instanceMap" insensitive="true" beginRegion="InstanceMapRegion"
                  String="&bos;(port|generic)\s+map\s*\(" />
         <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="InstanceRegion1"/>
         <IncludeRules context="generalDetection"/>
@@ -598,7 +598,9 @@
       </context>
 
 <!-- other environments -->
-      <context name="comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts"/>
+      </context>
 
       <context name="string" attribute="Vector" lineEndContext="#stay">
         <DetectChar attribute="Vector" context="#pop" char="&quot;"/>
diff --git a/syntax/yaml.xml b/syntax/yaml.xml
--- a/syntax/yaml.xml
+++ b/syntax/yaml.xml
@@ -27,22 +27,27 @@
   <!ENTITY literalOp      "[\|&gt;][\-\+]?">
   <!-- Key after "?" or "-", used to detect literal/folded operator -->
   <!ENTITY keyAfterOp     "(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)">
+
+  <!ENTITY dataTypes      "!!\S+">
+  <!ENTITY alias          "&amp;\S+">
+  <!ENTITY reference      "\*\S+">
 ]>
 
 <!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
-<!-- Modifications, values & support for literal/folded style:
-       Nibaldo González S. <nibgonz@gmail.com> //-->
-<language name="YAML" version="5" kateversion="5.0" section="Markup"
-          extensions="*.yaml;*.yml" mimetype="text/yaml"
-          author="Dr Orlovsky MA (dr.orlovsky@gmail.com)" license="LGPL">
+<!-- Modifications (YAML 1.2), values & support for literal/folded style:
+       Nibaldo González S. <nibgonz@gmail.com>
+       These modifications are under the MIT license. //-->
+<language name="YAML" version="6" kateversion="5.0" section="Markup"
+          extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"
+          author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
   <highlighting>
     <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="normal" >
+      <context attribute="Attribute" lineEndContext="#stay" name="normal" >
         <StringDetect attribute="Document Header" context="header" String="---" column="0"/>
-        <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$"/>
+        <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>
         <DetectChar attribute="Directive" context="directive" char="%" column="0"/>
 
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
 
         <!-- Literal/Folded Style -->
         <IncludeRules context="find-literal-block" />
@@ -50,48 +55,77 @@
         <RegExpr attribute="Operator" firstNonSpace="true" context="dash" String="\-(?=\s|$)" />
         <DetectChar attribute="Operator" firstNonSpace="true" context="mapping-key" char="?" />
 
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
+        <DetectChar attribute="Operator" firstNonSpace="true" context="list" char="[" beginRegion="List" />
+        <DetectChar attribute="Operator" firstNonSpace="true" context="hash" char="{" beginRegion="Hash" />
 
-        <RegExpr attribute="Data Types" firstNonSpace="true" context="#stay" String="!!\S+" />
-        <RegExpr attribute="Alias" firstNonSpace="true" context="#stay" String="&amp;\S+" />
-        <RegExpr attribute="Reference" firstNonSpace="true" context="#stay" String="\*\S+" />
+        <RegExpr attribute="Data Types" firstNonSpace="true" context="after-data" String="&dataTypes;" />
+        <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />
+        <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />
 
-        <RegExpr attribute="Key" context="attribute-pre" String="[^&quot;'#\-\s][^:#]*:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="attribute-pre" String="\-([^\s:#][^:#]*)?\:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="attribute-pre" String="&keyDQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="attribute-pre" String="&keySQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="attribute-pre" String=":(?=\s|$)"/>
+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="[^&quot;'#\-\s][^:#]*(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="\-([^\s:#][^:#]*)?(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keyDQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keySQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>
 
-        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
+        <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />
+        <DetectChar attribute="String" firstNonSpace="true" context="stringx" char="&quot;" beginRegion="String" />
         <IncludeRules context="values-firstnonspace" />
         <DetectSpaces/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />
         <DetectSpaces />
         <RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />
-        <RegExpr attribute="Data Types" context="#pop" String="!!\S+" />
-        <RegExpr attribute="Alias" context="#pop" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="#pop" String="\*\S+" />
+        <RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#pop!after-data" String="&alias;" />
+        <RegExpr attribute="Reference" context="#pop!after-data" String="&reference;" />
+
+        <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
+        <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
+        <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
+        <DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
       </context>
 
-      <context attribute="List" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">
+      <context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces/>
-        <DetectChar attribute="Comment" context="comment" char="#" />
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
         <IncludeRules context="values" />
         <DetectChar attribute="Operator" context="#pop!mapping-key" char="?" />
         <RegExpr attribute="Operator" context="#stay" String="\-(?=\s|$)" />
+
+        <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
+        <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
+        <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
+        <DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
       </context>
 
+      <!-- Highlight lists, hashes and strings after a data type, reference or alias -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />
+        <DetectSpaces />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
+
+        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
+        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
+        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
+        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
+      </context>
+
       <context attribute="Document Header" lineEndContext="#pop" name="header">
-        <DetectChar attribute="Comment" context="comment" char="#" />
-        <RegExpr attribute="Literal/Folded Operator" context="#pop!literal-block-simple" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
+        <RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />
       </context>
+      <context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Literal/Folded Operator" context="#pop#pop!literal-block-simple" String="&literalOp;" beginRegion="Literal" />
+      </context>
 
       <context attribute="End of Document" lineEndContext="#stay" name="EOD">
       </context>
@@ -100,87 +134,102 @@
       </context>
 
       <context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
       </context>
 
       <context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">
         <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
       </context>
       <context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">
         <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
       </context>
 
+      <!-- Attribute -->
+      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-attribute-pre" fallthrough="true" fallthroughContext="#pop!attribute-pre">
+        <DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->
+      </context>
       <context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces/>
-        <DetectChar attribute="Comment" context="comment" char="#" />
         <DetectChar attribute="Operator" context="#stay" char="?" />
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
         <DetectChar attribute="String" context="attribute-string" char="'" beginRegion="String" />
         <DetectChar attribute="String" context="attribute-stringx" char="&quot;" beginRegion="String" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+(?=\s+[\[\{])" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+(?=\s+[\[\{])" />
-        <RegExpr attribute="Alias" context="attribute" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="attribute" String="\*\S+" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
+        <RegExpr attribute="Alias" context="attribute" String="&alias;" />
+        <RegExpr attribute="Reference" context="attribute" String="&reference;" />
         <IncludeRules context="values" />
+        <RegExpr attribute="Literal/Folded Operator" context="#stay" String="&literalOp;(?=&endValue;)" />
       </context>
 
       <context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces/>
-        <DetectChar attribute="Comment" context="comment" char="#" />
 
         <DetectChar attribute="Operator" context="#stay" char="?" />
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
         <DetectChar attribute="String" context="attribute-string-inline" char="'" beginRegion="String" />
         <DetectChar attribute="String" context="attribute-stringx-inline" char="&quot;" beginRegion="String" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+(?=\s+[\[\{])" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+(?=\s+[\[\{])" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
       </context>
 
+      <!-- Attribute Inline, Within List -->
+      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-list-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!list-attribute-pre-inline">
+        <DetectChar attribute="Key Points Operator" context="#pop!list-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
+      </context>
       <context attribute="Attribute" lineEndContext="#pop" name="list-attribute-pre-inline" fallthrough="true" fallthroughContext="list-attribute-inline">
         <IncludeRules context="default-attribute-pre-inline" />
-        <RegExpr attribute="Alias" context="list-attribute-inline" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="list-attribute-inline" String="\*\S+" />
+        <RegExpr attribute="Alias" context="list-attribute-inline" String="&alias;" />
+        <RegExpr attribute="Reference" context="list-attribute-inline" String="&reference;" />
 
         <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",]" />
         <IncludeRules context="values-inline" />
       </context>
+
+      <!-- Attribute Inline, Within Hash -->
+      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-hash-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!hash-attribute-pre-inline">
+        <DetectChar attribute="Key Points Operator" context="#pop!hash-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
+      </context>
       <context attribute="Attribute" lineEndContext="#pop" name="hash-attribute-pre-inline" fallthrough="true" fallthroughContext="hash-attribute-inline">
         <IncludeRules context="default-attribute-pre-inline" />
-        <RegExpr attribute="Alias" context="hash-attribute-inline" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="hash-attribute-inline" String="\*\S+" />
+        <RegExpr attribute="Alias" context="hash-attribute-inline" String="&alias;" />
+        <RegExpr attribute="Reference" context="hash-attribute-inline" String="&reference;" />
 
         <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",}" />
         <IncludeRules context="values-inline" />
       </context>
 
+      <!-- List -->
       <!-- Context "find-values-list" highlights values and then sends to "list-element" -->
-      <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list">
+      <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces />
         <DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
       </context>
-      <context attribute="List" lineEndContext="#stay" name="list-element">
-        <DetectChar attribute="Comment" context="comment" char="#" />
+      <context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
 
         <DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />
         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
 
-        <RegExpr attribute="Key" context="list-attribute-pre-inline" String="[^&quot;'#\-,\]\s][^:#,\]]*:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="list-attribute-pre-inline" String="\-([^\s:#,\]][^:#,\]]*)?\:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="list-attribute-pre-inline" String="&keyDQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="list-attribute-pre-inline" String="&keySQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="[^&quot;'#\-,\]\s][^:#,\]]*(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="\-([^\s:#,\]][^:#,\]]*)?(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keyDQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keySQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
 
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
         <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
         <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
 
@@ -188,75 +237,77 @@
         <IncludeRules context="values-list" />
       </context>
 
-      <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element">
+      <!-- Hash -->
+      <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces />
         <DetectChar attribute="Operator" context="#pop!hash-element" char="?" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
       </context>
-      <context attribute="Hash" lineEndContext="#stay" name="hash-element">
+      <context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">
+        <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
         <DetectSpaces/>
-        <DetectChar attribute="Comment" context="comment" char="#" />
 
-        <RegExpr attribute="Key" context="hash-attribute-pre-inline" String="[^\s&quot;'#\-,\}\s][^:#,\}]*:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="hash-attribute-pre-inline" String="\-([^\s:#,\}][^:#,\}]*)?\:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="hash-attribute-pre-inline" String="&keyDQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="hash-attribute-pre-inline" String="&keySQ;:(?=\s|$)"/>
-        <RegExpr attribute="Key" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="[^\s&quot;'#\-,\}\s][^:#,\}]*(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="\-([^\s:#,\}][^:#,\}]*)?(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keyDQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keySQ;(?=:(\s|$))"/>
+        <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
 
         <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />
         <DetectChar attribute="Operator" context="#pop!hash" char="," />
 
         <!-- This improves highlighting in keys with multiple lines -->
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
         <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
         <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="attribute-string">
+      <!-- Strings -->
+      <context attribute="String" lineEndContext="#stay" name="attribute-string" noIndentationBasedFolding="true">
         <DetectIdentifier />
         <IncludeRules context="escaped-char-singleq" />
         <DetectChar attribute="String" context="attribute-end" char="'" endRegion="String" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="attribute-stringx">
+      <context attribute="String" lineEndContext="#stay" name="attribute-stringx" noIndentationBasedFolding="true">
         <DetectIdentifier />
         <IncludeRules context="escaped-char-doubleq" />
         <DetectChar attribute="String" context="attribute-end" char="&quot;" endRegion="String" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="attribute-string-inline">
+      <context attribute="String" lineEndContext="#stay" name="attribute-string-inline" noIndentationBasedFolding="true">
           <DetectIdentifier />
           <IncludeRules context="escaped-char-singleq" />
           <DetectChar attribute="String" context="attribute-end-inline" char="'" endRegion="String" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline">
+      <context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline" noIndentationBasedFolding="true">
           <DetectIdentifier />
           <IncludeRules context="escaped-char-doubleq" />
           <DetectChar attribute="String" context="attribute-end-inline" char="&quot;" endRegion="String" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">
+          <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
           <DetectSpaces attribute="Normal Text" context="#stay"/>
-          <DetectChar attribute="Comment" context="comment" char="#" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">
+          <RegExpr attribute="Comment" context="comment" String="(^|\s+)#" />
           <DetectSpaces attribute="Normal Text" context="#stay"/>
           <AnyChar attribute="String" context="#pop#pop#pop"  lookAhead="true" String="}]"/>
           <DetectChar attribute="Operator" context="#pop#pop#pop" lookAhead="true" char="," />
-          <DetectChar attribute="Comment" context="comment" char="#" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="string">
+      <context attribute="String" lineEndContext="#stay" name="string" noIndentationBasedFolding="true">
         <DetectIdentifier />
         <IncludeRules context="escaped-char-singleq" />
         <DetectChar attribute="String" context="#pop" char="'" endRegion="String" />
       </context>
 
-      <context attribute="String" lineEndContext="#stay" name="stringx">
+      <context attribute="String" lineEndContext="#stay" name="stringx" noIndentationBasedFolding="true">
         <DetectIdentifier />
         <IncludeRules context="escaped-char-doubleq" />
         <DetectChar attribute="String" context="#pop" char="&quot;" endRegion="String" />
@@ -351,8 +402,10 @@
              >  key: !!type >-
              >   ^Start the folded text
         -->
+        <RegExpr attribute="Key Points Operator" context="literal-block-key" column="0"
+                 String="^(&space;*)\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
         <RegExpr attribute="Key" context="literal-block-key" column="0"
-                 String="^(&space;*)(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)?\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
+                 String="^(&space;*)(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)(?=\:\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
 
         <!-- CASE 4: Is there an operator "?" or "-" at the beginning of the line.
              NOTE: Nested characters "-" and "?" are considered as part of the indentation.
@@ -385,7 +438,7 @@
 
       <!-- If the line with the literal operator starts with the "-" or "?" operator.
            NOTE: The indentation capture is limited to 6 nested operators. -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash">
+      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash" noIndentationBasedFolding="true">
         <!-- With Key: Capture the Key indentation -->
         <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s2" String="^(&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
         <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
@@ -402,157 +455,163 @@
         <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
       </context>
       <!-- Capture the indentation of data type, reference or alias  -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other">
+      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other" noIndentationBasedFolding="true">
         <!-- The text with the same indentation will be considered literal -->
-        <RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)!!\S+" column="0" />
-        <RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&amp;\S+" column="0" />
-        <RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)\*\S+" column="0" />
+        <RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)&dataTypes;" column="0" />
+        <RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&alias;" column="0" />
+        <RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)&reference;" column="0" />
         <!-- The text after a space will be considered literal (empty text is captured) -->
-        <RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()!!\S+" column="0" />
-        <RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&amp;\S+" column="0" />
-        <RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()\*\S+" column="0" />
+        <RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()&dataTypes;" column="0" />
+        <RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&alias;" column="0" />
+        <RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()&reference;" column="0" />
       </context>
 
       <!-- Highlight data/attribute before the literal operator (Note that if there is a line
            break within a string or bracket, the literal line will not be highlighted). -->
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="before-literal-operator">
+      <context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />
 
         <RegExpr attribute="Error" context="#pop#pop" String="([&amp;\*]|!!)\S*&literalOp;(?=&endValue;)" />
-        <RegExpr attribute="Data Types" context="#stay" String="!!\S+" />
-        <RegExpr attribute="Alias" context="#stay" String="&amp;\S+" />
-        <RegExpr attribute="Reference" context="#stay" String="\*\S+" />
+        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
+        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
+        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
 
         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
         <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
         <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
       </context>
-      <context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator">
+
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="dpoints-key-before-literal-operator" fallthrough="true" fallthroughContext="#pop#pop" noIndentationBasedFolding="true">
+        <DetectChar attribute="Key Points Operator" context="#pop!key-before-literal-operator" char=":" />
+      </context>
+      <context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator" noIndentationBasedFolding="true">
         <IncludeRules context="before-literal-operator" />
         <DetectChar attribute="Operator" context="#stay" char="?" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="end-literal-operator">
-        <DetectChar attribute="Comment" context="#pop!comment" char="#" />
+      <context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">
+        <RegExpr attribute="Comment" context="#pop!comment" String="(^|\s+)#" />
       </context>
 
       <!-- Common rules for the content of the literal blocks -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default" noIndentationBasedFolding="true">
         <!-- End literal/folded block -->
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
         <!-- Find literal/folded operator -->
         <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default">
+      <context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default" noIndentationBasedFolding="true">
         <!-- End literal/folded block -->
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
         <!-- Detect Key before the literal/folded operator -->
-        <RegExpr attribute="Key" context="key-before-literal-operator" String="&keyAfterOp;:(?=\s)" />
+        <RegExpr attribute="Key" context="dpoints-key-before-literal-operator" String="&keyAfterOp;(?=:\s)" />
         <RegExpr attribute="Normal Text" context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
       </context>
 
       <!-- Content of the literal block: -->
 
       <!-- If the literal operator is starting the line (after a space, use block indentation) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
 
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s)#" />
         <RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
       </context>
       <!-- If the literal operator is the first character of a line (or after header) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^\s.*$" column="0" />
 
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <DetectChar attribute="Comment" context="comment" char="#" />
+        <RegExpr attribute="Comment" context="comment" String="(^|\s)#" />
       </context>
       <!-- If there is a data type or other content before the liretal operator (use block indentation) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
 
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
         <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
       </context>
       <!-- If there is a key before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
 
         <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
         <!-- Attribute of the Key (the Key was previously highlighted) -->
+        <RegExpr attribute="Key Points Operator" context="key-before-literal-operator" String=":\s" />
         <RegExpr context="key-before-literal-operator" String="\S" lookAhead="true" />
       </context>
 
       <!-- If there are dashes/"?" before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-default" />
       </context>
       <!-- If there are dashes/"?" and a Key before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true">
+      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true" noIndentationBasedFolding="true">
         <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6%7&space;{6}\s.*$" dynamic="true" column="0" />
         <IncludeRules context="literal-block-key-default" />
       </context>
     </contexts>
 
     <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal" />
-      <itemData name="List" defStyleNum="dsNormal" />
-      <itemData name="Hash" defStyleNum="dsNormal" />
+      <itemData name="Normal Text" defStyleNum="dsAttribute" />
+      <itemData name="Attribute" defStyleNum="dsAttribute" />
+      <itemData name="List" defStyleNum="dsAttribute" />
+      <itemData name="Hash" defStyleNum="dsAttribute" />
       <itemData name="Comment" defStyleNum="dsComment" />
       <itemData name="End of Document" defStyleNum="dsComment" />
-      <itemData name="Attribute" defStyleNum="dsAttribute" />
-      <itemData name="Document Header" defStyleNum="dsOthers" />
-      <itemData name="Data Types" defStyleNum="dsDataType" />
-      <itemData name="Alias" defStyleNum="dsDataType" />
-      <itemData name="Reference" defStyleNum="dsDataType" />
-      <itemData name="Key" defStyleNum="dsFunction" />
-      <itemData name="Directive" defStyleNum="dsOthers" />
+      <itemData name="Document Header" defStyleNum="dsPreprocessor" />
+      <itemData name="Data Types" defStyleNum="dsOthers" />
+      <itemData name="Alias" defStyleNum="dsOthers" />
+      <itemData name="Reference" defStyleNum="dsOthers" />
+      <itemData name="Key" defStyleNum="dsFunction" bold="1" />
+      <itemData name="Directive" defStyleNum="dsPreprocessor" />
+      <itemData name="Key Points Operator" defStyleNum="dsKeyword" />
       <itemData name="Operator" defStyleNum="dsKeyword" />
       <itemData name="String" defStyleNum="dsString" />
       <itemData name="Escaped Character" defStyleNum="dsSpecialChar" />
-      <itemData name="Literal/Folded Operator" defStyleNum="dsString" bold="1" />
+      <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1" />
       <itemData name="Literal/Folded Block" defStyleNum="dsNormal" />
       <itemData name="Null" defStyleNum="dsChar" />
       <itemData name="Boolean" defStyleNum="dsChar" />
@@ -564,6 +623,10 @@
   </highlighting>
 
   <general>
+    <folding indentationsensitive="1" />
+    <emptyLines>
+      <emptyLine regexpr="(?:\s+|\s*#.*)"/>
+    </emptyLines>
     <comments>
       <comment name="singleLine" start="#" position="afterwhitespace" />
     </comments>
