From 890fbf57c7b4ac8dc1f4ad4336bb6801c6343740 Mon Sep 17 00:00:00 2001 From: Aloxaf Date: Sat, 13 Jul 2019 13:17:23 +0800 Subject: [PATCH] Remove build.rs --- .gitignore | 4 +- Cargo.toml | 4 - assets/sync_from_bat.py | 2 + assets/syntaxes.bin | Bin 0 -> 595604 bytes assets/syntaxes/AWK.sublime-syntax | 209 -- assets/syntaxes/AsciiDoc.sublime-syntax | 283 -- assets/syntaxes/Assembly (ARM).sublime-syntax | 172 - .../syntaxes/Assembly (x86_64).sublime-syntax | 1367 ------- assets/syntaxes/CMake C Header.sublime-syntax | 40 - .../syntaxes/CMake C++ Header.sublime-syntax | 40 - assets/syntaxes/CMake.sublime-syntax | 671 ---- assets/syntaxes/CMakeCache.sublime-syntax | 54 - assets/syntaxes/CMakeCommands.sublime-syntax | 2328 ------------ assets/syntaxes/CSV.sublime-syntax | 46 - assets/syntaxes/Cabal.sublime-syntax | 47 - assets/syntaxes/Crystal.sublime-syntax | 1036 ------ assets/syntaxes/Dart.sublime-syntax | 369 -- assets/syntaxes/DotENV.sublime-syntax | 88 - assets/syntaxes/Elixir.sublime-syntax | 510 --- assets/syntaxes/F#.sublime-syntax | 672 ---- assets/syntaxes/FSharp.sublime-syntax | 672 ---- assets/syntaxes/HTML (EEx).sublime-syntax | 497 --- assets/syntaxes/HTML (Twig).sublime-syntax | 662 ---- assets/syntaxes/Hosts.sublime-syntax | 23 - assets/syntaxes/INI.sublime-syntax | 46 - .../Javascript (Babel).sublime-syntax | 1288 ------- assets/syntaxes/Julia.sublime-syntax | 615 ---- assets/syntaxes/Kotlin.sublime-syntax | 398 --- assets/syntaxes/LESS.sublime-syntax | 618 ---- assets/syntaxes/Nix.sublime-syntax | 609 ---- assets/syntaxes/Org mode.sublime-syntax | 219 -- assets/syntaxes/PowerShell.sublime-syntax | 466 --- assets/syntaxes/Protobuf.sublime-syntax | 460 --- assets/syntaxes/ProtobufText.sublime-syntax | 186 - assets/syntaxes/Robot.sublime-syntax | 54 - assets/syntaxes/SSH Config.sublime-syntax | 292 -- assets/syntaxes/SSHD Config.sublime-syntax | 184 - assets/syntaxes/Swift.sublime-syntax | 371 -- assets/syntaxes/TOML.sublime-syntax | 401 --- assets/syntaxes/Terraform.sublime-syntax | 133 - assets/syntaxes/TypeScript.sublime-syntax | 3027 ---------------- .../syntaxes/TypsecriptReact.sublime-syntax | 3161 ----------------- assets/syntaxes/VimL.sublime-syntax | 91 - assets/syntaxes/fish.sublime-syntax | 1009 ------ assets/syntaxes/jsonnet.sublime-syntax | 122 - assets/syntaxes/purescript.sublime-syntax | 387 -- .../syntaxes/requirementstxt.sublime-syntax | 19 - .../syntaxes/show-nonprintable.sublime-syntax | 27 - assets/syntaxes/syslog.sublime-syntax | 41 - assets/syntaxes/varlink.sublime-syntax | 94 - assets/themes.bin | Bin 0 -> 10896 bytes assets/themes/1337.tmTheme | 616 ---- assets/themes/DarkNeon.tmTheme | 818 ----- assets/themes/GitHub.tmTheme | 526 --- assets/themes/Monokai Extended Bright.tmTheme | 999 ------ assets/themes/Monokai Extended Light.tmTheme | 1975 ---------- assets/themes/Monokai Extended Origin.tmTheme | 1919 ---------- assets/themes/Monokai Extended.tmTheme | 1878 ---------- assets/themes/OneHalfDark.tmTheme | 663 ---- assets/themes/OneHalfLight.tmTheme | 663 ---- assets/themes/Sublime Snazzy.tmTheme | 291 -- assets/themes/TwoDark.tmTheme | 878 ----- assets/themes/ansi-dark.tmTheme | 504 --- assets/themes/ansi-light.tmTheme | 504 --- assets/themes/base16.tmTheme | 543 --- assets/themes/zenburn.tmTheme | 744 ---- build.rs | 30 - 67 files changed, 5 insertions(+), 37660 deletions(-) create mode 100644 assets/syntaxes.bin delete mode 100644 assets/syntaxes/AWK.sublime-syntax delete mode 100644 assets/syntaxes/AsciiDoc.sublime-syntax delete mode 100644 assets/syntaxes/Assembly (ARM).sublime-syntax delete mode 100644 assets/syntaxes/Assembly (x86_64).sublime-syntax delete mode 100644 assets/syntaxes/CMake C Header.sublime-syntax delete mode 100644 assets/syntaxes/CMake C++ Header.sublime-syntax delete mode 100644 assets/syntaxes/CMake.sublime-syntax delete mode 100644 assets/syntaxes/CMakeCache.sublime-syntax delete mode 100644 assets/syntaxes/CMakeCommands.sublime-syntax delete mode 100644 assets/syntaxes/CSV.sublime-syntax delete mode 100644 assets/syntaxes/Cabal.sublime-syntax delete mode 100644 assets/syntaxes/Crystal.sublime-syntax delete mode 100644 assets/syntaxes/Dart.sublime-syntax delete mode 100644 assets/syntaxes/DotENV.sublime-syntax delete mode 100644 assets/syntaxes/Elixir.sublime-syntax delete mode 100644 assets/syntaxes/F#.sublime-syntax delete mode 100644 assets/syntaxes/FSharp.sublime-syntax delete mode 100644 assets/syntaxes/HTML (EEx).sublime-syntax delete mode 100644 assets/syntaxes/HTML (Twig).sublime-syntax delete mode 100644 assets/syntaxes/Hosts.sublime-syntax delete mode 100644 assets/syntaxes/INI.sublime-syntax delete mode 100644 assets/syntaxes/Javascript (Babel).sublime-syntax delete mode 100644 assets/syntaxes/Julia.sublime-syntax delete mode 100644 assets/syntaxes/Kotlin.sublime-syntax delete mode 100644 assets/syntaxes/LESS.sublime-syntax delete mode 100644 assets/syntaxes/Nix.sublime-syntax delete mode 100644 assets/syntaxes/Org mode.sublime-syntax delete mode 100644 assets/syntaxes/PowerShell.sublime-syntax delete mode 100644 assets/syntaxes/Protobuf.sublime-syntax delete mode 100644 assets/syntaxes/ProtobufText.sublime-syntax delete mode 100644 assets/syntaxes/Robot.sublime-syntax delete mode 100644 assets/syntaxes/SSH Config.sublime-syntax delete mode 100644 assets/syntaxes/SSHD Config.sublime-syntax delete mode 100644 assets/syntaxes/Swift.sublime-syntax delete mode 100644 assets/syntaxes/TOML.sublime-syntax delete mode 100644 assets/syntaxes/Terraform.sublime-syntax delete mode 100644 assets/syntaxes/TypeScript.sublime-syntax delete mode 100644 assets/syntaxes/TypsecriptReact.sublime-syntax delete mode 100644 assets/syntaxes/VimL.sublime-syntax delete mode 100644 assets/syntaxes/fish.sublime-syntax delete mode 100644 assets/syntaxes/jsonnet.sublime-syntax delete mode 100644 assets/syntaxes/purescript.sublime-syntax delete mode 100644 assets/syntaxes/requirementstxt.sublime-syntax delete mode 100644 assets/syntaxes/show-nonprintable.sublime-syntax delete mode 100644 assets/syntaxes/syslog.sublime-syntax delete mode 100644 assets/syntaxes/varlink.sublime-syntax create mode 100644 assets/themes.bin delete mode 100644 assets/themes/1337.tmTheme delete mode 100644 assets/themes/DarkNeon.tmTheme delete mode 100644 assets/themes/GitHub.tmTheme delete mode 100644 assets/themes/Monokai Extended Bright.tmTheme delete mode 100644 assets/themes/Monokai Extended Light.tmTheme delete mode 100644 assets/themes/Monokai Extended Origin.tmTheme delete mode 100644 assets/themes/Monokai Extended.tmTheme delete mode 100644 assets/themes/OneHalfDark.tmTheme delete mode 100644 assets/themes/OneHalfLight.tmTheme delete mode 100644 assets/themes/Sublime Snazzy.tmTheme delete mode 100644 assets/themes/TwoDark.tmTheme delete mode 100644 assets/themes/ansi-dark.tmTheme delete mode 100644 assets/themes/ansi-light.tmTheme delete mode 100644 assets/themes/base16.tmTheme delete mode 100644 assets/themes/zenburn.tmTheme delete mode 100644 build.rs diff --git a/.gitignore b/.gitignore index 2b17543..58567d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /target **/*.rs.bk -assets/*.bin \ No newline at end of file +/.idea +/assets/syntaxes +/assets/themes \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 09d6379..fec9a1e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,6 @@ categories = ["command-line-utilities"] readme = "README.md" repository = "https://github.com/Aloxaf/silicon" license = "MIT" -build = "build.rs" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -35,8 +34,5 @@ version = "0.6.2" default-features = false features = [ "termcolor", "atty", "humantime" ] -[build-dependencies] -syntect = "3.2" - # [profile.release] # lto = true diff --git a/assets/sync_from_bat.py b/assets/sync_from_bat.py index 9638e70..a0a255b 100644 --- a/assets/sync_from_bat.py +++ b/assets/sync_from_bat.py @@ -16,4 +16,6 @@ for theme_file in glob('../../bat/assets/themes/**/*.tmTheme'): copy(theme_file, './themes/') +os.system('bat cache --build --source . --target .') + print('Finished.') diff --git a/assets/syntaxes.bin b/assets/syntaxes.bin new file mode 100644 index 0000000000000000000000000000000000000000..a84584e44e5ce98c283a839f286058ced7e7a9d1 GIT binary patch literal 595604 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�<9&7YQ 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

!fRu@D;Vu>fJL*|NbKK0F-`?n0*# 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 lhd;@7UH--SUC$-Z-!]=|[<>]" - 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 diff --git a/assets/syntaxes/AsciiDoc.sublime-syntax b/assets/syntaxes/AsciiDoc.sublime-syntax deleted file mode 100644 index 7bc6443..0000000 --- a/assets/syntaxes/AsciiDoc.sublime-syntax +++ /dev/null @@ -1,283 +0,0 @@ -%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}(?[-*_])([ ]{,2}\k){2,}[ \t]*+$ - ) - push: - - meta_scope: meta.block-level.asciidoc - - match: |- - (?x)^ - (?! \1 - | ([ \t]{1,}) - | [=]{1,6}\s*+ - | [ ]{,3}(?[-*_])([ ]{,2}\k){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: '(`+)(?:[^`]|(?!(?[a-zA-Z_][a-zA-Z0-9_]*)) # macro name - (?: # and optionally: - (\() # an open parenthesis - ( - \s* \g \s* # first argument - ((,) \s* \g \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 diff --git a/assets/syntaxes/Assembly (x86_64).sublime-syntax b/assets/syntaxes/Assembly (x86_64).sublime-syntax deleted file mode 100644 index 1d91df8..0000000 --- a/assets/syntaxes/Assembly (x86_64).sublime-syntax +++ /dev/null @@ -1,1367 +0,0 @@ -%YAML 1.2 ---- -file_extensions: [yasm, nasm, asm, inc, mac] -scope: source.asm.x86_64 - -variables: - num_bin: '(?:[01][01_]*)' - num_oct: '(?:[0-7][0-7_]*)' - num_dec: '(?:[0-9][0-9_]*)' - num_hex: '(?:[[:xdigit:]][[:xdigit:]_]*)' - num_bin_exp: '(?:p[+-]?{{num_dec}})' - num_dec_exp: '(?:e[+-]?{{num_dec}})' - identifier_body: '(?:[[:alnum:]_$#@~.?]*)' - valid_identifier: '(?:[[:alpha:]_?]{{identifier_body}})' - -contexts: - prototype: - - include: comments - - line-continuation: - - match: '(\\)$\n' - captures: - 1: punctuation.separator.continuation.asm.x86_64 - - match: '\\(\s+?)$' - captures: - 1: invalid.illegal.space-after-continuation.asm.x86_64 - line-ending: - - match: '$\n' - pop: true - pop: - - match: '(?=.|$)' - pop: true - pop-if-not-whitespace: - - match: '(?=\S)' - set: pop - - main: - - include: comments - - include: prefixes - - include: data-types - - include: registers - - include: mnemonics - - include: strings - - include: numbers - - include: operators - - include: support - - include: directives - - include: entities - - include: structs - - include: preprocessor - - include: labels - - numbers: - - include: floating-point - - include: integers - floating-point: - # binary - - match: '(?i)\b0[by]{{num_bin}}\.(?:{{num_bin}}?{{num_bin_exp}}?\b)?' - scope: constant.numeric.binary.floating-point.asm.x86_64 - - match: '(?i)\b0[by]{{num_bin}}{{num_bin_exp}}\b' - scope: constant.numeric.binary.floating-point.asm.x86_64 - # octal - - match: '(?i)\b0[oq]{{num_oct}}\.(?:{{num_oct}}?{{num_bin_exp}}?\b)?' - scope: constant.numeric.octal.floating-point.asm.x86_64 - - match: '(?i)\b0[oq]{{num_oct}}{{num_bin_exp}}\b' - scope: constant.numeric.octal.floating-point.asm.x86_64 - # decimal - - match: '(?i)\b(?:0[dt])?{{num_dec}}\.(?:{{num_dec}}?{{num_dec_exp}}?\b)?' - scope: constant.numeric.decimal.floating-point.asm.x86_64 - - match: '(?i)\b{{num_dec}}{{num_dec_exp}}\b' - scope: constant.numeric.decimal.floating-point.asm.x86_64 - #- match: '(?i)\.{{num_dec}}{{num_dec_exp}}?\b' - # scope: invalid.illegal.constant.numeric.decimal.floating-point.asm.x86_64 - - match: '(?i)\b{{num_dec}}p{{num_dec}}?\b' - scope: constant.numeric.decimal.packed-bcd.asm.x86_64 - # hex - - match: '(?i)\b0[xh]{{num_hex}}\.(?:{{num_hex}}?{{num_bin_exp}}?\b)?' - scope: constant.numeric.hex.floating-point.asm.x86_64 - - match: '(?i)\b0[xh]{{num_hex}}{{num_bin_exp}}\b' - scope: constant.numeric.hex.floating-point.asm.x86_64 - - match: '(?i)\$[0-9]\_?{{num_hex}}?\.(?:{{num_hex}}?{{num_bin_exp}}?\b)?' - scope: constant.numeric.hex.floating-point.asm.x86_64 - - match: '(?i)\$[0-9]\_?{{num_hex}}{{num_bin_exp}}\b' - scope: constant.numeric.hex.floating-point.asm.x86_64 - integers: - - match: '(?i)\b(?:(?:0[by]{{num_bin}})|(?:{{num_bin}}[by]))\b' - scope: constant.numeric.binary.asm.x86_64 - - match: '(?i)\b(?:(?:0[oq]{{num_oct}})|(?:{{num_oct}}[oq]))\b' - scope: constant.numeric.octal.asm.x86_64 - - match: '(?i)\b(?:(?:0[dt]{{num_dec}})|(?:{{num_dec}}[dt]?))\b' - scope: constant.numeric.decimal.asm.x86_64 - - match: '(?i)(?:\$[0-9]\_?{{num_hex}}?)\b' - scope: constant.numeric.hex.asm.x86_64 - - match: '(?i)\b(?:(?:0[xh]{{num_hex}})|(?:{{num_hex}}[hxHX]))\b' - scope: constant.numeric.hex.asm.x86_64 - - labels: - # http://www.nasm.us/doc/nasmdoc3.html#section-3.9 - - match: '(\.\.@)({{valid_identifier}})(?:(\:)?|\b)' - captures: - 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64 - 2: entity.name.constant.special.asm.x86_64 - 3: punctuation.separator.asm.x86_64 - - match: '(?:(\.)?|\b)({{valid_identifier}})(?:(\:)?|\b)' - captures: - 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64 - 2: entity.name.constant.asm.x86_64 - 3: punctuation.separator.asm.x86_64 - - match: '(\.)([0-9]+{{identifier_body}})(?:(\:)?|\b)' - captures: - 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64 - 2: entity.name.constant.asm.x86_64 - 3: punctuation.separator.asm.x86_64 - - match: '(?:(\.)?|\b)([0-9$@~]{{identifier_body}})(?:(\:)?|\b)' - captures: - 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64 - 2: invalid.illegal.entity.name.constant.asm.x86_64 - 3: punctuation.separator.asm.x86_64 - - match: '((%)(\d+))' - captures: - 1: invalid.illegal.meta.preprocessor.asm.x86_64 - #1: meta.preprocessor.asm.x86_64 - 2: punctuation.definition.variable.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 3: variable.other.preprocessor.asm.x86_64 - - match: '((%%)({{valid_identifier}})(?:(\:)?|\b))' - captures: - 1: invalid.illegal.meta.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 3: entity.name.constant.special.asm.x86_64 - 4: punctuation.separator.asm.x86_64 - - data-types: - # Initialized & uninitialized data: http://www.nasm.us/doc/nasmdoc3.html#section-3.2.1 - - match: '(?i)\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\b' - scope: storage.type.asm.x86_64 - - match: '(?i)\b(?:incbin|equ|times)\b' - scope: support.function.asm.x86_64 - - prefixes: - - match: '(?i)\b(?:strict|nosplit|near|far|abs|rel)\b' - scope: storage.modifier.asm.x86_64 - - match: '(?i)\b(?:[ao](?:16|32|64))\b' - scope: storage.modifier.prefix.asm.x86_64 - - match: '(?i)\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\b' - scope: storage.modifier.prefix.asm.x86_64 - - match: '{(vex[23]|evex)}' - captures: - 1: storage.modifier.prefix.vex.asm.x86_64 - - match: '{(k[1-7])}' - captures: - 1: storage.modifier.opmask.asm.x86_64 - - match: '{(1to(?:8|16))}' - captures: - 1: storage.modifier.precision.asm.x86_64 - - match: '{(z|(?:r[nudz]-)?sae)}' - captures: - 1: storage.modifier.rounding.asm.x86_64 - - support: - # http://www.nasm.us/doc/nasmdoc7.html#section-7.4.6 - - match: '\.\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\b' - scope: support.constant.asm.x86_64 - - match: '\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|Infinity|[QS]?NaN)__\b' - scope: support.function.asm.x86_64 - # http://www.nasm.us/doc/nasmdoc4.html#section-4.11 - - match: '\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\b' - scope: support.function.asm.x86_64 - - match: '\b___NASM_PATCHLEVEL__\b' - scope: support.function.asm.x86_64 - - match: '\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT)__\b' - scope: support.function.asm.x86_64 - - match: '\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\b' - scope: support.function.asm.x86_64 - - match: '\b__USE_(?:ALTREG|SMARTALIGN|FP|IFUNC)__\b' - scope: support.function.asm.x86_64 - - match: '\b__PASS__\b' - scope: invalid.deprecated.support.constant.altreg.asm.x86_64 - - match: '(?i)\balignmode\b' - scope: support.function.smartalign.asm.x86_64 - push: - - include: line-continuation - - include: line-ending - - match: '\b(?:generic|nop|k7|k8|p6)\b' - scope: support.constant.smartalign.asm.x86_64 - pop: true - - match: '\w+' - scope: invalid.illegal.constant.smartalign.asm.x86_64 - pop: true - - match: '\b__ALIGNMODE__\b' - scope: support.constant.smartalign.asm.x86_64 - - match: '\b(?:Inf|[QS]?NaN)\b' - scope: support.constant.fp.asm.x86_64 - - match: '\b(?:float(?:8|16|32|64|80[me]|128[lh]))\b' - scope: support.function.fp.asm.x86_64 - - match: '(?i)\bilog2(?:[ewfc]|[fc]w)?\b' - scope: support.function.ifunc.asm.x86_64 - - directives: - - match: '(?i)\b(?:ideal|jumps|p[345]86|end)\b' - scope: invalid.deprecated.tasm.asm.x86_64 - - match: '(?i)\b(?:bits|use(?:16|32|64)|org|uppercase|safeseh|osabi)\b' - scope: support.function.directive.asm.x86_64 - - match: '(?i)\b(default)(?:\s+(rel|abs|(?:no)?bnd))?\b' - captures: - 1: support.function.directive.asm.x86_64 - 2: support.constant.directive.asm.x86_64 - - match: '(?i)\b(?:section|segment)\b' - scope: support.function.directive.asm.x86_64 - push: [section-parameters, section-name] - - match: '(?i)\bgroup\b' - scope: support.function.directive.asm.x86_64 - push: section-name - - match: '\b(?:__SECT__|__NASMDEFSEG|_?_GLOBAL_OFFSET_TABLE_)\b' - scope: support.constant.directive.asm.x86_64 - - match: '(?i)\b(?:absolute|common)\b' - scope: support.function.directive.asm.x86_64 - - match: '(?i)\b(?:subsections_via_symbols|no_dead_strip)\b' - scope: support.function.directive.macho.asm.x86_64 - - match: '(?i)import\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '{{valid_identifier}}' - scope: entity.name.function.asm.x86_64 - set: - - match: '{{valid_identifier}}' - scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64 - set: - - match: '{{valid_identifier}}' - scope: variable.function.asm.x86_64 - set: - - include: comments - - match: '{{valid_identifier}}' - scope: invalid.illegal.asm.x86_64 - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - match: '(?i)export\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '{{valid_identifier}}' - scope: entity.name.constant.asm.x86_64 - set: - - match: '{{valid_identifier}}' - scope: variable.function.asm.x86_64 - set: export-parameters - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - match: '(?i)global\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '(?<=\:)(?:function|data|export)\b' - scope: storage.type.directive.asm.x86_64 - - match: '\b(?:default|internal|hidden|protected|proc|data)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64 - - include: line-continuation - - include: line-ending - - include: preprocessor-macro-parameter - - include: main - - match: '(?i)extern\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '(?<=\:)(?:import)\b' - scope: storage.type.directive.asm.x86_64 - - match: '\b(?:proc|data)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64 - - include: line-continuation - - include: line-ending - - include: preprocessor-macro-parameter - - include: main - - match: '(?i)library\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '{{valid_identifier}}' - scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64 - pop: true - - include: line-continuation - - include: line-ending - - include: pop-if-not-whitespace - - match: '(?i)module\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '\$?{{valid_identifier}}' - scope: entity.name.namespace.asm.x86_64 - pop: true - - include: line-continuation - - include: line-ending - - include: pop-if-not-whitespace - - match: '(?i)\bcpu\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '(?i)\b(?:(?:80|[1-6])86|pentium|ppro|p[234]|katmai|willamette|prescott|(?:x|ia)64)\b' - scope: support.constant.directive.asm.x86_64 - pop: true - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: main - - match: '(?i)\bfloat\b' - scope: support.function.directive.asm.x86_64 - push: - - match: '(?i)\b(?:(?:no)?daz|near|up|down|zero|default)\b' - scope: support.constant.directive.asm.x86_64 - pop: true - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: main - - match: '(?i)(\[)\s*(warning)\b' - captures: - 2: support.function.directive.asm.x86_64 - push: - - match: '(?i)([+\-*])|(error)\s*(=)\s*' - captures: - 1: keyword.control.warning.asm.x86_64 - 2: support.constant.directive.warning.asm.x86_64 - 3: keyword.operator.assignment.asm.x86_64 - push: - - match: '(?i)\b(other|macro-(?:params|selfref|defaults)|orphan-labels|number-overflow|gnu-elf-extensions|float-(?:overflow|denorm|underflow|toolong)|user|lock|hle|bnd|zext-reloc|ptr|(?:bad|unknown|not-my)-pragma|unknown-warning|all)(?=\]|\s)' - scope: support.constant.directive.warning.asm.x86_64 - pop: true - - match: '\S+(?=\])' - scope: invalid.illegal.support.constant.directive.warning.asm.x86_64 - pop: true - - match: '\S+' - scope: invalid.illegal.support.constant.directive.warning.asm.x86_64 - pop: true - - match: '(?i)\b(?:all|error)\b' - scope: support.constant.directive.warning.asm.x86_64 - - match: ']' - pop: true - - include: line-continuation - - include: line-ending - - match: '(?i)(\[)\s*(map)\b' - captures: - 2: support.function.directive.asm.x86_64 - push: - - match: '(?i)\b(?:all|brief|sections|segments|symbols)\b' - scope: support.constant.directive.map.asm.x86_64 - - match: '(?i)\b(?:std(?:out|err))\b' - scope: meta.path.asm.x86_64 support.constant.directive.map.asm.x86_64 - - match: '{{valid_identifier}}' - scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64 - - match: ']' - pop: true - - include: line-continuation - - include: line-ending - section-parameters: - - match: '=' - scope: keyword.operator.assignment.asm.x86_64 - - match: '(?i)\b(?:(?:v)?start|align|absolute)\b' - scope: variable.parameter.directive.asm.x86_64 - - match: '(?i)\b(?:(?:prog|no)bits|private|public|common|stack|code|text|data|bss|rdata|info)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64 - - match: '(?i)\b(?:mixed|zerofill|no_dead_strip|live_support|strip_static_syms)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.macho.asm.x86_64 - - match: '(?i)\b(?:(?:no)?(?:alloc|exec|write)|tls)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.elf.asm.x86_64 - - match: '(?i)\b(?:(?:v)?follows)\b' - scope: variable.parameter.directive.asm.x86_64 - push: - - match: '=' - scope: keyword.operator.assignment.asm.x86_64 - set: [pop, section-name] - - include: line-continuation - - include: line-ending - - match: '(?i)\b(?:class|overlay)\b' - scope: variable.parameter.directive.asm.x86_64 - push: - - match: '=' - scope: keyword.operator.assignment.asm.x86_64 - - match: '{{valid_identifier}}' - scope: entity.name.class.asm.x86_64 string.unquoted.asm.x86_64 - pop: true - - include: line-continuation - - include: line-ending - - include: line-continuation - - include: line-ending - - include: main - section-name: - - match: '(?:\.|\b)(?:text|bss|(?:[rpx]|ro)?data|code)\b' - scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.asm.x86_64 - pop: true - - match: '\b__(?:text|const|data|bss|TEXT|CONST|DATA|BSS)\b' - scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.macho.asm.x86_64 - pop: true - - match: '(?:\.)(?:[lt](?:data|bss)|lrodata|comment)\b' - scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.elf.asm.x86_64 - pop: true - - match: '(?:\.|\b){{valid_identifier}}\b' - scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 - pop: true - - match: '(?=`|''|")' - set: - - meta_scope: entity.name.section.asm.x86_64 - - include: strings - - include: pop - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - export-parameters: - - match: '=' - scope: keyword.operator.assignment.asm.x86_64 - - match: '(?i)\b(?:resident|nodata)\b' - scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64 - - match: '(?i)\b(?:parm)\b' - scope: variable.parameter.directive.asm.x86_64 - - include: primitive-directive-end - - include: line-continuation - - include: line-ending - - include: main - - operators: - - match: '[+\-*/]' - scope: keyword.operator.arithmetic.asm.x86_64 - - match: '(%%|%)[[:space:]]' - captures: - 1: keyword.operator.arithmetic.asm.x86_64 - - match: '[|&^~!]|<<|>>' - scope: keyword.operator.bitwise.asm.x86_64 - - match: '(?i)\b(seg|wrt)\b' - scope: keyword.operator.word.asm.x86_64 - - match: ',' - scope: operator.separator.asm.x86_64 - - structs: - - match: '(?i)\bstruc\b' - scope: support.function.asm.x86_64 meta.struct.asm.x86_64 - push: - - meta_content_scope: meta.struct.asm.x86_64.1 - - match: '{{valid_identifier}}' - scope: entity.name.struct.asm.x86_64 - set: - - meta_scope: meta.struct.asm.x86_64 - - match: '(?i)\bendstruc\b' - scope: support.function.asm.x86_64 meta.struct.asm.x86_64 - pop: true - - include: main - - match: '\w' - scope: invalid.illegal.entity.name.struct.asm.x86_64 - - match: '(?i)\bendstruc\b' - scope: invalid.illegal.support.function.asm.x86_64 meta.struct.asm.x86_64 - - match: '(?i)\bistruc\b' - scope: support.function.asm.x86_64 meta.struct.asm.x86_64 - push: - - meta_content_scope: meta.struct.asm.x86_64.1 - - match: '{{valid_identifier}}' - scope: variable.other.asm.x86_64 - set: - - meta_scope: meta.struct.asm.x86_64 - - match: '(?i)\bat\b' - scope: support.function.asm.x86_64 meta.struct.asm.x86_64 - - match: '(?i)\biend\b' - scope: support.function.asm.x86_64 meta.struct.asm.x86_64 - pop: true - - include: main - - match: '\w' - scope: invalid.illegal.variable.struct.asm.x86_64 - - match: '(?i)\biend\b' - scope: invalid.illegal.support.function.asm.x86_64 meta.struct.asm.x86_64 - - match: '(?i)\balignb?\b' - scope: support.function.asm.x86_64 - - match: '(?i)\b(sectalign)\s+(on|off)?' - captures: - 1: support.function.asm.x86_64 - 2: support.constant.asm.x86_64 - - entities: - - match: '\$@feat\.00\b' - scope: variable.language.sseh.asm.x86_64 - - match: '(\$)(?:\w+)\b' - scope: variable.other.asm.x86_64 - captures: - 1: punctuation.definition.variable.asm.x86_64 - - match: '\${3,}' - scope: invalid.illegal.variable.language.asm.x86_64 - - match: '\$' - scope: variable.language.asm.x86_64 - - comments: - - match: (?:(;)|(?:^|\s)(#)\s).*$ - scope: comment.line.asm.x86_64 - captures: - 1: punctuation.definition.comment.asm.x86_64 - 2: punctuation.definition.comment.asm.x86_64 - - match: /\* - scope: punctuation.definition.comment.asm.x86_64 - push: - - meta_scope: comment.block.asm.x86_64 - - match: \*/ - scope: punctuation.definition.comment.asm.x86_64 - pop: true - - preprocessor: # http://www.nasm.us/doc/nasmdoc4.html - - include: preprocessor-macro-multiline - - include: preprocessor-macro-define - - include: preprocessor-macro-indirection - - include: preprocessor-conditions - - include: preprocessor-other - # single-line macro - preprocessor-macro-define: - - match: '^\s*((%)x?i?define)\b' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - match: '(?:{{valid_identifier}})(?=\()' - scope: entity.name.function.preprocessor.asm.x86_64 - set: - - match: '\(' - scope: punctuation.section.group.begin.asm.x86_64 - set: preprocessor-macro-params - - match: '{{valid_identifier}}' - scope: entity.name.constant.preprocessor.asm.x86_64 - set: preprocessor-macro-definition - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - match: '^\s*((%)(?:include|depend))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-macro-definition - - match: '^\s*((%)use)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64 - - include: strings - - include: line-ending - - include: preprocessor-macro-indirection - - match: '^\s*((%)(?:assign|i?deftok|strcat|strlen|substr|pathsearch|push|pop|repl|line|clear))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-macro-indirection - - include: preprocessor-conditions-constant - - match: '^\s*((%)(?:arg|local))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - match: '({{valid_identifier}})(\:)(?=\w+)' - captures: - 1: meta.preprocessor.asm.x86_64 variable.parameter.macro.asm.x86_64 - 2: punctuation.separator.asm.x86_64 - - match: '\,' - scope: punctuation.separator.asm.x86_64 - - include: data-types - - match: '\w+\b' - scope: invalid.illegal.storage.type.asm.x86_64 - - include: line-continuation - - include: line-ending - - match: '^\s*((%)stacksize)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - match: '\b(flat(?:64)?|large|small)\b' - scope: support.constant.macro.asm.x86_64 - - match: '\w+\b' - scope: invalid.illegal.storage.type.asm.x86_64 - - include: line-continuation - - include: line-ending - - match: '^\s*((%)i?defstr)\s+(?:({{valid_identifier}})|(%%)({{valid_identifier}}))\b' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.assign.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: entity.name.constant.preprocessor.asm.x86_64 - 4: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 5: entity.name.constant.special.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64 - - include: preprocessor-macro-indirection - - include: line-ending - - match: '^\s*((%)(?:warning|error|fatal|pragma))(?=\s|$)' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.assign.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: entity.name.constant.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64 - - include: strings - - include: preprocessor-macro-indirection - - include: line-ending - preprocessor-macro-params-illegal: - - meta_scope: invalid.illegal.asm.x86_64 - - include: preprocessor-macro-params - preprocessor-macro-params: - - meta_scope: meta.preprocessor.macro.parameters.asm.x86_64 meta.group.asm.x86_64 - - match: '{{valid_identifier}}' - scope: variable.parameter.asm.x86_64 - - match: '\)' - scope: punctuation.section.group.end.asm.x86_64 - set: preprocessor-macro-definition - - match: ',' - scope: punctuation.separator.asm.x86_64 - push: - - match: '{{valid_identifier}}' - scope: variable.parameter.asm.x86_64 - pop: true - - include: line-continuation - - include: preprocessor-comments - - match: '\.\.\.' - scope: keyword.operator.variadic.asm.x86_64 - - match: '(?=\))' - pop: true - - match: '(/\*).*(\*/)' - scope: comment.block.asm.x86_64 - captures: - 1: punctuation.definition.comment.asm.x86_64 - 2: punctuation.definition.comment.asm.x86_64 - - match: '\S+' - scope: invalid.illegal.unexpected-character.asm.x86_64 - - include: line-continuation - - include: preprocessor-comments - - match: '\.\.\.' - scope: keyword.operator.variadic.asm.x86_64 - - match: '(/\*).*(\*/)' - scope: comment.block.asm.x86_64 - captures: - 1: punctuation.definition.comment.asm.x86_64 - 2: punctuation.definition.comment.asm.x86_64 - - match: '$\n' - scope: invalid.illegal.unexpected-end-of-line.asm.x86_64 - preprocessor-macro-definition: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - include: line-continuation - - include: line-ending - - include: main - preprocessor-macro-indirection: - - match: '((%)(\[))' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: meta.brackets.asm.x86_64 punctuation.section.brackets.begin.asm.x86_64 - push: - - meta_scope: meta.brackets.asm.x86_64 meta.preprocessor.macro.asm.x86_64 - - include: line-continuation - - include: line-ending - - include: main - - match: '\]' - scope: punctuation.section.brackets.end.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - pop: true - - match: '((%)\+)\s+' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - - match: '((%)(\?\??))' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: variable.language.preprocessor.asm.x86_64 - - match: '((%\$+)({{valid_identifier}})(?:(\:)?|\b))' - captures: - 1: meta.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 3: entity.name.constant.special.asm.x86_64 - 4: punctuation.separator.asm.x86_64 - - match: '((%)(\!))' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: punctuation.definition.variable.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64 variable.parameter.preprocessor.environment.asm.x86_64 - - match: '{{valid_identifier}}' - scope: variable.parameter.preprocessor.environment.unquoted.asm.x86_64 - pop: true - - match: '(?=`|''|")' - set: - - meta_scope: variable.parameter.preprocessor.environment.quoted.asm.x86_64 - - include: strings - - include: pop - - include: pop - preprocessor-conditions: # also see preprocessor-macro-conditions-multiline - - match: '^\s*((%)ifn?(?:idni?|id|num|str|token|empty|env)?)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-conditions-content-block - - match: '^\s*((%)ifn?(?:def|ctx))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: [preprocessor-conditions-content-block, preprocessor-conditions-constant] - - match: '^\s*((%)rep)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-conditions-content-block - - match: '^\s*((%)ifn?macro)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: [preprocessor-conditions-content-block, preprocessor-macro-arguments-signature] - - include: preprocessor-conditions-parity - preprocessor-conditions-constant: - - meta_content_scope: meta.preprocessor.asm.x86_64 - - match: '(?:{{valid_identifier}})(?=\()' - scope: entity.name.constant.preprocessor.asm.x86_64 - set: - - match: '\(' - scope: punctuation.section.group.begin.asm.x86_64 - set: preprocessor-macro-params-illegal - - match: '{{valid_identifier}}\b' - scope: meta.preprocessor.asm.x86_64 entity.name.constant.preprocessor.asm.x86_64 - pop: true - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - include: main - preprocessor-conditions-content-block: - - meta_content_scope: meta.block.preprocessor.asm.x86_64 - - include: preprocessor-conditions-content-block-common - - include: main - preprocessor-conditions-content-block-common: - - match: '^\s*((%)(?:elifn?(?:idni?|id|num|str|token|empty|env)?|else|exitrep))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - - match: '^\s*((%)(?:elifn?(?:def|ctx)))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-conditions-constant - - match: '^\s*((%)elifn?macro)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-macro-arguments-signature - - match: '^\s*((%)(?:end(?:if|rep)))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - pop: true - preprocessor-conditions-parity: - - match: '^\s*((%)(?:elifn?(?:macro|def|ctx|idni?|id|num|str|token|empty|env)?|else|(?:end(?:if|rep))|exitrep))\b' - captures: - 1: invalid.illegal.meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - preprocessor-other: - - include: preprocessor-macro-indirection - - match: '^\s*((%)undef)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_scope: meta.preprocessor.asm.x86_64 - - include: line-continuation - - include: line-ending - - include: preprocessor-comments - - match: '{{valid_identifier}}' - scope: entity.name.constant.preprocessor.asm.x86_64 - pop: true - - match: '^\s*((%)unmacro)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-macro-arguments-signature - preprocessor-macro-arguments-signature: - - meta_scope: meta.preprocessor.asm.x86_64 - - include: preprocessor-comments - - match: '({{valid_identifier}})(?:\s+(?:(\d+(?:(-)(?:\d+|\*))?)(\+)?(\.nolist\b)?))' - captures: - 1: entity.name.function.preprocessor.asm.x86_64 - 2: variable.parameter.preprocessor.asm.x86_64 - 3: keyword.operator.preprocessor.range.asm.x86_64 - 4: storage.modifier.preprocessor.greedy.asm.x86_64 - 5: storage.modifier.preprocessor.listing.asm.x86_64 - pop: true - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - # multi-line macro - preprocessor-macro-multiline: - - match: '^\s*((%)i?macro)\b' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.define.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - match: '(?:{{valid_identifier}})(?=\()' - scope: entity.name.constant.preprocessor.asm.x86_64 - set: - - meta_content_scope: invalid.illegal.asm.x86_64 - - match: '\(' - scope: punctuation.section.group.begin.asm.x86_64 - set: preprocessor-macro-params-illegal - - match: '({{valid_identifier}})(?:\s+(?:(\d+(?:(-)(?:\d+|\*))?)(\+)?(\.nolist\b)?))' - captures: - 1: entity.name.function.preprocessor.asm.x86_64 - 2: variable.parameter.preprocessor.asm.x86_64 - 3: keyword.operator.preprocessor.range.asm.x86_64 - 4: storage.modifier.preprocessor.greedy.asm.x86_64 - 5: storage.modifier.preprocessor.listing.asm.x86_64 - set: preprocessor-macro-definition-multiline-with-parameters - - match: '^\s*((%)endmacro)\b' - captures: - 1: invalid.illegal.meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - preprocessor-macro-parameter: - - match: '((%)(\-?\d+))' - captures: - 1: meta.preprocessor.asm.x86_64 - 2: punctuation.definition.variable.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 3: variable.other.preprocessor.asm.x86_64 - preprocessor-macro-definition-multiline-with-parameters: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - include: preprocessor-macro-parameter - - include: preprocessor-macro-indirection - - include: preprocessor-macro-conditions-multiline - - include: preprocessor-macro-definition-multiline - preprocessor-macro-definition-multiline: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - match: '^\s*((%)endmacro)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - pop: true - - match: '((%%)({{valid_identifier}})(?:(\:)?|\b))' - captures: - 1: meta.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 3: entity.name.constant.special.asm.x86_64 - 4: punctuation.separator.asm.x86_64 - - match: '((%)({))' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - 3: meta.braces.asm.x86_64 punctuation.section.braces.begin.asm.x86_64 - push: - - meta_scope: meta.braces.asm.x86_64 meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-macro-indirection - - match: ':' - scope: punctuation.separator.asm.x86_64 - - match: '}' - scope: punctuation.section.braces.end.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - pop: true - - match: '^\s*((%)(?:rotate))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.operator.word.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - - match: '^\s*((%)(?:include|depend))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - set: preprocessor-macro-definition-multiline-with-parameters - - match: '^\s*((%)(?:pathsearch))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - set: [preprocessor-macro-definition-multiline-with-parameters, preprocessor-conditions-constant] - - match: '^\s*((%)x?i?define)\b' - captures: - 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-comments - - match: '(?:{{valid_identifier}})(?=\()' - scope: entity.name.function.preprocessor.asm.x86_64 - set: - - match: '\(' - scope: punctuation.section.group.begin.asm.x86_64 - set: preprocessor-macro-params - - match: '{{valid_identifier}}' - scope: entity.name.constant.preprocessor.asm.x86_64 - set: preprocessor-macro-definition-inside-multiline - - include: line-continuation - - include: pop-if-not-whitespace - - include: line-ending - - - include: preprocessor-macro-indirection - - include: preprocessor-conditions - - include: main - preprocessor-macro-conditions-multiline: # also see preprocessor-conditions - - match: '^\s*((%)ifn?(?:idni?|id|num|str|token|empty|env)?)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-conditions-content-block-multiline - - match: '^\s*((%)ifn?(?:def|ctx))\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: [preprocessor-conditions-content-block-multiline, preprocessor-conditions-constant] - - match: '^\s*((%)rep)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: preprocessor-conditions-content-block-multiline - - match: '^\s*((%)ifn?macro)\b' - captures: - 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64 - 2: punctuation.definition.keyword.preprocessor.asm.x86_64 - push: [preprocessor-macro-arguments-signature, preprocessor-conditions-content-block-multiline] - - include: preprocessor-conditions-parity - preprocessor-conditions-content-block-multiline: - - meta_content_scope: meta.block.preprocessor.asm.x86_64 - - include: preprocessor-conditions-content-block-common - - include: preprocessor-macro-definition-multiline-with-parameters - preprocessor-macro-definition-inside-multiline: - - meta_content_scope: meta.preprocessor.macro.asm.x86_64 - - include: preprocessor-macro-parameter - - include: preprocessor-macro-definition - - strings: # Character strings: http://www.nasm.us/doc/nasmdoc3.html#section-3.4.2 - - match: '`' - scope: punctuation.definition.string.begin.asm.x86_64 - push: string-backquote - - match: '''' - scope: punctuation.definition.string.begin.asm.x86_64 - push: string-single - - match: '"' - scope: punctuation.definition.string.begin.asm.x86_64 - push: string-double - string-content: - - match: '\\u[[:xdigit:]]{4}' - scope: constant.character.escape.asm.x86_64 - - match: '\\U[[:xdigit:]]{8}' - scope: constant.character.escape.asm.x86_64 - - match: '\\x[[:xdigit:]]{1,2}' - scope: constant.character.escape.asm.x86_64 - - match: '\\[0-7]{1,3}' - scope: constant.character.escape.asm.x86_64 - - match: '\\[''"`\\?abtnvfre]' - scope: constant.character.escape.asm.x86_64 - - match: '\\.' - scope: invalid.illegal.constant.character.escape.asm.x86_64 - string-backquote: - - meta_scope: string.quoted.other.asm.x86_64 - - meta_include_prototype: false - - include: string-content - - match: '`' - scope: punctuation.definition.string.end - pop: true - string-single: - - meta_scope: string.quoted.single.asm.x86_64 - - meta_include_prototype: false - - match: '''' - scope: punctuation.definition.string.end - pop: true - string-double: - - meta_scope: string.quoted.double.asm.x86_64 - - meta_include_prototype: false - - match: '"' - scope: punctuation.definition.string.end - pop: true - - registers: - - match: '(?i)\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\b' - scope: constant.language.register.general-purpose.asm.x86_64 - - match: '(?i)\b(?:[cdefgs]s)\b' - scope: constant.language.register.segment.asm.x86_64 - - match: '(?i)\b(?:[er]?flags)\b' - scope: constant.language.register.flags.asm.x86_64 - - match: '(?i)\b(?:[er]?ip)\b' - scope: constant.language.register.instruction-pointer.asm.x86_64 - - match: '(?i)\b(?:cr[02-4])\b' - scope: constant.language.register.control.asm.x86_64 - - match: '(?i)\b(?:(?:mm|st|fpr)[0-7])\b' - scope: constant.language.register.mmx.asm.x86_64 - - match: '(?i)\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\b' - scope: constant.language.register.sse_avx.asm.x86_64 - - match: '(?i)\b(?:zmm(?:[12]?[0-9]|30|31))\b' - scope: constant.language.register.avx512.asm.x86_64 - - match: '(?i)\b(?:bnd(?:[0-3]|cfg[su]|status))\b' - scope: constant.language.register.memory-protection.asm.x86_64 - - match: '(?i)\b(?:(?:[gil]dt)r?|tr)\b' - scope: constant.language.register.system-table-pointer.asm.x86_64 - - match: '(?i)\b(?:dr[0-367])\b' - scope: constant.language.register.debug.asm.x86_64 - - match: '(?i)\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\b' - scope: constant.language.register.amd.asm.x86_64 - - match: '(?i)\b(?:db[0-367]|t[67]|tr[3-7]|st)\b' - scope: invalid.deprecated.constant.language.register.asm.x86_64 - - match: '(?i)\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\b' - scope: invalid.deprecated.constant.language.register.asm.x86_64 - - mnemonics: # see valid.asm for references - - include: mnemonics-general-purpose - - include: mnemonics-fpu - - include: mnemonics-mmx - - include: mnemonics-sse - - include: mnemonics-sse2 - - include: mnemonics-sse3 - - include: mnemonics-sse4 - - include: mnemonics-aesni - - include: mnemonics-avx - - include: mnemonics-avx2 - - include: mnemonics-tsx - - include: mnemonics-system - - include: mnemonics-64bit - - include: mnemonics-vmx - - include: mnemonics-smx - - include: mnemonics-intel-isa-sgx - - include: mnemonics-intel-isa-mpx - - include: mnemonics-intel-isa-sha - - include: mnemonics-supplemental-amd - - include: mnemonics-supplemental-cyrix - - include: mnemonics-supplemental-via - - include: mnemonics-undocumented - - include: mnemonics-future-intel - - include: mnemonics-pseudo-ops - #- include: mnemonics-invalid - mnemonics-general-purpose: - - match: '(?i)\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\b' - scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.mov - - match: '(?i)\b(xchg|bswap|xadd|cmpxchg(8b)?)\b' - scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg - - match: '(?i)\b((push|pop)(ad?)?|cwde?|cdq|cbw)\b' - scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.other - - match: '(?i)\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\b' - scope: keyword.operator.word.mnemonic.general-purpose.binary-arithmetic - - match: '(?i)\b(daa|das|aaa|aas|aam|aad)\b' - scope: keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic - - match: '(?i)\b(and|x?or|not)\b' - scope: keyword.operator.word.mnemonic.general-purpose.logical - - match: '(?i)\b(s[ah][rl]|sh[rl]d|r[co][rl])\b' - scope: keyword.operator.word.mnemonic.general-purpose.rotate - - match: '(?i)\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\b' - scope: keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set - - match: '(?i)\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\b' - scope: keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other - - match: '(?i)\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\b' - scope: keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp - - match: '(?i)\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\b' - scope: keyword.operator.word.mnemonic.general-purpose.control-transfer.other - - match: '(?i)\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\b' - scope: keyword.operator.word.mnemonic.general-purpose.strings - - match: '(?i)\b((in|out)(s[bdw]?)?)\b' - scope: keyword.operator.word.mnemonic.general-purpose.io - - match: '(?i)\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\b' - scope: keyword.operator.word.mnemonic.general-purpose.flag-control - - match: '(?i)\b(l[defgs]s)\b' - scope: keyword.operator.word.mnemonic.general-purpose.segment-registers - - match: '(?i)\b(lea|nop|ud2|xlatb?|cpuid|movbe)\b' - scope: keyword.operator.word.mnemonic.general-purpose.misc - - match: '(?i)\b(rdrand|rdseed)\b' - scope: keyword.operator.word.mnemonic.general-purpose.rng - - match: '(?i)\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\b' - scope: keyword.operator.word.mnemonic.general-purpose.bmi - mnemonics-fpu: - - match: '(?i)\b(fcmov(n?([beu]|be)))\b' - scope: keyword.operator.word.mnemonic.fpu.data-transfer.mov - - match: '(?i)\b(f(i?(ld|stp?)|b(ld|stp)|xch))\b' - scope: keyword.operator.word.mnemonic.fpu.data-transfer.other - - match: '(?i)\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\b' - scope: keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic - - match: '(?i)\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\b' - scope: keyword.operator.word.mnemonic.fpu.basic-arithmetic.other - - match: '(?i)\b(f(u?com[ip]?p?|icomp?|tst|xam))\b' - scope: keyword.operator.word.mnemonic.fpu.comparison - - match: '(?i)\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\b' - scope: keyword.operator.word.mnemonic.fpu.transcendental - - match: '(?i)\b(fld(1|z|pi|l2[et]|l[ng]2))\b' - scope: keyword.operator.word.mnemonic.fpu.load-constants - - match: '(?i)\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\b' - scope: keyword.operator.word.mnemonic.fpu.control-management - - match: '(?i)\b(fx(save|rstor)(64)?)\b' - scope: keyword.operator.word.mnemonic.fpu.state-management - mnemonics-mmx: - - match: '(?i)\b(mov[dq])\b' - scope: keyword.operator.word.mnemonic.mmx.data-transfer - - match: '(?i)\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\b' - scope: keyword.operator.word.mnemonic.mmx.conversion - - match: '(?i)\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\b' - scope: keyword.operator.word.mnemonic.mmx.packed-arithmetic - - match: '(?i)\b(pcmp((eq|gt)[bdw]))\b' - scope: keyword.operator.word.mnemonic.mmx.comparison - - match: '(?i)\b(pandn?|px?or)\b' - scope: keyword.operator.word.mnemonic.mmx.logical - - match: '(?i)\b(ps([rl]l[dwq]|raw|rad))\b' - scope: keyword.operator.word.mnemonic.mmx.shift-and-rotate - - match: '(?i)\b(emms)\b' - scope: keyword.operator.word.mnemonic.mmx.state-management - mnemonics-sse: - - match: '(?i)\b(mov(([ahlu]|hl|lh|msk)ps|ss))\b' - scope: keyword.operator.word.mnemonic.sse.data-transfer - - match: '(?i)\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\b' - scope: keyword.operator.word.mnemonic.sse.packed-arithmetic - - match: '(?i)\b(cmp[ps]s|u?comiss)\b' - scope: keyword.operator.word.mnemonic.sse.comparison - - match: '(?i)\b((andn?|x?or)ps)\b' - scope: keyword.operator.word.mnemonic.sse.logical - - match: '(?i)\b((shuf|unpck[hl])ps)\b' - scope: keyword.operator.word.mnemonic.sse.shuffle-and-unpack - - match: '(?i)\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\b' - scope: keyword.operator.word.mnemonic.sse.conversion - - match: '(?i)\b((ld|st)mxcsr)\b' - scope: keyword.operator.word.mnemonic.sse.state-management - - match: '(?i)\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\b' - scope: keyword.operator.word.mnemonic.sse.simd-integer - - match: '(?i)\b(maskmovq|movntps|sfence)\b' - scope: keyword.operator.word.mnemonic.sse.cacheability-control - - match: '(?i)\b(prefetch(nta|t[0-2]|w(t1)?))\b' - scope: keyword.operator.word.mnemonic.sse.prefetch - mnemonics-sse2: - - match: '(?i)\b(mov([auhl]|msk)pd)\b' - scope: keyword.operator.word.mnemonic.sse2.data-transfer - - match: '(?i)\b((add|div|max|min|mul|sub|sqrt)[ps]d)\b' - scope: keyword.operator.word.mnemonic.sse2.packed-arithmetic - - match: '(?i)\b((andn?|x?or)pd)\b' - scope: keyword.operator.word.mnemonic.sse2.logical - - match: '(?i)\b((cmpp|u?comis)d)\b' - scope: keyword.operator.word.mnemonic.sse2.compare - - match: '(?i)\b((shuf|unpck[hl])pd)\b' - scope: keyword.operator.word.mnemonic.sse2.shuffle-and-unpack - - match: '(?i)\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\b' - scope: keyword.operator.word.mnemonic.sse2.conversion - - match: '(?i)\b(cvt(dq2ps|ps2dq|tps2dq))\b' - scope: keyword.operator.word.mnemonic.sse2.packed-floating-point - - match: '(?i)\b(mov(dq[au]|q2dq|dq2q))\b' - scope: keyword.operator.word.mnemonic.sse2.simd-integer.mov - - match: '(?i)\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\b' - scope: keyword.operator.word.mnemonic.sse2.simd-integer.other - - match: '(?i)\b(clflush|[lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\b' - scope: keyword.operator.word.mnemonic.sse2.cacheability-control - mnemonics-sse3: - - match: '(?i)\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\b' - scope: keyword.operator.word.mnemonic.sse3 - - match: '(?i)\b(ph(add|sub)(s?w|d))\b' - scope: keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic - - match: '(?i)\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\b' - scope: keyword.operator.word.mnemonic.sse3.supplimental.other - mnemonics-sse4: - - match: '(?i)\b(pmul(ld|dq)|dpp[ds])\b' - scope: keyword.operator.word.mnemonic.sse4.1.arithmetic - - match: '(?i)\b(movntdqa)\b' - scope: keyword.operator.word.mnemonic.sse4.1.load-hint - - match: '(?i)\b(blendv?p[ds]|pblend(vb|w))\b' - scope: keyword.operator.word.mnemonic.sse4.1.packed-blending - - match: '(?i)\b(p(min|max)(u[dw]|s[bd]))\b' - scope: keyword.operator.word.mnemonic.sse4.1.packed-integer - - match: '(?i)\b(round[ps][sd])\b' - scope: keyword.operator.word.mnemonic.sse4.1.packed-floating-point - - match: '(?i)\b((extract|insert)ps|p((ins|ext)(r[bdq])))\b' - scope: keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction - - match: '(?i)\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\b' - scope: keyword.operator.word.mnemonic.sse4.1.conversion - - match: '(?i)\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\b' - scope: keyword.operator.word.mnemonic.sse4.1.other - - match: '(?i)\b(pcmp([ei]str[im]|gtq))\b' - scope: keyword.operator.word.mnemonic.sse4.2 - mnemonics-aesni: - - match: '(?i)\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\b' - scope: keyword.operator.word.mnemonic.aesni - mnemonics-avx: - - match: '(?i)\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\b' - scope: keyword.operator.word.mnemonic.avx - - match: '(?i)\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\b' - scope: keyword.operator.word.mnemonic.avx.promoted.aes - - match: '(?i)\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.comparison - - match: '(?i)\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.conversion - - match: '(?i)\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic - - match: '(?i)\b(v((andn?|x?or)p[ds]))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.logical - - match: '(?i)\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.mov - - match: '(?i)\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic - - match: '(?i)\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.packed-conversion - - match: '(?i)\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\b' - scope: keyword.operator.word.mnemonic.avx.promoted.packed-shuffle - - match: '(?i)\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic - - match: '(?i)\b(vp(andn?|x?or))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.logical - - match: '(?i)\b(vpblend(vb|w))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.blending - - match: '(?i)\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.mov - - match: '(?i)\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.simd-integer - - match: '(?i)\b(vp(sra[dwq]|srl[dqw]))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate - - match: '(?i)\b(vblendv?p[ds])\b' - scope: keyword.operator.word.mnemonic.avx.promoted.packed-blending - - match: '(?i)\b(vp(test|alignr))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.packed-other - - match: '(?i)\b(vmov(d(dup|qa|qu)?))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov - - match: '(?i)\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.other - - match: '(?i)\b(v(maskmovdqu|movntdqa?))\b' - scope: keyword.operator.word.mnemonic.avx.promoted.cacheability-control - - match: '(?i)\b(vcvt(ph2ps|ps2ph))\b' - scope: keyword.operator.word.mnemonic.16-bit-floating-point-conversion - - match: '(?i)\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\b' - scope: keyword.operator.word.mnemonic.fma - mnemonics-avx2: - - match: '(?i)\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\b' - scope: keyword.operator.word.mnemonic.avx2.promoted.simd - - match: '(?i)\b(vpbroadcast[bdqw])\b' - scope: keyword.operator.word.mnemonic.avx2.promoted.packed - - match: '(?i)\b(vp(blendd|s[lr]lv[dq]|sravd))\b' - scope: keyword.operator.word.mnemonic.avx2.blend - - match: '(?i)\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\b' - scope: keyword.operator.word.mnemonic.avx2.gather - mnemonics-tsx: - - match: '(?i)\b(x(abort|acquire|release|begin|end|test))\b' - scope: keyword.operator.word.mnemonic.tsx - mnemonics-system: - - match: '(?i)\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\b' - scope: keyword.operator.word.mnemonic.system - - match: '(?i)\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\b' - scope: keyword.operator.word.mnemonic.system - - match: '(?i)\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\b' - scope: keyword.operator.word.mnemonic.system - mnemonics-64bit: - - match: '(?i)\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\b' - scope: keyword.operator.word.mnemonic.64-bit-mode - mnemonics-vmx: - - match: '(?i)\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\b' - scope: keyword.operator.word.mnemonic.vmx - mnemonics-smx: - - match: '(?i)\b(getsec)\b' - scope: keyword.operator.word.mnemonic.smx.getsec - - match: '(?i)\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\b' - scope: support.constant - mnemonics-intel-isa-sgx: - - match: '(?i)\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\b' - scope: keyword.operator.word.mnemonic.sgx1.supervisor - - match: '(?i)\be(enter|exit|getkey|report|resume)\b' - scope: keyword.operator.word.mnemonic.sgx1.user - - match: '(?i)\be(aug|mod(pr|t))\b' - scope: keyword.operator.word.mnemonic.sgx2.supervisor - - match: '(?i)\be(accept(copy)?|modpe)\b' - scope: keyword.operator.word.mnemonic.sgx2.user - mnemonics-intel-isa-mpx: - - match: '(?i)\b(bnd(mk|c[lnu]|mov|ldx|stx))\b' - scope: keyword.operator.word.mnemonic.mpx - mnemonics-intel-isa-sha: - - match: '(?i)\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\b' - scope: keyword.operator.word.mnemonic.sha - mnemonics-supplemental-amd: - - match: '(?i)\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.general-purpose - - match: '(?i)\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.system - - match: '(?i)\b([ls]lwpcb|lwp(ins|val))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.profiling - - match: '(?i)\b(movnts[ds])\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.memory-management - - match: '(?i)\b(prefetch|clzero)\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.cache-management - - match: '(?i)\b((extr|insert)q)\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.sse4.a - - match: '(?i)\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.fma4 - - match: '(?i)\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.xop.simd - - match: '(?i)\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal - - match: '(?i)\b(vfrcz[ps][ds]|vpermil2p[ds])\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.xop.other - - match: '(?i)\b(femms)\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow - - match: '(?i)\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd - - match: '(?i)\b(pfcmp(eq|ge|gt))\b' - scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison - mnemonics-supplemental-cyrix: - - match: '(?i)\b((sv|rs)dc|(wr|rd)shr|paddsiw)\b' - scope: keyword.operator.word.mnemonic.supplemental.cyrix - mnemonics-supplemental-via: - - match: '(?i)\b(montmul)\b' - scope: keyword.operator.word.mnemonic.supplemental.via - - match: '(?i)\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\b' - scope: keyword.operator.word.mnemonic.supplemental.via.padlock - mnemonics-undocumented: - - match: '(?i)\b(ret[nf]|icebp|int1|int03|smi|ud1)\b' - scope: keyword.operator.word.mnemonic.undocumented - mnemonics-future-intel: - - include: mnemonics-future-intel-avx512 - - include: mnemonics-future-intel-opmask - - include: mnemonics-future-intel-cet - - include: mnemonics-future-intel-other - mnemonics-future-intel-avx512: - - match: '(?i)\b(vblendm(pd|ps)|vpblendm[bdqw])\b' - scope: keyword.operator.word.mnemonic.avx512.blend - - match: '(?i)\b(vbroadcast[fi](32x[248]|64x[24])|v(extract|insert)[fi](32x[48]|64x[24])|vshuf[fi](32x4|64x2)|vpbroadcastm(b2q|w2d))\b' - scope: keyword.operator.word.mnemonic.avx512.bits-mov - - match: '(?i)\b(v(compress|expand)p[ds]|vp(compress|expand|conflict)[dq])\b' - scope: keyword.operator.word.mnemonic.avx512.compress - - match: '(?i)\b(vcvt(t?p[sd]2(udq|u?qq)|(udq|u?qq)2p[ds]|t?s[ds]2usi|usi2s[ds]))\b' - scope: keyword.operator.word.mnemonic.avx512.conversion - - match: '(?i)\b(v(fixupimm|fpclass|get(exp|mant)|range|(rcp|rsqrt)(14|28)|reduce|rndscale|scalef)([ps][ds]))\b' - scope: keyword.operator.word.mnemonic.avx512.math - - match: '(?i)\b(v(exp2p[ds]|(scatter|(gather|scatter)pf[01])[dq]p[ds]))\b' - scope: keyword.operator.word.mnemonic.avx512.math - - match: '(?i)\b(vmovdq(a(32|64)|u(8|16|32|64)))\b' - scope: keyword.operator.word.mnemonic.avx512.simd-integer - - match: '(?i)\b(vp(andn?|x?or)[dq])\b' - scope: keyword.operator.word.mnemonic.avx512.logical - - match: '(?i)\b(vpcmpu?[dqw])\b' - scope: keyword.operator.word.mnemonic.avx512.packed-comparison - - match: '(?i)\b(vp(absq|(lzcnt|ternlog)[dq]|madd52[lh]uq|(max|min)[su]q|mullq))\b' - scope: keyword.operator.word.mnemonic.avx512.packed-math - - match: '(?i)\b(vpmov(m2[bdqw]|[bdqw]2m|(u?s)?([qd][bw]|qd|wb)))\b' - scope: keyword.operator.word.mnemonic.avx512.packed-mov - - match: '(?i)\b(vp(ro[rl]v?[dq]|scatter[dq][dq]))\b' - scope: keyword.operator.word.mnemonic.avx512.packed-shift - - match: '(?i)\b(vptestn?m[bdqw])\b' - scope: keyword.operator.word.mnemonic.avx512.packed-test - - match: '(?i)\b(vperm([bdw]|[it]2([bdwq]|p[ds])))\b' - scope: keyword.operator.word.mnemonic.avx512.permutations - - match: '(?i)\b(valign[dq]|vdbpsadbw|vpmultishiftqb|vpsrav[dqw])\b' - scope: keyword.operator.word.mnemonic.avx512.other - mnemonics-future-intel-opmask: - - match: '(?i)\b(k(add|andn?|(xn?)?or|mov|not|(or)?test|shift[lr])[bdqw]|kunpck(bw|wd|dq))\b' - scope: keyword.operator.word.mnemonic.opmask - mnemonics-future-intel-cet: - - match: '(?i)\b((inc|save|rstor)ssp|wru?ss|(set|clr)ssbsy|endbranch|endbr(32|64))\b' - scope: keyword.operator.word.mnemonic.cet - mnemonics-future-intel-other: - - match: '(?i)\b(clflushopt|clwb|pcommit)\b' - scope: keyword.operator.word.mnemonic.other - mnemonics-pseudo-ops: - - match: '(?i)\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\b' - scope: keyword.pseudo-mnemonic.sse2.compare - - match: '(?i)\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\b' - scope: keyword.pseudo-mnemonic.avx.promoted.aes - - match: '(?i)\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\b' - scope: keyword.pseudo-mnemonic.avx.promoted.comparison - - match: '(?i)\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\b' - scope: keyword.pseudo-mnemonic.supplemental.amd.xop.simd - mnemonics-invalid: - - include: mnemonics-invalid-amd-sse5 - mnemonics-invalid-amd-sse5: - - match: '(?i)\b(com[ps][ds]|pcomu?[bdqw])\b' - scope: invalid.keyword.operator.word.mnemonic.sse5.comparison - - match: '(?i)\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\b' - scope: invalid.keyword.operator.word.mnemonic.sse5.conversion - - match: '(?i)\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\b' - scope: invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic - - match: '(?i)\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\b' - scope: invalid.keyword.operator.word.mnemonic.sse5.simd-integer -... \ No newline at end of file diff --git a/assets/syntaxes/CMake C Header.sublime-syntax b/assets/syntaxes/CMake C Header.sublime-syntax deleted file mode 100644 index 105d655..0000000 --- a/assets/syntaxes/CMake C Header.sublime-syntax +++ /dev/null @@ -1,40 +0,0 @@ -%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 diff --git a/assets/syntaxes/CMake C++ Header.sublime-syntax b/assets/syntaxes/CMake C++ Header.sublime-syntax deleted file mode 100644 index 344860d..0000000 --- a/assets/syntaxes/CMake C++ Header.sublime-syntax +++ /dev/null @@ -1,40 +0,0 @@ -%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 diff --git a/assets/syntaxes/CMake.sublime-syntax b/assets/syntaxes/CMake.sublime-syntax deleted file mode 100644 index d3578a5..0000000 --- a/assets/syntaxes/CMake.sublime-syntax +++ /dev/null @@ -1,671 +0,0 @@ -%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 , 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 diff --git a/assets/syntaxes/CMakeCache.sublime-syntax b/assets/syntaxes/CMakeCache.sublime-syntax deleted file mode 100644 index b8fbfde..0000000 --- a/assets/syntaxes/CMakeCache.sublime-syntax +++ /dev/null @@ -1,54 +0,0 @@ -%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 diff --git a/assets/syntaxes/CMakeCommands.sublime-syntax b/assets/syntaxes/CMakeCommands.sublime-syntax deleted file mode 100644 index 5d95c53..0000000 --- a/assets/syntaxes/CMakeCommands.sublime-syntax +++ /dev/null @@ -1,2328 +0,0 @@ -%YAML 1.2 ---- -# Automatically generated file -- do not edit! -contexts: - add_compile_options-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - add_custom_command-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bOUTPUT\b - scope: variable.parameter.OUTPUT.cmake - - match: \bCOMMAND\b - scope: variable.parameter.COMMAND.cmake - - match: \bARGS\b - scope: variable.parameter.ARGS.cmake - - match: \bMAIN_DEPENDENCY\b - scope: variable.parameter.MAIN_DEPENDENCY.cmake - - match: \bDEPENDS\b - scope: variable.parameter.DEPENDS.cmake - - match: \bBYPRODUCTS\b - scope: variable.parameter.BYPRODUCTS.cmake - - match: \bIMPLICIT_DEPENDS\b - scope: variable.parameter.IMPLICIT_DEPENDS.cmake - - match: \bWORKING_DIRECTORY\b - scope: variable.parameter.WORKING_DIRECTORY.cmake - - match: \bCOMMENT\b - scope: variable.parameter.COMMENT.cmake - - match: \bDEPFILE\b - scope: variable.parameter.DEPFILE.cmake - - match: \bVERBATIM\b - scope: variable.parameter.VERBATIM.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bUSES_TERMINAL COMMAND_EXPAND_LISTS\b - scope: variable.parameter.USES_TERMINAL COMMAND_EXPAND_LISTS.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bPRE_BUILD\b - scope: variable.parameter.PRE_BUILD.cmake - - match: \bPRE_LINK\b - scope: variable.parameter.PRE_LINK.cmake - - match: \bPOST_BUILD\b - scope: variable.parameter.POST_BUILD.cmake - - include: scope:source.cmake#args-common - add_custom_target-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bALL\b - scope: variable.parameter.ALL.cmake - - match: \bCOMMAND\b - scope: variable.parameter.COMMAND.cmake - - match: \bDEPENDS\b - scope: variable.parameter.DEPENDS.cmake - - match: \bBYPRODUCTS\b - scope: variable.parameter.BYPRODUCTS.cmake - - match: \bWORKING_DIRECTORY\b - scope: variable.parameter.WORKING_DIRECTORY.cmake - - match: \bCOMMENT\b - scope: variable.parameter.COMMENT.cmake - - match: \bVERBATIM\b - scope: variable.parameter.VERBATIM.cmake - - match: \bUSES_TERMINAL\b - scope: variable.parameter.USES_TERMINAL.cmake - - match: \bCOMMAND_EXPAND_LISTS\b - scope: variable.parameter.COMMAND_EXPAND_LISTS.cmake - - match: \bSOURCES\b - scope: variable.parameter.SOURCES.cmake - - include: scope:source.cmake#args-common - add_definitions-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - add_dependencies-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - add_executable-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bWIN32\b - scope: variable.parameter.WIN32.cmake - - match: \bMACOSX_BUNDLE\b - scope: variable.parameter.MACOSX_BUNDLE.cmake - - match: \bEXCLUDE_FROM_ALL\b - scope: variable.parameter.EXCLUDE_FROM_ALL.cmake - - match: \bIMPORTED\b - scope: variable.parameter.IMPORTED.cmake - - match: \bGLOBAL\b - scope: variable.parameter.GLOBAL.cmake - - match: \bALIAS\b - scope: variable.parameter.ALIAS.cmake - - include: scope:source.cmake#args-common - add_library-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bSTATIC\b - scope: variable.parameter.STATIC.cmake - - match: \bSHARED\b - scope: variable.parameter.SHARED.cmake - - match: \bMODULE\b - scope: variable.parameter.MODULE.cmake - - match: \bEXCLUDE_FROM_ALL\b - scope: variable.parameter.EXCLUDE_FROM_ALL.cmake - - match: \bUNKNOWN\b - scope: variable.parameter.UNKNOWN.cmake - - match: \bIMPORTED\b - scope: variable.parameter.IMPORTED.cmake - - match: \bGLOBAL\b - scope: variable.parameter.GLOBAL.cmake - - match: \bOBJECT\b - scope: variable.parameter.OBJECT.cmake - - match: \bALIAS\b - scope: variable.parameter.ALIAS.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - include: scope:source.cmake#args-common - add_subdirectory-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXCLUDE_FROM_ALL\b - scope: variable.parameter.EXCLUDE_FROM_ALL.cmake - - include: scope:source.cmake#args-common - add_test-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNAME\b - scope: variable.parameter.NAME.cmake - - match: \bCOMMAND\b - scope: variable.parameter.COMMAND.cmake - - match: \bCONFIGURATIONS\b - scope: variable.parameter.CONFIGURATIONS.cmake - - match: \bWORKING_DIRECTORY\b - scope: variable.parameter.WORKING_DIRECTORY.cmake - - include: scope:source.cmake#args-common - aux_source_directory-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - build_command-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCONFIGURATION\b - scope: variable.parameter.CONFIGURATION.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bPROJECT_NAME\b - scope: variable.parameter.PROJECT_NAME.cmake - - include: scope:source.cmake#args-common - build_name-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - cmake_host_system_information-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bRESULT\b - scope: variable.parameter.RESULT.cmake - - match: \bQUERY\b - scope: variable.parameter.QUERY.cmake - - include: scope:source.cmake#args-common - cmake_minimum_required-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bVERSION\b - scope: variable.parameter.VERSION.cmake - - match: \bFATAL_ERROR\b - scope: variable.parameter.FATAL_ERROR.cmake - - include: scope:source.cmake#args-common - cmake_parse_arguments-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - cmake_policy-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bVERSION\b - scope: variable.parameter.VERSION.cmake - - match: \bGET\b - scope: variable.parameter.GET.cmake - - match: \bSET\b - scope: variable.parameter.SET.cmake - - match: \bNEW\b - scope: variable.parameter.NEW.cmake - - match: \bOLD\b - scope: variable.parameter.OLD.cmake - - match: \bPUSH\b - scope: variable.parameter.PUSH.cmake - - match: \bPOP\b - scope: variable.parameter.POP.cmake - - include: scope:source.cmake#args-common - configure_file-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCOPYONLY\b - scope: variable.parameter.COPYONLY.cmake - - match: \bESCAPE_QUOTES\b - scope: variable.parameter.ESCAPE_QUOTES.cmake - - match: \b@ONLY\b - scope: variable.parameter.@ONLY.cmake - - match: \bNEWLINE_STYLE\b - scope: variable.parameter.NEWLINE_STYLE.cmake - - include: scope:source.cmake#args-common - create_test_sourcelist-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXTRA_INCLUDE\b - scope: variable.parameter.EXTRA_INCLUDE.cmake - - match: \bFUNCTION\b - scope: variable.parameter.FUNCTION.cmake - - include: scope:source.cmake#args-common - ctest_build-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bBUILD\b - scope: variable.parameter.BUILD.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bCONFIGURATION\b - scope: variable.parameter.CONFIGURATION.cmake - - match: \bFLAGS\b - scope: variable.parameter.FLAGS.cmake - - match: \bPROJECT_NAME\b - scope: variable.parameter.PROJECT_NAME.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bNUMBER_ERRORS\b - scope: variable.parameter.NUMBER_ERRORS.cmake - - match: \bNUMBER_WARNINGS\b - scope: variable.parameter.NUMBER_WARNINGS.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bCAPTURE_CMAKE_ERROR\b - scope: variable.parameter.CAPTURE_CMAKE_ERROR.cmake - - include: scope:source.cmake#args-common - ctest_configure-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bBUILD\b - scope: variable.parameter.BUILD.cmake - - match: \bSOURCE\b - scope: variable.parameter.SOURCE.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bOPTIONS\b - scope: variable.parameter.OPTIONS.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - match: \bCAPTURE_CMAKE_ERROR\b - scope: variable.parameter.CAPTURE_CMAKE_ERROR.cmake - - include: scope:source.cmake#args-common - ctest_coverage-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bBUILD\b - scope: variable.parameter.BUILD.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bLABELS\b - scope: variable.parameter.LABELS.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bCAPTURE_CMAKE_ERROR\b - scope: variable.parameter.CAPTURE_CMAKE_ERROR.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - include: scope:source.cmake#args-common - ctest_empty_binary_directory-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - ctest_memcheck-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bBUILD\b - scope: variable.parameter.BUILD.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bSTART\b - scope: variable.parameter.START.cmake - - match: \bEND\b - scope: variable.parameter.END.cmake - - match: \bSTRIDE\b - scope: variable.parameter.STRIDE.cmake - - match: \bEXCLUDE\b - scope: variable.parameter.EXCLUDE.cmake - - match: \bINCLUDE\b - scope: variable.parameter.INCLUDE.cmake - - match: \bEXCLUDE_LABEL\b - scope: variable.parameter.EXCLUDE_LABEL.cmake - - match: \bINCLUDE_LABEL\b - scope: variable.parameter.INCLUDE_LABEL.cmake - - match: \bPARALLEL_LEVEL\b - scope: variable.parameter.PARALLEL_LEVEL.cmake - - match: \bTEST_LOAD\b - scope: variable.parameter.TEST_LOAD.cmake - - match: \bSCHEDULE_RANDOM\b - scope: variable.parameter.SCHEDULE_RANDOM.cmake - - match: \bSTOP_TIME\b - scope: variable.parameter.STOP_TIME.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bDEFECT_COUNT\b - scope: variable.parameter.DEFECT_COUNT.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - include: scope:source.cmake#args-common - ctest_read_custom_files-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - ctest_run_script-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNEW_PROCESS\b - scope: variable.parameter.NEW_PROCESS.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - include: scope:source.cmake#args-common - ctest_sleep-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - ctest_start-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bTRACK\b - scope: variable.parameter.TRACK.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - include: scope:source.cmake#args-common - ctest_submit-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bPARTS\b - scope: variable.parameter.PARTS.cmake - - match: \bFILES\b - scope: variable.parameter.FILES.cmake - - match: \bRETRY_COUNT\b - scope: variable.parameter.RETRY_COUNT.cmake - - match: \bRETRY_DELAY\b - scope: variable.parameter.RETRY_DELAY.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - match: \bCDASH_UPLOAD\b - scope: variable.parameter.CDASH_UPLOAD.cmake - - match: \bCDASH_UPLOAD_TYPE\b - scope: variable.parameter.CDASH_UPLOAD_TYPE.cmake - - include: scope:source.cmake#args-common - ctest_test-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bBUILD\b - scope: variable.parameter.BUILD.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bSTART\b - scope: variable.parameter.START.cmake - - match: \bEND\b - scope: variable.parameter.END.cmake - - match: \bSTRIDE\b - scope: variable.parameter.STRIDE.cmake - - match: \bEXCLUDE\b - scope: variable.parameter.EXCLUDE.cmake - - match: \bINCLUDE\b - scope: variable.parameter.INCLUDE.cmake - - match: \bEXCLUDE_LABEL\b - scope: variable.parameter.EXCLUDE_LABEL.cmake - - match: \bINCLUDE_LABEL\b - scope: variable.parameter.INCLUDE_LABEL.cmake - - match: \bPARALLEL_LEVEL\b - scope: variable.parameter.PARALLEL_LEVEL.cmake - - match: \bTEST_LOAD\b - scope: variable.parameter.TEST_LOAD.cmake - - match: \bSCHEDULE_RANDOM\b - scope: variable.parameter.SCHEDULE_RANDOM.cmake - - match: \bSTOP_TIME\b - scope: variable.parameter.STOP_TIME.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bCAPTURE_CMAKE_ERROR\b - scope: variable.parameter.CAPTURE_CMAKE_ERROR.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - include: scope:source.cmake#args-common - ctest_update-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bSOURCE\b - scope: variable.parameter.SOURCE.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - include: scope:source.cmake#args-common - ctest_upload-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bFILES\b - scope: variable.parameter.FILES.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - match: \bCAPTURE_CMAKE_ERROR\b - scope: variable.parameter.CAPTURE_CMAKE_ERROR.cmake - - include: scope:source.cmake#args-common - define_property-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bGLOBAL\b - scope: variable.parameter.GLOBAL.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bSOURCE\b - scope: variable.parameter.SOURCE.cmake - - match: \bTEST\b - scope: variable.parameter.TEST.cmake - - match: \bVARIABLE\b - scope: variable.parameter.VARIABLE.cmake - - match: \bCACHED_VARIABLE\b - scope: variable.parameter.CACHED_VARIABLE.cmake - - match: \bPROPERTY\b - scope: variable.parameter.PROPERTY.cmake - - match: \bINHERITED\b - scope: variable.parameter.INHERITED.cmake - - match: \bBRIEF_DOCS\b - scope: variable.parameter.BRIEF_DOCS.cmake - - match: \bFULL_DOCS\b - scope: variable.parameter.FULL_DOCS.cmake - - include: scope:source.cmake#args-common - enable_language-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bOPTIONAL\b - scope: variable.parameter.OPTIONAL.cmake - - include: scope:source.cmake#args-common - enable_testing-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - exec_program-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bARGS\b - scope: variable.parameter.ARGS.cmake - - match: \bOUTPUT_VARIABLE\b - scope: variable.parameter.OUTPUT_VARIABLE.cmake - - match: \bRETURN_VALUE\b - scope: variable.parameter.RETURN_VALUE.cmake - - include: scope:source.cmake#args-common - execute_process-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCOMMAND\b - scope: variable.parameter.COMMAND.cmake - - match: \bWORKING_DIRECTORY\b - scope: variable.parameter.WORKING_DIRECTORY.cmake - - match: \bTIMEOUT\b - scope: variable.parameter.TIMEOUT.cmake - - match: \bRESULT_VARIABLE\b - scope: variable.parameter.RESULT_VARIABLE.cmake - - match: \bOUTPUT_VARIABLE\b - scope: variable.parameter.OUTPUT_VARIABLE.cmake - - match: \bERROR_VARIABLE\b - scope: variable.parameter.ERROR_VARIABLE.cmake - - match: \bINPUT_FILE\b - scope: variable.parameter.INPUT_FILE.cmake - - match: \bOUTPUT_FILE\b - scope: variable.parameter.OUTPUT_FILE.cmake - - match: \bERROR_FILE\b - scope: variable.parameter.ERROR_FILE.cmake - - match: \bOUTPUT_QUIET\b - scope: variable.parameter.OUTPUT_QUIET.cmake - - match: \bERROR_QUIET\b - scope: variable.parameter.ERROR_QUIET.cmake - - match: \bOUTPUT_STRIP_TRAILING_WHITESPACE\b - scope: variable.parameter.OUTPUT_STRIP_TRAILING_WHITESPACE.cmake - - match: \bERROR_STRIP_TRAILING_WHITESPACE\b - scope: variable.parameter.ERROR_STRIP_TRAILING_WHITESPACE.cmake - - match: \bENCODING\b - scope: variable.parameter.ENCODING.cmake - - include: scope:source.cmake#args-common - export-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXPORT\b - scope: variable.parameter.EXPORT.cmake - - match: \bNAMESPACE\b - scope: variable.parameter.NAMESPACE.cmake - - match: \bFILE\b - scope: variable.parameter.FILE.cmake - - match: \bTARGETS\b - scope: variable.parameter.TARGETS.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bEXPORT_LINK_INTERFACE_LIBRARIES\b - scope: variable.parameter.EXPORT_LINK_INTERFACE_LIBRARIES.cmake - - match: \bPACKAGE\b - scope: variable.parameter.PACKAGE.cmake - - match: \bANDROID_MK\b - scope: variable.parameter.ANDROID_MK.cmake - - include: scope:source.cmake#args-common - export_library_dependencies-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - include: scope:source.cmake#args-common - file-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bWRITE\b - scope: variable.parameter.WRITE.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bREAD\b - scope: variable.parameter.READ.cmake - - match: \bOFFSET\b - scope: variable.parameter.OFFSET.cmake - - match: \bLIMIT\b - scope: variable.parameter.LIMIT.cmake - - match: \bHEX\b - scope: variable.parameter.HEX.cmake - - match: \bSTRINGS\b - scope: variable.parameter.STRINGS.cmake - - match: \bHASH\b - scope: variable.parameter.HASH.cmake - - match: \bGLOB\b - scope: variable.parameter.GLOB.cmake - - match: \bLIST_DIRECTORIES\b - scope: variable.parameter.LIST_DIRECTORIES.cmake - - match: \bRELATIVE\b - scope: variable.parameter.RELATIVE.cmake - - match: \bGLOB_RECURSE\b - scope: variable.parameter.GLOB_RECURSE.cmake - - match: \bFOLLOW_SYMLINKS\b - scope: variable.parameter.FOLLOW_SYMLINKS.cmake - - match: \bRENAME\b - scope: variable.parameter.RENAME.cmake - - match: \bREMOVE\b - scope: variable.parameter.REMOVE.cmake - - match: \bREMOVE_RECURSE\b - scope: variable.parameter.REMOVE_RECURSE.cmake - - match: \bMAKE_DIRECTORY\b - scope: variable.parameter.MAKE_DIRECTORY.cmake - - match: \bRELATIVE_PATH\b - scope: variable.parameter.RELATIVE_PATH.cmake - - match: \bTO_CMAKE_PATH\b - scope: variable.parameter.TO_CMAKE_PATH.cmake - - match: \bTO_NATIVE_PATH\b - scope: variable.parameter.TO_NATIVE_PATH.cmake - - match: \bDOWNLOAD\b - scope: variable.parameter.DOWNLOAD.cmake - - match: \bUPLOAD\b - scope: variable.parameter.UPLOAD.cmake - - match: \bTIMESTAMP\b - scope: variable.parameter.TIMESTAMP.cmake - - match: \bUTC\b - scope: variable.parameter.UTC.cmake - - match: \bGENERATE\b - scope: variable.parameter.GENERATE.cmake - - match: \bOUTPUT\b - scope: variable.parameter.OUTPUT.cmake - - match: \bINPUT\b - scope: variable.parameter.INPUT.cmake - - match: \bCONTENT\b - scope: variable.parameter.CONTENT.cmake - - match: \bCONDITION\b - scope: variable.parameter.CONDITION.cmake - - match: \bCOPY\b - scope: variable.parameter.COPY.cmake - - match: \bINSTALL\b - scope: variable.parameter.INSTALL.cmake - - match: \bDESTINATION\b - scope: variable.parameter.DESTINATION.cmake - - match: \bFILE_PERMISSIONS\b - scope: variable.parameter.FILE_PERMISSIONS.cmake - - match: \bDIRECTORY_PERMISSIONS\b - scope: variable.parameter.DIRECTORY_PERMISSIONS.cmake - - match: \bNO_SOURCE_PERMISSIONS\b - scope: variable.parameter.NO_SOURCE_PERMISSIONS.cmake - - match: \bUSE_SOURCE_PERMISSIONS\b - scope: variable.parameter.USE_SOURCE_PERMISSIONS.cmake - - match: \bFILES_MATCHING\b - scope: variable.parameter.FILES_MATCHING.cmake - - match: \bPATTERN\b - scope: variable.parameter.PATTERN.cmake - - match: \bREGEX\b - scope: variable.parameter.REGEX.cmake - - match: \bEXCLUDE\b - scope: variable.parameter.EXCLUDE.cmake - - match: \bPERMISSIONS\b - scope: variable.parameter.PERMISSIONS.cmake - - match: \bLOCK\b - scope: variable.parameter.LOCK.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bRELEASE\b - scope: variable.parameter.RELEASE.cmake - - match: \bGUARD\b - scope: variable.parameter.GUARD.cmake - - match: \bRESULT_VARIABLE\b - scope: variable.parameter.RESULT_VARIABLE.cmake - - match: \bTIMEOUT\b - scope: variable.parameter.TIMEOUT.cmake - - include: scope:source.cmake#args-common - find_file-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNAMES\b - scope: variable.parameter.NAMES.cmake - - match: \bHINTS\b - scope: variable.parameter.HINTS.cmake - - match: \bPATHS\b - scope: variable.parameter.PATHS.cmake - - match: \bPATH_SUFFIXES\b - scope: variable.parameter.PATH_SUFFIXES.cmake - - match: \bDOC\b - scope: variable.parameter.DOC.cmake - - match: \bNO_DEFAULT_PATH\b - scope: variable.parameter.NO_DEFAULT_PATH.cmake - - match: \bNO_CMAKE_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_CMAKE_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PATH\b - scope: variable.parameter.NO_CMAKE_PATH.cmake - - match: \bNO_SYSTEM_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_SYSTEM_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PATH\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PATH.cmake - - match: \bCMAKE_FIND_ROOT_PATH_BOTH\b - scope: variable.parameter.CMAKE_FIND_ROOT_PATH_BOTH.cmake - - match: \bONLY_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.ONLY_CMAKE_FIND_ROOT_PATH.cmake - - match: \bNO_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.NO_CMAKE_FIND_ROOT_PATH.cmake - - include: scope:source.cmake#args-common - find_library-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNAMES\b - scope: variable.parameter.NAMES.cmake - - match: \bNAMES_PER_DIR\b - scope: variable.parameter.NAMES_PER_DIR.cmake - - match: \bHINTS\b - scope: variable.parameter.HINTS.cmake - - match: \bPATHS\b - scope: variable.parameter.PATHS.cmake - - match: \bPATH_SUFFIXES\b - scope: variable.parameter.PATH_SUFFIXES.cmake - - match: \bDOC\b - scope: variable.parameter.DOC.cmake - - match: \bNO_DEFAULT_PATH\b - scope: variable.parameter.NO_DEFAULT_PATH.cmake - - match: \bNO_CMAKE_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_CMAKE_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PATH\b - scope: variable.parameter.NO_CMAKE_PATH.cmake - - match: \bNO_SYSTEM_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_SYSTEM_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PATH\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PATH.cmake - - match: \bCMAKE_FIND_ROOT_PATH_BOTH\b - scope: variable.parameter.CMAKE_FIND_ROOT_PATH_BOTH.cmake - - match: \bONLY_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.ONLY_CMAKE_FIND_ROOT_PATH.cmake - - match: \bNO_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.NO_CMAKE_FIND_ROOT_PATH.cmake - - include: scope:source.cmake#args-common - find_package-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXACT\b - scope: variable.parameter.EXACT.cmake - - match: \bQUIET\b - scope: variable.parameter.QUIET.cmake - - match: \bREQUIRED\b - scope: variable.parameter.REQUIRED.cmake - - match: \bCOMPONENTS\b - scope: variable.parameter.COMPONENTS.cmake - - match: \bCONFIG\b - scope: variable.parameter.CONFIG.cmake - - match: \bNO_MODULE\b - scope: variable.parameter.NO_MODULE.cmake - - match: \bNO_POLICY_SCOPE\b - scope: variable.parameter.NO_POLICY_SCOPE.cmake - - match: \bNAMES\b - scope: variable.parameter.NAMES.cmake - - match: \bCONFIGS\b - scope: variable.parameter.CONFIGS.cmake - - match: \bHINTS\b - scope: variable.parameter.HINTS.cmake - - match: \bPATHS\b - scope: variable.parameter.PATHS.cmake - - match: \bPATH_SUFFIXES\b - scope: variable.parameter.PATH_SUFFIXES.cmake - - match: \bNO_DEFAULT_PATH\b - scope: variable.parameter.NO_DEFAULT_PATH.cmake - - match: \bNO_CMAKE_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_CMAKE_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PATH\b - scope: variable.parameter.NO_CMAKE_PATH.cmake - - match: \bNO_SYSTEM_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_SYSTEM_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PACKAGE_REGISTRY\b - scope: variable.parameter.NO_CMAKE_PACKAGE_REGISTRY.cmake - - match: \bNO_CMAKE_BUILDS_PATH\b - scope: variable.parameter.NO_CMAKE_BUILDS_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PATH\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PACKAGE_REGISTRY\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PACKAGE_REGISTRY.cmake - - match: \bCMAKE_FIND_ROOT_PATH_BOTH\b - scope: variable.parameter.CMAKE_FIND_ROOT_PATH_BOTH.cmake - - match: \bONLY_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.ONLY_CMAKE_FIND_ROOT_PATH.cmake - - match: \bNO_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.NO_CMAKE_FIND_ROOT_PATH.cmake - - include: scope:source.cmake#args-common - find_path-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNAMES\b - scope: variable.parameter.NAMES.cmake - - match: \bHINTS\b - scope: variable.parameter.HINTS.cmake - - match: \bPATHS\b - scope: variable.parameter.PATHS.cmake - - match: \bPATH_SUFFIXES\b - scope: variable.parameter.PATH_SUFFIXES.cmake - - match: \bDOC\b - scope: variable.parameter.DOC.cmake - - match: \bNO_DEFAULT_PATH\b - scope: variable.parameter.NO_DEFAULT_PATH.cmake - - match: \bNO_CMAKE_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_CMAKE_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PATH\b - scope: variable.parameter.NO_CMAKE_PATH.cmake - - match: \bNO_SYSTEM_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_SYSTEM_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PATH\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PATH.cmake - - match: \bCMAKE_FIND_ROOT_PATH_BOTH\b - scope: variable.parameter.CMAKE_FIND_ROOT_PATH_BOTH.cmake - - match: \bONLY_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.ONLY_CMAKE_FIND_ROOT_PATH.cmake - - match: \bNO_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.NO_CMAKE_FIND_ROOT_PATH.cmake - - include: scope:source.cmake#args-common - find_program-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bNAMES\b - scope: variable.parameter.NAMES.cmake - - match: \bHINTS\b - scope: variable.parameter.HINTS.cmake - - match: \bPATHS\b - scope: variable.parameter.PATHS.cmake - - match: \bPATH_SUFFIXES\b - scope: variable.parameter.PATH_SUFFIXES.cmake - - match: \bDOC\b - scope: variable.parameter.DOC.cmake - - match: \bNO_DEFAULT_PATH\b - scope: variable.parameter.NO_DEFAULT_PATH.cmake - - match: \bNO_CMAKE_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_CMAKE_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_PATH\b - scope: variable.parameter.NO_CMAKE_PATH.cmake - - match: \bNO_SYSTEM_ENVIRONMENT_PATH\b - scope: variable.parameter.NO_SYSTEM_ENVIRONMENT_PATH.cmake - - match: \bNO_CMAKE_SYSTEM_PATH\b - scope: variable.parameter.NO_CMAKE_SYSTEM_PATH.cmake - - match: \bCMAKE_FIND_ROOT_PATH_BOTH\b - scope: variable.parameter.CMAKE_FIND_ROOT_PATH_BOTH.cmake - - match: \bONLY_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.ONLY_CMAKE_FIND_ROOT_PATH.cmake - - match: \bNO_CMAKE_FIND_ROOT_PATH\b - scope: variable.parameter.NO_CMAKE_FIND_ROOT_PATH.cmake - - include: scope:source.cmake#args-common - fltk_wrap_ui-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - get_cmake_property-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - get_directory_property-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bDEFINITION\b - scope: variable.parameter.DEFINITION.cmake - - include: scope:source.cmake#args-common - get_filename_component-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bNAME\b - scope: variable.parameter.NAME.cmake - - match: \bEXT\b - scope: variable.parameter.EXT.cmake - - match: \bNAME_WE\b - scope: variable.parameter.NAME_WE.cmake - - match: \bPATH\b - scope: variable.parameter.PATH.cmake - - match: \bBASE_DIR\b - scope: variable.parameter.BASE_DIR.cmake - - match: \bCACHE\b - scope: variable.parameter.CACHE.cmake - - match: \bPROGRAM\b - scope: variable.parameter.PROGRAM.cmake - - match: \bPROGRAM_ARGS\b - scope: variable.parameter.PROGRAM_ARGS.cmake - - include: scope:source.cmake#args-common - get_property-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bGLOBAL\b - scope: variable.parameter.GLOBAL.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bSOURCE\b - scope: variable.parameter.SOURCE.cmake - - match: \bINSTALL\b - scope: variable.parameter.INSTALL.cmake - - match: \bTEST\b - scope: variable.parameter.TEST.cmake - - match: \bCACHE\b - scope: variable.parameter.CACHE.cmake - - match: \bVARIABLE\b - scope: variable.parameter.VARIABLE.cmake - - match: \bPROPERTY\b - scope: variable.parameter.PROPERTY.cmake - - match: \bSET\b - scope: variable.parameter.SET.cmake - - match: \bDEFINED\b - scope: variable.parameter.DEFINED.cmake - - match: \bBRIEF_DOCS\b - scope: variable.parameter.BRIEF_DOCS.cmake - - match: \bFULL_DOCS\b - scope: variable.parameter.FULL_DOCS.cmake - - include: scope:source.cmake#args-common - get_source_file_property-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - get_target_property-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - get_test_property-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - include_directories-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bAFTER\b - scope: variable.parameter.AFTER.cmake - - match: \bBEFORE\b - scope: variable.parameter.BEFORE.cmake - - match: \bSYSTEM\b - scope: variable.parameter.SYSTEM.cmake - - include: scope:source.cmake#args-common - include_external_msproject-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bTYPE\b - scope: variable.parameter.TYPE.cmake - - match: \bGUID\b - scope: variable.parameter.GUID.cmake - - match: \bPLATFORM\b - scope: variable.parameter.PLATFORM.cmake - - include: scope:source.cmake#args-common - include_regular_expression-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - install-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bTARGETS\b - scope: variable.parameter.TARGETS.cmake - - match: \bEXPORT\b - scope: variable.parameter.EXPORT.cmake - - match: \bARCHIVE\b - scope: variable.parameter.ARCHIVE.cmake - - match: \bLIBRARY\b - scope: variable.parameter.LIBRARY.cmake - - match: \bRUNTIME\b - scope: variable.parameter.RUNTIME.cmake - - match: \bFRAMEWORK\b - scope: variable.parameter.FRAMEWORK.cmake - - match: \bBUNDLE\b - scope: variable.parameter.BUNDLE.cmake - - match: \bPRIVATE_HEADER\b - scope: variable.parameter.PRIVATE_HEADER.cmake - - match: \bPUBLIC_HEADER\b - scope: variable.parameter.PUBLIC_HEADER.cmake - - match: \bRESOURCE\b - scope: variable.parameter.RESOURCE.cmake - - match: \bDESTINATION\b - scope: variable.parameter.DESTINATION.cmake - - match: \bPERMISSIONS\b - scope: variable.parameter.PERMISSIONS.cmake - - match: \bCONFIGURATIONS\b - scope: variable.parameter.CONFIGURATIONS.cmake - - match: \bCOMPONENT\b - scope: variable.parameter.COMPONENT.cmake - - match: \bOPTIONAL\b - scope: variable.parameter.OPTIONAL.cmake - - match: \bEXCLUDE_FROM_ALL\b - scope: variable.parameter.EXCLUDE_FROM_ALL.cmake - - match: \bNAMELINK_ONLY\b - scope: variable.parameter.NAMELINK_ONLY.cmake - - match: \bNAMELINK_SKIP\b - scope: variable.parameter.NAMELINK_SKIP.cmake - - match: \bINCLUDES DESTINATION\b - scope: variable.parameter.INCLUDES DESTINATION.cmake - - include: scope:source.cmake#args-common - install_files-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bFILES\b - scope: variable.parameter.FILES.cmake - - include: scope:source.cmake#args-common - install_programs-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bFILES\b - scope: variable.parameter.FILES.cmake - - include: scope:source.cmake#args-common - install_targets-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bRUNTIME_DIRECTORY\b - scope: variable.parameter.RUNTIME_DIRECTORY.cmake - - include: scope:source.cmake#args-common - link_directories-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - link_libraries-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bdebug\b - scope: variable.parameter.debug.cmake - - match: \boptimized\b - scope: variable.parameter.optimized.cmake - - match: \bgeneral\b - scope: variable.parameter.general.cmake - - include: scope:source.cmake#args-common - list-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bLENGTH\b - scope: variable.parameter.LENGTH.cmake - - match: \bGET\b - scope: variable.parameter.GET.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bFILTER\b - scope: variable.parameter.FILTER.cmake - - match: \bINCLUDE\b - scope: variable.parameter.INCLUDE.cmake - - match: \bEXCLUDE\b - scope: variable.parameter.EXCLUDE.cmake - - match: \bREGEX\b - scope: variable.parameter.REGEX.cmake - - match: \bFIND\b - scope: variable.parameter.FIND.cmake - - match: \bINSERT\b - scope: variable.parameter.INSERT.cmake - - match: \bREMOVE_ITEM\b - scope: variable.parameter.REMOVE_ITEM.cmake - - match: \bREMOVE_AT\b - scope: variable.parameter.REMOVE_AT.cmake - - match: \bREMOVE_DUPLICATES\b - scope: variable.parameter.REMOVE_DUPLICATES.cmake - - match: \bREVERSE\b - scope: variable.parameter.REVERSE.cmake - - match: \bSORT\b - scope: variable.parameter.SORT.cmake - - include: scope:source.cmake#args-common - load_cache-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bREAD_WITH_PREFIX\b - scope: variable.parameter.READ_WITH_PREFIX.cmake - - match: \bEXCLUDE\b - scope: variable.parameter.EXCLUDE.cmake - - match: \bINCLUDE_INTERNALS\b - scope: variable.parameter.INCLUDE_INTERNALS.cmake - - include: scope:source.cmake#args-common - load_command-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCOMMAND_NAME\b - scope: variable.parameter.COMMAND_NAME.cmake - - include: scope:source.cmake#args-common - main: - - match: (?i)\bfind_package\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: find_package-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.find_package.cmake - - match: (?i)\bget_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_property.cmake - - match: (?i)\btry_compile\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: try_compile-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.try_compile.cmake - - match: (?i)\bget_source_file_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_source_file_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_source_file_property.cmake - - match: (?i)\bcmake_host_system_information\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: cmake_host_system_information-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.cmake_host_system_information.cmake - - match: (?i)\bcmake_policy\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: cmake_policy-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.cmake_policy.cmake - - match: (?i)\bmark_as_advanced\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: mark_as_advanced-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.mark_as_advanced.cmake - - match: (?i)\bload_cache\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: load_cache-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.load_cache.cmake - - match: (?i)\badd_dependencies\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_dependencies-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_dependencies.cmake - - match: (?i)\bctest_start\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_start-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_start.cmake - - match: (?i)\bvariable_requires\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: variable_requires-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.variable_requires.cmake - - match: (?i)\bexecute_process\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: execute_process-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.execute_process.cmake - - match: (?i)\badd_definitions\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_definitions-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_definitions.cmake - - match: (?i)\binstall_programs\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: install_programs-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.install_programs.cmake - - match: (?i)\bctest_test\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_test-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_test.cmake - - match: (?i)\btry_run\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: try_run-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.try_run.cmake - - match: (?i)\bctest_sleep\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_sleep-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_sleep.cmake - - match: (?i)\bmessage\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: message-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.message.cmake - - match: (?i)\bfind_library\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: find_library-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.find_library.cmake - - match: (?i)\bbuild_command\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: build_command-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.build_command.cmake - - match: (?i)\bcmake_parse_arguments\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: cmake_parse_arguments-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.cmake_parse_arguments.cmake - - match: (?i)\badd_executable\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_executable-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_executable.cmake - - match: (?i)\bfltk_wrap_ui\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: fltk_wrap_ui-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.fltk_wrap_ui.cmake - - match: (?i)\bdefine_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: define_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.define_property.cmake - - match: (?i)\bset_tests_properties\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: set_tests_properties-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.set_tests_properties.cmake - - match: (?i)\buse_mangled_mesa\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: use_mangled_mesa-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.use_mangled_mesa.cmake - - match: (?i)\bexport_library_dependencies\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: export_library_dependencies-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.export_library_dependencies.cmake - - match: (?i)\btarget_link_libraries\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_link_libraries-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_link_libraries.cmake - - match: (?i)\breturn\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: return-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.return.cmake - - match: (?i)\bstring\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: string-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.string.cmake - - match: (?i)\blink_directories\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: link_directories-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.link_directories.cmake - - match: (?i)\bfind_path\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: find_path-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.find_path.cmake - - match: (?i)\benable_language\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: enable_language-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.enable_language.cmake - - match: (?i)\badd_test\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_test-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_test.cmake - - match: (?i)\btarget_compile_definitions\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_compile_definitions-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_compile_definitions.cmake - - match: (?i)\binclude_directories\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: include_directories-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.include_directories.cmake - - match: (?i)\bctest_build\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_build-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_build.cmake - - match: (?i)\bbuild_name\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: build_name-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.build_name.cmake - - match: (?i)\bget_cmake_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_cmake_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_cmake_property.cmake - - match: (?i)\bfind_program\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: find_program-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.find_program.cmake - - match: (?i)\bremove_definitions\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: remove_definitions-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.remove_definitions.cmake - - match: (?i)\bctest_configure\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_configure-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_configure.cmake - - match: (?i)\bctest_submit\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_submit-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_submit.cmake - - match: (?i)\bsource_group\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: source_group-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.source_group.cmake - - match: (?i)\blist\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: list-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.list.cmake - - match: (?i)\bremove\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: remove-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.remove.cmake - - match: (?i)\btarget_compile_options\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_compile_options-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_compile_options.cmake - - match: (?i)\binstall_targets\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: install_targets-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.install_targets.cmake - - match: (?i)\bconfigure_file\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: configure_file-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.configure_file.cmake - - match: (?i)\binstall\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: install-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.install.cmake - - match: (?i)\bcreate_test_sourcelist\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: create_test_sourcelist-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.create_test_sourcelist.cmake - - match: (?i)\blink_libraries\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: link_libraries-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.link_libraries.cmake - - match: (?i)\bload_command\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: load_command-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.load_command.cmake - - match: (?i)\bset_source_files_properties\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: set_source_files_properties-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.set_source_files_properties.cmake - - match: (?i)\binclude_external_msproject\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: include_external_msproject-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.include_external_msproject.cmake - - match: (?i)\bsite_name\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: site_name-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.site_name.cmake - - match: (?i)\binstall_files\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: install_files-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.install_files.cmake - - match: (?i)\bqt_wrap_ui\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: qt_wrap_ui-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.qt_wrap_ui.cmake - - match: (?i)\bctest_read_custom_files\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_read_custom_files-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_read_custom_files.cmake - - match: (?i)\bexport\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: export-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.export.cmake - - match: (?i)\badd_library\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_library-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_library.cmake - - match: (?i)\bfile\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: file-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.file.cmake - - match: (?i)\bwrite_file\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: write_file-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.write_file.cmake - - match: (?i)\bget_test_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_test_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_test_property.cmake - - match: (?i)\bvariable_watch\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: variable_watch-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.variable_watch.cmake - - match: (?i)\boption\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: option-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.option.cmake - - match: (?i)\boutput_required_files\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: output_required_files-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.output_required_files.cmake - - match: (?i)\bproject\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: project-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.project.cmake - - match: (?i)\butility_source\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: utility_source-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.utility_source.cmake - - match: (?i)\bfind_file\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: find_file-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.find_file.cmake - - match: (?i)\bget_filename_component\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_filename_component-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_filename_component.cmake - - match: (?i)\bqt_wrap_cpp\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: qt_wrap_cpp-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.qt_wrap_cpp.cmake - - match: (?i)\bsubdirs\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: subdirs-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.subdirs.cmake - - match: (?i)\badd_compile_options\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_compile_options-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_compile_options.cmake - - match: (?i)\bget_directory_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_directory_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_directory_property.cmake - - match: (?i)\bexec_program\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: exec_program-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.exec_program.cmake - - match: (?i)\bmath\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: math-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.math.cmake - - match: (?i)\bget_target_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: get_target_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.get_target_property.cmake - - match: (?i)\btarget_sources\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_sources-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_sources.cmake - - match: (?i)\bset_directory_properties\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: set_directory_properties-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.set_directory_properties.cmake - - match: (?i)\bsubdir_depends\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: subdir_depends-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.subdir_depends.cmake - - match: (?i)\bset_target_properties\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: set_target_properties-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.set_target_properties.cmake - - match: (?i)\benable_testing\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: enable_testing-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.enable_testing.cmake - - match: (?i)\bctest_coverage\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_coverage-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_coverage.cmake - - match: (?i)\btarget_include_directories\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_include_directories-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_include_directories.cmake - - match: (?i)\bctest_empty_binary_directory\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_empty_binary_directory-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_empty_binary_directory.cmake - - match: (?i)\bmake_directory\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: make_directory-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.make_directory.cmake - - match: (?i)\bctest_memcheck\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_memcheck-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_memcheck.cmake - - match: (?i)\btarget_compile_features\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: target_compile_features-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.target_compile_features.cmake - - match: (?i)\badd_subdirectory\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_subdirectory-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_subdirectory.cmake - - match: (?i)\binclude_regular_expression\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: include_regular_expression-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.include_regular_expression.cmake - - match: (?i)\badd_custom_command\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_custom_command-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_custom_command.cmake - - match: (?i)\bctest_upload\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_upload-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_upload.cmake - - match: (?i)\bctest_run_script\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_run_script-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_run_script.cmake - - match: (?i)\bctest_update\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: ctest_update-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.ctest_update.cmake - - match: (?i)\bcmake_minimum_required\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: cmake_minimum_required-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.cmake_minimum_required.cmake - - match: (?i)\bseparate_arguments\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: separate_arguments-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.separate_arguments.cmake - - match: (?i)\badd_custom_target\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: add_custom_target-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.add_custom_target.cmake - - match: (?i)\baux_source_directory\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: aux_source_directory-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.aux_source_directory.cmake - - match: (?i)\bset_property\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: set_property-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.set_property.cmake - - match: (?i)\bunset\b - push: - - meta_scope: meta.function-call.cmake - - match: (?=\() - set: - - match: \( - scope: punctuation.section.parens.begin.cmake - set: unset-args - - include: scope:source.cmake#args-illegal-boilerplate - scope: support.function.unset.cmake - make_directory-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - mark_as_advanced-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCLEAR\b - scope: variable.parameter.CLEAR.cmake - - match: \bFORCE\b - scope: variable.parameter.FORCE.cmake - - include: scope:source.cmake#args-common - math-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXPR\b - scope: variable.parameter.EXPR.cmake - - include: scope:source.cmake#args-common - message-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bSTATUS\b - scope: variable.parameter.STATUS.cmake - - match: \bWARNING\b - scope: variable.parameter.WARNING.cmake - - match: \bAUTHOR_WARNING\b - scope: variable.parameter.AUTHOR_WARNING.cmake - - match: \bSEND_ERROR\b - scope: variable.parameter.SEND_ERROR.cmake - - match: \bFATAL_ERROR\b - scope: variable.parameter.FATAL_ERROR.cmake - - match: \bDEPRECATION\b - scope: variable.parameter.DEPRECATION.cmake - - include: scope:source.cmake#args-common - option-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - output_required_files-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - project-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bLANGUAGES\b - scope: variable.parameter.LANGUAGES.cmake - - match: \bVERSION\b - scope: variable.parameter.VERSION.cmake - - include: scope:source.cmake#args-common - prototype: - - include: scope:source.cmake#prototype - qt_wrap_cpp-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - qt_wrap_ui-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - remove-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - remove_definitions-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - return-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - separate_arguments-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bUNIX_COMMAND\b - scope: variable.parameter.UNIX_COMMAND.cmake - - match: \bWINDOWS_COMMAND\b - scope: variable.parameter.WINDOWS_COMMAND.cmake - - include: scope:source.cmake#args-common - set_directory_properties-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bPROPERTIES\b - scope: variable.parameter.PROPERTIES.cmake - - include: scope:source.cmake#args-common - set_property-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bGLOBAL\b - scope: variable.parameter.GLOBAL.cmake - - match: \bDIRECTORY\b - scope: variable.parameter.DIRECTORY.cmake - - match: \bTARGET\b - scope: variable.parameter.TARGET.cmake - - match: \bSOURCE\b - scope: variable.parameter.SOURCE.cmake - - match: \bINSTALL\b - scope: variable.parameter.INSTALL.cmake - - match: \bTEST\b - scope: variable.parameter.TEST.cmake - - match: \bCACHE\b - scope: variable.parameter.CACHE.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bAPPEND_STRING\b - scope: variable.parameter.APPEND_STRING.cmake - - match: \bPROPERTY\b - scope: variable.parameter.PROPERTY.cmake - - include: scope:source.cmake#args-common - set_source_files_properties-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bPROPERTIES\b - scope: variable.parameter.PROPERTIES.cmake - - include: scope:source.cmake#args-common - set_target_properties-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bPROPERTIES\b - scope: variable.parameter.PROPERTIES.cmake - - include: scope:source.cmake#args-common - set_tests_properties-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bPROPERTIES\b - scope: variable.parameter.PROPERTIES.cmake - - include: scope:source.cmake#args-common - site_name-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - source_group-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bFILES\b - scope: variable.parameter.FILES.cmake - - match: \bREGULAR_EXPRESSION\b - scope: variable.parameter.REGULAR_EXPRESSION.cmake - - match: \bTREE\b - scope: variable.parameter.TREE.cmake - - match: \bPREFIX\b - scope: variable.parameter.PREFIX.cmake - - include: scope:source.cmake#args-common - string-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bFIND\b - scope: variable.parameter.FIND.cmake - - match: \bREVERSE\b - scope: variable.parameter.REVERSE.cmake - - match: \bREPLACE\b - scope: variable.parameter.REPLACE.cmake - - match: \bREGEX\b - scope: variable.parameter.REGEX.cmake - - match: \bMATCH\b - scope: variable.parameter.MATCH.cmake - - match: \bMATCHALL\b - scope: variable.parameter.MATCHALL.cmake - - match: \bREPLACE\b - scope: variable.parameter.REPLACE.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - match: \bCONCAT\b - scope: variable.parameter.CONCAT.cmake - - match: \bTOLOWER\b - scope: variable.parameter.TOLOWER.cmake - - match: \bTOUPPER\b - scope: variable.parameter.TOUPPER.cmake - - match: \bLENGTH\b - scope: variable.parameter.LENGTH.cmake - - match: \bSUBSTRING\b - scope: variable.parameter.SUBSTRING.cmake - - match: \bSTRIP\b - scope: variable.parameter.STRIP.cmake - - match: \bGENEX_STRIP\b - scope: variable.parameter.GENEX_STRIP.cmake - - match: \bCOMPARE\b - scope: variable.parameter.COMPARE.cmake - - match: \bLESS\b - scope: variable.parameter.LESS.cmake - - match: \bGREATER\b - scope: variable.parameter.GREATER.cmake - - match: \bEQUAL\b - scope: variable.parameter.EQUAL.cmake - - match: \bNOTEQUAL\b - scope: variable.parameter.NOTEQUAL.cmake - - match: \bLESS_EQUAL\b - scope: variable.parameter.LESS_EQUAL.cmake - - match: \bGREATER_EQUAL\b - scope: variable.parameter.GREATER_EQUAL.cmake - - match: \bMD5\b - scope: variable.parameter.MD5.cmake - - match: \bSHA1\b - scope: variable.parameter.SHA1.cmake - - match: \bSHA224\b - scope: variable.parameter.SHA224.cmake - - match: \bSHA256\b - scope: variable.parameter.SHA256.cmake - - match: \bSHA384\b - scope: variable.parameter.SHA384.cmake - - match: \bSHA512\b - scope: variable.parameter.SHA512.cmake - - match: \bSHA3_224\b - scope: variable.parameter.SHA3_224.cmake - - match: \bSHA3_256\b - scope: variable.parameter.SHA3_256.cmake - - match: \bSHA3_384\b - scope: variable.parameter.SHA3_384.cmake - - match: \bSHA3_512\b - scope: variable.parameter.SHA3_512.cmake - - match: \bASCII\b - scope: variable.parameter.ASCII.cmake - - match: \bCONFIGURE\b - scope: variable.parameter.CONFIGURE.cmake - - match: \b@ONLY\b - scope: variable.parameter.@ONLY.cmake - - match: \bESCAPE_QUOTES\b - scope: variable.parameter.ESCAPE_QUOTES.cmake - - match: \bRANDOM\b - scope: variable.parameter.RANDOM.cmake - - match: \bALPHABET\b - scope: variable.parameter.ALPHABET.cmake - - match: \bRANDOM_SEED\b - scope: variable.parameter.RANDOM_SEED.cmake - - match: \bTIMESTAMP\b - scope: variable.parameter.TIMESTAMP.cmake - - match: \bUTC\b - scope: variable.parameter.UTC.cmake - - match: \bMAKE_C_IDENTIFIER\b - scope: variable.parameter.MAKE_C_IDENTIFIER.cmake - - match: \bUUID\b - scope: variable.parameter.UUID.cmake - - match: \bNAMESPACE\b - scope: variable.parameter.NAMESPACE.cmake - - match: \bNAME\b - scope: variable.parameter.NAME.cmake - - match: \bTYPE\b - scope: variable.parameter.TYPE.cmake - - match: \bUPPER\b - scope: variable.parameter.UPPER.cmake - - include: scope:source.cmake#args-common - subdir_depends-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - subdirs-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bEXCLUDE_FROM_ALL\b - scope: variable.parameter.EXCLUDE_FROM_ALL.cmake - - match: \bPREORDER\b - scope: variable.parameter.PREORDER.cmake - - include: scope:source.cmake#args-common - target_compile_definitions-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - include: scope:source.cmake#args-common - target_compile_features-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - include: scope:source.cmake#args-common - target_compile_options-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - match: \bBEFORE\b - scope: variable.parameter.BEFORE.cmake - - include: scope:source.cmake#args-common - target_include_directories-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bSYSTEM\b - scope: variable.parameter.SYSTEM.cmake - - match: \bBEFORE\b - scope: variable.parameter.BEFORE.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - include: scope:source.cmake#args-common - target_link_libraries-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - match: \bLINK_PUBLIC\b - scope: variable.parameter.LINK_PUBLIC.cmake - - match: \bLINK_PRIVATE\b - scope: variable.parameter.LINK_PRIVATE.cmake - - match: \bLINK_INTERFACE_LIBRARIES\b - scope: variable.parameter.LINK_INTERFACE_LIBRARIES.cmake - - include: scope:source.cmake#args-common - target_sources-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bINTERFACE\b - scope: variable.parameter.INTERFACE.cmake - - match: \bPUBLIC\b - scope: variable.parameter.PUBLIC.cmake - - match: \bPRIVATE\b - scope: variable.parameter.PRIVATE.cmake - - include: scope:source.cmake#args-common - try_compile-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCMAKE_FLAGS\b - scope: variable.parameter.CMAKE_FLAGS.cmake - - match: \bOUTPUT_VARIABLE\b - scope: variable.parameter.OUTPUT_VARIABLE.cmake - - match: \bSOURCES\b - scope: variable.parameter.SOURCES.cmake - - match: \bCOMPILE_DEFINITIONS\b - scope: variable.parameter.COMPILE_DEFINITIONS.cmake - - match: \bLINK_LIBRARIES\b - scope: variable.parameter.LINK_LIBRARIES.cmake - - match: \bCOPY_FILE\b - scope: variable.parameter.COPY_FILE.cmake - - match: \bCOPY_FILE_ERROR\b - scope: variable.parameter.COPY_FILE_ERROR.cmake - - match: \bC_STANDARD_REQUIRED\b - scope: variable.parameter.C_STANDARD_REQUIRED.cmake - - match: \bCXX_STANDARD_REQUIRED\b - scope: variable.parameter.CXX_STANDARD_REQUIRED.cmake - - match: \bCUDA_STANDARD_REQUIRED\b - scope: variable.parameter.CUDA_STANDARD_REQUIRED.cmake - - match: \bC_EXTENSIONS\b - scope: variable.parameter.C_EXTENSIONS.cmake - - match: \bCXX_EXTENSIONS\b - scope: variable.parameter.CXX_EXTENSIONS.cmake - - match: \bCUDA_EXTENSIONS\b - scope: variable.parameter.CUDA_EXTENSIONS.cmake - - include: scope:source.cmake#args-common - try_run-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCMAKE_FLAGS\b - scope: variable.parameter.CMAKE_FLAGS.cmake - - match: \bCOMPILE_DEFINITIONS\b - scope: variable.parameter.COMPILE_DEFINITIONS.cmake - - match: \bCOMPILE_OUTPUT_VARIABLE\b - scope: variable.parameter.COMPILE_OUTPUT_VARIABLE.cmake - - match: \bLINK_LIBRARIES\b - scope: variable.parameter.LINK_LIBRARIES.cmake - - match: \bOUTPUT_VARIABLE\b - scope: variable.parameter.OUTPUT_VARIABLE.cmake - - match: \bRUN_OUTPUT_VARIABLE\b - scope: variable.parameter.RUN_OUTPUT_VARIABLE.cmake - - match: \bARGS\b - scope: variable.parameter.ARGS.cmake - - include: scope:source.cmake#args-common - unset-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bCACHE\b - scope: variable.parameter.CACHE.cmake - - match: \bPARENT_SCOPE\b - scope: variable.parameter.PARENT_SCOPE.cmake - - include: scope:source.cmake#args-common - use_mangled_mesa-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - utility_source-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - variable_requires-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - variable_watch-args: - - meta_scope: meta.function-call.arguments.cmake - - include: scope:source.cmake#args-common - write_file-args: - - meta_scope: meta.function-call.arguments.cmake - - match: \bAPPEND\b - scope: variable.parameter.APPEND.cmake - - include: scope:source.cmake#args-common -hidden: true -scope: commands.builtin.cmake diff --git a/assets/syntaxes/CSV.sublime-syntax b/assets/syntaxes/CSV.sublime-syntax deleted file mode 100644 index 1bbc5b9..0000000 --- a/assets/syntaxes/CSV.sublime-syntax +++ /dev/null @@ -1,46 +0,0 @@ -%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 diff --git a/assets/syntaxes/Cabal.sublime-syntax b/assets/syntaxes/Cabal.sublime-syntax deleted file mode 100644 index b6e0dac..0000000 --- a/assets/syntaxes/Cabal.sublime-syntax +++ /dev/null @@ -1,47 +0,0 @@ -%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 diff --git a/assets/syntaxes/Crystal.sublime-syntax b/assets/syntaxes/Crystal.sublime-syntax deleted file mode 100644 index 7e86483..0000000 --- a/assets/syntaxes/Crystal.sublime-syntax +++ /dev/null @@ -1,1036 +0,0 @@ -%YAML 1.2 ---- -# http://www.sublimetext.com/docs/3/syntax.html -name: Crystal -comment: | - TODO: unresolved issues - - text: - "p << end - print me! - end" - symptoms: - not recognized as a heredoc - solution: - there is no way to distinguish perfectly between the << operator and the start - of a heredoc. Currently, we require assignment to recognize a heredoc. More - refinement is possible. - • Heredocs with indented terminators (<<-) are always distinguishable, however. - • Nested heredocs are not really supportable at present - - text: - print <<-'THERE' - This is single quoted. - The above used #{Time.now} - THERE - symtoms: - From Programming Ruby p306; should be a non-interpolated heredoc. - - text: - "a\332a" - symptoms: - '\332' is not recognized as slash3.. which should be octal 332. - solution: - plain regexp.. should be easy. - - text: - val?(a):p(b) - val?'a':'b' - symptoms: - ':p' is recognized as a symbol.. its 2 things ':' and 'p'. - :'b' has same problem. - solution: - ternary operator rule, precedence stuff, symbol rule. - but also consider 'a.b?(:c)' ?? -file_extensions: - - cr -first_line_match: ^#!/.*\bcrystal -scope: source.crystal -contexts: - main: - - match: |- - (?x) - ^ - \s* - (abstract)? - \s* - (class|struct|union) - \s+ - ( - ( - [.A-Z_:\x{80}-\x{10FFFF}][.\w:\x{80}-\x{10FFFF}]* - (\(([,\s.a-zA-Z0-9_:\x{80}-\x{10FFFF}]+)\))? - ( - \s*(<)\s* - [.:A-Z\x{80}-\x{10FFFF}][.:\w\x{80}-\x{10FFFF}]* - (\(([.a-zA-Z0-9_:]+\s,)\))? - )? - )|( - (<<) - \s* - [.A-Z0-9_:\x{80}-\x{10FFFF}]+ - ) - ) - scope: meta.class.crystal - captures: - 1: keyword.control.class.crystal - 2: keyword.control.class.crystal - 3: entity.name.type.class.crystal - 5: punctuation.separator.crystal - 6: support.class.other.type-param.crystal - 7: entity.other.inherited-class.crystal - 8: punctuation.separator.crystal - 9: punctuation.separator.crystal - 10: support.class.other.type-param.crystal - 11: punctuation.definition.variable.crystal - - match: '^\s*(module)\s+(([A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(::))?([A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(::))?([A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(::))*[A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*)' - scope: meta.module.crystal - captures: - 1: keyword.control.module.crystal - 2: entity.name.type.module.crystal - 3: entity.other.inherited-class.module.first.crystal - 4: punctuation.separator.inheritance.crystal - 5: entity.other.inherited-class.module.second.crystal - 6: punctuation.separator.inheritance.crystal - 7: entity.other.inherited-class.module.third.crystal - 8: punctuation.separator.inheritance.crystal - - match: '^\s*(lib)\s+(([A-Z]\w*(::))?([A-Z]\w*(::))?([A-Z]\w*(::))*[A-Z]\w*)' - scope: meta.lib.crystal - captures: - 1: keyword.control.lib.crystal - 2: entity.name.type.lib.crystal - 3: entity.other.inherited-class.lib.first.crystal - 4: punctuation.separator.inheritance.crystal - 5: entity.other.inherited-class.lib.second.crystal - 6: punctuation.separator.inheritance.crystal - 7: entity.other.inherited-class.lib.third.crystal - 8: punctuation.separator.inheritance.crystal - - match: (?|_|\*|\$|\?|:|"|-[0adFiIlpv])' - scope: variable.other.readwrite.global.pre-defined.crystal - captures: - 1: punctuation.definition.variable.crystal - - match: '\b(ENV)\[' - captures: - 1: variable.other.constant.crystal - push: - - meta_scope: meta.environment-variable.crystal - - match: '\]' - pop: true - - include: main - - match: '\b[A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*' - scope: support.class.crystal - - match: '\b[A-Z\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*\b' - scope: variable.other.constant.crystal - - match: |- - (?x) - (?=def\b) # an optimization to help Oniguruma fail fast - (?<=^|\s)(def)\s+ # the def keyword - ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>\.|::))? # a method name prefix - (?>[a-zA-Z_\x{80}-\x{10FFFF}][\x{80}-\x{10FFFF}\w]*(?>[?!]|=(?!>))? # the method name - |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method - \s*(\() # the openning parenthesis for arguments - comment: the method pattern comes from the symbol pattern, see there for a explaination - captures: - 1: keyword.control.def.crystal - 2: entity.name.function.crystal - 3: punctuation.definition.parameters.crystal - push: - - meta_scope: meta.function.method.with-arguments.crystal - - meta_content_scope: variable.parameter.function.crystal - - match: \)\s*$|\)\s*:|\)\s*; - captures: - 0: punctuation.definition.parameters.crystal - pop: true - - include: main - - match: |- - (?x) - (?=def\b) # an optimization to help Oniguruma fail fast - (?<=^|\s)(def)\s+ # the def keyword - ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix - (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name - |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) # …or an operator method - [ \t] # the space separating the arguments - (?=[ \t]*[^\s#;]) # make sure arguments and not a comment follow - comment: same as the previous rule, but without parentheses around the arguments - captures: - 1: keyword.control.def.crystal - 2: entity.name.function.crystal - push: - - meta_scope: meta.function.method.with-arguments.crystal - - meta_content_scope: variable.parameter.function.crystal - - match: $ - pop: true - - include: main - - match: |- - (?x) - (?=def\b) # an optimization to help Oniguruma fail fast - (?<=^|\s)(def)\b # the def keyword - ( \s+ # an optional group of whitespace followed by… - ( (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>\.|::))? # a method name prefix - (?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?!>))? # the method name - |===?|>[>=]?|<=>|<[<=]?|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?) ) )? # …or an operator method - comment: the optional name is just to catch the def also without a method-name - scope: meta.function.method.without-arguments.crystal - captures: - 1: keyword.control.def.crystal - 3: entity.name.function.crystal - - match: '\b(0[xX]\h(?>_?\h)*|\d(?>_?\d)*(\.(?![^[:space:][:digit:]])(?>_?\d)*)?([eE][-+]?\d(?>_?\d)*)?|0[bB][01]+|0o[0-7]+)(_?(u8|u16|u32|u64|i8|i16|i32|i64|f32|f64))?\b' - scope: constant.numeric.crystal - - match: ":'" - captures: - 0: punctuation.definition.constant.crystal - push: - - meta_scope: constant.other.symbol.single-quoted.crystal - - match: "'" - captures: - 0: punctuation.definition.constant.crystal - pop: true - - match: '\\[''\\]' - scope: constant.character.escape.crystal - - match: ':"' - captures: - 0: punctuation.definition.constant.crystal - push: - - meta_scope: constant.other.symbol.double-quoted.crystal - - match: '"' - captures: - 0: punctuation.definition.constant.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - match: /= - comment: Needs higher precidence than regular expressions. - scope: keyword.operator.assignment.augmented.crystal - - match: "'" - comment: single quoted string (does not allow interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.single.crystal - - match: "'" - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: \\'|\\\\ - scope: constant.character.escape.crystal - - match: '"' - comment: double quoted string (allows for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.double.crystal - - match: '"' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - match: "`" - comment: execute string (allows for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: "`" - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - match: '%x\{' - comment: execute string (allow for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: '\}' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_curly_i - - match: '%x\[' - comment: execute string (allow for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: '\]' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_brackets_i - - match: '%x\<' - comment: execute string (allow for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: \> - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_ltgt_i - - match: '%x\(' - comment: execute string (allow for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: \) - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_parens_i - - match: '%x([^\w])' - comment: execute string (allow for interpolation) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.interpolated.crystal - - match: \1 - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - match: |- - (?x) - (?: - ^ # beginning of line - | (?<= # or look-behind on: - [=>~(?:\[,|&;] - | [\s;]if\s # keywords - | [\s;]elsif\s - | [\s;]while\s - | [\s;]unless\s - | [\s;]when\s - | [\s;]assert_match\s - | [\s;]or\s # boolean opperators - | [\s;]and\s - | [\s;]not\s - | [\s.]index\s # methods - | [\s.]scan\s - | [\s.]sub\s - | [\s.]sub!\s - | [\s.]gsub\s - | [\s.]gsub!\s - | [\s.]match\s - ) - | (?<= # or a look-behind with line anchor: - ^when\s # duplication necessary due to limits of regex - | ^if\s - | ^elsif\s - | ^while\s - | ^unless\s - ) - ) - \s*((/))(?![*+{}?]) - comment: | - regular expressions (normal) - we only start a regexp if the character before it (excluding whitespace) - is what we think is before a regexp - captures: - 1: string.regexp.classic.crystal - 2: punctuation.definition.string.crystal - push: - - meta_content_scope: string.regexp.classic.crystal - - match: "((/[eimnosux]*))" - captures: - 1: string.regexp.classic.crystal - 2: punctuation.definition.string.crystal - pop: true - - include: regex_sub - - match: '%r\{' - comment: regular expressions (literal) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.regexp.mod-r.crystal - - match: '\}[eimnosux]*' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: regex_sub - - include: nest_curly_r - - match: '%r\[' - comment: regular expressions (literal) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.regexp.mod-r.crystal - - match: '\][eimnosux]*' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: regex_sub - - include: nest_brackets_r - - match: '%r\(' - comment: regular expressions (literal) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.regexp.mod-r.crystal - - match: '\)[eimnosux]*' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: regex_sub - - include: nest_parens_r - - match: '%r\<' - comment: regular expressions (literal) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.regexp.mod-r.crystal - - match: '\>[eimnosux]*' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: regex_sub - - include: nest_ltgt_r - - match: '%r([^\w])' - comment: regular expressions (literal) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.regexp.mod-r.crystal - - match: '\1[eimnosux]*' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: regex_sub - - match: '%[QWSR]?\(' - comment: literal capable of interpolation () - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.upper.crystal - - match: \) - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_parens_i - - match: '%[QWSR]?\[' - comment: "literal capable of interpolation []" - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.upper.crystal - - match: '\]' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_brackets_i - - match: '%[QWSR]?\<' - comment: literal capable of interpolation <> - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.upper.crystal - - match: \> - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_ltgt_i - - match: '%[QWSR]?\{' - comment: "literal capable of interpolation -- {}" - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.double.crystal.mod - - match: '\}' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_curly_i - - match: '%[QWSR]([^\w])' - comment: literal capable of interpolation -- wildcard - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.upper.crystal - - match: \1 - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - match: '%[qws]\(' - comment: literal incapable of interpolation -- () - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.lower.crystal - - match: \) - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: \\\)|\\\\ - scope: constant.character.escape.crystal - - include: nest_parens - - match: '%[qws]\<' - comment: literal incapable of interpolation -- <> - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.lower.crystal - - match: \> - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: \\\>|\\\\ - scope: constant.character.escape.crystal - - include: nest_ltgt - - match: '%[qws]\[' - comment: "literal incapable of interpolation -- []" - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.lower.crystal - - match: '\]' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: '\\\]|\\\\' - scope: constant.character.escape.crystal - - include: nest_brackets - - match: '%[qws]\{' - comment: "literal incapable of interpolation -- {}" - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.lower.crystal - - match: '\}' - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: '\\\}|\\\\' - scope: constant.character.escape.crystal - - include: nest_curly - - match: '%[qws]([^\w])' - comment: literal incapable of interpolation -- wildcard - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.quoted.other.literal.lower.crystal - - match: \1 - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - match: \\. - comment: Cant be named because its not neccesarily an escape. - - match: '(?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\|]|\*\*?|=?~|[-+]@?|\[\]=?|@@?[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*)' - comment: symbols - scope: constant.other.symbol.crystal - captures: - 1: punctuation.definition.constant.crystal - - match: '(?>[a-zA-Z_\x{80}-\x{10FFFF}][\w\x{80}-\x{10FFFF}]*(?>[?!])?)(:)(?!:)' - comment: symbols - scope: constant.other.symbol.crystal.19syntax - captures: - 1: punctuation.definition.constant.crystal - - match: '(?:^[ \t]+)?(#).*$\n?' - scope: comment.line.number-sign.crystal - captures: - 1: punctuation.definition.comment.crystal - - match: ^__END__\n - comment: __END__ marker - captures: - 0: string.unquoted.program-block.crystal - push: - - meta_content_scope: text.plain - - match: (?=not)impossible - captures: - 0: string.unquoted.program-block.crystal - pop: true - - match: (?=<<-("?)((?:[_\w]+_|)HTML)\b\1)' - comment: heredoc with embedded HTML and indented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.html.crystal - - meta_content_scope: text.html.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:text.html.basic - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)SQL)\b\1)' - comment: heredoc with embedded SQL and indented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.sql.crystal - - meta_content_scope: text.sql.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.sql - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)CSS)\b\1)' - comment: heredoc with embedded css and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.css.crystal - - meta_content_scope: text.css.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.css - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)CPP)\b\1)' - comment: heredoc with embedded c++ and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.cplusplus.crystal - - meta_content_scope: text.c++.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.c++ - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)C)\b\1)' - comment: heredoc with embedded c++ and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.c.crystal - - meta_content_scope: text.c.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.c - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)(?:JS|JAVASCRIPT))\b\1)' - comment: heredoc with embedded javascript and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.js.crystal - - meta_content_scope: text.js.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.js - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)JQUERY)\b\1)' - comment: heredoc with embedded javascript and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.js.jquery.crystal - - meta_content_scope: text.js.jquery.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.js.jquery - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)(?:SH|SHELL))\b\1)' - comment: heredoc with embedded shell and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.shell.crystal - - meta_content_scope: text.shell.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.shell - - include: interpolated_crystal - - include: escaped_char - - match: '(?><<-("?)((?:[_\w]+_|)RUBY)\b\1)' - comment: heredoc with embedded crystal and intented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.embedded.crystal.crystal - - meta_content_scope: text.crystal.embedded.crystal - - match: \s*\2$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: scope:source.crystal - - include: interpolated_crystal - - include: escaped_char - - match: (?>\=\s*<<(\w+)) - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.heredoc.crystal - - match: ^\1$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: interpolated_crystal - - include: escaped_char - - match: (?><<-(\w+)) - comment: heredoc with indented terminator - captures: - 0: punctuation.definition.string.begin.crystal - push: - - meta_scope: string.unquoted.heredoc.crystal - - match: \s*\1$ - captures: - 0: punctuation.definition.string.end.crystal - pop: true - - include: heredoc - - include: interpolated_crystal - - include: escaped_char - - match: '(?<=\{|do|\{\s|do\s)(\|)' - captures: - 1: punctuation.separator.variable.crystal - push: - - match: (\|) - captures: - 1: punctuation.separator.variable.crystal - pop: true - - match: "[_a-zA-Z][_a-zA-Z0-9]*" - scope: variable.other.block.crystal - - match: "," - scope: punctuation.separator.variable.crystal - - match: "=>" - scope: punctuation.separator.key-value - - match: '<<=|%=|&=|\*=|\*\*=|\+=|\-=|\^=|\|{1,2}=|<<' - scope: keyword.operator.assignment.augmented.crystal - - match: '<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \t])\?' - scope: keyword.operator.comparison.crystal - - match: '(?<=[ \t])!+|\bnot\b|&&|\band\b|\|\||\bor\b|\^' - scope: keyword.operator.logical.crystal - - match: '(\{\%|\%\}|\{\{|\}\})' - scope: keyword.operator.macro.crystal - - match: (%|&|\*\*|\*|\+|\-|/) - scope: keyword.operator.arithmetic.crystal - - match: "=" - scope: keyword.operator.assignment.crystal - - match: \||~|>> - scope: keyword.operator.other.crystal - - match: ":" - scope: punctuation.separator.other.crystal - - match: \; - scope: punctuation.separator.statement.crystal - - match: "," - scope: punctuation.separator.object.crystal - - match: '\.|::' - scope: punctuation.separator.method.crystal - - match: '\{|\}' - scope: punctuation.section.scope.crystal - - match: '\[|\]' - scope: punctuation.section.array.crystal - - match: \(|\) - scope: punctuation.section.function.crystal - escaped_char: - - match: '\\(?:[0-7]{1,3}|x[\da-fA-F]{1,2}|.)' - scope: constant.character.escape.crystal - heredoc: - - match: ^<<-?\w+ - push: - - match: $ - pop: true - - include: main - interpolated_crystal: - - match: '#\{(\})' - scope: source.crystal.embedded.source - captures: - 0: punctuation.section.embedded.crystal - 1: source.crystal.embedded.source.empty - - match: '#\{' - captures: - 0: punctuation.section.embedded.crystal - push: - - meta_scope: source.crystal.embedded.source - - match: '\}' - captures: - 0: punctuation.section.embedded.crystal - pop: true - - include: nest_curly_and_self - - include: main - - match: '(#@)[a-zA-Z_]\w*' - scope: variable.other.readwrite.instance.crystal - captures: - 1: punctuation.definition.variable.crystal - - match: '(#@@)[a-zA-Z_]\w*' - scope: variable.other.readwrite.class.crystal - captures: - 1: punctuation.definition.variable.crystal - - match: '(#\$)[a-zA-Z_]\w*' - scope: variable.other.readwrite.global.crystal - captures: - 1: punctuation.definition.variable.crystal - nest_brackets: - - match: '\[' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\]' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: nest_brackets - nest_brackets_i: - - match: '\[' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\]' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_brackets_i - nest_brackets_r: - - match: '\[' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\]' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: regex_sub - - include: nest_brackets_r - nest_curly: - - match: '\{' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\}' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: nest_curly - nest_curly_and_self: - - match: '\{' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\}' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: nest_curly_and_self - - include: main - nest_curly_i: - - match: '\{' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\}' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_curly_i - nest_curly_r: - - match: '\{' - captures: - 0: punctuation.section.scope.crystal - push: - - match: '\}' - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: regex_sub - - include: nest_curly_r - nest_ltgt: - - match: \< - captures: - 0: punctuation.section.scope.crystal - push: - - match: \> - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: nest_ltgt - nest_ltgt_i: - - match: \< - captures: - 0: punctuation.section.scope.crystal - push: - - match: \> - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_ltgt_i - nest_ltgt_r: - - match: \< - captures: - 0: punctuation.section.scope.crystal - push: - - match: \> - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: regex_sub - - include: nest_ltgt_r - nest_parens: - - match: \( - captures: - 0: punctuation.section.scope.crystal - push: - - match: \) - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: nest_parens - nest_parens_i: - - match: \( - captures: - 0: punctuation.section.scope.crystal - push: - - match: \) - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: interpolated_crystal - - include: escaped_char - - include: nest_parens_i - nest_parens_r: - - match: \( - captures: - 0: punctuation.section.scope.crystal - push: - - match: \) - captures: - 0: punctuation.section.scope.crystal - pop: true - - include: regex_sub - - include: nest_parens_r - regex_sub: - - include: interpolated_crystal - - include: escaped_char - - match: '(\{)\d+(,\d+)?(\})' - scope: string.regexp.arbitrary-repitition.crystal - captures: - 1: punctuation.definition.arbitrary-repitition.crystal - 3: punctuation.definition.arbitrary-repitition.crystal - - match: '\[(?:\^?\])?' - captures: - 0: punctuation.definition.character-class.crystal - push: - - meta_scope: string.regexp.character-class.crystal - - match: '\]' - captures: - 0: punctuation.definition.character-class.crystal - pop: true - - include: escaped_char - - match: \( - captures: - 0: punctuation.definition.group.crystal - push: - - meta_scope: string.regexp.group.crystal - - match: \) - captures: - 0: punctuation.definition.group.crystal - 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.crystal - captures: - 1: punctuation.definition.comment.crystal diff --git a/assets/syntaxes/Dart.sublime-syntax b/assets/syntaxes/Dart.sublime-syntax deleted file mode 100644 index 34ed01e..0000000 --- a/assets/syntaxes/Dart.sublime-syntax +++ /dev/null @@ -1,369 +0,0 @@ -%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: (?) - 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: '(?[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: '(?\])?\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*((?) - 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 diff --git a/assets/syntaxes/FSharp.sublime-syntax b/assets/syntaxes/FSharp.sublime-syntax deleted file mode 100644 index d7fb525..0000000 --- a/assets/syntaxes/FSharp.sublime-syntax +++ /dev/null @@ -1,672 +0,0 @@ -%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*((?) - 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 diff --git a/assets/syntaxes/HTML (EEx).sublime-syntax b/assets/syntaxes/HTML (EEx).sublime-syntax deleted file mode 100644 index 27eb019..0000000 --- a/assets/syntaxes/HTML (EEx).sublime-syntax +++ /dev/null @@ -1,497 +0,0 @@ -%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: )?\s*() - 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*()?\s*)' - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - include: interpolation - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - include: interpolation - - match: (' - scope: punctuation.definition.tag.end.html - pop: true - - include: tag-attributes - - include: interpolation - - 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 - diff --git a/assets/syntaxes/HTML (Twig).sublime-syntax b/assets/syntaxes/HTML (Twig).sublime-syntax deleted file mode 100644 index fcedca3..0000000 --- a/assets/syntaxes/HTML (Twig).sublime-syntax +++ /dev/null @@ -1,662 +0,0 @@ -%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:]++)(?=[^>]*>)' - 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: ) - scope: comment.block.html.js - captures: - 0: punctuation.definition.comment.js - - match: (//).*$\n? - scope: comment.line.double-slash.js - captures: - 1: punctuation.definition.comment.js - - match: ^(#!).*$\n? - scope: comment.line.shebang.js - captures: - 1: punctuation.definition.comment.js - core: - - include: literal-function-labels - - include: literal-arrow-function-labels - - include: literal-labels - - include: literal-for - - include: literal-switch - - include: styled-components - - include: graphql - - include: expression - - include: literal-punctuation - curly-brackets: - - match: "{" - captures: - 0: meta.brace.curly.begin.js - push: - - meta_scope: meta.group.braces.curly.js - - match: "}" - captures: - 0: meta.brace.curly.end.js - pop: true - - include: main - es7-decorators: - - match: |- - (?x) - (@)([_$a-zA-Z][$\w]*)\b - scope: tag.decorator.js - captures: - 1: punctuation.definition.tag.js - 2: entity.name.tag.js - expression: - - include: merge-conflits - - include: literal-regexp - - include: literal-jsx - - include: es7-decorators - - include: support-class - - include: support-other - - include: literal-function - - include: literal-arrow-function - - include: literal-prototype - - include: literal-keywords - - include: literal-method - - include: literal-module - - include: literal-class - - include: flowtype-declaration - - include: literal-number - - include: literal-template-string - - include: literal-string - - include: literal-language-constant - - include: literal-language-variable - - include: literal-constructor - - include: literal-method-call - - include: literal-function-call - - include: comments - - include: brackets - - include: literal-operators - - include: literal-variable - flowtype-annotation: - - match: (?:(\?)\s*)?(:) - captures: - 1: keyword.operator.flowtype.optional.js - 2: keyword.operator.flowtype.annotation.js - push: - - meta_scope: meta.flowtype.annotation.js - - include: flowtype-tokens - - match: (?=\S) - pop: true - flowtype-brackets: - - match: "{" - captures: - 0: punctuation.section.flowtype.begin.js - push: - - match: "}" - captures: - 0: punctuation.section.flowtype.end.js - pop: true - - include: flowtype-tokens - flowtype-declaration: - - match: (?" - captures: - 0: punctuation.section.flowtype.end.js - pop: true - - include: flowtype-tokens - flowtype-tokens: - - match: '(?<=[:?|&=])(?=\s*{)' - push: - - match: "(?<=})" - pop: true - - include: flowtype-brackets - - match: '\s*([|&])\s*' - scope: meta.flowtype.set.js - captures: - 1: keyword.operator.flowtype.other.js - - match: '[*:?&|.]|\.\.\.|\b(typeof)\b' - scope: keyword.operator.flowtype.other.js - - match: < - captures: - 0: punctuation.section.flowtype.begin.js - push: - - match: ">" - captures: - 0: punctuation.section.flowtype.end.js - pop: true - - include: flowtype-tokens - - match: '\[' - captures: - 0: punctuation.section.flowtype.begin.js - push: - - match: '\]' - captures: - 0: punctuation.section.flowtype.end.js - pop: true - - include: flowtype-tokens - - match: \( - captures: - 0: punctuation.section.flowtype.begin.js - push: - - match: \) - captures: - 0: punctuation.section.flowtype.end.js - pop: true - - include: flowtype-tokens - - match: "=>" - captures: - 0: keyword.operator.flowtype.js - push: - - meta_scope: meta.flowtype.function.js - - match: "(?<=}|[_$a-zA-Z])" - pop: true - - include: flowtype-brackets - - include: flowtype-identifier - - include: comments - - include: flowtype-identifier - - include: literal-string - - include: comments - function-declaration-parameters: - - match: \( - captures: - 0: punctuation.definition.parameters.begin.js - push: - - match: \) - captures: - 0: punctuation.definition.parameters.end.js - pop: true - - include: comments - - include: flowtype-annotation - - match: (?" - captures: - 0: meta.tag.jsx punctuation.definition.tag.end.jsx - push: - - match: (?=)|(/>) - captures: - 1: meta.tag.jsx punctuation.definition.tag.begin.jsx - 2: meta.tag.jsx entity.name.tag.jsx - 3: meta.tag.jsx punctuation.definition.tag.end.jsx - 4: meta.tag.jsx punctuation.definition.tag.end.jsx - pop: true - - include: jsx-tag-end - - include: jsx-attributes - - match: < - scope: invalid.illegal.tag.incomplete.jsx - literal-arrow-function: - - match: |- - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:\b(async)\s+)? - (?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - captures: - 1: entity.name.function.js - 2: keyword.operator.assignment.js - 3: storage.type.js - push: - - meta_scope: meta.function.arrow.js - - match: (?<=\))\s*(=>) - captures: - 1: storage.type.function.arrow.js - pop: true - - include: function-declaration-parameters - - match: |- - (?x) - (?:([_$a-zA-Z][$\w]*)\s*(=)\s*)? - (?:(async)\s+)? - \b([_$a-zA-Z][$\w]*)\s*(=>) - scope: meta.function.arrow.js - captures: - 1: entity.name.function.js - 2: keyword.operator.assignment.js - 3: storage.type.js - 4: variable.parameter.function.js - 5: storage.type.function.arrow.js - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: variable.language.prototype.js - 4: keyword.operator.accessor.js - 5: entity.name.function.js - 6: keyword.operator.assignment.js - 7: storage.type.js - push: - - meta_scope: meta.prototype.function.arrow.js - - match: (?<=\))\s*(=>) - captures: - 1: storage.type.function.arrow.js - pop: true - - include: function-declaration-parameters - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - scope: meta.prototype.function.arrow.js - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: variable.language.prototype.js - 4: keyword.operator.accessor.js - 5: entity.name.function.js - 6: keyword.operator.assignment.js - 7: storage.type.js - 8: variable.parameter.function.js - 9: storage.type.function.arrow.js - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: entity.name.function.js - 4: keyword.operator.assignment.js - 5: storage.type.js - push: - - meta_scope: meta.function.static.arrow.js - - match: (?<=\))\s*(=>) - captures: - 1: storage.type.function.arrow.js - pop: true - - include: function-declaration-parameters - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(async)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - scope: meta.function.static.arrow.js - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: entity.name.function.js - 4: keyword.operator.assignment.js - 5: storage.type.js - 6: variable.parameter.function.js - 7: storage.type.function.arrow.js - literal-arrow-function-labels: - - match: |- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(?=(\((?>(?>[^()]+)|\g<-1>)*\))\s*(=>)) - captures: - 1: string.quoted.js - 2: punctuation.definition.string.begin.js - 3: entity.name.function.js - 4: punctuation.definition.string.end.js - 5: string.quoted.js - 6: punctuation.definition.string.begin.js - 7: entity.name.function.js - 8: punctuation.definition.string.end.js - 9: string.unquoted.js - 10: entity.name.function.js - 11: punctuation.separator.key-value.js - 12: storage.type.js - push: - - meta_scope: meta.function.json.arrow.js - - match: (?<=\))\s*(=>) - captures: - 1: storage.type.function.arrow.js - pop: true - - include: function-declaration-parameters - - match: |- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*\b([_$a-zA-Z][$\w]*)\s*(=>) - scope: meta.function.json.arrow.js - captures: - 1: string.quoted.js - 2: punctuation.definition.string.begin.js - 3: entity.name.function.js - 4: punctuation.definition.string.end.js - 5: string.quoted.js - 6: punctuation.definition.string.begin.js - 7: entity.name.function.js - 8: punctuation.definition.string.end.js - 9: string.unquoted.js - 10: entity.name.function.js - 11: punctuation.separator.key-value.js - 12: storage.type.js - 13: variable.parameter.function.js - 14: storage.type.function.arrow.js - literal-class: - - match: (?\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - captures: - 1: entity.name.function.js - 2: keyword.operator.assignment.js - 3: storage.type.js - 4: storage.type.function.js - 5: keyword.generator.asterisk.js - 6: entity.name.function.js - push: - - meta_scope: meta.function.js - - match: (?<=\)) - pop: true - - include: flowtype-polymorph - - include: function-declaration-parameters - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)(prototype) - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: variable.language.prototype.js - 4: keyword.operator.accessor.js - 5: entity.name.function.js - 6: keyword.operator.assignment.js - 7: storage.type.js - 8: storage.type.function.js - 9: keyword.generator.asterisk.js - 10: entity.name.function.js - push: - - meta_scope: meta.function.prototype.js - - match: (?<=\)) - pop: true - - include: flowtype-polymorph - - include: function-declaration-parameters - - match: |- - (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*(=) - \s*(?:(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)?\s* - captures: - 1: entity.name.class.js - 2: keyword.operator.accessor.js - 3: entity.name.function.js - 4: keyword.operator.assignment.js - 5: storage.type.js - 6: storage.type.function.js - 7: keyword.generator.asterisk.js - 8: entity.name.function.js - push: - - meta_scope: meta.function.static.js - - match: (?<=\)) - pop: true - - include: flowtype-polymorph - - include: function-declaration-parameters - literal-function-call: - - match: '([_$a-zA-Z][$\w]*)\s*(\(\s*\))' - scope: meta.function-call.without-arguments.js - captures: - 1: variable.function.js - 2: meta.group.braces.round.function.arguments.js - - match: '([_$a-zA-Z][$\w]*)\s*(?=\()' - scope: meta.function-call.with-arguments.js - captures: - 1: variable.function.js - - match: '([_$a-zA-Z][$\w]*)\s*(?=`)' - scope: meta.function-call.tagged-template.js - captures: - 1: variable.function.js - literal-function-labels: - - match: |- - (?x) - (?> - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - \s*(:) - \s*(?:\b(async)\s+)? - \s*(function)(?>\s*(\*)|(?=[\s(<])) - \s*([_$a-zA-Z][$\w]*)? - captures: - 1: string.quoted.js - 2: punctuation.definition.string.begin.js - 3: entity.name.function.js - 4: punctuation.definition.string.end.js - 5: string.quoted.js - 6: punctuation.definition.string.begin.js - 7: entity.name.function.js - 8: punctuation.definition.string.end.js - 9: string.unquoted.js - 10: entity.name.function.js - 11: punctuation.separator.key-value.js - 12: storage.type.js - 13: storage.type.function.js - 14: keyword.generator.asterisk.js - 15: entity.name.function.js - push: - - meta_scope: meta.function.json.js - - match: (?<=\)) - pop: true - - include: flowtype-polymorph - - include: function-declaration-parameters - literal-jsx: - - match: '(?<=\(|\{|\[|,|&&|\|\||\?|:|=|=>|\Wreturn|^return|\Wdefault|^)(?=\s*<[_$a-zA-Z])' - push: - - meta_content_scope: meta.jsx.js - - match: (?<=/>|>) - pop: true - - include: jsx-tag-start - literal-keyword-storage: - - match: (?const|let|var)\b - scope: storage.type.js - literal-keywords: - - include: literal-keyword-storage - - match: (?await|yield))\b(?:\s*(\*))? - captures: - 1: keyword.control.flow.js - 2: keyword.generator.asterisk.js - - match: (?if|else)\b - scope: keyword.control.conditional.js - - match: (?catch|finally|throw|try)\b - scope: keyword.control.trycatch.js - - match: (?break|continue|do|goto|while|case|default)\b - scope: keyword.control.loop.js - - match: (?enum|module|public|package|private|interface|protected)\b - scope: keyword.other.reserved.js - - match: (? - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - )\s*:) - push: - - match: ":" - captures: - 0: punctuation.separator.key-value.js - pop: true - - include: literal-string - - match: '(? - ((')((?>[^'\\]|\\.)*)('))| - ((")((?>[^"\\]|\\.)*)("))| - (([_$a-zA-Z][$\w]*|\d+)) - ) - (?=\s*(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - captures: - 1: storage.type.js - 2: storage.type.js - 3: keyword.generator.asterisk.js - 4: string.quoted.js - 5: punctuation.definition.string.begin.js - 6: entity.name.function.js - 7: punctuation.definition.string.end.js - 8: string.quoted.js - 9: punctuation.definition.string.begin.js - 10: entity.name.function.js - 11: punctuation.definition.string.end.js - 12: string.unquoted.js - 13: entity.name.function.js - push: - - meta_scope: meta.method.js - - match: (?<=\)) - pop: true - - include: function-declaration-parameters - - match: |- - (?x) - \b(?:(static)\s+)? - (get|set)\s+ - ([_$a-zA-Z][$\w]*|\d+)\s* - (?=(\((?>(?>[^()]+)|\g<-1>)*\))(?>\s|/\*.*\*/)*\{) - captures: - 1: storage.type.js - 2: storage.type.accessor.js - 3: entity.name.accessor.js - push: - - meta_scope: meta.accessor.js - - match: (?<=\)) - pop: true - - include: function-declaration-parameters - literal-method-call: - - match: |- - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - scope: meta.function-call.static.without-arguments.js - captures: - 1: variable.other.class.js - 2: keyword.operator.accessor.js - 3: variable.function.js - 4: meta.group.braces.round.function.arguments.js - - match: |- - (?x) - (?:(?<=\.)|\b) - ([A-Z][$\w]*)\s*(\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - scope: meta.function-call.static.with-arguments.js - captures: - 1: variable.other.class.js - 2: keyword.operator.accessor.js - 3: variable.function.js - - match: |- - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (\(\s*\)) - scope: meta.function-call.method.without-arguments.js - captures: - 1: variable.function.js - 2: meta.group.braces.round.function.arguments.js - - match: |- - (?x) - (?<=\.) - ([_$a-zA-Z][$\w]*)\s* - (?=\() - scope: meta.function-call.method.with-arguments.js - captures: - 1: variable.function.js - literal-module: - - match: (?import|export|default|from|as)\b - scope: keyword.operator.module.js - literal-number: - - match: '(?i)(?:\B[-+]|\b)0x[0-9a-f]*\.(\B|\b[0-9]+)' - scope: invalid.illegal.numeric.hex.js - - match: '(?:\B[-+]|\b)0[0-9]+\.(\B|\b[0-9]+)' - scope: invalid.illegal.numeric.octal.js - - match: |- - (?xi) - (?:\B[-+])? - (?: - \b0b[0-1]*| # binary - \b0o[0-7]*| # octal - \b0x[0-9a-f]*| # hex - ( - \B\.[0-9]+| # e.g. .999 - \b[0-9]+(\.[0-9]*)? # e.g. 999.999, 999. or 999 - )(e[-+]?[0-9]+)? # e.g. e+123, E-123 - ) - scope: constant.numeric.js - - match: '(?:\B[-+]|\b)(Infinity)\b' - scope: constant.language.infinity.js - literal-operators: - - match: (?delete|instanceof|in|new|of|typeof|void|with)\b - scope: keyword.operator.js - - match: |- - (?x) - !(?!=)| # logical-not right-to-left right - && | # logical-and left-to-right both - \|\| # logical-or left-to-right both - scope: keyword.operator.logical.js - - match: |- - (?x) - =(?!=) # assignment right-to-left both - scope: keyword.operator.assignment.js - - match: |- - (?x) - %= | # assignment right-to-left both - &= | # assignment right-to-left both - \*= | # assignment right-to-left both - \+= | # assignment right-to-left both - -= | # assignment right-to-left both - /= | # assignment right-to-left both - \^= | # assignment right-to-left both - \|= | # assignment right-to-left both - <<= | # assignment right-to-left both - >>= | # assignment right-to-left both - >>>= # assignment right-to-left both - scope: keyword.operator.assignment.augmented.js - - match: |- - (?x) - ~ | # bitwise-not right-to-left right - << | # bitwise-shift left-to-right both - >>> | # bitwise-shift left-to-right both - >> | # bitwise-shift left-to-right both - & | # bitwise-and left-to-right both - \^ | # bitwise-xor left-to-right both - \| # bitwise-or left-to-right both - scope: keyword.operator.bitwise.js - - match: |- - (?x) - <= | # relational left-to-right both - >= | # relational left-to-right both - < | # relational left-to-right both - > # relational left-to-right both - scope: keyword.operator.relational.js - - match: |- - (?x) - === | # equality left-to-right both - !== | # equality left-to-right both - == | # equality left-to-right both - != # equality left-to-right both - scope: keyword.operator.comparison.js - - match: |- - (?x) - -- | # decrement n/a right-or-left - \+\+ | # increment n/a right-or-left - / | # division left-to-right both - % | # modulus left-to-right both - \* | # multiplication left-to-right both - \+ | # addition left-to-right both - - # subtraction left-to-right both - scope: keyword.operator.arithmetic.js - - match: "[?:]" - scope: keyword.operator.ternary.js - - match: (?|<=|>=|==|!=|===|!==|\+|-|\*|%|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|<<=|>>=|>>>=|&=|\|=|\^=|/|/=| - \Wnew|\Wdelete|\Wvoid|\Wtypeof|\Winstanceof|\Win|\Wdo|\Wreturn|\Wcase|\Wthrow|\Wyield| - ^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^yield|^ - )\s* - (/) - (?!/|\*|$) - captures: - 1: punctuation.definition.string.begin.js - push: - - meta_scope: string.regexp.js - - match: "(/)([gimy]*)" - captures: - 1: punctuation.definition.string.end.js - 2: keyword.other.js - pop: true - - include: scope:source.regexp.js - literal-string: - - match: '(["''])' - captures: - 0: punctuation.definition.string.begin.js - push: - - meta_scope: string.quoted.js - - match: (\1)|(\n) - captures: - 1: punctuation.definition.string.end.js - 2: invalid.illegal.newline.js - pop: true - - include: string-content - literal-switch: - - match: (?]{7})\s(.+)$' - captures: - 1: invalid.illegal.conflict-marker.other-commit.js - 2: invalid.illegal.string.js - round-brackets: - - match: \( - captures: - 0: meta.brace.round.begin.js - push: - - meta_scope: meta.group.braces.round.js - - match: \) - captures: - 0: meta.brace.round.end.js - pop: true - - include: expression - square-brackets: - - match: '\[' - captures: - 0: meta.brace.square.begin.js - push: - - meta_scope: meta.group.braces.square.js - - match: '\]' - captures: - 0: meta.brace.square.end.js - pop: true - - include: expression - string-content: - - match: \\\s*\n - scope: constant.character.escape.newline.js - - match: '\\([1-7][0-7]{0,2}|[0-7]{2,3}|[bfnrtv0''"\\]|x\h{2}|u\{\h+\}|u\h{4})' - scope: constant.character.escape.js - styled-components: - - match: (?(?>[^()]+)|\g<-1>)*\))\s*`)' - captures: - 1: meta.function-call.with-arguments.js variable.function.js - push: - - meta_scope: meta.styled-components.js - - match: (?<=`) - captures: - 1: meta.function-call.with-arguments.js variable.function.js - pop: true - - match: \( - captures: - 0: punctuation.definition.group.begin.js - push: - - meta_scope: meta.function-call.with-arguments.js meta.group.js - - match: \) - captures: - 0: punctuation.definition.group.end.js - pop: true - - include: expression - - match: "`" - captures: - 0: punctuation.definition.string.template.begin.js - push: - - meta_content_scope: source.css.embedded.js - - match: "`" - captures: - 0: punctuation.definition.string.template.end.js - pop: true - - include: scope:source.js.css - support-class: - - match: (?Eval|Range|Reference|Syntax|Type|URI)?Error)\b - scope: support.class.error.js - - match: \b(?>Buffer)\b - scope: support.class.node.js - support-other: - - match: (?document|window)\b - scope: support.type.object.dom.js - - match: (?global|GLOBAL|root|__dirname|__filename)\b - scope: support.type.object.node.js - - match: (?~?&$%|]' - - # The list of unicode symbols allowed as operators is fetched from the Julia parser https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm - symb_op_unicode: '[≤≥¬←→↔↚↛↠↣↦↮⇎⇏⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←→≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⊕⊖⊞⊟∪∨⊔±∓∔∸≂≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣÷⋅∘×∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯↑↓]' - symb_op: '(?:{{symb_op_ascii}}|{{symb_op_unicode}})' - - # Multi-character operators - long_op: (?:\+=|-=|\*=|/=|//=|\\\\=|^=|÷=|%=|<<=|>>=|>>>=|\|=|&=|:=|=>|$=|\|\||&&|<:|>:|\|>|<\||//|\+\+|<=|>=|->|===|==|!==|!=) - - # julia> using Unicode - # julia> join(sort(unique((filter(x -> isalpha(x[1]), string.(filter!(x -> isa(eval(x), DataType) || isa(eval(x), UnionAll), filter!(x -> !Base.isdeprecated(Base, x), [names(Base); names(Core)]))))))), "|") - # Compare with https://github.com/JuliaLang/julia/blob/master/base/exports.jl - base_types: \b(?:AbstractArray|AbstractChannel|AbstractDict|AbstractDisplay|AbstractFloat|AbstractIrrational|AbstractMatrix|AbstractRNG|AbstractRange|AbstractSerializer|AbstractSet|AbstractSparseArray|AbstractSparseMatrix|AbstractSparseVector|AbstractString|AbstractUnitRange|AbstractVecOrMat|AbstractVector|Adjoint|Any|ArgumentError|Array|AssertionError|Bidiagonal|BigFloat|BigInt|BitArray|BitMatrix|BitSet|BitVector|Bool|BoundsError|BufferStream|CapturedException|CartesianIndex|CartesianIndices|Cchar|Cdouble|Cfloat|Channel|Char|Cint|Cintmax_t|Clong|Clonglong|Cmd|CodeInfo|Colon|Complex|ComplexF16|ComplexF32|ComplexF64|CompositeException|Condition|ConjArray|ConjMatrix|ConjVector|Cptrdiff_t|Cshort|Csize_t|Cssize_t|Cstring|Cuchar|Cuint|Cuintmax_t|Culong|Culonglong|Cushort|Cvoid|Cwchar_t|Cwstring|DataType|DenseArray|DenseMatrix|DenseVecOrMat|DenseVector|Diagonal|Dict|DimensionMismatch|Dims|DivideError|DomainError|EOFError|EachLine|Enum|Enumerate|ErrorException|Exception|ExponentialBackOff|Expr|Factorization|Float16|Float32|Float64|Function|GlobalRef|GotoNode|HTML|Hermitian|IO|IOBuffer|IOContext|IOStream|IPAddr|IPv4|IPv6|IndexCartesian|IndexLinear|IndexStyle|InexactError|InitError|Int|Int128|Int16|Int32|Int64|Int8|Integer|InterruptException|InvalidStateException|Irrational|KeyError|LabelNode|LinSpace|LineNumberNode|LinearIndices|LoadError|LowerTriangular|MIME|Matrix|MersenneTwister|Method|MethodError|MethodTable|Missing|MissingException|Module|NTuple|NamedTuple|NewvarNode|Nothing|Number|ObjectIdDict|OrdinalRange|OutOfMemoryError|OverflowError|Pair|PartialQuickSort|PermutedDimsArray|Pipe|Ptr|QuoteNode|RandomDevice|Rational|RawFD|ReadOnlyMemoryError|Real|ReentrantLock|Ref|Regex|RegexMatch|RoundingMode|RowVector|SSAValue|SegmentationFault|SerializationState|Set|Signed|SimpleVector|Slot|SlotNumber|Some|SparseMatrixCSC|SparseVector|StackFrame|StackOverflowError|StackTrace|StepRange|StepRangeLen|StridedArray|StridedMatrix|StridedVecOrMat|StridedVector|String|StringIndexError|SubArray|SubString|SymTridiagonal|Symbol|Symmetric|SystemError|TCPSocket|Task|Text|TextDisplay|Timer|Transpose|Tridiagonal|Tuple|Type|TypeError|TypeMapEntry|TypeMapLevel|TypeName|TypeVar|TypedSlot|UDPSocket|UInt|UInt128|UInt16|UInt32|UInt64|UInt8|UndefRefError|UndefVarError|UniformScaling|Uninitialized|Union|UnionAll|UnitRange|Unsigned|UpperTriangular|Val|Vararg|VecElement|VecOrMat|Vector|VersionNumber|WeakKeyDict|WeakRef|equalto)\b - - # julia> using Unicode - # julia> join(filter!(x -> isascii(x[1]) && isalpha(x[1]) && islower(x[1]), map(string, filter!(x -> !Base.isdeprecated(Base, x), [names(Base); names(Core)]))), '|') - base_funcs: (?:abs|abs2|abspath|accept|accumulate|accumulate!|acos|acos_fast|acosd|acosh|acosh_fast|acot|acotd|acoth|acsc|acscd|acsch|adjoint|adjoint!|all|all!|allunique|angle|angle_fast|any|any!|append!|apropos|ascii|asec|asecd|asech|asin|asin_fast|asind|asinh|asinh_fast|assert|asyncmap|asyncmap!|atan|atan2|atan2_fast|atan_fast|atand|atanh|atanh_fast|atexit|atreplinit|axes|backtrace|base|basename|beta|big|bin|bind|binomial|bitbroadcast|bitrand|bits|bitstring|bkfact|bkfact!|blkdiag|broadcast|broadcast!|broadcast_getindex|broadcast_setindex!|bswap|bytes2hex|cat|catch_backtrace|catch_stacktrace|cbrt|cbrt_fast|cd|ceil|cfunction|cglobal|charwidth|checkbounds|checkindex|chmod|chol|cholfact|cholfact!|chomp|chop|chown|chr2ind|circcopy!|circshift|circshift!|cis|cis_fast|clamp|clamp!|cld|clipboard|close|cmp|coalesce|code_llvm|code_lowered|code_native|code_typed|code_warntype|codeunit|codeunits|collect|colon|complex|cond|condskeel|conj|conj!|connect|consume|contains|convert|copy|copy!|copysign|copyto!|cor|cos|cos_fast|cosc|cosd|cosh|cosh_fast|cospi|cot|cotd|coth|count|count_ones|count_zeros|countlines|countnz|cov|cp|cross|csc|cscd|csch|ctime|ctranspose|ctranspose!|cummax|cummin|cumprod|cumprod!|cumsum|cumsum!|current_module|current_task|dec|deepcopy|deg2rad|delete!|deleteat!|den|denominator|deserialize|det|detach|diag|diagind|diagm|diff|digits|digits!|dirname|disable_sigint|display|displayable|displaysize|div|divrem|done|dot|download|dropzeros|dropzeros!|dump|eachindex|eachline|eachmatch|edit|eig|eigfact|eigfact!|eigmax|eigmin|eigvals|eigvals!|eigvecs|eltype|empty|empty!|endof|endswith|enumerate|eof|eps|equalto|error|esc|escape_string|evalfile|exit|exp|exp10|exp10_fast|exp2|exp2_fast|exp_fast|expand|expanduser|expm|expm!|expm1|expm1_fast|exponent|extrema|eye|factorial|factorize|falses|fd|fdio|fetch|fieldcount|fieldname|fieldnames|fieldoffset|filemode|filesize|fill|fill!|filter|filter!|finalize|finalizer|find|findfirst|findin|findlast|findmax|findmax!|findmin|findmin!|findn|findnext|findnz|findprev|first|fld|fld1|fldmod|fldmod1|flipbits!|flipdim|flipsign|float|floor|flush|fma|foldl|foldr|foreach|frexp|full|fullname|functionloc|gamma|gc|gc_enable|gcd|gcdx|gensym|get|get!|get_zero_subnormals|getaddrinfo|getalladdrinfo|gethostname|getindex|getipaddr|getkey|getnameinfo|getpeername|getpid|getsockname|givens|gperm|gradient|hash|haskey|hcat|hessfact|hessfact!|hex|hex2bytes|hex2bytes!|hex2num|homedir|htol|hton|hvcat|hypot|hypot_fast|identity|ifelse|ignorestatus|im|imag|in|include_dependency|include_string|ind2chr|ind2sub|indexin|indices|indmax|indmin|info|insert!|instances|intersect|intersect!|inv|invmod|invperm|invpermute!|ipermute!|ipermutedims|is|is_apple|is_bsd|is_linux|is_unix|is_windows|isabspath|isapprox|isascii|isassigned|isbits|isblockdev|ischardev|isconcrete|isconst|isdiag|isdir|isdirpath|isempty|isequal|iseven|isfifo|isfile|isfinite|ishermitian|isimag|isimmutable|isinf|isinteger|isinteractive|isleaftype|isless|islink|islocked|ismarked|ismatch|ismissing|ismount|isnan|isodd|isone|isopen|ispath|isperm|isposdef|isposdef!|ispow2|isqrt|isreadable|isreadonly|isready|isreal|issetgid|issetuid|issocket|issorted|issparse|issticky|issubnormal|issubset|issubtype|issymmetric|istaskdone|istaskstarted|istextmime|istril|istriu|isvalid|iswritable|iszero|join|joinpath|keys|keytype|kill|kron|last|lbeta|lcm|ldexp|ldltfact|ldltfact!|leading_ones|leading_zeros|length|less|lexcmp|lexless|lfact|lgamma|lgamma_fast|linearindices|linreg|linspace|listen|listenany|lock|log|log10|log10_fast|log1p|log1p_fast|log2|log2_fast|log_fast|logabsdet|logdet|logging|logm|logspace|lpad|lq|lqfact|lqfact!|lstat|lstrip|ltoh|lu|lufact|lufact!|lyap|macroexpand|map|map!|mapfoldl|mapfoldr|mapreduce|mapreducedim|mapslices|mark|match|matchall|max|max_fast|maxabs|maximum|maximum!|maxintfloat|mean|mean!|median|median!|merge|merge!|method_exists|methods|methodswith|middle|midpoints|mimewritable|min|min_fast|minabs|minimum|minimum!|minmax|minmax_fast|missing|mkdir|mkpath|mktemp|mktempdir|mod|mod1|mod2pi|modf|module_name|module_parent|mtime|muladd|mv|names|nb_available|ncodeunits|ndigits|ndims|next|nextfloat|nextind|nextpow|nextpow2|nextprod|nnz|nonzeros|norm|normalize|normalize!|normpath|notify|ntoh|ntuple|nullspace|num|num2hex|numerator|nzrange|object_id|oct|oftype|one|ones|oneunit|open|operm|ordschur|ordschur!|pairs|parent|parentindexes|parentindices|parse|partialsort|partialsort!|partialsortperm|partialsortperm!|peakflops|permute|permute!|permutedims|permutedims!|pi|pinv|pipeline|pointer|pointer_from_objref|pop!|popdisplay|popfirst!|position|pow_fast|powermod|precision|precompile|prepend!|prevfloat|prevind|prevpow|prevpow2|print|print_shortest|print_with_color|println|process_exited|process_running|prod|prod!|produce|promote|promote_rule|promote_shape|promote_type|push!|pushdisplay|pushfirst!|put!|pwd|qr|qrfact|qrfact!|quantile|quantile!|quit|rad2deg|rand|rand!|randcycle|randcycle!|randexp|randexp!|randjump|randn|randn!|randperm|randperm!|randstring|randsubseq|randsubseq!|range|rank|rationalize|read|read!|readandwrite|readavailable|readbytes!|readchomp|readdir|readline|readlines|readlink|readstring|readuntil|real|realmax|realmin|realpath|recv|recvfrom|redirect_stderr|redirect_stdin|redirect_stdout|redisplay|reduce|reducedim|reenable_sigint|reim|reinterpret|reload|relpath|rem|rem2pi|repeat|replace|replace!|repmat|repr|reprmime|reset|reshape|resize!|rethrow|retry|reverse|reverse!|reverseind|rm|rol|rol!|ror|ror!|rot180|rotl90|rotr90|round|rounding|rowvals|rpad|rsearch|rsearchindex|rsplit|rstrip|run|scale!|schedule|schur|schurfact|schurfact!|search|searchindex|searchsorted|searchsortedfirst|searchsortedlast|sec|secd|sech|seek|seekend|seekstart|select|select!|selectperm|selectperm!|send|serialize|set_zero_subnormals|setdiff|setdiff!|setenv|setindex!|setprecision|setrounding|shift!|show|showall|showcompact|showerror|shuffle|shuffle!|sign|signbit|signed|signif|significand|similar|sin|sin_fast|sinc|sincos|sind|sinh|sinh_fast|sinpi|size|sizehint!|sizeof|skip|skipchars|skipmissing|sleep|slicedim|sort|sort!|sortcols|sortperm|sortperm!|sortrows|sparse|sparsevec|spawn|spdiagm|speye|splice!|split|splitdir|splitdrive|splitext|spones|sprand|sprandn|sprint|spzeros|sqrt|sqrt_fast|sqrtm|squeeze|srand|stacktrace|start|startswith|stat|std|stdm|step|stride|strides|string|stringmime|strip|strwidth|sub2ind|subtypes|success|sum|sum!|sumabs|sumabs2|summary|supertype|svd|svdfact|svdfact!|svdvals|svdvals!|sylvester|symdiff|symdiff!|symlink|systemerror|take!|takebuf_array|takebuf_string|tan|tan_fast|tand|tanh|tanh_fast|task_local_storage|tempdir|tempname|thisind|tic|time|time_ns|timedwait|to_indices|toc|toq|touch|trace|trailing_ones|trailing_zeros|transcode|transpose|transpose!|tril|tril!|triu|triu!|trues|trunc|truncate|trylock|tryparse|typeintersect|typejoin|typemax|typemin|unescape_string|union|union!|unique|unique!|unlock|unmark|unsafe_copy!|unsafe_copyto!|unsafe_load|unsafe_pointer_to_objref|unsafe_read|unsafe_store!|unsafe_string|unsafe_trunc|unsafe_wrap|unsafe_write|unshift!|unsigned|uperm|valtype|values|var|varinfo|varm|vcat|vec|vecdot|vecnorm|versioninfo|view|wait|walkdir|warn|which|whos|widemul|widen|withenv|workspace|write|xor|yield|yieldto|zero|zeros|zip|applicable|eval|fieldtype|getfield|invoke|isa|isdefined|nfields|nothing|setfield!|throw|tuple|typeassert|typeof|uninitialized)(?!{{symb_id}}) - - # julia> using Unicode - # julia> join(string.(filter!(x -> isa(eval(x), Module) && !Base.isdeprecated(Base, x), [names(Base); names(Core)])), "|") - base_modules: \b(?:BLAS|Base|Broadcast|DFT|Docs|Iterators|LAPACK|LibGit2|Libc|Libdl|LinAlg|Markdown|Meta|Operators|Pkg|Serializer|SparseArrays|StackTraces|Sys|Threads|Core|Main)\b - - # Highlight exported functions from base modules - # julia> using Unicode - # julia> base_modules = filter!(x -> isa(eval(x), Module) && x != :Main && !Base.isdeprecated(Base, x), [names(Base); names(Core)]) - # julia> modulefunctions(m) = join(filter!(x -> isascii(x[1]) && isalpha(x[1]) && islower(x[1]), string.(names(eval(m)))), "|") - # julia> regexify(m) = "$(string(m))\\.(?:$(modulefunctions(m)))" - # julia> rows = join(regexify.(base_modules), "|") - # julia> print("([^{}]+|\g<-1>)*}' - # Don't use the following ones for lookaheads! May lead to unwanted matches. - # These match unfinished nested braces, to highlight during typing. - nested_curly_sloppy: '(?:{(?>[^{}]+|\g<-1>)*}|\{[^\}\)\] ]*)' - nested_curly_and_round_sloppy: (?:(?>{(?>[^{}]+|\g<-1>)*}|\((?>[^()]+|\g<-1>)*\))|[\{\(][^\}\)\] ]*) - - # Recursively match nested brackets (of any type) and strings - # Must be wrapped in a matching group when used. It is best to do this explicitly when used (not here) to avoid confusion. - # NOTE: Use of atomic groups speeds up parsing immensely. - string: '"(?>(?>\\"|[^"])*|\g<-1>)*"' - nested_brackets_and_strings: |- - (?x) - (?> - {(?>{{string}}|[^{}]+|\g<-1>)*}| - \((?>{{string}}|[^()]+|\g<-1>)*\)| - \[(?>{{string}}|[^\[\]]+|\g<-1>)*\]| - {{string}} - ) - - # Helpers for function declaration - type_comparison_regex: (\$?{{symb_id}}+({{nested_curly_and_round_sloppy}})?)\s*(<:|>:)\s*((?:(?!\.\.)(?:[$.]|{{symb_id}}))+({{nested_curly_and_round_sloppy}})?) - func_name_standard: |- - (?x) - (?!!) # Function name doesn't start with ! - ([^\s{{symb_lang}}]+) # Function name - ({{nested_curly}})? # Match type annotation - (?=[\( ]) - func_name_paren: |- - (?x) - \( # Function name is wrapped in parentheses - (?!!) # Function name doesn't start with ! - (::)? # Function name can start with :: - ((?: # Rest of function name - ({{nested_curly}})| # Match nested curly brackets - [^)] # or anything that doesn't close paren - )+) - \) - ({{nested_curly}})? # Match type annotation - (?=\() - func_params: |- - (?x) - \( # Open function parameters - # We are lazy here and don't parse the exact form of a parameter list - # with types, default values, splats etc. It is not needed. - ( - ({{nested_brackets_and_strings}})| # Match nested brackets, can occur in parameter default value etc. - [^(){}\[\]"] # or anything that doesn't close the argument list - )* - \) # Close function parameters - ( # Allow where keyword - \s*where\s+ - ( - {{type_comparison_regex}}| - {{nested_curly}}| - {{symb_id}}+ - ) - )* - \s*=(?!=) # Followed by exactly one equal sign - -contexts: - main: - - include: declarations - - include: expressions - - expressions: - - include: comments - - include: symbols - - include: type-annotation - - include: type-comparison - - include: literals - - include: operators - - include: strings - - include: keywords - - include: macros - - include: support-functions - - include: function-call - - include: anonymous-function - - include: variable - - include: nested_parens - - include: nested_squarebrackets - - declarations: - - include: decl-func - - include: decl-func-assignment-form - - include: decl-type - - include: decl-macro - - comments: - - match: '#=' - push: comment-block - - match: '#.*' - scope: comment.line.number-sign.julia - - comment-block: - - meta_scope: comment.block.number-sign-equals.julia - - match: '#=' - push: comment-block - - match: '=#' - pop: true - - keywords: - - match: \b(begin|end|function|macro|quote|let|local|global|const|abstract|module|baremodule|using|import|export|in)\b - scope: keyword.other.julia - - match: \b(if|else|elseif|for|while|do|try|catch|finally|return|break|continue)\b - scope: keyword.control.julia - - operators: - # Bang is not only an operator symbol, it can also be part of a function name, thus it is treated separately. - # Single quote is not only an operator symbol, it can also start a string. It is an operator if it is preceded by an identifier, dot, single-quote, right round bracket or right square bracket - - match: (\.?)({{long_op}}) - captures: - 1: keyword.operator.broadcast.julia - 2: keyword.operator.julia - - match: (\.?)(=) - captures: - 1: keyword.operator.broadcast.julia - 2: keyword.operator.assignment.julia - - match: (\.)({{symb_op}}|') - captures: - 1: keyword.operator.broadcast.julia - 2: keyword.operator.julia - - match: |- - (?x) - ( - {{symb_op}}| - !| - (?<= - ( - {{symb_id}}| - [.')\]] - ) - ) - ' - ) - scope: keyword.operator.julia - - support-functions: - - match: '(?={{base_module_func}}\.?({{nested_curly}})?\()' - push: - - match: ({{base_modules}})\. - captures: - 1: support.module.julia - - match: (?<=\.)({{symb_id}}+) - scope: variable.function.julia support.function.julia meta.function-call.julia - push: function-call-helper - - match: '' - pop: true - - match: '(?={{base_module_func}})' - push: - - match: ({{symb_id}}+)\. - captures: - 1: support.module.julia - - match: (?<=\.)({{symb_id}}+) - scope: variable.function.julia support.function.julia - - match: '' - pop: true - - function-call: - - match: '(?:)\s*((?:(?!\.\.)(?:[$.]|{{symb_id}}))*({{nested_curly_and_round_sloppy}})?) - captures: - 1: keyword.operator.julia - 2: support.type.julia - - type-comparison: - - match: '{{type_comparison_regex}}' - captures: - 1: support.type.julia - 3: keyword.operator.julia - 4: support.type.julia - - where-type: - - match: (\{){{type_comparison_regex}}(\}) - captures: - 1: support.type.julia - 2: support.type.julia - 4: keyword.operator.julia - 5: support.type.julia - 7: support.type.julia - - match: '{{type_comparison_regex}}' - captures: - 1: support.type.julia - 3: keyword.operator.julia - 4: support.type.julia - - match: '({{nested_curly_sloppy}})' - scope: support.type.julia - - match: '{{symb_id}}+' - scope: support.type.julia - - match: \s*(where)\s+ - captures: - 1: keyword.other.julia - push: where-type - - match: '' - pop: true - - decl-func: - - match: '\b(?)' - set: function-parameters - - match: '({{symb_id}}+)(::)?({{symb_id}}+)?({{nested_curly}})?\s*(->)' - captures: - 1: variable.parameter - 2: keyword.operator - 3: support.type - 4: support.type - 5: keyword.operator - - match: '({{symb_id}}+)\s*(->)' - captures: - 1: variable.parameter - 2: keyword.operator - - # Do lookaheads to distinguish function calls from function definitions on assignment form - decl-func-assignment-form: - - match: |- - (?x) - (?= - {{func_name_paren}} - {{func_params}} - ) - push: func-name-paren - - match: |- - (?x) - (?= - {{func_name_standard}} - {{func_params}} - ) - push: func-name-standard - - match: |- - (?x) - (?= - (?!!) - ([^\s{{symb_lang}}]+\.)+ - {{func_name_standard}} - {{func_params}} - ) - push: - - match: '({{base_modules}})\.(?=[^\s{{symb_lang}}])' - captures: - 1: support.module.julia - push: func-name-standard - pop: true - - match: '(([^\s{{symb_lang}}]+\.)+)(?=[^\s{{symb_lang}}])' - captures: - 1: variable.other.julia - push: func-name-standard - pop: true - - func-name-standard: - - match: '{{func_name_standard}}' - captures: - 1: entity.name.function.julia - 2: support.type.julia - set: function-parameters - - func-name-paren: - - match: '{{func_name_paren}}' - captures: - 1: keyword.operator.julia - 2: entity.name.function.julia - 4: support.type.julia - set: function-parameters - - function-parameters: - - meta_content_scope: meta.function.parameters.julia - - match: end - scope: keyword.other - pop: true - - match: \)\s*(where)\s+ - captures: - 1: keyword.other - set: where-type - - match: \) - pop: true - - include: comments - - match: '=' - scope: keyword.operator.assignment.julia - set: - - meta_scope: meta.function.parameters.default-value.julia - - match: '(?=[,;)])' - set: function-parameters - - include: expressions - - include: type-annotation - - match: \.\.\. # Splat after type - scope: keyword.operator.julia - - match: ({{symb_id}}+)(\.\.\.)? - captures: - 1: variable.parameter.julia - 2: keyword.operator.julia - - decl-macro: - - match: '\b(macro)\s+([^(]+)\(' - captures: - 1: keyword.other.julia - 2: entity.name.macro.julia - set: function-parameters - - decl-type: - # Dollar is ok because type names can be interpolated. - - match: \b(?:(mutable)\s+(struct)|(abstract)\s+(type)|(primitive)\s+(type))\s+((?:\$|{{symb_id}})+)({{nested_curly}})? - scope: meta.type.julia - captures: # Make this less repetitive? - 1: keyword.other.julia - 2: keyword.other.julia - 3: keyword.other.julia - 4: keyword.other.julia - 5: keyword.other.julia - 6: keyword.other.julia - 7: entity.name.type.julia - 8: support.type.julia - - match: \b(struct)\s+((?:\$|{{symb_id}})+)({{nested_curly}})? - scope: meta.type.julia - captures: - 1: keyword.other.julia - 2: entity.name.type.julia - 3: support.type.julia - - symbols: - # This is slightly more involved than what one might first expect - # because, for example, in `:aa` the symbol is `aa` but in `:+a` only `+` is the symbol. - # Also take some extra steps to not mess up ternary a?b:c syntax. - - match: |- - (?x) - (?" - 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 diff --git a/assets/syntaxes/LESS.sublime-syntax b/assets/syntaxes/LESS.sublime-syntax deleted file mode 100644 index fe8b32e..0000000 --- a/assets/syntaxes/LESS.sublime-syntax +++ /dev/null @@ -1,618 +0,0 @@ -%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 diff --git a/assets/syntaxes/Nix.sublime-syntax b/assets/syntaxes/Nix.sublime-syntax deleted file mode 100644 index 81ed7c6..0000000 --- a/assets/syntaxes/Nix.sublime-syntax +++ /dev/null @@ -1,609 +0,0 @@ -%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: '(?\=|\>|&&|\|\||-\>|//|\?|\+\+|-|\*|/(?=([^*]|$))|\+)' - 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: '(?" - captures: - 0: punctuation.definition.comment.block.end.powershell - pop: true - - include: commentEmbeddedDocs - - match: '[2-6]>&1|>>|>|<<|<|>|>\||[1-6]>|[1-6]>>' - scope: keyword.operator.redirection.powershell - - include: commands - - include: commentLine - - include: variable - - include: interpolatedStringContent - - include: function - - include: attribute - - include: UsingDirective - - include: type - - include: hashtable - - include: doubleQuotedString - - include: scriptblock - - include: doubleQuotedStringEscapes - - match: (?' - scope: punctuation.definition.map.end.proto - pop: true - - match: '(?={{ident}})' - push: message_type_or_pop diff --git a/assets/syntaxes/ProtobufText.sublime-syntax b/assets/syntaxes/ProtobufText.sublime-syntax deleted file mode 100644 index 4462d04..0000000 --- a/assets/syntaxes/ProtobufText.sublime-syntax +++ /dev/null @@ -1,186 +0,0 @@ -%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 diff --git a/assets/syntaxes/Robot.sublime-syntax b/assets/syntaxes/Robot.sublime-syntax deleted file mode 100644 index 85e4f6d..0000000 --- a/assets/syntaxes/Robot.sublime-syntax +++ /dev/null @@ -1,54 +0,0 @@ -%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: '((?&|\^~.])(\+|\-|\*|\/)(?![/=\-+!*%<>&|\^~.])' - 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)\]},;:\.])' - 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 diff --git a/assets/syntaxes/TOML.sublime-syntax b/assets/syntaxes/TOML.sublime-syntax deleted file mode 100644 index 101cdaa..0000000 --- a/assets/syntaxes/TOML.sublime-syntax +++ /dev/null @@ -1,401 +0,0 @@ -%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) - (?\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 diff --git a/assets/syntaxes/TypeScript.sublime-syntax b/assets/syntaxes/TypeScript.sublime-syntax deleted file mode 100644 index 75a6c2a..0000000 --- a/assets/syntaxes/TypeScript.sublime-syntax +++ /dev/null @@ -1,3027 +0,0 @@ -%YAML 1.2 ---- -# http://www.sublimetext.com/docs/3/syntax.html -name: TypeScript -file_extensions: - - ts -scope: source.ts -contexts: - main: - - include: directives - - include: statements - - match: \A(#!).*(?=$) - scope: comment.line.shebang.ts - captures: - 1: punctuation.definition.comment.ts - comment: - - match: /\*\*(?!/) - captures: - 0: punctuation.definition.comment.ts - push: - - meta_scope: comment.block.documentation.ts - - match: \*/ - captures: - 0: punctuation.definition.comment.ts - pop: true - - include: docblock - - match: (/\*)(?:\s*((@)internal)(?=\s|(\*/)))? - captures: - 1: punctuation.definition.comment.ts - 2: storage.type.internaldeclaration.ts - 3: punctuation.decorator.internaldeclaration.ts - push: - - meta_scope: comment.block.ts - - match: \*/ - captures: - 0: punctuation.definition.comment.ts - pop: true - - match: '(^[ \t]+)?((//)(?:\s*((@)internal)(?=\s|$))?)' - captures: - 1: punctuation.whitespace.comment.leading.ts - 2: comment.line.double-slash.ts - 3: punctuation.definition.comment.ts - 4: storage.type.internaldeclaration.ts - 5: punctuation.decorator.internaldeclaration.ts - push: - - meta_content_scope: comment.line.double-slash.ts - - match: (?=^) - pop: true - access-modifier: - - match: '(?]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)' - captures: - 1: punctuation.definition.block.ts - push: - - meta_scope: meta.objectliteral.ts - - match: '\}' - captures: - 0: punctuation.definition.block.ts - pop: true - - include: object-member - array-binding-pattern: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.ts - 2: punctuation.definition.binding-pattern.array.ts - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.ts - pop: true - - include: binding-element - - include: punctuation-comma - array-binding-pattern-const: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.ts - 2: punctuation.definition.binding-pattern.array.ts - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.ts - pop: true - - include: binding-element-const - - include: punctuation-comma - array-literal: - - match: '\s*(\[)' - captures: - 1: meta.brace.square.ts - push: - - meta_scope: meta.array.literal.ts - - match: '\]' - captures: - 0: meta.brace.square.ts - pop: true - - include: expression - - include: punctuation-comma - arrow-function: - - match: '(?:(?)' - scope: meta.arrow.ts - captures: - 1: storage.modifier.async.ts - 2: variable.parameter.ts - - match: |- - (?x) (?: - (? is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - ) - ) - captures: - 1: storage.modifier.async.ts - push: - - meta_scope: meta.arrow.ts - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: comment - - include: type-parameters - - include: function-parameters - - include: arrow-return-type - - match: "=>" - captures: - 0: storage.type.function.arrow.ts - push: - - meta_scope: meta.arrow.ts - - match: '(?<=\}|\S)(?)|((?!\{)(?=\S))' - pop: true - - include: decl-block - - include: expression - arrow-return-type: - - match: (?<=\))\s*(:) - captures: - 1: keyword.operator.type.annotation.ts - push: - - meta_scope: meta.return.type.arrow.ts - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: arrow-return-type-body - arrow-return-type-body: - - match: '(?<=[:])(?=\s*\{)' - push: - - match: '(?<=\})' - pop: true - - include: type-object - - include: type-predicate-operator - - include: type - async-modifier: - - match: '(?*?\&\|\^]|[^_$[:alnum:]](?:\+\+|\-\-)|[^\+]\+|[^\-]\-))\s*(<)(?!)\s* - captures: - 1: meta.brace.angle.ts - pop: true - - include: type - - match: '(?:(?<=^))\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\s*>)' - captures: - 1: meta.brace.angle.ts - push: - - meta_scope: cast.expr.ts - - match: (\>)\s* - captures: - 1: meta.brace.angle.ts - pop: true - - include: type - class-declaration: - - match: '(?\s*$)' - captures: - 1: punctuation.definition.comment.ts - push: - - meta_scope: comment.line.triple-slash.directive.ts - - match: (?=^) - pop: true - - match: (<)(reference|amd-dependency|amd-module) - captures: - 1: punctuation.definition.tag.directive.ts - 2: entity.name.tag.directive.ts - push: - - meta_scope: meta.tag.ts - - match: /> - captures: - 0: punctuation.definition.tag.directive.ts - pop: true - - match: path|types|no-default-lib|lib|name - scope: entity.other.attribute-name.directive.ts - - match: "=" - scope: keyword.operator.assignment.ts - - include: string - docblock: - - match: |- - (?x) - ((@)(?:access|api)) - \s+ - (private|protected|public) - \b - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: constant.language.access-type.jsdoc - - match: |- - (?x) - ((@)author) - \s+ - ( - [^@\s<>*/] - (?:[^@<>*/]|\*[^/])* - ) - (?: - \s* - (<) - ([^>\s]+) - (>) - )? - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - 4: punctuation.definition.bracket.angle.begin.jsdoc - 5: constant.other.email.link.underline.jsdoc - 6: punctuation.definition.bracket.angle.end.jsdoc - - match: |- - (?x) - ((@)borrows) \s+ - ((?:[^@\s*/]|\*[^/])+) # - \s+ (as) \s+ # as - ((?:[^@\s*/]|\*[^/])+) # - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - 4: keyword.operator.control.jsdoc - 5: entity.name.type.instance.jsdoc - - match: ((@)example)\s+ - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - meta_scope: meta.example.jsdoc - - match: (?=@|\*/) - pop: true - - match: ^\s\*\s+ - - match: \G(<)caption(>) - captures: - 0: entity.name.tag.inline.jsdoc - 1: punctuation.definition.bracket.angle.begin.jsdoc - 2: punctuation.definition.bracket.angle.end.jsdoc - push: - - meta_content_scope: constant.other.description.jsdoc - - match: ()|(?=\*/) - captures: - 0: entity.name.tag.inline.jsdoc - 1: punctuation.definition.bracket.angle.begin.jsdoc - 2: punctuation.definition.bracket.angle.end.jsdoc - pop: true - - match: '[^\s@*](?:[^*]|\*[^/])*' - captures: - 0: source.embedded.ts - - match: (?x) ((@)kind) \s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \b - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: constant.language.symbol-type.jsdoc - - match: |- - (?x) - ((@)see) - \s+ - (?: - # URL - ( - (?=https?://) - (?:[^\s*]|\*[^/])+ - ) - | - # JSDoc namepath - ( - (?! - # Avoid matching bare URIs (also acceptable as links) - https?:// - | - # Avoid matching {@inline tags}; we match those below - (?:\[[^\[\]]*\])? # Possible description [preceding]{@tag} - {@(?:link|linkcode|linkplain|tutorial)\b - ) - # Matched namepath - (?:[^@\s*/]|\*[^/])+ - ) - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.link.underline.jsdoc - 4: entity.name.type.instance.jsdoc - - match: |- - (?x) - ((@)template) - \s+ - # One or more valid identifiers - ( - [A-Za-z_$] # First character: non-numeric word character - [\w$.\[\]]* # Rest of identifier - (?: # Possible list of additional identifiers - \s* , \s* - [A-Za-z_$] - [\w$.\[\]]* - )* - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: |- - (?x) - ( - (@) - (?:arg|argument|const|constant|member|namespace|param|var) - ) - \s+ - ( - [A-Za-z_$] - [\w$.\[\]]* - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: '((@)typedef)\s+(?={)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: '(?:[^@\s*/]|\*[^/])+' - scope: entity.name.type.instance.jsdoc - - match: '((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\s+(?={)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: '([A-Za-z_$][\w$.\[\]]*)' - scope: variable.other.jsdoc - - match: |- - (?x) - (\[)\s* - [\w$]+ - (?: - (?:\[\])? # Foo[ ].bar properties within an array - \. # Foo.Bar namespaced parameter - [\w$]+ - )* - (?: - \s* - (=) # [foo=bar] Default parameter value - \s* - ( - # The inner regexes are to stop the match early at */ and to not stop at escaped quotes - (?> - "(?:(?:\*(?!/))|(?:\\(?!"))|[^*\\])*?" | # [foo="bar"] Double-quoted - '(?:(?:\*(?!/))|(?:\\(?!'))|[^*\\])*?' | # [foo='bar'] Single-quoted - \[ (?:(?:\*(?!/))|[^*])*? \] | # [foo=[1,2]] Array literal - (?:(?:\*(?!/))|\s(?!\s*\])|\[.*?(?:\]|(?=\*/))|[^*\s\[\]])* # Everything else - )* - ) - )? - \s*(?:(\])((?:[^*\s]|\*[^\s/])+)?|(?=\*/)) - scope: variable.other.jsdoc - captures: - 1: punctuation.definition.optional-value.begin.bracket.square.jsdoc - 2: keyword.operator.assignment.jsdoc - 3: source.embedded.ts - 4: punctuation.definition.optional-value.end.bracket.square.jsdoc - 5: invalid.illegal.syntax.jsdoc - - match: |- - (?x) - ( - (@) - (?:define|enum|exception|export|extends|lends|implements|modifies - |namespace|private|protected|returns?|suppress|this|throws|type - |yields?) - ) - \s+(?={) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: |- - (?x) - ( - (@) - (?:alias|augments|callback|constructs|emits|event|fires|exports? - |extends|external|function|func|host|lends|listens|interface|memberof!? - |method|module|mixes|mixin|name|requires|see|this|typedef|uses) - ) - \s+ - ( - (?: - [^{}@\s*] | \*[^/] - )+ - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - - match: '((@)(?:default(?:value)?|license|version))\s+(([''''"]))' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - 4: punctuation.definition.string.begin.jsdoc - push: - - meta_content_scope: variable.other.jsdoc - - match: (\3)|(?=$|\*/) - captures: - 0: variable.other.jsdoc - 1: punctuation.definition.string.end.jsdoc - pop: true - - match: '((@)(?:default(?:value)?|license|tutorial|variation|version))\s+([^\s*]+)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: '(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \b' - scope: storage.type.class.jsdoc - captures: - 1: punctuation.definition.block.tag.jsdoc - - include: inline-tags - enum-declaration: - - match: '(?>=|>>>=|\|= - scope: keyword.operator.assignment.compound.bitwise.ts - - match: "<<|>>>|>>" - scope: keyword.operator.bitwise.shift.ts - - match: "===|!==|==|!=" - scope: keyword.operator.comparison.ts - - match: <=|>=|<>|<|> - scope: keyword.operator.relational.ts - - match: \!|&&|\|\| - scope: keyword.operator.logical.ts - - match: \&|~|\^|\| - scope: keyword.operator.bitwise.ts - - match: \= - scope: keyword.operator.assignment.ts - - match: "--" - scope: keyword.operator.decrement.ts - - match: \+\+ - scope: keyword.operator.increment.ts - - match: '%|\*|/|-|\+' - scope: keyword.operator.arithmetic.ts - - match: '(?<=[_$[:alnum:])\]])\s*(/)(?![/*])' - captures: - 1: keyword.operator.arithmetic.ts - expressionPunctuations: - - include: punctuation-comma - - include: punctuation-accessor - expressionWithoutIdentifiers: - - include: string - - include: regex - - include: template - - include: comment - - include: function-expression - - include: class-expression - - include: arrow-function - - include: paren-expression-possibly-arrow - - include: cast - - include: ternary-expression - - include: new-expr - - include: instanceof-expr - - include: object-literal - - include: expression-operators - - include: function-call - - include: literal - - include: support-objects - - include: paren-expression - field-declaration: - - match: |- - (?x)(?) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.property.ts entity.name.function.ts - 2: keyword.operator.optional.ts - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: meta.definition.property.ts variable.object.property.ts - - match: \? - scope: keyword.operator.optional.ts - for-loop: - - match: '(?\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - push: - - match: '(?<=\))(?!(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - pop: true - - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))' - push: - - meta_scope: meta.function-call.ts - - match: '(?=\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - pop: true - - include: literal - - include: support-objects - - include: object-identifiers - - include: punctuation-accessor - - match: '(?:(?) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) - captures: - 1: punctuation.accessor.ts - 2: punctuation.accessor.optional.ts - 3: entity.name.function.ts - - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])' - captures: - 1: punctuation.accessor.ts - 2: punctuation.accessor.optional.ts - 3: variable.other.constant.property.ts - - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([_$[:alpha:]][_$[:alnum:]]*)' - captures: - 1: punctuation.accessor.ts - 2: punctuation.accessor.optional.ts - 3: variable.other.property.ts - - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" - scope: variable.other.constant.ts - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: variable.other.readwrite.ts - import-declaration: - - match: '(?) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - scope: meta.object.member.ts - captures: - 0: meta.object-literal.key.ts - 1: entity.name.function.ts - - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)' - scope: meta.object.member.ts - captures: - 0: meta.object-literal.key.ts - - match: \.\.\. - captures: - 0: keyword.operator.spread.ts - push: - - meta_scope: meta.object.member.ts - - match: '(?=,|\})' - pop: true - - include: expression - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)' - scope: meta.object.member.ts - captures: - 1: variable.other.readwrite.ts - - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)' - push: - - meta_scope: meta.object.member.ts - - match: '(?=,|\}|$)' - pop: true - - include: expression - - match: ":" - captures: - 0: meta.object-literal.key.ts punctuation.separator.key-value.ts - push: - - meta_scope: meta.object.member.ts - - match: '(?=,|\})' - pop: true - - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)\(\s*([\{\[]\s*)?$)' - captures: - 1: storage.modifier.async.ts - push: - - match: (?<=\)) - pop: true - - include: type-parameters - - match: \( - captures: - 0: meta.brace.round.ts - push: - - match: \) - captures: - 0: meta.brace.round.ts - pop: true - - include: expression-inside-possibly-arrow-parens - - match: '(?<=:)\s*(async)?\s*(\()(?=\s*([\{\[]\s*)?$)' - captures: - 1: storage.modifier.async.ts - 2: meta.brace.round.ts - push: - - match: \) - captures: - 0: meta.brace.round.ts - pop: true - - include: expression-inside-possibly-arrow-parens - - include: expression - - include: punctuation-comma - parameter-array-binding-pattern: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.ts - 2: punctuation.definition.binding-pattern.array.ts - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.ts - pop: true - - include: parameter-binding-element - - include: punctuation-comma - parameter-binding-element: - - include: comment - - include: string - - include: parameter-object-binding-pattern - - include: parameter-array-binding-pattern - - include: destructuring-parameter-rest - - include: variable-initializer - parameter-name: - - match: '(?) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: storage.modifier.ts - 2: keyword.operator.rest.ts - 3: entity.name.function.ts variable.language.this.ts - 4: entity.name.function.ts - 5: keyword.operator.optional.ts - - match: '(?x)(?:(?]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\(\s*[\{\[]\s*$)' - captures: - 1: storage.modifier.async.ts - push: - - match: (?<=\)) - pop: true - - include: paren-expression-possibly-arrow-with-typeparameters - - match: '(?<=[(=,]|=>)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\()|(<))\s*$)' - captures: - 1: storage.modifier.async.ts - push: - - match: (?<=\)) - pop: true - - include: paren-expression-possibly-arrow-with-typeparameters - - include: possibly-arrow-return-type - paren-expression-possibly-arrow-with-typeparameters: - - include: type-parameters - - match: \( - captures: - 0: meta.brace.round.ts - push: - - match: \) - captures: - 0: meta.brace.round.ts - pop: true - - include: expression-inside-possibly-arrow-parens - possibly-arrow-return-type: - - match: '(?<=\))\s*(:)(?=\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+\s*=>)' - captures: - 1: meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts - push: - - meta_content_scope: meta.arrow.ts meta.return.type.arrow.ts - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: arrow-return-type-body - property-accessor: - - match: '(?|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))' - captures: - 1: punctuation.definition.string.begin.ts - push: - - meta_scope: string.regexp.ts - - match: "(/)([gimsuy]*)" - captures: - 1: punctuation.definition.string.end.ts - 2: keyword.other.ts - pop: true - - include: regexp - - match: '(?' - captures: - 0: keyword.other.back-reference.regexp - 1: variable.other.regexp - - match: '[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??' - scope: keyword.operator.quantifier.regexp - - match: \| - scope: keyword.operator.or.regexp - - match: (\()((\?=)|(\?!)|(\?<=)|(\?))?' - captures: - 0: punctuation.definition.group.regexp - 1: punctuation.definition.group.no-capture.regexp - 2: variable.other.regexp - push: - - meta_scope: meta.group.regexp - - match: \) - captures: - 0: punctuation.definition.group.regexp - pop: true - - include: regexp - - match: '(\[)(\^)?' - captures: - 1: punctuation.definition.character-class.regexp - 2: keyword.operator.negation.regexp - push: - - meta_scope: constant.other.character-class.set.regexp - - match: '(\])' - captures: - 1: punctuation.definition.character-class.regexp - pop: true - - match: '(?:.|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))' - scope: constant.other.character-class.range.regexp - captures: - 1: constant.character.numeric.regexp - 2: constant.character.control.regexp - 3: constant.character.escape.backslash.regexp - 4: constant.character.numeric.regexp - 5: constant.character.control.regexp - 6: constant.character.escape.backslash.regexp - - include: regex-character-class - - include: regex-character-class - return-type: - - match: (?<=\))\s*(:)(?=\s*\S) - captures: - 1: keyword.operator.type.annotation.ts - push: - - meta_scope: meta.return.type.ts - - match: "(?]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?\() - captures: - 1: punctuation.accessor.ts - 2: punctuation.accessor.optional.ts - 3: support.constant.dom.ts - 4: support.variable.property.dom.ts - - match: |- - (?x)(?\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)`)' - captures: - 1: entity.name.function.tagged-template.ts - push: - - meta_scope: string.template.ts - - match: (?=`) - pop: true - - include: type-arguments - - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)" - captures: - 1: entity.name.function.tagged-template.ts - 2: punctuation.definition.string.template.begin.ts - push: - - meta_scope: string.template.ts - - match: "`" - captures: - 0: punctuation.definition.string.template.end.ts - pop: true - - include: template-substitution-element - - include: string-character-escape - template-substitution-element: - - match: '\$\{' - captures: - 0: punctuation.definition.template-expression.begin.ts - push: - - meta_scope: meta.template.expression.ts - - meta_content_scope: meta.embedded.line.ts - - match: '\}' - captures: - 0: punctuation.definition.template-expression.end.ts - pop: true - - include: expression - ternary-expression: - - match: '(?!\?\.\s*[^[:digit:]])(\?)' - captures: - 1: keyword.operator.ternary.ts - push: - - match: \s*(:) - captures: - 1: keyword.operator.ternary.ts - pop: true - - include: expression - this-literal: - - match: '(?])|((?<=[\}>\]\)]|[_$[:alpha:]])\s*(?=\{)))' - pop: true - - include: type - - match: (:) - captures: - 1: keyword.operator.type.annotation.ts - push: - - meta_scope: meta.type.annotation.ts - - match: '(?])|(?=^\s*$)|((?<=\S)(?=\s*$))|((?<=[\}>\]\)]|[_$[:alpha:]])\s*(?=\{)))' - pop: true - - include: type - type-arguments: - - match: \< - captures: - 0: punctuation.definition.typeparameters.begin.ts - push: - - meta_scope: meta.type.parameters.ts - - match: \> - captures: - 0: punctuation.definition.typeparameters.end.ts - pop: true - - include: type - - include: punctuation-comma - type-builtin-literals: - - match: '(?) - )) - ) - ) - ) - push: - - meta_scope: meta.type.function.ts - - match: (?<=\)) - pop: true - - include: function-parameters - type-function-return-type: - - match: (=>)(?=\s*\S) - captures: - 1: storage.type.function.arrow.ts - push: - - meta_scope: meta.type.function.return.ts - - match: '(?)(?:\?]|//|$)' - pop: true - - include: type-function-return-type-core - - match: "=>" - captures: - 0: storage.type.function.arrow.ts - push: - - meta_scope: meta.type.function.return.ts - - match: '(?)(?]|//|^\s*$)|((?<=\S)(?=\s*$)))' - pop: true - - include: type-function-return-type-core - type-function-return-type-core: - - include: comment - - match: '(?<==>)(?=\s*\{)' - push: - - match: '(?<=\})' - pop: true - - include: type-object - - include: type-predicate-operator - - include: type - type-name: - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))' - captures: - 1: entity.name.type.module.ts - 2: punctuation.accessor.ts - 3: punctuation.accessor.optional.ts - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: entity.name.type.ts - type-object: - - match: '\{' - captures: - 0: punctuation.definition.block.ts - push: - - meta_scope: meta.object.type.ts - - match: '\}' - captures: - 0: punctuation.definition.block.ts - pop: true - - include: comment - - include: method-declaration - - include: indexer-declaration - - include: indexer-mapped-type-declaration - - include: field-declaration - - include: type-annotation - - match: \.\.\. - captures: - 0: keyword.operator.spread.ts - push: - - match: '(?=\}|;|,|$)|(?<=\})' - pop: true - - include: type - - include: punctuation-comma - - include: punctuation-semicolon - - include: type - type-operators: - - include: typeof-operator - - match: '(?:([&|])|(=(?!>)))(?=\s*\{)' - captures: - 1: keyword.operator.type.ts - 2: keyword.operator.assignment.ts - push: - - match: '(?<=\})' - pop: true - - include: type-object - - match: "([&|])|(=(?!>))" - captures: - 1: keyword.operator.type.ts - 2: keyword.operator.assignment.ts - push: - - match: (?=\S) - pop: true - - match: '(?) - captures: - 1: punctuation.definition.typeparameters.end.ts - pop: true - - include: comment - - match: '(?) - )) - )) - )) | - (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)))) - captures: - 1: storage.modifier.ts - 2: keyword.operator.rest.ts - 3: entity.name.function.ts variable.language.this.ts - 4: entity.name.function.ts - 5: keyword.operator.optional.ts - - match: '(?x)(?:(?) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts - push: - - meta_scope: meta.var-single-variable.expr.ts - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([_$[:alpha:]][_$[:alnum:]]*)" - captures: - 1: meta.definition.variable.ts variable.other.constant.ts - push: - - meta_scope: meta.var-single-variable.expr.ts - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - var-single-variable: - - match: |- - (?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s* - # function assignment | - (=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?[\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.variable.ts entity.name.function.ts - push: - - meta_scope: meta.var-single-variable.expr.ts - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" - captures: - 1: meta.definition.variable.ts variable.other.constant.ts - push: - - meta_scope: meta.var-single-variable.expr.ts - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([_$[:alpha:]][_$[:alnum:]]*)" - captures: - 1: meta.definition.variable.ts variable.other.readwrite.ts - push: - - meta_scope: meta.var-single-variable.expr.ts - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - var-single-variable-type-annotation: - - include: type-annotation - - include: string - - include: comment - variable-initializer: - - match: (?]|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^yield|[^\._$[:alnum:]]yield|^throw|[^\._$[:alnum:]]throw|^in|[^\._$[:alnum:]]in|^of|[^\._$[:alnum:]]of|^typeof|[^\._$[:alnum:]]typeof|&&|\|\||\*)\s*(\{)' - captures: - 1: punctuation.definition.block.tsx - push: - - meta_scope: meta.objectliteral.tsx - - match: '\}' - captures: - 0: punctuation.definition.block.tsx - pop: true - - include: object-member - array-binding-pattern: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.tsx - 2: punctuation.definition.binding-pattern.array.tsx - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.tsx - pop: true - - include: binding-element - - include: punctuation-comma - array-binding-pattern-const: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.tsx - 2: punctuation.definition.binding-pattern.array.tsx - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.tsx - pop: true - - include: binding-element-const - - include: punctuation-comma - array-literal: - - match: '\s*(\[)' - captures: - 1: meta.brace.square.tsx - push: - - meta_scope: meta.array.literal.tsx - - match: '\]' - captures: - 0: meta.brace.square.tsx - pop: true - - include: expression - - include: punctuation-comma - arrow-function: - - match: '(?:(?)' - scope: meta.arrow.tsx - captures: - 1: storage.modifier.async.tsx - 2: variable.parameter.tsx - - match: |- - (?x) (?: - (? is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - ) - ) - captures: - 1: storage.modifier.async.tsx - push: - - meta_scope: meta.arrow.tsx - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: comment - - include: type-parameters - - include: function-parameters - - include: arrow-return-type - - match: "=>" - captures: - 0: storage.type.function.arrow.tsx - push: - - meta_scope: meta.arrow.tsx - - match: '(?<=\}|\S)(?)|((?!\{)(?=\S))' - pop: true - - include: decl-block - - include: expression - arrow-return-type: - - match: (?<=\))\s*(:) - captures: - 1: keyword.operator.type.annotation.tsx - push: - - meta_scope: meta.return.type.arrow.tsx - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: arrow-return-type-body - arrow-return-type-body: - - match: '(?<=[:])(?=\s*\{)' - push: - - match: '(?<=\})' - pop: true - - include: type-object - - include: type-predicate-operator - - include: type - async-modifier: - - match: '(?\s*$)' - captures: - 1: punctuation.definition.comment.tsx - push: - - meta_scope: comment.line.triple-slash.directive.tsx - - match: (?=^) - pop: true - - match: (<)(reference|amd-dependency|amd-module) - captures: - 1: punctuation.definition.tag.directive.tsx - 2: entity.name.tag.directive.tsx - push: - - meta_scope: meta.tag.tsx - - match: /> - captures: - 0: punctuation.definition.tag.directive.tsx - pop: true - - match: path|types|no-default-lib|lib|name - scope: entity.other.attribute-name.directive.tsx - - match: "=" - scope: keyword.operator.assignment.tsx - - include: string - docblock: - - match: |- - (?x) - ((@)(?:access|api)) - \s+ - (private|protected|public) - \b - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: constant.language.access-type.jsdoc - - match: |- - (?x) - ((@)author) - \s+ - ( - [^@\s<>*/] - (?:[^@<>*/]|\*[^/])* - ) - (?: - \s* - (<) - ([^>\s]+) - (>) - )? - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - 4: punctuation.definition.bracket.angle.begin.jsdoc - 5: constant.other.email.link.underline.jsdoc - 6: punctuation.definition.bracket.angle.end.jsdoc - - match: |- - (?x) - ((@)borrows) \s+ - ((?:[^@\s*/]|\*[^/])+) # - \s+ (as) \s+ # as - ((?:[^@\s*/]|\*[^/])+) # - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - 4: keyword.operator.control.jsdoc - 5: entity.name.type.instance.jsdoc - - match: ((@)example)\s+ - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - meta_scope: meta.example.jsdoc - - match: (?=@|\*/) - pop: true - - match: ^\s\*\s+ - - match: \G(<)caption(>) - captures: - 0: entity.name.tag.inline.jsdoc - 1: punctuation.definition.bracket.angle.begin.jsdoc - 2: punctuation.definition.bracket.angle.end.jsdoc - push: - - meta_content_scope: constant.other.description.jsdoc - - match: ()|(?=\*/) - captures: - 0: entity.name.tag.inline.jsdoc - 1: punctuation.definition.bracket.angle.begin.jsdoc - 2: punctuation.definition.bracket.angle.end.jsdoc - pop: true - - match: '[^\s@*](?:[^*]|\*[^/])*' - captures: - 0: source.embedded.tsx - - match: (?x) ((@)kind) \s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \b - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: constant.language.symbol-type.jsdoc - - match: |- - (?x) - ((@)see) - \s+ - (?: - # URL - ( - (?=https?://) - (?:[^\s*]|\*[^/])+ - ) - | - # JSDoc namepath - ( - (?! - # Avoid matching bare URIs (also acceptable as links) - https?:// - | - # Avoid matching {@inline tags}; we match those below - (?:\[[^\[\]]*\])? # Possible description [preceding]{@tag} - {@(?:link|linkcode|linkplain|tutorial)\b - ) - # Matched namepath - (?:[^@\s*/]|\*[^/])+ - ) - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.link.underline.jsdoc - 4: entity.name.type.instance.jsdoc - - match: |- - (?x) - ((@)template) - \s+ - # One or more valid identifiers - ( - [A-Za-z_$] # First character: non-numeric word character - [\w$.\[\]]* # Rest of identifier - (?: # Possible list of additional identifiers - \s* , \s* - [A-Za-z_$] - [\w$.\[\]]* - )* - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: |- - (?x) - ( - (@) - (?:arg|argument|const|constant|member|namespace|param|var) - ) - \s+ - ( - [A-Za-z_$] - [\w$.\[\]]* - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: '((@)typedef)\s+(?={)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: '(?:[^@\s*/]|\*[^/])+' - scope: entity.name.type.instance.jsdoc - - match: '((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\s+(?={)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: '([A-Za-z_$][\w$.\[\]]*)' - scope: variable.other.jsdoc - - match: |- - (?x) - (\[)\s* - [\w$]+ - (?: - (?:\[\])? # Foo[ ].bar properties within an array - \. # Foo.Bar namespaced parameter - [\w$]+ - )* - (?: - \s* - (=) # [foo=bar] Default parameter value - \s* - ( - # The inner regexes are to stop the match early at */ and to not stop at escaped quotes - (?> - "(?:(?:\*(?!/))|(?:\\(?!"))|[^*\\])*?" | # [foo="bar"] Double-quoted - '(?:(?:\*(?!/))|(?:\\(?!'))|[^*\\])*?' | # [foo='bar'] Single-quoted - \[ (?:(?:\*(?!/))|[^*])*? \] | # [foo=[1,2]] Array literal - (?:(?:\*(?!/))|\s(?!\s*\])|\[.*?(?:\]|(?=\*/))|[^*\s\[\]])* # Everything else - )* - ) - )? - \s*(?:(\])((?:[^*\s]|\*[^\s/])+)?|(?=\*/)) - scope: variable.other.jsdoc - captures: - 1: punctuation.definition.optional-value.begin.bracket.square.jsdoc - 2: keyword.operator.assignment.jsdoc - 3: source.embedded.tsx - 4: punctuation.definition.optional-value.end.bracket.square.jsdoc - 5: invalid.illegal.syntax.jsdoc - - match: |- - (?x) - ( - (@) - (?:define|enum|exception|export|extends|lends|implements|modifies - |namespace|private|protected|returns?|suppress|this|throws|type - |yields?) - ) - \s+(?={) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - push: - - match: '(?=\s|\*/|[^{}\[\]A-Za-z_$])' - pop: true - - include: jsdoctype - - match: |- - (?x) - ( - (@) - (?:alias|augments|callback|constructs|emits|event|fires|exports? - |extends|external|function|func|host|lends|listens|interface|memberof!? - |method|module|mixes|mixin|name|requires|see|this|typedef|uses) - ) - \s+ - ( - (?: - [^{}@\s*] | \*[^/] - )+ - ) - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: entity.name.type.instance.jsdoc - - match: '((@)(?:default(?:value)?|license|version))\s+(([''''"]))' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - 4: punctuation.definition.string.begin.jsdoc - push: - - meta_content_scope: variable.other.jsdoc - - match: (\3)|(?=$|\*/) - captures: - 0: variable.other.jsdoc - 1: punctuation.definition.string.end.jsdoc - pop: true - - match: '((@)(?:default(?:value)?|license|tutorial|variation|version))\s+([^\s*]+)' - captures: - 1: storage.type.class.jsdoc - 2: punctuation.definition.block.tag.jsdoc - 3: variable.other.jsdoc - - match: '(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \b' - scope: storage.type.class.jsdoc - captures: - 1: punctuation.definition.block.tag.jsdoc - - include: inline-tags - enum-declaration: - - match: '(?>=|>>>=|\|= - scope: keyword.operator.assignment.compound.bitwise.tsx - - match: "<<|>>>|>>" - scope: keyword.operator.bitwise.shift.tsx - - match: "===|!==|==|!=" - scope: keyword.operator.comparison.tsx - - match: <=|>=|<>|<|> - scope: keyword.operator.relational.tsx - - match: \!|&&|\|\| - scope: keyword.operator.logical.tsx - - match: \&|~|\^|\| - scope: keyword.operator.bitwise.tsx - - match: \= - scope: keyword.operator.assignment.tsx - - match: "--" - scope: keyword.operator.decrement.tsx - - match: \+\+ - scope: keyword.operator.increment.tsx - - match: '%|\*|/|-|\+' - scope: keyword.operator.arithmetic.tsx - - match: '(?<=[_$[:alnum:])\]])\s*(/)(?![/*])' - captures: - 1: keyword.operator.arithmetic.tsx - expressionPunctuations: - - include: punctuation-comma - - include: punctuation-accessor - expressionWithoutIdentifiers: - - include: jsx - - include: string - - include: regex - - include: template - - include: comment - - include: function-expression - - include: class-expression - - include: arrow-function - - include: paren-expression-possibly-arrow - - include: cast - - include: ternary-expression - - include: new-expr - - include: instanceof-expr - - include: object-literal - - include: expression-operators - - include: function-call - - include: literal - - include: support-objects - - include: paren-expression - field-declaration: - - match: |- - (?x)(?) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.property.tsx entity.name.function.tsx - 2: keyword.operator.optional.tsx - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: meta.definition.property.tsx variable.object.property.tsx - - match: \? - scope: keyword.operator.optional.tsx - for-loop: - - match: '(?\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - push: - - match: '(?<=\))(?!(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - pop: true - - match: '(?=(([_$[:alpha:]][_$[:alnum:]]*\s*\??\.\s*)*|(\??\.\s*)?)([_$[:alpha:]][_$[:alnum:]]*))' - push: - - meta_scope: meta.function-call.tsx - - match: '(?=\s*(\?\.\s*)?(<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)?\()' - pop: true - - include: literal - - include: support-objects - - include: object-identifiers - - include: punctuation-accessor - - match: '(?:(?) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) - captures: - 1: punctuation.accessor.tsx - 2: punctuation.accessor.optional.tsx - 3: entity.name.function.tsx - - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])' - captures: - 1: punctuation.accessor.tsx - 2: punctuation.accessor.optional.tsx - 3: variable.other.constant.property.tsx - - match: '(?:(\.)|(\?\.(?!\s*[[:digit:]])))\s*([_$[:alpha:]][_$[:alnum:]]*)' - captures: - 1: punctuation.accessor.tsx - 2: punctuation.accessor.optional.tsx - 3: variable.other.property.tsx - - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" - scope: variable.other.constant.tsx - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: variable.other.readwrite.tsx - import-declaration: - - match: '(?))' - push: - - meta_scope: meta.tag.tsx - - match: '(/>)|(?:())' - captures: - 1: punctuation.definition.tag.end.tsx - 2: punctuation.definition.tag.begin.tsx - 3: entity.name.tag.namespace.tsx - 4: punctuation.separator.namespace.tsx - 5: entity.name.tag.tsx - 6: support.class.component.tsx - 7: punctuation.definition.tag.end.tsx - pop: true - - match: '(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?)' - captures: - 1: punctuation.definition.tag.begin.tsx - 2: entity.name.tag.namespace.tsx - 3: punctuation.separator.namespace.tsx - 4: entity.name.tag.tsx - 5: support.class.component.tsx - push: - - match: "(?=[/]?>)" - pop: true - - include: comment - - include: type-arguments - - include: jsx-tag-attributes - - match: (>) - captures: - 1: punctuation.definition.tag.end.tsx - push: - - meta_content_scope: meta.jsx.children.tsx - - match: (?=|/\*|//) - captures: - 1: entity.other.attribute-name.namespace.tsx - 2: punctuation.separator.namespace.tsx - 3: entity.other.attribute-name.tsx - jsx-tag-attributes: - - match: \s+ - push: - - meta_scope: meta.tag.attributes.tsx - - match: "(?=[/]?>)" - pop: true - - include: comment - - include: jsx-tag-attribute-name - - include: jsx-tag-attribute-assignment - - include: jsx-string-double-quoted - - include: jsx-string-single-quoted - - include: jsx-evaluated-code - - include: jsx-tag-attributes-illegal - jsx-tag-attributes-illegal: - - match: \S+ - scope: invalid.illegal.attribute.tsx - jsx-tag-in-expression: - - match: |- - (?x) - (?:*]|&&|\|\||\?|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s* - (?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow - (?=(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?)) - push: - - match: '(?!(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?))' - pop: true - - include: jsx-tag - jsx-tag-without-attributes: - - match: '(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?)' - captures: - 1: punctuation.definition.tag.begin.tsx - 2: entity.name.tag.namespace.tsx - 3: punctuation.separator.namespace.tsx - 4: entity.name.tag.tsx - 5: support.class.component.tsx - 6: punctuation.definition.tag.end.tsx - push: - - meta_scope: meta.tag.without-attributes.tsx - - meta_content_scope: meta.jsx.children.tsx - - match: '()' - captures: - 1: punctuation.definition.tag.begin.tsx - 2: entity.name.tag.namespace.tsx - 3: punctuation.separator.namespace.tsx - 4: entity.name.tag.tsx - 5: support.class.component.tsx - 6: punctuation.definition.tag.end.tsx - pop: true - - include: jsx-children - jsx-tag-without-attributes-in-expression: - - match: '(?:*]|&&|\|\||\?|^await|[^\._$[:alnum:]]await|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^yield|[^\._$[:alnum:]]yield|^)\s*(?=(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?))' - push: - - match: '(?!(<)\s*(?:([_$[:alpha:]][-$[:alnum:].]*)(?))' - pop: true - - include: jsx-tag-without-attributes - label: - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*\{)' - captures: - 1: entity.name.label.tsx - 2: punctuation.separator.label.tsx - push: - - match: '(?<=\})' - pop: true - - include: decl-block - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(:)' - captures: - 1: entity.name.label.tsx - 2: punctuation.separator.label.tsx - literal: - - include: numeric-literal - - include: boolean-literal - - include: null-literal - - include: undefined-literal - - include: numericConstant-literal - - include: array-literal - - include: this-literal - - include: super-literal - method-declaration: - - match: '(?x)(?) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - scope: meta.object.member.tsx - captures: - 0: meta.object-literal.key.tsx - 1: entity.name.function.tsx - - match: '(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)' - scope: meta.object.member.tsx - captures: - 0: meta.object-literal.key.tsx - - match: \.\.\. - captures: - 0: keyword.operator.spread.tsx - push: - - meta_scope: meta.object.member.tsx - - match: '(?=,|\})' - pop: true - - include: expression - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)' - scope: meta.object.member.tsx - captures: - 1: variable.other.readwrite.tsx - - match: '(?=[_$[:alpha:]][_$[:alnum:]]*\s*=)' - push: - - meta_scope: meta.object.member.tsx - - match: '(?=,|\}|$)' - pop: true - - include: expression - - match: ":" - captures: - 0: meta.object-literal.key.tsx punctuation.separator.key-value.tsx - push: - - meta_scope: meta.object.member.tsx - - match: '(?=,|\})' - pop: true - - match: '(?<=:)\s*(async)?(?=\s*(<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)\(\s*([\{\[]\s*)?$)' - captures: - 1: storage.modifier.async.tsx - push: - - match: (?<=\)) - pop: true - - include: type-parameters - - match: \( - captures: - 0: meta.brace.round.tsx - push: - - match: \) - captures: - 0: meta.brace.round.tsx - pop: true - - include: expression-inside-possibly-arrow-parens - - match: '(?<=:)\s*(async)?\s*(\()(?=\s*([\{\[]\s*)?$)' - captures: - 1: storage.modifier.async.tsx - 2: meta.brace.round.tsx - push: - - match: \) - captures: - 0: meta.brace.round.tsx - pop: true - - include: expression-inside-possibly-arrow-parens - - include: expression - - include: punctuation-comma - parameter-array-binding-pattern: - - match: '(?:(\.\.\.)\s*)?(\[)' - captures: - 1: keyword.operator.rest.tsx - 2: punctuation.definition.binding-pattern.array.tsx - push: - - match: '\]' - captures: - 0: punctuation.definition.binding-pattern.array.tsx - pop: true - - include: parameter-binding-element - - include: punctuation-comma - parameter-binding-element: - - include: comment - - include: string - - include: parameter-object-binding-pattern - - include: parameter-array-binding-pattern - - include: destructuring-parameter-rest - - include: variable-initializer - parameter-name: - - match: '(?) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: storage.modifier.tsx - 2: keyword.operator.rest.tsx - 3: entity.name.function.tsx variable.language.this.tsx - 4: entity.name.function.tsx - 5: keyword.operator.optional.tsx - - match: '(?x)(?:(?]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\(\s*[\{\[]\s*$)' - captures: - 1: storage.modifier.async.tsx - push: - - match: (?<=\)) - pop: true - - include: paren-expression-possibly-arrow-with-typeparameters - - match: '(?<=[(=,]|=>)\s*(async)?(?=\s*((((<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*))?\()|(<))\s*$)' - captures: - 1: storage.modifier.async.tsx - push: - - match: (?<=\)) - pop: true - - include: paren-expression-possibly-arrow-with-typeparameters - - include: possibly-arrow-return-type - paren-expression-possibly-arrow-with-typeparameters: - - include: type-parameters - - match: \( - captures: - 0: meta.brace.round.tsx - push: - - match: \) - captures: - 0: meta.brace.round.tsx - pop: true - - include: expression-inside-possibly-arrow-parens - possibly-arrow-return-type: - - match: '(?<=\))\s*(:)(?=\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+\s*=>)' - captures: - 1: meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx - push: - - meta_content_scope: meta.arrow.tsx meta.return.type.arrow.tsx - - match: '(?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))' - pop: true - - include: arrow-return-type-body - property-accessor: - - match: '(?|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))' - captures: - 1: punctuation.definition.string.begin.tsx - push: - - meta_scope: string.regexp.tsx - - match: "(/)([gimsuy]*)" - captures: - 1: punctuation.definition.string.end.tsx - 2: keyword.other.tsx - pop: true - - include: regexp - - match: '(?' - captures: - 0: keyword.other.back-reference.regexp - 1: variable.other.regexp - - match: '[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??' - scope: keyword.operator.quantifier.regexp - - match: \| - scope: keyword.operator.or.regexp - - match: (\()((\?=)|(\?!)|(\?<=)|(\?))?' - captures: - 0: punctuation.definition.group.regexp - 1: punctuation.definition.group.no-capture.regexp - 2: variable.other.regexp - push: - - meta_scope: meta.group.regexp - - match: \) - captures: - 0: punctuation.definition.group.regexp - pop: true - - include: regexp - - match: '(\[)(\^)?' - captures: - 1: punctuation.definition.character-class.regexp - 2: keyword.operator.negation.regexp - push: - - meta_scope: constant.other.character-class.set.regexp - - match: '(\])' - captures: - 1: punctuation.definition.character-class.regexp - pop: true - - match: '(?:.|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\c[A-Z])|(\\.))' - scope: constant.other.character-class.range.regexp - captures: - 1: constant.character.numeric.regexp - 2: constant.character.control.regexp - 3: constant.character.escape.backslash.regexp - 4: constant.character.numeric.regexp - 5: constant.character.control.regexp - 6: constant.character.escape.backslash.regexp - - include: regex-character-class - - include: regex-character-class - return-type: - - match: (?<=\))\s*(:)(?=\s*\S) - captures: - 1: keyword.operator.type.annotation.tsx - push: - - meta_scope: meta.return.type.tsx - - match: "(?]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)?\() - captures: - 1: punctuation.accessor.tsx - 2: punctuation.accessor.optional.tsx - 3: support.constant.dom.tsx - 4: support.variable.property.dom.tsx - - match: |- - (?x)(?\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>|\<\s*(((keyof|infer)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\''[^\'']*\'')|(\"[^\"]*\")|(\`[^\`]*\`))(?=\s*([\<\>\,\.\[=]|&(?!&)|\|(?!\|)))))([^<>\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?<==)\>)*(?!=)\>)*(?!=)>\s*)`)' - captures: - 1: entity.name.function.tagged-template.tsx - push: - - meta_scope: string.template.tsx - - match: (?=`) - pop: true - - include: type-arguments - - match: "([_$[:alpha:]][_$[:alnum:]]*)?(`)" - captures: - 1: entity.name.function.tagged-template.tsx - 2: punctuation.definition.string.template.begin.tsx - push: - - meta_scope: string.template.tsx - - match: "`" - captures: - 0: punctuation.definition.string.template.end.tsx - pop: true - - include: template-substitution-element - - include: string-character-escape - template-substitution-element: - - match: '\$\{' - captures: - 0: punctuation.definition.template-expression.begin.tsx - push: - - meta_scope: meta.template.expression.tsx - - meta_content_scope: meta.embedded.line.tsx - - match: '\}' - captures: - 0: punctuation.definition.template-expression.end.tsx - pop: true - - include: expression - ternary-expression: - - match: '(?!\?\.\s*[^[:digit:]])(\?)' - captures: - 1: keyword.operator.ternary.tsx - push: - - match: \s*(:) - captures: - 1: keyword.operator.ternary.tsx - pop: true - - include: expression - this-literal: - - match: '(?])|((?<=[\}>\]\)]|[_$[:alpha:]])\s*(?=\{)))' - pop: true - - include: type - - match: (:) - captures: - 1: keyword.operator.type.annotation.tsx - push: - - meta_scope: meta.type.annotation.tsx - - match: '(?])|(?=^\s*$)|((?<=\S)(?=\s*$))|((?<=[\}>\]\)]|[_$[:alpha:]])\s*(?=\{)))' - pop: true - - include: type - type-arguments: - - match: \< - captures: - 0: punctuation.definition.typeparameters.begin.tsx - push: - - meta_scope: meta.type.parameters.tsx - - match: \> - captures: - 0: punctuation.definition.typeparameters.end.tsx - pop: true - - include: type - - include: punctuation-comma - type-builtin-literals: - - match: '(?) - )) - ) - ) - ) - push: - - meta_scope: meta.type.function.tsx - - match: (?<=\)) - pop: true - - include: function-parameters - type-function-return-type: - - match: (=>)(?=\s*\S) - captures: - 1: storage.type.function.arrow.tsx - push: - - meta_scope: meta.type.function.return.tsx - - match: '(?)(?:\?]|//|$)' - pop: true - - include: type-function-return-type-core - - match: "=>" - captures: - 0: storage.type.function.arrow.tsx - push: - - meta_scope: meta.type.function.return.tsx - - match: '(?)(?]|//|^\s*$)|((?<=\S)(?=\s*$)))' - pop: true - - include: type-function-return-type-core - type-function-return-type-core: - - include: comment - - match: '(?<==>)(?=\s*\{)' - push: - - match: '(?<=\})' - pop: true - - include: type-object - - include: type-predicate-operator - - include: type - type-name: - - match: '([_$[:alpha:]][_$[:alnum:]]*)\s*(?:(\.)|(\?\.(?!\s*[[:digit:]])))' - captures: - 1: entity.name.type.module.tsx - 2: punctuation.accessor.tsx - 3: punctuation.accessor.optional.tsx - - match: "[_$[:alpha:]][_$[:alnum:]]*" - scope: entity.name.type.tsx - type-object: - - match: '\{' - captures: - 0: punctuation.definition.block.tsx - push: - - meta_scope: meta.object.type.tsx - - match: '\}' - captures: - 0: punctuation.definition.block.tsx - pop: true - - include: comment - - include: method-declaration - - include: indexer-declaration - - include: indexer-mapped-type-declaration - - include: field-declaration - - include: type-annotation - - match: \.\.\. - captures: - 0: keyword.operator.spread.tsx - push: - - match: '(?=\}|;|,|$)|(?<=\})' - pop: true - - include: type - - include: punctuation-comma - - include: punctuation-semicolon - - include: type - type-operators: - - include: typeof-operator - - match: '(?:([&|])|(=(?!>)))(?=\s*\{)' - captures: - 1: keyword.operator.type.tsx - 2: keyword.operator.assignment.tsx - push: - - match: '(?<=\})' - pop: true - - include: type-object - - match: "([&|])|(=(?!>))" - captures: - 1: keyword.operator.type.tsx - 2: keyword.operator.assignment.tsx - push: - - match: (?=\S) - pop: true - - match: '(?) - captures: - 1: punctuation.definition.typeparameters.end.tsx - pop: true - - include: comment - - match: '(?) - )) - )) - )) | - (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$)))) - captures: - 1: storage.modifier.tsx - 2: keyword.operator.rest.tsx - 3: entity.name.function.tsx variable.language.this.tsx - 4: entity.name.function.tsx - 5: keyword.operator.optional.tsx - - match: '(?x)(?:(?) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx - push: - - meta_scope: meta.var-single-variable.expr.tsx - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([_$[:alpha:]][_$[:alnum:]]*)" - captures: - 1: meta.definition.variable.tsx variable.other.constant.tsx - push: - - meta_scope: meta.var-single-variable.expr.tsx - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - var-single-variable: - - match: |- - (?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\s* - # function assignment | - (=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - )) | - # typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => - (:\s*( - (<) | - ([(]\s*( - ([)]) | - (\.\.\.) | - ([_$[:alnum:]]+\s*( - ([:,?=])| - ([)]\s*=>) - )) - )) - )) | - (:\s*((<\s*$)|([\(]\s*([\{\[]\s*)?$))) | - (:\s*(=>|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(<[^<>]*>)|[^<>(),=])+=\s*( - ((async\s+)?( - (function\s*[(<*]) | - (function\s+) | - ([_$[:alpha:]][_$[:alnum:]]*\s*=>) - )) | - ((async\s*)?( - ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) | - # sure shot arrow functions even if => is on new line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? - [(]\s* - ( - ([)]\s*:) | # (): - ((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param: - ) - ) | - ( - [<]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=>] # < typeparam extends - ) | - # arrow function possible to detect only with => on same line - ( - (<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<]|\<\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=<>]|=[^<])*\>)*>\s*)? # typeparameters - \(\s*(([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\.\.\.\s*[_$[:alpha:]]))([^()]|(\(([^\(\)]|(\([^\(\)]*\)))*\)))*)?\) # parameters - (\s*:\s*([^<>\(\)]|\<[^<>]+\>|\([^\(\)]+\))+)? # return type - \s*=> # arrow operator - ) - )) - ))) - captures: - 1: meta.definition.variable.tsx entity.name.function.tsx - push: - - meta_scope: meta.var-single-variable.expr.tsx - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" - captures: - 1: meta.definition.variable.tsx variable.other.constant.tsx - push: - - meta_scope: meta.var-single-variable.expr.tsx - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - - match: "([_$[:alpha:]][_$[:alnum:]]*)" - captures: - 1: meta.definition.variable.tsx variable.other.readwrite.tsx - push: - - meta_scope: meta.var-single-variable.expr.tsx - - match: '(?=$|^|[;,=}]|(\s+(of|in)\s+))' - pop: true - - include: var-single-variable-type-annotation - var-single-variable-type-annotation: - - include: type-annotation - - include: string - - include: comment - variable-initializer: - - 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 diff --git a/assets/syntaxes/fish.sublime-syntax b/assets/syntaxes/fish.sublime-syntax deleted file mode 100644 index 94aefce..0000000 --- a/assets/syntaxes/fish.sublime-syntax +++ /dev/null @@ -1,1009 +0,0 @@ -%YAML 1.2 ---- -# http://www.sublimetext.com/docs/3/syntax.html -name: friendly interactive shell (fish) -file_extensions: - - fish -first_line_match: '^#!.*\b(fish)|^#\s*-\*-[^*]*mode:\s*shell-script[^*]*-\*-' -scope: source.shell.fish -contexts: - main: - - include: comment-external - - include: line-continuation - - match: \)|end - comment: In an ideal world, command-call-standard would be performing this match because fish highlights the strings which follow as arguments. But we can't do that in a tmLanguage - push: - - meta_scope: meta.function-call.fish invalid.illegal.function-call.fish - - match: '(?=[\s;&)|<>])' - pop: true - - match: (?=\S) - comment: Anonymous scope - Base scope pipeline goes up until one of the definitive ends (newline and ';') or the sequences that could be an end if we're actually inside a $self scope right now (')' and "end") - push: - - match: \n|(;)|(?=\))|(?=end) - captures: - 1: meta.function-call.operator.fish keyword.operator.control.fish - pop: true - - match: '(?:[&|]|(?:[0-9]+)?(?:<|>>?|\^\^?))' - comment: Match operators ('&', pipe, and redirect) which cannot start a pipeline because they must be consumed within or after a pipeline - scope: invalid.illegal.operator.fish - - include: comment-internal-end - - match: (?=\S) - comment: The reason we match '&' here is because we explicitly require it come after a command (unlike ';' which can be alone on a line) - push: - - match: '(?=[\n;)])|(&)' - captures: - 1: meta.function-call.operator.fish keyword.operator.control.fish - pop: true - - include: pipeline - argument: - - match: '(?![\s;&)|<>^])' - comment: End arg if it precedes whitespace or operators (excluding stderr redirect '^' due to a fish quirk) - push: - - match: '(?=[\s;&)|<>])' - pop: true - - match: \% - comment: Process expansion only occurs if the '%' is at the front of the argument, and continues for the entire argument - captures: - 0: meta.string.unquoted.fish punctuation.definition.process.fish - push: - - meta_scope: meta.parameter.argument.process-expansion.fish - - match: '(?=[\s;&)|<>])' - pop: true - - match: '(?:self|last)(?=$|[\s;&)|<>])' - comment: Match special process names. By a convention that I'm making up, scope them as a type of variable - scope: meta.string.unquoted.fish variable.language.fish - - include: parameter-patterns - - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>])' - comment: Treat a sequence of integers (with possible sign and decimal separator) as a standalone constant. Do this separate to the - scope: meta.parameter.argument.numeric.fish meta.string.unquoted.fish constant.numeric.fish - - match: '(?![\s($])' - comment: This scope can be used by plugins to locate arguments which don't *start* with command substitution or variable expansion and may directly resolve to file paths. Of course, they could have command substitution or variable expansion further on in them, but looking ahead for that too is nontrivial - push: - - meta_scope: meta.parameter.argument.path.fish - - match: '(?=[\s;&)|<>])' - pop: true - - match: \~ - comment: Home directory expansion only occurs if the '~' is at the front of the argument, so check it first - scope: meta.string.unquoted.fish keyword.operator.tilde.fish - - include: parameter-patterns - - match: (?!\s) - comment: Use standard parameter patterns for whatever doesn't match the above - push: - - meta_scope: meta.parameter.argument.fish - - match: '(?=[\s;&)|<>])' - pop: true - - include: parameter-patterns - command-call-meta: - - match: '(builtin|command|exec)\b(?!\s+[-&|])' - comment: These meta commands force the parameter to behave as a standard command. They stop at piping - captures: - 1: support.function.fish - push: - - match: |- - (?x) - (?# Look ahead for control operations after whitespace) - (?=\s* - (?: - (?# Find simple control operations) - [\n;&)] - | - (?# Find piping) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - include: line-continuation - - include: command-call-standard - - match: '(not)\b(?!\s+[-&|])' - comment: This meta command acts as a unary operator on the command to the right, which can also be a meta command. It only applies to one command and stops at piping - captures: - 1: keyword.operator.word.fish - push: - - match: |- - (?x) - (?# Look ahead for control operations after whitespace) - (?=\s* - (?: - (?# Find simple control operations) - [\n;&)] - | - (?# Find piping) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - include: line-continuation - - include: command-call-meta - - include: command-call-standard - command-call-standard: - - match: '\#' - comment: A command call can't be a comment, but this match will only be satisfied if the command is first after a pipe because comments are otherwise consumed earlier - push: - - meta_scope: invalid.illegal.function-call.fish - - match: '(?=[\n)])' - pop: true - - match: "(?:[&|<>^])" - comment: Match an operator which cannot start a command call but does not stop the next characters from being interpreted as a command - scope: invalid.illegal.operator.fish - - match: (?=\S) - comment: Anonymous scope - A complete command comprising a name element and optional parameter, redirection, and comment elements - push: - - match: |- - (?x) - (?# Look ahead for operators) - (?= - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - match: '(?![\s<>^%])' - comment: Anonymous scope - A name or block element. If a block is found, everything up to the `end` command is captured here. Note that redirection and process expansion can't start the element - push: - - match: '(?=[\s;&)|<>])' - pop: true - - include: command-call-standard-block - - match: '\[(?=[\s<>]|\\\n)' - comment: "Look for the alternate form of test, which uses a matching pair of '[' ']'" - captures: - 0: support.function.test.begin.fish - push: - - match: '(\])|(\n|[;&)|].*)' - captures: - 1: support.function.test.end.fish - 2: invalid.illegal.function-call.fish - pop: true - - include: line-continuation - - include: parameter - - include: redirection - - match: '(?:break|continue|return)(?=[\s;&)|<>])' - comment: Look for loop/function control commands. We perform no checking on the validity of their scope (because only allowing them in the correct scope won't work if they are used within if-blocks) or parameters (because fish does that during execution not parsing) - captures: - 0: keyword.control.conditional.fish - - match: (?!\s) - comment: Anonymous scope - A generic name element - push: - - match: '(?=[\s;&)|<>])' - pop: true - - match: (?=\() - comment: fish would match the whole command name invalid if there was a command substitution anywhere in it, but we can't look ahead that effectively - push: - - meta_scope: invalid.illegal.function-call.fish - - match: '(?=[\s;&)|<>])' - pop: true - - match: \( - push: - - match: '\)|(?=[\n;&)|<>])' - pop: true - - match: (?!\s) - comment: Otherwise, treat the element as a fraction of a name made of arbitrary strings (which breaks at an escaped newline) - push: - - meta_scope: variable.function.fish - - match: '(?=[\s;&()|<>])' - pop: true - - match: \$ - comment: The string scope explicitly forbids '$' so that the argument rule can pick it up as a variable expansion, but '$' is treated as a literal in command names, so we have to match it separately - scope: meta.string.unquoted.fish - - include: string - - match: \% - comment: A command name can't begin with a process expansion operator (however the variable expansion operator '$' is allowed) - push: - - meta_scope: invalid.illegal.function-call.fish - - match: '(?=[\s;&)|<>])' - pop: true - - include: string - - include: redirection - - match: '(?:[^\n\S]+)' - comment: Match any whitespace characters that aren't the newline - push: - - match: |- - (?x) - (?# Look ahead for operators) - (?= - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - match: '(?!--[\s;&)|<>])' - comment: A list of elements that does not start with an end-of-options parameter - push: - - match: |- - (?x) - (?# Look ahead for operators or the end of options) - (?= - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - | - (?# Find a double hyphen) - --[\s;&)|<>] - ) - ) - pop: true - - include: line-continuation - - include: comment-internal-end - - include: redirection - - include: parameter - - match: '(?=--[\s;&)|<>])' - comment: A list of elements that starts with an end-of-options parameter - push: - - match: |- - (?x) - (?# Look ahead for operators) - (?= - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - match: '(?=--[\s;&)|<>])' - comment: Contain just the end-of-options parameter and give it the normal scope - push: - - match: '(?=[\s;&)|<>])' - pop: true - - include: parameter - - match: (?=\s) - comment: A list of elements (now forcibly using arguments) - push: - - match: |- - (?x) - (?# Look ahead for operators) - (?= - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - include: line-continuation - - include: comment-internal-end - - include: redirection - - include: argument - command-call-standard-block: - - match: '(begin|while|if|for|switch|function)\s*([&|<>])' - comment: Block commands cannot be backgrounded, piped, or redirected - captures: - 1: variable.function.fish - 2: invalid.illegal.operator.fish - - match: (begin)\s*(\)) - comment: The begin command uniquely cannot be the last command in a command substitution - captures: - 1: variable.function.fish - 2: invalid.illegal.operator.fish - - match: 'begin(?=\s*$|\s*[\n;]|\s+[^\s-])' - comment: The begin command can be alone on a line or followed by any command that doesn't start with a '-'. If a '-' is seen it shouldn't be treated as a block - captures: - 0: keyword.control.conditional.fish - push: - - meta_scope: meta.block.begin.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - include: main - - match: '(?=while\s+[^\s;)-])' - comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope - push: - - meta_scope: meta.block.while.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - match: while - comment: Anonymous scope - Capture the command name we know is there, include a single instance of a pipeline, and end when an operator is seen - captures: - 0: keyword.control.conditional.fish - push: - - match: '\s*(?=[\n;&)])' - pop: true - - include: line-continuation - - include: pipeline - - match: '\n|(;)|([&)])' - comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - include: main - - match: '(?=if\s+[^\s;)-])' - comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope - push: - - meta_scope: meta.block.if.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - include: command-call-standard-block-if-internal - - match: '(?=for\s+[^\s;)-])' - comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope - push: - - meta_scope: meta.block.for-in.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - match: (for)(?:\s+) - comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the varname), and end when the whitespace after the varname is captured - captures: - 1: keyword.control.conditional.fish - push: - - match: \s+ - pop: true - - include: line-continuation - - include: parameter - - match: \S+ - comment: Capture anything that a parameter explicitly rejects, which is mostly operators - scope: invalid.illegal.operator.fish - - include: line-continuation - - match: in(?=\s) - comment: Anonymous scope - Capture the command name which might be there, include an arbitrary number of arguments, and end when the control operator is seen - captures: - 0: keyword.control.conditional.fish - push: - - match: '\s*(?=[\n;&)])' - pop: true - - include: line-continuation - - include: comment-internal-end - - include: argument - - match: '\n|(;)|([&)])' - comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - include: main - - match: '\S+?(?=[\s;&)])' - comment: Anything beside line continuation, "in", or a control operator is invalid - scope: invalid.illegal.function-call.fish - - match: '(?=switch\s+[^\s;)-])' - comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope - push: - - meta_scope: meta.block.switch.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - match: (?=switch) - comment: Anonymous scope - Match the valid part of the switch statement, then look for an invalid part - push: - - match: '\s*(?=[\n;&)])' - pop: true - - match: (switch)(?:\s+) - comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the value), and end when whitespace or a control operator is seen - captures: - 1: keyword.control.conditional.fish - push: - - match: '(?=[\s;&)])' - pop: true - - include: line-continuation - - include: parameter - - match: \S+ - comment: Capture anything that a parameter explicitly rejects, which is mostly operators - scope: invalid.illegal.operator.fish - - match: \s+ - comment: Anonymous scope - Capture whitespace which might be there, match any non-control-operator strings as invalid, and end when a control operator is seen - push: - - match: '(?=[\n;&)])' - pop: true - - match: '\S+?(?=[\s;&)])' - scope: invalid.illegal.string.fish - - match: '\n|(;)|([&)])' - comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - match: 'case(?=[\s;&)])' - comment: Anonymous scope - Capture the command name which might be there, include an arbitrary number of arguments, and end when the control operator is captured - captures: - 0: keyword.control.conditional.fish - push: - - match: '\n|(;)|([&)])' - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - pop: true - - include: line-continuation - - include: comment-internal-end - - include: argument - - match: '\S+?(?=[\s;&)])' - comment: Anything else (eg, redirection) is illegal - scope: invalid.illegal.operator.fish - - include: main - - match: '(?=function\s+[^\s;)-])' - comment: If the command name is followed by a valid string (not anything that closes the scope or a string starting with a '-') then open the scope - push: - - meta_scope: meta.block.function.fish - - match: 'end(?=$|[\s;&)|<>])' - captures: - 0: keyword.control.conditional.fish - pop: true - - match: (?=function) - comment: Anonymous scope - Match the defined name of the function statement, then look for further parameters - push: - - match: '\s*(?=[\n;&)])' - pop: true - - match: (function)(?:\s+) - comment: Anonymous scope - Capture the command name we know is there, include a single instance of a parameter (the value), and end when whitespace or a control operator is seen - captures: - 1: keyword.control.conditional.fish - push: - - match: '(?=[\s;&)])' - pop: true - - include: line-continuation - - match: "(?:[()|<>])" - push: - - meta_scope: invalid.illegal.string.fish - - match: '(?=[\s;&)])' - pop: true - - match: (?!\\\n) - comment: Anonymous scope - Start when an escaped newline isn't present, and end when whitespace or an operator is seen - push: - - match: '(?=[\s;&()|<>])' - pop: true - - match: (?!\s) - push: - - meta_scope: entity.name.function.fish - - match: '(?=[\s;&()|<>])' - pop: true - - include: parameter - - match: \s+ - comment: Anonymous scope - Capture whitespace which might be there, then match anything normal for a command call - push: - - match: '(?=[\n;&)])' - pop: true - - include: line-continuation - - include: comment-internal-end - - include: redirection - - include: parameter - - match: '\n|(;)|([&)])' - comment: Anonymous scope - Capture the operator we know is there, include the base scope, and end when an `end` command is seen - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - include: main - command-call-standard-block-if-internal: - - match: '(?=if(?:\s*\n|\s+[^\s;]))' - comment: Anonymous scope - Capture an `if` and the command up to the control operator, then capture from the control operator indefinitely - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - match: if - comment: Anonymous scope - Match the command name we know is there, include a single instance of a pipeline, and end when a control operator is seen - captures: - 0: keyword.control.conditional.fish - push: - - match: '\s*(?=[\n;&])' - pop: true - - include: line-continuation - - include: pipeline - - match: \n|(;)|(&) - comment: Anonymous scope - Match the operator we know is there, then include the base scope or an `else` structure - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - match: '(?=else\s*[\s;])' - comment: Anonymous scope - Capture an `else` up to the control operator or the start of an `if` structure, then match from the control operator indefinitely or match an `if` structure - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - match: 'else(?=\s*[\s;])' - comment: Anonymous scope - Match the `else` we know is there and any comment, and mark anything besides an `if` as illegal - captures: - 0: keyword.control.conditional.fish - push: - - match: '\s*(?=[\n;&]|if(?:\s*\n|\s+[^\s;]))' - pop: true - - include: line-continuation - - include: comment-internal-end - - match: '\S+?(?=[\s;&])' - comment: Anything else is illegal - scope: invalid.illegal.string.fish - - match: \n|(;)|(&) - comment: Anonymous scope - Match the operator which will be there if no `if` was seen, then include the base scope which marks further `else` commands as invalid - captures: - 1: keyword.operator.control.fish - 2: invalid.illegal.operator.fish - push: - - match: '(?=end(?:$|[\s;&)|<>]))' - pop: true - - include: main - - include: command-call-standard-block-if-internal - - include: main - command-substitution: - - match: (?=\() - comment: 'Capture "(...)" or "(...)[...]"' - push: - - match: '(?![\(\[])' - pop: true - - match: \( - captures: - 0: punctuation.section.parens.begin.fish - push: - - meta_scope: meta.parens.command-substitution.fish - - match: \) - captures: - 0: punctuation.section.parens.end.fish - pop: true - - include: main - - include: index-expansion - comment-external: - - match: '\#' - comment: A full or inline comment outside of any command call - captures: - 0: punctuation.definition.comment.fish - push: - - meta_scope: comment.line.external.fish - - match: \n - pop: true - comment-internal-end: - - match: '\#' - comment: An inline comment at the end of a command call. Does not consume the newline, thus allowing the command call to capture it and end - captures: - 0: punctuation.definition.comment.fish - push: - - meta_scope: comment.line.internal.end.fish - - match: (?=\n) - pop: true - index-expansion: - - match: '\[' - comment: In other words, the anonymous scope which contains the variable and the index expansion parameter list should only be allowed to contain a single copy of each of those two things. We cannot enforce that without a scope stack. Our workaround is to allow an infinite number of these and hope the user can keep track of when there are too many - captures: - 0: punctuation.section.brackets.begin.fish - push: - - meta_scope: meta.brackets.index-expansion.fish - - match: '\]' - captures: - 0: punctuation.section.brackets.end.fish - pop: true - - match: \.\. - scope: keyword.operator.range.fish - - include: command-substitution - - include: variable-expansion - - include: string-quoted - - match: '(?:[+-]?[0-9]+)(?=[\s;&)|<>]|\]|\.\.)' - scope: constant.numeric.fish - - match: '(?![\s''"]|\.\.)' - comment: 'Begin/end string as before with the addition of breaking at a '']'' or ".."' - push: - - match: '(?=[\s;&)|<>''"]|\]|\.\.)' - pop: true - - include: string-unquoted-patterns - line-continuation: - - match: (?=\\\n) - comment: End when an unescaped newline is seen, the first character of a line isn't whitespace or a comment character or the escaped newline itself, or if the next character after some consumed whitespace isn't more whitespace or a comment character - push: - - match: '(?=\n)|^(?![\s\#\\])|\s(?![\s\#])' - pop: true - - match: \\\n - scope: constant.character.escape - - match: '\#' - captures: - 0: punctuation.definition.comment.fish - push: - - meta_scope: comment.line.continuation.fish - - match: \n - pop: true - parameter: - - match: '(?![\s;&)|<>^])' - comment: See the argument rule for more general information on parameters - push: - - match: '(?=[\s;&)|<>])' - pop: true - - match: '(?:--)(?=[\s;&)|<>])' - comment: End of options (parameter of just two hyphens) - scope: meta.parameter.option.end.fish variable.parameter.fish punctuation.definition.option.end.fish meta.string.unquoted.fish - - match: (?=--) - comment: Long option (parameter starting with two hyphens) - push: - - meta_scope: meta.parameter.option.long.fish - - match: '(?=[\s;&)|<>])' - pop: true - - match: (?:--) - captures: - 0: punctuation.definition.option.long.begin.fish meta.string.unquoted.fish - push: - - meta_scope: variable.parameter.fish - - match: '(?=[\s;&)|<>]|=)' - pop: true - - include: command-substitution - - match: (?=\$) - push: - - meta_scope: meta.string.unquoted.fish - - match: (?!\$) - pop: true - - include: variable-expansion - - include: string-quoted - - match: '(?![''"])' - push: - - meta_scope: meta.string.unquoted.fish - - match: '(?=[\s;&()|<>''"$]|\=)' - pop: true - - include: string-unquoted-patterns - - match: (?:=) - comment: Consume the '=' and then use standard parameter patterns as well as numerics - captures: - 0: variable.parameter.fish punctuation.definition.option.long.separator.fish meta.string.unquoted.fish - push: - - match: '(?=[\s;&)|<>])' - pop: true - - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>])' - scope: meta.string.unquoted.fish constant.numeric.fish - - include: parameter-patterns - - match: '(?:-)(?=[^\s;&)|<>])' - comment: Short option (parameter starting with one hyphen) - captures: - 0: punctuation.definition.option.short.fish meta.string.unquoted.fish - push: - - meta_scope: meta.parameter.option.short.fish variable.parameter.fish - - match: '(?=[\s;&)|<>])' - pop: true - - include: parameter-patterns - - include: argument - parameter-patterns: - - include: command-substitution - - match: (?=\$) - comment: Give variable expansion the unquoted string scope - push: - - meta_scope: meta.string.unquoted.fish - - match: (?!\$) - pop: true - - include: variable-expansion - - include: string - pipeline: - - match: '(?:[&|]|(?:[0-9]+)?(?:<|>>?|\^\^?))' - comment: Todo - Restructure pipeline so that this match isn't duplicated from the base scope, which it must also be for any other scopes which implement their own control operator consumption. Might require the unary operator commands to become an explicit recursive match (though we tried this once and it was more complicated than anything should be) - scope: invalid.illegal.operator.fish - - match: (and|or)\b(?!\s+-) - comment: Todo - These commands cannot be followed by backgrounding, piping, or redirection alone. Add logic to catch these cases. It will be extensive... - scope: meta.function-call.fish keyword.operator.word.fish - - include: line-continuation - - match: (not)\b(?!\s+-) - comment: This is a hack for now, which allows nesting of 'not' and 'and'/'or' commands. A better solution will be explicit recursivity in these commands - scope: meta.function-call.fish keyword.operator.word.fish - - match: '(?:case|else|end)(?=[\s;&)|<>])' - comment: Match a command which is illegal in the base scope - scope: invalid.illegal.function-call.fish - - match: '(?=[^\s#])' - comment: Anonymous scope - Pipeline. Define a pipeline as either one command call, or multiple command calls linked by pipe operators ('|', '2>|', etc). The pipeline terminates at the first encounter of any control operator - push: - - match: '(\s*)(?=[\n;&)])' - captures: - 1: meta.function-call.fish - pop: true - - match: |- - (?x) - (?# Negative lookahead for piping) - (?! - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - comment: Match the first command of a potential pipeline - push: - - meta_scope: meta.function-call.fish - - match: |- - (?x) - (?# Look ahead for operators after whitespace) - (?=\s* - (?: - (?# Find a control operator) - [\n;&)] - | - (?# Find a pipe operator) - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - pop: true - - include: command-call-meta - - include: command-call-standard - - match: |- - (?x) - (?# Look ahead for piping) - (?= - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - comment: Match a second or later command of a pipeline, starting with the connective piping - push: - - meta_scope: meta.function-call.fish - - match: '(?=\s*[\n;&)])' - pop: true - - match: |- - (?x) - (?# Look ahead for piping followed by either control operators or piping) - (?= - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - \s* - (?: - $ - | - [\n;&)] - | - (?:(?:[0-9]+)?(?:<|>>?|\^\^?))?\| - ) - ) - comment: Match a pipe not followed by a command, hence a malformed segment of the pipeline - push: - - match: '(?=\s*$|\s*[\n;&)])' - pop: true - - match: '(?:(?:[0-9]+)?(?:<|>|>>))?\|(?=\s*$|\s*[\n)])' - comment: If the pipeline would end implicitly (ie, with a newline or close parenthesis), then mark the pipe itself invalid - scope: invalid.illegal.operator.fish - - match: |- - (?x) - (?# Consume valid piping; captures 1 2 3) - (?:([0-9]+)?(<|>>?|\^\^?))?(\|) - (?# Consume whitespace) - \s* - (?# Consume remainder; capture 4) - (.*) - comment: If the pipeline would end with an explicit operator or encounter a second set of piping, then mark the first set of piping as valid and beyond as invalid - captures: - 1: meta.pipe.fish constant.numeric.file-descriptor.fish - 2: meta.pipe.fish keyword.operator.redirect.fish - 3: meta.pipe.fish keyword.operator.pipe.fish - 4: invalid.illegal.function-call.fish - - match: '(?:([0-9]+)?(<|>>?|\^\^?))?(\|)' - comment: Pick up a legitimate pipe - scope: meta.pipe.fish - captures: - 1: constant.numeric.file-descriptor.fish - 2: keyword.operator.pipe.redirect.fish - 3: keyword.operator.pipe.fish - - include: line-continuation - - include: command-call-meta - - include: command-call-standard - redirection: - - match: '(?=(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])\&)' - comment: End at anything that would end a parameter, including redirections *if* they are *not* this same type of redirection (ie, have an '&'), in which case this scope stays open and we match the next one. The negative lookahead for <>^ at the end is to keep ST2 happy (not hanging) - push: - - match: '(?=[\s;&)|]|(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])(?![&<>^]))' - pop: true - - match: '(?:([0-9]+)(<|>|>>)|(>>|\^\^|[<>^]))(\&)\s*' - comment: We have to try and catch an '&' here because if it is seen by the outer end match then it will be considered a valid operator and the redirection scope will immediately terminate - captures: - 1: constant.numeric.file-descriptor.fish - 2: keyword.operator.redirect.fish - 3: keyword.operator.redirect.fish - 4: keyword.operator.redirect.dereference.fish - push: - - meta_scope: meta.redirection.fish - - match: '(\&.*$)|(?![&\\])' - captures: - 1: invalid.illegal.file-descriptor.fish - pop: true - - include: line-continuation - - match: (?=\\\n) - push: - - meta_scope: meta.redirection.fish - - match: (?!\\\n) - pop: true - - include: line-continuation - - match: (?=\() - comment: Evaluates to a string which may be an integer - push: - - meta_scope: meta.redirection.fish - - match: (?!\() - pop: true - - include: command-substitution - - match: (?=\$) - comment: Evaluates to a string which may be an integer - push: - - meta_scope: meta.redirection.fish - - match: (?!\$) - pop: true - - include: variable-expansion - - match: '(?=[''"])' - comment: May be a quoted integer, which is allowed - push: - - meta_scope: meta.redirection.fish - - match: '(?![''"])' - pop: true - - include: string-quoted - - match: '(?:[0-9]+)(?=$|[\s;&)|<>])' - scope: meta.redirection.file-descriptor.fish constant.numeric.file-descriptor.fish - - match: '(?:-)(?=$|[\s;&)|<>])' - scope: meta.redirection.file-descriptor.fish keyword.operator.redirect.close.fish - - match: (?:\S+.*)$ - comment: Anything else is illegal - scope: meta.redirection.fish invalid.illegal.file-descriptor.fish - - match: '(?=(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])\??)' - comment: End at anything that would end a parameter, including redirections *if* they are *not* this same type of redirection (ie, redirection into file descriptor, or into pipe), in which case this scope stays open and we match the next one - push: - - match: '(?=[\s;&)|]|(?:[0-9]+(?:<|>|>>)|>>|\^\^|[<>^])[&|])' - pop: true - - match: '(?:([0-9]+)(<|>|>>)|(>>|\^\^|[<>^]))(\?)?\s*' - comment: We have to try and catch bad operators here because if they are seen by the outer end match then they will be considered valid and the redirection scope will immediately terminate - captures: - 1: constant.numeric.file-descriptor.fish - 2: keyword.operator.redirect.fish - 3: keyword.operator.redirect.fish - 4: keyword.operator.redirect.clobber-test.fish - push: - - meta_scope: meta.redirection.fish - - match: "((?:[&?]|[0-9]*[<>^]).*$)|(?![&?<>^])" - captures: - 1: invalid.illegal.path.fish - pop: true - - include: line-continuation - - match: (?=\\\n) - push: - - meta_scope: meta.redirection.fish - - match: (?!\\\n) - pop: true - - include: line-continuation - - match: (?=\() - comment: Evaluates to a string, so path cannot begin with '(' - push: - - meta_scope: meta.redirection.fish - - match: (?!\() - pop: true - - include: command-substitution - - match: (?=\$) - comment: Evaluates to a string, so path cannot begin with '$' - push: - - meta_scope: meta.redirection.fish - - match: (?!\$) - pop: true - - include: variable-expansion - - match: "(?:[&?]|[0-9]*[<>^]).*$" - comment: Check for characters which are associated with redirection, so path cannot begin with them. Don't put them in the meta.redirection.path scope, so that only valid paths are in there - scope: meta.redirection.fish invalid.illegal.path.fish - - match: \~ - scope: meta.redirection.path.fish keyword.operator.tilde.fish - - match: '(?:\''(?:\\[\''\\]|[^\''\\])*\''|\"(?:\\[\"$\n\\]|[^\"$\n\\])*\"|(?:\\[abefnrtv $\\*?#(){}\[\]<>^&;|"'']|\\[~%]|\\[xX][0-9A-Fa-f]{1,2}|\\[0-7]{1,3}|\\u[0-9A-Fa-f]{1,4}|\\U[0-9A-Fa-f]{1,8}|\\c[?-~]|[^\s$\\*?~%#()<>&|;"'']|\\(?=[^abefnrtv\s$\\*?#(){}\[\]<>^&;|"''xXuUc])|\\\n|[~%#])+)+' - comment: Use the function call match to build a file path, as the syntax is fairly similar (possibly identical, after exceptions caught above? I haven't checked) - scope: meta.redirection.path.fish - string: - - include: string-quoted - - include: string-unquoted - string-quoted: - - match: \' - captures: - 0: punctuation.definition.string.begin.fish - push: - - meta_scope: string.quoted.single.fish - - match: \' - captures: - 0: punctuation.definition.string.end.fish - pop: true - - match: '\\[\''\\]' - comment: Only accepted escapes are \' and \\ - scope: constant.character.escape.fish - - match: \" - captures: - 0: punctuation.definition.string.begin.fish - push: - - meta_scope: string.quoted.double.fish - - match: \" - captures: - 0: punctuation.definition.string.end.fish - pop: true - - match: '\\[\n\"\\$]' - comment: Only accepted escapes are \, \", \\, and \$ - scope: constant.character.escape.fish - - include: variable-expansion - string-unquoted: - - match: '(?![\s;&()|<>''"$])' - comment: End unquoted string at anything that can't be in one - push: - - meta_scope: meta.string.unquoted.fish - - match: '(?=[\s;&()|<>''"$])' - pop: true - - include: string-unquoted-patterns - string-unquoted-patterns: - - match: |- - (?x) - \\[abefnrtv $\\*?#(){}\[\]<>^&|;"'] - | - \\[~%] - | - \\[xX][0-9A-Fa-f]{1,2} - | - \\[0-7]{1,3} - | - \\u[0-9A-Fa-f]{1,4} - | - \\U[0-9A-Fa-f]{1,8} - | - \\c[?-~] - comment: This list follows the order given in official fish documentation. Technically '~' and '%' only need escaping if they appear at the front of a parameter. If they are escaped within a parameter, then fish does not *highlight* the escape, however it does silently *parse* the escape and the backslash is removed before the parameter is passed to the command. So, we highlight these escapes as well since they are actually treated as valid escapes by fish - scope: constant.character.escape.fish - - match: \\\n - comment: Just for convenience we separate the newline escape - scope: constant.character.escape.fish - - match: '\{' - captures: - 0: punctuation.section.braces.begin.fish - push: - - meta_scope: meta.braces.brace-expansion.fish - - match: '(\})|(\n|[;&)|].*)' - captures: - 1: punctuation.section.braces.end.fish - 2: invalid.illegal.punctuation.section.fish - pop: true - - match: \, - scope: punctuation.section.braces.separator.fish - - include: command-substitution - - include: variable-expansion - - match: '(?:[^\S\n]+)' - comment: Unescaped spaces aren't allowed, as technically that separates the braces into two separate arguments. Don't consume a newline though, so the scope end capture can get it - scope: invalid.illegal.whitespace.fish - - include: string-quoted - - match: '(?:[+-]?)(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?=$|[\s;&)|<>]|\}|\,)' - scope: constant.numeric.fish - - match: '(?![\s;&)|<>''"])' - comment: "Begin/end string as before with the addition of breaking at a '}' or ','" - push: - - match: '(?=[\s;&)|<>''"]|\}|\,)' - pop: true - - match: \\\, - scope: constant.character.escape.fish - - include: string-unquoted-patterns - - match: (\*\*)|(\*)|(\?) - scope: meta.wildcard-expansion.fish - captures: - 1: keyword.operator.double-star.fish - 2: keyword.operator.single-star.fish - 3: keyword.operator.question-mark.fish - variable-expansion: - - include: variable-expansion-illegal - - match: (?=\$) - comment: 'Capture "$foo" or "$foo[]" or "$$foo[][]" etc' - push: - - meta_scope: meta.variable-expansion.fish - - match: '(?=[^\$\w\[])' - pop: true - - match: \$ - captures: - 0: punctuation.definition.variable.fish - push: - - meta_scope: variable.other.fish - - match: '(?=[^\$\w])' - pop: true - - include: variable-expansion-illegal - - include: variable-expansion-simple - - include: index-expansion - variable-expansion-illegal: - - match: '\$(?:(?=[,''"\]}\s;&)|])|[^\w\$][^$,''"\]}\s;&)|]*)' - comment: A lone '$' in a scope, or an attempt to expand a variable starting with a nonword character, is an error. These boundaries are the same as for meta.string.unquoted - scope: invalid.illegal.variable-expansion.fish - variable-expansion-simple: - - match: \$ - captures: - 0: punctuation.definition.variable.fish - push: - - meta_scope: variable.other.fish - - match: '(?=[^\$\w])' - pop: true - - include: variable-expansion-illegal - - include: variable-expansion-simple diff --git a/assets/syntaxes/jsonnet.sublime-syntax b/assets/syntaxes/jsonnet.sublime-syntax deleted file mode 100644 index 09d37ba..0000000 --- a/assets/syntaxes/jsonnet.sublime-syntax +++ /dev/null @@ -1,122 +0,0 @@ -%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 diff --git a/assets/syntaxes/purescript.sublime-syntax b/assets/syntaxes/purescript.sublime-syntax deleted file mode 100644 index 27accf5..0000000 --- a/assets/syntaxes/purescript.sublime-syntax +++ /dev/null @@ -1,387 +0,0 @@ -%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 diff --git a/assets/syntaxes/requirementstxt.sublime-syntax b/assets/syntaxes/requirementstxt.sublime-syntax deleted file mode 100644 index 8ef40fe..0000000 --- a/assets/syntaxes/requirementstxt.sublime-syntax +++ /dev/null @@ -1,19 +0,0 @@ -%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 diff --git a/assets/syntaxes/show-nonprintable.sublime-syntax b/assets/syntaxes/show-nonprintable.sublime-syntax deleted file mode 100644 index d964715..0000000 --- a/assets/syntaxes/show-nonprintable.sublime-syntax +++ /dev/null @@ -1,27 +0,0 @@ -%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 diff --git a/assets/syntaxes/syslog.sublime-syntax b/assets/syntaxes/syslog.sublime-syntax deleted file mode 100644 index c49ea11..0000000 --- a/assets/syntaxes/syslog.sublime-syntax +++ /dev/null @@ -1,41 +0,0 @@ -%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: .*)\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 diff --git a/assets/themes.bin b/assets/themes.bin new file mode 100644 index 0000000000000000000000000000000000000000..108610625b01f4a905336ee534c076c85bfedd3b GIT binary patch literal 10896 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 mJ*f1CE7^4_X}cm - - - - - - name - 1337 - settings - - - settings - - background - #191919 - caret - #F8F8F0 - foreground - #F8F8F2 - invisibles - #3B3A32 - lineHighlight - #3D3D3D55 - selection - #515151 - - - - name - Comment - scope - comment - settings - - foreground - #6d6d6d - - - - name - String - scope - string - settings - - foreground - #fbe3bf - - - - name - Number - scope - constant.numeric - settings - - foreground - #fdb082 - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #ff8942 - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #fdb082 - - - - name - Variable - scope - variable - settings - - foreground - #e9fdac - - - - name - Keyword - scope - keyword - settings - - foreground - #ff5e5e - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #ff5e5e - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #fbdfb5 - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #8cdaff - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #8cdaff - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #8cdaff - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #fc9354 - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #ff5e5e - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #97d8ea - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #6699cc - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #ecfdb9 - - - - name - Library class/type - scope - support.type, support.class - settings - - foreground - #fbe3bf - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - PHP Namespaces - scope - support.other.namespace, entity.name.type.namespace - settings - - foreground - #FFB2F9 - - - - name - PHP Namespace Alias - scope - support.other.namespace.use-as.php - settings - - foreground - #66D9EF - - - - name - PHP Namespace Keyword - scope - variable.language.namespace.php - settings - - foreground - #D66990 - - - - name - PHP Namespace Separator - scope - punctuation.separator.inheritance.php - settings - - foreground - #F92672 - - - - name - CSS Functions / Property Values - scope - support.function.misc.css, support.constant.property-value.css, support.constant.font-name.css - settings - - foreground - #fdb082 - - - - name - Twig Tagbraces - scope - meta.tag.template.value.twig, meta.tag.template.block.twig - settings - - foreground - #CD5AC5 - - - - name - Twig Keywords - scope - keyword.control.twig - settings - - foreground - #E05D8C - - - - name - Twig Objects - scope - variable.other.twig - settings - - foreground - #E5A5E0 - - - - name - Twig Object Properties - scope - variable.other.property.twig - settings - - foreground - #FFE1FC - - - - name - Twig Language Constants - scope - constant.language.twig - settings - - foreground - #FFD2A6 - - - - name - Twig Numerical Constants - scope - constant.numeric.twig - settings - - foreground - #FFD0FB - - - - name - Twig Filters - scope - support.function.twig - settings - - foreground - #90E7F7 - - - - name - Twig User-Defined Filters - scope - meta.function-call.other.twig - settings - - foreground - #FAB85A - - - - name - Twig Macros - scope - meta.function-call.twig - settings - - foreground - #FAB85A - - - - name - Invalid - scope - invalid - settings - - background - #f92649 - fontStyle - - foreground - #F8F8F0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #ff9664 - foreground - #F8F8F0 - - - - name - Punctuation - scope - punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array - settings - - foreground - #ffffff - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #d0d0d0 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #66a9ec - - - - name - Language Literal - scope - variable.language.super, variable.language.this, variable.language.self - settings - - foreground - #d699ff - - - - name - GitGutter deleted - scope - markup.deleted.git_gutter - settings - - foreground - #F92672 - - - - name - GitGutter inserted - scope - markup.inserted.git_gutter - settings - - foreground - #A6E22E - - - - name - GitGutter changed - scope - markup.changed.git_gutter - settings - - foreground - #CC00FF - - - - name - GitGutter ignored - scope - markup.ignored.git_gutter - settings - - foreground - #999999 - - - - name - GitGutter untracked - scope - markup.untracked.git_gutter - settings - - foreground - #565656 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715E - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #F92672 - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #A6E22E - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #CC00FF - - - - uuid - 233F0694-0B9C-43E3-A44A-ECECF7DF6C73 - colorSpaceName - sRGB - semanticClass - theme.dark.1337 - author - Mark Herpich - comment - http://www.twitter.com/markisrocking - - diff --git a/assets/themes/DarkNeon.tmTheme b/assets/themes/DarkNeon.tmTheme deleted file mode 100644 index b6ffe72..0000000 --- a/assets/themes/DarkNeon.tmTheme +++ /dev/null @@ -1,818 +0,0 @@ - - - - - name - Dark Neon - settings - - - settings - - background - #000000 - caret - #FFFFFF - foreground - #FFFFFF - invisibles - #CAE2FB3D - lineHighlight - #FFFFFF24 - selection - #333333 - - - - name - Comment - scope - comment - settings - - fontStyle - - foreground - #7C7C7C - background - #212121 - - - - name - Entity - scope - entity - settings - - fontStyle - - foreground - #F8F8F8 - - - - name - Keyword - scope - keyword - settings - - fontStyle - - foreground - #66CCFF - - - - name - Keyword.control - scope - keyword.control - settings - - fontStyle - - foreground - #66CCFF - - - - name - Keyword.Operator - scope - keyword.operator - settings - - foreground - #AAAAAA - - - - name - Class - scope - entity.name.type - settings - - fontStyle - underline - foreground - #FFFFB6 - - - - name - Support - scope - support - settings - - fontStyle - - foreground - #FFFFB6 - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #CFCB90 - - - - name - Storage.modifier - scope - storage.modifier - settings - - fontStyle - - foreground - #66CCFF - - - - name - Constant - scope - constant - settings - - fontStyle - - foreground - #99CC99 - - - - name - String - scope - string - settings - - fontStyle - normal - foreground - #CCFF66 - - - - name - Number - scope - constant.numeric - settings - - fontStyle - bold - foreground - #FF73FD - - - - name - Punctuation - scope - punctuation - settings - - fontStyle - - - - - name - Variable - scope - variable - settings - - fontStyle - - foreground - #c6c5fe - - - - name - Invalid – Deprecated - scope - invalid.deprecated - settings - - fontStyle - italic underline - foreground - #FD5FF1 - - - - name - Invalid – Illegal - scope - invalid.illegal - settings - - background - #562D56BF - foreground - #FD5FF1 - - - - name - ----------------------------------- - settings - - - - - name - ♦ Embedded Source (Bright) - scope - text source - settings - - background - #B1B3BA08 - fontStyle - - - - - name - ♦ Entity inherited-class - scope - entity.other.inherited-class - settings - - fontStyle - italic - foreground - #9B5C2E - - - - name - ♦ String embedded-variable - scope - source string source - settings - - fontStyle - - foreground - #EDEDED - - - - name - ♦ String punctuation - scope - source string source punctuation.section.embedded - settings - - fontStyle - - foreground - #00A0A0 - - - - name - ♦ String constant - scope - string constant - settings - - fontStyle - - foreground - #00A0A0 - - - - name - ♦ String.regexp - scope - string.regexp - settings - - foreground - #E9C062 - - - - name - ♦ String.regexp.«special» - scope - string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition - settings - - fontStyle - - foreground - #FF8000 - - - - name - ♦ String.regexp.group - scope - string.regexp.group - settings - - background - #FFFFFF0F - fontStyle - - foreground - #C6A24F - - - - name - ♦ String.regexp.character-class - scope - string.regexp.character-class - settings - - fontStyle - - foreground - #B18A3D - - - - name - ♦ String variable - scope - string variable - settings - - fontStyle - - foreground - #8A9A95 - - - - name - ♦ Support.function - scope - support.function - settings - - fontStyle - - foreground - #DAD085 - - - - name - ♦ Support.constant - scope - support.constant - settings - - fontStyle - - foreground - #FFD2A7 - - - - name - c C/C++ Preprocessor Line - scope - meta.preprocessor.c - settings - - foreground - #8996A8 - - - - name - c C/C++ Preprocessor Directive - scope - meta.preprocessor.c keyword - settings - - fontStyle - - foreground - #AFC4DB - - - - name - j Cast - scope - meta.cast - settings - - fontStyle - italic - foreground - #676767 - - - - name - ✘ Doctype/XML Processing - scope - 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 - settings - - foreground - #494949 - - - - name - ✘ Meta.tag.«all» - scope - meta.tag, meta.tag entity - settings - - fontStyle - normal - foreground - #66CCFF - - - - name - ✘ Meta.tag.inline - scope - source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity - settings - - fontStyle - - foreground - #66CCFF - - - - name - ✘ Meta.tag.attribute-name - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #aaaaaa - - - - name - ✘ Namespaces - scope - entity.name.tag.namespace, entity.other.attribute-name.namespace - settings - - fontStyle - - foreground - #E18964 - - - - name - § css tag-name - scope - meta.selector.css entity.name.tag - settings - - fontStyle - underline - foreground - #66CCFF - - - - name - § css:pseudo-class - scope - meta.selector.css entity.other.attribute-name.tag.pseudo-class - settings - - fontStyle - - foreground - #8F9D6A - - - - name - § css#id - scope - meta.selector.css entity.other.attribute-name.id - settings - - fontStyle - - foreground - #8B98AB - - - - name - § css.class - scope - meta.selector.css entity.other.attribute-name.class - settings - - fontStyle - - foreground - #62B1FE - - - - name - § css property-name: - scope - support.type.property-name.css - settings - - foreground - #EDEDED - - - - name - § css property-value; - scope - meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css - settings - - fontStyle - - foreground - #F9EE98 - - - - name - § css @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #8693A5 - - - - name - § css additional-constants - scope - meta.property-value support.constant.named-color.css, meta.property-value constant - settings - - fontStyle - - foreground - #87C38A - - - - name - § css constructor.argument - scope - meta.constructor.argument.css - settings - - foreground - #8F9D6A - - - - name - ⎇ diff.header - scope - meta.diff, meta.diff.header - settings - - background - #0E2231 - fontStyle - italic - foreground - #F8F8F8 - - - - name - ⎇ diff.deleted - scope - markup.deleted - settings - - background - #420E09 - foreground - #F8F8F8 - - - - name - ⎇ diff.changed - scope - markup.changed - settings - - background - #4A410D - foreground - #F8F8F8 - - - - name - ⎇ diff.inserted - scope - markup.inserted - settings - - background - #253B22 - foreground - #F8F8F8 - - - - name - -------------------------------- - settings - - - - - name - Markup: Italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #E9C062 - - - - name - Markup: Bold - scope - markup.bold - settings - - fontStyle - bold - foreground - #E9C062 - - - - name - Markup: Underline - scope - markup.underline - settings - - fontStyle - underline - foreground - #E18964 - - - - name - Markup: Quote - scope - markup.quote - settings - - background - #FEE09C12 - fontStyle - italic - foreground - #E1D4B9 - - - - name - Markup: Heading - scope - markup.heading, markup.heading entity - settings - - background - #632D04 - fontStyle - - foreground - #FEDCC5 - - - - name - Markup: List - scope - markup.list - settings - - foreground - #E1D4B9 - - - - name - Markup: Raw - scope - markup.raw - settings - - background - #B1B3BA08 - fontStyle - - foreground - #578BB3 - - - - name - Markup: Comment - scope - markup comment - settings - - fontStyle - italic - foreground - ##555555 - - - - name - Markup: Separator - scope - meta.separator - settings - - background - #242424 - foreground - #60A633 - - - - name - Log Entry - scope - meta.line.entry.logfile, meta.line.exit.logfile - settings - - background - #EEEEEE29 - - - - name - Log Entry Error - scope - meta.line.error.logfile - settings - - background - #751012 - - - - uuid - D039AEA9-9DD2-4237-A963-E84494B0B3FB - colorSpaceName - sRGB - semanticClass - theme.dark.dark_neon - - diff --git a/assets/themes/GitHub.tmTheme b/assets/themes/GitHub.tmTheme deleted file mode 100644 index 05703e2..0000000 --- a/assets/themes/GitHub.tmTheme +++ /dev/null @@ -1,526 +0,0 @@ - - - - - name - GitHub - settings - - - settings - - background - #FFFFFF - caret - #333333 - foreground - #333333 - invisibles - #E0E0E0 - lineHighlight - #F8EEC7 - selection - #B0CDE7 - selectionBorder - #B0CDE7 - inactiveSelection - #EDEDED - findHighlight - #FFE792 - findHighlightForeground - #333333 - - - - name - Comments - scope - comment - settings - - foreground - #969896 - - - - name - Operators - scope - keyword.operator, support.constant - settings - - fontStyle - - foreground - #A71D5D - - - - name - Operators - scope - constant.language - settings - - fontStyle - - foreground - #0086B3 - - - - name - Keywords - scope - keyword, storage - settings - - fontStyle - - foreground - #a71d5d - - - - name - Types - scope - storage.type - settings - - fontStyle - - foreground - #a71d5d - - - - name - Types - scope - support.type - settings - - fontStyle - - foreground - #0086B3 - - - - scope - variable - settings - - foreground - #0086b3 - - - - scope - variable.language - settings - - foreground - #df5000 - - - - scope - variable.parameter.function - settings - - foreground - #333 - - - - name - Functions - scope - entity.name.function, entity - settings - - fontStyle - - foreground - #795da3 - - - - name - Functions - scope - support.function - settings - - fontStyle - - foreground - #0086B3 - - - - name - Classes - scope - entity.name.type, entity.other.inherited-class - settings - - fontStyle - - foreground - #000000 - - - - name - Classes - scope - support.class - settings - - fontStyle - - foreground - #0086b3 - - - - name - Exceptions - scope - entity.name.exception - settings - - foreground - #F93232 - - - - name - Sections - scope - entity.name.section - settings - - fontStyle - - - - - name - Numbers - scope - constant.numeric, constant - settings - - fontStyle - - foreground - #0086b3 - - - - name - Strings - scope - constant.character, string, string punctuation - settings - - fontStyle - - foreground - #183691 - - - - name - Strings: Regular Expressions - scope - string.regexp, string.regexp constant.character, string.regexp punctuation - settings - - fontStyle - - foreground - #009926 - - - - name - Strings: Symbols - scope - constant.other.symbol - settings - - foreground - #990073 - - - - name - Embedded Source - scope - string source, text source - settings - - fontStyle - - foreground - #333333 - - - - scope - variable.other.property - settings - - foreground - #333 - fontStyle - - - - - scope - entity.name - settings - - fontStyle - - foreground - #333333 - - - - scope - invalid - settings - - fontStyle - - foreground - #f00 - - - - - - - name - HTML: Tags - scope - entity.name.tag - settings - - fontStyle - - foreground - #63a35c - - - - name - HTML: Tags Punctuation - scope - punctuation.definition.tag - settings - - fontStyle - - foreground - #333 - - - - name - HTML: Attribute Punctuation - scope - meta.tag string punctuation - settings - - fontStyle - - foreground - #183691 - - - - name - HTML: Entities - scope - constant.character.entity - settings - - fontStyle - - foreground - #000000 - - - - name - HTML: Attribute Names - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #795da3 - - - - name - HTML: Attribute Values - scope - meta.tag string.quoted, meta.tag string.quoted constant.character.entity - settings - - fontStyle - - foreground - #183691 - - - - - - scope - meta.selector, meta.selector entity, meta.selector entity punctuation, entity.name.tag.css, entity.other.attribute-name.class, keyword.control.html.sass - settings - - fontStyle - - foreground - #63a35c - - - - scope - entity.other.attribute-name.class, constant.other.unit - settings - - fontStyle - - foreground - #795da3 - - - - scope - support.type.property-name, support.constant.property-value - settings - - fontStyle - - foreground - #0086b3 - - - - - - - scope - keyword.other.special-method.ruby.gem - settings - - foreground - #0086B3 - fontStyle - - - - - scope - variable.other.block.ruby - settings - - foreground - #000 - fontStyle - - - - - - - scope - support.function.prelude, variable.other.generic-type.haskell - settings - - foreground - #000 - fontStyle - - - - - scope - constant.other.haskell, support.constant.haskell - settings - - fontStyle - - foreground - #445588 - - - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715E - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #770000 - background - #FFDDDD - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #003300 - background - #DDFFDD - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #ececec - - - - uuid - BF4E1964-0DB9-4E88-8142-E8F52D7EDEEC - - diff --git a/assets/themes/Monokai Extended Bright.tmTheme b/assets/themes/Monokai Extended Bright.tmTheme deleted file mode 100644 index 91b98eb..0000000 --- a/assets/themes/Monokai Extended Bright.tmTheme +++ /dev/null @@ -1,999 +0,0 @@ - - - - - author - @tapionlinna - colorSpaceName - sRGB - name - Monokai Extended Bright - semanticClass - theme.dark.monokai_bright_extended - settings - - - settings - - activeGuide - #9D550FB0 - background - #272822 - bracketContentsForeground - #F8F8F2A5 - bracketContentsOptions - underline - bracketsForeground - #F8F8F2A5 - bracketsOptions - underline - caret - #F8F8F0 - findHighlight - #FFE792 - findHighlightForeground - #000000 - foreground - #F8F8F2 - inactiveSelection - #bbbbbb - inactiveSelectionForeground - #222222 - invisibles - #3B3A32 - lineHighlight - #3E3D32 - selection - #9D550F - selectionBorder - #1C1C1C - selectionForeground - #fffff8 - tagsOptions - stippled_underline - - - - name - Comment - scope - comment - settings - - foreground - #75715E - - - - name - String - scope - string - settings - - foreground - #E6DB74 - - - - name - Number - scope - constant.numeric - settings - - foreground - #AE81FF - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #AE81FF - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #AE81FF - - - - name - Variable - scope - variable - settings - - fontStyle - - - - - name - Entity - scope - entity - settings - - fontStyle - - foreground - #F92672 - - - - name - Keyword - scope - keyword - settings - - foreground - #F92672 - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #F92672 - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #A6E22E - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #A6E22E - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #A6E22E - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #FD971F - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #F92672 - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #A6E22E - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #66D9EF - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #66D9EF - - - - name - Library class/type - scope - support.type, support.class - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - String constant - scope - string constant - settings - - foreground - #66D9EF - - - - name - String.regexp - scope - string.regexp - settings - - foreground - #F6AA11 - - - - name - String variable - scope - string variable - settings - - foreground - #FFFFFF - - - - name - Support.function - scope - support.function - settings - - fontStyle - - foreground - #66D9EF - - - - name - Doctype/XML Processing - scope - 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 - settings - - foreground - #73817D - - - - name - HTML: punctuations tags - scope - punctuation.definition.tag.end, punctuation.definition.tag.begin, punctuation.definition.tag - settings - - foreground - #FFFFFF - - - - name - CSS: tag-name - scope - meta.selector.css entity.name.tag - settings - - fontStyle - underline - foreground - #F92672 - - - - name - CSS: @import - scope - keyword.control.at-rule.import.css - settings - - foreground - #F92672 - - - - name - CSS: @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #F6AA11 - - - - name - CSS: id - scope - meta.selector.css entity.other.attribute-name.id - settings - - foreground - #F6AA11 - - - - name - CSS: class - scope - meta.selector.css entity.other.attribute-name.class - settings - - foreground - #A6E22E - - - - name - CSS: property-name - scope - support.type.property-name.css - settings - - foreground - #66D9EF - - - - name - CSS: property-value - scope - meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css - settings - - foreground - #F6F080 - - - - name - CSS: additional-constants - scope - meta.property-value support.constant.named-color.css, meta.property-value constant - settings - - foreground - #EDF080 - - - - name - CSS: constructor.argument - scope - meta.constructor.argument.css - settings - - foreground - #F6AA11 - - - - name - LESS variables - scope - variable.other.less - settings - - foreground - #FFFFFF - - - - name - LESS mixins - scope - entity.other.less.mixin - settings - - foreground - #9DF39F - - - - name - CoffeeScript String Interpolated - scope - punctuation.section.embedded.coffee - settings - - foreground - #e69f66 - - - - name - Invalid - scope - invalid - settings - - background - #F92672 - fontStyle - - foreground - #F8F8F0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #AE81FF - foreground - #F8F8F0 - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #CFCFC2 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715E - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #F92672 - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #A6E22E - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #E6DB74 - - - - name - diff.range - scope - meta.diff, meta.diff.range - settings - - foreground - #3BC0F0 - - - - name - Markdown: Plain - scope - text.html.markdown - settings - - foreground - #FFFFFF - - - - name - Markup: Raw Inline - scope - text.html.markdown markup.raw.inline - settings - - foreground - #EC3533 - - - - name - Markdown: Linebreak - scope - text.html.markdown meta.dummy.line-break - settings - - foreground - #E0EDDD - - - - name - Markup: Heading - scope - Markdown.heading, markup.heading | markup.heading entity.name, markup.heading.markdown punctuation.definition.heading.markdown - settings - - fontStyle - - foreground - #FD971F - - - - name - Markup: Heading 1 - scope - markup.heading.1.markdown - settings - - fontStyle - - foreground - #fc951e - - - - name - Markup: Heading 2 - scope - markup.heading.2.markdown - settings - - fontStyle - - foreground - #e8891c - - - - name - Markup: Heading 3 - scope - markup.heading.3.markdown - settings - - fontStyle - - foreground - #d47d19 - - - - name - Markup: Heading 4 - scope - markup.heading.4.markdown - settings - - fontStyle - - foreground - #bf7117 - - - - name - Markup: Heading 5 - scope - markup.heading.5.markdown - settings - - fontStyle - - foreground - #ab6515 - - - - name - Markup: Heading 6 - scope - markup.heading.6.markdown - settings - - fontStyle - - foreground - #965912 - - - - name - Markup: Italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #F92672DD - - - - name - Markup: Bold - scope - markup.bold - settings - - fontStyle - bold - foreground - #F92672 - - - - name - Markup: Underline - scope - markup.underline - settings - - fontStyle - underline - foreground - #A6E22E - - - - name - Markup: strike - scope - markup.strike - settings - - fontStyle - - foreground - #cc4273 - - - - name - Markdown: Blockquote - scope - markup.quote, punctuation.definition.blockquote.markdown - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Markup: Quote - scope - markup.quote - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Markup: Link - scope - string.other.link.title.markdown - settings - - fontStyle - underline - foreground - #66D9EF - - - - name - Markup: Raw Block - scope - markup.raw.block - settings - - foreground - #AE81FF - - - - name - Markdown: Raw Block - scope - markup.raw.block.fenced.markdown - settings - - background - #222 - foreground - #FFFFFF - - - - name - Markdown: List Items punctuation - scope - punctuation.definition.list_item.markdown - settings - - foreground - #93A1A1 - - - - name - Fenced Code Block - scope - punctuation.definition.fenced.markdown,variable.language.fenced.markdown - settings - - background - #222222 - foreground - #93A1A1 - - - - name - Fenced markdown language - scope - variable.language.fenced.markdown - settings - - fontStyle - italic - foreground - #C6CECE - - - - name - Markup: Table - scope - markup.table - settings - - background - #FF3A281A - foreground - #B42A1D - - - - name - Markdown: Separator - scope - meta.separator - settings - - background - #FFFFFF0F - fontStyle - bold - foreground - #FFFFFF33 - - - - name - LaTeX: Math Variables - scope - variable.other.math.tex - settings - - foreground - #E6DB74 - - - - name - GitGutter deleted - scope - markup.deleted.git_gutter - settings - - foreground - #F92672 - - - - name - GitGutter inserted - scope - markup.inserted.git_gutter - settings - - foreground - #A6E22E - - - - name - GitGutter changed - scope - markup.changed.git_gutter - settings - - foreground - #FC951E - - - - name - GitGutter ignored - scope - markup.ignored.git_gutter - settings - - foreground - #565656 - - - - name - GitGutter untracked - scope - markup.untracked.git_gutter - settings - - foreground - #565656 - - - - scope - constant.numeric.line-number.find-in-files - match - settings - - foreground - #AE81FFA0 - - - - scope - entity.name.filename.find-in-files - settings - - foreground - #E6DB74 - - - - name - Nginx path - scope - string.other.path.nginx - settings - - foreground - #fc951e - - - - uuid - b76b4488-20c3-40a7-9499-457a451ee558 - - diff --git a/assets/themes/Monokai Extended Light.tmTheme b/assets/themes/Monokai Extended Light.tmTheme deleted file mode 100644 index dfcd381..0000000 --- a/assets/themes/Monokai Extended Light.tmTheme +++ /dev/null @@ -1,1975 +0,0 @@ - - - - - author - github.com/szupie - colorSpaceName - sRGB - gutterSettings - - background - #073642 - divider - #586e75 - foreground - #839496 - selectionBackground - #586e75 - selectionForeground - #679c00 - - name - Monokai Extended Light - semanticClass - theme.light.monokai_extended - settings - - - settings - - activeGuide - #06B512 - background - #fafafa - bracketContentsForeground - #49483ea5 - bracketContentsOptions - underline - bracketsForeground - #49483ea5 - bracketsOptions - underline - caret - #666663 - findHighlight - #ffe792 - findHighlightForeground - #000000 - foreground - #49483e - invisibles - #3b3a32 - lineHighlight - #e6e3c4 - selection - #ccc9ad - selectionBorder - #93917d - stackGuide - #C2A51C - tagsOptions - stippled_underline - - - - name - Comment - scope - comment - settings - - foreground - #75715e - - - - name - String - scope - string - settings - - foreground - #998f2f - - - - name - Number - scope - constant.numeric - settings - - foreground - #684d99 - - - - name - Constant: Built-in - scope - constant.language, meta.preprocessor - settings - - foreground - #684d99 - - - - name - Constant: User-defined - scope - constant.character, constant.other - settings - - foreground - #684d99 - - - - name - Variable - scope - variable.language, variable.other - settings - - foreground - #49483e - - - - name - Keyword - scope - keyword - settings - - foreground - #f9005a - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #f9005a - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #679c00 - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #679c00 - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #679c00 - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #cf7000 - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #f9005a - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #679c00 - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #0089b3 - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #0089b3 - - - - name - Library class/type - scope - support.type, support.class - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - String constant - scope - string constant - settings - - foreground - #0089b3 - - - - name - String.regexp - scope - string.regexp - settings - - foreground - #f6aa11 - - - - name - String variable - scope - string variable - settings - - foreground - #49483e - - - - name - Variable: punctuation - scope - punctuation.definition.variable - settings - - foreground - #49483e - - - - name - Entity - scope - entity - settings - - fontStyle - - foreground - #679c00 - - - - name - HTML: Doctype/XML Processing - scope - 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 - settings - - foreground - #c8cecc - - - - name - HTML: Comment Block - scope - comment.block.html - settings - - fontStyle - - foreground - #7c7865 - - - - name - HTML: Script - scope - entity.name.tag.script.html - settings - - fontStyle - italic - - - - name - HTML: Attribute punctuation - scope - text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html - settings - - fontStyle - - foreground - #679c00 - - - - name - HTML: Attributes - scope - text.html.basic entity.other.attribute-name.html - settings - - foreground - #679c00 - - - - name - HTML: Quotation Marks - scope - text.html.basic meta.tag.structure.any.html punctuation.definition.string.begin.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html - settings - - fontStyle - - foreground - #49483e - - - - name - HTML: Tags punctuation - scope - punctuation.definition.tag.end, punctuation.definition.tag.begin, punctuation.definition.tag - settings - - foreground - #49483e - - - - name - Handlebars: Variable - scope - variable.parameter.handlebars - settings - - foreground - #f6aa11 - - - - name - Handlebars: Constant - scope - support.constant.handlebars, meta.function.block.start.handlebars - settings - - foreground - #0089b3 - - - - name - CSS: @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #f6aa11 - - - - name - CSS: #Id - scope - meta.selector.css entity.other.attribute-name.id - settings - - foreground - #f6aa11 - - - - name - CSS: #Id for SCSS - scope - entity.other.attribute-name.id - settings - - foreground - #f6aa11 - - - - name - CSS: .class - scope - meta.selector.css entity.other.attribute-name.class - settings - - foreground - #679c00 - - - - name - CSS: Property Name - scope - support.type.property-name.css - settings - - foreground - #0089b3 - - - - name - CSS: Constructor Argument - scope - meta.constructor.argument.css - settings - - foreground - #f6aa11 - - - - name - CSS: {} - scope - punctuation.section.property-list.css - settings - - foreground - #49483e - - - - name - CSS: Tag Punctuation - scope - punctuation.definition.tag.css - settings - - foreground - #f9005a - - - - name - CSS: : , - scope - punctuation.separator.key-value.css, punctuation.terminator.rule.css - settings - - fontStyle - - foreground - #49483e - - - - name - CSS :pseudo - scope - entity.other.attribute-name.pseudo-element.css, entity.other.attribute-name.pseudo-class.css, entity.other.attribute-name.pseudo-selector.css - settings - - fontStyle - - foreground - #679c00 - - - - name - LESS variables - scope - variable.other.less - settings - - foreground - #49483e - - - - name - LESS mixins - scope - entity.other.less.mixin - settings - - fontStyle - italic - foreground - #e0fdce - - - - name - LESS: Extend - scope - entity.other.attribute-name.pseudo-element.less - settings - - fontStyle - - foreground - #ff9117 - - - - name - JS: Function Name - scope - meta.function.js, entity.name.function.js, support.function.dom.js - settings - - fontStyle - - foreground - #679c00 - - - - name - JS: Storage Type - scope - storage.type.js - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - JS: Source - scope - text.html.basic source.js.embedded.html - settings - - fontStyle - - foreground - #49483e - - - - name - JS: Function - scope - storage.type.function.js - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - JS: Numeric Constant - scope - constant.numeric.js - settings - - foreground - #ae81ff - - - - name - JS: [] - scope - meta.brace.square.js - settings - - foreground - #49483e - - - - name - JS: () - scope - meta.brace.round, punctuation.definition.parameters.begin.js, punctuation.definition.parameters.end.js - settings - - foreground - #49483e - - - - name - JS: {} - scope - meta.brace.curly.js - settings - - foreground - #49483e - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #9f9f66 - - - - name - CoffeeScript String Interpolated - scope - punctuation.section.embedded.coffee - settings - - foreground - #e69f66 - - - - name - PHP: [] - scope - keyword.operator.index-start.php, keyword.operator.index-end.php - settings - - foreground - #49483e - - - - name - PHP: Array - scope - meta.array.php - settings - - foreground - #49483e - - - - name - PHP: Array() - scope - meta.array.php support.function.construct.php, meta.array.empty.php support.function.construct.php - settings - - fontStyle - - foreground - #0089b3 - - - - name - PHP: Array Construct - scope - support.function.construct.php - settings - - foreground - #0089b3 - - - - name - PHP: Storage Type Function - scope - storage.type.function.php - settings - - foreground - #0089b3 - - - - name - PHP: Numeric Constant - scope - constant.numeric.php - settings - - foreground - #684d99 - - - - name - PHP: New - scope - keyword.other.new.php - settings - - foreground - #e42e70 - - - - name - PHP: :: - scope - support.class.php - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - PHP: Other Property - scope - variable.other.property.php - settings - - foreground - #f6aa11 - - - - name - PHP: Class - scope - storage.modifier.extends.php, storage.type.class.php, keyword.operator.class.php - settings - - foreground - #e42e70 - - - - name - PHP: Inherited Class - scope - meta.other.inherited-class.php - settings - - fontStyle - - foreground - #0089b3 - - - - name - PHP: Storage Type - scope - storage.type.php - settings - - foreground - #0089b3 - - - - name - PHP: Function - scope - entity.name.function.php - settings - - foreground - #679c00 - - - - name - PHP: Function Construct - scope - support.function.construct.php - settings - - foreground - #0089b3 - - - - name - PHP: Function Call - scope - entity.name.type.class.php, meta.function-call.php, meta.function-call.static.php, meta.function-call.object.php - settings - - foreground - #49483e - - - - name - PHP: Source Emebedded - scope - source.php.embedded.block.html - settings - - foreground - #49483e - - - - name - Invalid - scope - invalid - settings - - background - #f9005a - fontStyle - - foreground - #666663 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #ae81ff - foreground - #666663 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715e - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #f9005a - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #679c00 - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #998f2f - - - - name - diff.range - scope - meta.diff, meta.diff.range - settings - - foreground - #3bc0f0 - - - - name - Python: storage - scope - storage.type.class.python, storage.type.function.python, storage.modifier.global.python - settings - - fontStyle - - foreground - #3bc0f0 - - - - name - Python: import - scope - keyword.control.import.python, keyword.control.import.from.python - settings - - foreground - #f9005add - - - - name - Python: Support.exception - scope - support.type.exception.python - settings - - foreground - #0089b3 - - - - name - Perl: variables - scope - punctuation.definition.variable.perl, variable.other.readwrite.global.perl, variable.other.predefined.perl, keyword.operator.comparison.perl - settings - - foreground - #e42e70 - - - - name - Perl: functions - scope - support.function.perl - settings - - foreground - #0089b3 - - - - name - Perl: comments - scope - comment.line.number-sign.perl - settings - - fontStyle - italic - foreground - #75715e - - - - name - Perl: quotes - scope - punctuation.definition.string.begin.perl, punctuation.definition.string.end.perl - settings - - foreground - #49483e - - - - name - Perl: char - scope - constant.character.escape.perl - settings - - foreground - #dc322f - - - - name - Ruby: Constant - scope - constant.language.ruby, constant.numeric.ruby - settings - - foreground - #ae81ff - - - - name - Ruby: Variable definition - scope - punctuation.definition.variable.ruby - settings - - fontStyle - - foreground - #f6aa11 - - - - name - Ruby: Function Name - scope - meta.function.method.with-arguments.ruby - settings - - foreground - #679c00 - - - - name - Ruby: Variable - scope - variable.language.ruby - settings - - foreground - #49483e - - - - name - Ruby: Function - scope - entity.name.function.ruby - settings - - foreground - #f6aa11 - - - - name - Ruby: Keyword Control - scope - keyword.control.ruby, keyword.control.def.ruby - settings - - fontStyle - bold - foreground - #679c00 - - - - name - Ruby: Class - scope - keyword.control.class.ruby, meta.class.ruby - settings - - foreground - #679c00 - - - - name - Ruby: Class Name - scope - entity.name.type.class.ruby - settings - - fontStyle - - foreground - #0089b3 - - - - name - Ruby: Keyword - scope - keyword.control.ruby - settings - - fontStyle - - foreground - #679c00 - - - - name - Ruby: Support Class - scope - support.class.ruby - settings - - fontStyle - - foreground - #0089b3 - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #679c00 - - - - name - Ruby: Constant Other - scope - variable.other.constant.ruby - settings - - fontStyle - - foreground - #0089b3 - - - - name - Ruby: :symbol - scope - constant.other.symbol.ruby - settings - - fontStyle - - foreground - #f6f080 - - - - name - Ruby: Punctuation Section - scope - punctuation.section.embedded.ruby, punctuation.definition.string.begin.ruby, punctuation.definition.string.end.ruby - settings - - foreground - #f9005a - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #e42e70 - - - - name - Markdown: plain - scope - text.html.markdown - settings - - foreground - #49483e - - - - name - Markup: raw inline - scope - text.html.markdown markup.raw.inline - settings - - foreground - #ec3533 - - - - name - Markdown: linebreak - scope - text.html.markdown meta.dummy.line-break - settings - - foreground - #e0eddd - - - - name - Markdown: heading - scope - markdown.heading, markup.heading | markup.heading entity.name, markup.heading.markdown punctuation.definition.heading.markdown - settings - - fontStyle - - foreground - #cf7000 - - - - name - Markup: Heading 1 - scope - markup.heading.1.markdown - settings - - fontStyle - - foreground - #cf6e00 - - - - name - Markup: Heading 2 - scope - markup.heading.2.markdown - settings - - fontStyle - - foreground - #ba6300 - - - - name - Markup: Heading 3 - scope - markup.heading.3.markdown - settings - - fontStyle - - foreground - #a65800 - - - - name - Markup: Heading 4 - scope - markup.heading.4.markdown - settings - - fontStyle - - foreground - #914e00 - - - - name - Markup: Heading 5 - scope - markup.heading.5.markdown - settings - - fontStyle - - foreground - #7d4300 - - - - name - Markup: Heading 6 - scope - markup.heading.6.markdown - settings - - fontStyle - - foreground - #693800 - - - - name - Markup: italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #e42e70 - - - - name - Markup: bold - scope - markup.bold - settings - - fontStyle - bold - foreground - #f9005a - - - - name - Markup: underline - scope - markup.underline - settings - - fontStyle - underline - foreground - #679c00 - - - - name - Markup: strike - scope - markup.strike - settings - - fontStyle - strike - foreground - #cc4273 - - - - name - Markdown: Blockquote - scope - markup.quote, punctuation.definition.blockquote.markdown - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - Markup: Quote - scope - markup.quote - settings - - fontStyle - italic - foreground - #0089b3 - - - - name - Markdown: Link - scope - string.other.link.title.markdown - settings - - fontStyle - underline - foreground - #0089b3 - - - - name - Markup: Raw block - scope - markup.raw.block - settings - - foreground - #ae81ff - - - - name - Markdown: List Items Punctuation - scope - punctuation.definition.list_item.markdown - settings - - foreground - #49483e - - - - name - Markdown: Raw Block fenced - scope - markup.raw.block.fenced.markdown - settings - - background - #222 - foreground - #49483e - - - - name - Markdown: Fenced Bode Block - scope - punctuation.definition.fenced.markdown, variable.language.fenced.markdown - settings - - background - #fafafa - foreground - #636050 - - - - name - Markdown: Fenced Language - scope - variable.language.fenced.markdown - settings - - fontStyle - - foreground - #7c7865 - - - - name - Markdown: Separator - scope - meta.separator - settings - - background - #49483e0f - fontStyle - bold - foreground - #49483e33 - - - - name - Markup: table - scope - markup.table - settings - - background - #ff3a281a - foreground - #b42a1d - - - - name - LaTeX: Math Variables - scope - variable.other.math.tex - settings - - foreground - #998f2f - - - - name - Other: Removal - scope - other.package.exclude, other.remove - settings - - fontStyle - - foreground - #d3201f - - - - name - Shell: builtin - scope - support.function.builtin.shell - settings - - foreground - #679c00 - - - - name - Shell: variable - scope - variable.other.normal.shell - settings - - foreground - #0089b3 - - - - name - Shell: DOTFILES - scope - source.shell - settings - - fontStyle - - foreground - #49483e - - - - name - Shell: meta scope in loop - scope - meta.scope.for-in-loop.shell, variable.other.loop.shell - settings - - fontStyle - - foreground - #cf7000 - - - - name - Shell: Function name - scope - entity.name.function.shell - settings - - fontStyle - - foreground - #679c00 - - - - name - Shell: Quotation Marks - scope - punctuation.definition.string.end.shell, punctuation.definition.string.begin.shell - settings - - fontStyle - - foreground - #49483e - - - - name - Shell: Meta Block - scope - meta.scope.case-block.shell, meta.scope.case-body.shell - settings - - fontStyle - - foreground - #cf7000 - - - - name - Shell: [] - scope - punctuation.definition.logical-expression.shell - settings - - fontStyle - - foreground - #49483e - - - - name - Shell: Comment - scope - comment.line.number-sign.shell - settings - - fontStyle - italic - foreground - #7c7865 - - - - name - Makefile: Comment - scope - comment.line.number-sign.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Comment punctuation - scope - punctuation.definition.comment.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Variables - scope - variable.other.makefile - settings - - fontStyle - - foreground - #f9005a - - - - name - Makefile: Function name - scope - entity.name.function.makefile - settings - - fontStyle - - foreground - #679c00 - - - - name - Makefile: Function - scope - meta.function.makefile - settings - - fontStyle - - foreground - #0089b3 - - - - name - GitGutter deleted - scope - markup.deleted.git_gutter - settings - - foreground - #f9005a - - - - name - GitGutter inserted - scope - markup.inserted.git_gutter - settings - - foreground - #679c00 - - - - name - GitGutter changed - scope - markup.changed.git_gutter - settings - - foreground - #FC951E - - - - name - GitGutter ignored - scope - markup.ignored.git_gutter - settings - - foreground - #565656 - - - - name - GitGutter untracked - scope - markup.untracked.git_gutter - settings - - foreground - #565656 - - - - name - SublimeLinter Annotations - scope - sublimelinter.annotations - settings - - background - #FFFFAA - foreground - #e6e3c4 - - - - name - SublimeLinter Error Outline - scope - sublimelinter.outline.illegal - settings - - background - #FF4A52 - foreground - #49483e - - - - name - SublimeLinter Error Underline - scope - sublimelinter.underline.illegal - settings - - background - #FF0000 - - - - name - SublimeLinter Warning Outline - scope - sublimelinter.outline.warning - settings - - background - #DF9400 - foreground - #49483e - - - - name - SublimeLinter Warning Underline - scope - sublimelinter.underline.warning - settings - - background - #FF0000 - - - - name - SublimeLinter Violation Outline - scope - sublimelinter.outline.violation - settings - - background - #49483e33 - foreground - #49483e - - - - name - SublimeLinter Violation Underline - scope - sublimelinter.underline.violation - settings - - background - #FF0000 - - - - scope - constant.numeric.line-number.find-in-files - match - settings - - foreground - #AE81FFA0 - - - - scope - entity.name.filename.find-in-files - settings - - foreground - #998f2f - - - - name - SublimeLinter Error - scope - sublimelinter.mark.error - settings - - foreground - #D02000 - - - - name - SublimeLinter Warning - scope - sublimelinter.mark.warning - settings - - foreground - #DDB700 - - - - name - SublimeLinter Gutter Mark - scope - sublimelinter.gutter-mark - settings - - foreground - #49483e - - - - name - Nginx path - scope - string.other.path.nginx - settings - - foreground - #fc951e - - - - uuid - 0fbea17d-3c09-4ac5-a1aa-98f4946035e3 - - diff --git a/assets/themes/Monokai Extended Origin.tmTheme b/assets/themes/Monokai Extended Origin.tmTheme deleted file mode 100644 index a865aca..0000000 --- a/assets/themes/Monokai Extended Origin.tmTheme +++ /dev/null @@ -1,1919 +0,0 @@ - - - - - author - github.com/SuperPaintman - colorSpaceName - sRGB - gutterSettings - - background - #272822 - divider - #586e75 - foreground - #F8F8F2 - selectionBackground - #49483E - selectionForeground - #a6e22e - - name - Monokai Extended Origin - semanticClass - theme.dark.monokai_extended - settings - - - settings - - activeGuide - #9D550FB0 - background - #272822 - bracketContentsForeground - #F8F8F2A5 - bracketContentsOptions - underline - bracketsForeground - #F8F8F2A5 - bracketsOptions - underline - caret - #F8F8F0 - findHighlight - #FFE792 - findHighlightForeground - #000000 - foreground - #F8F8F2 - invisibles - #3B3A32 - lineHighlight - #3E3D32 - selection - #49483E - selectionBorder - #222218 - tagsOptions - stippled_underline - - - - name - Comment - scope - comment - settings - - foreground - #75715E - - - - name - String - scope - string - settings - - foreground - #E6DB74 - - - - name - Number - scope - constant.numeric - settings - - foreground - #AE81FF - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #AE81FF - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #AE81FF - - - - name - Variable - scope - variable - settings - - fontStyle - - foreground - #ffffff - - - - name - Keyword - scope - keyword - settings - - foreground - #F92672 - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #F92672 - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #A6E22E - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #A6E22E - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #A6E22E - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #FD971F - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #F92672 - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #A6E22E - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #66D9EF - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #66D9EF - - - - name - Library class/type - scope - support.type, support.class - settings - - fontStyle - italic - foreground - #66D9EF - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - Invalid - scope - invalid - settings - - background - #F92672 - fontStyle - - foreground - #F8F8F0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #AE81FF - foreground - #F8F8F0 - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #CFCFC2 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715E - - - - name - diff.deleted - scope - markup.deleted - settings - - fontStyle - - foreground - #F92672 - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #A6E22E - - - - name - diff.changed - scope - markup.changed - settings - - fontStyle - - foreground - #E6DB74 - - - - name - HTML: Script - scope - constant.numeric.line-number.find-in-files - match - settings - - fontStyle - italic - foreground - #AE81FFA0 - - - - name - HTML: Attribute punctuation - scope - entity.name.filename.find-in-files - settings - - fontStyle - - foreground - #E6DB74 - - - - name - HTML: Attributes - scope - text.html.basic entity.other.attribute-name.html - settings - - foreground - #a6e22e - - - - name - HTML: Quotation Marks - scope - text.html.basic meta.tag.structure.any.html punctuation.definition.string.begin.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html - settings - - fontStyle - - foreground - #ffffff - - - - name - HTML: Tags punctuation - scope - punctuation.definition.tag.end, punctuation.definition.tag.begin, punctuation.definition.tag - settings - - foreground - #ffffff - - - - name - Handlebars: Variable - scope - variable.parameter.handlebars - settings - - foreground - #f6aa11 - - - - name - Handlebars: Constant - scope - support.constant.handlebars, meta.function.block.start.handlebars - settings - - foreground - #66d9ef - - - - name - CSS: @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #f6aa11 - - - - name - CSS: #Id - scope - meta.selector.css entity.other.attribute-name.id - settings - - foreground - #f6aa11 - - - - name - CSS: .class - scope - meta.selector.css entity.other.attribute-name.class - settings - - foreground - #a6e22e - - - - name - CSS: Property Name - scope - support.type.property-name.css - settings - - foreground - #66d9ef - - - - name - CSS: Constructor Argument - scope - meta.constructor.argument.css - settings - - foreground - #f6aa11 - - - - name - CSS: {} - scope - punctuation.section.property-list.css - settings - - foreground - #ffffff - - - - name - CSS: Tag Punctuation - scope - punctuation.definition.tag.css - settings - - foreground - #f92672 - - - - name - CSS: : , - scope - punctuation.separator.key-value.css, punctuation.terminator.rule.css - settings - - fontStyle - - foreground - #ffffff - - - - name - CSS :pseudo - scope - entity.other.attribute-name.pseudo-element.css, entity.other.attribute-name.pseudo-class.css, entity.other.attribute-name.pseudo-selector.css - settings - - fontStyle - - foreground - #a6e22e - - - - name - LESS variables - scope - variable.other.less - settings - - foreground - #ffffff - - - - name - LESS mixins - scope - entity.other.less.mixin - settings - - fontStyle - italic - foreground - #e0fdce - - - - name - LESS: Extend - scope - entity.other.attribute-name.pseudo-element.less - settings - - fontStyle - - foreground - #ff9117 - - - - name - JS: this - scope - variable.language.this.js - settings - - foreground - #ae81ff - - - - name - JS: Function Name - scope - meta.function.js, entity.name.function.js, support.function.dom.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: Method Name - scope - entity.name.method.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: Accessor Name - scope - entity.name.accessor.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: Storage Type - scope - storage.type.js - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - JS: Source - scope - text.html.basic, source.js.embedded.html - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: Function - scope - storage.type.function.js - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - JS: Numeric Constant - scope - constant.numeric.js - settings - - foreground - #ae81ff - - - - name - JS: [] - scope - meta.brace.square.js - settings - - foreground - #ffffff - - - - name - JS: () - scope - meta.brace.round, punctuation.definition.parameters.begin.js, punctuation.definition.parameters.end.js - settings - - foreground - #ffffff - - - - name - JS: {} - scope - meta.brace.curly.js - settings - - foreground - #ffffff - - - - name - JS: Template String - scope - punctuation.template-string.element.begin.js, punctuation.template-string.element.end.js - settings - - foreground - #e69f66 - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #cfcfc2 - - - - name - CoffeeScript: Template String - scope - punctuation.section.embedded.coffee - settings - - foreground - #e69f66 - - - - name - CoffeeScript: this - scope - variable.language.this.coffee - settings - - foreground - #ae81ff - - - - name - PHP: [] - scope - keyword.operator.index-start.php, keyword.operator.index-end.php - settings - - foreground - #ffffff - - - - name - PHP: Array - scope - meta.array.php - settings - - foreground - #ffffff - - - - name - PHP: Array() - scope - meta.array.php support.function.construct.php, meta.array.empty.php support.function.construct.php - settings - - fontStyle - - foreground - #e42e70 - - - - name - PHP: Array Construct - scope - support.function.construct.php - settings - - foreground - #e42e70 - - - - name - PHP: Storage Type Function - scope - storage.type.function.php - settings - - foreground - #f92672dd - - - - name - PHP: Numeric Constant - scope - constant.numeric.php - settings - - foreground - #be84ff - - - - name - PHP: New - scope - keyword.other.new.php - settings - - foreground - #f6aa11 - - - - name - PHP: :: - scope - support.class.php - settings - - fontStyle - - foreground - #ffffff - - - - name - PHP: Other Property - scope - variable.other.property.php - settings - - foreground - #f6aa11 - - - - name - PHP: Class - scope - storage.modifier.extends.php, storage.type.class.php, keyword.operator.class.php - settings - - foreground - #a6e22e - - - - name - PHP: Inherited Class - scope - meta.other.inherited-class.php - settings - - fontStyle - - foreground - #a6e22e - - - - name - PHP: Storage Type - scope - storage.type.php - settings - - foreground - #66d9ef - - - - name - PHP: Function - scope - entity.name.function.php - settings - - foreground - #66d9ef - - - - name - PHP: Function Construct - scope - support.function.construct.php - settings - - foreground - #a6e22e - - - - name - PHP: Function Call - scope - entity.name.type.class.php, meta.function-call.php, meta.function-call.static.php, meta.function-call.object.php - settings - - foreground - #ffffff - - - - name - PHP: Comment - scope - keyword.other.phpdoc - settings - - fontStyle - - foreground - #7c7865 - - - - name - PHP: Source Emebedded - scope - source.php.embedded.block.html - settings - - foreground - #ffffff - - - - name - Invalid - scope - invalid - settings - - background - #f92672 - fontStyle - - foreground - #f8f8f0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #ae81ff - foreground - #f8f8f0 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715e - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #f92672 - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #a6e22e - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #e6db74 - - - - name - diff.range - scope - meta.diff, meta.diff.range - settings - - foreground - #3bc0f0 - - - - name - Python: storage - scope - storage.type.class.python, storage.type.function.python, storage.modifier.global.python - settings - - fontStyle - - foreground - #3bc0f0 - - - - name - Python: import - scope - keyword.control.import.python, keyword.control.import.from.python - settings - - foreground - #f92672dd - - - - name - Python: Support.exception - scope - support.type.exception.python - settings - - foreground - #66d9ef - - - - name - Python: function call - scope - meta.function-call.python - punctuation - meta.function-call.arguments.python - settings - - foreground - #A6E22E - - - - name - Perl: variables - scope - punctuation.definition.variable.perl, variable.other.readwrite.global.perl, variable.other.predefined.perl, keyword.operator.comparison.perl - settings - - foreground - #e42e70 - - - - name - Perl: functions - scope - support.function.perl - settings - - foreground - #66d9ef - - - - name - Perl: comments - scope - comment.line.number-sign.perl - settings - - fontStyle - italic - foreground - #75715e - - - - name - Perl: quotes - scope - punctuation.definition.string.begin.perl, punctuation.definition.string.end.perl - settings - - foreground - #ffffff - - - - name - Perl: char - scope - constant.character.escape.perl - settings - - foreground - #dc322f - - - - name - Ruby: Constant - scope - constant.language.ruby, constant.numeric.ruby - settings - - foreground - #ae81ff - - - - name - Ruby: Variable definition - scope - punctuation.definition.variable.ruby - settings - - fontStyle - - foreground - #f6aa11 - - - - name - Ruby: Function Name - scope - meta.function.method.with-arguments.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Variable - scope - variable.language.ruby - settings - - foreground - #ffffff - - - - name - Ruby: Function - scope - entity.name.function.ruby - settings - - foreground - #f6aa11 - - - - name - Ruby: Keyword Control - scope - keyword.control.ruby, keyword.control.def.ruby - settings - - fontStyle - bold - foreground - #a6e22e - - - - name - Ruby: Class - scope - keyword.control.class.ruby, meta.class.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Class Name - scope - entity.name.type.class.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: Keyword - scope - keyword.control.ruby - settings - - fontStyle - - foreground - #a6e22e - - - - name - Ruby: Support Class - scope - support.class.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Constant Other - scope - variable.other.constant.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: :symbol - scope - constant.other.symbol.ruby - settings - - fontStyle - - foreground - #f6f080 - - - - name - Ruby: Punctuation Section - scope - punctuation.section.embedded.ruby, punctuation.definition.string.begin.ruby, punctuation.definition.string.end.ruby - settings - - foreground - #f92672 - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #e42e70 - - - - name - Markdown: plain - scope - text.html.markdown - settings - - foreground - #ffffff - - - - name - Markup: raw inline - scope - text.html.markdown markup.raw.inline - settings - - foreground - #ec3533 - - - - name - Markdown: linebreak - scope - text.html.markdown meta.dummy.line-break - settings - - foreground - #e0eddd - - - - name - Markdown: heading - scope - markdown.heading, markup.heading | markup.heading entity.name, markup.heading.markdown punctuation.definition.heading.markdown - settings - - fontStyle - - foreground - #fd971f - - - - name - Markup: Heading 1 - scope - markup.heading.1.markdown - settings - - fontStyle - - foreground - #fc951e - - - - name - Markup: Heading 2 - scope - markup.heading.2.markdown - settings - - fontStyle - - foreground - #e8891c - - - - name - Markup: Heading 3 - scope - markup.heading.3.markdown - settings - - fontStyle - - foreground - #d47d19 - - - - name - Markup: Heading 4 - scope - markup.heading.4.markdown - settings - - fontStyle - - foreground - #bf7117 - - - - name - Markup: Heading 5 - scope - markup.heading.5.markdown - settings - - fontStyle - - foreground - #ab6515 - - - - name - Markup: Heading 6 - scope - markup.heading.6.markdown - settings - - fontStyle - - foreground - #965912 - - - - name - Markup: italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #e42e70 - - - - name - Markup: bold - scope - markup.bold - settings - - fontStyle - bold - foreground - #f92672 - - - - name - Markup: underline - scope - markup.underline - settings - - fontStyle - underline - foreground - #a6e22e - - - - name - Markup: strike - scope - markup.strike - settings - - fontStyle - - foreground - #cc4273 - - - - name - Markdown: Blockquote - scope - markup.quote, punctuation.definition.blockquote.markdown - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - Markup: Quote - scope - markup.quote - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - Markdown: Link - scope - string.other.link.title.markdown - settings - - fontStyle - underline - foreground - #66d9ef - - - - name - Markup: Raw block - scope - markup.raw.block - settings - - foreground - #ae81ff - - - - name - Markdown: List Items Punctuation - scope - punctuation.definition.list_item.markdown - settings - - foreground - #ffffff - - - - name - Markdown: Raw Block fenced - scope - markup.raw.block.fenced.markdown - settings - - background - #222 - foreground - #ffffff - - - - name - Markdown: Fenced Bode Block - scope - punctuation.definition.fenced.markdown, variable.language.fenced.markdown - settings - - background - #222222 - foreground - #636050 - - - - name - Markdown: Fenced Language - scope - variable.language.fenced.markdown - settings - - fontStyle - - foreground - #7c7865 - - - - name - Markdown: Separator - scope - meta.separator - settings - - background - #ffffff0f - fontStyle - bold - foreground - #ffffff33 - - - - name - Markup: table - scope - markup.table - settings - - background - #ff3a281a - foreground - #b42a1d - - - - name - Other: Removal - scope - other.package.exclude, other.remove - settings - - fontStyle - - foreground - #d3201f - - - - name - Shell: builtin - scope - support.function.builtin.shell - settings - - foreground - #a6e22e - - - - name - Shell: variable - scope - variable.other.normal.shell - settings - - foreground - #66d9ef - - - - name - Shell: DOTFILES - scope - source.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: meta scope in loop - scope - meta.scope.for-in-loop.shell, variable.other.loop.shell - settings - - fontStyle - - foreground - #fd971f - - - - name - Shell: Function name - scope - entity.name.function.shell - settings - - fontStyle - - foreground - #a6e22e - - - - name - Shell: Quotation Marks - scope - punctuation.definition.string.end.shell, punctuation.definition.string.begin.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: Meta Block - scope - meta.scope.case-block.shell, meta.scope.case-body.shell - settings - - fontStyle - - foreground - #fd971f - - - - name - Shell: [] - scope - punctuation.definition.logical-expression.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: Comment - scope - comment.line.number-sign.shell - settings - - fontStyle - italic - foreground - #7c7865 - - - - name - Makefile: Comment - scope - comment.line.number-sign.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Comment punctuation - scope - punctuation.definition.comment.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Variables - scope - variable.other.makefile - settings - - fontStyle - - foreground - #f92672 - - - - name - Makefile: Function name - scope - entity.name.function.makefile - settings - - fontStyle - - foreground - #a6e22e - - - - name - Makefile: Function - scope - meta.function.makefile - settings - - fontStyle - - foreground - #66d9ef - - - - name - LaTeX: Math Variables - scope - variable.other.math.tex - settings - - foreground - #E6DB74 - - - - name - GitGutter deleted - scope - markup.deleted.git_gutter - settings - - foreground - #F92672 - - - - name - GitGutter inserted - scope - markup.inserted.git_gutter - settings - - foreground - #A6E22E - - - - name - GitGutter changed - scope - markup.changed.git_gutter - settings - - foreground - #FC951E - - - - name - GitGutter ignored - scope - markup.ignored.git_gutter - settings - - foreground - #565656 - - - - name - GitGutter untracked - scope - markup.untracked.git_gutter - settings - - foreground - #565656 - - - - name - Nginx path - scope - string.other.path.nginx - settings - - foreground - #fc951e - - - - uuid - 6d3d6dae-b9c2-48ad-9e2a-71fefe15be64 - - diff --git a/assets/themes/Monokai Extended.tmTheme b/assets/themes/Monokai Extended.tmTheme deleted file mode 100644 index 9c2aa3e..0000000 --- a/assets/themes/Monokai Extended.tmTheme +++ /dev/null @@ -1,1878 +0,0 @@ - - - - - author - github.com/jonschlinkert - colorSpaceName - sRGB - gutterSettings - - background - #073642 - divider - #586e75 - foreground - #839496 - selectionBackground - #586e75 - selectionForeground - #a6e22e - - name - Monokai Extended - semanticClass - theme.dark.monokai_extended - settings - - - settings - - activeGuide - #9d550fb0 - background - #222222 - bracketContentsForeground - #f8f8f2a5 - bracketContentsOptions - underline - bracketsForeground - #f8f8f2a5 - bracketsOptions - underline - caret - #f8f8f0 - findHighlight - #ffe792 - findHighlightForeground - #000000 - foreground - #f8f8f2 - invisibles - #3b3a32 - lineHighlight - #333333 - selection - #444444 - selectionBorder - #1c1c1c - tagsOptions - stippled_underline - - - - name - Comment - scope - comment - settings - - foreground - #75715e - - - - name - String - scope - string - settings - - foreground - #e6db74 - - - - name - Number - scope - constant.numeric - settings - - foreground - #be84ff - - - - name - Constant: Built-in - scope - constant.language, meta.preprocessor - settings - - foreground - #be84ff - - - - name - Constant: User-defined - scope - constant.character, constant.other - settings - - foreground - #be84ff - - - - name - Variable - scope - variable.language, variable.other - settings - - foreground - #ffffff - - - - name - Keyword - scope - keyword - settings - - foreground - #f92672 - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #f92672 - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #66D9EF - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #a6e22e - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #a6e22e - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #fd971f - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #f92672 - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #a6e22e - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #66d9ef - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #66d9ef - - - - name - Library class/type - scope - support.type, support.class - settings - - fontStyle - italic - foreground - #A6E22E - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - String constant - scope - string constant - settings - - foreground - #66d9ef - - - - name - String.regexp - scope - string.regexp - settings - - foreground - #f6aa11 - - - - name - String variable - scope - string variable - settings - - foreground - #ffffff - - - - name - Variable: punctuation - scope - punctuation.definition.variable - settings - - foreground - #ffffff - - - - name - Entity - scope - entity - settings - - fontStyle - - foreground - #a6e22e - - - - name - HTML: Doctype/XML Processing - scope - 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 - settings - - foreground - #c8cecc - - - - name - HTML: Comment Block - scope - comment.block.html - settings - - fontStyle - - foreground - #7c7865 - - - - name - HTML: Script - scope - entity.name.tag.script.html - settings - - fontStyle - italic - - - - name - HTML: Attribute punctuation - scope - text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html - settings - - fontStyle - - foreground - #a6e22e - - - - name - HTML: Attributes - scope - text.html.basic entity.other.attribute-name.html - settings - - foreground - #a6e22e - - - - name - HTML: Quotation Marks - scope - text.html.basic meta.tag.structure.any.html punctuation.definition.string.begin.html, punctuation.definition.string.begin.html, punctuation.definition.string.end.html - settings - - fontStyle - - foreground - #ffffff - - - - name - HTML: Tags punctuation - scope - punctuation.definition.tag.end, punctuation.definition.tag.begin, punctuation.definition.tag - settings - - foreground - #ffffff - - - - name - Handlebars: Variable - scope - variable.parameter.handlebars - settings - - foreground - #f6aa11 - - - - name - Handlebars: Constant - scope - support.constant.handlebars, meta.function.block.start.handlebars - settings - - foreground - #66d9ef - - - - name - CSS: @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #f6aa11 - - - - name - CSS: #Id - scope - meta.selector.css entity.other.attribute-name.id - settings - - foreground - #f6aa11 - - - - name - CSS: .class - scope - meta.selector.css entity.other.attribute-name.class - settings - - foreground - #a6e22e - - - - name - CSS: Property Name - scope - support.type.property-name.css - settings - - foreground - #66d9ef - - - - name - CSS: Constructor Argument - scope - meta.constructor.argument.css - settings - - foreground - #f6aa11 - - - - name - CSS: {} - scope - punctuation.section.property-list.css - settings - - foreground - #ffffff - - - - name - CSS: Tag Punctuation - scope - punctuation.definition.tag.css - settings - - foreground - #f92672 - - - - name - CSS: : , - scope - punctuation.separator.key-value.css, punctuation.terminator.rule.css - settings - - fontStyle - - foreground - #ffffff - - - - name - CSS :pseudo - scope - entity.other.attribute-name.pseudo-element.css, entity.other.attribute-name.pseudo-class.css, entity.other.attribute-name.pseudo-selector.css - settings - - fontStyle - - foreground - #a6e22e - - - - name - LESS variables - scope - variable.other.less - settings - - foreground - #ffffff - - - - name - LESS mixins - scope - entity.other.less.mixin - settings - - fontStyle - italic - foreground - #e0fdce - - - - name - LESS: Extend - scope - entity.other.attribute-name.pseudo-element.less - settings - - fontStyle - - foreground - #ff9117 - - - - name - JS: Instance constructor - scope - meta.instance.constructor meta.function-call.constructor.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: es6 template delimiters ${} - scope - meta.template.expression.js punctuation.definition.template-expression.begin.js, meta.template.expression.js punctuation.definition.template-expression.end.js, meta.template.expression.js punctuation.accessor - settings - - fontStyle - - foreground - #AFF132 - - - - name - JS: Function Name - scope - meta.function.js, entity.name.function.js, support.function.dom.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: Param commas - scope - source.js meta.function.js punctuation.separator.parameter.function.js - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: Object dot notation - scope - meta.property.object.js, keyword.operator.accessor.js - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: colons - scope - source.js meta.group.braces.curly constant.other.object.key.js punctuation.separator.key-value.js - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: unquoted string - scope - source.js meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: receiver - scope - support.type.object.module.js, source.js meta.function.declaration.js support.class.js - settings - - fontStyle - - foreground - #66d9ef - - - - name - JS: receiver property - scope - support.type.object.module.js support.type.object.module.js - settings - - fontStyle - - foreground - #a6e22e - - - - name - JS: Storage Type - scope - storage.type.js - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - JS: Source - scope - text.html.basic source.js.embedded.html - settings - - fontStyle - - foreground - #ffffff - - - - name - JS: Function - scope - storage.type.function.js - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - JS: Numeric Constant - scope - constant.numeric.js - settings - - foreground - #ae81ff - - - - name - JS: Literal language variable - scope - variable.language.arguments.js, variable.language.super.js, variable.language.this.js, variable.language.self.js, variable.language.proto.js, variable.language.constructor.js, variable.language.prototype.js - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - JS: [] - scope - meta.brace.square.js - settings - - foreground - #ffffff - - - - name - JS: () - scope - meta.brace.round, punctuation.definition.parameters.begin.js, punctuation.definition.parameters.end.js, punctuation.definition.group - settings - - foreground - #ffffff - - - - name - JS: object literal {} - scope - meta.brace.curly.js, meta.object-literal.js - settings - - foreground - #ffffff - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #cfcfc2 - - - - name - CoffeeScript String Interpolated - scope - punctuation.section.embedded.coffee - settings - - foreground - #e69f66 - - - - name - PHP: [] - scope - keyword.operator.index-start.php, keyword.operator.index-end.php - settings - - foreground - #ffffff - - - - name - PHP: Array - scope - meta.array.php - settings - - foreground - #ffffff - - - - name - PHP: Array() - scope - meta.array.php support.function.construct.php, meta.array.empty.php support.function.construct.php - settings - - fontStyle - - foreground - #e42e70 - - - - name - PHP: Array Construct - scope - support.function.construct.php - settings - - foreground - #e42e70 - - - - name - PHP: Storage Type Function - scope - storage.type.function.php - settings - - foreground - #f92672dd - - - - name - PHP: Numeric Constant - scope - constant.numeric.php - settings - - foreground - #be84ff - - - - name - PHP: New - scope - keyword.other.new.php - settings - - foreground - #f6aa11 - - - - name - PHP: :: - scope - support.class.php - settings - - fontStyle - - foreground - #ffffff - - - - name - PHP: Other Property - scope - variable.other.property.php - settings - - foreground - #f6aa11 - - - - name - PHP: Class - scope - storage.modifier.extends.php, storage.type.class.php, keyword.operator.class.php - settings - - foreground - #a6e22e - - - - name - PHP: Inherited Class - scope - meta.other.inherited-class.php - settings - - fontStyle - - foreground - #a6e22e - - - - name - PHP: Storage Type - scope - storage.type.php - settings - - foreground - #66d9ef - - - - name - PHP: Function - scope - entity.name.function.php - settings - - foreground - #66d9ef - - - - name - PHP: Function Construct - scope - support.function.construct.php - settings - - foreground - #a6e22e - - - - name - PHP: Function Call - scope - entity.name.type.class.php, meta.function-call.php, meta.function-call.static.php, meta.function-call.object.php - settings - - foreground - #ffffff - - - - name - PHP: Comment - scope - keyword.other.phpdoc - settings - - fontStyle - - foreground - #7c7865 - - - - name - PHP: Source Emebedded - scope - source.php.embedded.block.html - settings - - foreground - #ffffff - - - - name - Invalid - scope - invalid - settings - - background - #f92672 - fontStyle - - foreground - #f8f8f0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #ae81ff - foreground - #f8f8f0 - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #75715e - - - - name - diff.deleted - scope - markup.deleted - settings - - foreground - #f92672 - - - - name - diff.inserted - scope - markup.inserted - settings - - foreground - #a6e22e - - - - name - diff.changed - scope - markup.changed - settings - - foreground - #e6db74 - - - - name - diff.range - scope - meta.diff, meta.diff.range - settings - - foreground - #3bc0f0 - - - - name - Python: storage - scope - storage.type.class.python, storage.type.function.python, storage.modifier.global.python - settings - - fontStyle - - foreground - #a6e22e - - - - name - Python: import - scope - keyword.control.import.python, keyword.control.import.from.python - settings - - foreground - #f92672dd - - - - name - Python: Support.exception - scope - support.type.exception.python - settings - - foreground - #66d9ef - - - - name - Perl: variables - scope - punctuation.definition.variable.perl, variable.other.readwrite.global.perl, variable.other.predefined.perl, keyword.operator.comparison.perl - settings - - foreground - #e42e70 - - - - name - Perl: functions - scope - support.function.perl - settings - - foreground - #66d9ef - - - - name - Perl: comments - scope - comment.line.number-sign.perl - settings - - fontStyle - italic - foreground - #75715e - - - - name - Perl: quotes - scope - punctuation.definition.string.begin.perl, punctuation.definition.string.end.perl - settings - - foreground - #ffffff - - - - name - Perl: char - scope - constant.character.escape.perl - settings - - foreground - #dc322f - - - - name - Ruby: Constant - scope - constant.language.ruby, constant.numeric.ruby - settings - - foreground - #ae81ff - - - - name - Ruby: Variable definition - scope - punctuation.definition.variable.ruby - settings - - fontStyle - - foreground - #f6aa11 - - - - name - Ruby: Function Name - scope - meta.function.method.with-arguments.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Variable - scope - variable.language.ruby - settings - - foreground - #ffffff - - - - name - Ruby: Function - scope - entity.name.function.ruby - settings - - foreground - #f6aa11 - - - - name - Ruby: Keyword Control - scope - keyword.control.ruby, keyword.control.def.ruby - settings - - fontStyle - bold - foreground - #a6e22e - - - - name - Ruby: Class - scope - keyword.control.class.ruby, meta.class.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Class Name - scope - entity.name.type.class.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: Keyword - scope - keyword.control.ruby - settings - - fontStyle - - foreground - #a6e22e - - - - name - Ruby: Support Class - scope - support.class.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #a6e22e - - - - name - Ruby: Constant Other - scope - variable.other.constant.ruby - settings - - fontStyle - - foreground - #66d9ef - - - - name - Ruby: :symbol - scope - constant.other.symbol.ruby - settings - - fontStyle - - foreground - #f6f080 - - - - name - Ruby: Punctuation Section - scope - punctuation.section.embedded.ruby, punctuation.definition.string.begin.ruby, punctuation.definition.string.end.ruby - settings - - foreground - #f92672 - - - - name - Ruby: Special Method - scope - keyword.other.special-method.ruby - settings - - foreground - #e42e70 - - - - name - Markdown: plain - scope - text.html.markdown - settings - - foreground - #ffffff - - - - name - Markup: raw inline - scope - text.html.markdown markup.raw.inline - settings - - foreground - #ec3533 - - - - name - Markdown: linebreak - scope - text.html.markdown meta.dummy.line-break - settings - - foreground - #e0eddd - - - - name - Markdown: heading - scope - markdown.heading, markup.heading | markup.heading entity.name, markup.heading.markdown punctuation.definition.heading.markdown - settings - - fontStyle - - foreground - #fd971f - - - - name - Markup: italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #e42e70 - - - - name - Markup: bold - scope - markup.bold - settings - - fontStyle - bold - foreground - #f92672 - - - - name - Markup: underline - scope - markup.underline - settings - - fontStyle - underline - foreground - #a6e22e - - - - name - Markup: strike - scope - markup.strike - settings - - fontStyle - - foreground - #cc4273 - - - - name - Markdown: Blockquote - scope - markup.quote, punctuation.definition.blockquote.markdown - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - Markup: Quote - scope - markup.quote - settings - - fontStyle - italic - foreground - #66d9ef - - - - name - Markdown: Link - scope - string.other.link.title.markdown - settings - - fontStyle - underline - foreground - #66d9ef - - - - name - Markup: Raw block - scope - markup.raw.block - settings - - foreground - #ae81ff - - - - name - Markdown: List Items Punctuation - scope - punctuation.definition.list_item.markdown - settings - - foreground - #777777 - - - - name - Markdown: Raw Block fenced - scope - markup.raw.block.fenced.markdown - settings - - background - #222 - foreground - #ffffff - - - - name - Markdown: Fenced Bode Block - scope - punctuation.definition.fenced.markdown, variable.language.fenced.markdown - settings - - background - #222222 - foreground - #636050 - - - - name - Markdown: Fenced Language - scope - variable.language.fenced.markdown - settings - - fontStyle - - foreground - #7c7865 - - - - name - Markdown: Separator - scope - meta.separator - settings - - background - #ffffff0f - fontStyle - bold - foreground - #ffffff33 - - - - name - Markup: table - scope - markup.table - settings - - background - #ff3a281a - foreground - #b42a1d - - - - name - LaTeX: Math Variables - scope - variable.other.math.tex - settings - - foreground - #e6db74 - - - - name - Other: Removal - scope - other.package.exclude, other.remove - settings - - fontStyle - - foreground - #d3201f - - - - name - Shell: builtin - scope - support.function.builtin.shell - settings - - foreground - #a6e22e - - - - name - Shell: variable - scope - variable.other.normal.shell - settings - - foreground - #66d9ef - - - - name - Shell: DOTFILES - scope - source.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: meta scope in loop - scope - meta.scope.for-in-loop.shell, variable.other.loop.shell - settings - - fontStyle - - foreground - #fd971f - - - - name - Shell: Function name - scope - entity.name.function.shell - settings - - fontStyle - - foreground - #a6e22e - - - - name - Shell: Quotation Marks - scope - punctuation.definition.string.end.shell, punctuation.definition.string.begin.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: Meta Block - scope - meta.scope.case-block.shell, meta.scope.case-body.shell - settings - - fontStyle - - foreground - #fd971f - - - - name - Shell: [] - scope - punctuation.definition.logical-expression.shell - settings - - fontStyle - - foreground - #ffffff - - - - name - Shell: Comment - scope - comment.line.number-sign.shell - settings - - fontStyle - italic - foreground - #7c7865 - - - - name - Makefile: Comment - scope - comment.line.number-sign.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Comment punctuation - scope - punctuation.definition.comment.makefile - settings - - fontStyle - - foreground - #7c7865 - - - - name - Makefile: Variables - scope - variable.other.makefile - settings - - fontStyle - - foreground - #f92672 - - - - name - Makefile: Function name - scope - entity.name.function.makefile - settings - - fontStyle - - foreground - #a6e22e - - - - name - Makefile: Function - scope - meta.function.makefile - settings - - fontStyle - - foreground - #66d9ef - - - - name - GitGutter deleted - scope - markup.deleted.git_gutter - settings - - foreground - #F92672 - - - - name - GitGutter inserted - scope - markup.inserted.git_gutter - settings - - foreground - #A6E22E - - - - name - GitGutter changed - scope - markup.changed.git_gutter - settings - - foreground - #FC951E - - - - name - GitGutter ignored - scope - markup.ignored.git_gutter - settings - - foreground - #565656 - - - - name - GitGutter untracked - scope - markup.untracked.git_gutter - settings - - foreground - #565656 - - - - name - Nginx path - scope - string.other.path.nginx - settings - - foreground - #fc951e - - - - uuid - 1D07ACC0-832F-11E2-9E96-0800200C9A66 - - diff --git a/assets/themes/OneHalfDark.tmTheme b/assets/themes/OneHalfDark.tmTheme deleted file mode 100644 index b16050c..0000000 --- a/assets/themes/OneHalfDark.tmTheme +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - name - OneHalfLight - semanticClass - theme.dark.one_half_dark - uuid - - colorSpaceName - sRGB - author - Son A. Pham <sp@sonpham.me> - comment - A dark iTerm 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 (Neo)Vim and Sublime Text. - settings - - - settings - - fontStyle - - foreground - #dcdfe4 - background - #282c34 - bracketsOptions - underline - caret - #a3b3cc - gutter - #282c34 - gutterForeground - #919baa - invisibles - #5c6370 - lineHighlight - #313640 - selection - #474e5d - selectionBorder - #474e5d - tagsForeground - - tagsOptions - stippled_underline - bracketContentsOptions - underline - - - - name - Comments - scope - comment - settings - - foreground - #5c6370 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #dcdfe4 - - - - name - Delimiters - scope - none - settings - - foreground - - - - - name - Operators - scope - keyword.operator - settings - - foreground - - - - - name - Keywords - scope - keyword - settings - - foreground - #c678dd - - - - name - Variables - scope - variable - settings - - foreground - #e06c75 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #61afef - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #e5c07b - - - - name - Classes - scope - meta.class - settings - - foreground - #e5c07b - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #61afef - - - - name - Storage - scope - storage - settings - - foreground - #c678dd - - - - name - Support - scope - support.function - settings - - foreground - #61afef - - - - name - Strings, Inherited Class - scope - string - settings - - foreground - #98c379 - - - - name - Integers - scope - constant.numeric - settings - - foreground - #e5c07b - - - - name - Floats - scope - none - settings - - foreground - #e5c07b - - - - name - Boolean - scope - none - settings - - foreground - #e5c07b - - - - name - Constants - scope - constant - settings - - foreground - #e5c07b - - - - name - HTML: Tags - scope - entity.name.tag - settings - - foreground - #e06c75 - - - - name - HTML: Tag attributes - scope - entity.other.attribute-name - settings - - foreground - #e5c07b - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #e5c07b - - - - name - Selector - scope - meta.selector - settings - - foreground - #c678dd - - - - name - Markdown: Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #61afef - - - - name - Markdown: Bold - scope - markup.bold, punctuation.definition.bold - settings - - foreground - #c678dd - - - - name - Markdown: Italic - scope - markup.italic, punctuation.definition.italic - settings - - foreground - #c678dd - - - - name - Markdown: Code - scope - markup.raw.inline - settings - - foreground - #98c379 - - - - name - Markdown: Link Text - scope - string.other.link, punctuation.definition.string.end.markdown - settings - - foreground - - - - - name - Markdown: Link Url - scope - meta.link - settings - - foreground - #98c379 - - - - name - Markdown: Lists - scope - markup.list - settings - - foreground - - - - - name - Markdown: Quotes - scope - markup.quote - settings - - foreground - #98c379 - - - - name - Java Source - scope - source.java meta.class.java meta.method.java - settings - - foreground - #dcdfe4 - - - - name - Java Class Body - scope - source.java meta.class.java meta.class.body.java - settings - - foreground - #dcdfe4 - - - - name - Javascript: Function Arguments - scope - source.js meta.function.js variable.parameter.function.js - settings - - foreground - #e06c75 - - - - name - Javascript: New Variables - scope - source.js variable.other.readwrite.js - settings - - foreground - #e06c75 - - - - name - Javascript: Variables - scope - source.js variable.other.object.js - settings - - foreground - #dcdfe4 - - - - name - Javascript: Variables in Function Calls - scope - source.js meta.function-call.method.js variable.other.readwrite.js - settings - - foreground - #e06c75 - - - - name - Javascript: New Block Variables - scope - source.js meta.block.js variable.other.readwrite.js - settings - - foreground - #e06c75 - - - - name - Javascript: Block Variables - scope - source.js meta.block.js variable.other.object.js - settings - - foreground - #dcdfe4 - - - - name - Javascript: Block Variables in Function Calls - scope - source.js meta.block.js meta.function-call.method.js variable.other.readwrite.js - settings - - foreground - #dcdfe4 - - - - name - Javascript: Function Calls - scope - source.js meta.function-call.method.js variable.function.js - settings - - foreground - #dcdfe4 - - - - name - Javascript: Properties - scope - source.js meta.property.object.js entity.name.function.js - settings - - foreground - #61afef - - - - name - Javascript: Prototypes - scope - source.js support.constant.prototype.js - settings - - foreground - #dcdfe4 - - - - name - Separator - scope - meta.separator - settings - - background - - foreground - - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #98c379 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #e06c75 - - - - name - Changed - scope - markup.changed - settings - - foreground - #e5c07b - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #98c379 - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #56b6c2 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - - - - - name - Illegal - scope - invalid.illegal - settings - - background - #e06c75 - foreground - #dcdfe4 - - - - name - Broken - scope - invalid.broken - settings - - background - #e5c07b - foreground - #dcdfe4 - - - - name - Deprecated - scope - invalid.deprecated - settings - - background - #e5c07b - foreground - #dcdfe4 - - - - name - Unimplemented - scope - invalid.unimplemented - settings - - background - #c678dd - foreground - #dcdfe4 - - - - - \ No newline at end of file diff --git a/assets/themes/OneHalfLight.tmTheme b/assets/themes/OneHalfLight.tmTheme deleted file mode 100644 index a18ec7b..0000000 --- a/assets/themes/OneHalfLight.tmTheme +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - name - OneHalfLight - semanticClass - theme.light.one_half_light - uuid - - colorSpaceName - sRGB - author - Son A. Pham <sp@sonpham.me> - comment - A light iTerm 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 (Neo)Vim and Sublime Text. - settings - - - settings - - fontStyle - - foreground - #383a42 - background - #fafafa - bracketsOptions - underline - caret - #383a42 - gutter - #fafafa - gutterForeground - #d4d4d4 - invisibles - #a0a1a7 - lineHighlight - #f0f0f0 - selection - #bfceff - selectionBorder - #bfceff - tagsForeground - - tagsOptions - stippled_underline - bracketContentsOptions - underline - - - - name - Comments - scope - comment - settings - - foreground - #a0a1a7 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #383a42 - - - - name - Delimiters - scope - none - settings - - foreground - - - - - name - Operators - scope - keyword.operator - settings - - foreground - - - - - name - Keywords - scope - keyword - settings - - foreground - #a626a4 - - - - name - Variables - scope - variable - settings - - foreground - #e45649 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #0184bc - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #c18401 - - - - name - Classes - scope - meta.class - settings - - foreground - #c18401 - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #0184bc - - - - name - Storage - scope - storage - settings - - foreground - #a626a4 - - - - name - Support - scope - support.function - settings - - foreground - #0184bc - - - - name - Strings, Inherited Class - scope - string - settings - - foreground - #50a14f - - - - name - Integers - scope - constant.numeric - settings - - foreground - #c18401 - - - - name - Floats - scope - none - settings - - foreground - #c18401 - - - - name - Boolean - scope - none - settings - - foreground - #c18401 - - - - name - Constants - scope - constant - settings - - foreground - #c18401 - - - - name - HTML: Tags - scope - entity.name.tag - settings - - foreground - #e45649 - - - - name - HTML: Tag attributes - scope - entity.other.attribute-name - settings - - foreground - #c18401 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #c18401 - - - - name - Selector - scope - meta.selector - settings - - foreground - #a626a4 - - - - name - Markdown: Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #0184bc - - - - name - Markdown: Bold - scope - markup.bold, punctuation.definition.bold - settings - - foreground - #a626a4 - - - - name - Markdown: Italic - scope - markup.italic, punctuation.definition.italic - settings - - foreground - #a626a4 - - - - name - Markdown: Code - scope - markup.raw.inline - settings - - foreground - #50a14f - - - - name - Markdown: Link Text - scope - string.other.link, punctuation.definition.string.end.markdown - settings - - foreground - - - - - name - Markdown: Link Url - scope - meta.link - settings - - foreground - #50a14f - - - - name - Markdown: Lists - scope - markup.list - settings - - foreground - - - - - name - Markdown: Quotes - scope - markup.quote - settings - - foreground - #50a14f - - - - name - Java Source - scope - source.java meta.class.java meta.method.java - settings - - foreground - #383a42 - - - - name - Java Class Body - scope - source.java meta.class.java meta.class.body.java - settings - - foreground - #383a42 - - - - name - Javascript: Function Arguments - scope - source.js meta.function.js variable.parameter.function.js - settings - - foreground - #e45649 - - - - name - Javascript: New Variables - scope - source.js variable.other.readwrite.js - settings - - foreground - #e45649 - - - - name - Javascript: Variables - scope - source.js variable.other.object.js - settings - - foreground - #383a42 - - - - name - Javascript: Variables in Function Calls - scope - source.js meta.function-call.method.js variable.other.readwrite.js - settings - - foreground - #e45649 - - - - name - Javascript: New Block Variables - scope - source.js meta.block.js variable.other.readwrite.js - settings - - foreground - #e45649 - - - - name - Javascript: Block Variables - scope - source.js meta.block.js variable.other.object.js - settings - - foreground - #383a42 - - - - name - Javascript: Block Variables in Function Calls - scope - source.js meta.block.js meta.function-call.method.js variable.other.readwrite.js - settings - - foreground - #383a42 - - - - name - Javascript: Function Calls - scope - source.js meta.function-call.method.js variable.function.js - settings - - foreground - #383a42 - - - - name - Javascript: Properties - scope - source.js meta.property.object.js entity.name.function.js - settings - - foreground - #0184bc - - - - name - Javascript: Prototypes - scope - source.js support.constant.prototype.js - settings - - foreground - #383a42 - - - - name - Separator - scope - meta.separator - settings - - background - - foreground - - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #98c379 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #e06c75 - - - - name - Changed - scope - markup.changed - settings - - foreground - #e5c07b - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #50a14f - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #0997b3 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - - - - - name - Illegal - scope - invalid.illegal - settings - - background - #e06c75 - foreground - #fafafa - - - - name - Broken - scope - invalid.broken - settings - - background - #e5c07b - foreground - #fafafa - - - - name - Deprecated - scope - invalid.deprecated - settings - - background - #e5c07b - foreground - #fafafa - - - - name - Unimplemented - scope - invalid.unimplemented - settings - - background - #c678dd - foreground - #fafafa - - - - - \ No newline at end of file diff --git a/assets/themes/Sublime Snazzy.tmTheme b/assets/themes/Sublime Snazzy.tmTheme deleted file mode 100644 index 2b62d34..0000000 --- a/assets/themes/Sublime Snazzy.tmTheme +++ /dev/null @@ -1,291 +0,0 @@ - - - - - name - Sublime Snazzy - settings - - - settings - - background - #282A36 - caret - #97979B - foreground - #F8F8F2 - invisibles - #686868 - lineHighlight - #000000 - selection - #57C7FF - - - - name - Comment - scope - comment - settings - - foreground - #686868 - - - - name - String - scope - string - settings - - foreground - #F3F99D - - - - name - Number - scope - constant.numeric - settings - - foreground - #F1F1F0 - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #5AF78E - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #5AF78E - - - - name - Variable - scope - variable - settings - - fontStyle - - - - - name - Keyword - scope - keyword - settings - - foreground - #FF5C57 - - - - name - Storage - scope - storage - settings - - fontStyle - - foreground - #FF5C57 - - - - name - Storage type - scope - storage.type - settings - - fontStyle - italic - foreground - #9AEDFE - - - - name - Class name - scope - entity.name.class - settings - - fontStyle - underline - foreground - #9AEDFE - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - fontStyle - italic underline - foreground - #9AEDFE - - - - name - Function name - scope - entity.name.function - settings - - fontStyle - - foreground - #9AEDFE - - - - name - Function argument - scope - variable.parameter - settings - - fontStyle - italic - foreground - #FF6AC1 - - - - name - Tag name - scope - entity.name.tag - settings - - fontStyle - - foreground - #5AF78E - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - fontStyle - - foreground - #9AEDFE - - - - name - Library function - scope - support.function - settings - - fontStyle - - foreground - #F3F99D - - - - name - Library constant - scope - support.constant - settings - - fontStyle - - foreground - #F3F99D - - - - name - Library class/type - scope - support.type, support.class - settings - - foreground - #F3F99D - - - - name - Library variable - scope - support.other.variable - settings - - fontStyle - - - - - name - Invalid - scope - invalid - settings - - background - #FF5C57 - fontStyle - - foreground - #F1F1F0 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - background - #FF5C57 - foreground - #57C7FF - - - - uuid - D8D5E82E-3D5B-46B5-B38E-8C841C21347D - colorSpaceName - sRGB - semanticClass - theme.dark.monokai - - diff --git a/assets/themes/TwoDark.tmTheme b/assets/themes/TwoDark.tmTheme deleted file mode 100644 index 87fd358..0000000 --- a/assets/themes/TwoDark.tmTheme +++ /dev/null @@ -1,878 +0,0 @@ - - - - - author - Roberto Mauro (erremauro@icloud.com) - name - TwoDark - semanticClass - theme.dark.two_dark - colorSpaceName - sRGB - gutterSettings - - background - #393939 - divider - #393939 - foreground - #747369 - selectionBackground - #515151 - selectionForeground - #a09f93 - - settings - - - settings - - background - #282C34 - caret - #528BFF - foreground - #ABB2BF - invisibles - #747369 - lineHighlight - #2B313A - selection - #3D4350 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #ABB2BF - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #5C6370 - fontStyle - italic - - - - name - Delimiters - scope - none - settings - - foreground - #ABB2BF - - - - name - Operators - scope - keyword.operator - settings - - foreground - #ABB2BF - - - - name - Keywords - scope - keyword - settings - - foreground - #C678DD - - - - name - Variables - scope - variable - settings - - foreground - #E06C75 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #61AFEF - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #E5C07B - - - - name - Classes - scope - meta.class - settings - - foreground - #ABB2BF - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #61AFEF - - - - name - Storage - scope - storage - settings - - foreground - #C678DD - - - - name - Support - scope - support.function - settings - - foreground - #56B6C2 - - - - name - Strings, Inherited Class - scope - string, constant.other.symbol, entity.other.inherited-class - settings - - foreground - #98C379 - - - - name - Integers - scope - constant.numeric - settings - - foreground - #D19A66 - - - - name - Floats - scope - none - settings - - foreground - #D19A66 - - - - name - Boolean - scope - none - settings - - foreground - #D19A66 - - - - name - Constants - scope - constant - settings - - foreground - #D19A66 - - - - name - Tags - scope - entity.name.tag - settings - - foreground - #E06C75 - - - - name - Attributes - scope - entity.other.attribute-name - settings - - foreground - #D19A66 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #D19A66 - - - - name - Selector - scope - meta.selector - settings - - foreground - #C678DD - - - - name - Values - scope - none - settings - - foreground - #D19A66 - - - - name - Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #61AFEF - - - - name - Units - scope - keyword.other.unit - settings - - foreground - #D19A66 - - - - name - Bold - scope - markup.bold, punctuation.definition.bold - settings - - foreground - #E5C07B - - - - name - Italic - scope - markup.italic, punctuation.definition.italic - settings - - foreground - #C678DD - - - - name - Code - scope - markup.raw.inline - settings - - foreground - #98C379 - - - - name - Link Text - scope - string.other.link, punctuation.definition.string.end.markdown - settings - - foreground - #E06C75 - - - - name - Link Url - scope - meta.link - settings - - foreground - #D19A66 - - - - name - Lists - scope - markup.list - settings - - foreground - #E06C75 - - - - name - Quotes - scope - markup.quote - settings - - foreground - #D19A66 - - - - name - Separator - scope - meta.separator - settings - - background - #515151 - foreground - #ABB2BF - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #98C379 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #E06C75 - - - - name - Changed - scope - markup.changed - settings - - foreground - #C678DD - - - - name - Colors - scope - constant.other.color - settings - - foreground - #56B6C2 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #56B6C2 - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #56B6C2 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - #BE5046 - - - - name - Illegal - scope - invalid.illegal - settings - - background - #f2777a - foreground - #272B33 - - - - name - Broken - scope - invalid.broken - settings - - background - #f99157 - foreground - #2d2d2d - - - - name - Deprecated - scope - invalid.deprecated - settings - - background - #d27b53 - foreground - #272B33 - - - - name - Unimplemented - scope - invalid.unimplemented - settings - - background - #747369 - foreground - #272B33 - - - - name - Json key - scope - source.json meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #E06C75 - - - - name - Json value - scope - source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json - settings - - foreground - #98C379 - - - - name - json sub key - scope - source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #E06C75 - - - - name - Json sub value - scope - source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json - settings - - foreground - #98C379 - - - - name - laravel blade tag - scope - text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade - settings - - foreground - #C678DD - - - - name - laravel blade @ - scope - text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade - settings - - foreground - #C678DD - - - - name - python function parameter - scope - source.python meta.function.python meta.function.parameters.python variable.parameter.function.python - settings - - foreground - #D19A66 - - - - name - python meta function - scope - source.python meta.function-call.python support.type.python - settings - - foreground - #56B6C2 - - - - name - python logical keyword - scope - source.python keyword.operator.logical.python - settings - - foreground - #C678DD - - - - name - python class ( begin - scope - source.python meta.class.python punctuation.definition.inheritance.begin.python - settings - - foreground - #E5C07B - - - - name - python class ) end - scope - source.python meta.class.python punctuation.definition.inheritance.end.python - settings - - foreground - #E5C07B - - - - name - python function call parameter name - scope - source.python meta.function-call.python meta.function-call.arguments.python variable.parameter.function.python - settings - - foreground - #D19A66 - - - - name - php fcuntion constants - scope - text.html.basic source.php.embedded.block.html support.constant.std.php - settings - - foreground - #D19A66 - - - - name - php namespace name - scope - text.html.basic source.php.embedded.block.html meta.namespace.php entity.name.type.namespace.php - settings - - foreground - #E5C07B - - - - name - javascript meta constant - scope - source.js meta.function.js support.constant.js - settings - - foreground - #D19A66 - - - - name - php namespace in top - scope - text.html.basic` source.php.embedded.block.html constant.other.php - settings - - foreground - #C678DD - - - - name - php namespace name in top - scope - text.html.basic source.php.embedded.block.html support.other.namespace.php - settings - - foreground - #D19A66 - - - - name - latex label names - scope - text.tex.latex meta.function.environment.math.latex string.other.math.block.environment.latex meta.definition.label.latex variable.parameter.definition.label.latex - settings - - foreground - #ABB2BF - - - - name - latex italic emph - scope - text.tex.latex meta.function.emph.latex markup.italic.emph.latex - settings - - fontStyle - italic - foreground - #C678DD - - - - name - subl_new js vars - scope - source.js variable.other.readwrite.js - settings - - foreground - ABB2BF - - - - name - new_subl js $ - scope - source.js meta.function-call.with-arguments.js variable.function.js - settings - - foreground - #ABB2BF - - - - name - new_subl js call method - scope - source.js meta.group.braces.round meta.group.braces.curly meta.function-call.method.without-arguments.js variable.function.js - settings - - foreground - #ABB2BF - - - - name - new_subl e js - scope - source.js meta.group.braces.round meta.group.braces.curly variable.other.object.js - settings - - foreground - #ABB2BF - - - - name - new_subl js key - scope - source.js meta.group.braces.round meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js - settings - - foreground - #ABB2BF - - - - name - new_subl obejct key - scope - source.js meta.group.braces.round meta.group.braces.curly constant.other.object.key.js punctuation.separator.key-value.js - settings - - foreground - #ABB2BF - - - - name - new_subl js method with args - scope - source.js meta.group.braces.round meta.group.braces.curly meta.function-call.method.with-arguments.js variable.function.js - settings - - foreground - #ABB2BF - - - - name - new_subl js variable function - scope - source.js meta.function-call.method.with-arguments.js variable.function.js - settings - - foreground - #ABB2BF - - - - name - new_subl variabel function method - scope - source.js meta.function-call.method.without-arguments.js variable.function.js - settings - - foreground - #ABB2BF - - - - name - SublimeLinter Error - scope - sublimelinter.mark.error - settings - - foreground - #D02000 - - - name - SublimeLinter Gutter Mark - scope - sublimelinter.gutter-mark - settings - - foreground - #FFFFFF - - - name - SublimeLinter Warning - scope - sublimelinter.mark.warning - settings - - foreground - #DDB700 - - - uuid - 32bd64fa-d60a-4858-a5fc-5164cc49a2b8 - comment - Work in progress - - \ No newline at end of file diff --git a/assets/themes/ansi-dark.tmTheme b/assets/themes/ansi-dark.tmTheme deleted file mode 100644 index a797695..0000000 --- a/assets/themes/ansi-dark.tmTheme +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - author - Template: Chris Kempson, Scheme: Mitchell Kember - name - ANSI Dark - colorSpaceName - sRGB - settings - - - settings - - background - #00000000 - caret - #07000000 - foreground - #07000000 - invisibles - #07000000 - lineHighlight - #07000000 - selection - #07000000 - gutter - #00000000 - gutterForeground - #07000000 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #07000000 - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #02000000 - - - - name - Punctuation - scope - punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array - settings - - foreground - #07000000 - - - - name - Delimiters - scope - none - settings - - foreground - #07000000 - - - - name - Operators - scope - keyword.operator - settings - - foreground - #07000000 - - - - name - Keywords - scope - keyword - settings - - foreground - #05000000 - - - - name - Variables - scope - variable - settings - - foreground - #07000000 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #04000000 - - - - name - Labels - scope - entity.name.label - settings - - foreground - #06000000 - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #03000000 - - - - name - Classes - scope - meta.class - settings - - foreground - #07000000 - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #04000000 - - - - name - Storage - scope - storage - settings - - foreground - #05000000 - - - - name - Support - scope - support.function - settings - - foreground - #06000000 - - - - name - Strings, Inherited Class - scope - string, constant.other.symbol, entity.other.inherited-class - settings - - foreground - #02000000 - - - - name - Integers - scope - constant.numeric - settings - - foreground - #03000000 - - - - name - Floats - scope - none - settings - - foreground - #03000000 - - - - name - Boolean - scope - none - settings - - foreground - #03000000 - - - - name - Constants - scope - constant - settings - - foreground - #03000000 - - - - name - Tags - scope - entity.name.tag - settings - - foreground - #01000000 - - - - name - Attributes - scope - entity.other.attribute-name - settings - - foreground - #03000000 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #04000000 - - - - name - Selector - scope - meta.selector - settings - - foreground - #05000000 - - - - name - Values - scope - none - settings - - foreground - #03000000 - - - - name - Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #04000000 - - - - name - Units - scope - keyword.other.unit - settings - - foreground - #03000000 - - - - name - Bold - scope - markup.bold, punctuation.definition.bold - settings - - fontStyle - bold - foreground - #03000000 - - - - name - Italic - scope - markup.italic, punctuation.definition.italic - settings - - fontStyle - italic - foreground - #05000000 - - - - name - Code - scope - markup.raw.inline - settings - - foreground - #02000000 - - - - name - Link Text - scope - string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown - settings - - foreground - #01000000 - - - - name - Link Url - scope - meta.link - settings - - foreground - #03000000 - - - - name - Quotes - scope - markup.quote - settings - - foreground - #03000000 - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #02000000 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #01000000 - - - - name - Changed - scope - markup.changed - settings - - foreground - #05000000 - - - - name - Colors - scope - constant.other.color - settings - - foreground - #06000000 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #06000000 - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #06000000 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - #05000000 - - - - name - Illegal - scope - invalid.illegal - settings - - background - #01000000 - foreground - #07000000 - - - - name - Broken - scope - invalid.broken - settings - - background - #03000000 - foreground - #00000000 - - - - uuid - uuid - - diff --git a/assets/themes/ansi-light.tmTheme b/assets/themes/ansi-light.tmTheme deleted file mode 100644 index 5dfb94e..0000000 --- a/assets/themes/ansi-light.tmTheme +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - author - Template: Chris Kempson, Scheme: Mitchell Kember - name - ANSI Light - colorSpaceName - sRGB - settings - - - settings - - background - #07000000 - caret - #00000000 - foreground - #00000000 - invisibles - #00000000 - lineHighlight - #00000000 - selection - #00000000 - gutter - #07000000 - gutterForeground - #00000000 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #00000000 - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #02000000 - - - - name - Punctuation - scope - punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array - settings - - foreground - #00000000 - - - - name - Delimiters - scope - none - settings - - foreground - #00000000 - - - - name - Operators - scope - keyword.operator - settings - - foreground - #00000000 - - - - name - Keywords - scope - keyword - settings - - foreground - #05000000 - - - - name - Variables - scope - variable - settings - - foreground - #00000000 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #04000000 - - - - name - Labels - scope - entity.name.label - settings - - foreground - #06000000 - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #03000000 - - - - name - Classes - scope - meta.class - settings - - foreground - #00000000 - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #04000000 - - - - name - Storage - scope - storage - settings - - foreground - #05000000 - - - - name - Support - scope - support.function - settings - - foreground - #06000000 - - - - name - Strings, Inherited Class - scope - string, constant.other.symbol, entity.other.inherited-class - settings - - foreground - #02000000 - - - - name - Integers - scope - constant.numeric - settings - - foreground - #03000000 - - - - name - Floats - scope - none - settings - - foreground - #03000000 - - - - name - Boolean - scope - none - settings - - foreground - #03000000 - - - - name - Constants - scope - constant - settings - - foreground - #03000000 - - - - name - Tags - scope - entity.name.tag - settings - - foreground - #01000000 - - - - name - Attributes - scope - entity.other.attribute-name - settings - - foreground - #03000000 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #04000000 - - - - name - Selector - scope - meta.selector - settings - - foreground - #05000000 - - - - name - Values - scope - none - settings - - foreground - #03000000 - - - - name - Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #04000000 - - - - name - Units - scope - keyword.other.unit - settings - - foreground - #03000000 - - - - name - Bold - scope - markup.bold, punctuation.definition.bold - settings - - fontStyle - bold - foreground - #03000000 - - - - name - Italic - scope - markup.italic, punctuation.definition.italic - settings - - fontStyle - italic - foreground - #05000000 - - - - name - Code - scope - markup.raw.inline - settings - - foreground - #02000000 - - - - name - Link Text - scope - string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown - settings - - foreground - #01000000 - - - - name - Link Url - scope - meta.link - settings - - foreground - #03000000 - - - - name - Quotes - scope - markup.quote - settings - - foreground - #03000000 - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #02000000 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #01000000 - - - - name - Changed - scope - markup.changed - settings - - foreground - #05000000 - - - - name - Colors - scope - constant.other.color - settings - - foreground - #06000000 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #06000000 - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #06000000 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - #05000000 - - - - name - Illegal - scope - invalid.illegal - settings - - background - #01000000 - foreground - #00000000 - - - - name - Broken - scope - invalid.broken - settings - - background - #03000000 - foreground - #07000000 - - - - uuid - uuid - - diff --git a/assets/themes/base16.tmTheme b/assets/themes/base16.tmTheme deleted file mode 100644 index eff2eba..0000000 --- a/assets/themes/base16.tmTheme +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - author - Template: Chris Kempson, Scheme: Mitchell Kember - name - Base16 - colorSpaceName - sRGB - settings - - - settings - - background - #00000000 - caret - #07000000 - foreground - #07000000 - invisibles - #08000000 - lineHighlight - #08000000 - selection - #0b000000 - gutter - #0a000000 - gutterForeground - #08000000 - - - - name - Text - scope - variable.parameter.function - settings - - foreground - #07000000 - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #08000000 - - - - name - Punctuation - scope - punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array - settings - - foreground - #07000000 - - - - name - Delimiters - scope - none - settings - - foreground - #07000000 - - - - name - Operators - scope - keyword.operator - settings - - foreground - #07000000 - - - - name - Keywords - scope - keyword - settings - - foreground - #05000000 - - - - name - Variables - scope - variable - settings - - foreground - #07000000 - - - - name - Functions - scope - entity.name.function, meta.require, support.function.any-method - settings - - foreground - #04000000 - - - - name - Labels - scope - entity.name.label - settings - - foreground - #0e000000 - - - - name - Classes - scope - support.class, entity.name.class, entity.name.type.class - settings - - foreground - #03000000 - - - - name - Classes - scope - meta.class - settings - - foreground - #0f000000 - - - - name - Methods - scope - keyword.other.special-method - settings - - foreground - #04000000 - - - - name - Storage - scope - storage - settings - - foreground - #05000000 - - - - name - Support - scope - support.function - settings - - foreground - #06000000 - - - - name - Strings, Inherited Class - scope - string, constant.other.symbol, entity.other.inherited-class - settings - - foreground - #02000000 - - - - name - Integers - scope - constant.numeric - settings - - foreground - #09000000 - - - - name - Floats - scope - none - settings - - foreground - #09000000 - - - - name - Boolean - scope - none - settings - - foreground - #09000000 - - - - name - Constants - scope - constant - settings - - foreground - #09000000 - - - - name - Tags - scope - entity.name.tag - settings - - foreground - #01000000 - - - - name - Attributes - scope - entity.other.attribute-name - settings - - foreground - #09000000 - - - - name - Attribute IDs - scope - entity.other.attribute-name.id, punctuation.definition.entity - settings - - foreground - #04000000 - - - - name - Selector - scope - meta.selector - settings - - foreground - #05000000 - - - - name - Values - scope - none - settings - - foreground - #09000000 - - - - name - Headings - scope - markup.heading punctuation.definition.heading, entity.name.section - settings - - fontStyle - - foreground - #04000000 - - - - name - Units - scope - keyword.other.unit - settings - - foreground - #09000000 - - - - name - Bold - scope - markup.bold, punctuation.definition.bold - settings - - fontStyle - bold - foreground - #03000000 - - - - name - Italic - scope - markup.italic, punctuation.definition.italic - settings - - fontStyle - italic - foreground - #05000000 - - - - name - Code - scope - markup.raw.inline - settings - - foreground - #02000000 - - - - name - Link Text - scope - string.other.link, punctuation.definition.string.end.markdown, punctuation.definition.string.begin.markdown - settings - - foreground - #01000000 - - - - name - Link Url - scope - meta.link - settings - - foreground - #09000000 - - - - name - Quotes - scope - markup.quote - settings - - foreground - #09000000 - - - - name - Separator - scope - meta.separator - settings - - background - #0b000000 - foreground - #07000000 - - - - name - Inserted - scope - markup.inserted - settings - - foreground - #02000000 - - - - name - Deleted - scope - markup.deleted - settings - - foreground - #01000000 - - - - name - Changed - scope - markup.changed - settings - - foreground - #05000000 - - - - name - Colors - scope - constant.other.color - settings - - foreground - #06000000 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #06000000 - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #06000000 - - - - name - Embedded - scope - punctuation.section.embedded, variable.interpolation - settings - - foreground - #05000000 - - - - name - Illegal - scope - invalid.illegal - settings - - background - #01000000 - foreground - #0f000000 - - - - name - Broken - scope - invalid.broken - settings - - background - #09000000 - foreground - #00000000 - - - - name - Deprecated - scope - invalid.deprecated - settings - - background - #0e000000 - foreground - #0f000000 - - - - name - Unimplemented - scope - invalid.unimplemented - settings - - background - #08000000 - foreground - #0f000000 - - - - uuid - uuid - - diff --git a/assets/themes/zenburn.tmTheme b/assets/themes/zenburn.tmTheme deleted file mode 100644 index 8fc06f5..0000000 --- a/assets/themes/zenburn.tmTheme +++ /dev/null @@ -1,744 +0,0 @@ - - - - - author - Jani Nurminen. Adapted and modified by Colin T.A. Gray and William D. Neumann - name - zenburn - settings - - - settings - - background - #393939 - caret - #D6D6D6 - foreground - #DEDEDE - invisibles - #A5A5A552 - lineHighlight - #303030 - selection - #8383839C - - - - name - Comment - scope - comment - settings - - foreground - #87AE86 - - - - name - preprocessor - scope - meta.preprocessor, punctuation.definition.preprocessor - settings - - foreground - #E8BC92 - - - - name - phpdoc - scope - keyword.other.phpdoc - settings - - foreground - #568E4D - - - - name - comment punctuation (/*, #, //) - scope - punctuation.definition.comment, punctuation.whitespace.comment - settings - - foreground - #A0CFA1 - - - - name - embedded ruby in string delimiters - scope - punctuation.section.embedded - settings - - foreground - #898989 - - - - name - embedded ruby in string - scope - source.ruby.embedded - settings - - foreground - #CC9495 - - - - name - Directive - scope - keyword.other.directive - settings - - fontStyle - bold - foreground - #DEDEDE - - - - name - Line-number directives - scope - keyword.other.directive.line-number - settings - - fontStyle - underline - - - - name - Characters - scope - constant.character - settings - - foreground - #FF8080 - - - - name - String - scope - string, string.unquoted - settings - - foreground - #D68686 - - - - name - Heredoc - scope - string.unquoted.heredoc - settings - - foreground - #D6D6D6 - - - - name - Number - scope - support.constant.numeric, constant.numeric - settings - - foreground - #87D6D5 - - - - name - Built-in constant - scope - constant, support.constant - settings - - fontStyle - bold - foreground - #D6D6AE - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #CC9495 - - - - name - Other constant - scope - variable.other.constant - settings - - foreground - #D6D6AE - - - - name - Language Keyword - scope - keyword, keyword.control , meta.selector.css , entity.other.attribute-name - settings - - foreground - #FED6AF - - - - name - Instance Variable - scope - variable.other.readwrite.instance - settings - - foreground - #FED6AF - - - - name - Module Keyword - scope - entity.name.module,support.other.module - settings - - fontStyle - bold - foreground - #FF8000 - - - - name - Operators - scope - keyword.operator - settings - - foreground - #ECECEC - - - - name - Floating-point infix operators - scope - source.ocaml keyword.operator.symbol.infix.floating-point - settings - - fontStyle - underline - - - - name - Floating-point prefix operators - scope - source.ocaml keyword.operator.symbol.prefix.floating-point - settings - - fontStyle - underline - - - - name - Storage Types - scope - storage.type , storage.modifier , support.type - settings - - foreground - #FFFB9D - - - - name - Variant Types - scope - entity.name.class.variant - settings - - foreground - #4080A0 - - - - name - Storage - scope - storage - settings - - - - name - Type name - scope - entity.name.type , entity.other - settings - - foreground - #D6D6D6 - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - foreground - #D78D1B - - - - name - Type name - scope - storage.type.user-defined , meta.property-list - settings - - foreground - #FFE000 - - - - name - Class type name - scope - entity.name.type , entity.name.type.class , entity.other.attribute-name.class.css , support.class - settings - - foreground - #F4A020 - - - - name - Function argument - scope - variable.parameter - settings - - - - - name - Invalid - scope - invalid - settings - - fontStyle - bold italic underline - foreground - #FFCCEE - - - - name - html attribute - scope - entity.other.attribute-name.html - settings - - fontStyle - bold - foreground - #D6D7AF - - - - name - html entity - scope - entity.name.tag - settings - - foreground - #D6D7AF - - - - name - <?php - scope - punctuation.section.embedded.begin.php,punctuation.section.embedded.end.php - settings - - foreground - #898989 - - - - name - php function - scope - support.function.construct - settings - - foreground - #FED6AF - - - - name - $variable prefix - scope - punctuation.definition.variable - settings - - foreground - #FED6AF - - - - name - function/method - scope - support.function,meta.function-name,entity.name.function - settings - - foreground - #FFFD87 - - - - name - built-in function - scope - support.function - settings - - foreground - #C7BA18 - - - - name - braces - scope - meta.brace - settings - - foreground - #78CECC80 - - - - name - string begin - scope - punctuation.definition.string.begin,punctuation.definition.string.end - settings - - foreground - #D6D6D680 - - - - name - html tag begin/end - scope - punctuation.definition.tag.begin.html,punctuation.definition.tag.end.html,meta.tag.structure.any.html - settings - - fontStyle - bold - foreground - #FED5AE94 - - - - name - yaml entity - scope - entity.name.tag.yaml - settings - - fontStyle - bold - foreground - #FED6AF - - - - name - unquoted yaml string - scope - punctuation.definition.entry - settings - - foreground - #D6D6D6 - - - - name - SQL - scope - keyword.other.DML.sql, keyword.other.data-integrity.sql - settings - - fontStyle - bold - foreground - #B7B7B7 - - - - name - other SQL - scope - source.sql, constant.other.database-name.sql, constant.other.table-name.sql, keyword.operator.star - settings - - fontStyle - bold - foreground - #95BFF3 - - - - name - diff - scope - source.diff - settings - - background - #393939 - foreground - #FFFFFF - - - - name - diff.toc - scope - source.diff meta.diff.comment, source.diff meta.toc-list.comment.diff - settings - - background - #9F9D15 - foreground - #FFFFFF - - - - name - diff from-file - scope - meta.diff.header.from-file - settings - - background - #393939 - fontStyle - bold - foreground - #CA7172 - - - - name - diff to-file - scope - meta.diff.header.to-file - settings - - background - #393939 - fontStyle - bold - foreground - #60B38A - - - - name - diff range - scope - meta.diff.range.unified - settings - - background - #393939 - foreground - #8CD0D3 - - - - name - diff inserted - scope - markup.inserted.diff - settings - - background - #393939 - foreground - #60B38A - - - - name - diff deleted - scope - markup.deleted.diff - settings - - background - #393939 - foreground - #CA7172 - - - - name - regex - scope - string.regexp - settings - - foreground - #C76F41 - - - - name - regex - repitition - scope - string.regexp.arbitrary-repitition - settings - - foreground - #9E6A5F - - - - name - regex - repitition {} - scope - punctuation.definition.arbitrary-repitition - settings - - foreground - #FFFFFF5E - - - - name - regex - character class - scope - string.regexp.character-class - settings - - foreground - #CB8E81 - - - - name - regex - character class [] - scope - punctuation.definition.character-class - settings - - foreground - #FFFFFF5E - - - - name - markdown inline code - scope - markup.raw.inline.markdown - settings - - foreground - #FED6AF - - - - name - markdown heading - scope - markup.heading.markdown,punctuation.definition.heading - settings - - fontStyle - bold - foreground - #FFFFFF - - - - name - markdown list - scope - markup.list - settings - - foreground - #DEDEDE - - - - name - SublimeLinter Warning - scope - sublimelinter.mark.warning - settings - - foreground - #DDB700 - - - name - SublimeLinter Gutter Mark - scope - sublimelinter.gutter-mark - settings - - foreground - #FFFFFF - - - name - SublimeLinter Error - scope - sublimelinter.mark.error - settings - - foreground - #D02000 - - - uuid - A34A7407-68B9-48E5-883E-E551F7561026 - - \ No newline at end of file diff --git a/build.rs b/build.rs deleted file mode 100644 index 8f42310..0000000 --- a/build.rs +++ /dev/null @@ -1,30 +0,0 @@ -use syntect::dumps::dump_to_file; -use syntect::highlighting::ThemeSet; -use syntect::parsing::SyntaxSet; - -fn create_theme_dump() { - let mut default = ThemeSet::load_defaults(); - let from_folder = ThemeSet::load_from_folder("./assets/themes").expect("failed to load themes"); - - default.themes.extend(from_folder.themes.into_iter()); - - dump_to_file(&default, "./assets/themes.bin").expect("failed to dump"); -} - -fn create_syntax_dump() { - let mut builder = SyntaxSet::load_defaults_newlines().into_builder(); - builder.add_plain_text_syntax(); - - builder - .add_from_folder("./assets/syntaxes", true) - .expect("failed to load syntaxes"); - - let default = builder.build(); - - dump_to_file(&default, "./assets/syntaxes.bin").expect("failed to dump"); -} - -fn main() { - create_theme_dump(); - create_syntax_dump(); -}