diff --git a/user_config/local/share/gtksourceview-4/language-specs/c.lang b/user_config/local/share/gtksourceview-4/language-specs/c.lang
new file mode 100644
index 0000000..8dcf2dd
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/c.lang
@@ -0,0 +1,388 @@
+
+
+
+
+ text/x-c;text/x-csrc;image/x-xpixmap
+ *.c
+ //
+ /*
+ */
+ .c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+ ^\s*#\s*
+
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{1,3} | # one, two, or three octal digits
+ x[0-9A-Fa-f]+ | # 'x' followed by hex digits
+ u[0-9A-Fa-f]{4} | # 'u' followed by 4 hex digits
+ U[0-9A-Fa-f]{8} # 'U' followed by 8 hex digits
+ )
+
+
+
+
+
+
+
+ \%\%|\%
+ (?:[1-9][0-9]*\$)? # argument
+ [#0\-\ \+\'I]* # flags
+ (?:[1-9][0-9]*|\*)? # width
+ (?:\.\-?(?:[0-9]+|\*))? # precision
+ (?:hh|ll|[hlLqjzt])? # length modifier
+ [diouxXeEfFgGaAcsCSpnm] # conversion specifier
+
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (include|import)\s*
+ (<.*?>)
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (include|import)\s*
+ (".*?")
+
+
+
+
+
+
+
+
+ \%{preproc-start}
+ (define|undef|error|pragma|ident|if(n?def)?|else|elif(n?def)?|endif|line|warning|embed)
+ \b
+
+
+
+
+
+
+
+
+
+
+ (L|u8|u|U)?"
+ "
+
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+ (L|u8|u|U)?'(\%{escaped-character}|.)'
+
+
+
+
+
+ (?<![\w\.])
+ ((\.[0-9]+ | [0-9]+\.[0-9]*) ([Ee][+-]?[0-9]+)? |
+ ([0-9]+[Ee][+-]?[0-9]+) |
+ (0[xX][a-fA-F0-9]*\.?[a-fA-F0-9]*[pP][+-]?[0-9]+))
+ [fFlL]?
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]*[g-zG-Z][a-zA-Z0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[0-7]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[0-7]*[89][0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[bB][01]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[bB][01]*[2-9][a-zA-Z0-9]*[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ (0|[1-9][0-9]*)[uUlL]*
+ (?![\w\.])
+
+
+
+
+ asm
+ break
+ case
+ constexpr
+ continue
+ default
+ do
+ else
+ for
+ fortran
+ goto
+ if
+ return
+ switch
+ while
+
+
+
+ enum
+ struct
+ typedef
+ union
+
+
+
+ (_A|a)lignof
+ _Generic
+ offsetof
+ (_S|s)tatic_assert
+ sizeof
+ typeof
+
+
+
+ (_B|b)ool
+ _Complex
+ _Imaginary
+ char
+ double
+ float
+ int
+ long
+ short
+ signed
+ unsigned
+ void
+ [a-z_][0-9a-z_]+(_t|_T)
+
+
+
+ (_A|a)lignas
+ _Atomic
+ (_N|n)oreturn
+ (_T|t)hread_local
+ auto
+ const
+ extern
+ inline
+ register
+ restrict
+ static
+ volatile
+
+
+
+
+ true
+ false
+
+
+
+ nullptr
+
+
+
+ NULL
+ MAX
+ MIN
+ TRUE
+ FALSE
+ __LINE__
+ __DATE__
+ __FILE__
+ __func__
+ __TIME__
+ __STDC__
+
+
+
+ stdin
+ stdout
+ stderr
+
+
+
+ SIGABRT
+ SIGALRM
+ SIGCHLD
+ SIGCONT
+ SIGFPE
+ SIGHUP
+ SIGILL
+ SIGINT
+ SIGKILL
+ SIGPIPE
+ SIGQUIT
+ SIGSEGV
+ SIGSTOP
+ SIGTERM
+ SIGTRAP
+ SIGTSTP
+ SIGTTIN
+ SIGTTOU
+ SIGUSR1
+ SIGUSR2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/cpp.lang b/user_config/local/share/gtksourceview-4/language-specs/cpp.lang
new file mode 100644
index 0000000..0265b37
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/cpp.lang
@@ -0,0 +1,132 @@
+
+
+
+
+ text/x-c++;text/x-cpp;text/x-c++src
+ *.cpp;*.cxx;*.cc;*.C;*.c++;*.tpp
+ //
+ /*
+ */
+ .cc
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ R"([^\(\)\\ ]*)\(
+ \)\%{1@start}"
+
+
+
+ and
+ and_eq
+ bitand
+ bitor
+ catch
+ compl
+ concept
+ consteval
+ constinit
+ const_cast
+ co_await
+ co_return
+ co_yield
+ decltype
+ delete
+ dynamic_cast
+ export
+ final
+ friend
+ import
+ module
+ new
+ noexcept
+ not
+ not_eq
+ operator
+ or
+ or_eq
+ override
+ private
+ protected
+ public
+ reinterpret_cast
+ requires
+ static_cast
+ this
+ thread_local
+ throw
+ try
+ typeid
+ using
+ xor
+ xor_eq
+
+ class
+ namespace
+ typename
+ template
+ virtual
+
+
+
+ explicit
+ mutable
+
+
+
+ __STDC__
+ __cplusplus
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/csharp.lang b/user_config/local/share/gtksourceview-4/language-specs/csharp.lang
new file mode 100644
index 0000000..07cb003
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/csharp.lang
@@ -0,0 +1,297 @@
+
+
+
+
+ text/x-csharpsrc;text/x-csharp
+ *.cs
+ //
+ /*
+ */
+ .cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ ^\s*#\s*
+
+
+
+
+
+ \%{preproc-start}
+ (define|undef|if(n?def)?|else|elif|endif|line|error|warning|region|endregion)
+ \b
+
+
+
+
+
+
+
+
+ @"
+ "
+
+
+
+ async
+ await
+ class
+ delegate
+ enum
+ event
+ interface
+ namespace
+ struct
+ using
+ abstract
+ const
+ explicit
+ extern
+ fixed
+ implicit
+ internal
+ lock
+ out
+ override
+ params
+ partial
+ private
+ protected
+ public
+ record
+ ref
+ sealed
+ static
+ readonly
+ unsafe
+ virtual
+ volatile
+ add
+ as
+ assembly
+ base
+ break
+ case
+ catch
+ checked
+ continue
+ default
+ do
+ else
+ finally
+ for
+ foreach
+ get
+ goto
+ if
+ in
+ init
+ is
+ nameof
+ new
+ remove
+ return
+ set
+ sizeof
+ stackalloc
+ super
+ switch
+ this
+ throw
+ try
+ typeof
+ unchecked
+ value
+ var
+ void
+ while
+ yield
+
+
+
+ bool
+ byte
+ char
+ decimal
+ double
+ dynamic
+ float
+ int
+ long
+ object
+ operator
+ sbyte
+ short
+ string
+ uint
+ ulong
+ ushort
+
+
+
+ null
+
+
+
+ false
+ true
+
+
+
+
+ (?<![\w\.])
+ [0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ 0[xX][a-fA-F0-9]+[uUlL]*
+ (?![\w\.])
+
+
+
+
+
+ (?<![\w\.])
+ ((\.[0-9]+|[0-9]+\.[0-9]*)([Ee][+-]?[0-9]*)?[FfDdMm]?|
+ ([0-9]+[Ee][+-]?[0-9]*)[FfDdMm]? |
+ ([0-9]+)[FfDdMm])
+ (?![\w\.])
+
+
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbtfav\?] | # escaped character
+ [0-7]{1,3} | # one, two, or three octal digits
+ x[0-9A-Fa-f]+ # 'x' followed by hex digits
+ )
+
+
+
+ "
+ "
+
+
+ {[0-9][0-9:\#\%,./cdefgnrxtsuDTFGMY]*}
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+
+ '(\%{escaped-character}|.)'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/def.lang b/user_config/local/share/gtksourceview-4/language-specs/def.lang
new file mode 100644
index 0000000..c127a30
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/def.lang
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $^
+
+
+
+ (?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}]
+
+
+ (?!\x{2E2F}) [\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}]
+
+
+ (?![\x{037A}\x{0E33}\x{0EB3}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}\x{FF9E}-\x{FF9F}])
+ \%{unicode-id-start}
+
+
+ (?![\x{037A}\x{309B}-\x{309C}\x{FC5E}-\x{FC63}\x{FDFA}-\x{FDFB}\x{FE70}\x{FE72}\x{FE74}\x{FE76}\x{FE78}\x{FE7A}\x{FE7C}\x{FE7E}])
+ \%{unicode-id-continue}
+
+
+
+ (?<![\w\.]) ([1-9][0-9]* | 0) (?![\w\.])
+
+
+ (?<![\w\.]) 0 [0-7]+ (?![\w\.])
+
+
+ (?<![\w\.]) 0 [xX] [0-9a-fA-F]+ (?![\w\.])
+
+
+ \b
+ ([0-9]+ e [-+]? [0-9]+ |
+ ([0-9]* \. [0-9]+ | [0-9]+ \.)
+ (e [-+]? [0-9]+)?) [fl]?
+ \b
+
+
+
+ \%{decimal}
+
+
+ \%{octal}
+
+
+ \%{hexadecimal}
+
+
+ \%{float}
+
+
+
+
+ \%[ # separator
+ (https?|ftp|nntp|news|javascript|about): # protocol
+ [^\ \\]* [^\ \\.:;,?><)] # address
+ (?![a-z0-9_.-]) # separator
+
+
+
+ \%[ # separator
+ (mailto:)? # optional "mailto:"
+ [a-z0-9_.+-]+ # user name
+ @ # at
+ [a-z0-9_.+-]+ # domain
+ \%] # separator
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \\$
+ ^
+
+
+
+
+
+
+ ^#!
+ $
+
+
+
+ \\.
+
+
+
+
+ "
+ "
+
+
+
+
+
+
+
+
+ '
+ '
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/java.lang b/user_config/local/share/gtksourceview-4/language-specs/java.lang
new file mode 100644
index 0000000..af7c6c8
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/java.lang
@@ -0,0 +1,259 @@
+
+
+
+
+ text/x-java
+ *.java
+ //
+ /*
+ */
+ .java
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbtf] | # escaped character
+ [0-7]{1,3} | # latin encoded char
+ u[0-9a-fA-F]{4} # unicode char
+ )
+
+
+
+
+
+ "
+ "
+
+
+ \%{escaped-character}
+
+
+
+
+
+ """\s*$
+ """
+
+
+ \%{escaped-character}
+
+
+
+
+
+ '((\%{escaped-character})|.)'
+
+
+
+
+
+
+ \B@\w*
+
+
+
+ exports
+ import
+ module
+ open
+ opens
+ package
+ provides
+ requires
+ to
+ transitive
+ uses
+ with
+
+
+
+ class
+ enum
+ extends
+ implements
+ instanceof
+ interface
+ native
+ non-sealed
+ permits
+ record
+ sealed
+ throws
+
+
+
+ boolean
+ byte
+ char
+ double
+ float
+ int
+ long
+ short
+ var
+ void
+
+
+
+ abstract
+ final
+ static
+ strictfp
+ synchronized
+ transient
+ volatile
+
+
+
+ private
+ protected
+ public
+
+
+
+ assert
+ break
+ case
+ catch
+ continue
+ default
+ do
+ else
+ finally
+ for
+ if
+ return
+ throw
+ switch
+ try
+ while
+ yield
+
+
+
+ new
+ super
+ this
+
+
+
+ const
+ goto
+ _
+
+
+
+ null
+
+
+
+ false
+ true
+
+
+
+
+ \b(
+ \d+[fd] |
+ ((\d*\.\d+|\d+\.)(e[-+]?\d+)? |
+ \d+e[-+]?\d+)[fd]?
+ )
+
+
+
+ \b(0x[\da-f]+|0[0-7]+)l?
+
+
+ \b([1-9]\d*|0)l?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/javascript.lang b/user_config/local/share/gtksourceview-4/language-specs/javascript.lang
new file mode 100644
index 0000000..4b3223a
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/javascript.lang
@@ -0,0 +1,1060 @@
+
+
+
+
+ application/javascript;application/x-javascript;text/x-javascript;text/javascript;text/x-js
+ *.js;*.mjs
+ //
+ /*
+ */
+ .js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?!\N{U+2E2F})[\p{L}\p{Nl}\N{U+1885}-\N{U+1886}\N{U+2118}\N{U+212E}\N{U+309B}-\N{U+309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\N{U+00B7}\N{U+0387}\N{U+1369}-\N{U+1371}\N{U+19DA}$\N{U+200C}\N{U+200D}]
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+
+ \\u (?: [0-9a-fA-F]{4} | { [0-9a-fA-F]{1,} } )
+
+
+
+
+ \%{def:unicode-id-start} | [$_] | \%{unicode-escape}
+
+
+
+
+ \%{def:unicode-id-continue} | [$\N{U+200C}\N{U+200D}]
+
+
+
+
+ \%{identifier-char} | \%{unicode-escape}
+
+
+
+
+ \%{identifier-start} \%{identifier-part}*
+
+
+
+ (?<! \%{identifier-char} ) (?= \%{identifier-start} )
+
+
+
+ (?<! \%{identifier-char} )
+
+
+
+ (?! \%{identifier-char} )
+
+
+
+
+
+ [\t\N{U+000B}\f \N{U+00A0}\N{U+FEFF}\p{Zs}]
+
+
+
+
+ [^\t\N{U+000B}\f \N{U+00A0}\N{U+FEFF}\p{Zs}\n\r\N{U+2028}\N{U+2029}]
+
+
+
+ (?= \%{not-whitespace} )
+
+
+
+ ; | \%{before-next-token}
+
+
+
+ \%{statement-end} | $
+
+
+
+
+
+\*
+
+\.\.\.
+
+\.\.\.
+
+
+
+
+ (?<! \%{identifier-char} | \. )
+
+
+
+ (?! \%{identifier-part} | \. )
+
+
+
+
+
+ \%{keyword-start} as \%{keyword-end}
+
+
+
+ \%{keyword-start} async \%{keyword-end}
+
+
+
+ \%{keyword-start} await \%{keyword-end}
+
+
+
+ \%{keyword-start} break \%{keyword-end}
+
+
+
+ \%{keyword-start} case \%{keyword-end}
+
+
+
+ \%{keyword-start} catch \%{keyword-end}
+
+
+
+ \%{keyword-start} class \%{keyword-end}
+
+
+
+ \%{keyword-start} const \%{keyword-end}
+
+
+
+ \%{keyword-start} continue \%{keyword-end}
+
+
+
+ \%{keyword-start} debugger \%{keyword-end}
+
+
+
+ \%{keyword-start} default \%{keyword-end}
+
+
+
+ \%{keyword-start} delete \%{keyword-end}
+
+
+
+ \%{keyword-start} do \%{keyword-end}
+
+
+
+ \%{keyword-start} else \%{keyword-end}
+
+
+
+ \%{keyword-start} export \%{keyword-end}
+
+
+
+ \%{keyword-start} extends \%{keyword-end}
+
+
+
+ \%{keyword-start} false \%{keyword-end}
+
+
+
+ \%{keyword-start} finally \%{keyword-end}
+
+
+
+ \%{keyword-start} for \%{keyword-end}
+
+
+
+ \%{keyword-start} from \%{keyword-end}
+
+
+
+ \%{keyword-start} function \%{keyword-end}
+
+
+
+ \%{keyword-start} get \%{keyword-end}
+
+
+
+ \%{keyword-start} if \%{keyword-end}
+
+
+
+ \%{keyword-start} import \%{keyword-end}
+
+
+
+ \%{keyword-start} in \%{keyword-end}
+
+
+
+ \%{keyword-start} instanceof \%{keyword-end}
+
+
+
+ \%{keyword-start} let \%{keyword-end}
+
+
+
+ \%{keyword-start} meta \%{keyword-end}
+
+
+
+ \%{keyword-start} new \%{keyword-end}
+
+
+
+ \%{keyword-start} null \%{keyword-end}
+
+
+
+ \%{keyword-start} of \%{keyword-end}
+
+
+
+ \%{keyword-start} return \%{keyword-end}
+
+
+
+ \%{keyword-start} set \%{keyword-end}
+
+
+
+ \%{keyword-start} static \%{keyword-end}
+
+
+
+ \%{keyword-start} super \%{keyword-end}
+
+
+
+ \%{keyword-start} switch \%{keyword-end}
+
+
+
+ \%{keyword-start} target \%{keyword-end}
+
+
+
+ \%{keyword-start} this \%{keyword-end}
+
+
+
+ \%{keyword-start} throw \%{keyword-end}
+
+
+
+ \%{keyword-start} true \%{keyword-end}
+
+
+
+ \%{keyword-start} try \%{keyword-end}
+
+
+
+ \%{keyword-start} typeof \%{keyword-end}
+
+
+
+ \%{keyword-start} var \%{keyword-end}
+
+
+
+ \%{keyword-start} void \%{keyword-end}
+
+
+
+ \%{keyword-start} while \%{keyword-end}
+
+
+
+ \%{keyword-start} with \%{keyword-end}
+
+
+
+ \%{keyword-start} yield \%{keyword-end}
+
+
+
+
+ (?: \%{async-keyword} \%{optional-whitespace-or-comments} )?
+ \%{function-keyword}
+
+
+
+
+ # get property() / set property()
+ (?: \%{js:get-keyword} | \%{js:set-keyword} )
+ (?=
+ \%{js:optional-whitespace-or-comments}
+ \%{js:identifier-start}
+ ) |
+
+ # async method() / async * generator()
+ \%{js:async-keyword}
+ (?=
+ \%{js:optional-whitespace-or-comments}
+ (?: \%{js:identifier-start} | \%{js:generator-modifier} )
+ ) |
+
+ # * generator()
+ (?= \%{js:generator-modifier} )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?=\*/)
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ await
+ break
+ case
+ catch
+ class
+ const
+ continue
+ debugger
+ default
+ delete
+ do
+ else
+ export
+ extends
+ finally
+ for
+ function
+ if
+ import
+ instanceof
+ in
+ new
+ return
+ super
+ switch
+ this
+ throw
+ try
+ typeof
+ var
+ void
+ while
+ with
+ yield
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ let
+ static
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ enum
+
+
+
+
+ \%{keyword-start}
+ \%{keyword-end}
+ implements
+ interface
+ package
+ private
+ protected
+ public
+
+
+
+
+
+
+
+
+ \%{identifier}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+ =
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ \%{rest-syntax}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+ \%{spread-syntax}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+ \%{generator-modifier}
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \[
+ ]
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ ,
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ }
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+ ,
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{before-next-token}
+ \%{before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang b/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang
new file mode 100644
index 0000000..fa829db
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/kotlin.lang
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+ text/x-kotlin
+ *.kt;*.kts
+ //
+ /*
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+ [a-zA-Z_$][a-zA-Z_$0-9]*
+
+ \%{simple-name}(\.\%{simple-name})*
+
+
+ field|file|property|get|set|receiver|param|setparam|delegate
+
+
+
+
+ @(\%{annotation-target}:)?
+ ( \%{compound-name} | \[ (\%{compound-name} \s*)+ \] )
+
+
+
+
+
+
+ it
+ super
+ this@?
+
+
+
+ \\( # leading backslash
+ [\\\"\'nrbt$] | # escaped character
+ u[0-9a-fA-F]{4} # unicode char
+ )
+
+
+
+ '(\%{escaped-character}|.)'
+
+
+
+ '(\%{escaped-character}|.)[^\s]+'
+
+
+
+ class
+ constructor
+ fun
+ get
+ init
+ interface
+ object
+ set
+ typealias
+ val
+ var
+
+
+
+ (<|,) *(in|out)
+
+
+
+
+
+
+
+ as
+ break@?
+ catch
+ continue@?
+ do
+ else
+ finally
+ for
+ if
+ in
+ is
+ return@?
+ throw
+ to
+ try
+ when
+ while
+
+
+
+ import
+ package
+
+
+
+ `
+ `
+
+
+
+ abstract
+ annotation
+ by
+ companion
+ const
+ crossinline
+ data
+ enum
+ external
+ final
+ infix
+ inline
+ inner
+ internal
+ lateinit
+ noinline
+ open
+ operator
+ override
+ private
+ protected
+ public
+ reified
+ sealed
+ suspend
+ tailrec
+ vararg
+ where
+
+
+
+
+ \b ( 0x [0-9A-Fa-f][0-9A-Fa-f_]* # hex literal
+ | 0b [01][01_]* # binary literal
+ | ([0-9]+[Ee][-]?[0-9]+|
+ ([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFdD]?|
+ [0-9]+[FfDd] # floating-point literal
+ | [0-9][0-9_]*L? # integer literal
+ )
+
+
+
+
+ [-+*/%=.!|?@:;,_&<>()\[\]]
+
+
+
+ false
+ true
+ null
+
+
+
+ \$[a-zA-Z]+
+
+
+
+ \${
+ }
+
+
+
+
+
+
+ "
+ "
+
+
+ \%{escaped-character}
+
+
+
+
+
+
+
+ """
+ """
+
+
+
+
+
+
+
+ dynamic
+
+
+ Annotation
+ Any
+ Array
+ AssertionError
+ Boolean
+ BooleanArray
+ Byte
+ ByteArray
+ Char
+ CharArray
+ CharSequence
+ ClassCastException
+ Comparable
+ Comparator
+ ConcurrentModificationException
+ DeprecationLevel
+ Double
+ DoubleArray
+ Enum
+ Error
+ Exception
+ Float
+ FloatArray
+ Function
+ IllegalArgumentException
+ IllegalStateException
+ IndexOutOfBoundsException
+ Int
+ IntArray
+ KotlinVersion
+ Lazy
+ LazyThreadSafetyMode
+ Long
+ LongArray
+ NoSuchElementException
+ NoWhenBranchMatchedException
+ Nothing
+ NullPointerException
+ Number
+ NumberFormatException
+ Pair
+ RuntimeException
+ Short
+ ShortArray
+ String
+ Throwable
+ Triple
+ Unit
+ UnsupportedOperationException
+ NotImplementedError
+
+
+ AbstractCollection
+ AbstractIterator
+ AbstractList
+ AbstractMap
+ AbstractMutableCollection
+ AbstractMutableList
+ AbstractMutableMap
+ AbstractMutableSet
+ AbstractSet
+ ArrayList
+ BooleanIterator
+ ByteIterator
+ CharIterator
+ Collection
+ DoubleIterator
+ FloatIterator
+ Grouping
+ HashMap
+ HashSet
+ IndexedValue
+ IntIterator
+ Iterable
+ Iterator
+ LinkedHashMap
+ LinkedHashSet
+ List
+ ListIterator
+ LongIterator
+ Map
+ MutableCollection
+ MutableIterable
+ MutableIterator
+ MutableList
+ MutableListIterator
+ MutableMap
+ MutableSet
+ RandomAccess
+ Set
+ ShortIterator
+
+
+ CharProgression
+ CharRange
+ ClosedFloatingPointRange
+ ClosedRange
+ IntProgression
+ IntRange
+ LongProgression
+ LongRange
+
+
+ Sequence
+
+
+ Appendable
+ CharCategory
+ CharDirectionality
+ Charsets
+ MatchGroup
+ MatchGroupCollection
+ MatchNamedGroupCollection
+ MatchResult
+ Regex
+ RegexOption
+ StringBuilder
+ Typography
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/python.lang b/user_config/local/share/gtksourceview-4/language-specs/python.lang
new file mode 100644
index 0000000..f4c8187
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/python.lang
@@ -0,0 +1,484 @@
+
+
+
+
+ text/x-python;application/x-python
+ *.py;*.py2
+ #
+ .py2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+ [_a-zA-Z][_a-zA-Z0-9]*
+ [1-9][0-9]*
+
+
+ (\%{identifier}\.)*\%{identifier}
+
+
+ (\.*\%{identifier-path}|\.+)
+
+
+
+
+
+ % # leading % sign
+ \(\%{identifier}\)? # mapping key
+ [#0\-\ \+]* # conversion flags
+ (\-?\%{number}|\*)? # minimum field width
+ (\.(\-?\%{number}|\*))? # precision
+ (hlL)? # length modifier
+ [diouxXeEfFgGcrs%] # conversion type
+
+
+
+
+
+
+ \\( # leading backslash
+ [\\'"abfnrtv] | # single escaped char
+ N\{[0-9A-Z\ -]+\} | # named unicode character
+ u[0-9A-Fa-f]{4} | # xxxx - character with 16-bit hex value xxxx
+ U[0-9A-Fa-f]{8} | # xxxxxxxx - character with 32-bit hex value xxxxxxxx
+ x[0-9A-Fa-f]{1,2} | # \xhh - character with hex value hh
+ [0-7]{1,3} # \ooo - character with octal value ooo
+ )
+
+
+
+ (u|U)?
+ (r|ur|R|UR|Ur|uR)
+
+
+ \%{string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ `
+ `
+
+
+
+
+
+
+ (?<![\w\.])
+ self
+ __name__
+ __debug__
+
+
+
+ (?<![\w\.])
+ False
+ True
+
+
+
+ ( (\d+)?\.\d+ | \d+\. ) |
+ ( (\d+|(\d+)?\.\d+|\d+\.)[eE][+-]?\d+ )
+
+
+
+ (?<![\w\.])(\%{float}|\d+)[jJ]\b
+
+
+
+ (?<![\w\.])\%{float}(?![\w\.])
+
+
+
+ (?<![\w\.])([1-9][0-9]*|0)[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[0-7]+[lL]?(?![\w\.])
+
+
+
+ (?<![\w\.])0[xX][0-9A-Fa-f]+[lL]?(?![\w\.])
+
+
+
+
+ (from)
+ \s+
+ (\%{relative-path})
+
+
+
+
+
+
+
+
+ import
+ from
+ as
+
+
+
+
+
+ (def)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+
+
+ (class)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+ @\%{identifier-path}
+
+
+
+ and
+ assert
+ break
+ class
+ continue
+ def
+ del
+ elif
+ else
+ except
+ finally
+ for
+ global
+ if
+ in
+ is
+ lambda
+ not
+ or
+ pass
+ raise
+ return
+ try
+ while
+ with
+ yield
+
+
+
+ exec
+ print
+
+
+
+ (?<![\w\.])
+ Ellipsis
+ None
+ NotImplemented
+
+
+
+ (?<![\w\.])
+ ArithmeticError
+ AssertionError
+ AttributeError
+ EnvironmentError
+ EOFError
+ Exception
+ FloatingPointError
+ ImportError
+ IndentationError
+ IndexError
+ IOError
+ KeyboardInterrupt
+ KeyError
+ LookupError
+ MemoryError
+ NameError
+ NotImplementedError
+ OSError
+ OverflowError
+ ReferenceError
+ RuntimeError
+ StandardError
+ StopIteration
+ SyntaxError
+ SystemError
+ SystemExit
+ TabError
+ TypeError
+ UnboundLocalError
+ UnicodeDecodeError
+ UnicodeEncodeError
+ UnicodeError
+ UnicodeTranslateError
+ ValueError
+ WindowsError
+ ZeroDivisionError
+ Warning
+ UserWarning
+ DeprecationWarning
+ PendingDeprecationWarning
+ SyntaxWarning
+ OverflowWarning
+ RuntimeWarning
+ FutureWarning
+
+
+
+ (?<![\w\.])
+ __import__
+ abs
+ all
+ any
+ bin
+ bool
+ callable
+ chr
+ classmethod
+ compile
+ complex
+ delattr
+ dict
+ dir
+ divmod
+ enumerate
+ eval
+ filter
+ float
+ format
+ frozenset
+ getattr
+ globals
+ hasattr
+ hash
+ hex
+ id
+ input
+ int
+ isinstance
+ issubclass
+ iter
+ len
+ list
+ locals
+ map
+ max
+ min
+ object
+ oct
+ open
+ ord
+ pow
+ property
+ range
+ repr
+ reversed
+ round
+ setattr
+ set
+ slice
+ sorted
+ staticmethod
+ str
+ sum
+ super
+ tuple
+ type
+ vars
+ zip
+
+
+
+ (?<![\w\.])
+ apply
+ basestring
+ buffer
+ cmp
+ coerce
+ execfile
+ file
+ intern
+ long
+ raw_input
+ reduce
+ reload
+ unichr
+ unicode
+ xrange
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/python3.lang b/user_config/local/share/gtksourceview-4/language-specs/python3.lang
new file mode 100644
index 0000000..e79d4e0
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/python3.lang
@@ -0,0 +1,385 @@
+
+
+
+
+ text/x-python;application/x-python;text/x-python3
+ *.py;*.py3;*.pyi
+ #
+ .py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+ (?> (?: _ | \%{def:unicode-xid-start} ) \%{def:unicode-xid-continue}* )
+
+ [1-9][0-9]*
+
+
+ (\%{identifier}\.)*\%{identifier}
+
+
+ (\.*\%{identifier-path}|\.+)
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+ % # leading % sign
+ \(\%{identifier}\)? # mapping key
+ [#0\-\ \+]* # conversion flags
+ (\-?\%{number}|\*)? # minimum field width
+ (\.(\-?\%{number}|\*))? # precision
+ (hlL)? # length modifier
+ [diouxXeEfFgGcrs%] # conversion type
+
+
+
+
+ \{
+ \}
+
+
+
+
+
+
+
+ (\{)
+ (\})
+
+
+
+
+
+
+
+
+
+ \{\{
+
+
+ (b|B)?
+ (r|R|rb|RB|rB|Rb|br|BR|bR|Br)
+ (f|F)
+
+
+ \%{string-prefix}"""
+ """
+
+
+
+
+
+
+
+ \%{string-prefix}'''
+ '''
+
+
+
+
+
+
+
+ \%{string-prefix}"
+ "
+
+
+
+
+
+
+
+
+ \%{string-prefix}'
+ '
+
+
+
+
+
+
+
+ (\%{f-string-prefix}""")
+ (""")
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}''')
+ (''')
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}")
+ (")
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ (\%{f-string-prefix}')
+ (')
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+ \%{raw-string-prefix}"""
+ """
+
+
+
+
+
+
+ \%{raw-string-prefix}'''
+ '''
+
+
+
+
+
+
+ \%{raw-string-prefix}"
+ "
+
+
+
+
+
+
+
+ \%{raw-string-prefix}'
+ '
+
+
+
+
+
+
+
+
+ (from)
+ \s+
+ (\%{relative-path})
+
+
+
+
+
+
+
+
+
+
+ (def)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+
+
+ (class)
+ \s+
+ (\%{identifier})
+
+
+
+
+
+
+
+
+ @\%{identifier-path}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?<![\w\.])([1-9](_?[0-9])*|0)(?![\w\.])
+
+
+
+ (?<![\w\.])0[bB](_?[0-1])+(?![\w\.])
+
+
+
+ (?<![\w\.])0[oO](_?[0-7])+(?![\w\.])
+
+
+
+ (?<![\w\.])0[xX](_?[0-9A-Fa-f])+(?![\w\.])
+
+
+
+
+
+
+
+
+
+
+ async
+ await
+ nonlocal
+ match
+ case
+
+
+
+
+
+ (?<![\w\.])
+ ResourceWarning
+
+
+
+
+ (?<![\w\.])
+ ascii
+ bin
+ breakpoint
+ bytearray
+ bytes
+ exec
+ format
+ memoryview
+ next
+ print
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/language-specs/typescript.lang b/user_config/local/share/gtksourceview-4/language-specs/typescript.lang
new file mode 100644
index 0000000..948b90e
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/language-specs/typescript.lang
@@ -0,0 +1,1046 @@
+
+
+
+
+ application/typescript;application/x-typescript;text/x-typescript;text/typescript
+ *.ts
+ //
+ /*
+ */
+ .ts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?!\N{U+2E2F})[\p{L}\p{Nl}\N{U+1885}-\N{U+1886}\N{U+2118}\N{U+212E}\N{U+309B}-\N{U+309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\N{U+00B7}\N{U+0387}\N{U+1369}-\N{U+1371}\N{U+19DA}$\N{U+200C}\N{U+200D}]
+
+
+
+
+
+
+
+ (\.[\s\n\r]*[\w]+)[\s\n\r]*(?=\(.*\))
+
+
+
+
+
+
+
+
+
+ \%{js:keyword-start} abstract \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} any \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} asserts \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} bigint \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} boolean \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} declare \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} enum \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} global \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} implements \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} infer \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} interface \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} is \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} keyof \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} module \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} namespace \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} never \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} number \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} object \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} private \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} protected \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} public \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} readonly \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} require \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} string \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} symbol \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} type \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} undefined \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} unique \%{js:keyword-end}
+
+
+
+ \%{js:keyword-start} unknown \%{js:keyword-end}
+
+
+
+
+ (?: \%{abstract-keyword} \%{js:optional-whitespace-or-comments} )?
+ \%{js:class-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <
+ (?: amd-module | amd-dependency | reference )
+ (?>
+ (?:
+ \s+ |
+ (?<= \s ) [\w-]+ \s* = \s* (?: '[^']*' | "[^"]*" )
+ )*
+ )
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+ \.(?=\%{js:identifier-start})
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ (?=\.)
+ \.
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+ #(?=\%{js:identifier-start})
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \%{js:new-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \?
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ !
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ \%{js:this-keyword}
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+ \(
+ \)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \.
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:keyword-start}
+ \%{js:keyword-end}
+ Exclude
+ Extract
+ InstanceType
+ NonNullable
+ Omit
+ Partial
+ Pick
+ ReadonlyArray
+ Readonly
+ Record
+ Required
+ ReturnType
+ ThisType
+
+
+
+
+ (?<! \%{js:identifier-char} )
+ (?= (?> \%{js:identifier} ) (?! \. ) )
+
+ \%{def:always-match}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+ \(
+ \)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \.
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+ \%{js:import-keyword}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+ \%{js:identifier-container-start}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+ ,
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \%{js:before-next-token}
+ \%{js:before-next-token}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml b/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml
index d93c659..951554b 100644
--- a/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml
+++ b/user_config/local/share/gtksourceview-4/styles/peacocks-in-space.xml
@@ -1,6 +1,6 @@
- ITDominator
- A port of Dayle Rees' Peacocks In Space theme with some modifications.
+ ITDominator
+ An attempted clone of Dayle Rees' Peacocks In Space theme.
@@ -45,7 +45,7 @@
-
+
@@ -82,9 +82,9 @@
-
-
-
+
+
+
@@ -112,4 +112,9 @@
+
+
+
+
+
diff --git a/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml b/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml
new file mode 100644
index 0000000..596a258
--- /dev/null
+++ b/user_config/local/share/gtksourceview-4/styles/penguins-in-space.xml
@@ -0,0 +1,117 @@
+
+ ITDominator
+ An homage to Dayle Rees' Peacocks In Space theme.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+