More theme & syntax & Linux clipboard support

This commit is contained in:
Aloxaf 2019-07-11 13:52:18 +08:00
parent 3c79497fc4
commit d0e3f4e2d4
69 changed files with 37105 additions and 80 deletions

101
Cargo.lock generated
View File

@ -115,6 +115,15 @@ name = "byteorder"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "c2-chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "cc"
version = "1.0.37"
@ -434,6 +443,15 @@ name = "fuchsia-cprng"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "getrandom"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "gif"
version = "0.10.2"
@ -541,6 +559,9 @@ dependencies = [
name = "lazy_static"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "lazycell"
@ -826,6 +847,11 @@ dependencies = [
"num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ppv-lite86"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "proc-macro2"
version = "0.4.30"
@ -865,6 +891,18 @@ dependencies = [
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_chacha"
version = "0.1.1"
@ -874,6 +912,16 @@ dependencies = [
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_chacha"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_core"
version = "0.3.1"
@ -887,6 +935,14 @@ name = "rand_core"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rand_core"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_hc"
version = "0.1.0"
@ -895,6 +951,14 @@ dependencies = [
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_isaac"
version = "0.1.1"
@ -1005,6 +1069,14 @@ dependencies = [
"ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "remove_dir_all"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rustc-demangle"
version = "0.1.15"
@ -1116,8 +1188,14 @@ dependencies = [
"rusttype 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
"structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
"syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "spin"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "stb_truetype"
version = "0.2.6"
@ -1188,6 +1266,19 @@ dependencies = [
"yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "tempfile"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
"remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "term_size"
version = "0.3.1"
@ -1342,6 +1433,7 @@ dependencies = [
"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
"checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d"
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
@ -1379,6 +1471,7 @@ dependencies = [
"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
"checksum freetype 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "11926b2b410b469d0e9399eca4cbbe237a9ef02176c485803b29216307e8e028"
"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
"checksum getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e65cce4e5084b14874c4e7097f38cab54f47ee554f9194673456ea379dcc4c55"
"checksum gif 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "86c2f2b597d6e05c86ee5947b2223bda468fe8dad3e88e2a6520869322aaf568"
"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
@ -1425,14 +1518,19 @@ dependencies = [
"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
"checksum plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a9f075f6394100e7c105ed1af73fb1859d6fd14e49d4290d578120beb167f"
"checksum png 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "63daf481fdd0defa2d1d2be15c674fbfa1b0fd71882c303a91f9a79b3252c359"
"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c"
"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
"checksum rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e193067942ef6f485a349a113329140d0ab9e2168ce92274499bb0e9a4190d9d"
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca"
"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
@ -1445,6 +1543,7 @@ dependencies = [
"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
"checksum redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe5204c3a17e97dde73f285d49be585df59ed84b50a872baf416e73b62c3828"
"checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48"
"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af"
"checksum rusttype 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "654103d61a05074b268a107cf6581ce120f0fc0115f2610ed9dfea363bb81139"
"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
@ -1458,12 +1557,14 @@ dependencies = [
"checksum servo-fontconfig 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a088f8d775a5c5314aae09bd77340bc9c67d72b9a45258be34c83548b4814cd9"
"checksum servo-fontconfig-sys 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b46d201addcfbd25c1798ad1281d98c40743824e0b0f1e611bd3d5d0d31a7b8d"
"checksum servo-freetype-sys 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4ccb6d0d32d277d3ef7dea86203d8210945eb7a45fba89dd445b3595dd0dfc"
"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55"
"checksum stb_truetype 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "69b7df505db8e81d54ff8be4693421e5b543e08214bd8d99eb761fcb4d5668ba"
"checksum structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "16c2cdbf9cc375f15d1b4141bc48aeef444806655cd0e904207edc8d68d86ed7"
"checksum structopt-derive 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "53010261a84b37689f9ed7d395165029f9cc7abb9f56bbfe86bee2597ed25107"
"checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c"
"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f"
"checksum syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e80b8831c5a543192ffc3727f01cf0e57579c6ac15558e3048bfb5708892167b"
"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
"checksum term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5b9a66db815dcfd2da92db471106457082577c3c278d4138ab3e3b4e189327"
"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330"
"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"

View File

@ -17,6 +17,7 @@ failure = "0.1.5"
clipboard = "0.5.0"
structopt = { version = "0.2.18", default-features = false, features = [ "color", "wrap_help" ] }
itertools = "0.8.0"
tempfile = "3.1.0"
[build-dependencies]
syntect = "3.2"

View File

@ -5,10 +5,13 @@ A [Carbon](https://github.com/dawnlabs/carbon) alternative implemented in Rust.
## TODO
- [x] MVP
- [ ] More themes
- [ ] More syntaxes support
- [x] More themes
- [x] More syntaxes support
- [ ] Better font support
- [ ] Clipboard support
- [x] Get code from clipboard
- [ ] Paste the image to clipboard
- [x] Linux
- [ ] Windows
- [ ] MacOS
- [ ] Watermark

3
assets/README.md Normal file
View File

@ -0,0 +1,3 @@
# Assets
Silicon uses [bat](https://github.com/sharkdp/bat/tree/master/assets)'s syntax and theme resources.

19
assets/sync_from_bat.py Normal file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env python
# Sync themes and syntaxes from [bat](https://github.com/sharkdp/bat/tree/master/assets)
import os
from glob import glob
from shutil import copy
if not os.path.exists('../../bat'):
os.system('git clone https://github.com/sharkdp/bat ../../bat')
else:
os.system('git -C ../../bat pull')
for syntax_file in glob('../../bat/assets/syntaxes/**/*.sublime-syntax'):
copy(syntax_file, './syntaxes/')
for theme_file in glob('../../bat/assets/themes/**/*.tmTheme'):
copy(theme_file, './themes/')
print('Finished.')

View File

@ -0,0 +1,209 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: AWK
scope: source.awk
file_extensions:
- awk
# References
# http://pubs.opengroup.org/onlinepubs/009695399/utilities/awk.html
# http://www.gnu.org/software/gawk/manual/html_node/index.html
# http://www.grymoire.com/Unix/Awk.html
# http://www.cs.mun.ca/~yzchen/bib/nawkUS.pdf
variables:
NAME: '[A-Za-z_][A-Za-z_0-9]*'
contexts:
main:
- include: comment
- include: procedure
- include: pattern
comment:
- match: '(?<!\S)(#)(?!\{).*$\n?'
scope: comment.line.number-sign.awk
captures:
1: punctuation.definition.comment.awk
procedure:
- match: '{'
scope: meta.brace.curly.awk
push:
- match: '}'
scope: meta.brace.curly.awk
pop: true
- include: comment
- include: procedure
- include: keyword
- include: expression
pattern:
- include: function-definition
- include: builtin-pattern
- include: expression
#TODO: Resolve regex / operator ambiguity
#Will probably have to split expression
#into seperate unary/binary states
#See https://github.com/sublimehq/Packages/blob/master/JavaScript/JavaScript.sublime-syntax
expression:
- include: comment
- include: command
- include: function
- include: constant
- include: variable
- include: groupings
- include: prefix-operator
- include: regexp
- match: '(?=[\S])'
pop: true
groupings:
- match: \(
scope: meta.brace.round.awk
- match: \)(?=\s*{)
scope: meta.brace.round.awk
- match: \)
scope: meta.brace.round.awk
push: infix-operator
- match: \,
scope: punctuation.separator.parameters.awk
builtin-pattern:
- match: \b(BEGINFILE|BEGIN|ENDFILE|END)\b
scope: constant.language.awk
function-definition:
- match: \b(function)\s+({{NAME}})(\()
captures:
1: storage.type.function.awk
2: entity.name.function.awk
3: punctuation.definition.parameters.begin.awk
push:
- match: \)
captures:
0: punctuation.definition.parameters.end.awk
pop: true
- match: \b(\w+)\b
scope: variable.parameter.function.awk
- match: \b(,)\b
scope: punctuation.separator.parameters.awk
constant:
- include: numeric-constant
- include: string-constant
numeric-constant:
- match: '\b[0-9]+(?:\.[0-9]+)?(?:e[+-][0-9]+)?\b'
scope: constant.numeric.awk
push: infix-operator
string-constant:
- match: '"'
scope: punctuation.definition.string.begin.awk
push:
- meta_scope: string.quoted.double.awk
- match: '"'
scope: punctuation.definition.string.end.awk
pop: true
- include: escaped-char
escaped-char:
- match: '\\(?:[\\abfnrtv/"]|x[0-9A-Fa-f]{2}|[0-7]{3})'
scope: constant.character.escape.awk
# To avoid ambiguity with division operators regexps are only
# valid in places were division is not.
regexp:
- match: /
scope: punctuation.definition.regex.begin.awk
push:
- meta_content_scope: string.regexp
- match: "(/)([gimy]*)"
captures:
1: punctuation.definition.regex.end.awk
2: keyword.other.awk
set: infix-operator
- match: '(?=.|\n)'
with_prototype:
- match: '(?=/)'
pop: true
push:
- include: scope:source.regexp
variable:
- match: '\$[0-9]+'
scope: variable.language.awk
push: infix-operator
- match: \b(?:FILENAME|FS|NF|NR|OFMT|OFS|ORS|RS)\b
scope: variable.language.awk
push: infix-operator
- match: \b(?:ARGC|ARGV|CONVFMT|ENVIRON|FNR|RLENGTH|RSTART|SUBSEP)\b
scope: variable.language.nawk
push: infix-operator
- match: \b(?:ARGIND|ERRNO|FIELDWIDTHS|IGNORECASE|RT)\b
scope: variable.language.gawk
push: infix-operator
- match: '\b{{NAME}}\b'
scope: variable.other.readwrite.awk
push: infix-operator
keyword:
- match: \b(?:break|continue|do|while|exit|for|if|else|return)\b
scope: keyword.control.awk
command:
- match: \b(?:next|print|printf)\b
scope: keyword.other.command.awk
- match: \b(?:close|getline|delete|system)\b
scope: keyword.other.command.nawk
- match: \b(?:fflush|nextfile)\b
scope: keyword.other.command.bell-awk
function:
- match: \b(?:exp|int|log|sqrt|index|length|split|sprintf|substr)\b
scope: support.function.awk
- match: \b(?:atan2|cos|rand|sin|srand|gsub|match|sub|tolower|toupper)\b
scope: support.function.nawk
- match: \b(?:gensub|strftime|systime)\b
scope: support.function.gawk
- match: \b{{NAME}}(?=\s*\()
scope: entity.name.function.awk
prefix-operator:
- match: '[+-]'
scope: keyword.operator.arithmetic.awk
set: expression
infix-operator:
- match: "!?~|[=<>!]=|[<>]"
scope: keyword.operator.comparison.awk
set: expression
- match: \b(in)\b
scope: keyword.operator.comparison.awk
set: expression
- match: '[+\-*/%^]=|\+\+|--|>>|='
scope: keyword.operator.assignment.awk
set: expression
- match: \|\||&&|!
scope: keyword.operator.boolean.awk
set: expression
- match: '[+\-*/%^]'
scope: keyword.operator.arithmetic.awk
set: expression
- match: '[?:]'
scope: keyword.operator.trinary.awk
set: expression
- match: '\['
scope: keyword.operator.index.awk
set: expression
- match: '\]'
scope: keyword.operator.index.awk
set: expression
- match: '(?=[\S])'
pop: true

View File

@ -0,0 +1,283 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: AsciiDoc
comment: |
A very early hack. Mostly ripped from other syntaxes.
Only the very basic stuff is working.
file_extensions:
- adoc
- asciidoc
- asc
scope: text.html.asciidoc
contexts:
main:
- include: heading_inline
- include: heading-block
- include: heading-blockattr
- match: \$\$(?!\$)
push:
- meta_scope: comment.block.passthrough.macro.doubledollar.asciidoc
- match: \$\$(?!\$)
pop: true
- match: \+\+\+(?!\+)
push:
- meta_scope: comment.block.passthrough.macro.tripeplus.asciidoc
- match: \+\+\+(?!\+)
pop: true
- match: (//).*$\n?
scope: comment.line.double-slash.asciidoc
- match: |-
(?x)^
(?= ([/+-.*_=]{4,})\s*$
| ([ \t]{1,})
| [=]{1,6}\s*+
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
)
push:
- meta_scope: meta.block-level.asciidoc
- match: |-
(?x)^
(?! \1
| ([ \t]{1,})
| [=]{1,6}\s*+
| [ ]{,3}(?<marker>[-*_])([ ]{,2}\k<marker>){2,}[ \t]*+$
)
pop: true
- include: block_quote
- include: block_raw
- include: heading_inline
- include: heading-block
- include: separator
- match: '^[ ]{0,3}([*+-])(?=\s)'
captures:
1: punctuation.definition.list_item.asciidoc
push:
- meta_scope: markup.list.unnumbered.asciidoc
- match: ^(?=\S)
captures:
1: punctuation.definition.list_item.asciidoc
pop: true
- include: list-paragraph
- match: '^[ ]{0,3}[0-9]+(\.)(?=\s)'
captures:
1: punctuation.definition.list_item.asciidoc
push:
- meta_scope: markup.list.numbered.asciidoc
- match: ^(?=\S)
captures:
1: punctuation.definition.list_item.asciidoc
pop: true
- include: list-paragraph
- match: '^([/+-.*_=]){4,}\s*$'
push:
- meta_scope: comment.block.asciidoc
- match: '^\1{4,}\s*$'
pop: true
- match: '^([/+.]){4,}\s*$'
comment: asciidoc formatting is disabled inside certain blocks.
push:
- meta_scope: meta.disable-asciidoc
- match: '^[/+.]{4,}\s*$'
pop: true
- match: '^(?=\S)(?![=-]{3,}(?=$))(?!\.\S+)'
push:
- meta_scope: meta.paragraph.asciidoc
- match: '^(?:\s*$|(?=[ ]{,3}>.))|(?=[ \t]*\n)(?<=^===|^====|=====|^---|^----|-----)[ \t]*\n'
pop: true
- include: inline
- include: scope:text.html.basic
- match: '^(={3,})(?=[ \t]*$)'
scope: markup.heading.0.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(-{3,})(?=[ \t]*$)'
scope: markup.heading.1.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(~{3,})(?=[ \t]*$)'
scope: markup.heading.2.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(\^{3,})(?=[ \t]*$)'
scope: markup.heading.3.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
- match: '^(\+{3,})(?=[ \t]*$)'
scope: markup.heading.4.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
attribute-entry:
- match: '^:[-_. A-Za-z0-9]+:\s*(.*)\s*$'
scope: variable.other
attribute-reference:
- match: "{[-_. A-Za-z0-9]+}"
scope: variable.other
attribute-reference-predefined:
- match: "{(?i:amp|asciidoc-dir|asciidoc-file|asciidoc-version|author|authored|authorinitials|backend-docbook|backend-xhtml11|backend-html4|docbook-article|xhtml11-article|html4-article|docbook-book|xhtml11-book|html4-book|docbook-manpage|xhtml11-manpage|html4-manpage|backend|backslash|basebackend|brvbar|date|docdate|doctime|docname|docfile|docdir|doctitle|doctype-article|doctype-book|doctype-manpage|doctype|email|empty|encoding|filetype|firstname|gt|id|indir|infile|lastname|level|listindex|localdate|localtime|lt|manname|manpurpose|mantitle|manvolnum|middlename|nbsp|outdir|outfile|reftext|revision|sectnum|showcomments|title|two_colons|two_semicolons|user-dir|verbose)}"
scope: support.variable
block_quote:
- match: '^([/+-.*_=]){4,}\s*$'
push:
- meta_scope: comment.block.asciidoc
- match: '^\1{4,}\s*$'
pop: true
block_raw:
- match: '\G([ ]{4}|\t).*$\n?'
scope: markup.raw.block.asciidoc
bracket:
- match: '<(?![a-z/?\$!])'
comment: |
asciidoc will convert this for us. We match it so that the
HTML grammar will not mark it up as invalid.
scope: meta.other.valid-bracket.asciidoc
character-replacements:
- match: \(C\)|\(R\)|\(TM\)|--(?!-)|\.\.\.(?!\.)|->|<-|=>|<=
scope: constant.character.asciidoc
escape:
- match: '\\[-`*_#+.!(){}\[\]\\>:]'
scope: constant.character.escape.asciidoc
heading:
- match: '(?m)^(\S+)$([=-~^+])+\s*$'
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading-block:
- match: ^\.(\w.*)$
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading-blockattr:
- match: '^\[\[?(\w.*)\]$'
scope: markup.heading.asciidoc
captures:
1: punctuation.definition.heading.asciidoc
heading_inline:
- match: '\G(={1,6})(?!=)\s*(?=\S)'
captures:
1: punctuation.definition.heading.asciidoc
push:
- meta_scope: markup.heading.asciidoc
- meta_content_scope: entity.name.section.asciidoc
- match: \s*(=*)$\n?
captures:
1: punctuation.definition.heading.asciidoc
pop: true
- include: inline
inline:
- include: line-break
- include: line-page-break
- include: line-ruler
- include: escape
- include: passthrough-macro-trippleplus-inline
- include: passthrough-macro-doubledollar-inline
- include: character-replacements
- include: bracket
- include: raw
- include: text-quote-single
- include: text-quote-double
- include: text-quote-other
- include: text-bold-unconstrained
- include: text-italic-unconstrained
- include: text-monospace-unconstrained
- include: text-unquoted-unconstrained
- include: text-bold
- include: text-italic
- include: text-monospace
- include: text-unquoted
- include: attribute-entry
- include: attribute-reference-predefined
- include: attribute-reference
line-break:
- match: (?<=\S)\s+\+$
scope: constant.character.escape.asciidoc
line-page-break:
- match: "^<{3,}$"
scope: constant.character.escape.asciidoc
line-ruler:
- match: "^'{3,}$"
scope: constant.character.escape.asciidoc
list-paragraph:
- match: \G\s+(?=\S)
push:
- meta_scope: meta.paragraph.list.asciidoc
- match: ^\s*$
pop: true
- include: inline
passthrough-macro-doubledollar-inline:
- match: '(?:\[.*\])?\$\$(?!\$).+\$\$(?!\$)'
scope: comment.block.passthrough.asciidoc
passthrough-macro-trippleplus-inline:
- match: '(?:\[.*\])?\+\+\+(?!\+).+\+\+\+(?!\+)'
scope: comment.block.passthrough.asciidoc
raw:
- match: '(`+)(?:[^`]|(?!(?<!`)\1(?!`))`)*+(\1)'
scope: markup.raw.inline.asciidoc
captures:
1: punctuation.definition.raw.asciidoc
2: punctuation.definition.raw.asciidoc
separator:
- match: '\G[ ]{,3}([-*_])([ ]{,2}\1){2,}[ \t]*$\n?'
scope: meta.separator.asciidoc
text-bold:
- match: (?<!\w)(\*)(?=\S)
captures:
1: punctuation.definition.bold.asciidoc
push:
- meta_scope: markup.bold.asciidoc
- match: (?<=\S)(\1)(?!\w)
captures:
1: punctuation.definition.bold.asciidoc
pop: true
text-bold-unconstrained:
- match: (\*\*)(?=\S)
captures:
1: punctuation.definition.bold.asciidoc
push:
- meta_scope: markup.bold.asciidoc
- match: (?<=\S)(\1)
captures:
1: punctuation.definition.bold.asciidoc
pop: true
text-italic:
- match: (?<!\w)('|_)(?=\S)
captures:
1: punctuation.definition.italic.asciidoc
push:
- meta_scope: markup.italic.asciidoc
- match: (?<=\S)(\1)((?!\1)|(?=\1\1))(?!\w)
captures:
1: punctuation.definition.italic.asciidoc
pop: true
text-italic-unconstrained:
- match: (__)(?=\S)
captures:
1: punctuation.definition.italic.asciidoc
push:
- meta_scope: markup.italic.asciidoc
- match: (?<=\S)(\1)
captures:
1: punctuation.definition.italic.asciidoc
pop: true
text-monospace:
- match: '(?<!\w)([\+`])[^\+]*(\1)(?!\w)'
scope: string.interpolated.asciidoc
text-monospace-unconstrained:
- match: (\+\+).*(\1)
scope: string.interpolated.asciidoc
text-quote-double:
- match: '(?<!\w)(?:\[.*\])?``(?!`).*''''(?!'')(?!\w)'
scope: string.quoted.double.asciidoc
text-quote-other:
- match: '(?<!\w)(?:\[.*\])?([~^]).*(\1)(?!\w)'
scope: string.quoted.single.asciidoc
text-quote-single:
- match: '(?<!\w)(?:\[.*\])?`(?!`).*''(?!'')(?!\w)'
comment: "TODO: Sub- and Superscript are really unconstrained"
scope: string.quoted.single.asciidoc
text-unquoted:
- match: (?<!\w)(#).*(\1)(?!\w)
scope: string.unquoted.asciidoc
text-unquoted-unconstrained:
- match: (##).*(\1)
scope: string.unquoted.asciidoc

View File

@ -0,0 +1,172 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: ARM Assembly
file_extensions:
- s
- S
scope: source.asm.arm
contexts:
main:
- match: "@.*$"
scope: comment.line
- match: //.*$
scope: comment.line
- match: ;.*$
scope: comment.line
- match: ^\s*\#\s*if\s+0\b
push:
- meta_scope: comment.preprocessor
- match: ^\s*\#\s*endif\b
pop: true
- match: /\*
push:
- meta_scope: comment.block
- match: \*/
pop: true
- match: |-
(?x)
^\s*\#\s*(define)\s+ # define
((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name
(?: # and optionally:
(\() # an open parenthesis
(
\s* \g<id> \s* # first argument
((,) \s* \g<id> \s*)* # additional arguments
(?:\.\.\.)? # varargs ellipsis?
)
(\)) # a close parenthesis
)?
captures:
1: keyword.control.import.define.c
2: entity.name.function.preprocessor.c
4: punctuation.definition.parameters.c
5: variable.parameter.preprocessor.c
7: punctuation.separator.parameters.c
8: punctuation.definition.parameters.c
push:
- meta_scope: meta.preprocessor.macro.c
- match: (?=(?://|/\*))|$
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- include: $top_level_main
- match: ^\s*#\s*(error|warning)\b
captures:
1: keyword.control.import.error.c
push:
- meta_scope: meta.preprocessor.diagnostic.c
- match: $
captures:
1: keyword.control.import.error.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: ^\s*#\s*(include|import)\b\s+
captures:
1: keyword.control.import.include.c
push:
- meta_scope: meta.preprocessor.c.include
- match: (?=(?://|/\*))|$
captures:
1: keyword.control.import.include.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: '"'
captures:
0: punctuation.definition.string.begin.c
push:
- meta_scope: string.quoted.double.include.c
- match: '"'
captures:
0: punctuation.definition.string.end.c
pop: true
- match: <
captures:
0: punctuation.definition.string.begin.c
push:
- meta_scope: string.quoted.other.lt-gt.include.c
- match: ">"
captures:
0: punctuation.definition.string.end.c
pop: true
- match: '((?i)([xw][0-9]|[xw]1[0-9]||[xw]2[0-9]|[wx]30|wzr|xzr|wsp|fpsr|fpcr|[rcp]1[0-5]|[rcp][0-9]|a[1-4]|v[1-8]|sl|sb|fp|ip|sp|lr|(c|s)psr(_c)?|pc|[sd]3[0-1]|[sd][12][0-9]|[sd][0-9]|fpsid|fpscr|fpexc|q3[0-1]|q2[0-9]|q1[0-9]|q[0-9]|APSR_nzcv|sy)!?(?-i))?\b'
scope: storage.other.register
- match: \.(?i)(globl|global|macro|endm|purgem|if|elseif|else|endif|section|text|arm|align|balign|irp|rept|endr|req|unreq|error|short|func|endfunc|hidden|type|fpu|arch|code|altmacro|object_arch|word|int|string)(?-i)\b
scope: keyword.control.directive
- match: armv(2a?|3m?|4t?|5t?e?6(j|t2|zk?|-m)?|7v?e?(-(a|r|m))?|8-a(\+crc)?)
scope: keyword.control.arch.arm
- match: ^\s*#\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\b
captures:
1: keyword.control.import.c
push:
- meta_scope: meta.preprocessor.c
- match: (?=(?://|/\*))|$
captures:
1: keyword.control.import.c
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- match: |-
(?x)\b((?i)
(
(bf(c|i)|(u|s)bfx|(u|s)xta?(h|b)?) |
(v(add|cvt|sub|mov|trn|cmp|div|qdmulh|mrs|mul|ld1|qadd|qshrun|st[1234]|addw|mull|mlal|rshrn|swp|qmovun)|qmovun)(\.([isup]?8|[isupf]?16|[isuf]?32|[isu]?64))* |
(and|m(rs|sr)|eor|sub|rsb|add|adc|sbc|rsc|tst|teq|cmp|cmn|orr|mov|bic|mvn |
(neg) |
(lsr|lsl|ror|asr) # shift ops either pseudo ops or actual shifts
)s? |
(mul|mla|mull|smlabb) |
(mov(w|t)) |
rev(8|16)? |
(pld|adr|adrl|vswp)
)
(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\b
scope: support.function.mnemonic.arithmetic
- match: |-
(?x)\b((?i)(
swi|svc|wfi|
dmb | clrex | dsb | isb |
v(ldr|str|push|pop) |
(push|pop) |
(st|ld)(
p |
r(ex|s?(h|b)|d)? |
m(
(f|e)(d|a) |
(d|i)(b|a)
)?
) |
b(l|x|lx|lr|r)? |
(i|e)?ret|
b\.(eq|ne|hs|cs|lo|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|nv)+ |
(c|t)?bn?z|
)+(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))\b
scope: support.function.mnemonic.memory
- match: '\b((?i)(def(b|w|s)|equ|(include|get)(\s+([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*?)\.s)?)?(?-i))\b'
scope: meta.preprocessor.c.include
- match: \b((?i)(align)(?-i))?\b
scope: storage.type.c.memaccess
- match: \s+\".+\"
scope: string
- match: \b((?i)nop(ne|eq|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|lt|le|gt|ge|al)?(?-i))?\b
scope: comment.nop
- match: '\s\['
push:
- meta_scope: storage.type.c.memaccess
- match: '\]'
pop: true
- match: (?>\\\s*\n)
scope: punctuation.separator.continuation.c
- include: $top_level_main
- match: (\b|\s+)\=\b
scope: keyword.control.evaluation
- match: '(\b|\s+)(\#)?-?(0x|&)[0-9a-fA-F_]+\b'
scope: constant.numeric.hex
- match: '(\b|\s+)\#-?[0-9a-zA-Z_]+\b'
scope: constant.numeric.literal
- match: '(\b|\s+)[0-9]+\b'
scope: constant.numeric.dec
- match: '\b([a-zA-Z_]+[0-9a-zA-Z_]*|[0-9]+[a-zA-Z_]+[0-9a-zA-Z_]*)\b'
scope: meta.function.source.arm.label

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,40 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: CMake C Header
file_extensions: [h.in]
scope: source.cmake.config.c
variables:
identifier: '\b[[:alpha:]_][[:alnum:]_]*\b'
contexts:
main:
- match: ""
push: "Packages/C++/C.sublime-syntax"
with_prototype:
- match: \$\{
scope: keyword.other.block.start.cmake
push:
- meta_include_prototype: true
- meta_scope: variable.cmake
- match: \}
scope: keyword.other.block.end.cmake
pop: true
- match: \@
scope: keyword.other.block.start.cmake
push:
- meta_include_prototype: true
- meta_scope: variable.cmake
- match: \@
scope: keyword.other.block.end.cmake
pop: true
- match: ^\s*(\#\s*cmakedefine)\b
captures:
1: meta.preprocessor.macro.c keyword.control.import.cmakedefine.c
push:
- meta_content_scope: meta.preprocessor.macro.c
- include: scope:source.c#preprocessor-line-continuation
- include: scope:source.c#preprocessor-line-ending
- include: scope:source.c#preprocessor-comments
- match: '{{identifier}}'
scope: entity.name.variable.cmake
pop: true

View File

@ -0,0 +1,40 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: CMake C++ Header
file_extensions: [hh.in, hpp.in, hxx.in, h++.in]
scope: source.cmake.config.c++
variables:
identifier: '\b[[:alpha:]_][[:alnum:]_]*\b'
contexts:
main:
- match: ""
push: "Packages/C++/C++.sublime-syntax"
with_prototype:
- match: \$\{
scope: keyword.other.block.start.cmake
push:
- meta_include_prototype: true
- meta_scope: variable.cmake
- match: \}
scope: keyword.other.block.end.cmake
pop: true
- match: \@
scope: keyword.other.block.start.cmake
push:
- meta_include_prototype: true
- meta_scope: variable.cmake
- match: \@
scope: keyword.other.block.end.cmake
pop: true
- match: ^\s*(\#\s*cmakedefine)\b
captures:
1: meta.preprocessor.macro.c++ keyword.control.import.cmakedefine.c++
push:
- meta_content_scope: meta.preprocessor.macro.c++
- include: scope:source.c++#preprocessor-line-continuation
- include: scope:source.c++#preprocessor-line-ending
- include: scope:source.c++#preprocessor-comments
- match: '{{identifier}}'
scope: entity.name.variable.cmake
pop: true

View File

@ -0,0 +1,671 @@
%YAML 1.2
# https://www.sublimetext.com/docs/3/syntax.html
# https://cmake.org/cmake/help/v3.0/manual/cmake-language.7.html
--- #---------------------------------------------------------------------------
name: CMake
comment: Written by Raoul Wols <raoulwols@gmail.com>, 2017
file_extensions: [CMakeLists.txt, cmake]
scope: source.cmake
#-------------------------------------------------------------------------------
variables:
# Note: we're not doing legacy
unquoted_argument_element: "[^ \t()#\"\\']"
unquoted_argument: "{{unquoted_argument_element}}+"
identifier: \b[[:alpha:]_][[:alnum:]_]*\b
generic_named_parameter: \b@?[A-Z_][A-Z0-9_]*(?=[^\w\-<>=\$])
#-------------------------------------------------------------------------------
contexts:
prototype:
- include: comment-block
- include: comment-line
- include: variable-substitution
- include: generator-expression
main:
- include: scope:commands.builtin.cmake#main
- include: if
- include: foreach
- include: while
- include: set
- include: function
- include: macro
- include: include
- include: illegal-command
- include: generic-command
illegal-command:
- match: (?i)\bendif\b
scope: invalid.illegal.stray.endif.cmake
- match: (?i)\belse\b
scope: invalid.illegal.stray.else.cmake
- match: (?i)\belseif\b
scope: invalid.illegal.stray.elseif.cmake
- match: (?i)\bendforeach\b
scope: invalid.illegal.stray.endforeach.cmake
- match: (?i)\bendwhile\b
scope: invalid.illegal.stray.endwhile.cmake
- match: (?i)\bbreak\b
scope: invalid.illegal.stray.break.cmake
- match: (?i)\bendfunction\b
scope: invalid.illegal.stray.endfunction.cmake
- match: (?i)\bendmacro\b
scope: invalid.illegal.stray.endmacro.cmake
args-illegal-boilerplate:
- match: \s+
- match: \n
- match: .+
scope: invalid.illegal.expected-opening-brace.cmake
pop: true
# --- INCLUDE ----------------------------------------------------------------
include:
- match: (?i)\binclude\b
scope: keyword.control.import.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: include-args
- include: args-illegal-boilerplate
include-args:
- meta_scope: meta.function-call.arguments.cmake
- match: \bOPTIONAL\b
scope: variable.parameter.include.OPTIONAL.cmake
- match: \bNO_POLICY_SCOPE\b
scope: variable.parameter.include.NO_POLICY_SCOPE.cmake
- match: \bRESULT_VARIABLE\b
scope: variable.parameter.include.RESULT_VARIABLE.cmake
push:
- match: \b{{identifier}}\b
scope: variable.other.readwrite.cmake
pop: true
- match: \s+
- match: \n
- match: ''
pop: true
- include: args-common
# --- FUNCTION / ENDFUNCTION -------------------------------------------------
function:
- match: (?i)\bfunction\b
scope: support.function.function.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [function-body, function-args-first]
- include: args-illegal-boilerplate
function-args-first:
- meta_scope: meta.function-call.arguments.cmake
- match: '{{identifier}}'
scope: entity.name.function.cmake
set: function-args-rest
- include: variable-substitution
- match: \s+
- match: ''
set: function-args-rest
function-args-rest:
- meta_scope: meta.function-call.arguments.cmake
- include: args-common
- match: '{{identifier}}'
scope: variable.parameter.cmake
function-body:
- meta_scope: meta.group.function.cmake
- include: endfunction
- include: main
endfunction:
- match: (?i)\bendfunction\b
scope: support.function.endfunction.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: generic-args
- include: args-illegal-boilerplate
# --- MACRO / ENDMACRO -------------------------------------------------------
macro:
- match: (?i)\bmacro\b
scope: support.function.macro.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [macro-body, macro-args-first]
- include: args-illegal-boilerplate
macro-args-first:
- meta_scope: meta.function-call.arguments.cmake
- match: '{{identifier}}'
scope: entity.name.function.cmake
set: macro-args-rest
- include: variable-substitution
- match: \s+
- match: ''
set: macro-args-rest
macro-args-rest:
- meta_scope: meta.function-call.arguments.cmake
- include: args-common
- match: '{{identifier}}'
scope: variable.parameter.cmake
macro-body:
- meta_scope: meta.group.function.cmake
- include: endmacro
- include: main
endmacro:
- match: (?i)\bendmacro\b
scope: support.function.endmacro.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: generic-args
- include: args-illegal-boilerplate
# --- IF / ELSEIF / ELSE / ENDIF ---------------------------------------------
if:
- match: (?i)\bif\b
scope: keyword.control.if.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [if-body, if-args]
- include: args-illegal-boilerplate
if-body:
- meta_scope: meta.group.if.cmake
- include: else
- include: elseif
- include: endif
- include: break
- include: main
if-args:
- meta_scope: meta.function-call.arguments.cmake
- match: \(
scope: punctuation.section.parens.begin.cmake
push: if-args
- match: \bDEFINED\b
scope: variable.parameter.if.DEFINED.cmake
- match: \bSTREQUAL\b
scope: variable.parameter.if.STREQUAL.cmake
- match: \bNOT\b
scope: keyword.operator.logical.NOT.cmake
- match: \bAND\b
scope: keyword.operator.logical.AND.cmake
- match: \bOR\b
scope: keyword.operator.logical.OR.cmake
- match: \bCOMMAND\b
scope: variable.parameter.if.COMMAND.cmake
- match: \bPOLICY\b
scope: variable.parameter.if.POLICY.cmake
- match: \bTARGET\b
scope: variable.parameter.if.TARGET.cmake
- match: \bTEST\b
scope: variable.parameter.if.TEST.cmake
- match: \bEXISTS\b
scope: variable.parameter.if.EXISTS.cmake
- match: \bIS_NEWER_THAN\b
scope: variable.parameter.if.IS_NEWER_THAN.cmake
- match: \bIS_DIRECTORY\b
scope: variable.parameter.if.IS_DIRECTORY.cmake
- match: \bIS_SYMLINK\b
scope: variable.parameter.if.IS_SYMLINK.cmake
- match: \bIS_ABSOLUTE\b
scope: variable.parameter.if.IS_ABSOLUTE.cmake
- match: \b(VERSION_|STR)?LESS\b
scope: variable.parameter.if.LESS.cmake
- match: \b(VERSION_|STR)?GREATER\b
scope: variable.parameter.if.GREATER.cmake
- match: \b(VERSION_|STR)?EQUAL\b
scope: variable.parameter.if.EQUAL.cmake
- match: \b(VERSION_|STR)?LESS_EQUAL\b
scope: variable.parameter.if.LESS_EQUAL.cmake
- match: \b(VERSION_|STR)?GREATER_EQUAL\b
scope: variable.parameter.if.GREATER_EQUAL.cmake
- match: \bMATCHES\b
scope: variable.parameter.if.MATCHES.cmake
push:
- match: \[(=*)\[
captures:
1: punctuation.definition.string.begin.cmake
push:
- meta_include_prototype: false
- meta_scope: string.regexp.cmake
- match: \]\1\]
scope: punctuation.definition.string.end.cmake
pop: true
- include: scope:source.regexp#base
- match: \s+
- match: \n
- match: ''
pop: true
- include: args-common
elseif:
- match: (?i)\belseif\b
scope: keyword.control.elseif.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [elseif-body, if-args]
- include: args-illegal-boilerplate
elseif-body:
- meta_scope: meta.group.elseif.cmake
- include: elseif
- include: else
- include: endif
- include: break
- include: main
else:
- match: (?i)\b\belse\b
scope: keyword.control.else.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [else-body, if-args]
- include: args-illegal-boilerplate
else-body:
- meta_scope: meta.group.else.cmake
- include: endif
- include: break
- include: main
- match: (?i)\belse\b
scope: invalid.illegal.stray.else.cmake
- match: (?i)\belseif\b
scope: invalid.illegal.stray.elseif.cmake
endif:
- match: (?i)\bendif\b
scope: keyword.control.endif.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: if-args
- include: args-illegal-boilerplate
# --- FOREACH / ENDFOREACH ---------------------------------------------------
foreach:
- match: (?i)\bforeach\b
scope: keyword.control.foreach.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [foreach-body, foreach-args]
- include: args-illegal-boilerplate
foreach-args:
- meta_scope: meta.function-call.arguments.cmake
- include: args-common
- match: \bIN\b
scope: variable.parameter.foreach.IN.cmake
- match: \bLISTS\b
scope: variable.parameter.foreach.LISTS.cmake
- match: \bITEMS\b
scope: variable.parameter.foreach.ITEMS.cmake
- match: \bRANGE\b
scope: variable.parameter.foreach.RANGE.cmake
foreach-body:
- meta_scope: meta.group.foreach.cmake
- include: break
- include: continue
- include: endforeach
- include: main
endforeach:
- match: (?i)\bendforeach\b
scope: keyword.control.endforeach.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: foreach-args
- include: args-illegal-boilerplate
# --- WHILE / ENDWHILE -------------------------------------------------------
while:
- match: (?i)\bwhile\b
scope: keyword.control.while.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [while-body, if-args]
- include: args-illegal-boilerplate
while-body:
- meta_scope: meta.group.while.cmake
- include: break
- include: continue
- include: endwhile
- include: main
endwhile:
- match: (?i)\bendwhile\b
scope: keyword.control.endwhile.cmake
set:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: if-args
- include: args-illegal-boilerplate
# --- BREAK ------------------------------------------------------------------
break:
- match: (?i)\bbreak\b
scope: keyword.control.break.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: break-args
- include: args-illegal-boilerplate
break-args:
- meta_scope: meta.function-call.arguments.cmake
- include: args-common
#--- CONTINUE ----------------------------------------------------------------
continue:
- match: (?i)\bcontinue\b
scope: keyword.control.continue.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: continue-args
- include: args-illegal-boilerplate
continue-args:
- meta_scope: meta.function-call.arguments.cmake
- include: args-common
#--- SET ---------------------------------------------------------------------
set:
- match: (?i)\bset\b
scope: support.function.set.cmake
push:
- meta_scope: meta.function-call.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: [set-args-rest, set-args-first]
set-args-first:
- match: '{{identifier}}'
scope: variable.other.readwrite.assignment.cmake
pop: true
- include: variable-substitution
- match: \s+
- match: ''
pop: true
set-args-rest:
- meta_scope: meta.function-call.arguments.cmake
- match: \bFORCE\b
scope: variable.parameter.foreach.FORCE.cmake
- match: \bPARENT_SCOPE\b
scope: variable.parameter.foreach.PARENT_SCOPE.cmake
- match: \bCACHE\b
scope: variable.parameter.foreach.CACHE.cmake
push:
- match: \s*(FILEPATH)
captures:
1: storage.type.FILEPATH.cmake
pop: true
- match: \s*(PATH)
captures:
1: storage.type.PATH.cmake
pop: true
- match: \s*(STRING)
captures:
1: storage.type.STRING.cmake
pop: true
- match: \s*(BOOL)
captures:
1: storage.type.BOOL.cmake
pop: true
- match: \s*(INTERNAL)
captures:
1: storage.type.INTERNAL.cmake
pop: true
# anything else we scope as an error
- match: \s*([^\s]*)
captures:
1: invalid.illegal.expected-type.cmake
pop: true
- include: args-common
#--- COMMON FUNCTIONALITY FOR COMMANDS ---------------------------------------
args-common:
- match: \)
scope: punctuation.section.parens.end.cmake
pop: true
- match: \(
scope: invalid.illegal.stray.parenthesis.cmake
- include: string
generic-command:
- match: \b{{identifier}}\b
scope: variable.function.generic.cmake
push:
- meta_scope: meta.function-call.generic.cmake
- match: (?=\()
set:
- match: \(
scope: punctuation.section.parens.begin.cmake
set: generic-args
generic-args:
- meta_scope: meta.function-call.arguments.generic.cmake
- match: \)
scope: punctuation.section.parens.end.cmake
pop: true
- match: (?={{generic_named_parameter}})
push: unquoted-argument-or-keyword
- include: string-unquoted
- include: string-quoted-double
- include: string-quoted-single
# https://cmake.org/cmake/help/v3.0/manual/cmake-language.7.html#unquoted-argument
unquoted-argument-or-keyword:
- meta_scope: variable.parameter.generic.cmake
- match: (?=\t| |\(|\)|\#|\"|\\)
pop: true
#--- STRING HANDLING ---------------------------------------------------------
string:
- include: string-raw
- include: string-quoted-double
- include: string-quoted-single
- include: string-unquoted
string-raw:
- match: \[(=*)\[
scope: punctuation.definition.string.begin.cmake
push:
- meta_include_prototype: false
- meta_scope: string.raw.cmake
- match: \]\1\]
scope: punctuation.definition.string.end.cmake
pop: true
string-quoted-double:
- match: '"'
scope: punctuation.definition.string.begin.cmake
push:
- meta_include_prototype: false
- meta_scope: string.quoted.double.cmake
- match: '"'
scope: punctuation.definition.string.end.cmake
pop: true
- include: escape-sequences
- include: highlight-semicolon
- include: variable-substitution
- include: generator-expression
string-quoted-single:
- match: "'"
scope: punctuation.definition.string.begin.cmake
push:
- meta_include_prototype: false
- meta_scope: string.quoted.single.cmake
- match: "'"
scope: punctuation.definition.string.end.cmake
pop: true
- include: escape-sequences
- include: highlight-semicolon
- include: variable-substitution
- include: generator-expression
string-unquoted:
- match: (?={{unquoted_argument}})
push:
- meta_include_prototype: false
- meta_scope: meta.string.unquoted.cmake
- include: variable-substitution
- include: generator-expression
- match: \\[; ()#"\\]
scope: constant.character.escape.cmake
- match: \\.
scope: invalid.illegal.character.escape.cmake
- match: (?=\t| |\(|\)|\#|\"|\\|\n)
pop: true
- match: (?=\s*$)
set:
- match: \s*$
pop: true
- match: (?=\s*#)
set: prototype
- include: highlight-semicolon
highlight-semicolon:
- match: ;
scope: punctuation.separator.cmake
escape-sequences:
- match: \\[()#" \\$@^trn;]
scope: constant.character.escape.cmake
- match: \\.
scope: invalid.illegal.character.escape.cmake
#--- VARIABLES AND GENERATOR EXPRESSIONS -------------------------------------
variable-substitution:
- match: (\$)(ENV)?(\{)
captures:
1: punctuation.definition.variable.substitution.cmake
2: keyword.operator.word.cmake
3: punctuation.section.braces.begin.cmake
push:
- meta_scope: meta.text-substitution.cmake
- match: \}
scope: punctuation.section.braces.end.cmake
pop: true
- match: '{{identifier}}'
scope: variable.other.readwrite.cmake
- include: prototype
generator-expression:
- match: (\$)(<)
captures:
1: punctuation.definition.variable.generator-expression.cmake
2: punctuation.section.block.begin.cmake
push:
- meta_scope: meta.generator-expression.cmake
- include: generator-expression-common
- match: ':'
scope: punctuation.separator.generator-expression.cmake
set:
- meta_content_scope: meta.generator-expression.cmake
- match: ':'
scope: invalid.illegal.too-many-colons.cmake
- include: generator-expression-common
- include: prototype
- include: prototype
generator-expression-common:
- match: '>'
scope: punctuation.section.block.end.cmake
pop: true
- match: '{{identifier}}'
scope: variable.other.readwrite.cmake
#--- COMMENT HANDLING --------------------------------------------------------
comment-block:
- match: \#\[(=*)\[
scope: punctuation.definition.comment.begin.cmake
push:
- meta_scope: comment.block.cmake
- match: \]\1\]
scope: punctuation.definition.comment.end.cmake
pop: true
comment-line:
- match: \#
scope: punctuation.definition.comment.cmake
push:
- meta_scope: comment.line.cmake
- match: $
pop: true

View File

@ -0,0 +1,54 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: CMakeCache
file_extensions: [CMakeCache.txt]
first_line_match: "# This is the CMakeCache file."
scope: source.cmakecache
variables:
identifier: '[a-zA-Z0-9\-_:\\/ .]+'
contexts:
main:
- include: comments
- include: key-value-pair
comments:
- match: \/\/
scope: punctuation.definition.comment.cmakecache
push:
- meta_scope: comment.line.double-slash.doc.cmakecache
- match: $
pop: true
- match: \#
scope: punctuation.definition.comment.cmakecache
push:
- meta_scope: comment.line.number-sign.cmakecache
- match: $
pop: true
key-value-pair:
- match: ^(\w|-)+
scope: variable.parameter.cmakecache
set: expect-type
- match: .
scope: invalid.illegal.cmakecache
expect-type:
- match: ':'
scope: punctuation.separator.cmakecache
- match: '{{identifier}}'
scope: storage.type.cmakecache
set: expect-value
- match: .
scope: invalid.illegal.cmakecache
expect-value:
- match: '='
scope: keyword.operator.assignment.cmakecache
- match: $
pop: true
- match: .*
scope: string.unquoted.cmakecache
pop: true

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Advanced CSV
file_extensions:
- csv
- tsv
scope: text.advanced_csv
contexts:
main:
- match: (\")
captures:
1: string.quoted.double.advanced_csv
push:
- meta_scope: meta.quoted.advanced_csv
- match: (\")
captures:
1: string.quoted.double.advanced_csv
pop: true
- include: main
- match: '(\[([+-]?\d*)(\:)?([+-]?\d*)(\,)?([+-]?\d*)(\:)?([+-]?\d*)\])?\s*([<>v^])?\s*(=)'
captures:
1: keyword.operator.advanced_csv
2: constant.numeric.formula.advanced_csv
4: constant.numeric.formula.advanced_csv
6: constant.numeric.formula.advanced_csv
8: constant.numeric.formula.advanced_csv
9: keyword.operator.advanced_csv
10: keyword.operator.advanced_csv
push:
- meta_scope: meta.range.advanced_csv
- match: (?=(\")|$)
pop: true
- include: scope:source.python
- match: '(?<=^|,|\s|\")([0-9.eE+-]+)(?=$|,|\s|\")'
scope: meta.number.advanced_csv
captures:
1: constant.numeric.advanced_csv
- match: '(?<=^|,|\s|\")([^, \t\"]+)(?=$|,|\s|\")'
scope: meta.nonnumber.advanced_csv
captures:
1: storage.type.advanced_csv
- match: (\,)
scope: meta.delimiter.advanced_csv
captures:
1: keyword.operator.advanced_csv

View File

@ -0,0 +1,47 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Cabal
file_extensions:
- cabal
scope: source.cabal
contexts:
main:
- match: ^(\s*)(exposed-modules):$
captures:
2: constant.other.cabal
push:
- meta_scope: exposed.modules.cabal
- match: ^(?!\1\s)
pop: true
- include: module_name
- match: ^(\s*)(build-depends):$
captures:
2: constant.other.cabal
push:
- meta_scope: exposed.modules.cabal
- match: ^(?!\1\s)
pop: true
- match: "([<>=]+)|([&|]+)"
scope: keyword.operator.haskell
- match: ((\d+|\*)\.)*(\d+|\*)
scope: constant.numeric.haskell
- match: '([\w\-]+)'
scope: support.function.haskell
- match: '^\s*([a-zA-Z_-]+)(:)\s+'
scope: entity.cabal
captures:
1: constant.other.cabal
2: punctuation.entity.cabal
- match: '^(?i)(executable|library|test-suite|benchmark|flag|source-repository)\s+([^\s,]+)\s*$'
scope: entity.cabal
captures:
1: keyword.entity.cabal
2: string.cabal
- match: ^(?i)library\s*$
scope: keyword.entity.cabal
- match: "--.*$"
scope: comment.cabal
module_name:
- match: '([A-Z][A-Za-z_''0-9]*)(\.[A-Z][A-Za-z_''0-9]*)*'
scope: storage.module.haskell

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,369 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Dart
file_extensions:
- dart
scope: source.dart
contexts:
main:
- match: ^(#!.*)$
scope: meta.preprocessor.script.dart
- match: ^\s*\b(library|import|export|part of|part)\b
captures:
0: keyword.other.import.dart
push:
- meta_scope: meta.declaration.dart
- match: ;
captures:
0: punctuation.terminator.dart
pop: true
- include: strings
- match: \b(as|show|hide|deferred)\b
scope: keyword.other.import.dart
- include: comments
- include: constants-and-special-vars
- include: annotations
- include: decl-typedef
- include: decl-class
- include: decl-enum
- include: decl-function
- include: keywords
- include: strings
annotations:
- match: '^(?:\s*)((@)([a-zA-Z0-9_]+))'
captures:
1: annotation.dart
2: entity.name.function.annotation.dart
3: support.type.dart
comments:
- match: /\*\*/
scope: comment.block.empty.dart
captures:
0: punctuation.definition.comment.dart
- include: comments-inline
comments-inline:
- match: /\*
push:
- meta_scope: comment.block.dart
- match: \*/
pop: true
- include: scope:text.dart-doccomments
- match: (///)
captures:
1: marker.dart
push:
- meta_scope: comment.line.triple-slash.dart
- match: $
pop: true
- include: scope:text.dart-doccomments
- match: (//)
captures:
1: marker.dart
push:
- meta_scope: comment.line.double-slash.dart
- match: $
pop: true
- include: scope:text.dart-doccomments
constants-and-special-vars:
- match: \b(true|false|null)\b
scope: constant.language.dart
- match: \b(this|super)\b
scope: variable.language.dart
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
scope: constant.numeric.dart
decl-class:
- match: \bclass\b
captures:
0: keyword.control.new.dart
push:
- meta_scope: meta.declaration.class.dart
- match: "(?={)"
pop: true
- include: keywords
- match: "[A-Za-z_][A-Za-z0-9_]*"
scope: class.name.dart
decl-enum:
- match: \benum\b
captures:
0: keyword.declaration.dart
push:
- meta_scope: meta.declaration.enum.dart
- match: "(?={)"
pop: true
- include: keywords
- match: "[A-Za-z_][A-Za-z0-9_]*"
scope: enum.name.dart
decl-function:
- match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(get)\s+(\w+)\s+(?==>)
comment: A getter with a primitive return type.
scope: meta.declaration.function.dart
captures:
1: storage.type.primitive.dart
2: keyword.declaration.dart
3: function.name.dart
- match: ^\s*(?:\b(\w+)\b\s+)?(get)\s+(\w+)\s+(?==>)
comment: A getter with a user-defined return type or no return type.
scope: meta.declaration.function.dart
captures:
1: type.user-defined.dart
2: keyword.declaration.dart
3: function.name.dart
- match: ^\s*(set)\s+(\w+)(?=\()
comment: A setter.
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.declaration.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
comment: A function with a primitive return type.
captures:
1: storage.type.primitive.dart
2: function.name.dart
push:
- meta_scope: meta.declaration.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*(?:\b(return)\b)\s+(\w+)(?=\()
comment: A function invocation after 'return'
captures:
1: keyword.control.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
- match: ^\s*\b(new)\b\s+(\w+)(?=\()
comment: A class instantiation after 'new'
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: comments-inline
- include: decl-function-parameter
- include: strings
- include: keywords
decl-function-parameter:
- include: constants-and-special-vars
- match: (?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b)\s+(\w+)(?=\()
comment: A function with a primitive return type.
captures:
1: storage.type.primitive.dart
2: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: \b(new)\b\s+(\w+)(?=\()
comment: A class instantiation after 'new'
captures:
1: keyword.declaration.dart
2: function.name.dart
push:
- meta_scope: meta.invocation.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: (?:\b(\w+)\b)\s+(\w+)(?=\()
comment: A function with a user-defined return type.
captures:
1: type.user-defined.dart
2: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
- match: (\w+)(?=\()
comment: A function with no return type.
captures:
1: function.name.dart
push:
- meta_scope: meta.parameter.function.dart
- match: \)
pop: true
- include: decl-function-parameter
- include: strings
- include: keywords
decl-typedef:
- match: typedef
captures:
0: keyword.control.new.dart
push:
- meta_scope: meta.declaration.typedef.dart
- match: ;
captures:
0: punctuation.terminator.dart
pop: true
- match: '(?:\b(void|bool|num|int|double|dynamic|var|String|List|Map)\b|([a-zA-Z_][a-zA-Z0-9_]*))\s+([a-zA-Z_][a-zA-Z0-9_]+)'
captures:
1: storage.type.primitive.dart
2: typedef.return.dart
3: typedef.name.dart
- match: \(
push:
- meta_scope: typedef.params.dart
- match: \)
pop: true
- include: keywords
keywords:
- match: \bassert\b
scope: keyword.control.assert.dart
- match: \bas\b
scope: keyword.cast.dart
- match: \b(try|catch|finally|throw|on|rethrow)\b
scope: keyword.control.catch-exception.dart
- match: \s+\?\s+|\s+:\s+
scope: keyword.control.ternary.dart
- match: \b(break|case|continue|default|do|else|for|if|in|return|switch|while)\b
scope: keyword.control.dart
- match: \b(async\*|async|await\*|await|yield)\b
scope: keyword.control.async.dart
- match: \b(new)\b
scope: keyword.control.new.dart
- match: \b(abstract|extends|external|factory|implements|with|interface|get|native|operator|set|typedef)\b
scope: keyword.declaration.dart
- match: \b(is\!?)\b
scope: keyword.operator.dart
- match: (<<|>>>?|~|\^|\||&)
scope: keyword.operator.bitwise.dart
- match: ((&|\^|\||<<|>>>?)=)
scope: keyword.operator.assignment.bitwise.dart
- match: (===?|!==?|<=?|>=?)
scope: keyword.operator.comparison.dart
- match: '(([+*/%-]|\~)=)'
scope: keyword.operator.assignment.arithmetic.dart
- match: (=)
scope: keyword.operator.assignment.dart
- match: (\-\-|\+\+)
scope: keyword.operator.increment-decrement.dart
- match: (\-|\+|\*|\/|\~\/|%)
scope: keyword.operator.arithmetic.dart
- match: (!|&&|\|\|)
scope: keyword.operator.logical.dart
- match: ;
scope: punctuation.terminator.dart
- match: \b(static|final|const)\b
scope: storage.modifier.dart
- match: \b(?:void|bool|num|int|double|dynamic|var|String|List|Map)\b
scope: storage.type.primitive.dart
regexp:
- match: '\\[^''"]'
scope: constant.character.escaped.regex.dart
- match: \(
push:
- meta_content_scope: meta.capture.regex.dart
- match: \)
pop: true
- match: \?(:|=|!)
scope: ignore.capture.regex.dart
- match: \*|\+|\?|\.|\|
scope: keyword.other.regex.dart
- match: \^|\$
scope: keyword.other.regex.dart
- match: \.
scope: constant.other.regex.dart
- match: '\[(\^)?'
captures:
1: keyword.other.negation.regex.dart
push:
- meta_scope: constant.character.range.regex.dart
- match: '\]'
pop: true
- match: '\\[^"'']'
scope: constant.character.escaped.regex.dart
- match: '\{(?:\d+)?,(?:\d+)?\}'
scope: keyword.other.regex.dart
string-interp:
- match: '(\$)(\{)'
captures:
1: keyword.other.dart
2: keyword.other.dart
push:
- meta_scope: interpolation.dart
- meta_content_scope: source.dart
- match: '(\})'
captures:
1: keyword.other.dart
pop: true
- include: main
- match: (\$)(\w+)
captures:
1: keyword.other.dart
2: variable.parameter.dart
- match: \\.
scope: constant.character.escape.dart
strings:
- match: (?<!r)"""
push:
- meta_scope: string.interpolated.triple.double.dart
- match: '"""(?!")'
pop: true
- include: string-interp
- match: (?<!r)'''
push:
- meta_scope: string.interpolated.triple.single.dart
- match: "'''(?!')"
pop: true
- include: string-interp
- match: r"""
push:
- meta_scope: string.quoted.triple.double.dart
- match: '"""(?!")'
pop: true
- match: r'''
push:
- meta_scope: string.quoted.triple.single.dart
- match: "'''(?!')"
pop: true
- match: (?<!\\|r)"
push:
- meta_scope: string.interpolated.double.dart
- match: '"'
pop: true
- match: \n
scope: invalid.string.newline
- include: string-interp
- match: r"
push:
- meta_scope: string.quoted.double.dart
- match: '"'
pop: true
- include: regexp
- match: (?<!\|r)'
push:
- meta_scope: string.interpolated.single.dart
- match: "'"
pop: true
- include: string-interp
- match: r'
push:
- meta_scope: string.quoted.single.dart
- match: "'"
pop: true
- include: regexp

View File

@ -0,0 +1,88 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: DotENV
file_extensions:
- .env
- .envrc
- .env.dist
- .env.local
- .env.sample
- .env.example
- .env.test
- .env.test.local
- .env.dev
- .env.development
- .env.development.local
- .env.prod
- .env.production
- .env.production.local
- .env.dusk.local
scope: source.env
contexts:
main:
- match: (#).*$\n?
comment: "Comments - starts with #"
scope: comment.line.number-sign.env
captures:
1: punctuation.definition.comment.env
- match: (\")
comment: Strings (double)
captures:
1: punctuation.definition.string.begin.env
push:
- meta_scope: string.quoted.double.env
- match: (\")
captures:
1: punctuation.definition.string.end
pop: true
- include: interpolation
- include: variable
- include: escape-characters
- match: (\')
comment: Strings (single)
captures:
1: punctuation.definition.string.begin.env
push:
- meta_scope: string.quoted.single.env
- match: (\')
captures:
1: punctuation.definition.string.end
pop: true
- match: '(?<=[\w])\s?='
comment: Assignment Operator
scope: keyword.operator.assignment.env
- match: '([\w]+)(?=\s?\=)'
comment: Variable
scope: variable.other.env
- match: (?i)\s?(export)
comment: Keywords
scope: keyword.other.env
- match: (?i)(?<=\=)\s?(true|false|null)
comment: Constants
scope: constant.language.env
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b'
comment: Numeric
scope: constant.numeric.env
escape-characters:
- match: '\\[nrt\\\$\"\'']'
scope: constant.character.escape.env
interpolation:
- match: '(\$\{|\{)'
comment: 'Template Syntax: "foo ${bar} {$baz}"'
captures:
1: string.interpolated.env keyword.other.template.begin.env
push:
- match: '(\})'
captures:
1: string.interpolated.env keyword.other.template.end.env
pop: true
- match: '(?x)(\$+)?([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
captures:
1: punctuation.definition.variable.env variable.other.env
2: variable.other.env
variable:
- match: '(?x)(\$+)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?\b)'
captures:
1: punctuation.definition.variable.env variable.other.env
2: variable.other.env

View File

@ -0,0 +1,510 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Elixir
file_extensions:
- ex
- exs
first_line_match: ^#!/.*\belixir
scope: source.elixir
contexts:
main:
- match: \b(fn)\b(?!.*->)
captures:
1: keyword.control.elixir
push:
- match: $
pop: true
- include: core_syntax
- match: \b(fn)\b(?=.*->)
captures:
1: keyword.control.elixir
push:
- match: (?>(->)|(when)|(\)))
captures:
1: keyword.operator.other.elixir
2: keyword.control.elixir
3: punctuation.definition.parameters.elixir
pop: true
- include: core_syntax
- include: core_syntax
- match: ^(?=.*->)((?![^"']*("|'')[^"']*->)|(?=.*->[^"']*("|'')[^"']*->))((?!.*\([^\)]*->)|(?=[^\(\)]*->)|(?=\s*\(.*\).*->))((?!.*\b(fn)\b)|(?=.*->.*\bfn\b))
captures:
1: keyword.control.elixir
push:
- match: (?>(->)|(when)|(\)|))
captures:
1: keyword.operator.other.elixir
2: keyword.control.elixir
3: punctuation.definition.parameters.elixir
pop: true
- include: core_syntax
function_body:
- meta_scope: meta.function.elixir
- match: (\bdo:)|(\bdo\b)|(?=\s+(defp|defmacrop)\b)
captures:
1: constant.other.keywords.elixir
2: keyword.control.module.elixir
pop: true
- include: main
- match: \s(\\\\)
captures:
1: keyword.operator.other.elixir
push:
- match: ',|\)|$'
pop: true
- include: main
- match: \b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\b
scope: keyword.guard.elixir
numeric:
- match: '\b(0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*|0b[01]+|0o[0-7]+|\d(?>_?\d)*(\.\d(?>_?\d)*)?([eE][-+]?\d(?>_?\d)*)?)\b'
scope: constant.numeric.elixir
binary:
- match: (?><<)(?!<)
scope: punctuation.definition.binary.begin.elixir
push:
- meta_scope: binary.elixir
- match: '>>'
scope: punctuation.definition.binary.end.elixir
pop: true
- match: ','
scope: punctuation.binary.elixir
- include: numeric
- include: simple_string
- match: '::'
scope: punctuation.binary.elixir
push:
- meta_scope: keyword.type.binary.elixir
- match: (?=,|>>)
pop: true
- include: numeric
- match: '[a-z][\w-]*(?:\((?:(\d+)|([a-z_]\w+))\))?'
captures:
1: constant.numeric.elixir
2: variable.numeric.elixir
escaped_char:
- match: '\\(x[\da-fA-F]{1,2}|.)'
scope: constant.character.escaped.elixir
interpolated_elixir:
- match: '(#)\{'
scope: punctuation.section.embedded.elixir
captures:
1: punctuation.embedded.elixir
push:
- meta_scope: source.elixir.embedded.source
- match: '\}'
scope: punctuation.section.embedded.elixir
pop: true
- include: nest_curly_and_self
- include: main
nest_curly_and_self:
- match: '\{'
scope: punctuation.section.scope.elixir
push:
- match: '\}'
scope: punctuation.section.scope.elixir
pop: true
- include: nest_curly_and_self
- include: main
regex_sub:
- include: interpolated_elixir
- include: escaped_char
- match: '(\{)\d+(,\d+)?(\})'
scope: string.regexp.arbitrary-repitition.elixir
captures:
1: punctuation.definition.arbitrary-repitition.elixir
3: punctuation.definition.arbitrary-repitition.elixir
- match: '\[(?:\^?\])?'
scope: punctuation.definition.character-class.elixir
push:
- meta_scope: string.regexp.character-class.elixir
- match: '\]'
scope: punctuation.definition.character-class.elixir
pop: true
- include: escaped_char
- match: \(
scope: punctuation.definition.group.elixir
push:
- meta_scope: string.regexp.group.elixir
- match: \)
scope: punctuation.definition.group.elixir
pop: true
- include: regex_sub
- match: '(?<=^|\s)(#)\s[[a-zA-Z0-9,. \t?!-][^\x{00}-\x{7F}]]*$'
comment: We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.
scope: comment.line.number-sign.elixir
captures:
1: punctuation.definition.comment.elixir
simple_string:
- match: "'"
comment: single quoted string (allows for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.single.elixir
- match: "'"
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '"'
comment: double quoted string (allows for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.double.elixir
- match: '"'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
string:
- match: (?>''')
comment: Single-quoted heredocs
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.single.heredoc.elixir
- match: ^\s*'''
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: (?>""")
comment: Double-quoted heredocs
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.double.heredoc.elixir
- match: ^\s*"""
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- include: simple_string
- match: '~[a-z](?>""")'
comment: Double-quoted heredocs sigils
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.double.heredoc.elixir
- match: ^\s*"""
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '~[a-z]\{'
comment: sigil (allow for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.interpolated.elixir
- match: '\}[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '~[a-z]\['
comment: sigil (allow for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.interpolated.elixir
- match: '\][a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '~[a-z]\<'
comment: sigil (allow for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.interpolated.elixir
- match: '\>[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '~[a-z]\('
comment: sigil (allow for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.interpolated.elixir
- match: '\)[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '~[a-z]([^\w])'
comment: sigil (allow for interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.interpolated.elixir
- match: '\1[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- include: escaped_char
- match: '~[A-Z](?>""")'
comment: Double-quoted heredocs sigils
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: ^\s*"""
scope: punctuation.definition.string.end.elixir
pop: true
- match: '~[A-Z]\{'
comment: sigil (without interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: '\}[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- match: '~[A-Z]\['
comment: sigil (without interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: '\][a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- match: '~[A-Z]\<'
comment: sigil (without interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: '\>[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- match: '~[A-Z]\('
comment: sigil (without interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: '\)[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
- match: '~[A-Z]([^\w])'
comment: sigil (without interpolation)
scope: punctuation.definition.string.begin.elixir
push:
- meta_scope: string.quoted.other.literal.upper.elixir
- match: '\1[a-z]*'
scope: punctuation.definition.string.end.elixir
pop: true
def_blocks:
- match: ^\s*(defmodule)\b
captures:
1: keyword.control.module.elixir
push:
- meta_scope: meta.module.elixir
- match: \b(do)\b
captures:
1: keyword.control.module.elixir
pop: true
- match: '\b[A-Z]\w*\b'
scope: entity.name.class.elixir
- match: ^\s*(defprotocol)\b
captures:
1: keyword.control.protocol.elixir
push:
- meta_scope: meta.protocol_declaration.elixir
- match: \b(do)\b
captures:
1: keyword.control.protocol.elixir
pop: true
- match: '\b[A-Z]\w*\b'
scope: entity.name.protocol.elixir
- match: ^\s*(defimpl)\b
captures:
1: keyword.control.protocol.elixir
push:
- meta_scope: meta.protocol_implementation.elixir
- match: \b(do)\b
captures:
1: keyword.control.protocol.elixir
pop: true
- match: '\b[A-Z]\w*\b'
scope: entity.name.protocol.elixir
- match: '^\s*(def|defmacro)\s+([a-zA-Z_]\w*)(?:(\()|\s*)'
captures:
1: keyword.control.module.elixir
2: entity.name.function.public.elixir
3: punctuation.definition.parameters.elixir
push: function_body
- match: '^\s*(defp|defmacrop)\s+([a-zA-Z_]\w*)(?:(\()|\s*)'
captures:
1: keyword.control.module.elixir
2: entity.name.function.private.elixir
3: punctuation.definition.parameters.elixir
push: function_body
docs:
- match: '@(module|type)?doc (~[a-z])?"""'
comment: "@doc with heredocs is treated as documentation"
push:
- meta_scope: comment.documentation.heredoc
- match: \s*"""
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '@(module|type)?doc ~[A-Z]"""'
comment: "@doc with heredocs is treated as documentation"
push:
- meta_scope: comment.documentation.heredoc
- match: \s*"""
pop: true
- match: "@(module|type)?doc (~[a-z])?'''"
comment: "@doc with heredocs is treated as documentation"
push:
- meta_scope: comment.documentation.heredoc
- match: \s*'''
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: "@(module|type)?doc ~[A-Z]'''"
comment: "@doc with heredocs is treated as documentation"
push:
- meta_scope: comment.documentation.heredoc
- match: \s*'''
pop: true
- match: "@(module|type)?doc false"
comment: "@doc false is treated as documentation"
scope: comment.documentation.false
- match: '@(module|type)?doc "'
comment: "@doc with string is treated as documentation"
push:
- meta_scope: comment.documentation.string
- match: '"'
pop: true
- include: interpolated_elixir
- include: escaped_char
punctuations:
- match: '<-|->'
scope: keyword.operator.arrow.elixir
- match: '<>'
scope: keyword.operator.binary-concatenation.elixir
- match: '\|>'
scope: keyword.operator.pipe.elixir
- match: \+\+|--
scope: keyword.operator.list-manipulation.elixir
- match: \.\.
scope: keyword.operator.range.elixir
- match: =>
scope: keyword.operator.map-pair.elixir
- match: (\|\|\||&&&|^^^|<<<|>>>|~~~)
scope: keyword.operator.bitwise.elixir
- match: \||\*\*|\\\\|~
scope: keyword.operator.other.elixir
- match: "===?|!==?|<=?|>=?"
scope: keyword.operator.comparison.elixir
- match: '(?<=[ \t])!+|\bnot\b|&&|\band\b|\|\||\bor\b|\bxor\b'
scope: keyword.operator.logical.elixir
- match: \+|-|\*|/
scope: keyword.operator.arithmetic.elixir
- match: "="
scope: keyword.operator.assignment.elixir
- match: \;
scope: punctuation.separator.statement.elixir
- match: ","
scope: punctuation.separator.object.elixir
- match: \.
scope: punctuation.separator.method.elixir
- match: '\{|\}'
scope: punctuation.section.scope.elixir
- match: '\[|\]'
scope: punctuation.section.array.elixir
- match: \(|\)
scope: punctuation.section.function.elixir
core_syntax:
- include: binary
- include: numeric
- include: string
- include: def_blocks
- include: docs
- include: punctuations
- match: '(?<!\.)\b(do|end|case|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super|with)\b(?![?!:])'
scope: keyword.control.elixir
- match: (?<!\.)\b(and|not|or|when|xor|in)\b
comment: as above, just doesn't need a 'end' and does a logic operation
scope: keyword.operator.elixir
- match: '\b[A-Z]\w*\b'
scope: entity.name.class.elixir
- match: '\b(nil|true|false)\b(?![?!])'
scope: constant.language.elixir
- match: '\b(__(CALLER|ENV|MODULE|DIR)__)\b(?![?!])'
scope: variable.language.elixir
- match: '(@)[a-zA-Z_]\w*'
scope: variable.other.readwrite.module.elixir
captures:
1: punctuation.definition.variable.elixir
- match: (&)\d+
scope: variable.other.anonymous.elixir
captures:
1: punctuation.definition.variable.elixir
- match: '\^[a-z_]\w*'
scope: variable.other.capture.elixir
captures:
1: punctuation.definition.variable.elixir
- match: ":'"
scope: punctuation.definition.constant.elixir
push:
- meta_scope: constant.other.symbol.single-quoted.elixir
- match: "'"
scope: punctuation.definition.constant.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: ':"'
scope: punctuation.definition.constant.elixir
push:
- meta_scope: constant.other.symbol.double-quoted.elixir
- match: '"'
scope: punctuation.definition.constant.elixir
pop: true
- include: interpolated_elixir
- include: escaped_char
- match: '(?<!:)(:)(?>[a-zA-Z_][\w@]*(?>[?!]|=(?![>=]))?|\<\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\-|\|>|=>|=~|=|/|\\\\|\*\*?|\.\.?\.?|>=?|<=?|&&?&?|\+\+?|\-\-?|\|\|?\|?|\!|@|\%?\{\}|%|\[\]|\^(\^\^)?)'
comment: symbols
scope: constant.other.symbol.elixir
captures:
1: punctuation.definition.constant.elixir
- match: '(?>[a-zA-Z_][\w@]*(?>[?!])?)(:)(?!:)'
comment: symbols
scope: constant.other.keywords.elixir
captures:
1: punctuation.definition.constant.elixir
- match: ^\s*(##).*$\n?
scope: comment.line.section.elixir
captures:
1: punctuation.definition.comment.elixir
- match: '(?:^[ \t]+)?(#).*$\n?'
scope: comment.line.number-sign.elixir
captures:
1: punctuation.definition.comment.elixir
- match: '(?<!\w)\?(\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\b|[^xMC])|[^\s\\])'
comment: |
matches questionmark-letters.
examples (1st alternation = hex):
?\x1 ?\x61
examples (2rd alternation = escaped):
?\n ?\b
examples (3rd alternation = normal):
?a ?A ?0
?* ?" ?(
?. ?#
the negative lookbehind prevents against matching
p(42.tainted?)
scope: constant.numeric.elixir

View File

@ -0,0 +1,672 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: "F#"
file_extensions:
- fs
- fsi
- fsx
scope: source.fsharp
contexts:
main:
- include: compiler_directives
- include: comments
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: definition
- include: abstract_definition
- include: attributes
- include: modules
- include: anonymous_functions
- include: du_declaration
- include: record_declaration
- include: records
- include: strp_inlined
- include: keywords
- include: cexprs
- include: text
abstract_definition:
- match: '\b(abstract)\s+(member)?(\s+\[\<.*\>\])?\s*([_[:alpha:]0-9,\._`\s]+)(:)'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
5: keyword.fsharp
push:
- meta_scope: abstract.definition.fsharp
- match: \s*(with)\b|=|$
captures:
1: keyword.fsharp
pop: true
- include: comments
- include: common_declaration
- match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([[:alpha:]0-9''`^._ ]+)){0,1}'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: entity.name.type.fsharp
- match: '(?!with|get|set\b)\b([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- include: keywords
anonymous_functions:
- match: \b(fun)\b
captures:
1: keyword.fsharp
push:
- meta_scope: function.anonymous
- match: (->)
captures:
1: keyword.fsharp
pop: true
- include: comments
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: \s*(?=(->))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- include: variables
attributes:
- match: '\[\<'
push:
- meta_scope: support.function.attribute.fsharp
- match: '\>\]|\]'
pop: true
- include: main
cexprs:
- match: '\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\s*\{'
scope: cexpr.fsharp
captures:
0: keyword.fsharp
chars:
- match: ('\\?.')
scope: char.fsharp
captures:
1: string.quoted.single.fsharp
comments:
- match: (\(\*(?!\)))
captures:
1: comment.block.fsharp
push:
- meta_scope: comment.block.fsharp
- match: (\*\))
captures:
1: comment.block.fsharp
pop: true
- match: //.*$
scope: comment.line.double-slash.fsharp
common_binding_definition:
- include: comments
- include: attributes
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))\s*((?=,)|(?=\=))
captures:
1: keyword.symbol.fsharp
pop: true
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: (:)\s*(\()
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
push:
- match: '(\)\s*(([?[:alpha:]0-9''`^._ ]*)))'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
pop: true
- include: tuple_signature
- match: '(:)\s*(\^[[:alpha:]0-9''._]+)\s*(when)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
3: keyword.fsharp
push:
- match: (?=:)
captures:
1: keyword.symbol.fsharp
pop: true
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: "([[:alpha:]0-9'^._]+)"
comment: Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition
captures:
1: entity.name.type.fsharp
- match: (\(|\))
scope: keyword.symbol.fsharp
- match: '(:)\s*([?[:alpha:]0-9''`^._ ]+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(->)\s*(\()?\s*([?[:alpha:]0-9''`^._ ]+)*'
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: entity.name.type.fsharp
- match: (\*)\s*(\()
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
push:
- match: '(\)\s*(([?[:alpha:]0-9''`^._ ]+))+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
pop: true
- include: tuple_signature
- match: '(\*)(\s*([?[:alpha:]0-9''`^._ ]+))*'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(<(?![[:space:]]*\)))'
captures:
1: keyword.symbol.fsharp
push:
- match: ((?<!:)>)
captures:
1: keyword.symbol.fsharp
pop: true
- include: generic_declaration
- match: "({)"
captures:
1: keyword.symbol.fsharp
push:
- match: "(})"
captures:
1: keyword.symbol.fsharp
pop: true
- include: record_signature
- include: definition
- include: variables
- include: keywords
common_declaration:
- match: '\s*(->)\s*([[:alpha:]0-9''`^._ ]+)(<)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
3: keyword.symbol.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: "([[:alpha:]0-9'`^._ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
- match: '\s*(->)\s*(?!with|get|set\b)\b([\w0-9''`^._]+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([?[:alpha:]0-9''`^._ ]+)(<))'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: keyword.symbol.fsharp
5: entity.name.type.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: "([[:alpha:]0-9'`^._ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
compiler_directives:
- match: \s?(#if|#elif|#else|#elseif|#endif|#light|#nowarn)
scope: compiler_directive.fsharp
captures:
constants:
- match: \(\)
scope: constant.language.unit.fsharp
- match: '\b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))'
scope: constant.numeric.floating-point.fsharp
- match: '\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))'
scope: constant.numeric.integer.nativeint.fsharp
- match: \b(true|false|null|unit)\b
scope: constant.others.fsharp
definition:
- match: '\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
4: keyword.fsharp
5: variable.fsharp
push:
- meta_scope: binding.fsharp
- match: \s*(with\b|=|\n+=|(?<=\=))
captures:
1: keyword.fsharp
pop: true
- include: common_binding_definition
- match: '\b(static val mutable|val mutable|val)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
4: keyword.fsharp
5: variable.fsharp
push:
- meta_scope: binding.fsharp
- match: \n$
pop: true
- include: common_binding_definition
double_tick:
- match: (``)(.*)(``)
scope: variable.other.binding.fsharp
captures:
1: string.quoted.single.fsharp
2: variable.other.binding.fsharp
3: string.quoted.single.fsharp
du_declaration:
- match: \b(of)\b
captures:
1: keyword.fsharp
push:
- meta_scope: du_declaration.fsharp
- match: $|(\|)
captures:
1: keyword.symbol.fsharp
pop: true
- include: comments
- match: '([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)'
captures:
1: variable.parameter.fsharp
2: keyword.symbol.fsharp
3: entity.name.type.fsharp
- match: "([[:alpha:]0-9'`^._]+)|``([[:alpha:]0-9'^._ ]+)``"
captures:
1: entity.name.type.fsharp
- include: keywords
generic_declaration:
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\!|struct|while|mutable)(?!')\b
scope: keyword.fsharp
- match: ":"
scope: keyword.fsharp
- include: constants
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: (<)
captures:
1: keyword.symbol.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: tuple_signature
- include: generic_declaration
- match: '(?!when|and|or\b)\b([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- match: (\|)
captures:
1: keyword.symbol.fsharp
- include: keywords
keywords:
- match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|or|use|use\!|struct|while|mutable)(?!')\b
scope: keyword.fsharp
- match: '(&&&|\|\|\||\^\^\^|~~~|<<<|>>>|\|>|\->|\<\-|:>|:\?>|:|\[|\]|\;|<>|=|@|\|\||&&|{|}|\||_|\.\.|\,|\+|\-|\*|\/|\^|\!|\>|\>\=|\>\>|\<|\<\=|\(|\)|\<\<)'
scope: keyword.symbol.fsharp
member_declaration:
- include: comments
- include: common_declaration
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))\s*((?=,)|(?=\=))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: (\(|\))
scope: keyword.symbol.fsharp
- match: '(\?{0,1})([[:alpha:]0-9''`^._]+|``[[:alpha:]0-9''`^:,._ ]+``)\s*(:{0,1})(\s*([?[:alpha:]0-9''`<>._ ]+)){0,1}'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: entity.name.type.fsharp
- include: keywords
modules:
- match: '\b(namespace|module)\s*(public|internal|private)?\s+([[:alpha:]][[:alpha:]0-9''_. ]*)'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: entity.name.section.fsharp
push:
- meta_scope: entity.name.section.fsharp
- match: (\s?=|\s|$)
captures:
1: keyword.symbol.fsharp
pop: true
- match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
- match: '\b(open)\s+([[:alpha:]][[:alpha:]0-9''_]*)(?=(\.[A-Z][[:alpha:]0-9_]*)*)'
captures:
1: keyword.fsharp
2: entity.name.section.fsharp
push:
- meta_scope: namespace.open.fsharp
- match: (\s|$)
pop: true
- match: '(\.)([[:alpha:]][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
- match: '^\s*(module)\s+([A-Z][[:alpha:]0-9''_]*)\s*(=)\s*([A-Z][[:alpha:]0-9''_]*)'
captures:
1: keyword.fsharp
2: entity.name.type.namespace.fsharp
3: punctuation.separator.namespace-definition.fsharp
4: entity.name.section.fsharp
push:
- meta_scope: namespace.alias.fsharp
- match: (\s|$)
pop: true
- match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
record_declaration:
- match: '(\{)'
captures:
1: keyword.symbol.fsharp
push:
- match: '(?<=\})'
pop: true
- include: comments
- match: '(((mutable)\s[[:alpha:]]+)|[[:alpha:]0-9''`<>^._]*)\s*((?<!:):(?!:))\s*'
captures:
3: keyword.fsharp
4: keyword.symbol.fsharp
push:
- match: '$|(;|\})'
captures:
1: keyword.symbol.fsharp
pop: true
- include: comments
- match: "([[:alpha:]0-9'`^_ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
- include: compiler_directives
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: definition
- include: attributes
- include: anonymous_functions
- include: keywords
- include: cexprs
- include: text
record_signature:
- match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
- match: "({)"
captures:
1: keyword.symbol.fsharp
push:
- match: "(})"
captures:
1: keyword.symbol.fsharp
pop: true
- match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
- include: record_signature
- include: keywords
records:
- match: '\b(type)[\s]+(private|internal|public)?\s*'
captures:
1: keyword.fsharp
2: keyword.fsharp
push:
- meta_scope: record.fsharp
- match: '\s*((with)|((as)\s+([[:alpha:]0-9'']+))|(=)|[\n=]|(\(\)))'
captures:
2: keyword.fsharp
3: keyword.fsharp
4: keyword.fsharp
5: variable.parameter.fsharp
6: keyword.symbol.fsharp
7: constant.language.unit.fsharp
pop: true
- include: comments
- include: attributes
- match: "([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)"
captures:
1: entity.name.type.fsharp
- match: (<)
captures:
1: keyword.fsharp
push:
- match: ((?<!:)>)
captures:
1: keyword.fsharp
pop: true
- match: '((''|\^)``[[:alpha:]0-9`^:,._ ]+``|(''|\^)[[:alpha:]0-9`^:._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\b
scope: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (static member|member|new)
captures:
1: keyword.fsharp
- include: common_binding_definition
- match: '([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- include: keywords
- match: \s*(private|internal|public)
captures:
1: keyword.symbol.fsharp
2: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: '\s*(?=(=)|[\n=]|(\(\))|(as))'
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- include: keywords
string_formatter:
- match: (%0?-?(\d+)?((a|t)|(\.\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\+?A)))
scope: entity.name.type.format.specifier.fsharp
captures:
1: keyword.format.specifier.fsharp
strings:
- match: '(?=[^\\])(@")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.literal.fsharp
- match: (")(?!")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- match: '"(")'
scope: constant.character.string.escape.fsharp
- match: '(?=[^\\])(""")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.triple.fsharp
- match: (""")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- include: string_formatter
- match: '(?=[^\\])(")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.double.fsharp
- match: (")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- match: '\\$[ \t]*'
scope: punctuation.separator.string.ignore-eol.fsharp
- match: '\\([\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})'
scope: constant.character.string.escape.fsharp
- match: '\\(?![\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8}).'
scope: invalid.illeagal.character.string.fsharp
- include: string_formatter
strp_inlined:
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: strp_inlined_body
strp_inlined_body:
- include: comments
- include: anonymous_functions
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: strp_inlined_body
- match: '(static member|member)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)'
captures:
1: keyword.fsharp
2: variable.fsharp
3: keyword.symbol.fsharp
- include: compiler_directives
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: keywords
- include: text
- include: definition
- include: attributes
- include: keywords
- include: cexprs
- include: text
text:
- match: \\
scope: text.fsharp
tuple_signature:
- match: "(([?[:alpha:]0-9'`^._ ]+))+"
captures:
1: entity.name.type.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: "(([?[:alpha:]0-9'`^._ ]+))+"
captures:
1: entity.name.type.fsharp
- include: tuple_signature
- include: keywords
variables:
- match: \(\)
scope: constant.language.unit.fsharp
- match: '(\?{0,1})(``[[:alpha:]0-9''`^:,._ ]+``|[[:alpha:]0-9''`<>^._ ]\w*)'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp

View File

@ -0,0 +1,672 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: "F#"
file_extensions:
- fs
- fsi
- fsx
scope: source.fsharp
contexts:
main:
- include: compiler_directives
- include: comments
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: definition
- include: abstract_definition
- include: attributes
- include: modules
- include: anonymous_functions
- include: du_declaration
- include: record_declaration
- include: records
- include: strp_inlined
- include: keywords
- include: cexprs
- include: text
abstract_definition:
- match: '\b(abstract)\s+(member)?(\s+\[\<.*\>\])?\s*([_[:alpha:]0-9,\._`\s]+)(:)'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
5: keyword.fsharp
push:
- meta_scope: abstract.definition.fsharp
- match: \s*(with)\b|=|$
captures:
1: keyword.fsharp
pop: true
- include: comments
- include: common_declaration
- match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([[:alpha:]0-9''`^._ ]+)){0,1}'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: entity.name.type.fsharp
- match: '(?!with|get|set\b)\b([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- include: keywords
anonymous_functions:
- match: \b(fun)\b
captures:
1: keyword.fsharp
push:
- meta_scope: function.anonymous
- match: (->)
captures:
1: keyword.fsharp
pop: true
- include: comments
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: \s*(?=(->))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- include: variables
attributes:
- match: '\[\<'
push:
- meta_scope: support.function.attribute.fsharp
- match: '\>\]|\]'
pop: true
- include: main
cexprs:
- match: '\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\s*\{'
scope: cexpr.fsharp
captures:
0: keyword.fsharp
chars:
- match: ('\\?.')
scope: char.fsharp
captures:
1: string.quoted.single.fsharp
comments:
- match: (\(\*(?!\)))
captures:
1: comment.block.fsharp
push:
- meta_scope: comment.block.fsharp
- match: (\*\))
captures:
1: comment.block.fsharp
pop: true
- match: //.*$
scope: comment.line.double-slash.fsharp
common_binding_definition:
- include: comments
- include: attributes
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))\s*((?=,)|(?=\=))
captures:
1: keyword.symbol.fsharp
pop: true
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: (:)\s*(\()
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
push:
- match: '(\)\s*(([?[:alpha:]0-9''`^._ ]*)))'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
pop: true
- include: tuple_signature
- match: '(:)\s*(\^[[:alpha:]0-9''._]+)\s*(when)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
3: keyword.fsharp
push:
- match: (?=:)
captures:
1: keyword.symbol.fsharp
pop: true
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: "([[:alpha:]0-9'^._]+)"
comment: Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition
captures:
1: entity.name.type.fsharp
- match: (\(|\))
scope: keyword.symbol.fsharp
- match: '(:)\s*([?[:alpha:]0-9''`^._ ]+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(->)\s*(\()?\s*([?[:alpha:]0-9''`^._ ]+)*'
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: entity.name.type.fsharp
- match: (\*)\s*(\()
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
push:
- match: '(\)\s*(([?[:alpha:]0-9''`^._ ]+))+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
pop: true
- include: tuple_signature
- match: '(\*)(\s*([?[:alpha:]0-9''`^._ ]+))*'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(<(?![[:space:]]*\)))'
captures:
1: keyword.symbol.fsharp
push:
- match: ((?<!:)>)
captures:
1: keyword.symbol.fsharp
pop: true
- include: generic_declaration
- match: "({)"
captures:
1: keyword.symbol.fsharp
push:
- match: "(})"
captures:
1: keyword.symbol.fsharp
pop: true
- include: record_signature
- include: definition
- include: variables
- include: keywords
common_declaration:
- match: '\s*(->)\s*([[:alpha:]0-9''`^._ ]+)(<)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
3: keyword.symbol.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: "([[:alpha:]0-9'`^._ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
- match: '\s*(->)\s*(?!with|get|set\b)\b([\w0-9''`^._]+)'
captures:
1: keyword.symbol.fsharp
2: entity.name.type.fsharp
- match: '(\?{0,1})([[:alpha:]0-9''`^._ ]+)\s*(:)(\s*([?[:alpha:]0-9''`^._ ]+)(<))'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: keyword.symbol.fsharp
5: entity.name.type.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: "([[:alpha:]0-9'`^._ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
compiler_directives:
- match: \s?(#if|#elif|#else|#elseif|#endif|#light|#nowarn)
scope: compiler_directive.fsharp
captures:
constants:
- match: \(\)
scope: constant.language.unit.fsharp
- match: '\b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))'
scope: constant.numeric.floating-point.fsharp
- match: '\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))'
scope: constant.numeric.integer.nativeint.fsharp
- match: \b(true|false|null|unit)\b
scope: constant.others.fsharp
definition:
- match: '\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
4: keyword.fsharp
5: variable.fsharp
push:
- meta_scope: binding.fsharp
- match: \s*(with\b|=|\n+=|(?<=\=))
captures:
1: keyword.fsharp
pop: true
- include: common_binding_definition
- match: '\b(static val mutable|val mutable|val)(\s+rec|mutable)?(\s+\[\<.*\>\])?\s*(private|internal|public)?\s+(\[[^-=]*\]|[_[:alpha:]]([_[:alpha:]0-9,\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\._`\s]+|(?<=,)\s)*)?'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: support.function.attribute.fsharp
4: keyword.fsharp
5: variable.fsharp
push:
- meta_scope: binding.fsharp
- match: \n$
pop: true
- include: common_binding_definition
double_tick:
- match: (``)(.*)(``)
scope: variable.other.binding.fsharp
captures:
1: string.quoted.single.fsharp
2: variable.other.binding.fsharp
3: string.quoted.single.fsharp
du_declaration:
- match: \b(of)\b
captures:
1: keyword.fsharp
push:
- meta_scope: du_declaration.fsharp
- match: $|(\|)
captures:
1: keyword.symbol.fsharp
pop: true
- include: comments
- match: '([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)'
captures:
1: variable.parameter.fsharp
2: keyword.symbol.fsharp
3: entity.name.type.fsharp
- match: "([[:alpha:]0-9'`^._]+)|``([[:alpha:]0-9'^._ ]+)``"
captures:
1: entity.name.type.fsharp
- include: keywords
generic_declaration:
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\!|struct|while|mutable)(?!')\b
scope: keyword.fsharp
- match: ":"
scope: keyword.fsharp
- include: constants
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: (<)
captures:
1: keyword.symbol.fsharp
push:
- match: (>)
captures:
1: keyword.symbol.fsharp
pop: true
- match: '((''|\^)[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: tuple_signature
- include: generic_declaration
- match: '(?!when|and|or\b)\b([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- match: (\|)
captures:
1: keyword.symbol.fsharp
- include: keywords
keywords:
- match: \b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\!|return\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|or|use|use\!|struct|while|mutable)(?!')\b
scope: keyword.fsharp
- match: '(&&&|\|\|\||\^\^\^|~~~|<<<|>>>|\|>|\->|\<\-|:>|:\?>|:|\[|\]|\;|<>|=|@|\|\||&&|{|}|\||_|\.\.|\,|\+|\-|\*|\/|\^|\!|\>|\>\=|\>\>|\<|\<\=|\(|\)|\<\<)'
scope: keyword.symbol.fsharp
member_declaration:
- include: comments
- include: common_declaration
- match: (:)\s*(\()\s*(static member|member)
captures:
1: keyword.symbol.fsharp
2: keyword.symbol.fsharp
3: keyword.fsharp
push:
- match: (\))\s*((?=,)|(?=\=))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- include: variables
- include: keywords
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: (\(|\))
scope: keyword.symbol.fsharp
- match: '(\?{0,1})([[:alpha:]0-9''`^._]+|``[[:alpha:]0-9''`^:,._ ]+``)\s*(:{0,1})(\s*([?[:alpha:]0-9''`<>._ ]+)){0,1}'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
3: keyword.symbol.fsharp
4: entity.name.type.fsharp
- include: keywords
modules:
- match: '\b(namespace|module)\s*(public|internal|private)?\s+([[:alpha:]][[:alpha:]0-9''_. ]*)'
captures:
1: keyword.fsharp
2: keyword.fsharp
3: entity.name.section.fsharp
push:
- meta_scope: entity.name.section.fsharp
- match: (\s?=|\s|$)
captures:
1: keyword.symbol.fsharp
pop: true
- match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
- match: '\b(open)\s+([[:alpha:]][[:alpha:]0-9''_]*)(?=(\.[A-Z][[:alpha:]0-9_]*)*)'
captures:
1: keyword.fsharp
2: entity.name.section.fsharp
push:
- meta_scope: namespace.open.fsharp
- match: (\s|$)
pop: true
- match: '(\.)([[:alpha:]][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
- match: '^\s*(module)\s+([A-Z][[:alpha:]0-9''_]*)\s*(=)\s*([A-Z][[:alpha:]0-9''_]*)'
captures:
1: keyword.fsharp
2: entity.name.type.namespace.fsharp
3: punctuation.separator.namespace-definition.fsharp
4: entity.name.section.fsharp
push:
- meta_scope: namespace.alias.fsharp
- match: (\s|$)
pop: true
- match: '(\.)([A-Z][[:alpha:]0-9''_]*)'
scope: entity.name.section.fsharp
captures:
1: punctuation.separator.namespace-reference.fsharp
2: entity.name.section.fsharp
record_declaration:
- match: '(\{)'
captures:
1: keyword.symbol.fsharp
push:
- match: '(?<=\})'
pop: true
- include: comments
- match: '(((mutable)\s[[:alpha:]]+)|[[:alpha:]0-9''`<>^._]*)\s*((?<!:):(?!:))\s*'
captures:
3: keyword.fsharp
4: keyword.symbol.fsharp
push:
- match: '$|(;|\})'
captures:
1: keyword.symbol.fsharp
pop: true
- include: comments
- match: "([[:alpha:]0-9'`^_ ]+)"
captures:
1: entity.name.type.fsharp
- include: keywords
- include: compiler_directives
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: definition
- include: attributes
- include: anonymous_functions
- include: keywords
- include: cexprs
- include: text
record_signature:
- match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
- match: "({)"
captures:
1: keyword.symbol.fsharp
push:
- match: "(})"
captures:
1: keyword.symbol.fsharp
pop: true
- match: "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)"
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp
- include: record_signature
- include: keywords
records:
- match: '\b(type)[\s]+(private|internal|public)?\s*'
captures:
1: keyword.fsharp
2: keyword.fsharp
push:
- meta_scope: record.fsharp
- match: '\s*((with)|((as)\s+([[:alpha:]0-9'']+))|(=)|[\n=]|(\(\)))'
captures:
2: keyword.fsharp
3: keyword.fsharp
4: keyword.fsharp
5: variable.parameter.fsharp
6: keyword.symbol.fsharp
7: constant.language.unit.fsharp
pop: true
- include: comments
- include: attributes
- match: "([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)"
captures:
1: entity.name.type.fsharp
- match: (<)
captures:
1: keyword.fsharp
push:
- match: ((?<!:)>)
captures:
1: keyword.fsharp
pop: true
- match: '((''|\^)``[[:alpha:]0-9`^:,._ ]+``|(''|\^)[[:alpha:]0-9`^:._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\b
scope: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: (static member|member|new)
captures:
1: keyword.fsharp
- include: common_binding_definition
- match: '([\w0-9''`^._]+)'
captures:
1: entity.name.type.fsharp
- include: keywords
- match: \s*(private|internal|public)
captures:
1: keyword.symbol.fsharp
2: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: '\s*(?=(=)|[\n=]|(\(\))|(as))'
captures:
1: keyword.symbol.fsharp
pop: true
- include: member_declaration
- include: keywords
string_formatter:
- match: (%0?-?(\d+)?((a|t)|(\.\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\+?A)))
scope: entity.name.type.format.specifier.fsharp
captures:
1: keyword.format.specifier.fsharp
strings:
- match: '(?=[^\\])(@")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.literal.fsharp
- match: (")(?!")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- match: '"(")'
scope: constant.character.string.escape.fsharp
- match: '(?=[^\\])(""")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.triple.fsharp
- match: (""")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- include: string_formatter
- match: '(?=[^\\])(")'
captures:
1: punctuation.definition.string.begin.fsharp
push:
- meta_scope: string.quoted.double.fsharp
- match: (")
captures:
1: punctuation.definition.string.end.fsharp
pop: true
- match: '\\$[ \t]*'
scope: punctuation.separator.string.ignore-eol.fsharp
- match: '\\([\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})'
scope: constant.character.string.escape.fsharp
- match: '\\(?![\\''''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8}).'
scope: invalid.illeagal.character.string.fsharp
- include: string_formatter
strp_inlined:
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: strp_inlined_body
strp_inlined_body:
- include: comments
- include: anonymous_functions
- match: '(\^[[:alpha:]0-9''._]+)'
captures:
1: entity.name.type.fsharp
- match: \b(and|when|or)\b
scope: keyword.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- include: strp_inlined_body
- match: '(static member|member)\s*([[:alpha:]0-9''`<>^._]+|``[[:alpha:]0-9'' <>^._]+``)\s*(:)'
captures:
1: keyword.fsharp
2: variable.fsharp
3: keyword.symbol.fsharp
- include: compiler_directives
- include: constants
- include: strings
- include: chars
- include: double_tick
- include: keywords
- include: text
- include: definition
- include: attributes
- include: keywords
- include: cexprs
- include: text
text:
- match: \\
scope: text.fsharp
tuple_signature:
- match: "(([?[:alpha:]0-9'`^._ ]+))+"
captures:
1: entity.name.type.fsharp
- match: (\()
captures:
1: keyword.symbol.fsharp
push:
- match: (\))
captures:
1: keyword.symbol.fsharp
pop: true
- match: "(([?[:alpha:]0-9'`^._ ]+))+"
captures:
1: entity.name.type.fsharp
- include: tuple_signature
- include: keywords
variables:
- match: \(\)
scope: constant.language.unit.fsharp
- match: '(\?{0,1})(``[[:alpha:]0-9''`^:,._ ]+``|[[:alpha:]0-9''`<>^._ ]\w*)'
captures:
1: keyword.symbol.fsharp
2: variable.parameter.fsharp

View File

@ -0,0 +1,497 @@
%YAML 1.2
---
name: HTML (EEx)
file_extensions:
- html.eex
first_line_match: (?i)<(!DOCTYPE\s*)?html
scope: text.html.elixir
variables:
unquoted_attribute_value: (?:[^\s<>/''"]|/(?!>))+
not_equals_lookahead: (?=\s*[^\s=])
contexts:
interpolation:
- match: <%+[-=]?
scope: punctuation.section.embedded.elixir
embed: scope:source.elixir
embed_scope: source.elixir.embedded.html
escape: \%>
escape_captures:
0: punctuation.section.embedded.elixir
immediately-pop:
- match: ''
pop: true
else-pop:
- match: (?=\S)
pop: true
main:
- include: interpolation
- match: (<\?)(xml)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.xml.html
push:
- meta_scope: meta.tag.preprocessor.xml.html
- match: '\?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-generic-attribute
- include: string-double-quoted
- include: string-single-quoted
- match: <!--
scope: punctuation.definition.comment.begin.html
push:
- meta_scope: comment.block.html
- match: '(-*)--\s*>'
scope: punctuation.definition.comment.end.html
captures:
1: invalid.illegal.bad-comments-or-CDATA.html
pop: true
- match: -{2,}
scope: invalid.illegal.bad-comments-or-CDATA.html
- match: <!
scope: punctuation.definition.tag.html
push:
- meta_scope: meta.tag.sgml.html
- match: ">"
scope: punctuation.definition.tag.html
pop: true
- match: (?i:DOCTYPE)
scope: entity.name.tag.doctype.html
push:
- meta_scope: meta.tag.sgml.doctype.html
- match: (?=>)
pop: true
- match: '"[^">]*"'
scope: string.quoted.double.doctype.identifiers-and-DTDs.html
- match: '\[CDATA\['
push:
- meta_scope: constant.other.inline-data.html
- match: ']](?=>)'
pop: true
- match: (\s*)(?!--|>)\S(\s*)
scope: invalid.illegal.bad-comments-or-CDATA.html
- match: (</?)([a-z_][a-z0-9:_]*-[a-z0-9:_-]+)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.custom.html
push:
- meta_scope: meta.tag.custom.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: '(?:^\s+)?(<)((?i:style))\b(?![^>]*/>)'
captures:
0: meta.tag.style.begin.html
1: punctuation.definition.tag.begin.html
2: entity.name.tag.style.html
push:
- match: (?i)(</)(style)(>)
captures:
0: meta.tag.style.end.html
1: punctuation.definition.tag.begin.html
2: entity.name.tag.style.html
3: punctuation.definition.tag.end.html
pop: true
- match: '(>)\s*'
captures:
1: meta.tag.style.begin.html punctuation.definition.tag.end.html
embed: scope:source.css
embed_scope: source.css.embedded.html
escape: (?i)(?=</style)
- match: ''
push:
- meta_scope: meta.tag.style.begin.html
- match: '(?=>)'
pop: true
- include: tag-attributes
- match: '(<)((?i:script))\b(?![^>]*/>)(?![^>]*(?i:type.?=.?text/((?!javascript).*)))'
captures:
0: meta.tag.script.begin.html
1: punctuation.definition.tag.begin.html
2: entity.name.tag.script.html
push:
- match: (?i)(-->)?\s*(</)(script)(>)
captures:
0: meta.tag.script.end.html
1: comment.block.html punctuation.definition.comment.html
2: punctuation.definition.tag.begin.html
3: entity.name.tag.script.html
4: punctuation.definition.tag.end.html
pop: true
- match: '(>)\s*(<!--)?'
captures:
1: meta.tag.script.begin.html punctuation.definition.tag.end.html
2: comment.block.html punctuation.definition.comment.html
embed: scope:source.js
embed_scope: source.js.embedded.html
escape: (?i)(?=(-->)?\s*</script)
- match: ''
push:
- meta_scope: meta.tag.script.begin.html
- match: '(?=>)'
pop: true
- include: tag-attributes
- match: (</?)((?i:body|head|html)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.structure.any.html
push:
- meta_scope: meta.tag.structure.any.html
- match: '>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:address|blockquote|dd|div|section|article|aside|header|footer|nav|menu|dl|dt|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|pre)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.block.any.html
push:
- meta_scope: meta.tag.block.any.html
- match: '>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:hr)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.block.any.html
push:
- meta_scope: meta.tag.block.any.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:form|fieldset)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.block.form.html
push:
- meta_scope: meta.tag.block.form.html
- match: '>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:abbr|acronym|area|b|base|basefont|bdo|big|br|caption|cite|code|del|dfn|em|font|head|html|i|img|ins|isindex|kbd|li|link|map|meta|noscript|param|q|s|samp|script|small|span|strike|strong|style|sub|sup|title|tt|u|var)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.any.html
push:
- meta_scope: meta.tag.inline.any.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:button|input|label|legend|optgroup|option|select|textarea)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.form.html
push:
- meta_scope: meta.tag.inline.form.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- match: (</?)((?i:a)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.a.html
push:
- meta_scope: meta.tag.inline.a.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- include: interpolation
- match: (</?)((?i:col|colgroup|table|tbody|td|tfoot|th|thead|tr)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.table.html
push:
- meta_scope: meta.tag.inline.table.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- include: interpolation
- match: (</?)([A-Za-z0-9:_]+-[A-Za-z0-9:_-]+)
captures:
1: punctuation.definition.tag.begin.html
2: invalid.illegal.uppercase-custom-tag-name.html
push:
- meta_scope: meta.tag.custom.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- include: interpolation
- match: (</?)([a-zA-Z0-9:]+)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- meta_scope: meta.tag.other.html
- match: '(?: ?/)?>'
scope: punctuation.definition.tag.end.html
pop: true
- include: tag-attributes
- include: interpolation
- include: entities
- match: <>
scope: invalid.illegal.incomplete.html
entities-common:
- match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
scope: constant.character.entity.html
captures:
1: punctuation.definition.entity.html
3: punctuation.definition.entity.html
attribute-entities:
- include: entities-common
entities:
- include: entities-common
- match: '&'
scope: invalid.illegal.bad-ampersand.html
string-double-quoted:
- match: '"'
scope: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.double.html
- match: '"'
scope: punctuation.definition.string.end.html
pop: true
- include: entities
string-single-quoted:
- match: "'"
scope: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.single.html
- match: "'"
scope: punctuation.definition.string.end.html
pop: true
- include: entities
tag-generic-attribute:
- match: '[a-zA-Z0-9:\-_.]+'
scope: entity.other.attribute-name.html
push:
- tag-generic-attribute-meta
- tag-generic-attribute-equals
- match: '[a-zA-Z0-9:\-_.]+'
scope: entity.other.attribute-name.html
tag-generic-attribute-meta:
- meta_scope: meta.attribute-with-value.html
- include: immediately-pop
tag-generic-attribute-equals:
- match: '='
scope: punctuation.separator.key-value.html
set: tag-generic-attribute-value
- match: '{{not_equals_lookahead}}'
pop: true
tag-generic-attribute-value:
- match: '"'
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.double.html
- match: '"'
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- include: interpolation
- match: "'"
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.single.html
- match: "'"
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- include: interpolation
- match: '{{unquoted_attribute_value}}'
scope: string.unquoted.html
- include: else-pop
tag-class-attribute:
- match: '\bclass\b'
scope: entity.other.attribute-name.class.html
push:
- tag-class-attribute-meta
- tag-class-attribute-equals
tag-class-attribute-meta:
- meta_scope: meta.attribute-with-value.class.html
- include: immediately-pop
tag-class-attribute-equals:
- match: '='
scope: punctuation.separator.key-value.html
set: tag-class-attribute-value
- match: '{{not_equals_lookahead}}'
pop: true
tag-class-attribute-value:
- match: '"'
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.double.html
- meta_content_scope: meta.class-name.html
- match: '"'
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- include: interpolation
- match: "'"
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.single.html
- meta_content_scope: meta.class-name.html
- match: "'"
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- include: interpolation
- match: '{{unquoted_attribute_value}}'
scope: string.unquoted.html meta.class-name.html
- include: else-pop
tag-id-attribute:
- match: '\bid\b'
scope: entity.other.attribute-name.id.html
push:
- tag-id-attribute-meta
- tag-id-attribute-equals
tag-id-attribute-meta:
- meta_scope: meta.attribute-with-value.id.html
- include: immediately-pop
tag-id-attribute-equals:
- match: '='
scope: punctuation.separator.key-value.html
set: tag-id-attribute-value
- match: '{{not_equals_lookahead}}'
pop: true
tag-id-attribute-value:
- match: '"'
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.double.html
- meta_content_scope: meta.toc-list.id.html
- match: '"'
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- match: "'"
scope: punctuation.definition.string.begin.html
set:
- meta_scope: string.quoted.single.html
- meta_content_scope: meta.toc-list.id.html
- match: "'"
scope: punctuation.definition.string.end.html
pop: true
- include: attribute-entities
- match: '{{unquoted_attribute_value}}'
scope: string.unquoted.html meta.toc-list.id.html
- include: else-pop
tag-style-attribute:
- match: '\bstyle\b'
scope: entity.other.attribute-name.style.html
push:
- tag-style-attribute-meta
- tag-style-attribute-equals
tag-style-attribute-meta:
- meta_scope: meta.attribute-with-value.style.html
- include: immediately-pop
tag-style-attribute-equals:
- match: '='
scope: punctuation.separator.key-value.html
set: tag-style-attribute-value
- match: '{{not_equals_lookahead}}'
pop: true
tag-style-attribute-value:
- match: '"'
scope: string.quoted.double punctuation.definition.string.begin.html
embed: scope:source.css#rule-list-body
embed_scope: source.css
escape: '"'
escape_captures:
0: string.quoted.double punctuation.definition.string.end.html
- match: "'"
scope: string.quoted.single punctuation.definition.string.begin.html
embed: scope:source.css#rule-list-body
embed_scope: source.css
escape: "'"
escape_captures:
0: string.quoted.single punctuation.definition.string.end.html
- include: else-pop
tag-event-attribute:
- match: |-
(?x)\bon(
abort|autocomplete|autocompleteerror|blur|cancel|canplay
|canplaythrough|change|click|close|contextmenu|cuechange|dblclick|drag
|dragend|dragenter|dragexit|dragleave|dragover|dragstart|drop
|durationchange|emptied|ended|error|focus|input|invalid|keydown
|keypress|keyup|load|loadeddata|loadedmetadata|loadstart|mousedown
|mouseenter|mouseleave|mousemove|mouseout|mouseover|mouseup|mousewheel
|pause|play|playing|progress|ratechange|reset|resize|scroll|seeked
|seeking|select|show|sort|stalled|submit|suspend|timeupdate|toggle
|volumechange|waiting
)\b
scope: entity.other.attribute-name.event.html
push:
- tag-event-attribute-meta
- tag-event-attribute-equals
tag-event-attribute-meta:
- meta_scope: meta.attribute-with-value.event.html
- include: immediately-pop
tag-event-attribute-equals:
- match: '='
scope: punctuation.separator.key-value.html
set: tag-event-attribute-value
- match: '{{not_equals_lookahead}}'
pop: true
tag-event-attribute-value:
- match: '"'
scope: string.quoted.double punctuation.definition.string.begin.html
embed: scope:source.js
embed_scope: meta.attribute-with-value.event.html
escape: '"'
escape_captures:
0: string.quoted.double punctuation.definition.string.end.html
- match: "'"
scope: string.quoted.single punctuation.definition.string.begin.html meta.attribute-with-value.event.html
embed: scope:source.js
embed_scope: meta.attribute-with-value.event.html
escape: "'"
escape_captures:
0: string.quoted.single punctuation.definition.string.end.html
- include: else-pop
# This is to prevent breaking syntaxes referencing the old context name
tag-stuff:
- include: tag-attributes
tag-attributes:
- include: tag-id-attribute
- include: tag-class-attribute
- include: tag-style-attribute
- include: tag-event-attribute
- include: tag-generic-attribute

View File

@ -0,0 +1,662 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: HTML (Twig)
file_extensions:
- twig
- html.twig
scope: text.html.twig
contexts:
main:
- match: '(<)([a-zA-Z0-9:]++)(?=[^>]*></\2>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.html
push:
- meta_scope: meta.tag.any.html
- match: (>(<)/)(\2)(>)
captures:
1: punctuation.definition.tag.html
2: meta.scope.between-tag-pair.html
3: entity.name.tag.html
4: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (<\?)(xml)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.xml.html
push:
- meta_scope: meta.tag.preprocessor.xml.html
- match: (\?>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.xml.html
pop: true
- include: tag-generic-attribute
- include: string-double-quoted
- include: string-single-quoted
- match: <!--
captures:
0: punctuation.definition.comment.html
push:
- meta_scope: comment.block.html
- match: '--\s*>'
captures:
0: punctuation.definition.comment.html
pop: true
- match: "--"
scope: invalid.illegal.bad-comments-or-CDATA.html
- include: embedded-code
- match: <!
captures:
0: punctuation.definition.tag.html
push:
- meta_scope: meta.tag.sgml.html
- match: ">"
captures:
0: punctuation.definition.tag.html
pop: true
- match: (?i:DOCTYPE)
captures:
1: entity.name.tag.doctype.html
push:
- meta_scope: meta.tag.sgml.doctype.html
- match: (?=>)
captures:
1: entity.name.tag.doctype.html
pop: true
- match: '"[^">]*"'
scope: string.quoted.double.doctype.identifiers-and-DTDs.html
- match: '\[CDATA\['
push:
- meta_scope: constant.other.inline-data.html
- match: "]](?=>)"
pop: true
- match: (\s*)(?!--|>)\S(\s*)
scope: invalid.illegal.bad-comments-or-CDATA.html
- include: embedded-code
- match: '(?:^\s+)?(<)((?i:style))\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.style.html
3: punctuation.definition.tag.html
push:
- meta_scope: source.css.embedded.html
- match: (</)((?i:style))(>)(?:\s*\n)?
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.style.html
3: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (>)
captures:
1: punctuation.definition.tag.html
push:
- match: (?=</(?i:style))
pop: true
- include: embedded-code
- include: scope:source.css
- match: '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)'
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
push:
- meta_scope: source.js.embedded.html
- match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
captures:
2: punctuation.definition.tag.html
pop: true
- include: tag-stuff
- match: (?<!</(?:script|SCRIPT))(>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
push:
- match: (</)((?i:script))
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.script.html
pop: true
- match: (//).*?((?=</script)|$\n?)
scope: comment.line.double-slash.js
captures:
1: punctuation.definition.comment.js
- match: /\*
captures:
0: punctuation.definition.comment.js
push:
- meta_scope: comment.block.js
- match: \*/|(?=</script)
captures:
0: punctuation.definition.comment.js
pop: true
- include: php
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
- include: scope:source.js
- match: (</?)((?i:body|head|html)\b)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.structure.any.html
push:
- meta_scope: meta.tag.structure.any.html
- match: (>)
captures:
1: punctuation.definition.tag.html
2: entity.name.tag.structure.any.html
pop: true
- include: tag-stuff
- match: (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.block.any.html
push:
- meta_scope: meta.tag.block.any.html
- match: (>)
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- match: (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b)
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.inline.any.html
push:
- meta_scope: meta.tag.inline.any.html
- match: "((?: ?/)?>)"
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- match: "(</?)([a-zA-Z0-9:]+)"
captures:
1: punctuation.definition.tag.begin.html
2: entity.name.tag.other.html
push:
- meta_scope: meta.tag.other.html
- match: (>)
captures:
1: punctuation.definition.tag.end.html
pop: true
- include: tag-stuff
- include: entities
- match: <>
scope: invalid.illegal.incomplete.html
- match: <
scope: invalid.illegal.bad-angle-bracket.html
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
embedded-code:
- include: ruby
- include: php
- include: twig-print-tag
- include: twig-statement-tag
- include: twig-comment-tag
- include: python
entities:
- match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
scope: constant.character.entity.html
captures:
1: punctuation.definition.entity.html
3: punctuation.definition.entity.html
- match: "&"
scope: invalid.illegal.bad-ampersand.html
php:
- match: (?=(^\s*)?<\?)
push:
- match: (?!(^\s*)?<\?)
pop: true
- include: scope:text.html.php
python:
- match: (?:^\s*)<\?python(?!.*\?>)
push:
- meta_scope: source.python.embedded.html
- match: \?>(?:\s*$\n)?
pop: true
- include: scope:source.python
ruby:
- match: "<%+#"
captures:
0: punctuation.definition.comment.erb
push:
- meta_scope: comment.block.erb
- match: "%>"
captures:
0: punctuation.definition.comment.erb
pop: true
- match: <%+(?!>)=?
captures:
0: punctuation.section.embedded.ruby
push:
- meta_scope: source.ruby.embedded.html
- match: "-?%>"
captures:
0: punctuation.section.embedded.ruby
pop: true
- match: (#).*?(?=-?%>)
scope: comment.line.number-sign.ruby
captures:
1: punctuation.definition.comment.ruby
- include: scope:source.ruby
- match: <\?r(?!>)=?
captures:
0: punctuation.section.embedded.ruby.nitro
push:
- meta_scope: source.ruby.nitro.embedded.html
- match: '-?\?>'
captures:
0: punctuation.section.embedded.ruby.nitro
pop: true
- match: (#).*?(?=-?\?>)
scope: comment.line.number-sign.ruby.nitro
captures:
1: punctuation.definition.comment.ruby.nitro
- include: scope:source.ruby
string-double-quoted:
- match: '"'
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.double.html
- match: '"'
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
string-single-quoted:
- match: "'"
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.single.html
- match: "'"
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
tag-generic-attribute:
- match: '\b([a-zA-Z\-:]+)'
scope: entity.other.attribute-name.html
tag-id-attribute:
- match: \b(id)\b\s*(=)
captures:
1: entity.other.attribute-name.id.html
2: punctuation.separator.key-value.html
push:
- meta_scope: meta.attribute-with-value.id.html
- match: (?<='|")
captures:
1: entity.other.attribute-name.id.html
2: punctuation.separator.key-value.html
pop: true
- match: '"'
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.double.html
- meta_content_scope: meta.toc-list.id.html
- match: '"'
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
- match: "'"
captures:
0: punctuation.definition.string.begin.html
push:
- meta_scope: string.quoted.single.html
- meta_content_scope: meta.toc-list.id.html
- match: "'"
captures:
0: punctuation.definition.string.end.html
pop: true
- include: embedded-code
- include: entities
tag-stuff:
- include: tag-id-attribute
- include: tag-generic-attribute
- include: string-double-quoted
- include: string-single-quoted
- include: embedded-code
twig-arrays:
- match: '(?<=[\s\(\{\[:,])\['
captures:
0: punctuation.section.array.begin.twig
push:
- meta_scope: meta.array.twig
- match: '\]'
captures:
0: punctuation.section.array.end.twig
pop: true
- include: twig-arrays
- include: twig-hashes
- include: twig-constants
- include: twig-strings
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- match: ","
scope: punctuation.separator.object.twig
twig-comment-tag:
- match: '\{#-?'
captures:
0: punctuation.definition.comment.begin.twig
push:
- meta_scope: comment.block.twig
- match: '-?#\}'
captures:
0: punctuation.definition.comment.end.twig
pop: true
twig-constants:
- match: '(?i)(?<=[\s\[\(\{:,])(?:true|false|null|none)(?=[\s\)\]\}\,])'
scope: constant.language.twig
- match: '(?<=[\s\[\(\{:,]|\.\.|\*\*)[0-9]+(?:\.[0-9]+)?(?=[\s\)\]\}\,]|\.\.|\*\*)'
scope: constant.numeric.twig
twig-filters:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\s\|\]\}\):,]|\.\.|\*\*)'
captures:
1: support.function.twig
twig-filters-ud:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)'
captures:
1: meta.function-call.other.twig
twig-filters-warg:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\()'
captures:
1: support.function.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-filters-warg-ud:
- match: '(?<=(?:[a-zA-Z0-9_\x{7f}-\x{ff}\]\)\''\"]\|)|\{%\sfilter\s)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\()'
captures:
1: meta.function-call.other.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-functions:
- match: (?<=is\s)(defined|empty|even|iterable|odd)
captures:
1: support.function.twig
twig-functions-warg:
- match: '(?<=[\s\(\[\{:,])(attribute|block|constant|cycle|date|divisible by|dump|include|max|min|parent|random|range|same as|source|template_from_string)(\()'
captures:
1: support.function.twig
2: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
twig-hashes:
- match: '(?<=[\s\(\{\[:,])\{'
captures:
0: punctuation.section.hash.begin.twig
push:
- meta_scope: meta.hash.twig
- match: '\}'
captures:
0: punctuation.section.hash.end.twig
pop: true
- include: twig-hashes
- include: twig-arrays
- include: twig-constants
- include: twig-strings
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- match: ":"
scope: punctuation.separator.key-value.twig
- match: ","
scope: punctuation.separator.object.twig
twig-keywords:
- match: (?<=\s)((?:end)?(?:autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with)(?=\s)
scope: keyword.control.twig
twig-macros:
- match: |-
(?x)
(?<=[\s\(\[\{:,])
([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(?:
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
)?
(\()
captures:
1: meta.function-call.twig
2: punctuation.separator.property.twig
3: variable.other.property.twig
4: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-objects:
- match: '(?<=[\s\{\[\(:,])([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?=[\s\}\[\]\(\)\.\|,:])'
captures:
1: variable.other.twig
twig-operators:
- match: (?<=\s)(\+|-|//?|%|\*\*?)(?=\s)
captures:
1: keyword.operator.arithmetic.twig
- match: (?<=\s)(=|~)(?=\s)
captures:
1: keyword.operator.assignment.twig
- match: (?<=\s)(b-(?:and|or|xor))(?=\s)
captures:
1: keyword.operator.bitwise.twig
- match: '(?<=\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\s)'
captures:
1: keyword.operator.comparison.twig
- match: (?<=\s)(\?|:|and|not|or)(?=\s)
captures:
1: keyword.operator.logical.twig
- match: '(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]\)''"])\.\.(?=[a-zA-Z0-9_\x{7f}-\x{ff}''"])'
captures:
0: keyword.operator.other.twig
- match: '(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]\}\)''"])\|(?=[a-zA-Z_\x{7f}-\x{ff}])'
captures:
0: keyword.operator.other.twig
twig-print-tag:
- match: '\{\{-?'
captures:
0: punctuation.section.tag.twig
push:
- meta_scope: meta.tag.template.value.twig
- match: '-?\}\}'
captures:
0: punctuation.section.tag.twig
pop: true
- include: twig-constants
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-properties:
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}])
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(?=[\.\s\|\[\)\]\}:,])
captures:
1: punctuation.separator.property.twig
2: variable.other.property.twig
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}])
(\.)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
(\()
captures:
1: punctuation.separator.property.twig
2: variable.other.property.twig
3: punctuation.definition.parameters.begin.twig
push:
- meta_content_scope: meta.function.arguments.twig
- match: \)
captures:
0: punctuation.definition.parameters.end.twig
pop: true
- include: twig-constants
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-objects
- include: twig-properties
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-strings
- include: twig-arrays
- match: |-
(?x)
(?<=[a-zA-Z0-9_\x{7f}-\x{ff}\]])
(?:
(\[)('[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*')(\])
|(\[)("[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*")(\])
|(\[)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\])
)
captures:
1: punctuation.section.array.begin.twig
2: variable.other.property.twig
3: punctuation.section.array.end.twig
4: punctuation.section.array.begin.twig
5: variable.other.property.twig
6: punctuation.section.array.end.twig
7: punctuation.section.array.begin.twig
8: variable.other.property.twig
9: punctuation.section.array.end.twig
twig-statement-tag:
- match: '\{%-?'
captures:
0: punctuation.section.tag.twig
push:
- meta_scope: meta.tag.template.block.twig
- match: '-?%\}'
captures:
0: punctuation.section.tag.twig
pop: true
- include: twig-constants
- include: twig-keywords
- include: twig-operators
- include: twig-functions-warg
- include: twig-functions
- include: twig-macros
- include: twig-filters-warg
- include: twig-filters
- include: twig-filters-warg-ud
- include: twig-filters-ud
- include: twig-objects
- include: twig-properties
- include: twig-strings
- include: twig-arrays
- include: twig-hashes
twig-strings:
- match: (?:(?<!\\)|(?<=\\\\))'
captures:
0: punctuation.definition.string.begin.twig
push:
- meta_scope: string.quoted.single.twig
- match: (?:(?<!\\)|(?<=\\\\))'
captures:
0: punctuation.definition.string.end.twig
pop: true
- match: (?:(?<!\\)|(?<=\\\\))"
captures:
0: punctuation.definition.string.begin.twig
push:
- meta_scope: string.quoted.double.twig
- match: (?:(?<!\\)|(?<=\\\\))"
captures:
0: punctuation.definition.string.end.twig
pop: true

View File

@ -0,0 +1,23 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: hosts
file_extensions:
- hosts
scope: source.hosts
contexts:
main:
- scope: comment.line.number-sign
match: \#.*
comment: comment
- match: ^\s*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9a-f:]+)
comment: ipaddress
scope: constant.numeric.ipaddress
- match: \s(localhost|ip6-loopback|ip6-localhost|ip6-localnet|ip6-mcastprefix|ip6-allnodes|ip6-allrouters|ip6-allhosts|broadcasthost)\b
scope: keyword.host.predefined}
comment: prefdfined

View File

@ -0,0 +1,46 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: INI
file_extensions:
- ini
- INI
- inf
- INF
- reg
- REG
- lng
- cfg
- CFG
- desktop
- url
- URL
- .editorconfig
- .hgrc
- hgrc
scope: source.ini
contexts:
main:
- match: ^\s*(;|#).*$\n?
scope: comment.line.semicolon.ini
captures:
1: punctuation.definition.comment.ini
- match: '^\s*(\[)(.*?)(\])'
scope: meta.tag.section.ini
captures:
1: punctuation.definition.section.ini
2: entity.section.ini
3: punctuation.definition.section.ini
- match: '^(\s*(["'']?)(.+?)(\2)\s*(=))?\s*((["'']?)(.*?)(\7))\s*(;.*)?$\n?'
scope: meta.declaration.ini
captures:
1: meta.property.ini
2: punctuation.definition.quote.ini
3: keyword.name.ini
4: punctuation.definition.quote.ini
5: punctuation.definition.equals.ini
6: meta.value.ini
7: punctuation.definition.quote.ini
8: string.name.value.ini
9: punctuation.definition.quote.ini
10: comment.declarationline.semicolon.ini

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,398 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Kotlin
file_extensions:
- kt
- kts
scope: source.Kotlin
contexts:
main:
- include: comments
- match: '^\s*(package)\b(?:\s*([^ ;$]+)\s*)?'
captures:
1: keyword.other.kotlin
2: entity.name.package.kotlin
- include: imports
- include: statements
classes:
- match: (?<!::)(?=\b(?:companion|class|object|interface)\b)
push:
- match: '(?=$|\})'
pop: true
- include: comments
- match: \b(companion\s*)?(class|object|interface)\b
captures:
1: storage.modifier.kotlin
2: storage.modifier.kotlin
push:
- match: '(?=<|\{|\(|:|$)'
pop: true
- include: comments
- match: \w+
scope: entity.name.type.class.kotlin
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: "(?={|$)"
pop: true
- match: \w+
scope: entity.other.inherited-class.kotlin
- match: \(
push:
- match: \)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
comments:
- match: /\*
captures:
0: punctuation.definition.comment.kotlin
push:
- meta_scope: comment.block.kotlin
- match: \*/
captures:
0: punctuation.definition.comment.kotlin
pop: true
- match: \s*((//).*$\n?)
captures:
1: comment.line.double-slash.kotlin
2: punctuation.definition.comment.kotlin
constants:
- match: \b(true|false|null|this|super)\b
scope: constant.language.kotlin
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFf])?\b'
scope: constant.numeric.kotlin
- match: '\b([A-Z][A-Z0-9_]+)\b'
scope: constant.other.kotlin
expressions:
- match: \(
push:
- match: \)
pop: true
- include: expressions
- include: types
- include: strings
- include: constants
- include: comments
- include: keywords
functions:
- match: (?=\s*\b(?:fun)\b)
push:
- match: '(?=$|\})'
pop: true
- match: \b(fun)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=\()
pop: true
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: '([\.<\?>\w]+\.)?(\w+)'
captures:
2: entity.name.function.kotlin
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: "(?={|=|$)"
pop: true
- include: types
- match: '\{'
push:
- match: '(?=\})'
pop: true
- include: statements
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
generics:
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|>)
pop: true
- include: types
- include: keywords
- match: \w+
scope: storage.type.generic.kotlin
getters-and-setters:
- match: \b(get)\b\s*\(\s*\)
captures:
1: entity.name.function.kotlin
push:
- match: '\}|(?=\bset\b)|$'
pop: true
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$|\bset\b)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: expressions
- match: \b(set)\b\s*(?=\()
captures:
1: entity.name.function.kotlin
push:
- match: '\}|(?=\bget\b)|$'
pop: true
- match: \(
push:
- match: \)
pop: true
- include: parameters
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$|\bset\b)
pop: true
- include: expressions
- match: '\{'
push:
- match: '\}'
pop: true
- include: expressions
imports:
- match: '^\s*(import)\s+[^ $]+\s+(as)?'
captures:
1: keyword.other.kotlin
2: keyword.other.kotlin
keywords:
- match: \b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\b
scope: storage.modifier.kotlin
- match: \b(try|catch|finally|throw)\b
scope: keyword.control.catch-exception.kotlin
- match: \b(if|else|while|for|do|return|when|where|break|continue)\b
scope: keyword.control.kotlin
- match: \b(in|is|!in|!is|as|as\?|assert)\b
scope: keyword.operator.kotlin
- match: (==|!=|===|!==|<=|>=|<|>)
scope: keyword.operator.comparison.kotlin
- match: (=)
scope: keyword.operator.assignment.kotlin
- match: (::)
scope: keyword.operator.kotlin
- match: (:)
scope: keyword.operator.declaration.kotlin
- match: \b(by)\b
scope: keyword.other.by.kotlin
- match: (\?\.)
scope: keyword.operator.safenav.kotlin
- match: (\.)
scope: keyword.operator.dot.kotlin
- match: (\?:)
scope: keyword.operator.elvis.kotlin
- match: (\-\-|\+\+)
scope: keyword.operator.increment-decrement.kotlin
- match: (\+=|\-=|\*=|\/=)
scope: keyword.operator.arithmetic.assign.kotlin
- match: (\.\.)
scope: keyword.operator.range.kotlin
- match: (\-|\+|\*|\/|%)
scope: keyword.operator.arithmetic.kotlin
- match: (!|&&|\|\|)
scope: keyword.operator.logical.kotlin
- match: (;)
scope: punctuation.terminator.kotlin
namespaces:
- match: \b(namespace)\b
scope: keyword.other.kotlin
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
parameters:
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|\)|=)
pop: true
- include: types
- match: (=)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?=,|\))
pop: true
- include: expressions
- include: keywords
- match: \w+
scope: variable.parameter.function.kotlin
statements:
- include: namespaces
- include: typedefs
- include: classes
- include: functions
- include: variables
- include: getters-and-setters
- include: expressions
strings:
- match: '"""'
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.third.kotlin
- match: '"""'
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: '(\$\w+|\$\{[^\}]+\})'
scope: variable.parameter.template.kotlin
- match: \\.
scope: constant.character.escape.kotlin
- match: '"'
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.double.kotlin
- match: '"'
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: '(\$\w+|\$\{[^\}]+\})'
scope: variable.parameter.template.kotlin
- match: \\.
scope: constant.character.escape.kotlin
- match: "'"
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.single.kotlin
- match: "'"
captures:
0: punctuation.definition.string.end.kotlin
pop: true
- match: \\.
scope: constant.character.escape.kotlin
- match: "`"
captures:
0: punctuation.definition.string.begin.kotlin
push:
- meta_scope: string.quoted.single.kotlin
- match: "`"
captures:
0: punctuation.definition.string.end.kotlin
pop: true
typedefs:
- match: (?=\s*(?:type))
push:
- match: (?=$)
pop: true
- match: \b(type)\b
scope: keyword.other.kotlin
- match: <
push:
- match: ">"
pop: true
- include: generics
- include: expressions
types:
- match: \b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b
scope: storage.type.buildin.kotlin
- match: \b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b
scope: storage.type.buildin.array.kotlin
- match: \b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\b
captures:
1: storage.type.buildin.collection.kotlin
push:
- match: ">"
pop: true
- include: types
- include: keywords
- match: \w+<
push:
- match: ">"
pop: true
- include: types
- include: keywords
- match: '\{'
push:
- match: '\}'
pop: true
- include: statements
- match: \(
push:
- match: \)
pop: true
- include: types
- match: (->)
scope: keyword.operator.declaration.kotlin
variables:
- match: (?=\s*\b(?:var|val)\b)
push:
- match: (?=:|=|(\b(by)\b)|$)
pop: true
- match: \b(var|val)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=:|=|(\b(by)\b)|$)
pop: true
- match: <
push:
- match: ">"
pop: true
- include: generics
- match: '([\.<\?>\w]+\.)?(\w+)'
captures:
2: entity.name.variable.kotlin
- match: (:)
captures:
1: keyword.operator.declaration.kotlin
push:
- match: (?==|$)
pop: true
- include: types
- include: getters-and-setters
- match: \b(by)\b
captures:
1: keyword.other.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
- match: (=)
captures:
1: keyword.operator.assignment.kotlin
push:
- match: (?=$)
pop: true
- include: expressions
- include: getters-and-setters

View File

@ -0,0 +1,618 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Less
file_extensions:
- less
- css.less
scope: source.css.less
variables:
unicode: '\\\h{1,6}[ \t\n\f]?'
escape: '(?:{{unicode}}|\\[^\n\f\h])'
nonascii: '[\p{L}\p{M}\p{S}\p{N}&&[^[:ascii:]]]'
nmstart: '(?:[[_a-zA-Z]{{nonascii}}]|{{escape}})'
nmchar: '(?:[[-\w]{{nonascii}}]|{{escape}})'
ident: '(?:--{{nmchar}}+|-?{{nmstart}}{{nmchar}}*)'
combinators: '(?:>{1,3}|[~+])'
contexts:
main:
- include: comment-block
- include: comment-line
- include: commas
- include: css-variables
- include: terminator
- include: literal-string
- include: at-rules
- include: selector
- include: rule-list
- include: numeric-values
- include: property-names
- include: property-list
- include: less-functions
- include: less-declarations
- include: less-variables
- include: less-operators
- include: less-parameters
qualified-name:
- match: '(?:({{ident}})|(\*))?([|])(?!=)'
captures:
1: entity.other.namespace-prefix.css
2: entity.name.namespace.wildcard.css
3: punctuation.separator.namespace.css
commas:
- match: '\s*(,)\s*'
captures:
0: meta.selector.css
1: punctuation.separator.css
terminator:
- match: '\s*(;)\s*'
captures:
1: punctuation.terminator.statement.css
color-values:
- match: \b(yellowgreen|yellow|whitesmoke|white|wheat|violet|turquoise|tomato|thistle|teal|tan|steelblue|springgreen|snow|slategrey|slategray|slateblue|skyblue|silver|sienna|seashell|seagreen|sandybrown|salmon|saddlebrown|royalblue|rosybrown|red|rebeccapurple|purple|powderblue|plum|pink|peru|peachpuff|papayawhip|palevioletred|paleturquoise|palegreen|palegoldenrod|orchid|orangered|orange|olivedrab|olive|oldlace|navy|navajowhite|moccasin|mistyrose|mintcream|midnightblue|mediumvioletred|mediumturquoise|mediumspringgreen|mediumslateblue|mediumseagreen|mediumpurple|mediumorchid|mediumblue|mediumaquamarine|maroon|linen|limegreen|lime|lightyellow|lightsteelblue|lightslategrey|lightslategray|lightskyblue|lightseagreen|lightsalmon|lightpink|lightgrey|lightgreen|lightgray|lightgoldenrodyellow|lightcyan|lightcoral|lightblue|lemonchiffon|lawngreen|lavenderblush|lavender|khaki|ivory|indigo|indianred|hotpink|honeydew|grey|greenyellow|green|gray|goldenrod|gold|ghostwhite|gainsboro|fuchsia|forestgreen|floralwhite|firebrick|dodgerblue|dimgrey|dimgray|deepskyblue|deeppink|darkviolet|darkturquoise|darkslategrey|darkslategray|darkslateblue|darkseagreen|darksalmon|darkred|darkorchid|darkorange|darkolivegreen|darkmagenta|darkkhaki|darkgrey|darkgreen|darkgray|darkgoldenrod|darkcyan|darkblue|crimson|cornsilk|cornflowerblue|coral|chocolate|chartreuse|cadetblue|burlywood|brown|blueviolet|blue|blanchedalmond|black|bisque|beige|azure|aquamarine|aqua|antiquewhite|aliceblue)\b
comment: http://www.w3.org/TR/CSS21/syndata.html#value-def-color
scope: support.constant.color.w3c-standard-color-name.css
- match: (hsla?|rgba?)\s*(\()
captures:
1: support.function.misc.css
2: punctuation.definition.group.begin.css
push:
- meta_scope: meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- match: '(?x)\b(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*){2}(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b)(\s*,\s*((0?\.[0-9]+)|[0-1]))?'
scope: constant.other.color.rgb-value.css
- match: '\b([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%'
scope: constant.other.color.rgb-percentage.css
- include: numeric-values
comment-block:
- match: /\*
scope: punctuation.definition.comment.css
push:
- meta_scope: comment.block.css
- match: \*/
scope: punctuation.definition.comment.css
pop: true
comment-line:
- match: //
scope: punctuation.definition.comment.css
push:
- meta_scope: comment.line.double-slash.less
- match: $\n?
scope: punctuation.definition.comment.css
pop: true
at-rules:
- match: ((@)(?:-(?:webkit|moz|o)-)?(charset|import|namespace|page|font-face|supports|document)\b)
captures:
1: keyword.control.at-rule.css
2: punctuation.definition.keyword.css
push:
- meta_scope: meta.at-rule.css
- match: '\s*(?=[\{;])'
pop: true
- match: (url)(\()
captures:
1: meta.function-call.css support.function.url.css
2: punctuation.definition.group.begin.css
push:
- meta_scope: meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- include: literal-string
- include: unquoted-string
- include: comment-block
- include: literal-string
- include: less-parameters
- match: \s*((@)keyframes)(?=.*?)
captures:
1: keyword.control.at-rule.css
2: punctuation.definition.keyword.css
push:
- meta_scope: meta.at-rule.keyframes.css
- match: '\s*(?=[\{;])'
pop: true
- include: comment-block
- match: '[a-zA-Z0-9_-]+'
scope: variable.other.css
- match: \s*((@)media)(?=\s+.*?)
captures:
1: keyword.control.at-rule.media.css
2: punctuation.definition.keyword.css
3: support.constant.media.css
push:
- meta_scope: meta.at-rule.media.css
- match: '\s*(?=\{)'
pop: true
- include: comment-block
- include: less-operators
- match: (?i)\s*(only|not)?\s*(all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)?
captures:
1: keyword.operator.logic.media.css
2: support.constant.media.css
- match: '\('
scope: punctuation.definition.group.begin.css
push:
- meta_scope: meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- include: vendor-prefixes
- match: |-
(?x)
(
((min|max)-)?
(
((device-)?(height|width|aspect-ratio|pixel-ratio))|
(color(-index)?)|monochrome|resolution
)
)|grid|scan|orientation
\s*(?=[:)])
captures:
0: support.type.property-name.media.css
- match: \b(portrait|landscape|progressive|interlace)
scope: support.constant.property-value.css
- match: ':'
scope: punctuation.separator.key-value.css
- include: comment-block
- include: comment-line
- include: numeric-values
- include: css-variables
- include: property-names
- include: property-values
- include: less-functions
- include: less-variables
- include: less-operators
less-data-uri:
- match: (url)(\()(?=(data:|"data:|'data:))
captures:
1: support.function.misc.css
2: punctuation.definition.group.begin.css
push:
- meta_scope: meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- include: less-interpolation
- include: literal-string
- include: unquoted-string
less-functions:
- match: \b(unit|tan|sqrt|spin|softlight|sin|screen|saturation|saturate|round|replace|red|pow|pi|percentage|overlay|negation|multiply|mod|mix|min|max|luma|lightness|lighten|length|isnumber|hue|hsvvalue|hsvsaturation|hsvhue|hsva|hsv|hsla|hsl|hardlight|greyscale|green|format|floor|fadeout|fadein|fade|extract|exclusion|escape|e|difference|desaturate|data-uri|darken|cos|convert|convert|contrast|color|ceil|calc|blue|average|atan|asin|argb|alpha|acos|abs)(\()
captures:
1: support.function.less
2: meta.group.less punctuation.definition.group.begin.less
push:
- meta_scope: meta.function-call.less
- meta_content_scope: meta.group.less meta.function.parameters.less
- match: '\)'
scope: meta.group.less punctuation.definition.group.end.less
pop: true
- match: ':'
scope: punctuation.separator.key-value.css
- include: comment-block
- include: commas
- include: terminator
- include: color-values
- include: numeric-values
- include: literal-string
- include: css-variables
- include: less-functions
- include: less-variables
- include: less-operators
less-operators:
- match: /|$|%|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|%=|\+=|\-=|&=|\bnot\b|\bor\b|\band\b|\bwhen\b|\bfrom\b|\bto\b
scope: keyword.operator.less
property-list:
- match: '\{'
scope: punctuation.section.property-list.begin.css
push:
- match: '\}'
scope: punctuation.section.property-list.end.css
pop: true
- include: main
less-parameters:
- match: '\('
scope: punctuation.definition.group.begin.less
push:
- meta_scope: meta.group.less meta.function.parameters.less
- match: '\)'
scope: punctuation.definition.group.end.less
pop: true
- match: ':'
scope: punctuation.separator.key-value.css
- include: comment-line
- include: comment-block
- include: commas
- include: terminator
- include: property-list
- include: color-values
- include: numeric-values
- include: literal-string
- include: css-variables
- include: less-functions
- include: less-variables
- include: less-operators
less-declarations:
- match: '(@)([a-zA-Z0-9_-][\w-]*)'
scope: variable.declaration.less
captures:
1: punctuation.definition.variable.less
less-interpolation:
- match: '(@)({)([a-zA-Z0-9_-][\w-]*)(})'
scope: variable.other.less
captures:
1: punctuation.definition.variable.less
2: punctuation.definition.string.begin.less
3: string.interpolated.less
4: punctuation.definition.string.end.less
css-variables:
- match: '\b(var)(?=\()'
scope: support.function.var.css
push:
- meta_scope: meta.function-call.css
- meta_content_scope: meta.group.css
- match: '\)'
scope: meta.group.css punctuation.definition.group.end.css
pop: true
- match: '(\()((--)({{nmchar}}+))'
captures:
1: punctuation.definition.group.begin.css
2: support.type.custom-property.css
3: punctuation.definition.custom-property.css
4: support.type.custom-property.name.css
less-variables:
- match: '(@{1,2})([a-zA-Z0-9_-][\w-]*)'
scope: variable.other.less
captures:
1: punctuation.definition.variable.less
- include: less-interpolation
- match: (~)(")
captures:
1: keyword.operator.less
2: punctuation.definition.string.begin.less
push:
- meta_scope: string.quoted.double.css markup.raw.less
- match: '"'
scope: punctuation.definition.string.end.less
pop: true
- include: less-interpolation
- match: (~)(')
captures:
1: keyword.operator.less
2: punctuation.definition.string.begin.less
push:
- meta_scope: string.quoted.single.css markup.raw.less
- match: "'"
scope: punctuation.definition.string.end.less
pop: true
- include: less-interpolation
numeric-values:
- match: '(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b'
scope: constant.other.color.rgb-value.css
captures:
1: punctuation.definition.constant.css
- match: '(?x)(?:-|\+)?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+))((?:vw|vmin|vmax|vh|turn|s|rem|rad|px|pt|pc|ms|mm|in|grad|fr|ex|em|dppx|dpi|dpcm|deg|cm|ch)\b|%)?'
scope: constant.numeric.css
captures:
1: keyword.other.unit.css
vendor-prefixes:
- match: '(-webkit-|-o-|-ms-|-moz-|-khtml-)(?=[A-Za-z])'
scope: support.type.vendor-prefix.css
property-names:
- include: vendor-prefixes
- include: comment-block
- match: '(--)({{nmchar}}+)'
scope: support.type.custom-property.css
captures:
1: punctuation.definition.custom-property.css
2: support.type.custom-property.name.css
- match: |-
\b(?x)(
display|width|background-color|height|position|font-family|font-weight
| top|opacity|cursor|background-image|right|visibility|box-sizing
| user-select|left|float|margin-left|margin-top|line-height
| padding-left|z-index|margin-bottom|margin-right|margin
| vertical-align|padding-top|white-space|border-radius|padding-bottom
| padding-right|padding|bottom|clear|max-width|box-shadow|content
| border-color|min-height|min-width|font-style|border-width
| border-collapse|background-size|text-overflow|max-height|text-transform
| text-shadow|text-indent|border-style|overflow-y|list-style-type
| word-wrap|border-spacing|appearance|zoom|overflow-x|border-top-left-radius
| border-bottom-left-radius|border-top-color|pointer-events
| border-bottom-color|align-items|justify-content|letter-spacing
| border-top-right-radius|border-bottom-right-radius|border-right-width
| font-smoothing|border-bottom-width|border-right-color|direction
| border-top-width|src|border-left-color|border-left-width
| tap-highlight-color|table-layout|background-clip|word-break
| transform-origin|resize|filter|backface-visibility|text-rendering
| box-orient|transition-property|transition-duration|word-spacing
| quotes|outline-offset|animation-timing-function|animation-duration
| animation-name|transition-timing-function|border-bottom-style
| border-bottom|transition-delay|transition|unicode-bidi|border-top-style
| border-top|unicode-range|list-style-position|orphans|outline-width
| line-clamp|order|flex-direction|box-pack|animation-fill-mode
| outline-color|list-style-image|list-style|touch-action|flex-grow
| border-left-style|border-left|animation-iteration-count
| page-break-inside|box-flex|box-align|page-break-after|animation-delay
| widows|border-right-style|border-right|flex-align|outline-style
| outline|background-origin|animation-direction|fill-opacity
| background-attachment|flex-wrap|transform-style|counter-increment
| overflow-wrap|counter-reset|animation-play-state
| will-change|box-ordinal-group|image-rendering|mask-image|flex-flow
| background-position-y|stroke-width|background-position-x|background-position
| background-blend-mode|flex-shrink|flex-basis|flex-order|flex-item-align
| flex-line-pack|flex-negative|flex-pack|flex-positive|flex-preferred-size
| flex|user-drag|font-stretch|column-count|empty-cells|align-self
| caption-side|mask-size|column-gap|mask-repeat|box-direction
| font-feature-settings|mask-position|align-content|object-fit
| columns|text-fill-color|clip-path|stop-color|font-kerning
| page-break-before|stroke-dasharray|size|fill-rule|border-image-slice
| column-width|break-inside|column-break-before|border-image-width
| stroke-dashoffset|border-image-repeat|border-image-outset|line-break
| stroke-linejoin|stroke-linecap|stroke-miterlimit|stroke-opacity
| stroke|shape-rendering|border-image-source|border-image|border
| tab-size|writing-mode|perspective-origin-y|perspective-origin-x
| perspective-origin|perspective|text-align-last|text-align|clip-rule
| clip|text-anchor|column-rule-color|box-decoration-break|column-fill
| fill|column-rule-style|mix-blend-mode|text-emphasis-color
| baseline-shift|dominant-baseline|page|alignment-baseline
| column-rule-width|column-rule|break-after|font-variant-ligatures
| transform-origin-y|transform-origin-x|transform|object-position
| break-before|column-span|isolation|shape-outside|all
| color-interpolation-filters|marker|marker-end|marker-start
| marker-mid|color-rendering|color-interpolation|background-repeat-x
| background-repeat-y|background-repeat|background|mask-type
| flood-color|flood-opacity|text-orientation|mask-composite
| text-emphasis-style|paint-order|lighting-color|shape-margin
| text-emphasis-position|text-emphasis|shape-image-threshold
| mask-clip|mask-origin|mask|font-variant-caps|font-variant-alternates
| font-variant-east-asian|font-variant-numeric|font-variant-position
| font-variant|font-size-adjust|font-size|font-language-override
| font-display|font-synthesis|font|line-box-contain|text-justify
| text-decoration-color|text-decoration-style|text-decoration-line
| text-decoration|text-underline-position|grid-template-rows
| grid-template-columns|grid-template-areas|grid-template|rotate|scale
| translate|scroll-behavior|grid-column-start|grid-column-end
| grid-column-gap|grid-row-start|grid-row-end|grid-auto-rows
| grid-area|grid-auto-flow|grid-auto-columns|image-orientation
| hyphens|overflow-scrolling|overflow|color-profile|kerning
| nbsp-mode|color|image-resolution|grid-row-gap|grid-row|grid-column
| blend-mode|azimuth|pause-after|pause-before|pause|pitch-range|pitch
| text-height|system|negative|prefix|suffix|range|pad|fallback
| additive-symbols|symbols|speak-as|speak|grid-gap
)\b
scope: meta.property-name.css support.type.property-name.css
- match: '\b(animation-name|animation)\b'
scope: meta.property-name.css support.type.property-name.css
push:
- meta_content_scope: meta.property-value.css
- match: '\s*(?=;|(?=[{}]))'
pop: true
- match: ':'
scope: punctuation.separator.key-value.css
- include: comment-block
- include: comment-line
- include: property-values
- match: '[a-zA-Z0-9_-]+'
scope: variable.other.css
property-values:
- match: \!\s*important
scope: keyword.other.important.css
captures:
1: punctuation.definition.keyword.css
- include: comment-block
- include: literal-string
- include: vendor-prefixes
- include: color-values
- include: numeric-values
- include: css-variables
- include: less-variables
- include: less-data-uri
- include: less-functions
- include: less-operators
- include: selector
- match: \b(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|subpixel-antialiased|strict|stretch|step-start|step-end|static|start|sRGB|square|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|scale-down|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-y|pan-x|pan-up|pan-right|pan-left|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeSpeed|optimizeQuality|optimizeLegibility|open-quote|opacity|oblique|nw-resize|nowrap|not-allowed|normal|nonzero|none|no-repeat|no-open-quote|no-drop|no-close-quote|newspaper|ne-resize|n-resize|multiply|move|miter|middle|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linearRGB|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision |geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|evenodd |end |ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|crispEdges|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|close-quote|circle|char|center|capitalize|butt|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|bevel|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?![-])\b
scope: support.constant.property-value.css
- match: (\b(?i:webdings|verdana|utopia|trebuchet|times|tahoma|system|symbol|serif|sans-serif|monospace|lucida|impact|helvetica|georgia|garamond|futura|fantasy|cursive|courier|comic|century|arial)\b)
scope: support.constant.font-name.css
- match: (rect)\s*(\()
captures:
1: support.function.misc.css
2: punctuation.definition.group.begin.css
push:
- meta_scope: meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- include: numeric-values
- match: '(whiteness|url-prefix|url|translate[XYZ]|translate3d|translate|tint|skew[XY]|skew|shade|sepia|scale[XYZ]|scale|saturation|saturate|rotate[XYZ]|rotate3d|rotate|rgba|rgb|repeating-radial-gradient|repeating-linear-gradient|regexp|rect|radial-gradient|opacity|minmax|matrix3d|matrix|local|linear-gradient|lightness|invert|image-set|image|hsla|hsl|grayscale|gray|format|drop-shadow|domain|device-cmyk|cubic-bezier|cross-fade|counters|counter|contrast|color|brightness|blur|blenda|blend|blackness|attr)\s*(\()'
captures:
1: support.function.css
2: meta.group.css punctuation.definition.group.begin.css
push:
- meta_scope: meta.function-call.css
- meta_content_scope: meta.group.css meta.function.parameters.css
- match: '\)'
scope: meta.group.css punctuation.definition.group.end.css
pop: true
- include: literal-string
- include: color-values
- include: numeric-values
- include: css-variables
- include: less-variables
- include: less-functions
- include: property-names
rule-list:
- include: property-names
- match: (:)\s*
captures:
1: punctuation.separator.key-value.css
push:
- meta_scope: meta.property-value.css
- match: '\s*(?=;|(?=[{}]))'
pop: true
- include: property-values
selector:
# Combinators
# https://drafts.csswg.org/selectors-4/#combinators
# https://drafts.csswg.org/css-scoping/#deep-combinator
- match: '\s*({{combinators}})(?![>~+]\s*)'
scope: meta.selector.css
captures:
1: punctuation.separator.combinator.css
- match: '&'
scope: meta.selector.css keyword.operator.ampersand.less
push:
- match: '\s'
scope: meta.selector.css
pop: true
- include: selector
- match: '(-+|_+)[a-zA-Z_][a-zA-Z0-9_-]*'
scope: meta.selector.css entity.other.attribute-name.css
- match: '([\.#])(?![0-9])[a-zA-Z0-9_-]+(?=\()'
scope: meta.selector.css entity.other.attribute-name.class.css entity.other.less.mixin
captures:
1: punctuation.definition.entity.css
- match: '\b(use|tspan|tref|textPath|text|symbol|switch|stop|rect|radialGradient|polyline|polygon|pattern|path|mask|marker|linearGradient|line|image|glyphRef|glyph|g|foreignObject|filter|ellipse|defs|clipPath|circle|xmp|wbr|video|var|ul|u|tt|track|tr|title|time|thead|th|tfoot|textarea|template|td|tbody|table|svg|sup|summary|sub|style|strong|strike|span|source|small|shadow|select|section|script|samp|s|rtc|rt|rp|q|progress|pre|picture|param|p|output|option|optgroup|ol|object|noscript|noframes|nav|meter|meta|menu|mark|map|main|link|li|legend|label|keygen|kbd|isindex|ins|input|img|iframe|i|html|hr|hgroup|header|head|h[1-6]|frameset|frame|form|footer|figcaption|figure|fieldset|eventsource|embed|em|element|dt|dl|div|dialog|dir|dfn|details|del|dd|datalist|data|content|colgroup|col|code|cite|caption|canvas|button|br|body|blockquote|big|bdo|bdi|basefont|base|b|audio|aside|article|area|applet|address|acronym|abbr|a)\b(\s*)(?=([a-z.,+~{#\s\[\)]|:+[a-z]|$))'
captures:
1: meta.selector.css entity.name.tag.css
2: meta.selector.css
- match: '(\.)(?=-?([a-zA-Z_]|@{)[a-zA-Z0-9_-]*)'
captures:
1: punctuation.definition.entity.css
push:
- meta_scope: meta.selector.css entity.other.attribute-name.class.css
- include: less-interpolation
- match: '(\s*)(?=[^a-zA-Z0-9_-])'
captures:
1: meta.selector.css
pop: true
- match: "(#)(?=-?([a-zA-Z_]|@{)[a-zA-Z0-9_-]*)"
captures:
1: punctuation.definition.entity.css
push:
- meta_scope: meta.selector.css entity.other.attribute-name.id.css
- include: less-interpolation
- match: '(?=[^a-zA-Z0-9_-])'
pop: true
- match: '\*'
scope: entity.name.tag.wildcard.css
- match: (:)(visited|valid|target|scope|root|right|required|read-write|read-only|out-of-range|optional|only-of-type|only-child|link|left|last-of-type|last-child|invalid|indeterminate|in-range|hover|fullscreen|focus|first-of-type|first-child|first|enabled|empty|disabled|default|checked|any|active)\b
scope: meta.selector.css entity.other.pseudo-class.css
captures:
1: punctuation.definition.entity.css
- match: (:)(extend)\b
scope: meta.selector.css entity.other.pseudo-class.less
captures:
1: punctuation.definition.entity.css
- match: ((:)not|lang|dir)(\()
captures:
1: entity.other.pseudo-class.css
2: punctuation.definition.entity.css
3: punctuation.definition.group.begin.css
push:
- meta_scope: meta.selector.css meta.group.css
- match: '\)'
scope: punctuation.definition.group.end.css
pop: true
- include: selector
- match: ((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(?=\()
captures:
1: entity.other.pseudo-class.css
2: punctuation.definition.entity.css
push:
- meta_scope: meta.selector.css
- match: '\)'
scope: meta.group.css punctuation.definition.group.end.css
pop: true
- match: '\('
scope: meta.group.css punctuation.definition.group.begin.css
- match: '[+-]'
scope: keyword.operator.css
- match: '[0-9]+(n*)'
scope: meta.group.css constant.numeric.css
captures:
1: keyword.other.unit.css
- match: (:|::)(selection|first-line|first-letter|before|backdrop|after)\b
scope: meta.selector.css entity.other.pseudo-element.css
captures:
1: punctuation.definition.entity.css
- match: '\['
scope: punctuation.definition.entity.css
push:
- meta_scope: meta.attribute-selector.css
- include: qualified-name
- match: '({{ident}})'
scope: entity.other.attribute-name.css
- match: '\s*([~*|^$]?=)\s*'
captures:
1: keyword.operator.attribute-selector.css
push:
- include: literal-string
- include: unquoted-string
- match: '(?=(\s|\]))'
pop: true
- match: '(?:\s+([iI]))?' # case insensitive flag
captures:
1: keyword.other.css
- match: '\]'
scope: punctuation.definition.entity.css
pop: true
unquoted-string:
- match: '[^\s\]\[''"]'
scope: string.unquoted.css
literal-string:
- match: "'"
scope: punctuation.definition.string.begin.css
push:
- meta_scope: string.quoted.single.css
- match: (')|(\n)
captures:
1: punctuation.definition.string.end.css
2: invalid.illegal.newline.css
pop: true
- include: string-content
- match: '"'
scope: punctuation.definition.string.begin.css
push:
- meta_scope: string.quoted.double.css
- match: (")|(\n)
captures:
1: punctuation.definition.string.end.css
2: invalid.illegal.newline.css
pop: true
- include: string-content
string-content:
- match: \\\s*\n
scope: constant.character.escape.newline.css
- match: '\\(\h{1,6}|.)'
scope: constant.character.escape.css
- include: less-interpolation

View File

@ -0,0 +1,609 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Nix
file_extensions:
- nix
scope: source.nix
contexts:
main:
- include: expression
comment:
- match: '/\*([^*]|\*[^\/])*'
push:
- meta_scope: comment.block.nix
- match: \*\/
pop: true
- include: comment-remark
- match: '\#'
push:
- meta_scope: comment.line.number-sign.nix
- match: $
pop: true
- include: comment-remark
attribute-bind:
- include: attribute-name
- include: attribute-bind-from-equals
attribute-bind-from-equals:
- match: \=
captures:
0: keyword.operator.bind.nix
push:
- match: \;
captures:
0: punctuation.terminator.bind.nix
pop: true
- include: expression
attribute-inherit:
- match: \binherit\b
captures:
0: keyword.other.inherit.nix
push:
- match: \;
captures:
0: punctuation.terminator.inherit.nix
pop: true
- match: \(
captures:
0: punctuation.section.function.arguments.nix
push:
- match: (?=\;)
pop: true
- match: \)
captures:
0: punctuation.section.function.arguments.nix
push:
- match: (?=\;)
pop: true
- include: bad-reserved
- include: attribute-name-single
- include: others
- include: expression
- match: '(?=[a-zA-Z\_])'
push:
- match: (?=\;)
pop: true
- include: bad-reserved
- include: attribute-name-single
- include: others
- include: others
attribute-name:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
scope: entity.other.attribute-name.multipart.nix
- match: \.
- include: string-quoted
- include: interpolation
attribute-name-single:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
scope: entity.other.attribute-name.single.nix
attrset-contents:
- include: attribute-inherit
- include: bad-reserved
- include: attribute-bind
- include: others
attrset-definition:
- match: '(?=\{)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: '(\{)'
captures:
0: punctuation.definition.attrset.nix
push:
- match: '(\})'
captures:
0: punctuation.definition.attrset.nix
pop: true
- include: attrset-contents
- match: '(?<=\})'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
attrset-definition-brace-opened:
- match: '(?<=\})'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: (?=.?)
push:
- match: '\}'
captures:
0: punctuation.definition.attrset.nix
pop: true
- include: attrset-contents
attrset-for-sure:
- match: (?=\brec\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \brec\b
captures:
0: keyword.other.nix
push:
- match: '(?=\{)'
pop: true
- include: others
- include: attrset-definition
- include: others
- match: '(?=\{\s*(\}|[^,?]*(=|;)))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition
- include: others
attrset-or-function:
- match: '\{'
captures:
0: punctuation.definition.attrset-or-function.nix
push:
- match: '(?=([\])};]|\b(else|then)\b))'
pop: true
- match: '(?=(\s*\}|\"|\binherit\b|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*(\s*\.|\s*=[^=])))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition-brace-opened
- match: '(?=(\.\.\.|\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[,?]))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- include: bad-reserved
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.function.maybe.nix
push:
- match: '(?=([\])};]|\b(else|then)\b))'
pop: true
- match: (?=\.)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attrset-definition-brace-opened
- match: \s*(\,)
captures:
1: keyword.operator.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- match: (?=\=)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: attribute-bind-from-equals
- include: attrset-definition-brace-opened
- match: (?=\?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-parameter-default
- match: \,
captures:
0: keyword.operator.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition-brace-opened
- include: others
- include: others
bad-reserved:
- match: '(?<![\w''-])(if|then|else|assert|with|let|in|rec|inherit)(?![\w''-])'
scope: invalid.illegal.reserved.nix
comment-remark:
- match: (TODO|FIXME|BUG|\!\!\!):?
captures:
1: markup.bold.comment.nix
constants:
- match: \b(builtins|true|false|null)\b
captures:
0: constant.language.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: \b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\b
captures:
0: support.function.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '\b[0-9]+\b'
captures:
0: constant.numeric.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
expression:
- include: parens-and-cont
- include: list-and-cont
- include: string
- include: interpolation
- include: with-assert
- include: function-for-sure
- include: attrset-for-sure
- include: attrset-or-function
- include: let
- include: if
- include: operator-unary
- include: constants
- include: bad-reserved
- include: parameter-name-and-cont
- include: others
expression-cont:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: parens
- include: list
- include: string
- include: interpolation
- include: function-for-sure
- include: attrset-for-sure
- include: attrset-or-function
- match: '(\bor\b|\.|==|!=|!|\<\=|\<|\>\=|\>|&&|\|\||-\>|//|\?|\+\+|-|\*|/(?=([^*]|$))|\+)'
scope: keyword.operator.nix
- include: constants
- include: bad-reserved
- include: parameter-name
- include: others
function-body:
- match: '(@\s*([a-zA-Z\_][a-zA-Z0-9\_\''\-]*)\s*)?(\:)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
function-body-from-colon:
- match: (\:)
captures:
0: punctuation.definition.function.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
function-contents:
- include: bad-reserved
- include: function-parameter
- include: others
function-definition:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-body-from-colon
- match: (?=.?)
push:
- match: (?=\:)
pop: true
- match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)'
captures:
0: variable.parameter.function.4.nix
push:
- match: (?=\:)
pop: true
- match: \@
push:
- match: (?=\:)
pop: true
- include: function-header-until-colon-no-arg
- include: others
- include: others
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-until-colon-with-arg
- include: others
function-definition-brace-opened:
- match: (?=.?)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-body-from-colon
- match: (?=.?)
push:
- match: (?=\:)
pop: true
- include: function-header-close-brace-with-arg
- match: (?=.?)
push:
- match: '(?=\})'
pop: true
- include: function-contents
- include: others
function-for-sure:
- match: '(?=(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*\s*[:@]|\{[^}]*\}\s*:|\{[^#}"''/=]*[,\?]))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: function-definition
function-header-close-brace-no-arg:
- match: '\}'
captures:
0: punctuation.definition.entity.function.nix
push:
- match: (?=\:)
pop: true
- include: others
function-header-close-brace-with-arg:
- match: '\}'
captures:
0: punctuation.definition.entity.function.nix
push:
- match: (?=\:)
pop: true
- include: function-header-terminal-arg
- include: others
function-header-open-brace:
- match: '\{'
captures:
0: punctuation.definition.entity.function.2.nix
push:
- match: '(?=\})'
pop: true
- include: function-contents
function-header-terminal-arg:
- match: (?=@)
push:
- match: (?=\:)
pop: true
- match: \@
push:
- match: (?=\:)
pop: true
- match: '(\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*)'
push:
- meta_scope: variable.parameter.function.3.nix
- match: (?=\:)
pop: true
- include: others
- include: others
function-header-until-colon-no-arg:
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-open-brace
- include: function-header-close-brace-no-arg
function-header-until-colon-with-arg:
- match: '(?=\{)'
push:
- match: (?=\:)
pop: true
- include: function-header-open-brace
- include: function-header-close-brace-with-arg
function-parameter:
- match: (\.\.\.)
push:
- meta_scope: keyword.operator.nix
- match: '(,|(?=\}))'
pop: true
- include: others
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.function.1.nix
push:
- match: '(,|(?=\}))'
captures:
0: keyword.operator.nix
pop: true
- include: whitespace
- include: comment
- include: function-parameter-default
- include: expression
- include: others
function-parameter-default:
- match: \?
captures:
0: keyword.operator.nix
push:
- match: "(?=[,}])"
pop: true
- include: expression
if:
- match: (?=\bif\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \bif\b
captures:
0: keyword.other.nix
push:
- match: \bth(?=en\b)
captures:
0: keyword.other.nix
pop: true
- include: expression
- match: (?<=th)en\b
captures:
0: keyword.other.nix
push:
- match: \bel(?=se\b)
captures:
0: keyword.other.nix
pop: true
- include: expression
- match: (?<=el)se\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
captures:
0: keyword.other.nix
pop: true
- include: expression
illegal:
- match: .
scope: invalid.illegal
interpolation:
- match: '\$\{'
captures:
0: punctuation.section.embedded.begin.nix
push:
- meta_scope: markup.italic
- match: '\}'
captures:
0: punctuation.section.embedded.end.nix
pop: true
- include: expression
let:
- match: (?=\blet\b)
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \blet\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(in|else|then)\b))'
pop: true
- match: '(?=\{)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: '\{'
push:
- match: '\}'
pop: true
- include: attrset-contents
- match: '(^|(?<=\}))'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- include: others
- include: attrset-contents
- include: others
- match: \bin\b
captures:
0: keyword.other.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression
list:
- match: '\['
captures:
0: punctuation.definition.list.nix
push:
- match: '\]'
captures:
0: punctuation.definition.list.nix
pop: true
- include: expression
list-and-cont:
- match: '(?=\[)'
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: list
- include: expression-cont
operator-unary:
- match: (!|-)
scope: keyword.operator.unary.nix
others:
- include: whitespace
- include: comment
- include: illegal
parameter-name:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.name.nix
parameter-name-and-cont:
- match: '\b[a-zA-Z\_][a-zA-Z0-9\_\''\-]*'
captures:
0: variable.parameter.name.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
parens:
- match: \(
captures:
0: punctuation.definition.expression.nix
push:
- match: \)
captures:
0: punctuation.definition.expression.nix
pop: true
- include: expression
parens-and-cont:
- match: (?=\()
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: parens
- include: expression-cont
string:
- match: (?=\'\')
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- match: \'\'
captures:
0: punctuation.definition.string.other.start.nix
push:
- meta_scope: string.quoted.other.nix
- match: \'\'(?!\$|\'|\\.)
captures:
0: punctuation.definition.string.other.end.nix
pop: true
- match: \'\'(\$|\'|\\.)
scope: constant.character.escape.nix
- include: interpolation
- include: expression-cont
- match: (?=\")
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: string-quoted
- include: expression-cont
- match: '([a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+)'
captures:
0: string.unquoted.path.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '(\<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>)'
captures:
0: string.unquoted.spath.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
- match: '([a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\'']+)'
captures:
0: string.unquoted.url.nix
push:
- match: '(?=([\])};,]|\b(else|then)\b))'
pop: true
- include: expression-cont
string-quoted:
- match: \"
captures:
0: punctuation.definition.string.double.start.nix
push:
- meta_scope: string.quoted.double.nix
- match: \"
captures:
0: punctuation.definition.string.double.end.nix
pop: true
- match: \\.
scope: constant.character.escape.nix
- include: interpolation
whitespace:
- match: \s+
with-assert:
- match: '(?<![\w''-])(with|assert)(?![\w''-])'
captures:
0: keyword.other.nix
push:
- match: \;
pop: true
- include: expression

View File

@ -0,0 +1,219 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: orgmode
file_extensions:
- org
scope: text.orgmode
contexts:
main:
- match: |-
(?x)
^(\*+) # leading stars
\s*([A-Z_]{2,})? # todo keywords
\s*(\[\#[A-Ca-c]\])? # priority
\s*(?=\s+[A-Za-z0-9]+) # expected heading text
comment: Outline headings
captures:
1: punctuation.definition.heading.orgmode
2: keyword.other.todo.orgmode
3: constant.other.priority.orgmode
push:
- meta_scope: markup.heading.orgmode
- meta_content_scope: entity.name.section.orgmode
- match: (?=\s*$\n?)
pop: true
- include: heading-inline
- match: "^-{5,}$"
scope: meta.separator.orgmode
- match: '^\s*([-+]|\s+\*)\s+(.*?)\s+::'
captures:
1: keyword.operator.list.orgmode
2: markup.bold.definition.orgmode
push:
- meta_scope: meta.list.definition.orgmode
- match: $
pop: true
- include: inline
- match: '^\s*?([-+]|\s+\*|\d+[).])'
captures:
1: keyword.operator.list.orgmode
push:
- meta_scope: meta.list.plain.orgmode
- match: $
pop: true
- include: list-inline
- match: (?i)^#\+(BEGIN_(QUOTE|VERSE|CENTER))$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: markup.quote.orgmode
- match: (?i)^#\+(END_\2)$
captures:
1: keyword.control.block.orgmode
pop: true
- match: "^#[^+].*$"
scope: comment.line.number-sign.orgmode
- match: ^:(PROPERTIES):$
captures:
1: keyword.control.drawer.orgmode
push:
- meta_scope: meta.drawer.properties.orgmode
- match: ^:(END):$
captures:
1: keyword.control.drawer.orgmode
pop: true
- include: properties
- match: ^:(.+):$
captures:
1: keyword.control.drawer.orgmode
push:
- meta_scope: meta.drawer.other.orgmode
- match: ^:(END):$
captures:
1: keyword.control.drawer.orgmode
pop: true
- match: (?i)#\+(BEGIN_LaTeX)$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: meta.block.latex.orgmode
- match: (?i)#\+(END_LaTeX)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:text.tex.latex
- match: (?i)#\+(BEGIN_HTML)$
captures:
1: keyword.control.block.orgmode
push:
- meta_scope: meta.block.html.orgmode
- match: (?i)#\+(END_HTML)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:text.html.basic
- match: (?i)#\+(BEGIN_SRC)\s+(python)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.python.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.python
- match: (?i)#\+(BEGIN_SRC)\s+(ruby)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.ruby.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.ruby
- match: (?i)#\+(BEGIN_SRC)\s+((?:emacs-)?lisp)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.lisp.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.lisp
- match: (?i)#\+(BEGIN_SRC)\s+(sh)\s*(.*)$
captures:
1: keyword.control.block.orgmode
2: constant.other.language.orgmode
3: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.shell.orgmode
- match: (?i)#\+(END_SRC)$
captures:
1: keyword.control.block.orgmode
pop: true
- include: scope:source.shell
- match: '(?i)#\+(BEGIN_(SRC|EXAMPLE))(?:\s+([\w-]+)?\s*(.*))?$'
captures:
1: keyword.control.block.orgmode
3: constant.other.language.orgmode
4: string.other.header-args.orgmode
push:
- meta_scope: meta.block.source.other.orgmode
- meta_content_scope: markup.raw.block.orgmode
- match: (?i)#\+(END_\2)$
captures:
1: keyword.control.block.orgmode
pop: true
- match: '#\+(OPTIONS):'
captures:
1: keyword.control.pragma.orgmode
push:
- meta_scope: meta.pragma.options.orgmode
- match: $
pop: true
- match: '([^\s]+):([^\s]+)'
scope: meta.option.orgmode
captures:
1: variable.parameter.option.orgmode
2: string.other.option.orgmode
- match: '#\+(CALL):\s+[A-Za-z-]+(?:\[([^\]]*)\])?\(?'
captures:
1: keyword.control.pragma.orgmode
2: string.other.header-args.orgmode
push:
- meta_scope: meta.pragma.call.orgmode
- match: '\)?([^)]*)$'
captures:
1: string.other.header-args.orgmode
pop: true
- match: (\w+)=
scope: meta.assignment.orgmode
captures:
1: variable.parameter.header-args.orgmode
- match: '^#\+([a-zA-Z_-]+): ?(.*)$'
scope: meta.pragma.orgmode
captures:
1: keyword.control.pragma.orgmode
2: string.unquoted.pragma.orgmode
- include: inline
heading-inline:
- match: ':([^:^\s]*)(?=:)'
scope: meta.keyword.orgmode
captures:
1: string.quoted.keyword.orgmode
- include: inline
inline:
- match: '(?<=^|[.,:;\s])/[^/]+/(?=$|[.,:;\s])'
scope: markup.italic.orgmode
- match: '(?<=^|[.,:;\s])\*[^*]+\*(?=$|[.,:;\s])'
scope: markup.bold.orgmode
- match: '(?<=^|[.,:;\s])_[^_]+_(?=$|[.,:;\s])'
scope: markup.underline.orgmode
- match: '(?<=^|[.,:;\s])([~=]).+?\1(?=$|[.,:;\s])'
scope: markup.raw.inline.orgmode
- match: '\[(?:\[([^\]]*)\])?\[([^\]]*)\]\]'
scope: meta.link.orgmode
captures:
1: markup.underline.link.orgmode
2: string.other.link.orgmode
- match: (?:http|ftp)s?:\/\/\S+
scope: markup.underline.url.orgmode
list-inline:
- match: '\[[ -X]\]'
scope: keyword.operator.checkbox.orgmode
- include: inline
properties:
- match: '^:([A-Za-z_]+):\s(.*)$'
scope: meta.property.orgmode
captures:
1: keyword.control.property.orgmode
2: string.unquoted.propval.orgmode

View File

@ -147,7 +147,7 @@ contexts:
2: keyword.other.powershell
3: variable.parameter.powershell
attribute:
- match: '(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\b'
- match: '(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength)\b'
captures:
1: punctuation.section.bracket.begin.powershell
2: support.function.attribute.powershell
@ -165,11 +165,31 @@ contexts:
captures:
0: punctuation.section.group.end.powershell
pop: true
- include: variable
- include: variableNoProperty
- include: hashtable
- include: scriptblock
- include: doubleQuotedStringEscapes
- include: doubleQuotedString
- include: type
- include: numericConstant
- include: doubleQuotedString
- include: main
- match: (?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?
captures:
1: variable.parameter.attribute.powershell
2: keyword.operator.assignment.powershell
- match: (?<!')'
captures:
0: punctuation.definition.string.begin.powershell
push:
- meta_scope: string.quoted.single.powershell
- match: "'(?!')"
captures:
0: punctuation.definition.string.end.powershell
pop: true
- match: "''"
scope: constant.character.escape.powershell
commands:
- match: '(?:(\p{L}|\d|_|-|\\|\:)*\\)?\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\-.+?(?:\.(?i:exe|cmd|bat|ps1))?\b'
comment: "Verb-Noun pattern:"
@ -222,14 +242,14 @@ contexts:
pop: true
- match: '(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b'
- include: variableNoProperty
- include: variable
- include: doubleQuotedStringEscapes
- include: interpolation
- match: '`\s*$'
scope: keyword.other.powershell
doubleQuotedStringEscapes:
- match: '`[`0abefnrtv"''$]'
- match: '`[0abnfrvt"''$`]'
scope: constant.character.escape.powershell
- include: unicodeEscape
- match: '""'
scope: constant.character.escape.powershell
function:
@ -342,11 +362,6 @@ contexts:
- match: '(?!\d+|\.)(?:\p{L}|\p{N}|\.)+'
scope: storage.type.powershell
- include: main
unicodeEscape:
- match: '`u\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\g<1>{1,5})}'
scope: constant.character.escape.powershell
- match: '`u(?:\{[0-9a-fA-F]{,6}.)?'
scope: invalid.character.escape.powershell
variable:
- match: (\$)(?i:(False|Null|True))\b
comment: These are special constants.
@ -359,10 +374,10 @@ contexts:
0: support.constant.variable.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)((?:\.(?:\p{L}|\d|_)+)*\b)?'
- match: '(\$)(?i:(\$|\^|\?|_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
comment: Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.
captures:
0: support.variable.automatic.powershell
0: support.constant.automatic.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|ProgressPreference|PsCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|VerbosePreference|WarningPreference|WhatIfPreference))((?:\.(?:\p{L}|\d|_)+)*\b)?\b'
@ -411,7 +426,7 @@ contexts:
0: support.constant.variable.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)'
- match: (\$)(?i:(\$|\^|\?|_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This))\b
comment: Automatic variables are not constants, but they are read-only...
captures:
0: support.variable.automatic.powershell
@ -423,7 +438,7 @@ contexts:
0: variable.language.powershell
1: punctuation.definition.variable.powershell
3: variable.other.member.powershell
- match: '(?i:(\$)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))'
- match: '(?i:(\$|@)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))'
captures:
0: variable.other.readwrite.powershell
1: punctuation.definition.variable.powershell

View File

@ -0,0 +1,460 @@
%YAML 1.2
---
# Syntax for Protocol Buffer definition files.
# Works with proto2 and proto3.
# See official Protobuff documentation at https://developers.google.com/protocol-buffers/docs/proto3
#
# Authors: Jiarong Wei, Raul Rangel & Guillaume Wenzek
#
# .sublime-syntax reference: http://www.sublimetext.com/docs/3/syntax.html
name: Protocol Buffer
file_extensions:
- proto
- protodevel
scope: source.proto
first_line_match: '^(syntax)\s*(=)\s*("proto\d")\s*(;)\s*$'
variables:
ident: '\b([A-Za-z][A-Za-z0-9_]*)\b'
contexts:
prototype:
- include: comments
main:
- include: syntax
- include: package
- include: import
- include: option
- include: enum
- include: message
- include: extend
- include: service
# This is proto1 syntax which is deprecated, only providing minimal support.
- match: '\b(parsed)?\s*(class)\s+{{ident}}\s+{'
scope: meta.parsed.message.proto
captures:
1: storage.modifier.proto
2: storage.type.message.proto
3: entity.name.class.proto
push:
- match: '}'
pop: true
- include: message_body
# Groups are deprecated, only providing minimal support.
- match: '\b(group)\s+{{ident}}\s+=\s+(\d+)\s+{'
scope: meta.group.proto
captures:
1: storage.type.proto invalid.deprecated.group.proto
2: variable.other.field.proto
3: constant.numeric.proto
push:
- match: '}'
pop: true
- include: message_body
# Comments
comments:
- match: //
scope: punctuation.definition.comment.begin.proto
push:
- meta_scope: comment.line.proto
- match: '$'
pop: true
- match: /\*
scope: punctuation.definition.comment.proto
push:
- meta_scope: comment.block.proto
- match: \*/
scope: punctuation.definition.comment.proto
pop: true
# Others
or_pop:
# Pop when seeing unexpected characters.
- match: '(?=\S)'
pop: true
field_name_or_pop:
- match: '{{ident}}'
scope: variable.other.field.proto
pop: true
- include: or_pop
one_liner:
- match: ;
scope: punctuation.terminator.proto
pop: true
- match: $
pop: true
semicolon_or_pop:
- match: ';'
captures:
0: punctuation.terminator.proto
pop: true
- include: or_pop
assignment_or_pop:
- match: '='
scope: keyword.operator.assignment.proto
pop: true
- include: or_pop
# Syntax
syntax:
- match: '^\s*(syntax)\s*(=)'
captures:
1: keyword.other.syntax.proto
2: keyword.operator.assignment.proto
push:
- include: string
- include: one_liner
# Import
import:
- match: '\b(import)\b\s*(weak|public)?\b'
captures:
1: keyword.other.import.proto
2: storage.modifier.proto
push:
- include: string
- include: one_liner
# Package
package:
- match: \b(package)\b
scope: keyword.other.namespace.proto
push:
- match: '{{ident}}(\.)'
captures:
1: variable.namespace.proto
2: punctuation.separator.namespace.proto
- match: '{{ident}}'
scope: entity.name.namespace.proto
- include: one_liner
# Option
option:
- match: '\b(option)\b'
scope: storage.type.annotation.proto
push:
- match: ';'
scope: punctuation.terminator.option.proto
pop: true
- include: option_inline
- include: or_pop
option_inline:
- match: '{{ident}}'
scope: variable.annotation.proto
- include: full_option_name
- match: =
scope: keyword.operator.assignment.proto
push: option_value
full_option_name:
- match: \(
scope: punctuation.definition.name.option.begin.proto
push:
- match: (\))(?:(\.){{ident}})?
captures:
1: punctuation.definition.name.option.end.proto
2: punctuation.accessor.proto
3: variable.annotation.proto
pop: true
- match: '{{ident}}(\.)'
captures:
1: variable.namespace.proto
2: punctuation.accessor.proto
- match: '{{ident}}'
scope: variable.annotation.proto
# Message
message:
- match: '\b(message)\b\s*{{ident}}'
captures:
1: storage.type.message.proto
2: entity.name.class.proto
push:
- meta_scope: meta.class.proto
- match: '{'
scope: punctuation.definition.block.message.begin.proto
set: message_body
- include: or_pop
message_body:
- meta_scope: meta.class.proto
- match: '}'
scope: punctuation.definition.block.message.end.proto
pop: true
- include: option
- include: message
- include: extend
- include: oneof
- include: enum
- include: reserved
- include: field
field:
- match: '\b(optional|required|repeated)\b'
captures:
1: storage.modifier.proto
push: [ field_end_or_pop, field_name_or_pop, message_type_or_pop ]
- match: '\b(map)\b\s*\b(<)'
captures:
1: support.type.map.proto
2: punctuation.definition.map.begin.proto
push: [ field_end_or_pop, field_name_or_pop, map_type ]
# field are assumed 'optional' by default in proto3.
- match: '(?={{ident}})'
push: [ field_end_or_pop, field_name_or_pop, message_type_or_pop ]
# Enum
enum:
- match: '\b(enum)\b\s*{{ident}}'
captures:
1: storage.type.enum.proto
2: entity.name.enum.proto
push:
- meta_scope: meta.enum.proto
- match: '{'
scope: punctuation.definition.block.enum.begin.proto
set: enum_body
- include: or_pop
enum_body:
- meta_scope: meta.enum.proto
- match: '}'
scope: punctuation.definition.block.enum.end.proto
pop: true
- include: option
- match: '{{ident}}'
scope: constant.other.enum.proto
push:
- semicolon_or_pop
- field_attributes_or_pop
- number_or_pop
- assignment_or_pop
# Extend
extend:
- match: '\b(extend)\b'
scope: storage.modifier.extend.proto
push: [ extend_body_or_pop, message_type_or_pop]
extend_body_or_pop:
- match: '{'
scope: punctuation.definition.block.extend.begin.proto
set:
- meta_scope: meta.extend.body.proto
- match: '}'
scope: punctuation.definition.block.extend.end.proto
pop: true
- include: message_body
- include: or_pop
# Oneof
oneof:
- match: '\b(oneof)\b\s*{{ident}}'
captures:
1: storage.modifier.oneof.proto
2: entity.name.member.proto
push:
- meta_scope: meta.oneof.proto
- match: '{'
scope: punctuation.definition.block.oneof.begin.proto
set: oneof_body
- include: or_pop
oneof_body:
- match: '}'
scope: punctuation.definition.block.oneof.end.proto
pop: true
- match: '(?=\S)'
push: [ field_end_or_pop, field_name_or_pop, message_type_or_pop ]
# Service
service:
- match: '\b(service)\b\s*{{ident}}'
captures:
1: storage.type.service.proto
2: entity.name.class.proto
push:
- meta_scope: meta.service.proto
- match: '{'
scope: punctuation.definition.block.service.begin.proto
set:
- meta_scope: meta.service.proto
- match: '}'
scope: punctuation.definition.block.service.end.proto
pop: true
- include: option
- include: rpc
- include: or_pop
# Rpc
rpc:
- match: '\b(rpc)\b\s*{{ident}}'
captures:
1: storage.type.rpc.proto
2: entity.name.function.rpc.proto
push: [rpc_body, rpc_param, rpc_returns, rpc_param]
rpc_returns:
- match: returns
scope: keyword.other.returns.proto
pop: true
rpc_param:
- match: \(
scope: punctuation.definition.parameter.rpc.begin.proto
set:
- match: \)
scope: punctuation.definition.parameter.rpc.end.proto
pop: true
- match: '\bstream\b'
scope: storage.modifier.proto
- match: (?=\S)
push: message_type_or_pop
rpc_body:
- match: '{'
scope: punctuation.definition.block.rpc.begin.proto
set:
- meta_scope: meta.rpc.body.proto
- match: '}'
scope: punctuation.definition.block.rpc.end.proto
pop: true
- include: option
- match: ;
scope: punctuation.terminator.proto
pop: true
- include: or_pop
# Reserved
reserved:
- match: '\b(reserved)\b'
scope: storage.modifier.proto
push:
- include: numeric_range
- include: string
- match: '\b(extensions)\b'
scope: storage.modifier.proto
push: numeric_range
numeric_range:
- match: \d+
scope: constant.numeric.proto
- match: max
scope: constant.language.proto
- match: ','
scope: punctuation.separator.proto
- match: to
scope: keyword.other.to.proto
- match: ';'
scope: punctuation.terminator.proto
pop: true
field_end_or_pop:
- match: ''
set:
- semicolon_or_pop
- field_attributes_or_pop
- number_or_pop
- assignment_or_pop
field_attributes_or_pop:
- match: '\['
scope: punctuation.definition.attributes.begin.proto
set:
- meta_scope: meta.field.attributes.proto
- match: \b(default|deprecated|packed)\b
scope: support.function.proto
- match: \,
scope: punctuation.separator.option.proto
- match: '\]'
scope: punctuation.definition.attributes.end.proto
pop: true
- include: option_inline
- include: or_pop
# Values
option_value:
# Reuse prototxt syntax to parse embedded literal or protos.
- match: '{'
scope: punctuation.definition.block.option.begin.proto
push:
- meta_scope: meta.embedded.prototxt
- match: '}'
scope: punctuation.definition.block.option.end.proto
pop: true
- include: scope:text.prototxt
- include: scope:text.prototxt#field_value_or_pop
number_or_pop:
- match: \d+
scope: constant.numeric.proto
pop: true
- include: or_pop
string:
- match: '"'
scope: punctuation.definition.string.begin.proto
push:
- meta_scope: string.quoted.double.proto
- meta_include_prototype: false
- match: '\\"'
scope: constant.character.escape.proto
- match: '"'
scope: punctuation.definition.string.end.proto
pop: true
- match: (?=$) # pop if string is malformed.
pop: true
# All types
message_type_or_pop:
# see documentation for the list of base types:
# https://developers.google.com/protocol-buffers/docs/proto#scalar
- match: '(double|float|bool|string|bytes)'
scope: support.type.proto
pop: true
- match: '(u|s)?int(32|64)'
scope: support.type.proto
pop: true
- match: 's?fixed(32|64)'
scope: support.type.proto
pop: true
- match: '{{ident}}(\.)'
captures:
1: variable.namespace.proto
2: punctuation.accessor.proto
- match: '{{ident}}'
# TODO: Use the convention decided in https://github.com/sublimehq/Packages/issues/582
scope: storage.type.proto variable.type.proto
pop: true
map_type:
- match: ','
scope: punctuation.separator.map.proto
- match: '>'
scope: punctuation.definition.map.end.proto
pop: true
- match: '(?={{ident}})'
push: message_type_or_pop

View File

@ -0,0 +1,186 @@
%YAML 1.2
---
# Syntax for Protocol Buffer serialized as human readable text.
# Works with proto2 and proto3.
# See official Protobuff documentation at https://developers.google.com/protocol-buffers/docs/proto3
#
# Author: Raul Rangel & Guillaume Wenzek
#
# .sublime-syntax reference: http://www.sublimetext.com/docs/3/syntax.html
name: Protocol Buffer (TEXT)
file_extensions:
- pb.txt
- proto.text
- textpb
- pbtxt
- prototxt
scope: text.prototxt
variables:
stringEscape: '(?:\\(?:[''"\\/abfnrtv?]|[0-9]{3}|(?i:u|x)[0-9A-Fa-f]+))'
field_name: '\b([A-Za-z][A-Za-z0-9_]*)\b'
integer: '(?:\+|-)?(?:0|[1-9]\d*)'
exp: '(?i:e(?:\+|-)?{{integer}})'
contexts:
prototype:
- include: comments
or_pop:
# Pop if nothing matched (whitespace are ignored).
- match: '(?=\S)'
pop: true
main:
- include: field
comments:
- match: '#'
scope: punctuation.definition.comment.begin.prototxt
push:
- meta_scope: comment.line.prototxt
- match: '$'
pop: true
field:
- match: '{{field_name}}'
scope: variable.other.member.prototxt
push: field_sep_or_pop
- match: \[
scope: punctuation.definition.field_name.begin.prototxt
push:
- match: \]
set: field_sep_or_pop
scope: punctuation.definition.field_name.end.prototxt
- match: '{{field_name}}(\.)'
captures:
1: variable.other.namespace.prototxt
2: punctuation.accessor.prototxt
- match: '{{field_name}}'
scope: variable.other.member.prototxt
field_sep_or_pop:
- match: '(:)|(?=\{|<)'
scope: punctuation.separator.key-value.prototxt
set: [comma_or_pop, field_value_or_pop]
- include: or_pop
field_value_or_pop:
- match: '{'
scope: punctuation.definition.dictionary.begin.prototxt
set:
- meta_scope: meta.message.prototxt
- match: '}'
scope: punctuation.definition.dictionary.end.prototxt
pop: true
- include: field
- match: '<'
scope: punctuation.definition.dictionary.begin.prototxt
set:
- meta_scope: meta.message.prototxt
- match: '>'
scope: punctuation.definition.dictionary.end.prototxt
pop: true
- include: field
- include: constant
- include: string_double_multiline
- include: string_single_multiline
- include: enum_value
- include: number
- include: array
- include: or_pop
array:
- match: '\['
scope: punctuation.definition.array.begin.prototxt
set:
- match: '\]'
scope: punctuation.definition.array.end.prototxt
pop: true
- match: \,
scope: punctuation.separator.array.prototxt
- match: (?=\S)
push: field_value_or_pop
comma_or_pop:
- match: ','
scope: punctuation.separator.prototxt
pop: true
- include: or_pop
constant:
- match: \b(true|True|t|false|False|f)\b
scope: constant.language.prototxt
pop: true
- match: (\+|-)?\b(?i:inf|infinity)\b
scope: constant.language.prototxt
pop: true
- match: \b(?i:nan)\b
scope: constant.language.prototxt
pop: true
number:
- match: |-
(?xi:
{{integer}}?\.\d+{{exp}}?(f?) # literal with a dot: .3 .3e+4 1.3 1.3f
|{{integer}}(f) # literal with a 'f': 1f
|{{integer}}{{exp}}(f?) # literal with an exp: .3e+4 1e-3 1e3f
)\b
scope: constant.numeric.float.prototxt
captures:
1: punctuation.definition.numeric.float.prototxt
2: punctuation.definition.numeric.float.prototxt
3: punctuation.definition.numeric.float.prototxt
pop: true
- match: '{{integer}}\b'
scope: constant.numeric.integer.prototxt
pop: true
- match: '(0)[0-8]+\b'
scope: constant.numeric.octal.prototxt
captures:
1: punctuation.definition.numeric.octal.prototxt
pop: true
- match: '(0[xX])[0-9A-Fa-f]+\b'
scope: constant.numeric.hex.prototxt
captures:
1: punctuation.definition.numeric.hex.prototxt
pop: true
enum_value:
- match: '{{field_name}}'
scope: constant.numeric.enum.prototxt
pop: true
string_double_multiline:
- match: '"'
scope: punctuation.definition.string.begin.prototxt
set:
- meta_scope: string.quoted.double.prototxt
- meta_include_prototype: false
- match: '{{stringEscape}}'
scope: constant.character.escape.prototxt
- match: \\.
scope: invalid.illegal.unrecognized-string-escape.prototxt
- match: '"'
scope: punctuation.definition.string.end.prototxt
set:
- include: string_double_multiline
- include: or_pop
string_single_multiline:
- match: "'"
scope: punctuation.definition.string.quoted.single.begin.prototxt
set:
- meta_scope: string.quoted.single.prototxt
- meta_include_prototype: false
# Note that technically "bytes" field main don't respect escapes,
# but there is no way to know if the given string will be interpreted as
# "bytes".
- match: '{{stringEscape}}'
scope: constant.character.escape.prototxt
- match: \\.
scope: invalid.illegal.unrecognized-string-escape.prototxt
- match: "'"
scope: punctuation.definition.string.quoted.single.end.prototxt
set:
- include: string_single_multiline
- include: or_pop

View File

@ -0,0 +1,54 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Robot Framework syntax highlighting.
file_extensions:
- robot
scope: source.robot
contexts:
main:
- match: '\$\{(\d+|\d+\.\d*|0[bB][01]+|0[oO][0-7]+|0[xX][0-9a-fA-F]+)\}'
comment: "Robot Framework numbers, like ${1} or ${12.3}"
scope: constant.numeric.robot
- match: '(?i)(%\{[\w|\s]+\})'
comment: "Robot Framework environment variable, like %{USER}"
scope: variable.parameter.robot
- match: '((?<!\\)|(?<=\\\\))[$&]{'
comment: Robot Framework scalar and dictionary variables
push:
- meta_scope: entity.name.class
- match: '\}'
pop: true
- match: '((?<!\\)(@{)|(?<=\\\\)(@{))'
comment: Robot Framework list variables
push:
- meta_scope: entity.name.class
- match: '(}\[.+])|(})'
pop: true
- match: '(?i)^(\|\s*)?(\*{1,3} ?)(settings?|variables?|keywords?|test cases?)( ?\*{1,3})?(\s*\|)?'
comment: Robot Framework data tables
scope: string.robot.header
- match: '(?i)(^\|\s*)?\[?Documentation\]?\s+'
comment: Test case, keyword and settings table documentation
push:
- meta_scope: comment
- match: ^(?!\s*+\.\.\.)
pop: true
- match: '(^| {2,}|\t|\\| {1,})(?<!\\\\)#'
comment: Comment character
push:
- meta_scope: comment
- match: $
pop: true
- match: '(?i)\s+\[(Tags|Setup|Teardown|Template|Timeout|Arguments|Return)\]'
comment: Tests case and keyword settings
scope: storage.type
- match: (?i)^(\|\s*)?(Library|Resource|Test Timeout|Test Template|Test Teardown|Test Setup|Default Tags|Force Tags|Metadata|Variables|Suite Setup|Suite Teardown)(?:( )|( \| ))
comment: Settings table settings, like Library
scope: constant.language
- match: '^(\|\s+)?(?!^\.{3})(?![\|$&])\S+'
comment: Keywords and test cases
push:
- meta_scope: keyword.control.robot
- match: '($|\||\s{2,})'
pop: true

View File

@ -0,0 +1,292 @@
%YAML 1.2
---
# https://www.sublimetext.com/docs/3/syntax.html
# http://man7.org/linux/man-pages/man5/ssh_config.5.html
name: SSH Config
file_extensions:
- ssh_config
scope: text.ssh_config
contexts:
main:
- include: comments
- include: host
- include: match
options:
- include: comments
- include: hostname
- include: localcommand
- include: proxycommand
- include: boolean-option
- include: boolean-option-plus
- include: generic-option
tokens:
# http://man7.org/linux/man-pages/man5/ssh_config.5.html#TOKENS
- match: '%[%CdhiLlnprTu]'
scope: constant.character.escape.ssh_config
pop-nl:
- match: '\n'
pop: true
pop-before-nl:
- match: '(?=\n)'
pop: true
pop-before-match-option:
- include: pop-before-nl
- match: (?i)(?=[ \t]*(all|canonical|exec|host|originalhost|user|localuser)\b)
pop: true
pop-before-next-host:
- match: (?i)(?=^[ \t]*(host|match)\b)
pop: true
# Host
host:
- match: '(?i)^[ \t]*(host)\b'
captures:
1: meta.block.host.ssh_config keyword.declaration.host-alias.ssh_config
set: host-aliases
host-aliases:
- meta_scope: meta.block.host.ssh_config
- match: (?=\n)
set: host-body
- include: host-patterns
host-body:
- meta_scope: meta.block.host.ssh_config
- include: pop-before-next-host
- include: options
# Match
match:
- match: '(?i)^[ \t]*(match)\b'
captures:
1: meta.block.match.ssh_config keyword.control.conditional.ssh_config
set: match-conditions
match-conditions:
- meta_scope: meta.block.match.ssh_config meta.statement.conditional.ssh_config
- match: (?=\n)
set: match-body
- match: '!'
scope: keyword.operator.logical.ssh_config
- match: (?i)\b(all)\b
scope: constant.language.boolean.ssh_config
- match: (?i)\b(canonical)\b
scope: keyword.other.ssh_config
- match: (?i)\b(exec)\b[ \t]*(\")
captures:
1: keyword.other.ssh_config
2: string.quoted.double.ssh_config punctuation.definition.string.begin.ssh_config
escape: (?<!\\)\"(?=\s*(?:#.*)?)
escape_captures:
0: string.quoted.double.ssh_config punctuation.definition.string.end.ssh_config
embed: scope:source.shell
- match: (?i)\b(exec)\b[ \t]+
captures:
1: keyword.other.ssh_config
with_prototype:
- include: match-exec-tokens
- include: pop-before-match-option
push:
- meta_content_scope: source.embedded.shell
- include: scope:source.shell
- match: (?i)\b((original)?host)\b
scope: keyword.other.ssh_config
push:
- include: pop-before-match-option
- include: host-patterns
- match: (?i)\b((local)?user)\b
scope: keyword.other.ssh_config
push:
- include: pop-before-match-option
- match: '\S'
scope: string.unquoted.ssh_config
match-body:
- meta_scope: meta.block.match.ssh_config
- include: pop-before-next-host
- include: options
# Options
hostname:
- match: '(?i)^[ \t]*(hostname)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.ssh_config keyword.declaration.host.ssh_config
2: keyword.operator.assignment.ssh_config
push:
- include: pop-nl
- include: hostname-or-ip-value
hostname-or-ip-value:
- match: |-
(?x:
(
((?:\d{1,3}\.){3}\d{1,3})| # simple IPv4
((?i:[a-f0-9:]+:+)+[a-f0-9]+)| # simple IPv6
(\S+) # anything else
)
[ \t]* # any whitespace
(\S*) # anything else on the line
)
scope: meta.mapping.value.ssh_config
captures:
1: meta.string.host.ssh_config
2: constant.numeric.ip4.ssh_config
3: constant.numeric.ip6.ssh_config
4: string.unquoted.hostname.ssh_config
5: invalid.illegal.ssh_config
host-patterns:
# http://man7.org/linux/man-pages/man5/ssh_config.5.html#PATTERNS
- match: '!'
scope: keyword.operator.logical.ssh_config
- match: '[^\s*?]+'
scope: entity.name.label.host-alias.ssh_config
- match: '\*|\?'
scope: entity.name.label.host-alias.ssh_config constant.language.wildcard.ssh_config
match-exec-tokens:
# http://man7.org/linux/man-pages/man5/ssh_config.5.html#TOKENS
- match: '%[%hiLlnpru]'
scope: constant.character.escape.ssh_config
proxycommand:
- match: '^\s*(?i)(proxycommand)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.ssh_config keyword.other.ssh_config
2: keyword.operator.assignment.ssh_config
with_prototype:
- match: '%[%hpr]'
scope: constant.character.escape.ssh_config
push:
- meta_content_scope: meta.mapping.value.ssh_config source.embedded.shell
- match: none
scope: constant.language.set.ssh_config
pop: true
- include: scope:source.shell
- include: pop-nl
localcommand:
- match: '^\s*(?i)(localcommand)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.ssh_config keyword.other.ssh_config
2: keyword.operator.assignment.ssh_config
with_prototype:
- match: '%[%CdhilnprTu]'
scope: constant.character.escape.ssh_config
push:
- meta_content_scope: meta.mapping.value.ssh_config source.embedded.shell
- match: none
scope: constant.language.set.ssh_config
pop: true
- include: scope:source.shell
- include: pop-nl
boolean-value:
- match: (?i)\b(yes|no)\b
scope: constant.language.boolean.ssh_config
boolean-option:
- match: |-
(?xi)
^\s*(
(?:Pubkey|HostBased|Password|ChallengeResponse|KbdInteractive|(?:Rhosts)?RSA)Authentication| # Auth
ForwardAgent|ForwardX11(?:Trusted)?|ClearAllForwardings|ExitOnForwardFailure| # Fwds
BatchMode|CheckHostIP|Compression|EnableSSHKeySign|GatewayPorts|HashKnownHosts|
IdentitiesOnly|PermitLocalCommand|NoHostAuthenticationForLocalhost|
TCPKeepAlive|UsePrivilegedPort|VisualHostKey|
GSSAPI(?:Authentication|KeyExchange|DelegateCredentials|RenewalForcesRekey|TrustDNS) # GSSAPI
)\b[ \t]*(=)?
captures:
1: meta.mapping.key.ssh_config keyword.other.ssh_config
2: keyword.operator.assignment.ssh_config
push:
- meta_content_scope: meta.mapping.value.ssh_config
- include: pop-nl
- match: '[ \t]+\S+'
scope: invalid.illegal.ssh_config
- include: boolean-value
- match: (?i)y(es?)?|no?
- match: \S+
scope: invalid.illegal.ssh_config
boolean-option-plus:
# ask
- match: (?i)^\s*(StrictHostKeyChecking|VerifyHostKeyDNS)\b[ \t]*(=)?
captures:
1: meta.mapping.key.ssh_config keyword.other.ssh_config
2: keyword.operator.assignment.ssh_config
push:
- meta_content_scope: meta.mapping.value.ssh_config
- include: pop-nl
- match: '[ \t]+\S+'
scope: invalid.illegal.ssh_config
- include: boolean-value
- match: (?i)\b(ask)\b
scope: constant.language.set.ssh_config
- match: (?i)y(es?)?|no?|a(s?k)?
- match: \S+
scope: invalid.illegal.ssh_config
generic-option:
- match: '^\s*([a-zA-Z1]+)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.ssh_config keyword.other.ssh_config
2: keyword.operator.assignment.ssh_config
push:
- meta_content_scope: meta.mapping.value.ssh_config
- include: boolean-value
- include: tokens
- match: '\d+'
scope: constant.numeric.ssh_config
- match: \"
scope: punctuation.definition.string.begin.ssh_config
push:
- meta_scope: string.quoted.double.ssh_config
- match: \"
scope: punctuation.definition.string.end.ssh_config
pop: true
- match: \n|$
scope: invalid.illegal.ssh_config
pop: true
- include: tokens
- match: \*|\?
scope: constant.language.wildcard.ssh_config
- match: ','
scope: punctuation.separator.sequence.ssh_config
- match: '\S'
scope: string.unquoted.ssh_config
push:
- meta_content_scope: string.unquoted.ssh_config
- include: pop-before-nl
- include: tokens
- match: \*|\?
scope: constant.language.wildcard.ssh_config
- match: '!'
scope: keyword.operator.logical.ssh_config
- match: ','
scope: punctuation.separator.sequence.ssh_config
- include: pop-nl
comments:
- match: '^\s*(#)'
captures:
1: punctuation.definition.comment.ssh_config
push:
- meta_scope: comment.line.number-sign.ssh_config
- include: pop-nl
- match: '^\s*(;)'
captures:
1: punctuation.definition.comment.ssh_config
push:
- meta_scope: comment.line.semi-colon.ssh_config
- include: pop-nl

View File

@ -0,0 +1,184 @@
%YAML 1.2
---
# https://www.sublimetext.com/docs/3/syntax.html
# http://man7.org/linux/man-pages/man5/sshd_config.5.html
name: SSHD Config
file_extensions:
- sshd_config
scope: text.sshd_config
contexts:
main:
- include: comments
- include: match
- include: generic-option
options:
- include: comments
- include: forcecommand
- include: generic-option
tokens:
# http://man7.org/linux/man-pages/man5/sshd_config.5.html#TOKENS
- match: '%[%DFfhiKksTtUu]'
scope: constant.character.escape.sshd_config
pop-nl:
- match: '\n'
pop: true
pop-before-nl:
- match: '(?=\n)'
pop: true
pop-before-match-option:
- include: pop-before-nl
- match: (?i)(?=[ \t]*(all|user|group|host|(?:local)?address|localport)\b)
pop: true
pop-before-next-match:
- match: (?i)(?=^[ \t]*(match)\b)
pop: true
# Match
match:
- match: '(?i)^[ \t]*(match)\b'
captures:
1: meta.block.match.sshd_config keyword.control.conditional.sshd_config
set: match-conditions
match-conditions:
- meta_scope: meta.block.match.sshd_config meta.statement.conditional.sshd_config
- match: (?=\n)
set: match-body
- match: '!'
scope: keyword.operator.logical.sshd_config
- match: (?i)\b(all)\b
scope: constant.language.boolean.sshd_config
- match: (?i)\b(user|group|host)\b
scope: keyword.other.sshd_config
push:
- include: pop-before-match-option
- include: string-patterns
- match: (?i)\b((?:local)?address)\b
scope: keyword.other.sshd_config
push:
- match: '!'
scope: keyword.operator.logical.sshd_config
- match: ','
scope: punctuation.separator.sequence.sshd_config
- match: '\*|\?'
scope: constant.language.wildcard.sshd_config
- include: ip-addresses
- include: pop-before-match-option
- match: (?i)\b(localport)\b
scope: keyword.other.sshd_config
push:
- match: \d+
scope: constant.numeric.integer.decimal.sshd_config
- include: pop-before-match-option
match-body:
- meta_scope: meta.block.match.sshd_config
- include: pop-before-next-match
- include: options
string-patterns:
# http://man7.org/linux/man-pages/man5/sshd_config.5.html#PATTERNS
- match: '[^\s*?!,]+'
scope: string.unquoted.sshd_config
- match: '!'
scope: string.unquoted.sshd_config keyword.operator.logical.sshd_config
- match: ','
scope: string.unquoted.sshd_config punctuation.separator.sequence.sshd_config
- match: '\*|\?'
scope: string.unquoted.sshd_config constant.language.wildcard.sshd_config
ip-addresses:
- match: |-
(?x:
(
((?:\d{1,3}\.){3}\d{1,3})(?:(/)(\d{1,3}))?| # simple IPv4 with CIDR
((?i:[a-f0-9:]+:+)+[a-f0-9]+) # simple IPv6
)
)
captures:
1: meta.string.host.sshd_config
2: constant.numeric.ip4.sshd_config
3: punctuation.separator.sequence.sshd_config
4: constant.other.range.sshd_config
5: constant.numeric.ip6.sshd_config
forcecommand:
- match: '^\s*(?i)(forcecommand)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.sshd_config keyword.other.sshd_config
2: keyword.operator.assignment.sshd_config
push:
- meta_content_scope: meta.mapping.value.sshd_config source.embedded.shell
- match: none
scope: constant.language.set.sshd_config
pop: true
- include: scope:source.shell
- include: pop-nl
generic-option:
- match: '^\s*([a-zA-Z1]+)\b[ \t]*(=)?'
captures:
1: meta.mapping.key.sshd_config keyword.other.sshd_config
2: keyword.operator.assignment.sshd_config
push:
- meta_content_scope: meta.mapping.value.sshd_config
- include: tokens
- match: \"
scope: punctuation.definition.string.begin.sshd_config
push:
- meta_scope: string.quoted.double.sshd_config
- match: \"
scope: punctuation.definition.string.end.sshd_config
pop: true
- match: \n|$
scope: invalid.illegal.sshd_config
pop: true
- include: generic-option-value
- match: '(?=\S)'
push:
- meta_content_scope: string.unquoted.sshd_config
- include: pop-before-nl
- include: generic-option-value
- include: pop-nl
generic-option-value:
- match: '(?i)\b(yes|no)\b'
scope: constant.language.boolean.sshd_config
- match: '(?i)\b(any|none)\b'
scope: constant.language.set.sshd_config
- match: '(?i)\bdefault\b'
scope: constant.language.default.sshd_config
- include: ip-addresses
- include: tokens
- match: \*|\?
scope: constant.language.wildcard.sshd_config
- match: '\d+'
scope: constant.numeric.sshd_config
- match: '!'
scope: keyword.operator.logical.sshd_config
- match: ','
scope: punctuation.separator.sequence.sshd_config
comments:
- match: '^\s*(#)'
captures:
1: punctuation.definition.comment.sshd_config
push:
- meta_scope: comment.line.number-sign.sshd_config
- include: pop-nl
- match: '^\s*(;)'
captures:
1: punctuation.definition.comment.sshd_config
push:
- meta_scope: comment.line.semi-colon.sshd_config
- include: pop-nl

View File

@ -0,0 +1,371 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Swift
file_extensions:
- swift
first_line_match: ^#!/.*\bswift
scope: source.swift
contexts:
main:
- include: shebang-line
- include: comment
- include: attribute
- include: literal
- include: operator
- include: declaration
- include: storage-type
- include: keyword
- include: type
- include: boolean
comment:
- include: documentation-comment
- include: block-comment
- include: in-line-comment
access-level-modifier:
- match: \b(open|public|internal|fileprivate|private)\b(?:\(set\))?
comment: access-level-modifier
scope: keyword.other.access-level-modifier.swift
arithmetic-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+|\-|\*|\/)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.arithmetic.swift
array-type:
- match: \b(Array)(<)
captures:
1: support.type.array.swift
2: punctuation.array.begin.swift
push:
- meta_scope: meta.array.swift
- match: (>)
captures:
1: punctuation.array.end.swift
pop: true
- include: main
assignment-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+|\-|\*|\/|%|<<|>>|&|\^|\||&&|\|\|)?=(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.assignment.swift
attribute:
- match: '((@)(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B))(\()'
captures:
1: storage.modifier.attribute.swift
2: punctuation.definition.attribute.swift
3: punctuation.definition.attribute-arguments.begin.swift
push:
- meta_content_scope: meta.attribute.arguments.swift
- match: \)
captures:
0: punctuation.definition.attribute-arguments.end.swift
pop: true
- include: main
- match: '((@)(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B))'
captures:
1: storage.modifier.attribute.swift
2: punctuation.definition.attribute.swift
bitwise-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(&|\||\^|<<|>>)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.bitwise.swift
block-comment:
- match: /\*
comment: Block comment
captures:
0: punctuation.definition.comment.block.begin.swift
push:
- meta_scope: comment.block.swift
- match: \*/
captures:
0: punctuation.definition.comment.block.end.swift
pop: true
boolean:
- match: \b(true|false)\b
scope: keyword.constant.boolean.swift
branch-statement-keyword:
- include: if-statement-keyword
- include: switch-statement-keyword
catch-statement-keyword:
- match: \b(catch|do)\b
comment: catch-statement
scope: kewyord.control.catch.swift
code-block:
- match: '(\{)'
comment: code-block
captures:
1: punctuation.definition.code-block.begin.swift
push:
- match: '(\})'
captures:
1: punctuation.definition.code-block.end.swift
pop: true
- include: main
collection-type:
- include: array-type
- include: dictionary-type
- match: \b(Array|Dictionary)\b
scope: support.type.swift
comparative-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])((=|!)==?|(<|>)=?|~=)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.comparative.swift
control-transfer-statement-keyword:
- match: \b(continue|break|fallthrough|return)\b
comment: control-transfer-statement
scope: keyword.control.transfer.swift
custom-operator:
- match: '(?<=[\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?![\s)\]},;:])'
scope: keyword.operator.custom.prefix.unary.swift
- match: '(?<![\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?![\s)\]},;:\.])'
scope: keyword.operator.custom.postfix.unary.swift
- match: '(?<=[\s(\[{,;:])([/=\-+!*%<>&|\^~.]++)(?=[\s)\]},;:])'
scope: keyword.operator.custom.binary.swift
declaration:
- include: import-declaration
- include: function-declaration
declaration-modifier:
- match: \b(class|convenience|dynamic|final|lazy|(non)?mutating|optional|override|required|static|unowned((un)?safe)?|weak)\b
comment: declaration-modifier
scope: keyword.other.declaration-modifier.swift
dictionary-type:
- match: \b(Dictionary)(<)
captures:
1: support.type.dictionary.swift
2: punctuation.dictionary.begin.swift
push:
- meta_scope: meta.dictionary.swift
- match: (>)
captures:
1: punctuation.dictionary.end.swift
pop: true
- include: main
documentation-comment:
- match: /\*\*
comment: Documentation comment
captures:
0: punctuation.definition.comment.block.documentation.begin.swift
push:
- meta_scope: comment.block.documentation.swift
- match: \*/
captures:
0: punctuation.definition.comment.block.documentation.end.swift
pop: true
floating-point-literal:
- match: '\b([0-9][0-9_]*)(\.([0-9][0-9_]*))?([eE][+\-]?([0-9][0-9_]*))?\b'
comment: floating-point-literal -> (decimal-literal)(decimal-fraction)?(decimal-exponent)?
- match: '\b(0x\h[\h_]*)(\.(0x\h[\h_]*))?([pP][+\-]?(0x\h[\h_]*))\b'
comment: floating-point-literal -> (hexadecimal-literal)(hexadecimal-fraction)?(hexadecimal-exponent)
function-body:
- include: code-block
function-declaration:
- match: '\b(func)\s+(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+)\s*(?=\(|<)'
comment: function-declaration
captures:
1: storage.type.function.swift
2: entity.type.function.swift
push:
- meta_scope: meta.function-declaration.swift
- match: '(?<=\})'
pop: true
- include: generic-parameter-clause
- include: parameter-clause
- include: function-result
- include: function-body
function-result:
- match: '(?<![/=\-+!*%<>&|\^~.])(\->)(?![/=\-+!*%<>&|\^~.])\s*'
comment: function-result
captures:
1: keyword.operator.function-result.swift
push:
- meta_scope: meta.function-result.swift
- match: '\s*(?=\{)'
pop: true
- include: type
generic-parameter-clause:
- match: (<)
comment: generic-parameter-clause
captures:
1: punctuation.definition.generic-parameter-clause.begin.swift
push:
- meta_scope: meta.generic-parameter-clause.swift
- match: (>)
captures:
1: punctuation.definition.generic-parameter-clause.end.swift
pop: true
- include: main
identifier:
- match: '(\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B)'
comment: identifier
scope: meta.identifier.swift
if-statement-keyword:
- match: \b(if|else)\b
comment: if-statement
scope: keyword.control.if.swift
import-declaration:
- match: '\b(import)\s+(?:(typealias|struct|class|enum|protocol|var|func)\s+)?((?:\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+)(?:\.(?:\B\$[0-9]+|\b[\w^\d][\w\d]*\b|\B`[\w^\d][\w\d]*`\B|[/=\-+!*%<>&|\^~.]+))*)'
comment: import-declaration
scope: meta.import.swift
captures:
1: keyword.other.import.swift
2: storage.modifier.swift
3: support.type.module.import.swift
in-line-comment:
- match: (//).*
comment: In-line comment
scope: comment.line.double-slash.swift
captures:
1: punctuation.definition.comment.line.double-slash.swift
increment-decrement-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(\+\+|\-\-)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.increment-or-decrement.swift
integer-literal:
- match: '(\B\-|\b)(0b[01][01_]*)\b'
comment: binary-literal
scope: constant.numeric.integer.binary.swift
- match: '(\B\-|\b)(0o[0-7][0-7_]*)\b'
comment: octal-literal
scope: constant.numeric.integer.octal.swift
- match: '(\B\-|\b)([0-9][0-9_]*)\b'
comment: decimal-literal
scope: constant.numeric.integer.decimal.swift
- match: '(\B\-|\b)(0x\h[\h_]*)\b'
comment: hexadecimal-literal
scope: constant.numeric.integer.hexadecimal.swift
integer-type:
- match: \bU?Int(8|16|32|64)?\b
comment: Int types
scope: support.type.swift
keyword:
- include: branch-statement-keyword
- include: control-transfer-statement-keyword
- include: loop-statement-keyword
- include: catch-statement-keyword
- include: operator-declaration-modifier
- include: declaration-modifier
- include: access-level-modifier
- match: \b(class|deinit|enum|extension|func|import|init|let|protocol|static|struct|subscript|typealias|var|throws|rethrows)\b
comment: declaration keyword
scope: keyword.declaration.swift
- match: \b(break|case|continue|default|do|else|fallthrough|if|in|for|return|switch|where|while|repeat|catch|guard|defer|try|throw)\b
comment: statement keyword
scope: keyword.statement.swift
- match: \b(as|dynamicType|is|new|super|self|Self|Type)\b
comment: expression and type keyword
scope: keyword.other.statement.swift
- match: \b(associativity|didSet|get|infix|inout|left|mutating|none|nonmutating|operator|override|postfix|precedence|prefix|right|set|unowned((un)?safe)?|weak|willSet)\b
comment: other keyword
scope: keyword.other.swift
literal:
- include: integer-literal
- include: floating-point-literal
- include: nil-literal
- include: string-literal
- include: special-literal
logical-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])(!|&&|\|\|)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.logical.swift
loop-statement-keyword:
- match: \b(while|repeat|for|in)\b
comment: loop-statement
scope: keyword.control.loop.swift
nil-literal:
- match: \bnil\b
comment: nil-literal
scope: constant.nil.swift
operator:
- include: comparative-operator
- include: assignment-operator
- include: logical-operator
- include: remainder-operator
- include: increment-decrement-operator
- include: overflow-operator
- include: range-operator
- include: bitwise-operator
- include: arithmetic-operator
- include: ternary-operator
- include: type-casting-operator
- include: custom-operator
operator-declaration-modifier:
- match: \b(operator|prefix|infix|postfix)\b
comment: operator-declaration
scope: keyword.other.operator.swift
optional-type:
- match: \b(Optional)(<)
scope: meta.optional.swift
overflow-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\&(\+|\-|\*|\/|%)(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.overflow.swift
parameter-clause:
- match: (\()
comment: parameter-clause
captures:
1: punctuation.definition.function-arguments.begin.swift
push:
- meta_scope: meta.parameter-clause.swift
- match: (\))
captures:
1: punctuation.definition.function-arguments.end.swift
pop: true
- include: main
primitive-type:
- match: \b(Int|Float|Double|String|Bool|Character|Void)\b
comment: Primitive types
scope: support.type.swift
protocol-composition-type:
- match: \b(protocol)(<)
scope: meta.protocol.swift
range-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\.\.(?:\.)?(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.range.swift
remainder-operator:
- match: '(?<![/=\-+!*%<>&|\^~.])\%(?![/=\-+!*%<>&|\^~.])'
scope: keyword.operator.remainder.swift
shebang-line:
- match: ^(#!).*$
comment: Shebang line
scope: comment.line.shebang.swift
captures:
1: punctuation.definition.comment.line.shebang.swift
special-literal:
- match: \b__(FILE|LINE|COLUMN|FUNCTION)__\b
scope: keyword.other.literal.swift
storage-type:
- match: \b(var|func|let|class|enum|struct|protocol|extension|typealias)\b
scope: storage.type.swift
string-literal:
- match: \"
captures:
0: string.quoted.double.swift
push:
- meta_scope: meta.literal.string.swift
- match: \"
captures:
0: string.quoted.double.swift
pop: true
- match: '\\([0tnr\"\''\\]|x\h{2}|u\h{4}|U\h{8})'
scope: constant.character.escape.swift
- match: (\\\()
captures:
1: support.punctuation.expression.begin.swift
push:
- meta_content_scope: meta.expression.swift
- match: (\))
captures:
1: support.punctuation.expression.end.swift
pop: true
- include: scope:source.swift
- match: (\"|\\)
scope: invalid.illegal.swift
- match: (.)
scope: string.quoted.double.swift
switch-statement-keyword:
- match: \b(switch|case|default|where)\b
comment: switch-statement
scope: keyword.control.switch.swift
ternary-operator:
- match: '(?<=[\s(\[{,;:])(\?|:)(?=[\s)\]},;:])'
scope: keyword.operator.ternary.swift
type:
- include: primitive-type
- include: integer-type
- include: collection-type
- include: optional-type
- include: protocol-composition-type
type-casting-operator:
- match: \b(is\b|as(\?\B|\b))
scope: keyword.operator.type-casting.swift

View File

@ -0,0 +1,401 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: TOML
file_extensions:
- toml
- tml
- Cargo.lock
- Gopkg.lock
- Pipfile
scope: source.toml
variables:
ws: '[ \t]*'
wsnl: '([ \t\n])*'
# Used to detect the possible start of a key.
peek_key_start: '(?=[A-Za-z0-9_''"-])'
dot_peek_key: '{{ws}}(\.){{ws}}{{peek_key_start}}'
# integer = [ "-" / "+" ] int
# int = DIGIT / digit1-9 1*( DIGIT / "_" DIGIT )
integer: '([\+\-]?) (?: [0-9] | [1-9] (?: [0-9] | _ [0-9] )+ )'
HEXDIG: '[0-9A-Fa-f]'
hex_int: '0x{{HEXDIG}}(?:{{HEXDIG}}|_{{HEXDIG}})*'
oct_int: '0o[0-7](?:[0-7]|_[0-7])*'
bin_int: '0b[0-1](?:[0-1]|_[0-1])*'
# frac = "." DIGIT *( DIGIT / "_" DIGIT )
frac: '\. [0-9] (?: [0-9] | _ [0-9] )*'
# exp = ("e" / "E") integer
exp: '[eE] {{integer}}'
# date-time = offset-date-time / local-date-time / local-date / local-time
date_time: '{{offset_date_time}} | {{local_date_time}} | {{local_date}} | {{local_time}}'
# date-fullyear = 4DIGIT
date_fullyear: '[0-9]{4}'
# date-month = 2DIGIT ; 01-12
date_month: '[0-1][0-9]'
# date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
date_mday: '[0-3][0-9]'
# time-hour = 2DIGIT ; 00-23
time_hour: '[0-2][0-9]'
# time-minute = 2DIGIT ; 00-59
time_minute: '[0-5][0-9]'
# time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second rules
time_second: '[0-6][0-9]'
# time-secfrac = "." 1*DIGIT
time_secfrac: '\.[0-9]+'
# time-numoffset = ( "+" / "-" ) time-hour ":" time-minute
time_numoffset: '[+-] {{time_hour}} : {{time_minute}}'
# time-offset = "Z" / time-numoffset
time_offset: '(?: Z | {{time_numoffset}} )'
# partial-time = time-hour ":" time-minute ":" time-second [time-secfrac]
partial_time: '{{time_hour}} : {{time_minute}} : {{time_second}} (?: {{time_secfrac}} )?'
# full-date = date-fullyear "-" date-month "-" date-mday
full_date: '{{date_fullyear}} - {{date_month}} - {{date_mday}}'
# full-time = partial-time time-offset
full_time: '{{partial_time}} {{time_offset}}'
# offset-date-time = full-date T|%20 full-time
offset_date_time: '{{full_date}} [T ] {{full_time}}'
# local-date-time = full-date T|%20 partial-time
local_date_time: '{{full_date}} [T ] {{partial_time}}'
# local-date = full-date
local_date: '{{full_date}}'
# local-time = partial-time
local_time: '{{partial_time}}'
contexts:
main:
- match: '^{{ws}}'
# Ignore leading whitespace for all expressions.
- include: comments
- include: tables
- include: keyval
- include: illegal
illegal:
- match: (.*)
# Invalid things -> everything unmatched
captures:
1: invalid.illegal.toml
comments:
- match: '{{ws}}((#).*)'
captures:
1: comment.line.number-sign.toml
2: punctuation.definition.comment.toml
data-types:
- include: inline-table
- include: array
- include: string
- include: date-time
- include: float
- include: integer
- include: boolean
- match: '{{ws}}$'
# Don't show an incomplete line as invalid to avoid frequent red
# highlighting while typing.
pop: true
- match: '\w+|.'
scope: invalid.illegal.value.toml
pop: true
boolean:
- match: (true|false)
captures:
1: constant.language.toml
pop: true
integer:
- match: |-
(?x)
(?<!\w)
{{hex_int}}
|{{oct_int}}
|{{bin_int}}
|{{integer}}
(?!\w)
captures:
0: constant.numeric.integer.toml
1: keyword.operator.arithmetic.toml
pop: true
float:
# float = integer ( frac / ( frac exp ) / exp )
# frac = "." DIGIT *( DIGIT / "_" DIGIT )
# exp = ("e" / "E") integer
- match: |-
(?x)
(?<!\w)
{{integer}}
(?: {{frac}} | (?: {{frac}} {{exp}} ) | {{exp}} )
(?!\w)
captures:
0: constant.numeric.float.toml
1: keyword.operator.arithmetic.toml
pop: true
- match: '(?<!\w)([+-])?(inf|nan)(?!\w)'
captures:
0: constant.numeric.float.toml
1: keyword.operator.arithmetic.toml
pop: true
date-time:
- match: '(?x) {{date_time}}'
scope: constant.other.datetime.toml
pop: true
string:
- match: "'''"
# multi-line literal string (no escape sequences)
scope: punctuation.definition.string.begin.toml
set:
- meta_scope: string.quoted.triple.literal.block.toml
- match: "'''"
scope: punctuation.definition.string.end.toml
pop: true
- match: '"""'
# multi-line basic string
scope: punctuation.definition.string.begin.toml
set:
- meta_scope: string.quoted.triple.basic.block.toml
- match: '"""'
scope: punctuation.definition.string.end.toml
pop: true
- include: string-escape
- include: basic-string
- include: literal-string
basic-string:
- match: '"'
scope: punctuation.definition.string.begin.toml
set:
- meta_scope: string.quoted.double.basic.toml
- include: string-escape
- match: '"'
scope: punctuation.definition.string.end.toml
pop: true
- match: '\n'
scope: invalid.illegal.string.non-terminated.toml
pop: true
string-escape:
- match: '\\(?:[btnfr"\\]|u\h{4}|U\h{8})'
scope: constant.character.escape.toml
- match: '\\.'
scope: invalid.illegal.string.escape.toml
literal-string:
- match: '('')[^'']*('')'
# There is ambiguity in what is allowed in a literal string.
# See: https://github.com/toml-lang/toml/issues/473
scope: string.quoted.single.literal.toml
captures:
1: punctuation.definition.string.begin.toml
2: punctuation.definition.string.end.toml
pop: true
array:
- match: '\['
scope: punctuation.definition.array.begin.toml
set: [maybe-empty-array, maybe-array-comments]
maybe-empty-array:
- match: ']'
scope: punctuation.definition.array.end.toml
pop: true
- match: ''
set: [array-sep, data-types]
array-sep:
- match: '{{wsnl}}'
- include: comments
- match: ']'
scope: punctuation.definition.array.end.toml
pop: true
- match: ','
scope: punctuation.separator.array.toml
set:
- match: '{{wsnl}}'
- include: comments
- match: ']'
scope: punctuation.definition.array.end.toml
pop: true
- match: '(?=[^\n])'
set: [array-sep, data-types]
- match: '\w+|.'
scope: invalid.illegal.array.toml
maybe-array-comments:
- match: '{{wsnl}}'
- include: comments
- match: '(?=[^\n])'
pop: true
inline-table:
- match: '\{'
scope: punctuation.definition.inline-table.begin.toml
set:
- match: '{{ws}}'
- match: '\}'
# Empty table.
scope: punctuation.definition.inline-table.end.toml
pop: true
- match: ''
set: [inline-keyval-sep, key]
inline-keyval-sep:
- match: '{{ws}}(=){{ws}}'
captures:
1: punctuation.definition.key-value.toml
set: [inline-table-keyvals, data-types]
- match: '(?=\w+|.)'
scope: invalid.illegal.inline-sep.toml
pop: true
inline-table-keyvals:
- match: '{{ws}}'
- match: '\}'
scope: punctuation.definition.inline-table.end.toml
pop: true
- match: ','
scope: punctuation.separator.inline-table.toml
set:
- match: '{{ws}}'
- match: ''
set: [inline-keyval-sep, key]
- match: '(?=\w+|.)'
scope: invalid.illegal.inline-key.toml
pop: true
keyval:
- match: '{{peek_key_start}}'
push: [keyval-sep, key]
keyval-sep:
- match: '{{ws}}(=){{ws}}'
captures:
# This could arguably be keyword.operator.assignment.toml, but since
# Monokai uses the same color for non-C sources with entity.name.tag,
# it doesn't have the appropriate visual distinction.
1: punctuation.definition.key-value.toml
set: [maybe-comment-eol, data-types]
- match: '{{ws}}$'
# Don't show an incomplete line as invalid to avoid flickering.
pop: true
- match: '.+$'
scope: invalid.illegal.keyval.toml
pop: true
key:
- meta_scope: meta.tag.key.toml
- match: '{{peek_key_start}}'
push: [maybe-dot-key, key-simple]
- match: '(?={{ws}}=)'
pop: true
- match: '{{ws}}$'
# Early exit to avoid errors while typing.
pop: true
- match: '.'
scope: invalid.illegal.key.toml
pop: true
key-simple:
- match: '[A-Za-z0-9_-]+'
scope: entity.name.tag.toml
pop: true
- include: key-quoted
- match: '\S+'
scope: invalid.illegal.key.toml
pop: true
key-quoted:
- include: basic-string
- include: literal-string
maybe-dot-key:
- match: '{{dot_peek_key}}'
captures:
1: punctuation.separator.key.toml
push: key-simple
- match: '(?={{ws}}(?:=|$))'
pop: true
- match: '.'
scope: invalid.illegal.key.toml
pop: true
maybe-comment-eol:
- include: comments
- match: '$'
pop: true
- match: '.+'
# This also highlights trailing whitespece. Although that is valid
# TOML, it doesn't seem bad to me. If that's annoying, change this
# to '[^ \n]+'.
scope: invalid.illegal.trailing.toml
pop: true
tables:
- match: '\[?\[{{ws}}\]\]?'
scope: invalid.illegal.table.toml
- match: '(\[\[){{ws}}'
# Array table. Same as std-table with double-brackets.
captures:
1: punctuation.definition.table.array.begin.toml
push: [maybe-comment-eol, table-array-name]
- match: '(\[){{ws}}'
# std-table = ws "[" ws key (ws "." ws key)* ws "]" ws comment?
captures:
1: punctuation.definition.table.begin.toml
push: [maybe-comment-eol, table-name]
table-name:
- meta_content_scope: meta.tag.table.toml
- match: '{{ws}}(\])'
captures:
1: punctuation.definition.table.end.toml
pop: true
- include: table-name-inc
table-array-name:
- meta_content_scope: meta.tag.table.array.toml
- match: '{{ws}}(\]\])'
captures:
1: punctuation.definition.table.array.end.toml
pop: true
- include: table-name-inc
table-name-inc:
- match: '{{peek_key_start}}'
push: [maybe-dot-table-name, table-name-simple]
- match: '[^\]]+\]?'
scope: invalid.illegal.table.toml
pop: true
table-name-simple:
- match: '[A-Za-z0-9_-]+'
scope: entity.name.table.toml
pop: true
- include: key-quoted
- match: '.'
scope: invalid.illegal.table.toml
pop: true
maybe-dot-table-name:
- match: '{{dot_peek_key}}'
captures:
1: punctuation.separator.table.toml
push: table-name-simple
- match: '(?={{ws}}(?:\]|$))'
pop: true
- match: '.'
scope: invalid.illegal.table.toml
pop: true

View File

@ -0,0 +1,133 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Terraform
file_extensions:
- tf
- tfvars
- hcl
scope: source.terraform
contexts:
main:
- match: "#|//"
comment: Comments
captures:
0: punctuation.definition.comment.terraform
push:
- meta_scope: comment.line.number-sign.terraform
- match: $\n?
captures:
0: punctuation.definition.comment.terraform
pop: true
- match: /\*
comment: Block comments
captures:
0: punctuation.definition.comment.terraform
push:
- meta_scope: comment.block.terraform
- match: \*/
captures:
0: punctuation.definition.comment.terraform
pop: true
- match: \b(true|false|yes|no|on|off)\b
comment: Language constants (true, false, yes, no, on, off)
scope: constant.language.terraform
- match: '\b([0-9]+)([kKmMgG]b?)?\b'
comment: Numbers
scope: constant.numeric.terraform
- match: '\b(0x[0-9A-Fa-f]+)([kKmMgG]b?)?\b'
comment: Hex numbers
scope: constant.numeric.terraform
- match: '(resource|data)\s+(")?(\w+)(")?\s+(")?([\w\-]+)(")?\s+({)'
scope: meta.resource.terraform
captures:
1: storage.type.function.terraform
2: string.terraform punctuation.definition.string.begin.terraform
3: string.value.terraform
4: string.terraform punctuation.definition.string.end.terraform
5: string.terraform punctuation.definition.string.begin.terraform
6: string.value.terraform
7: string.terraform punctuation.definition.string.end.terraform
8: punctuation.definition.tag.terraform
- match: '(provider|provisioner|variable|output|module|atlas)\s+(")?([\w\-]+)(")?\s+({)'
captures:
1: storage.type.function.terraform
2: string.terraform punctuation.definition.string.begin.terraform
3: string.value.terraform
4: string.terraform punctuation.definition.string.end.terraform
5: punctuation.definition.tag.terraform
- match: '([\w_-]+)\s*(=)\s*'
comment: Value assignments (left hand side not in double quotes)
captures:
1: variable.other.assignment.terraform
2: keyword.operator.terraform
- match: '(")([\w_-]+)(")\s*(=)\s*'
comment: Value assignments (left hand side in double quotes)
captures:
1: punctuation.quote.double.terraform
2: variable.assignment.terraform
3: punctuation.quote.double.terraform
4: keyword.operator.terraform
- match: '([\w\-_]+)\s+({)'
comment: Maps
captures:
1: entity.name.section.terraform
2: punctuation.definition.tag.terraform
- include: strings
- match: (?>\s*<<(\w+))
captures:
0: punctuation.definition.string.begin.terraform
1: keyword.operator.heredoc.terraform
push:
- meta_scope: string.unquoted.heredoc.terraform
- match: ^\s*\1$
captures:
0: punctuation.definition.string.end.terraform keyword.operator.heredoc.terraform
pop: true
string_interpolation:
- match: '\$\{'
captures:
0: entity.tag.embedded.start.terraform
push:
- meta_scope: source.terraform.embedded.source
- match: '\}'
captures:
0: entity.tag.embedded.end.terraform
pop: true
- include: main
- include: string_interpolation_functions
- include: string_interpolation_keywords
- match: (\.)
captures:
0: keyword.control.period.terraform
- include: strings
string_interpolation_functions:
- match: (base64decode|base64encode|base64gzip|base64sha256|base64sha512|basename|bcrypt|ceil|chomp|cidrhost|cidrnetmask|cidrsubnet|coalesce|coalescelist|compact|concat|contains|dirname|distinct|element|file|flatten|floor|format|formatlist|index|join|jsonencode|keys|length|list|log|lookup|lower|map|matchkeys|max|md5|merge|min|pathexpand|pow|replace|sha1|sha256|sha512|signum|slice|sort|split|substr|timestamp|title|trimspace|upper|urlencode|uuid|values|zipmap)(\()
comment: Builtin functions
captures:
1: keyword.other.function.inline.terraform
2: keyword.other.section.begin.terraform
push:
- match: (\))
captures:
1: keyword.other.section.end.terraform
pop: true
- include: string_interpolation_functions
- include: string_interpolation_keywords
string_interpolation_keywords:
- match: '(terraform|var|self|count|module|path|data|local)(\.[\w\*]+)+'
captures:
0: entity.other.attribute-name.terraform
strings:
- match: \"
comment: Strings
captures:
0: string.terraform punctuation.definition.string.begin.terraform
push:
- match: \"
captures:
0: string.terraform punctuation.definition.string.end.terraform
pop: true
- include: string_interpolation
- match: '([\w\-\/\._\\%]+)'
scope: string.quoted.double.terraform

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,91 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: VimL
file_extensions:
- vim
- .vimrc
scope: source.viml
contexts:
main:
- include: comment
- include: string_quoted_double
- include: string_quoted_single
- include: string_regex
- include: inline_comment
- include: number_int
- include: number_hex
- include: keyword
- include: support_function
- include: support_variable
- include: support_type
- include: function_params
- include: function_definition
- include: function_call
- include: function
- include: variable
- include: expr
comment:
- match: ^\s*".*$
scope: comment.line.quotes.viml
captures:
1: punctuation.definition.comment.vim
expr:
- match: (\|\||&&|==(\?|#)?|(!|>|<)=(#|\?)?|(=|!)~(#|\?)?|(>|<)(#|\?)is|isnot|\.|\*|\\|%)
scope: storage.function.viml
function:
- match: \b(fu(n|nction)?|end(f|fu|fun|function)?)\b
scope: storage.function.viml
function_call:
- match: '(([sgbwtl]|)?:?[0-9a-zA-Z_#]+)(?=\()'
scope: support.function.any-method
function_definition:
- match: '^\s*(function)\s*!?\s+(?=(s:)?[0-9a-zA-Z_#]+\s*\()'
captures:
1: storage.function.viml
push:
- meta_scope: meta.function.viml
- match: (\()
captures:
1: punctuation.definition.parameters.begin.viml
pop: true
- match: "(s:)?[0-9a-zA-Z_#]+"
scope: entity.name.function.viml
function_params:
- match: '-\w+='
scope: support.type.viml
inline_comment:
- match: '(?!\$)(")(?!\{).*$\n?'
scope: comment.line.quotes.viml
captures:
1: punctuation.definition.comment.vim
keyword:
- match: \b(if|while|for|try|return|throw|end(if|for|while|try)?|au(g|group)|else(if|)?|do|in|catch|finally|:)\b
scope: keyword.control.viml
number_hex:
- match: "0x[0-9a-f]+"
scope: constant.numeric.hex
number_int:
- match: '-?\d+'
scope: constant.numeric.integer
string_quoted_double:
- match: '"(\\\\|\\"|\n[^\S\n]*\\|[^\n"])*"'
scope: string.quoted.double.viml
string_quoted_single:
- match: '''(''''|\n[^\S\n]*\\|[^\n''])*'''
scope: string.quoted.single.viml
string_regex:
- match: '/(\\\\|\\/|\n[^\S\n]*\\|[^\n/])*/'
scope: string.regexp.viml
support_function:
- match: \b(set(local|global)?|let|command|filetype|colorscheme|\w*map|\w*a(b|brev)?|syn|exe(c|cute)?|ec(ho|)?|au(tocmd|)?)\b
scope: support.function.viml
support_type:
- match: <.*?>
scope: support.type.viml
support_variable:
- match: '\b(am(enu|)?|(hl|inc)?search|[Bb]uf([Nn]ew[Ff]ile|[Rr]ead)?|[Ff]ile[Tt]ype)\b'
scope: support.variable.viml
variable:
- match: '([sSgGbBwWlLaAvV]:|@|$|&(?!&))\w*'
scope: variable.other.viml

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,122 @@
%YAML 1.2
---
name: jsonnet
file_extensions: [jsonnet, libsonnet, libjsonnet]
scope: source.jsonnet
contexts:
main:
- match: \b(\d+([Ee][+-]?\d+)?)\b
scope: constant.numeric.jsonnet
- match: \b\d+[.]\d*([Ee][+-]?\d+)?\b
scope: constant.numeric.jsonnet
- match: \b[.]\d+([Ee][+-]?\d+)?\b
scope: constant.numeric.jsonnet
- match: \bstd[.](abs|acos|asciiLower|asciiUpper|asin|assertEqual|atan|base64|base64Decode|base64DecodeBytes)\b
scope: support.function.jsonnet
- match: \bstd[.](ceil|char|codepoint|cos|count|endsWith)\b
scope: support.function.jsonnet
- match: \bstd[.](escapeStringBash|escapeStringDollars|escapeStringJson|escapeStringPython)\b
scope: support.function.jsonnet
- match: \bstd[.](exp|exponent|extVar|filter|filterMap|flattenArrays|floor|foldl|foldr|format)\b
scope: support.function.jsonnet
- match: \bstd[.](isArray|isBoolean|isFunction|isNumber|isObject|isString|join|length|lines|log|makeArray)\b
scope: support.function.jsonnet
- match: \bstd[.](manifestIni|manifestJsonEx|manifestPython|manifestPythonVars|manifestXmlJsonml|manifestYamlDoc|manifestYamlStream)\b
scope: support.function.jsonnet
- match: \bstd[.](mantissa|map|mapWithIndex|mapWithKey|max|md5|mergePatch|min|mod)\b
scope: support.function.jsonnet
- match: \bstd[.](objectFields|objectFieldsAll|objectHas|objectHasAll|parseInt|pow|prune|range)\b
scope: support.function.jsonnet
- match: \bstd[.](set|setDiff|setInter|setMember|setUnion|sign|sin|sort|split|splitLimit|sqrt)\b
scope: support.function.jsonnet
- match: \bstd[.](startsWith|stringChars|strReplace|substr|tan|toString|type|uniq)\b
scope: support.function.jsonnet
- match: \bstd[.](native|thisFile)\b
scope: support.function.jsonnet
- match: \b[$]\b
scope: variable.language.jsonnet
- match: \b[a-zA-Z_][a-z0-9A-Z_]*\s*(\([^)]*\))?\s*\+?::?:?
scope: entity.name.function.jsonnet
- match: \b(import|importstr)\b
scope: storage.type.jsonnet
- match: \b(function)\b
scope: keyword.other.jsonnet
- match: \b(self|super)\b
scope: variable.language.jsonnet
- match: \b(if|then|else|for|in)\b
scope: keyword.control.jsonnet
- match: \b(local|tailstrict)\b
scope: keyword.other.jsonnet
- match: \b(true|false|null)\b
scope: constant.language.jsonnet
- match: \b(error|assert)\b
scope: keyword.control.jsonnet
- match: //.*$
scope: comment.line.jsonnet
- match: '#.*$'
scope: comment.block.jsonnet
- match: /\*
push: comment
- match: \|\|\|
push: unquoted
- match: '"'
push: string
- match: "\'"
push: single_string
comment:
- meta_scope: comment.block.jsonnet
- match: \*/
pop: true
unquoted:
- meta_scope: string.unquoted.block.jsonnet
- match: \|\|\|
pop: true
string:
- meta_scope: string.double.jsonnet
- match: '"'
pop: true
- match: \\(["\\/bfnrt]|(u[0-9a-fA-F]{4}))
scope: constant.character.escape.jsonnet
- match: \\[^"\\/bfnrtu]
scope: invalid.illegal.jsonnet
single_string:
- meta_scope: string.double.jsonnet
- match: "\'"
pop: true
- match: \\(["\\/bfnrt]|(u[0-9a-fA-F]{4}))
scope: constant.character.escape.jsonnet
- match: \\[^"\\/bfnrtu]
scope: invalid.illegal.jsonnet

View File

@ -0,0 +1,387 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: PureScript
file_extensions:
- purs
scope: source.purescript
contexts:
main:
- match: ^\s*\b(module)\b
captures:
1: keyword.other.purescript
push:
- meta_scope: meta.section.module.purescript
- match: \b(where)\b
captures:
1: keyword.other.purescript
pop: true
- include: module-name
- match: \b(import)\b
captures:
1: keyword.other.purescript
push:
- meta_scope: keyword.control.import.purescript
- match: '([A-Za-z0-9.]*)\s*'
captures:
1: support.other.module.purescript
- match: \(
push:
- match: ',?\s*([A-Z][\w'']*)\s*(?:\(([A-Z][\w\s,'']*|..)\))?'
captures:
1: entity.name.type.purescript
2: entity.name.function.constructor.purescript
- match: ',?\s?class\s+([A-Z][\w'']*)'
captures:
1: entity.name.typeclass.purescript
- match: ',?\s?([\w'']*)'
captures:
1: entity.name.function
- match: \)
pop: true
- match: '(as)\s+([A-Z][\w'']*)'
captures:
1: keyword.control.import.as
2: support.other.module.purescript
- match: '(hiding)\s+\((?:,?\s?([A-Z][\w'']*))+\)'
meta_scope: meta.section.module.purescript
captures:
1: keyword.control.import.hiding.purescript
- match: $
pop: true
- include: module-name
- match: ^\s*\b(class)\b
captures:
1: keyword.other.purescript
push:
- meta_scope: meta.declaration.typeclass.purescript
- match: \b(where)\b|$
captures:
1: keyword.other.purescript
pop: true
- match: '([A-Z][\w.'']*)'
scope: entity.other.inherited-class.purescript
- include: generic-tyvar
- match: ^\s*\b(instance)\b
captures:
1: keyword.other.purescript
push:
- meta_scope: meta.declaration.instance.purescript
- match: \b(where)\b|$
captures:
1: keyword.other.purescript
pop: true
- include: type-signature
- match: '^\s*([a-z_][\w\d\'']*|\(.+\))\s*(::)'
captures:
1: entity.name.function.purescript
2: keyword.operator.has-type.purescript
push:
- meta_scope: meta.declaration.function.purescript
- match: $
pop: true
- include: type-signature
- match: \s*(foreign)\s+(import)\s+(data)\s+(.+?)\s+(::)
scope: meta.declaration.ffi.data.purescript
captures:
1: keyword.other.purescript
2: keyword.other.purescript
3: keyword.other.purescript
4: entity.name.function.ffi.purescript
- match: \s*(foreign)\s+(import)\s+(.+?)\s+
captures:
1: keyword.other.purescript
2: keyword.other.purescript
3: entity.name.function.ffi.purescript
push:
- meta_scope: meta.declaration.ffi.function.purescript
- match: \s*(::)(.+?)
captures:
1: keyword.operator.has-type.purescript
pop: true
- include: ffi
- include: comments
- include: reserveds
- include: constants
- include: numbers
- include: strings
- include: operator
- include: monoid
- include: prelude
- include: array
- include: eff
- include: either
- include: enum
- include: error
- include: global
- include: ioref
- include: maybe
- include: monad
- include: random
- include: regex
- include: st
- include: string
- include: trace
- include: tuple
- include: data
array:
- include: array-op
- include: array-constant
array-op:
- match: (:)
scope: keyword.operator.array.purescript
array-constant:
- match: \[\]
scope: constant.other.purescript
comments:
- match: \-\-.*
scope: comment.line.purescript
- match: '\{\-'
push:
- meta_scope: comment.block.purescript
- match: '\-\}'
pop: true
constants:
- match: \b(true|false)\b
scope: constant.language.purescript
data:
- match: '\b([A-Z]\w*)\b'
scope: constant.other.purescript
decl-ctor:
- match: '\s*([A-Z][\w\.]*?)\s+([A-Z][\w\.]*)\s*'
captures:
1: storage.type.purescript
2: constant.other.purescript
eff:
- include: eff-data
eff-data:
- match: \b(Effect)\b
scope: support.function.data.eff.purescript
either:
- include: either-data
- include: either-function
either-data:
- match: \b(Left|Right)\b
scope: support.function.data.either.purescript
either-function:
- match: \b(either)\b
scope: support.function.either.purescript
enum:
- include: enum-function
- include: enum-typeclass
enum-function:
- match: \b(fromEnum|toEnum)\b
scope: support.function.enum.purescript
enum-typeclass:
- match: \b(Enum)\b
scope: storage.type.enum.purescript
error:
- include: error-function
error-function:
- match: \b(catchError|throwError)\b
scope: support.function.error.purescript
ffi:
- match: '"'
push:
- match: '"'
pop: true
- include: scope:source.js
generic-tyvar:
- match: '\b([a-z][\w'']*)\b'
scope: variable.other.purescript
global:
- include: global-constant
- include: global-function
global-constant:
- match: \b(infinity|nan)\b
scope: constant.support.global.purescript
global-function:
- match: \b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|isFinite|isNaN|parseFloat|parseInt|toExponential|toFixed|toPrecision)\b
scope: support.function.global.purescript
ioref:
- include: ioref-data
- include: ioref-function
ioref-data:
- match: \b(IORef|Ref)\b
scope: support.function.data.ioref.purescript
ioref-function:
- match: \b(modifyIORef|newIORef|readIORef|unsafeRunIORef|writeIORef)\b
scope: support.function.ioref.purescript
maybe:
- include: maybe-data
- include: maybe-function
maybe-data:
- match: \b(Just|Nothing)\b
scope: support.function.data.maybe.purescript
maybe-function:
- match: \b(maybe|fromMaybe)\b
scope: support.function.maybe.purescript
module-name:
- match: '([A-Za-z][\w\.'']*)'
scope: support.other.module.purescript
monad:
- include: monad-function
monad-function:
- match: \b(replicateM|mapM|sequence|join|foldM|when)\b
scope: support.function.monad.purescript
monoid:
- include: monoid-function
- include: monoid-typeclass
monoid-function:
- match: \b(mconcat|mempty)\b
scope: support.function.monoid.purescript
monoid-typeclass:
- match: \b(Monoid)\b
scope: storage.type.monoid.purescript
numbers:
- match: \b([0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\b
scope: constant.numeric.purescript
- match: \b([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\b
scope: constant.numeric.float.purescript
operator:
- match: '[|!%$#?~+:\-.=</>\\]+'
comment: In case this regex seems overly general, note that Purescript permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.
scope: keyword.operator.purescript
prelude:
- include: prelude-data
- include: prelude-function
prelude-data:
- match: \b(Ref)\b
scope: support.function.data.prelude.purescript
prelude-function:
- match: \b(const|flip)\b
scope: support.function.prelude.purescript
- include: prelude-function-alternative
- include: prelude-function-applicative
- include: prelude-function-bits
- include: prelude-function-boollike
- include: prelude-function-category
- include: prelude-function-monad
- include: prelude-function-num
- include: prelude-function-ord
- include: prelude-function-read
- include: prelude-function-ref
- include: prelude-function-show
prelude-function-alternative:
- match: \b(empty)\b
scope: support.function.prelude.alternative.purescript
prelude-function-applicative:
- match: \b(pure)\b
scope: support.function.prelude.applicative.purescript
prelude-function-bits:
- match: \b(complement|shl|shr|numAnd|numComplement|numOr|numShl|numShr|numXor|numZshr|zshr)\b
scope: support.function.prelude.bits.purescript
prelude-function-boollike:
- match: \b(boolAnd|boolNot|boolOr|not)\b
scope: support.function.prelude.boollike.purescript
prelude-function-category:
- match: \b(identity)\b
scope: support.function.prelude.category.purescript
prelude-function-monad:
- match: \b(return)\b
scope: support.function.prelude.monad.purescript
prelude-function-num:
- match: \b(negate|numAdd|numDiv|numMod|numMul|numNegate|numSub)\b
scope: support.function.prelude.num.purescript
prelude-function-ord:
- match: \b(numLess|numLessEq|numGreater|numGreaterEq)\b
scope: support.function.prelude.ord.purescript
prelude-function-read:
- match: \b(read|readNumber)\b
scope: support.function.prelude.read.purescript
prelude-function-ref:
- match: \b(liftRef|refEq|refIneq|unsafeRefEq|unsafeRefIneq)\b
scope: support.function.prelude.ref.purescript
prelude-function-show:
- match: \b(show|showNumber)\b
scope: support.function.prelude.show.purescript
random:
- include: random-data
- include: random-function
random-data:
- match: \b(Random)\b
scope: support.function.data.random.purescript
random-function:
- match: \b(random)\b
scope: support.function.random.purescript
regex:
- include: regex-data
- include: regex-function
regex-data:
- match: \b(Regex)\b
scope: support.function.data.regex.purescript
regex-function:
- match: \b(match|regex|replaceR|search|test)\b
scope: support.function.regex.purescript
reserveds:
- include: reserveds-control
- include: reserveds-other
reserveds-control:
- match: \b(case|do|else|if|in|let|of|then)\b
scope: keyword.control.purescript
reserveds-other:
- match: \b(as|class|data|forall|foreign|import|infix|infixl|infixr|instance|module|newtype|qualified|type|where)\b
scope: keyword.other.purescript
st:
- include: st-data
- include: st-function
st-data:
- match: \b(ST|STRef|STArray)\b
scope: support.function.data.st.purescript
st-function:
- match: \b(modifySTRef|newSTArray|newSTRef|peekSTArray|pokeSTArray|readSTRef|runST|runSTArray|writeSTRef)\b
scope: support.function.st.purescript
string:
- include: string-function
string-function:
- match: \b(charAt|indexOfS|lastIndexOfS|lengthS|localeCompare|replace|sliceS|split|substr|substring|toLower|toUpper|trim)\b
scope: support.function.string.purescript
strings:
- match: (\")
captures:
0: punctuation.definition.string.begin.purescript
push:
- meta_scope: string.quoted.double.purescript
- match: (\")
captures:
0: punctuation.definition.string.end.purescript
pop: true
- include: strings-escapes
strings-escapes:
- match: '\\(''|\"|\\|/|b|f|n|r|t|v|0|u[0-9a-fA-F]{4})'
scope: constant.character.escape
trace:
- include: trace-data
- include: trace-function
trace-data:
- match: \b(Trace)\b
scope: support.function.data.trace.purescript
trace-function:
- match: \b(print|trace)\b
scope: support.function.trace.purescript
tuple:
- include: tuple-function
tuple-function:
- match: \b(curry|uncurry|unzip|zip)\b
scope: support.function.tuple.purescript
type-constraint:
- match: '\s*(?:([A-Z][\w.'']*)(?:\s+([a-z_][\w.'']*))+ | \(([A-Z][\w.'']*)(?:\s+([a-z_][\w.'']*))+\))\s*(=>)'
scope: meta.constraint.purescript
captures:
1: entity.other.inherited-class.purescript
2: variable.other.purescript
3: entity.other.inherited-class.purescript
4: variable.other.purescript
5: keyword.operator.purescript
type-signature:
- include: type-simple
- include: type-constraint
type-simple:
- match: \((->)\)|(->)
scope: arrow.operator.purescript
captures:
1: keyword.operator.purescript
2: keyword.operator.purescript
- match: '([A-Z][\w.'']*)'
scope: storage.type.purescript
- include: generic-tyvar

View File

@ -0,0 +1,19 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: requirements.txt
file_extensions:
- requirements.txt
scope: source.requirementstxt
contexts:
main:
- match: (#).*$\n?
scope: comment.line.requirementstxt
captures:
1: punctuation.definition.comment.requirementstxt
- match: '(?i)^[a-z0-9_\-\.]+'
scope: string.package_name.requirementstxt
- match: (?i)==|<|<=|>=|>
scope: keyword.operator.logical.punctuation.requirementstxt
- match: '(?i)\d+\.[\da-z\-_\.]*'
scope: constant.numeric.verions.requirementstxt

View File

@ -0,0 +1,27 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Highlight non-printables
file_extensions:
- show-nonprintable
scope: whitespace
contexts:
main:
- match: "•"
scope: support.function.show-nonprintable.space
- match: "├─*┤"
scope: constant.character.escape.show-nonprintable.tab
- match: "↹"
scope: constant.character.escape.show-nonprintable.tab
- match: "␊"
scope: keyword.operator.show-nonprintable.line-feed
- match: "␍"
scope: string.show-nonprintable.carriage-return
- match: "␀"
scope: entity.other.attribute-name.show-nonprintable.null
- match: "␇"
scope: entity.other.attribute-name.show-nonprintable.bell
- match: "␛"
scope: entity.other.attribute-name.show-nonprintable.escape
- match: "␈"
scope: entity.other.attribute-name.show-nonprintable.backspace

View File

@ -0,0 +1,41 @@
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: syslog
file_extensions:
- log
scope: source.syslog
contexts:
main:
- match: \b(WAR|WARNING)\b
scope: invalid.deprecated
- match: (^(INVITE|ACK|PUBLISH|OPTIONS|CANCEL|BYE|SUBSCRIBE|NOTIFY|INFO|REFER|UPDATE|MESSAGE) sip.+$|SIP/2.0 180 Ringing|SIP/2.0 200 OK)
scope: variable.parameter
- match: '-----\>step.+$'
scope: support.function
- match: '.+\*{3,}.+'
scope: comment
- match: \b(INFO|VERBOSE)\b
scope: comment
- match: \bNOTICE\b
scope: support.class
- match: \b(ERR|ERROR)\b
scope: invalid.illegal
- match: '^\s*\[.+?\]'
scope: string.quote.single
- match: (--->|<---)( SIP read from | Transmitting \(NAT\) to | SIP transmit to).+$
scope: comment.line
- match: \<— SIP read from .+ —\>
scope: constant.character
- match: \<— Transmitting \(NAT\) .+ —\>
scope: constant.numeric
- match: (SEND\:|recv\:).+\>
scope: constant.numeric
- match: ^Call-ID\:.+$
scope: constant.numeric
- match: ^(User-Agent|Server)\:.+$
scope: entity.name.function
- match: (AMI Send\:|AMI Recv\:|m\=).+
scope: constant.language
- match: .*<conference-info.+
scope: constant.o

View File

@ -0,0 +1,94 @@
%YAML 1.2
---
name: varlink
file_extensions:
- varlink
scope: source.varlink
variables:
interface_name: '([a-z](\-*[a-z0-9])*(\.[a-z0-9](\-*[a-z0-9])*)+)'
identifier: '([A-Z][a-zA-Z0-9_]*)'
field_name: '[A-Za-z]([_]?[A-Za-z0-9])*'
contexts:
main:
- include: statements
statements:
- include: comments
- match: '(interface)\s+(\b{{interface_name}}\b)'
scope: meta.type.declaration.varlink
captures:
1: storage.type.interface.varlink
2: entity.name.interface.varlink
- match: '(method)\s+(\b{{identifier}}\b)\s*(?=[(])'
scope: meta.method.declaration.varlink
captures:
1: storage.type.method.varlink
2: entity.name.method.varlink
push: [ method-return, block ]
- match: '(type)\s+(\b{{identifier}}\b)\s*(?=[(])'
scope: meta.type.declaration.varlink
captures:
1: storage.type.type.varlink
2: entity.name.type.varlink
push: block
- match: '(error)\s+(\b{{identifier}}\b)\s*(?=[(])'
scope: meta.error.declaration.varlink
captures:
1: storage.type.error.varlink
2: entity.name.error.varlink
push: block
method-return:
- match: '(->)\s*(?=[(])'
scope: keyword.operator.varlink
set: block
block:
- include: comments
- match: '\)'
scope: punctuation.section.group.end.varlink
pop: true
- match: '\('
scope: punctuation.section.group.begin.varlink
push: block-inner
block-inner:
- include: comments
- match: '(?=\))'
pop: true
- match: '\b{{field_name}}\b'
scope: variable.parameter.varlink
- match: ','
scope: punctuation.separator.varlink
- match: ":"
scope: punctuation.separator.varlink
push: type
type:
- include: comments
- match: '(?=\()'
push: block
- match: '(?=\))'
pop: true
- match: '(?=,)'
pop: true
- match: '\b(string|bool|int|float|object)\b'
scope: storage.type.varlink
- match: '(\[\]|\[string\]|\?)'
scope: storage.modifier.varlink
- match: '\b{{identifier}}\b'
scope: entity.name.type.varlink
comments:
- match: "#"
scope: punctuation.definition.comment.varlink
push:
- meta_scope: comment.line.documentation.varlink
- match: $\n?
pop: true

616
assets/themes/1337.tmTheme Normal file
View File

@ -0,0 +1,616 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- author: Mark Herpich https://twitter.com/markisrocking -->
<!--
MIT License
Copyright (c) 2017 Mark Herpich
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
<plist version="1.2">
<dict>
<key>name</key>
<string>1337</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#191919</string>
<key>caret</key>
<string>#F8F8F0</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#3D3D3D55</string>
<key>selection</key>
<string>#515151</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#6d6d6d</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fbe3bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fdb082</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff8942</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fdb082</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e9fdac</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ff5e5e</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff5e5e</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#fbdfb5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#8cdaff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#8cdaff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#8cdaff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#fc9354</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ff5e5e</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#97d8ea</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#6699cc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ecfdb9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class&#x2f;type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fbe3bf</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespaces</string>
<key>scope</key>
<string>support.other.namespace, entity.name.type.namespace</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFB2F9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Alias</string>
<key>scope</key>
<string>support.other.namespace.use-as.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Keyword</string>
<key>scope</key>
<string>variable.language.namespace.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D66990</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>PHP Namespace Separator</string>
<key>scope</key>
<string>punctuation.separator.inheritance.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS Functions &#x2f; Property Values</string>
<key>scope</key>
<string>support.function.misc.css, support.constant.property-value.css, support.constant.font-name.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fdb082</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Tagbraces</string>
<key>scope</key>
<string>meta.tag.template.value.twig, meta.tag.template.block.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CD5AC5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Keywords</string>
<key>scope</key>
<string>keyword.control.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E05D8C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Objects</string>
<key>scope</key>
<string>variable.other.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5A5E0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Object Properties</string>
<key>scope</key>
<string>variable.other.property.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFE1FC</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Language Constants</string>
<key>scope</key>
<string>constant.language.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD2A6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Numerical Constants</string>
<key>scope</key>
<string>constant.numeric.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFD0FB</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Filters</string>
<key>scope</key>
<string>support.function.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#90E7F7</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig User-Defined Filters</string>
<key>scope</key>
<string>meta.function-call.other.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FAB85A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Twig Macros</string>
<key>scope</key>
<string>meta.function-call.twig</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FAB85A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#f92649</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#ff9664</string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ffffff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d0d0d0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#66a9ec</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Language Literal</string>
<key>scope</key>
<string>variable.language.super, variable.language.this, variable.language.self</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#d699ff</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter deleted</string>
<key>scope</key>
<string>markup.deleted.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter inserted</string>
<key>scope</key>
<string>markup.inserted.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter changed</string>
<key>scope</key>
<string>markup.changed.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CC00FF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter ignored</string>
<key>scope</key>
<string>markup.ignored.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#999999</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter untracked</string>
<key>scope</key>
<string>markup.untracked.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#565656</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#75715E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CC00FF</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>233F0694-0B9C-43E3-A44A-ECECF7DF6C73</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.1337</string>
<key>author</key>
<string>Mark Herpich</string>
<key>comment</key>
<string>http:&#x2f;&#x2f;www.twitter.com&#x2f;markisrocking</string>
</dict>
</plist>

View File

@ -0,0 +1,818 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>Dark Neon</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#000000</string>
<key>caret</key>
<string>#FFFFFF</string>
<key>foreground</key>
<string>#FFFFFF</string>
<key>invisibles</key>
<string>#CAE2FB3D</string>
<key>lineHighlight</key>
<string>#FFFFFF24</string>
<key>selection</key>
<string>#333333</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#7C7C7C</string>
<key>background</key>
<string>#212121</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity</string>
<key>scope</key>
<string>entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword.control</string>
<key>scope</key>
<string>keyword.control</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword.Operator</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AAAAAA</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class</string>
<key>scope</key>
<string>entity.name.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#FFFFB6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FFFFB6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#CFCB90</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage.modifier</string>
<key>scope</key>
<string>storage.modifier</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constant</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#99CC99</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>normal</string>
<key>foreground</key>
<string>#CCFF66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FF73FD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#c6c5fe</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#FD5FF1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#562D56BF</string>
<key>foreground</key>
<string>#FD5FF1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>-----------------------------------</string>
<key>settings</key>
<dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ Embedded Source (Bright)</string>
<key>scope</key>
<string>text source</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#B1B3BA08</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ Entity inherited-class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#9B5C2E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String embedded-variable</string>
<key>scope</key>
<string>source string source</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#EDEDED</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String punctuation</string>
<key>scope</key>
<string>source string source punctuation.section.embedded</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#00A0A0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String constant</string>
<key>scope</key>
<string>string constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#00A0A0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String.regexp</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E9C062</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String.regexp.«special»</string>
<key>scope</key>
<string>string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FF8000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String.regexp.group</string>
<key>scope</key>
<string>string.regexp.group</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FFFFFF0F</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#C6A24F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String.regexp.character-class</string>
<key>scope</key>
<string>string.regexp.character-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#B18A3D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ String variable</string>
<key>scope</key>
<string>string variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#8A9A95</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ Support.function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#DAD085</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>♦ Support.constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FFD2A7</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>c C&#x2f;C++ Preprocessor Line</string>
<key>scope</key>
<string>meta.preprocessor.c</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8996A8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>c C&#x2f;C++ Preprocessor Directive</string>
<key>scope</key>
<string>meta.preprocessor.c keyword</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#AFC4DB</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>j Cast</string>
<key>scope</key>
<string>meta.cast</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#676767</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>✘ Doctype&#x2f;XML Processing</string>
<key>scope</key>
<string>meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#494949</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>✘ Meta.tag.«all»</string>
<key>scope</key>
<string>meta.tag, meta.tag entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>normal</string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>✘ Meta.tag.inline</string>
<key>scope</key>
<string>source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>✘ Meta.tag.attribute-name</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#aaaaaa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>✘ Namespaces</string>
<key>scope</key>
<string>entity.name.tag.namespace, entity.other.attribute-name.namespace</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#E18964</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css tag-name</string>
<key>scope</key>
<string>meta.selector.css entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#66CCFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css:pseudo-class</string>
<key>scope</key>
<string>meta.selector.css entity.other.attribute-name.tag.pseudo-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#8F9D6A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css#id</string>
<key>scope</key>
<string>meta.selector.css entity.other.attribute-name.id</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#8B98AB</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css.class</string>
<key>scope</key>
<string>meta.selector.css entity.other.attribute-name.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#62B1FE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css property-name:</string>
<key>scope</key>
<string>support.type.property-name.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#EDEDED</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css property-value;</string>
<key>scope</key>
<string>meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F9EE98</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css @at-rule</string>
<key>scope</key>
<string>meta.preprocessor.at-rule keyword.control.at-rule</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8693A5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css additional-constants</string>
<key>scope</key>
<string>meta.property-value support.constant.named-color.css, meta.property-value constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#87C38A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>§ css constructor.argument</string>
<key>scope</key>
<string>meta.constructor.argument.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#8F9D6A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>⎇ diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#0E2231</string>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#F8F8F8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>⎇ diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#420E09</string>
<key>foreground</key>
<string>#F8F8F8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>⎇ diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#4A410D</string>
<key>foreground</key>
<string>#F8F8F8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>⎇ diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#253B22</string>
<key>foreground</key>
<string>#F8F8F8</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>--------------------------------</string>
<key>settings</key>
<dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Italic</string>
<key>scope</key>
<string>markup.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#E9C062</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Bold</string>
<key>scope</key>
<string>markup.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#E9C062</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Underline</string>
<key>scope</key>
<string>markup.underline</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#E18964</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Quote</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FEE09C12</string>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#E1D4B9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading</string>
<key>scope</key>
<string>markup.heading, markup.heading entity</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#632D04</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FEDCC5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: List</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E1D4B9</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Raw</string>
<key>scope</key>
<string>markup.raw</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#B1B3BA08</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#578BB3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Comment</string>
<key>scope</key>
<string>markup comment</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>##555555</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#242424</string>
<key>foreground</key>
<string>#60A633</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Log Entry</string>
<key>scope</key>
<string>meta.line.entry.logfile, meta.line.exit.logfile</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#EEEEEE29</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Log Entry Error</string>
<key>scope</key>
<string>meta.line.error.logfile</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#751012</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>D039AEA9-9DD2-4237-A963-E84494B0B3FB</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>semanticClass</key>
<string>theme.dark.dark_neon</string>
</dict>
</plist>

View File

@ -0,0 +1,526 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>GitHub</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#FFFFFF</string>
<key>caret</key>
<string>#333333</string>
<key>foreground</key>
<string>#333333</string>
<key>invisibles</key>
<string>#E0E0E0</string>
<key>lineHighlight</key>
<string>#F8EEC7</string>
<key>selection</key>
<string>#B0CDE7</string>
<key>selectionBorder</key>
<string>#B0CDE7</string>
<key>inactiveSelection</key>
<string>#EDEDED</string>
<key>findHighlight</key>
<string>#FFE792</string>
<key>findHighlightForeground</key>
<string>#333333</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#969896</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator, support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#A71D5D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086B3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword, storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#a71d5d</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Types</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#a71d5d</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Types</string>
<key>scope</key>
<string>support.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086B3</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0086b3</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>variable.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#df5000</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#333</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#795da3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086B3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>entity.name.type, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086b3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Exceptions</string>
<key>scope</key>
<string>entity.name.exception</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F93232</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Sections</string>
<key>scope</key>
<string>entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Numbers</string>
<key>scope</key>
<string>constant.numeric, constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086b3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings</string>
<key>scope</key>
<string>constant.character, string, string punctuation</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#183691</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings: Regular Expressions</string>
<key>scope</key>
<string>string.regexp, string.regexp constant.character, string.regexp punctuation</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#009926</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings: Symbols</string>
<key>scope</key>
<string>constant.other.symbol</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#990073</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded Source</string>
<key>scope</key>
<string>string source, text source</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#333333</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>variable.other.property</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#333</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#333333</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#f00</string>
</dict>
</dict>
<!-- HTML -->
<dict>
<key>name</key>
<string>HTML: Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string />
<key>foreground</key>
<string>#63a35c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Tags Punctuation</string>
<key>scope</key>
<string>punctuation.definition.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string />
<key>foreground</key>
<string>#333</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Attribute Punctuation</string>
<key>scope</key>
<string>meta.tag string punctuation</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#183691</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Entities</string>
<key>scope</key>
<string>constant.character.entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Attribute Names</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#795da3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Attribute Values</string>
<key>scope</key>
<string>meta.tag string.quoted, meta.tag string.quoted constant.character.entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#183691</string>
</dict>
</dict>
<!-- CSS/SASS -->
<dict>
<key>scope</key>
<string>meta.selector, meta.selector entity, meta.selector entity punctuation, entity.name.tag.css, entity.other.attribute-name.class, keyword.control.html.sass</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#63a35c</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.other.attribute-name.class, constant.other.unit</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#795da3</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>support.type.property-name, support.constant.property-value</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0086b3</string>
</dict>
</dict>
<!-- Ruby -->
<dict>
<key>scope</key>
<string>keyword.other.special-method.ruby.gem</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0086B3</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>variable.other.block.ruby</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#000</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<!-- Haskell -->
<dict>
<key>scope</key>
<string>support.function.prelude, variable.other.generic-type.haskell</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#000</string>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>constant.other.haskell, support.constant.haskell</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#445588</string>
</dict>
</dict>
<!-- Diff -->
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#75715E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#770000</string>
<key>background</key>
<string>#FFDDDD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#003300</string>
<key>background</key>
<string>#DDFFDD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ececec</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>BF4E1964-0DB9-4E88-8142-E8F52D7EDEEC</string>
</dict>
</plist>

View File

@ -0,0 +1,999 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>author</key>
<string>@tapionlinna</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>name</key>
<string>Monokai Extended Bright</string>
<key>semanticClass</key>
<string>theme.dark.monokai_bright_extended</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>activeGuide</key>
<string>#9D550FB0</string>
<key>background</key>
<string>#272822</string>
<key>bracketContentsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketContentsOptions</key>
<string>underline</string>
<key>bracketsForeground</key>
<string>#F8F8F2A5</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>caret</key>
<string>#F8F8F0</string>
<key>findHighlight</key>
<string>#FFE792</string>
<key>findHighlightForeground</key>
<string>#000000</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>inactiveSelection</key>
<string>#bbbbbb</string>
<key>inactiveSelectionForeground</key>
<string>#222222</string>
<key>invisibles</key>
<string>#3B3A32</string>
<key>lineHighlight</key>
<string>#3E3D32</string>
<key>selection</key>
<string>#9D550F</string>
<key>selectionBorder</key>
<string>#1C1C1C</string>
<key>selectionForeground</key>
<string>#fffff8</string>
<key>tagsOptions</key>
<string>stippled_underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#75715E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variable</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Entity</string>
<key>scope</key>
<string>entity</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage type</string>
<key>scope</key>
<string>storage.type</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class name</string>
<key>scope</key>
<string>entity.name.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function name</string>
<key>scope</key>
<string>entity.name.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#FD971F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag name</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tag attribute</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library constant</string>
<key>scope</key>
<string>support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library class/type</string>
<key>scope</key>
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Library variable</string>
<key>scope</key>
<string>support.other.variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String constant</string>
<key>scope</key>
<string>string constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String.regexp</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F6AA11</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String variable</string>
<key>scope</key>
<string>string variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support.function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Doctype/XML Processing</string>
<key>scope</key>
<string>meta.tag.sgml.doctype.xml, declaration.sgml.html declaration.doctype, declaration.sgml.html declaration.doctype entity, declaration.sgml.html declaration.doctype string, declaration.xml-processing, declaration.xml-processing entity, declaration.xml-processing string, doctype</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#73817D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: punctuations tags</string>
<key>scope</key>
<string>punctuation.definition.tag.end, punctuation.definition.tag.begin, punctuation.definition.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: tag-name</string>
<key>scope</key>
<string>meta.selector.css entity.name.tag</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: @import</string>
<key>scope</key>
<string>keyword.control.at-rule.import.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: @at-rule</string>
<key>scope</key>
<string>meta.preprocessor.at-rule keyword.control.at-rule</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F6AA11</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: id</string>
<key>scope</key>
<string>meta.selector.css entity.other.attribute-name.id</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F6AA11</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: class</string>
<key>scope</key>
<string>meta.selector.css entity.other.attribute-name.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: property-name</string>
<key>scope</key>
<string>support.type.property-name.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: property-value</string>
<key>scope</key>
<string>meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F6F080</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: additional-constants</string>
<key>scope</key>
<string>meta.property-value support.constant.named-color.css, meta.property-value constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#EDF080</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CSS: constructor.argument</string>
<key>scope</key>
<string>meta.constructor.argument.css</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F6AA11</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>LESS variables</string>
<key>scope</key>
<string>variable.other.less</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>LESS mixins</string>
<key>scope</key>
<string>entity.other.less.mixin</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#9DF39F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>CoffeeScript String Interpolated</string>
<key>scope</key>
<string>punctuation.section.embedded.coffee</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e69f66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#F92672</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#AE81FF</string>
<key>foreground</key>
<string>#F8F8F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON String</string>
<key>scope</key>
<string>meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CFCFC2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.header</string>
<key>scope</key>
<string>meta.diff, meta.diff.header</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#75715E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.range</string>
<key>scope</key>
<string>meta.diff, meta.diff.range</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#3BC0F0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Plain</string>
<key>scope</key>
<string>text.html.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Raw Inline</string>
<key>scope</key>
<string>text.html.markdown markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#EC3533</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Linebreak</string>
<key>scope</key>
<string>text.html.markdown meta.dummy.line-break</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E0EDDD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading</string>
<key>scope</key>
<string>Markdown.heading, markup.heading | markup.heading entity.name, markup.heading.markdown punctuation.definition.heading.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#FD971F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 1</string>
<key>scope</key>
<string>markup.heading.1.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#fc951e</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 2</string>
<key>scope</key>
<string>markup.heading.2.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#e8891c</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 3</string>
<key>scope</key>
<string>markup.heading.3.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#d47d19</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 4</string>
<key>scope</key>
<string>markup.heading.4.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#bf7117</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 5</string>
<key>scope</key>
<string>markup.heading.5.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#ab6515</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Heading 6</string>
<key>scope</key>
<string>markup.heading.6.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#965912</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Italic</string>
<key>scope</key>
<string>markup.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#F92672DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Bold</string>
<key>scope</key>
<string>markup.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Underline</string>
<key>scope</key>
<string>markup.underline</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: strike</string>
<key>scope</key>
<string>markup.strike</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#cc4273</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Blockquote</string>
<key>scope</key>
<string>markup.quote, punctuation.definition.blockquote.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Quote</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Link</string>
<key>scope</key>
<string>string.other.link.title.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#66D9EF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Raw Block</string>
<key>scope</key>
<string>markup.raw.block</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Raw Block</string>
<key>scope</key>
<string>markup.raw.block.fenced.markdown</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#222</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: List Items punctuation</string>
<key>scope</key>
<string>punctuation.definition.list_item.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#93A1A1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Fenced Code Block</string>
<key>scope</key>
<string>punctuation.definition.fenced.markdown,variable.language.fenced.markdown</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#222222</string>
<key>foreground</key>
<string>#93A1A1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Fenced markdown language</string>
<key>scope</key>
<string>variable.language.fenced.markdown</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#C6CECE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markup: Table</string>
<key>scope</key>
<string>markup.table</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF3A281A</string>
<key>foreground</key>
<string>#B42A1D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FFFFFF0F</string>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FFFFFF33</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>LaTeX: Math Variables</string>
<key>scope</key>
<string>variable.other.math.tex</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter deleted</string>
<key>scope</key>
<string>markup.deleted.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter inserted</string>
<key>scope</key>
<string>markup.inserted.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A6E22E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter changed</string>
<key>scope</key>
<string>markup.changed.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FC951E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter ignored</string>
<key>scope</key>
<string>markup.ignored.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#565656</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>GitGutter untracked</string>
<key>scope</key>
<string>markup.untracked.git_gutter</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#565656</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>constant.numeric.line-number.find-in-files - match</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FFA0</string>
</dict>
</dict>
<dict>
<key>scope</key>
<string>entity.name.filename.find-in-files</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Nginx path</string>
<key>scope</key>
<string>string.other.path.nginx</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#fc951e</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>b76b4488-20c3-40a7-9499-457a451ee558</string>
</dict>
</plist>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,663 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Name: One Half Dark
Author: Son A. Pham <sp@sonpham.me>
Url: https://github.com/sonph/onehalf
License: The MIT License (MIT)
A dark Sublime Text color scheme based on Atom's One. See
github.com/sonph/onehalf for installation instructions, a light color
scheme, and versions for other editors/terminals such as Vim or iTerm.
Red: #e06c75
Green: #98c379
Yellow: #e5c07b
Blue: #61afef
Purple: #c678dd
Cyan: #56b6c2
White: #dcdfe4
Black: #282c34
Fg: #dcdfe4
Bg: #282c34
Comment: #5c6370
Gutter foreground: #919baa
Gutter background: #282c34
Selection: #474e5d
-->
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>OneHalfLight</string>
<key>semanticClass</key>
<string>theme.dark.one_half_dark</string>
<key>uuid</key>
<string></string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>author</key>
<string>Son A. Pham &lt;sp@sonpham.me&gt;</string>
<key>comment</key>
<string>A dark iTerm color scheme based on Atom&apos;s One. See github.com&#x2f;sonph&#x2f;onehalf for installation instructions, a light color scheme, and versions for other editors&#x2f;terminals such as (Neo)Vim and Sublime Text.</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#dcdfe4</string>
<key>background</key>
<string>#282c34</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>caret</key>
<string>#a3b3cc</string>
<key>gutter</key>
<string>#282c34</string>
<key>gutterForeground</key>
<string>#919baa</string>
<key>invisibles</key>
<string>#5c6370</string>
<key>lineHighlight</key>
<string>#313640</string>
<key>selection</key>
<string>#474e5d</string>
<key>selectionBorder</key>
<string>#474e5d</string>
<key>tagsForeground</key>
<string></string>
<key>tagsOptions</key>
<string>stippled_underline</string>
<key>bracketContentsOptions</key>
<string>underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5c6370</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Tag attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c678dd</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Lists</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Java Source</string>
<key>scope</key>
<string>source.java meta.class.java meta.method.java</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Java Class Body</string>
<key>scope</key>
<string>source.java meta.class.java meta.class.body.java</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Function Arguments</string>
<key>scope</key>
<string>source.js meta.function.js variable.parameter.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: New Variables</string>
<key>scope</key>
<string>source.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Variables</string>
<key>scope</key>
<string>source.js variable.other.object.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Variables in Function Calls</string>
<key>scope</key>
<string>source.js meta.function-call.method.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: New Block Variables</string>
<key>scope</key>
<string>source.js meta.block.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Block Variables</string>
<key>scope</key>
<string>source.js meta.block.js variable.other.object.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Block Variables in Function Calls</string>
<key>scope</key>
<string>source.js meta.block.js meta.function-call.method.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Function Calls</string>
<key>scope</key>
<string>source.js meta.function-call.method.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Properties</string>
<key>scope</key>
<string>source.js meta.property.object.js entity.name.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61afef</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Prototypes</string>
<key>scope</key>
<string>source.js support.constant.prototype.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string></string>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56b6c2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e06c75</string>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e5c07b</string>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e5c07b</string>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#c678dd</string>
<key>foreground</key>
<string>#dcdfe4</string>
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,663 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Name: One Half Light
Author: Son A. Pham <sp@sonpham.me>
Url: https://github.com/sonph/onehalf
License: The MIT License (MIT)
A light Sublime Text color scheme based on Atom's One. See
github.com/sonph/onehalf for installation instructions, a dark color scheme,
and versions for other editors/terminals such as Vim or iTerm.
Red: #e45649
Green: #50a14f
Yellow: #c18401
Blue: #0184bc
Purple: #a626a4
Cyan: #0997b3
White: #fafafa
Black: #383a42
Fg: #383a42
Bg: #fafafa
Comment: #a0a1a7
Gutter foreground: #d4d4d4
Gutter background: #fafafa
Selection: #bfceff
-->
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>OneHalfLight</string>
<key>semanticClass</key>
<string>theme.light.one_half_light</string>
<key>uuid</key>
<string></string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>author</key>
<string>Son A. Pham &lt;sp@sonpham.me&gt;</string>
<key>comment</key>
<string>A light iTerm color scheme based on Atom&apos;s One. See github.com&#x2f;sonph&#x2f;onehalf for installation instructions, a dark color scheme, and versions for other editors&#x2f;terminals such as (Neo)Vim and Sublime Text.</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#383a42</string>
<key>background</key>
<string>#fafafa</string>
<key>bracketsOptions</key>
<string>underline</string>
<key>caret</key>
<string>#383a42</string>
<key>gutter</key>
<string>#fafafa</string>
<key>gutterForeground</key>
<string>#d4d4d4</string>
<key>invisibles</key>
<string>#a0a1a7</string>
<key>lineHighlight</key>
<string>#f0f0f0</string>
<key>selection</key>
<string>#bfceff</string>
<key>selectionBorder</key>
<string>#bfceff</string>
<key>tagsForeground</key>
<string></string>
<key>tagsOptions</key>
<string>stippled_underline</string>
<key>bracketContentsOptions</key>
<string>underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a0a1a7</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a626a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0184bc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0184bc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a626a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0184bc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50a14f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>HTML: Tag attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#c18401</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a626a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#0184bc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a626a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#a626a4</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50a14f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50a14f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Lists</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Markdown: Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50a14f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Java Source</string>
<key>scope</key>
<string>source.java meta.class.java meta.method.java</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Java Class Body</string>
<key>scope</key>
<string>source.java meta.class.java meta.class.body.java</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Function Arguments</string>
<key>scope</key>
<string>source.js meta.function.js variable.parameter.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: New Variables</string>
<key>scope</key>
<string>source.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Variables</string>
<key>scope</key>
<string>source.js variable.other.object.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Variables in Function Calls</string>
<key>scope</key>
<string>source.js meta.function-call.method.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: New Block Variables</string>
<key>scope</key>
<string>source.js meta.block.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e45649</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Block Variables</string>
<key>scope</key>
<string>source.js meta.block.js variable.other.object.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Block Variables in Function Calls</string>
<key>scope</key>
<string>source.js meta.block.js meta.function-call.method.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Function Calls</string>
<key>scope</key>
<string>source.js meta.function-call.method.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Properties</string>
<key>scope</key>
<string>source.js meta.property.object.js entity.name.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0184bc</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Javascript: Prototypes</string>
<key>scope</key>
<string>source.js support.constant.prototype.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#383a42</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string></string>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98c379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e06c75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#e5c07b</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#50a14f</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0997b3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e06c75</string>
<key>foreground</key>
<string>#fafafa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e5c07b</string>
<key>foreground</key>
<string>#fafafa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#e5c07b</string>
<key>foreground</key>
<string>#fafafa</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#c678dd</string>
<key>foreground</key>
<string>#fafafa</string>
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -1,30 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- Generated by: TmTheme-Editor -->
<!-- ============================================ -->
<!-- app: http://tmtheme-editor.herokuapp.com -->
<!-- code: https://github.com/aziz/tmTheme-Editor -->
<plist version="1.0">
<dict>
<key>name</key>
<string>Monokai</string>
<string>Sublime Snazzy</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#272822</string>
<string>#282A36</string>
<key>caret</key>
<string>#F8F8F0</string>
<string>#97979B</string>
<key>foreground</key>
<string>#F8F8F2</string>
<key>invisibles</key>
<string>#3B3A32</string>
<string>#686868</string>
<key>lineHighlight</key>
<string>#3E3D32</string>
<string>#000000</string>
<key>selection</key>
<string>#49483E</string>
<string>#57C7FF</string>
</dict>
</dict>
<dict>
@ -35,7 +31,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#75715E</string>
<string>#686868</string>
</dict>
</dict>
<dict>
@ -46,7 +42,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E6DB74</string>
<string>#F3F99D</string>
</dict>
</dict>
<dict>
@ -57,7 +53,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
<string>#F1F1F0</string>
</dict>
</dict>
<dict>
@ -68,7 +64,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
<string>#5AF78E</string>
</dict>
</dict>
<dict>
@ -79,7 +75,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#AE81FF</string>
<string>#5AF78E</string>
</dict>
</dict>
<dict>
@ -101,7 +97,7 @@
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F92672</string>
<string>#FF5C57</string>
</dict>
</dict>
<dict>
@ -114,7 +110,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F92672</string>
<string>#FF5C57</string>
</dict>
</dict>
<dict>
@ -127,7 +123,7 @@
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
<string>#9AEDFE</string>
</dict>
</dict>
<dict>
@ -140,7 +136,7 @@
<key>fontStyle</key>
<string>underline</string>
<key>foreground</key>
<string>#A6E22E</string>
<string>#9AEDFE</string>
</dict>
</dict>
<dict>
@ -153,7 +149,7 @@
<key>fontStyle</key>
<string>italic underline</string>
<key>foreground</key>
<string>#A6E22E</string>
<string>#9AEDFE</string>
</dict>
</dict>
<dict>
@ -166,7 +162,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#A6E22E</string>
<string>#9AEDFE</string>
</dict>
</dict>
<dict>
@ -179,7 +175,7 @@
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#FD971F</string>
<string>#FF6AC1</string>
</dict>
</dict>
<dict>
@ -192,7 +188,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F92672</string>
<string>#5AF78E</string>
</dict>
</dict>
<dict>
@ -205,7 +201,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#A6E22E</string>
<string>#9AEDFE</string>
</dict>
</dict>
<dict>
@ -218,7 +214,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66D9EF</string>
<string>#F3F99D</string>
</dict>
</dict>
<dict>
@ -231,7 +227,7 @@
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#66D9EF</string>
<string>#F3F99D</string>
</dict>
</dict>
<dict>
@ -241,10 +237,8 @@
<string>support.type, support.class</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#66D9EF</string>
<string>#F3F99D</string>
</dict>
</dict>
<dict>
@ -266,11 +260,11 @@
<key>settings</key>
<dict>
<key>background</key>
<string>#F92672</string>
<string>#FF5C57</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#F8F8F0</string>
<string>#F1F1F0</string>
</dict>
</dict>
<dict>
@ -281,9 +275,9 @@
<key>settings</key>
<dict>
<key>background</key>
<string>#AE81FF</string>
<string>#FF5C57</string>
<key>foreground</key>
<string>#F8F8F0</string>
<string>#57C7FF</string>
</dict>
</dict>
</array>
@ -294,4 +288,4 @@
<key>semanticClass</key>
<string>theme.dark.monokai</string>
</dict>
</plist>
</plist>

View File

@ -0,0 +1,878 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>author</key>
<string>Roberto Mauro (erremauro@icloud.com)</string>
<key>name</key>
<string>TwoDark</string>
<key>semanticClass</key>
<string>theme.dark.two_dark</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>gutterSettings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>divider</key>
<string>#393939</string>
<key>foreground</key>
<string>#747369</string>
<key>selectionBackground</key>
<string>#515151</string>
<key>selectionForeground</key>
<string>#a09f93</string>
</dict>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#282C34</string>
<key>caret</key>
<string>#528BFF</string>
<key>foreground</key>
<string>#ABB2BF</string>
<key>invisibles</key>
<string>#747369</string>
<key>lineHighlight</key>
<string>#2B313A</string>
<key>selection</key>
<string>#3D4350</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#5C6370</string>
<key>fontStyle</key>
<string> italic</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61AFEF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5C07B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#61AFEF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56B6C2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string, constant.other.symbol, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98C379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string />
<key>foreground</key>
<string>#61AFEF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5C07B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98C379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Lists</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#515151</string>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98C379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56B6C2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56B6C2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56B6C2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#BE5046</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#f2777a</string>
<key>foreground</key>
<string>#272B33</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#f99157</string>
<key>foreground</key>
<string>#2d2d2d</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#d27b53</string>
<key>foreground</key>
<string>#272B33</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#747369</string>
<key>foreground</key>
<string>#272B33</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Json key</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Json value</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98C379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>json sub key</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E06C75</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Json sub value</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#98C379</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>laravel blade tag</string>
<key>scope</key>
<string>text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>laravel blade @</string>
<key>scope</key>
<string>text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python function parameter</string>
<key>scope</key>
<string>source.python meta.function.python meta.function.parameters.python variable.parameter.function.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python meta function</string>
<key>scope</key>
<string>source.python meta.function-call.python support.type.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#56B6C2</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python logical keyword</string>
<key>scope</key>
<string>source.python keyword.operator.logical.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python class ( begin</string>
<key>scope</key>
<string>source.python meta.class.python punctuation.definition.inheritance.begin.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5C07B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python class ) end</string>
<key>scope</key>
<string>source.python meta.class.python punctuation.definition.inheritance.end.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5C07B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>python function call parameter name</string>
<key>scope</key>
<string>source.python meta.function-call.python meta.function-call.arguments.python variable.parameter.function.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>php fcuntion constants</string>
<key>scope</key>
<string>text.html.basic source.php.embedded.block.html support.constant.std.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>php namespace name</string>
<key>scope</key>
<string>text.html.basic source.php.embedded.block.html meta.namespace.php entity.name.type.namespace.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E5C07B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>javascript meta constant</string>
<key>scope</key>
<string>source.js meta.function.js support.constant.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>php namespace in top</string>
<key>scope</key>
<string>text.html.basic` source.php.embedded.block.html constant.other.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>php namespace name in top</string>
<key>scope</key>
<string>text.html.basic source.php.embedded.block.html support.other.namespace.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D19A66</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>latex label names</string>
<key>scope</key>
<string>text.tex.latex meta.function.environment.math.latex string.other.math.block.environment.latex meta.definition.label.latex variable.parameter.definition.label.latex</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>latex italic emph</string>
<key>scope</key>
<string>text.tex.latex meta.function.emph.latex markup.italic.emph.latex</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string> italic</string>
<key>foreground</key>
<string>#C678DD</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>subl_new js vars</string>
<key>scope</key>
<string>source.js variable.other.readwrite.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl js $</string>
<key>scope</key>
<string>source.js meta.function-call.with-arguments.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl js call method</string>
<key>scope</key>
<string>source.js meta.group.braces.round meta.group.braces.curly meta.function-call.method.without-arguments.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl e js</string>
<key>scope</key>
<string>source.js meta.group.braces.round meta.group.braces.curly variable.other.object.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl js key</string>
<key>scope</key>
<string>source.js meta.group.braces.round meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl obejct key</string>
<key>scope</key>
<string>source.js meta.group.braces.round meta.group.braces.curly constant.other.object.key.js punctuation.separator.key-value.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl js method with args</string>
<key>scope</key>
<string>source.js meta.group.braces.round meta.group.braces.curly meta.function-call.method.with-arguments.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl js variable function</string>
<key>scope</key>
<string>source.js meta.function-call.method.with-arguments.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>new_subl variabel function method</string>
<key>scope</key>
<string>source.js meta.function-call.method.without-arguments.js variable.function.js</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ABB2BF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>SublimeLinter Error</string>
<key>scope</key>
<string>sublimelinter.mark.error</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D02000</string>
</dict>
</dict><dict>
<key>name</key>
<string>SublimeLinter Gutter Mark</string>
<key>scope</key>
<string>sublimelinter.gutter-mark</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict><dict>
<key>name</key>
<string>SublimeLinter Warning</string>
<key>scope</key>
<string>sublimelinter.mark.warning</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#DDB700</string>
</dict>
</dict></array>
<key>uuid</key>
<string>32bd64fa-d60a-4858-a5fc-5164cc49a2b8</string>
<key>comment</key>
<string>Work in progress</string>
</dict>
</plist>

View File

@ -0,0 +1,504 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!--
The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
palette number from 00 to 0f, and AA is the special value 00 to indicate
that this encoding is being used.
-->
<key>author</key>
<string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
<key>name</key>
<string>ANSI Dark</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#00000000</string>
<key>caret</key>
<string>#07000000</string>
<key>foreground</key>
<string>#07000000</string>
<key>invisibles</key>
<string>#07000000</string>
<key>lineHighlight</key>
<string>#07000000</string>
<key>selection</key>
<string>#07000000</string>
<key>gutter</key>
<string>#00000000</string>
<key>gutterForeground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Labels</string>
<key>scope</key>
<string>entity.name.label</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string, constant.other.symbol, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#01000000</string>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#03000000</string>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>uuid</string>
</dict>
</plist>

View File

@ -0,0 +1,504 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!--
The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
palette number from 00 to 0f, and AA is the special value 00 to indicate
that this encoding is being used.
-->
<key>author</key>
<string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
<key>name</key>
<string>ANSI Light</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#07000000</string>
<key>caret</key>
<string>#00000000</string>
<key>foreground</key>
<string>#00000000</string>
<key>invisibles</key>
<string>#00000000</string>
<key>lineHighlight</key>
<string>#00000000</string>
<key>selection</key>
<string>#00000000</string>
<key>gutter</key>
<string>#07000000</string>
<key>gutterForeground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Labels</string>
<key>scope</key>
<string>entity.name.label</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string, constant.other.symbol, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#01000000</string>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#03000000</string>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>uuid</string>
</dict>
</plist>

View File

@ -0,0 +1,543 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!--
The colors in this theme are encoded as #RRGGBBAA where RR is an ANSI
palette number from 00 to 0f, and AA is the special value 00 to indicate
that this encoding is being used.
-->
<key>author</key>
<string>Template: Chris Kempson, Scheme: Mitchell Kember</string>
<key>name</key>
<string>Base16</string>
<key>colorSpaceName</key>
<string>sRGB</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#00000000</string>
<key>caret</key>
<string>#07000000</string>
<key>foreground</key>
<string>#07000000</string>
<key>invisibles</key>
<string>#08000000</string>
<key>lineHighlight</key>
<string>#08000000</string>
<key>selection</key>
<string>#0b000000</string>
<key>gutter</key>
<string>#0a000000</string>
<key>gutterForeground</key>
<string>#08000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Text</string>
<key>scope</key>
<string>variable.parameter.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comments</string>
<key>scope</key>
<string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#08000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Punctuation</string>
<key>scope</key>
<string>punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Delimiters</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keywords</string>
<key>scope</key>
<string>keyword</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variables</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Functions</string>
<key>scope</key>
<string>entity.name.function, meta.require, support.function.any-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Labels</string>
<key>scope</key>
<string>entity.name.label</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0e000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>support.class, entity.name.class, entity.name.type.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Classes</string>
<key>scope</key>
<string>meta.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0f000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Methods</string>
<key>scope</key>
<string>keyword.other.special-method</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Support</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Strings, Inherited Class</string>
<key>scope</key>
<string>string, constant.other.symbol, entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Integers</string>
<key>scope</key>
<string>constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floats</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Boolean</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Constants</string>
<key>scope</key>
<string>constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Tags</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attributes</string>
<key>scope</key>
<string>entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Attribute IDs</string>
<key>scope</key>
<string>entity.other.attribute-name.id, punctuation.definition.entity</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Selector</string>
<key>scope</key>
<string>meta.selector</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Values</string>
<key>scope</key>
<string>none</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Headings</string>
<key>scope</key>
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#04000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Units</string>
<key>scope</key>
<string>keyword.other.unit</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Bold</string>
<key>scope</key>
<string>markup.bold, punctuation.definition.bold</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#03000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Italic</string>
<key>scope</key>
<string>markup.italic, punctuation.definition.italic</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>italic</string>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Code</string>
<key>scope</key>
<string>markup.raw.inline</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Text</string>
<key>scope</key>
<string>string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Link Url</string>
<key>scope</key>
<string>meta.link</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Quotes</string>
<key>scope</key>
<string>markup.quote</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#09000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Separator</string>
<key>scope</key>
<string>meta.separator</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#0b000000</string>
<key>foreground</key>
<string>#07000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inserted</string>
<key>scope</key>
<string>markup.inserted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#02000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deleted</string>
<key>scope</key>
<string>markup.deleted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#01000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Changed</string>
<key>scope</key>
<string>markup.changed</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Colors</string>
<key>scope</key>
<string>constant.other.color</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Regular Expressions</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Escape Characters</string>
<key>scope</key>
<string>constant.character.escape</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#06000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Embedded</string>
<key>scope</key>
<string>punctuation.section.embedded, variable.interpolation</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#05000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Illegal</string>
<key>scope</key>
<string>invalid.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#01000000</string>
<key>foreground</key>
<string>#0f000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Broken</string>
<key>scope</key>
<string>invalid.broken</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#09000000</string>
<key>foreground</key>
<string>#00000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Deprecated</string>
<key>scope</key>
<string>invalid.deprecated</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#0e000000</string>
<key>foreground</key>
<string>#0f000000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Unimplemented</string>
<key>scope</key>
<string>invalid.unimplemented</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#08000000</string>
<key>foreground</key>
<string>#0f000000</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>uuid</string>
</dict>
</plist>

View File

@ -0,0 +1,744 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>author</key>
<string>Jani Nurminen. Adapted and modified by Colin T.A. Gray and William D. Neumann</string>
<key>name</key>
<string>zenburn</string>
<key>settings</key>
<array>
<dict>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>caret</key>
<string>#D6D6D6</string>
<key>foreground</key>
<string>#DEDEDE</string>
<key>invisibles</key>
<string>#A5A5A552</string>
<key>lineHighlight</key>
<string>#303030</string>
<key>selection</key>
<string>#8383839C</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#87AE86</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>preprocessor</string>
<key>scope</key>
<string>meta.preprocessor, punctuation.definition.preprocessor</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#E8BC92</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>phpdoc</string>
<key>scope</key>
<string>keyword.other.phpdoc</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#568E4D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>comment punctuation (/*, #, //)</string>
<key>scope</key>
<string>punctuation.definition.comment, punctuation.whitespace.comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#A0CFA1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>embedded ruby in string delimiters</string>
<key>scope</key>
<string>punctuation.section.embedded</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#898989</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>embedded ruby in string</string>
<key>scope</key>
<string>source.ruby.embedded</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CC9495</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Directive</string>
<key>scope</key>
<string>keyword.other.directive</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#DEDEDE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Line-number directives</string>
<key>scope</key>
<string>keyword.other.directive.line-number</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Characters</string>
<key>scope</key>
<string>constant.character</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF8080</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>String</string>
<key>scope</key>
<string>string, string.unquoted</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D68686</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Heredoc</string>
<key>scope</key>
<string>string.unquoted.heredoc</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D6D6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Number</string>
<key>scope</key>
<string>support.constant.numeric, constant.numeric</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#87D6D5</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant, support.constant</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#D6D6AE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>User-defined constant</string>
<key>scope</key>
<string>constant.character, constant.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CC9495</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Other constant</string>
<key>scope</key>
<string>variable.other.constant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D6AE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Language Keyword</string>
<key>scope</key>
<string>keyword, keyword.control , meta.selector.css , entity.other.attribute-name</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Instance Variable</string>
<key>scope</key>
<string>variable.other.readwrite.instance</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Module Keyword</string>
<key>scope</key>
<string>entity.name.module,support.other.module</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FF8000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Operators</string>
<key>scope</key>
<string>keyword.operator</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#ECECEC</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floating-point infix operators</string>
<key>scope</key>
<string>source.ocaml keyword.operator.symbol.infix.floating-point</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Floating-point prefix operators</string>
<key>scope</key>
<string>source.ocaml keyword.operator.symbol.prefix.floating-point</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>underline</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage Types</string>
<key>scope</key>
<string>storage.type , storage.modifier , support.type</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFB9D</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Variant Types</string>
<key>scope</key>
<string>entity.name.class.variant</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#4080A0</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Storage</string>
<key>scope</key>
<string>storage</string>
<key>settings</key>
<dict />
</dict>
<dict>
<key>name</key>
<string>Type name</string>
<key>scope</key>
<string>entity.name.type , entity.other</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D6D6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Inherited class</string>
<key>scope</key>
<string>entity.other.inherited-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D78D1B</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Type name</string>
<key>scope</key>
<string>storage.type.user-defined , meta.property-list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFE000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Class type name</string>
<key>scope</key>
<string>entity.name.type , entity.name.type.class , entity.other.attribute-name.class.css , support.class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#F4A020</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Function argument</string>
<key>scope</key>
<string>variable.parameter</string>
<key>settings</key>
<dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold italic underline</string>
<key>foreground</key>
<string>#FFCCEE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>html attribute</string>
<key>scope</key>
<string>entity.other.attribute-name.html</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#D6D7AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>html entity</string>
<key>scope</key>
<string>entity.name.tag</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D7AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>&lt;?php</string>
<key>scope</key>
<string>punctuation.section.embedded.begin.php,punctuation.section.embedded.end.php</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#898989</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>php function</string>
<key>scope</key>
<string>support.function.construct</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>$variable prefix</string>
<key>scope</key>
<string>punctuation.definition.variable</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>function/method</string>
<key>scope</key>
<string>support.function,meta.function-name,entity.name.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFD87</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>built-in function</string>
<key>scope</key>
<string>support.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C7BA18</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>braces</string>
<key>scope</key>
<string>meta.brace</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#78CECC80</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>string begin</string>
<key>scope</key>
<string>punctuation.definition.string.begin,punctuation.definition.string.end</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D6D680</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>html tag begin/end</string>
<key>scope</key>
<string>punctuation.definition.tag.begin.html,punctuation.definition.tag.end.html,meta.tag.structure.any.html</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FED5AE94</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>yaml entity</string>
<key>scope</key>
<string>entity.name.tag.yaml</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>unquoted yaml string</string>
<key>scope</key>
<string>punctuation.definition.entry</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D6D6D6</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>SQL</string>
<key>scope</key>
<string>keyword.other.DML.sql, keyword.other.data-integrity.sql</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#B7B7B7</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>other SQL</string>
<key>scope</key>
<string>source.sql, constant.other.database-name.sql, constant.other.table-name.sql, keyword.operator.star</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#95BFF3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff</string>
<key>scope</key>
<string>source.diff</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff.toc</string>
<key>scope</key>
<string>source.diff meta.diff.comment, source.diff meta.toc-list.comment.diff</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#9F9D15</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff from-file</string>
<key>scope</key>
<string>meta.diff.header.from-file</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#CA7172</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff to-file</string>
<key>scope</key>
<string>meta.diff.header.to-file</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#60B38A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff range</string>
<key>scope</key>
<string>meta.diff.range.unified</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>foreground</key>
<string>#8CD0D3</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff inserted</string>
<key>scope</key>
<string>markup.inserted.diff</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>foreground</key>
<string>#60B38A</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>diff deleted</string>
<key>scope</key>
<string>markup.deleted.diff</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#393939</string>
<key>foreground</key>
<string>#CA7172</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>regex</string>
<key>scope</key>
<string>string.regexp</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#C76F41</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>regex - repitition</string>
<key>scope</key>
<string>string.regexp.arbitrary-repitition</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#9E6A5F</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>regex - repitition {}</string>
<key>scope</key>
<string>punctuation.definition.arbitrary-repitition</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF5E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>regex - character class</string>
<key>scope</key>
<string>string.regexp.character-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#CB8E81</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>regex - character class []</string>
<key>scope</key>
<string>punctuation.definition.character-class</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF5E</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>markdown inline code</string>
<key>scope</key>
<string>markup.raw.inline.markdown</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FED6AF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>markdown heading</string>
<key>scope</key>
<string>markup.heading.markdown,punctuation.definition.heading</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string>bold</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>markdown list</string>
<key>scope</key>
<string>markup.list</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#DEDEDE</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>SublimeLinter Warning</string>
<key>scope</key>
<string>sublimelinter.mark.warning</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#DDB700</string>
</dict>
</dict><dict>
<key>name</key>
<string>SublimeLinter Gutter Mark</string>
<key>scope</key>
<string>sublimelinter.gutter-mark</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict><dict>
<key>name</key>
<string>SublimeLinter Error</string>
<key>scope</key>
<string>sublimelinter.mark.error</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#D02000</string>
</dict>
</dict></array>
<key>uuid</key>
<string>A34A7407-68B9-48E5-883E-E551F7561026</string>
</dict>
</plist>

View File

@ -19,54 +19,52 @@ fn parse_str_color(s: &str) -> Result<Rgba<u8>, Error> {
#[structopt(name = "silicon", rename_all = "kebab")]
pub struct Config {
/// The syntax highlight theme. It can be a theme name or path to a .tmTheme file.
#[structopt(long, default_value = "base16-eighties.dark")]
theme: String,
#[structopt(long, default_value = "Monokai Extended")]
pub theme: String,
/// The base font.
#[structopt(long)]
font: Option<String>,
pub font: Option<String>,
/// Size of the base font.
#[structopt(long, value_name = "size", default_value = "27.0")]
font_size: f32,
pub font_size: f32,
/// The CJK font.
#[structopt(long, value_name = "font")]
cjk_font: Option<String>,
pub cjk_font: Option<String>,
/// Size of the CJK font.
#[structopt(long, value_name = "size", default_value = "27.0")]
cjk_size: f32,
pub cjk_size: f32,
/// Pad between lines
#[structopt(long, default_value = "2")]
line_pad: u32,
pub line_pad: u32,
/// List all themes.
#[structopt(long)]
pub list_themes: bool,
// Build theme cache.
// #[structopt(long)]
// build_cache: bool,
/// Read input from clipboard.
#[structopt(long)]
from_clipboard: bool,
pub from_clipboard: bool,
// Copy the output image to clipboard.
// #[structopt(short = "c", long)]
// to_clipboard: bool,
#[structopt(short = "c", long)]
pub to_clipboard: bool,
/// Write output image to specific location instead of cwd.
#[structopt(short = "o", long, value_name = "path")]
pub output: Option<PathBuf>,
/// Hide the window controls.
#[structopt(long)]
no_window_controls: bool,
pub no_window_controls: bool,
/// Hide the line number.
#[structopt(long)]
no_line_number: bool,
pub no_line_number: bool,
/// Background color of the image
#[structopt(
@ -75,7 +73,7 @@ pub struct Config {
default_value = "#abb8c3",
parse(try_from_str = "parse_str_color")
)]
background: Rgba<u8>,
pub background: Rgba<u8>,
/// Color of shadow
#[structopt(
@ -84,38 +82,39 @@ pub struct Config {
default_value = "#555555",
parse(try_from_str = "parse_str_color")
)]
shadow_color: Rgba<u8>,
pub shadow_color: Rgba<u8>,
/// Blur radius of the shadow
#[structopt(long, value_name = "radius", default_value = "10.0")]
shadow_blur_radius: f32,
pub shadow_blur_radius: f32,
/// Pad horiz
#[structopt(long, default_value = "80")]
pad_horiz: u32,
pub pad_horiz: u32,
/// Pad vert
#[structopt(long, default_value = "100")]
pad_vert: u32,
pub pad_vert: u32,
/// Shadow's offset in Y axis
#[structopt(long, value_name = "offset", default_value = "0")]
shadow_offset_y: i32,
pub shadow_offset_y: i32,
/// Shadow's offset in X axis
#[structopt(long, value_name = "offset", default_value = "0")]
shadow_offset_x: i32,
pub shadow_offset_x: i32,
/// The language for syntax highlighting. You can use full name ("Rust") or file extension ("rs").
#[structopt(short = "l", long)]
language: Option<String>,
pub language: Option<String>,
// Draw a custom text on the bottom right corner
// #[structopt(long)]
// watermark: Option<String>,
/// File to read. If not set, stdin will be use.
#[structopt(value_name = "FILE", parse(from_os_str))]
file: Option<PathBuf>,
pub file: Option<PathBuf>,
}
impl Config {

View File

@ -2,7 +2,7 @@
extern crate failure;
use crate::config::Config;
use crate::utils::{add_window_controls, round_corner};
use crate::utils::{add_window_controls, round_corner, dump_image_to_clipboard};
use failure::Error;
use std::io::stdout;
use structopt::StructOpt;
@ -53,13 +53,17 @@ fn run() -> Result<(), Error> {
let image = config.get_shadow_adder().apply_to(&image);
if let Some(path) = &config.output {
image
.save(path)
.map_err(|e| format_err!("Failed to save image to {}: {}", path.display(), e))?;
if config.to_clipboard {
dump_image_to_clipboard(&image)?;
} else {
let mut stdout = stdout();
image.write_to(&mut stdout, ImageFormat::PNG)?;
if let Some(path) = &config.output {
image
.save(path)
.map_err(|e| format_err!("Failed to save image to {}: {}", path.display(), e))?;
} else {
let mut stdout = stdout();
image.write_to(&mut stdout, ImageFormat::PNG)?;
}
}
Ok(())

View File

@ -1,8 +1,10 @@
use image::imageops::{blur, crop};
use image::Pixel;
use image::{Pixel, ImageOutputFormat};
use image::{DynamicImage, GenericImage, GenericImageView, Rgba, RgbaImage};
use imageproc::drawing::{draw_filled_rect_mut, draw_line_segment_mut};
use imageproc::rect::Rect;
use failure::Error;
use std::process::Command;
pub trait ToRgba {
type Target;
@ -244,3 +246,19 @@ where
}
}
}
#[cfg(target_os = "linux")]
pub fn dump_image_to_clipboard(image: &DynamicImage) -> Result<(), Error> {
let mut temp = tempfile::NamedTempFile::new()?;
image.write_to(&mut temp, ImageOutputFormat::PNG)?;
Command::new("xclip")
.args(&["-sel", "clip", "-t", "image/png", temp.path().to_str().unwrap()])
.status()
.map_err(|e| format_err!("Failed to copy image to clipboard: {}", e))?;
Ok(())
}
#[cfg(not(target_os = "linux"))]
pub fn dump_image_to_clipboard(image: &DynamicImage) -> Result<(), Error> {
format_err!("This feature hasn't been implemented in your system")
}