diff --git a/.gitignore b/.gitignore index affff01..e118c15 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /*.cache +JavaScriptNext.tmbundle \ No newline at end of file diff --git a/Comments.YAML-tmPreferences b/Comments.YAML-tmPreferences new file mode 100644 index 0000000..3c26c30 --- /dev/null +++ b/Comments.YAML-tmPreferences @@ -0,0 +1,12 @@ +# [PackageDev] target_format: plist, ext: tmPreferences +name: Comments +uuid: A67A8BD9-A951-406F-9175-018DD4B52FD1 +scope: source.js, source.json +settings: + shellVariables: + - name: TM_COMMENT_START + value: '// ' + - name: TM_COMMENT_START_2 + value: /* + - name: TM_COMMENT_END_2 + value: '*/' diff --git a/JSON (JavaScriptNext).YAML-tmLanguage b/JSON (JavaScriptNext).YAML-tmLanguage new file mode 100644 index 0000000..e03042d --- /dev/null +++ b/JSON (JavaScriptNext).YAML-tmLanguage @@ -0,0 +1,151 @@ +# [PackageDev] target_format: plist, ext: tmLanguage +name: JSON (Javascript Next) +scopeName: source.json +fileTypes: [json, sublime-settings, sublime-menu, sublime-keymap, sublime-mousemap, + sublime-theme, sublime-build, sublime-project, sublime-completions] +uuid: 8f97457b-516e-48ce-83c7-08ae12fb327a +foldingStartMarker: >- + (?x) # turn on extended mode + ^ # a line beginning with + \s* # some optional space + [{\[] # the start of an object or array + (?! # but not followed by + .* # whatever + [}\]] # and the close of an object or array + ,? # an optional comma + \s* # some optional space + $ # at the end of the line + ) + | # ...or... + [{\[] # the start of an object or array + \s* # some optional space + $ # at the end of the line +foldingStopMarker: >- + (?x) # turn on extended mode + ^ # a line beginning with + \s* # some optional space + [}\]] # and the close of an object or array +keyEquivalent: ^~J + +patterns: +- include: '#value' + +repository: + array: + name: meta.structure.array.json + begin: \[ + beginCaptures: + '0': {name: punctuation.definition.array.begin.json} + end: \] + endCaptures: + '0': {name: punctuation.definition.array.end.json} + patterns: + - include: '#value' + - name: punctuation.separator.array.json + match: ',' + - name: invalid.illegal.expected-array-separator.json + match: '[^\s\]]' + + comments: + patterns: + - name: comment.block.documentation.json + begin: /\*\* + end: \*/ + captures: + '0': {name: punctuation.definition.comment.json} + - name: comment.block.json + begin: /\* + end: \*/ + captures: + '0': {name: punctuation.definition.comment.json} + - name: comment.line.double-slash.js + match: (//).*$\n? + captures: + '1': {name: punctuation.definition.comment.json} + + constant: + name: constant.language.json + match: \b(?:true|false|null)\b + + # handles integer and decimal numbers + number: + name: constant.numeric.json + match: >- + (?x) # turn on extended mode + -? # an optional minus + (?: + 0 # a zero + | # ...or... + [1-9] # a 1-9 character + \d* # followed by zero or more digits + ) + (?: + (?: + \. # a period + \d+ # followed by one or more digits + )? + (?: + [eE] # an e character + [+-]? # followed by an option +/- + \d+ # followed by one or more digits + )? # make exponent optional + )? # make decimal portion optional + + # a JSON object + object: + name: meta.structure.dictionary.json + begin: \{ + beginCaptures: + '0': {name: punctuation.definition.dictionary.begin.json} + end: \} + endCaptures: + '0': {name: punctuation.definition.dictionary.end.json} + patterns: + - comment: the JSON object key + include: '#string' + - include: '#comments' + - name: meta.structure.dictionary.value.json + begin: ':' + beginCaptures: + '0': {name: punctuation.separator.dictionary.key-value.json} + end: (,)|(?=\}) + endCaptures: + '1': {name: punctuation.separator.dictionary.pair.json} + patterns: + - comment: the JSON object value + include: '#value' + - name: invalid.illegal.expected-dictionary-separator.json + match: '[^\s,]' + - name: invalid.illegal.expected-dictionary-separator.json + match: '[^\s\}]' + + string: + name: string.quoted.double.json + begin: '"' + beginCaptures: + '0': {name: punctuation.definition.string.begin.json} + end: '"' + endCaptures: + '0': {name: punctuation.definition.string.end.json} + patterns: + - name: constant.character.escape.json + match: >- + (?x) # turn on extended mode + \\ # a literal backslash + (?: # ...followed by... + ["\\/bfnrt] # one of these characters + | # ...or... + u # a u + [0-9a-fA-F]{4}) # and four hex digits + - name: invalid.illegal.unrecognized-string-escape.json + match: \\. + + # the 'value' diagram at http://json.org + value: + patterns: + - include: '#constant' + - include: '#number' + - include: '#string' + - include: '#array' + - include: '#object' + - include: '#comments' diff --git a/JavaScript Indent.YAML-tmPreferences b/JavaScript Indent.YAML-tmPreferences new file mode 100644 index 0000000..03232a3 --- /dev/null +++ b/JavaScript Indent.YAML-tmPreferences @@ -0,0 +1,11 @@ +# [PackageDev] target_format: plist, ext: tmPreferences +name: JavaScript Indent +uuid: d408c7f9-4402-4a22-98f9-156c144591b7 +scope: source.js +settings: + bracketIndentNextLinePattern: >- + (?x) + ^ \s* \b(if|while|else)\b [^;]* $ + | ^ \s* \b(for)\b .* $ + decreaseIndentPattern: ^(.*\*/)?\s*[}].*$ + increaseIndentPattern: ^.*\{[^}"']*$ diff --git a/JavaScriptNext.YAML-tmLanguage b/JavaScriptNext.YAML-tmLanguage new file mode 100644 index 0000000..b9d75c5 --- /dev/null +++ b/JavaScriptNext.YAML-tmLanguage @@ -0,0 +1,1132 @@ +# [PackageDev] target_format: plist, ext: tmLanguage +name: JavaScript Next +scopeName: source.js.es6 +fileTypes: [js, htc, jsx] +uuid: 487CF323-A3F9-48FA-B140-DCE8C893E664 +firstLineMatch: ^#!/.*\b(node|js)$\n? +keyEquivalent: ^~J + +patterns: +- include: '#core' + +repository: + core: + patterns: + - include: '#literal-function-labels' + - include: '#literal-arrow-function-labels' + - include: '#literal-labels' + + - include: '#literal-keywords' + - include: '#literal-for' + - include: '#literal-switch' + + - include: '#expression' + - include: '#literal-punctuation' + + expression: + patterns: + - include: '#support' + - include: '#literal-function' + - include: '#literal-arrow-function' + - include: '#literal-prototype' # after literal-function, which includes some prototype strings + + - include: '#literal-regexp' # before operators to avoid ambiguities + - include: '#literal-number' + - include: '#literal-quasi' + - include: '#literal-string' + - include: '#literal-language-constant' + - include: '#literal-language-variable' + + - include: '#literal-method' + - include: '#literal-module' + - include: '#literal-class' + + - include: '#literal-constructor' + - include: '#literal-method-call' + - include: '#literal-function-call' + + - include: '#comments' + - include: '#brackets' + + - include: '#literal-operators' + - include: '#literal-variable' + + round-brackets: + patterns: + - name: meta.group.braces.round + begin: \( + beginCaptures: + '0': {name: meta.brace.round.js} + end: \) + endCaptures: + '0': {name: meta.brace.round.js} + patterns: + - include: '#expression' + + square-brackets: + patterns: + - name: meta.group.braces.square + begin: \[ + beginCaptures: + '0': {name: meta.brace.square.js} + end: \] + endCaptures: + '0': {name: meta.brace.square.js} + patterns: + - include: '#expression' + + curly-brackets: + patterns: + - name: meta.group.braces.curly + begin: \{ + beginCaptures: + '0': {name: meta.brace.curly.js} + end: \} + endCaptures: + '0': {name: meta.brace.curly.js} + patterns: + - include: $self + + brackets: + patterns: + - include: '#round-brackets' + - include: '#square-brackets' + - include: '#curly-brackets' + + comments: + patterns: + - include: '#special-comments-conditional-compilation' + + - name: comment.block.documentation.js + begin: /\*\*(?!/) + end: \*/ + captures: + '0': {name: punctuation.definition.comment.js} + + - name: comment.block.js + begin: /\* + end: \*/ + captures: + '0': {name: punctuation.definition.comment.js} + + - name: comment.block.html.js + match: () + captures: + '0': {name: punctuation.definition.comment.js} + + - name: comment.line.double-slash.js + match: (//).*$\n? + captures: + '1': {name: punctuation.definition.comment.js} + + - name: comment.line.shebang.js + match: ^(#!).*$\n? + captures: + '1': {name: punctuation.definition.comment.js} + + special-comments-conditional-compilation: + patterns: + - name: comment.block.conditional.js + begin: /\*(?=@) + end: \*/ + endCaptures: + '1': {name: keyword.control.conditional.js} + '2': {name: punctuation.definition.keyword.js} + captures: + '0': {name: punctuation.definition.comment.js} + patterns: + - name: punctuation.definition.comment.js + match: /\* + - include: $self + + - name: keyword.control.conditional.js + match: (@)(if|elif|else|end|ifdef|endif|cc_on|set)\b + captures: + '1': {name: punctuation.definition.keyword.js} + + - name: variable.other.conditional.js + match: (@)(_win32|_win16|_mac|_alpha|_x86|_mc680x0|_PowerPC|_jscript|_jscript_build|_jscript_version|_debug|_fast|[a-zA-Z]\w+) + captures: + '1': {name: punctuation.definition.variable.js} + + function-declaration-parameters: + patterns: + - begin: \( + beginCaptures: + '0': {name: punctuation.definition.parameters.begin.js} + end: \) + endCaptures: + '0': {name: punctuation.definition.parameters.end.js} + patterns: + - name: keyword.operator.spread.js + match: (?- + (?x) + (?- + (?x) + (?:\b(static)\s+)? + (?:\b(async)\s+)? + (?:(\*)\s*)?([_$a-zA-Z][$\w]*)\s* + (?=\([^())]*\)(?:\s|/\*.*\*/)*\{) + beginCaptures: + '1': {name: storage.type.js} + '2': {name: storage.type.js} + '3': {name: keyword.generator.asterisk.js} + '4': {name: entity.name.method.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + # getter/setter + - name: meta.accessor.js + begin: >- + (?x) + \b(?:(static)\s+)? + (get|set)\s+ + ([_$a-zA-Z][$\w]*)\s* + (?=\([^())]*\)(?:\s|/\*.*\*/)*\{) + beginCaptures: + '1': {name: storage.type.js} + '2': {name: storage.type.accessor.js} + '3': {name: entity.name.accessor.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + literal-prototype: + patterns: + # e.g. Sound.prototype + - name: meta.prototype.access.js + match: ([_$a-zA-Z][$\w]*)(\.)(prototype)\b + captures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.language.prototype.js} + + # e.g. Sound.prototype = { } when extending an object + - name: meta.prototype.declaration.js + match: ([_$a-zA-Z][$\w]*)(\.)(prototype)\s*=\s* + captures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.language.prototype.js} + + literal-function: + patterns: + # e.g. function play(arg1, arg2) { } + - name: meta.function.js + begin: >- + (?x) + (?:\b(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: storage.type.js} + '2': {name: storage.type.function.js} + '3': {name: keyword.generator.asterisk.js} + '4': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + # e.g. play = function(arg1, arg2) { } + - name: meta.function.js + begin: >- + (?x) + (\b[_$a-zA-Z][$\w]*) + \s*= + \s*(?:(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: entity.name.function.js} + '2': {name: storage.type.js} + '3': {name: storage.type.function.js} + '4': {name: keyword.generator.asterisk.js} + '5': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + # e.g. Sound.prototype.play = function(arg1, arg2) { } + - name: meta.prototype.function.js + begin: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)(prototype) + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(?:(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.language.prototype.js} + '4': {name: keyword.operator.accessor.js} + '5': {name: entity.name.function.js} + '6': {name: storage.type.js} + '7': {name: storage.type.function.js} + '8': {name: keyword.generator.asterisk.js} + '9': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + # e.g. Sound.play = function(arg1, arg2) { } + - name: meta.function.static.js + begin: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(?:(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: entity.name.function.js} + '4': {name: storage.type.js} + '5': {name: storage.type.function.js} + '6': {name: keyword.generator.asterisk.js} + '7': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + literal-function-labels: + patterns: + # e.g. play: function(arg1, arg2) { } + - name: meta.function.json.js + begin: >- + (?x) + \b([_$a-zA-Z][$\w]*) + \s*(:) + \s*(?:(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: entity.name.function.js} + '2': {name: punctuation.separator.key-value.js} + '3': {name: storage.type.js} + '4': {name: storage.type.function.js} + '5': {name: keyword.generator.asterisk.js} + '6': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + # e.g. "play": function(arg1, arg2) { } + - name: meta.function.json.js + begin: >- + (?x) + (?: + ((')((?:[^']|\\')*)('))| + ((")((?:[^"]|\\")*)(")) + ) + \s*(:) + \s*(?:(async)\s+)? + \s*(function)(?:\s*(\*)|(?=\s|[(])) + \s*([_$a-zA-Z][$\w]*)?\s* + beginCaptures: + '1': {name: string.quoted.single.js} + '2': {name: punctuation.definition.string.begin.js} + '3': {name: entity.name.function.js} + '4': {name: punctuation.definition.string.end.js} + '5': {name: string.quoted.double.js} + '6': {name: punctuation.definition.string.begin.js} + '7': {name: entity.name.function.js} + '8': {name: punctuation.definition.string.end.js} + '9': {name: punctuation.separator.key-value.js} + '10': {name: storage.type.js} + '11': {name: storage.type.function.js} + '12': {name: keyword.generator.asterisk.js} + '13': {name: entity.name.function.js} + end: (?<=\)) + patterns: + - include: '#function-declaration-parameters' + + literal-arrow-function: + patterns: + # e.g. (args) => { } + - name: meta.function.arrow.js + begin: >- + (?x) + (\basync)?\s* + (?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. arg => { } + - name: meta.function.arrow.js + match: >- + (?x) + (\basync)?\s* + \b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: storage.type.js} + '2': {name: variable.parameter.function.js} + '3': {name: storage.type.function.arrow.js} + + # e.g. play = (args) => { } + - name: meta.function.arrow.js + begin: >- + (?x) + (\b[_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*(?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: entity.name.function.js} + '2': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. play = arg => { } + - name: meta.function.arrow.js + match: >- + (?x) + (\b[_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*\b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: entity.name.function.js} + '2': {name: storage.type.js} + '3': {name: variable.parameter.function.js} + '4': {name: storage.type.function.arrow.js} + + # e.g. Sound.prototype.play = (args) => { } + - name: meta.prototype.function.arrow.js + begin: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)(prototype) + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*(?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.language.prototype.js} + '4': {name: keyword.operator.accessor.js} + '5': {name: entity.name.function.js} + '6': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. Sound.prototype.play = arg => { } + - name: meta.prototype.function.arrow.js + match: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)(prototype) + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*\b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.language.prototype.js} + '4': {name: keyword.operator.accessor.js} + '5': {name: entity.name.function.js} + '6': {name: storage.type.js} + '7': {name: variable.parameter.function.js} + '8': {name: storage.type.function.arrow.js} + + # e.g. Sound.play = (args) => { } + - name: meta.function.static.arrow.js + begin: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*(?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: entity.name.function.js} + '4': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. Sound.play = arg => { } + - name: meta.function.static.arrow.js + match: >- + (?x) + (\b_?[A-Z][$\w]*)? + (\.)([_$a-zA-Z][$\w]*) + \s*= + \s*(async)? + \s*\b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: entity.name.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: entity.name.function.js} + '4': {name: storage.type.js} + '5': {name: variable.parameter.function.js} + '6': {name: storage.type.function.arrow.js} + + literal-arrow-function-labels: + patterns: + # e.g. play: (args) => { } + - name: meta.function.json.arrow.js + begin: >- + (?x) + \b([_$a-zA-Z][$\w]*) + \s*(:) + \s*(async)? + \s*(?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: entity.name.function.js} + '2': {name: punctuation.separator.key-value.js} + '3': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. play: arg => { } + - name: meta.function.json.arrow.js + match: >- + (?x) + \b([_$a-zA-Z][$\w]*) + \s*(:) + \s*(async)? + \s*\b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: entity.name.function.js} + '2': {name: punctuation.separator.key-value.js} + '3': {name: storage.type.js} + '4': {name: variable.parameter.function.js} + '5': {name: storage.type.function.arrow.js} + + # e.g. "play": (args) => { } + - name: meta.function.json.arrow.js + begin: >- + (?x) + (?: + ((')((?:[^']|\\')*)('))| + ((")((?:[^"]|\\")*)(")) + ) + \s*(:) + \s*(async)? + \s*(?=\([^()]*\)\s*(=>)) + beginCaptures: + '1': {name: string.quoted.single.js} + '2': {name: punctuation.definition.string.begin.js} + '3': {name: entity.name.function.js} + '4': {name: punctuation.definition.string.end.js} + '5': {name: string.quoted.double.js} + '6': {name: punctuation.definition.string.begin.js} + '7': {name: entity.name.function.js} + '8': {name: punctuation.definition.string.end.js} + '9': {name: punctuation.separator.key-value.js} + '10': {name: storage.type.js} + end: (?<=\))\s*(=>) + endCaptures: + '1': {name: storage.type.function.arrow.js} + patterns: + - include: '#function-declaration-parameters' + + # e.g. "play": arg => { } + - name: meta.function.json.arrow.js + match: >- + (?x) + (?: + ((')((?:[^']|\\')*)('))| + ((")((?:[^"]|\\")*)(")) + ) + \s*(:) + \s*(async)? + \s*\b([_$a-zA-Z][$\w]*)\s*(=>) + captures: + '1': {name: string.quoted.single.js} + '2': {name: punctuation.definition.string.begin.js} + '3': {name: entity.name.function.js} + '4': {name: punctuation.definition.string.end.js} + '5': {name: string.quoted.double.js} + '6': {name: punctuation.definition.string.begin.js} + '7': {name: entity.name.function.js} + '8': {name: punctuation.definition.string.end.js} + '9': {name: punctuation.separator.key-value.js} + '10': {name: storage.type.js} + '11': {name: variable.parameter.function.js} + '12': {name: storage.type.function.arrow.js} + + literal-function-call: + patterns: + - name: meta.function-call.without-arguments.js + match: >- + (?x) + ([_$a-zA-Z][$\w]*)\s* + (\(\s*\)) + captures: + '1': {name: entity.name.function.js} + '2': {name: meta.group.braces.round.function.arguments.js} + + - name: meta.function-call.with-arguments.js + match: >- + (?x) + ([_$a-zA-Z][$\w]*)\s* + (?=\() + captures: + '1': {name: entity.name.function.js} + + literal-method-call: + patterns: + - name: meta.function-call.static.without-arguments.js + match: >- + (?x) + (?:(?<=\.)|\b) + ([A-Z][$\w]*)\s*(\.) + ([_$a-zA-Z][$\w]*)\s* + (\(\s*\)) + captures: + '1': {name: variable.other.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: entity.name.function.js} + '4': {name: meta.group.braces.round.function.arguments.js} + + - name: meta.function-call.static.with-arguments.js + match: >- + (?x) + (?:(?<=\.)|\b) + ([A-Z][$\w]*)\s*(\.) + ([_$a-zA-Z][$\w]*)\s* + (?=\() + captures: + '1': {name: variable.other.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: entity.name.function.js} + + - name: meta.function-call.method.without-arguments.js + match: >- + (?x) + (?<=\.) + ([_$a-zA-Z][$\w]*)\s* + (\(\s*\)) + captures: + '1': {name: entity.name.function.js} + '2': {name: meta.group.braces.round.function.arguments.js} + + - name: meta.function-call.method.with-arguments.js + match: >- + (?x) + (?<=\.) + ([_$a-zA-Z][$\w]*)\s* + (?=\() + captures: + '1': {name: entity.name.function.js} + + literal-language-variable: + patterns: + - name: variable.language.arguments.js + match: (?- + (?x) + !(?!=)| # logical-not right-to-left right + && | # logical-and left-to-right both + \|\| | # logical-or left-to-right both + + - name: keyword.operator.assignment.js + match: >- + (?x) + =(?!=)| # assignment right-to-left both + + - name: keyword.operator.assignment.augmented.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 + + - name: keyword.operator.bitwise.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 + + - name: keyword.operator.relational.js + match: >- + (?x) + <= | # relational left-to-right both + >= | # relational left-to-right both + < | # relational left-to-right both + > # relational left-to-right both + + - name: keyword.operator.comparison.js + match: >- + (?x) + === | # equality left-to-right both + !== | # equality left-to-right both + == | # equality left-to-right both + != # equality left-to-right both + + - name: keyword.operator.arithmetic.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 + + - name: keyword.operator.ternary.js + match: '\?|:' + + - name: keyword.operator.spread.js + match: (?- + (?x) + (?- + (?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 + ) + + - name: constant.language.infinity.js + match: (?:\B[-+]|\b)(Infinity)\b + + literal-punctuation: + patterns: + - name: punctuation.terminator.statement.js + match: \; + + - name: meta.delimiter.comma.js + match: ',' + + literal-quasi: + patterns: + - name: string.quasi.js + begin: ([a-zA-Z$_][\w$_]*)?(`) + beginCaptures: + '1': {name: entity.quasi.tag.name.js} + '2': {name: punctuation.definition.quasi.begin.js} + end: '`' + endCaptures: + '0': {name: punctuation.definition.quasi.end.js} + patterns: + - include: '#string-content' + - name: entity.quasi.element.js + begin: \${ + beginCaptures: + '0': {name: punctuation.quasi.element.begin.js} + end: '}' + endCaptures: + '0': {name: punctuation.quasi.element.end.js} + patterns: + - include: '#expression' + + literal-regexp: + patterns: + # ignore ++, -- since they're uncommon, distinguishing them is not possible in sublime text, see: + # http://stackoverflow.com/questions/5519596/when-parsing-javascript-what-determines-the-meaning-of-a-slash + - name: string.regexp.js + begin: >- + (?x) + (?<= + \.|\(|,|{|}|\[|;|,|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|<<=|>>=|>>>=|&=|\|=|\^=|/|/=| + \Wnew|\Wdelete|\Wvoid|\Wtypeof|\Winstanceof|\Win|\Wdo|\Wreturn|\Wcase|\Wthrow| + ^new|^delete|^void|^typeof|^instanceof|^in|^do|^return|^case|^throw|^ + )\s* + (/) + (?!/|\*|$) + beginCaptures: + '1': {name: punctuation.definition.string.begin.js} + end: (/)([gimy]*) + endCaptures: + '1': {name: punctuation.definition.string.end.js} + '2': {name: keyword.other.js} + patterns: + - include: source.regexp.js + + literal-string: + patterns: + - name: string.quoted.single.js + begin: "'" + beginCaptures: + '0': {name: punctuation.definition.string.begin.js} + end: (')|(\n) + endCaptures: + '1': {name: punctuation.definition.string.end.js} + '2': {name: invalid.illegal.newline.js} + patterns: + - include: '#string-content' + + - name: string.quoted.double.js + begin: '"' + beginCaptures: + '0': {name: punctuation.definition.string.begin.js} + end: (")|(\n) + endCaptures: + '1': {name: punctuation.definition.string.end.js} + '2': {name: invalid.illegal.newline.js} + patterns: + - include: '#string-content' + + string-content: + patterns: + - name: constant.character.escape.newline.js + match: \\\s*\n + + - name: constant.character.escape.js + match: \\(x[\da-fA-F]{2}|u[\da-fA-F]{4}|.) + + literal-variable: + patterns: + # e.g. CONSTANT + - name: variable.other.constant.js + match: '[A-Z][_$\dA-Z]*\b' + + # dollar variables + - name: variable.other.dollar.js + match: '(\$)[$\w]+' + captures: + '1': {name: punctuation.dollar.js} + + # e.g. Class.property + - name: meta.property.class.js + match: >- + (?x) + \b([A-Z][$\w]*)\s*(\.) + ([_$a-zA-Z][$\w]*) + captures: + '1': {name: variable.other.class.js} + '2': {name: keyword.operator.accessor.js} + '3': {name: variable.other.property.static.js} + + # e.g. obj.property + - name: variable.other.object.js + match: (?- + (?x) + \b( + ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE| + DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR| + WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR + )\b + + # console + - match: (? - - - - name - JavaScriptNext - fileTypes - - js - htc - jsx - - scopeName - source.js - firstLineMatch - ^#!/.*\b(node|js) - keyEquivalent - ^~J - patterns - - - - include - #comments - - - include - #support - - - include - #core - - - include - #special - - - include - #sugar - - - repository - - comments - - patterns - - - include - #special-comments-conditional-compilation - - - begin - /\*\* - captures - - 0 - - name - punctuation.definition.comment.js - - - end - \*/ - name - comment.block.documentation.js - - - begin - /\* - captures - - 0 - - name - punctuation.definition.comment.js - - - end - \*/ - name - comment.block.js - - - captures - - 1 - - name - punctuation.definition.comment.js - - - match - (//).*$\n? - name - comment.line.double-slash.js - - - captures - - 0 - - name - punctuation.definition.comment.html.js - - 2 - - name - punctuation.definition.comment.html.js - - - match - (<!--|-->) - name - comment.block.html.js - - - - core - - patterns - - - include - #leading-space - - - include - #brackets - - - include - #literal-method - - - include - #literal-number - - - include - #literal-string - - - include - #arrow-function - - - include - #literal-class - - - include - #literal-quasi - - - include - #literal-regex - - - include - #literal-module - - - include - #literal-keywords - - - include - #literal-function-call - - - include - #literal-function-constructor - - - include - #literal-labels - - - include - #literal-variable - - - include - #literal-punctuation - - - - brackets - - patterns - - - captures - - 1 - - name - entity.name.function.js - - - name - meta.function-call.method.with-arguments.js - match - (?x)(?<= \. ) ([_$a-zA-Z][_$\w]*)? (?=\() - - - begin - (\()(?!\)) - captures - - 1 - - name - punctuation.section.scope.round.js - - - name - meta.group.braces.round - patterns - - - include - $base - - - end - (\)) - - - begin - (\[)(?!\]) - captures - - 1 - - name - punctuation.section.scope.square.js - - - name - meta.group.braces.square - patterns - - - include - $base - - - end - (\]) - - - - literal-function-call - - patterns - - - begin - (?=[_$a-zA-Z][_$\w]*\s*\() - end - (?=\() - name - meta.function-call.static.with-arguments.js - patterns - - - match - ([_$a-zA-Z][_$\w]*)? - name - entity.name.function.js - - - - - - literal-method - - patterns - - - captures - - 1 - - name - entity.name.function.js - - - name - meta.function-call.method.with-arguments.js - match - (?x)(?<= \. ) ([_$a-zA-Z][_$\w]*) (?=\() - - - captures - - 2 - - name - meta.group.braces.round.function.arguments.js - - 1 - - name - entity.name.function.js - - 3 - - name - punctuation.section.scope.round.js - - - name - meta.function-call.method.without-arguments.js - match - (?x)(?<= \. ) ([_$a-zA-Z][_$\w]*) ((\( \s* \))) - - - begin - (?x) - \b(function) - (?= - (?:\b(?:[_$a-zA-Z][_$\w]*))? \s* # The function name - \(.*?\) # The properties that the function accepts - ) - comment - function(one,two,...)\n?{...} - beginCaptures - - 1 - - name - storage.type.function.js - - - name - meta.function.js - patterns - - - include - $base - - - end - (?<=})(\s*\n)? - - - captures - - 1 - - name - entity.name.method.js - - 2 - - name - punctuation.definition.parameters.begin.js - - 3 - - name - variable.parameter.method.js - - 4 - - name - punctuation.definition.parameters.begin.js - - - name - meta.method.js - match - (?x) - (?<![_$\w] )(?<!function) - ([_$a-zA-Z][_$\w]*) - (\() (\s* - (.*?) - )?\s* (\)) - \s* - (?={) - - - - literal-class - - patterns - - - captures - - 1 - - name - storage.type.class.js - - 2 - - name - entity.name.class.js - - 3 - - name - storage.type.extends.js - - 4 - - name - entity.name.extends.js - - - comment - match regular class like: class MyClass { } - match - \b(class)\b(?:\s+([a-zA-Z_$]\w*)\s*(?:\b(extends)\b\s*([a-zA-Z_$][.\w]*))?)?\s* - name - meta.class.js - - - captures - - 1 - - name - storage.type.accessor.js - - 2 - - name - entity.name.accessor.js - - 3 - - name - punctuation.definition.parameters.begin.js - - 4 - - name - variable.parameter.accessor.js - - 5 - - name - punctuation.definition.parameters.end.js - - - comment - Concise getter and setter - match - \b([gs]et\s*)\b([a-zA-Z_$][\w?_$]*)\s*(\()(.*?)(\)) - name - meta.accessor.js - - - - literal-module - - patterns - - - comment - match module like: module Module { } - match - \b(module)(?:\s+([a-zA-Z_$][_$\w]*))?\s*(?=\{) - name - meta.module.js - captures - - 1 - - name - storage.type.module.js - - 2 - - name - entity.name.module.js - - - - - comment - match export like: export decl - match - \b(export)\b\s*(?=(?:module|class|function|var|let|const)\b(?:\s+[a-zA-Z_$][_$\w]*)?) - name - meta.module.export.js - captures - - 1 - - name - storage.type.export.js - - - - - - arrow-function - - patterns - - - name - arrow.function.js - patterns - - - match - (?x)\s*( - (?:(\() (.*?)? (\))) - | ([_$a-zA-Z][_$\w]*) - )\s*(=>) - name - storage.type.function.arrow.js - comment - match stuff like:(args) => - captures - - 1 - - name - entity.arrow.function.js - - 2 - - name - punctuation.definition.parameters.begin.js - - 3 - - name - variable.parameter.function.arrow.js - - 4 - - name - punctuation.definition.parameters.end.js - - 5 - - name - variable.parameter.function.arrow.js - - 6 - - name - punctuation.definition.arrow.js - - - - - - - - literal-function-constructor - - patterns - - - captures - - 1 - - name - storage.type.function.js - - 2 - - name - entity.name.function.js - - 3 - - name - punctuation.definition.parameters.begin.js - - 4 - - name - variable.parameter.function.js - - 5 - - name - punctuation.definition.parameters.end.js - - - comment - match regular function like: function myFunc(arg) { } - match - \b(function)(?:\s+([a-zA-Z_$]\w*))?\s*(\()(.*?)(\)) - name - meta.function.js - - - captures - - 1 - - name - support.class.js - - 2 - - name - support.constant.js - - - comment - match stuff like: Sound.prototype = { } when extending an object - match - ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\s*=\s* - name - meta.prototype.declaration.js - - - captures - - 1 - - name - support.class.js - - 2 - - name - support.constant.js - - 3 - - name - entity.name.function.js - - 4 - - name - storage.type.function.js - - 5 - - name - punctuation.definition.parameters.begin.js - - 6 - - name - variable.parameter.function.js - - 7 - - name - punctuation.definition.parameters.end.js - - - comment - match stuff like: Sound.prototype.play = function() { } - match - ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)?\s*(\()(.*?)(\)) - name - meta.prototype.function.js - - - captures - - 1 - - name - support.class.js - - 2 - - name - support.constant.js - - - comment - Sound.prototype - match - ([a-zA-Z_?.$][\w?.$]*)\.(prototype) - name - meta.prototype.js - - - captures - - 1 - - name - support.class.js - - 2 - - name - support.constant.js - - 3 - - name - entity.name.function.js - - - comment - match stuff like: Sound.prototype.play = myfunc - match - ([a-zA-Z_?.$][\w?.$]*)\.(prototype)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s* - name - meta.function.js - - - captures - - 1 - - name - support.object.js - - 2 - - name - entity.name.function.js - - 3 - - name - storage.type.function.js - - 4 - - name - entity.name.function.js - - 5 - - name - punctuation.definition.parameters.begin.js - - 6 - - name - variable.parameter.function.js - - 7 - - name - punctuation.definition.parameters.end.js - - - comment - match stuff like: Sound.play = function() { } - match - ([a-zA-Z_?.$][\w?.$]*)\.([a-zA-Z_?.$][\w?.$]*)\s*=\s*(function)( [a-zA-Z_?.$][\w?.$]*)?\s*(\()(.*?)(\)) - name - meta.function.js - - - captures - - 1 - - name - entity.name.function.js - - 2 - - name - punctuation.separator.key-value.js - - 3 - - name - storage.type.function.js - - 4 - - name - punctuation.definition.parameters.begin.js - - 5 - - name - variable.parameter.function.js - - 6 - - name - punctuation.definition.parameters.end.js - - - comment - match stuff like: foobar: function() { } - match - \b([a-zA-Z_?.$][\w?.$]*)\s*(:)\s*\b(function)?\s*(\()(.*?)(\)) - name - meta.function.json.js - - - captures - - 1 - - name - string.quoted.single.js - - 10 - - name - storage.type.function.js - - 11 - - name - punctuation.definition.parameters.begin.js - - 12 - - name - variable.parameter.function.js - - 13 - - name - punctuation.definition.parameters.end.js - - 2 - - name - punctuation.definition.string.begin.js - - 3 - - name - entity.name.function.js - - 4 - - name - punctuation.definition.string.end.js - - 5 - - name - string.quoted.double.js - - 6 - - name - punctuation.definition.string.begin.js - - 7 - - name - entity.name.function.js - - 8 - - name - punctuation.definition.string.end.js - - 9 - - name - punctuation.separator.key-value.js - - - comment - Attempt to match "foo": function - match - (?:((')(.*?)('))|((")(.*?)(")))\s*(:)\s*\b(function)?\s*(\()(.*?)(\)) - name - meta.function.json.js - - - - literal-keywords - - patterns - - - captures - - 1 - - name - keyword.operator.new.js - - 2 - - name - entity.name.type.new.js - - - match - (new)\s+([a-zA-Z_?.$][\w?.$]*) - name - meta.instance.constructor - - - match - \b(var|let|const)\b - name - keyword.control.declaration.js - - - match - \b(return|yield)\b - name - keyword.control.flow.js - - - match - \b(else|if)\b - name - keyword.control.conditional.js - - - match - \b(catch|finally|throw|try)\b - name - keyword.control.trycatch.js - - - match - \b(break|continue|do|for|goto|while)\b - name - keyword.control.loop.js - - - match - \b(case|default|switch)\b - name - keyword.control.switch.js - - - match - \b(delete|in(stanceof)?|new|typeof|void|with)\b - name - keyword.operator.js - - - match - \btrue\b - name - constant.language.boolean.true.js - - - match - \bfalse\b - name - constant.language.boolean.false.js - - - match - \bnull\b - name - constant.language.null.js - - - match - \bundefined\b - name - constant.language.undefined.js - - - match - \bNaN\b - name - constant.language.nan.js - - - match - (?<!\.)\b(arguments)\b - name - variable.language.arguments.js - - - match - (?<!\.)\b(super)\b - name - variable.language.super.js - - - match - (?<!\.)\b(this)\b - name - variable.language.this.js - - - match - (?<!\.)\b(self)\b - name - storage.self.js - - - match - (?<=\.)\b(__proto__)\b - name - variable.language.proto.js - - - match - (?<=\.)\b(constructor)\b - name - variable.language.constructor.js - - - match - (?<=\.)\b(prototype)\b - name - variable.language.prototype.js - - - match - !|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|/=|%=|\+=|\-=|&=|\^= - name - keyword.operator.js - - - match - : - name - punctuation.separator.key-value - - - match - (?x) - !(?!=)| # logical-not right-to-left right - && | # logical-and left-to-right both - \|\| # logical-or left-to-right both - name - keyword.operator.logical.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 - name - 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 - name - 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 - name - 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 - name - keyword.operator.comparison.js - - - match - (?x)= - name - keyword.operator.assignment.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 - name - keyword.operator.arithmetic.js - - - - literal-labels - - patterns - - - captures - - 2 - - name - punctuation.separator.key-value.js - - - match - (?<=['"])(\s*)(:) - - - captures - - 1 - - name - string.unquoted.label.js - - 2 - - name - punctuation.separator.key-value.js - - - match - (?<!\?|\? |case )(?!\?)([_$a-zA-Z][_$\w]*)\s*(:) - name - constant.other.object.key.js - - - - literal-number - - patterns - - - match - (?i)(?:\B[-+]|\b)0x[0-9a-f]*\.(\B|\b[0-9]+) - name - invalid.illegal.numeric.hex.js - - - match - (?:\B[-+]|\b)0[0-9]+\.(\B|\b[0-9]+) - name - invalid.illegal.numeric.octal.js - - - match - (?xi)(?:\B[-+])?(?: - \b0x[0-9a-f]* # HEX - |( \B\.[0-9]+ # EG: .999 - | \b[0-9]+ (\.[0-9]*)? # EG: 999.999 or 999. or 999 - )(e[-+]?[0-9]+)? # EG: e+123 or E-123 - ) - name - constant.numeric.js - - - match - (?:\B[-+]|\b)(Infinity)\b - name - constant.language.infinity.js - - - - literal-punctuation - - patterns - - - match - \; - name - punctuation.terminator.statement.js - - - match - , - name - meta.delimiter.object.comma.js - - - match - \. - name - meta.delimiter.method.period.js - - - match - \{|\} - name - meta.brace.curly.js - - - match - \(|\) - name - meta.brace.round.js - - - match - \[|\] - name - meta.brace.square.js - - - match - (?<=\.)\s - name - meta.complete.method - - - - literal-quasi - - patterns - - - begin - ([a-zA-Z$_][\w$_]*)?(`) - beginCaptures - - 1 - - name - entity.quasi.tag.name.js - - 2 - - name - punctuation.definition.quasi.begin.js - - - end - ` - endCaptures - - 0 - - name - punctuation.definition.quasi.end.js - - - name - string.quasi.js - patterns - - - name - entity.quasi.element.js - begin - \${ - beginCaptures - - 0 - - name - punctuation.quasi.element.begin.js - - - end - } - endCaptures - - 0 - - name - punctuation.quasi.element.end.js - - - patterns - - - include - $base - - - - - - - - literal-regex - - patterns - - - begin - (?x) (?<= [\[,=(:] | ^ | && | return )\s*((/)) (?! [/*+{}?] | $ ) - beginCaptures - - 1 - - name - string.regexp.js - - 2 - - name - punctuation.definition.string.begin.js - - - contentName - string.regexp.js - end - ((/([igm]*)))|(?=</\s*script\s*>\s*\n)|(?<=[^\\]\n) - endCaptures - - 1 - - name - string.regexp.js - - 2 - - name - punctuation.definition.string.end.js - - 3 - - name - keyword.other.js - - - patterns - - - match - \\\n - name - constant.character.escape.newline.js - - - match - \n - name - invalid.illegal.newline.js - - - match - \\. - name - constant.character.escape.js - - - - - - literal-string - - patterns - - - begin - ' - beginCaptures - - 0 - - name - punctuation.definition.string.begin.js - - - end - (?i)'|(?=</\s*script\s*>\s*\n)|(?<=[^\\]\n) - endCaptures - - 0 - - name - punctuation.definition.string.end.js - - - name - string.quoted.single.js - patterns - - - include - #string-single-innards - - - - - begin - " - beginCaptures - - 0 - - name - punctuation.definition.string.begin.js - - - end - (?i)"|(?=</\s*script\s*>\s*\n)|(?<=[^\\]\n) - endCaptures - - 0 - - name - punctuation.definition.string.end.js - - - name - string.quoted.double.js - patterns - - - include - #string-double-innards - - - - - - literal-variable - - patterns - - - match - \.?[A-Z][_$\dA-Z]*\b - name - variable.other.constant.js - - - match - \b([A-Z][_$\w]*\.?)\s*?(?:([a-z$_][\w_$]*(?=\())|([a-z$_][\w_$]*))? - name - meta.entity.static.js - captures - - 1 - - name - variable.other.class.js - - 2 - - name - meta.function.call.class.static.js - - 3 - - name - variable.other.class.static.js - - - - - match - (?<!\.)[_$a-zA-Z][_$\w]*\s*(?=[\[\.]) - name - variable.other.object.js - - - captures - - 0 - - name - meta.property-name.js - - 1 - - name - variable.other.object.js - - - match - ([_$a-zA-Z][_$\w]*)\s*(?=[\[\.]) - name - meta.property.js - - - captures - - 0 - - name - variable.other.property.js - - - match - (?<=[\.\]])\s*[_$a-zA-Z][_$\w]* - name - meta.property.js - - - match - [_$a-zA-Z][_$\w]* - name - variable.other.readwrite.js - - - - special - - patterns - - - match - \b(console)\b - name - entity.name.type.object.js.firebug - - - match - \.(warn|info|log|error|time|timeEnd|assert)\b - name - support.function.js.firebug - - - match - \b(debugger)\b - name - keyword.other.js - - - - special-comments-conditional-compilation - - patterns - - - begin - /\*(?=@) - captures - - 0 - - name - punctuation.definition.comment.js - - - end - \*/ - endCaptures - - 1 - - name - keyword.control.conditional.js - - 2 - - name - punctuation.definition.keyword.js - - - name - comment.block.conditional.js - patterns - - - include - $base - - - - - captures - - 1 - - name - punctuation.definition.keyword.js - - - match - (@)(if|elif|else|end) - name - keyword.control.conditional.js - - - captures - - 1 - - name - punctuation.definition.keyword.js - - - match - (@)(cc_on|set) - name - keyword.operator.conditional.js - - - captures - - 1 - - name - punctuation.definition.variable.js - - - match - (@)(_win32|_win16|_mac|_alpha|_x86|_mc680x0|_PowerPC|_jscript_build|_jscript_version|_jscript|_debug|_fast|[a-zA-Z]\w+) - name - variable.other.conditional.js - - - - string-double-innards - - patterns - - - match - \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.) - name - constant.character.escape.js - - - match - \\\n - name - constant.character.escape.newline.js - - - match - \n - name - invalid.illegal.newline.js - - - match - (?i)</\s*script\s*> - name - invalid.deprecated.inconsistent.js - - - - string-single-innards - - patterns - - - match - \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.) - name - constant.character.escape.js - - - match - \\\n - name - constant.character.escape.newline.js - - - match - \n - name - invalid.illegal.newline.js - - - match - (?i)</\s*script\s*> - name - invalid.deprecated.inconsistent.js - - - - sugar - - patterns - - - begin - ^(?=(\t| )) - end - (?=[^\t\s]) - name - meta.leading-tabs - patterns - - - captures - - 1 - - name - meta.odd-tab.group1.spaces - - 10 - - name - meta.even-tab.group10.spaces - - 11 - - name - meta.odd-tab.group11.spaces - - 2 - - name - meta.even-tab.group2.spaces - - 3 - - name - meta.odd-tab.group3.spaces - - 4 - - name - meta.even-tab.group4.spaces - - 5 - - name - meta.odd-tab.group5.spaces - - 6 - - name - meta.even-tab.group6.spaces - - 7 - - name - meta.odd-tab.group7.spaces - - 8 - - name - meta.even-tab.group8.spaces - - 9 - - name - meta.odd-tab.group9.spaces - - - match - ( )( )?( )?( )?( )?( )?( )?( )?( )?( )?( )? - - - captures - - 1 - - name - meta.odd-tab.group1.tab - - 10 - - name - meta.even-tab.group10.tab - - 11 - - name - meta.odd-tab.group11.tab - - 2 - - name - meta.even-tab.group2.tab - - 3 - - name - meta.odd-tab.group3.tab - - 4 - - name - meta.even-tab.group4.tab - - 5 - - name - meta.odd-tab.group5.tab - - 6 - - name - meta.even-tab.group6.tab - - 7 - - name - meta.odd-tab.group7.tab - - 8 - - name - meta.even-tab.group8.tab - - 9 - - name - meta.odd-tab.group9.tab - - - match - (\t)(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)?(\t)? - - - - - - support - - patterns - - - match - \b(Array|Boolean|Date|Function|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap)\b - name - support.class.builtin.js - - - match - \b((Eval|Range|Reference|Syntax|Type|URI)?Error)\b - name - support.class.error.js - - - match - \b(s(hift|ort|plice)|unshift|p(op|ush)|reverse)\b(?=\() - name - entity.name.function.mutator.js - - - match - \b(natives|buffer|child_process|cluster|crypto|d(gram|ns)|fs|http(s)?|net|os|path|punycode|(query)?string(_decoder)?|re(adline|pl)|tls|tty|util|vm|zlib)\b - name - support.module.node.js - - - match - \b(process(.env)?|global|GLOBAL|root|std(out|in|err)|exports)\b - name - support.keyword.node.js - - - match - \b(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream|Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\b - name - support.class.node.js - - - match - \b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape)\b(?=\() - name - entity.name.function.js - - - match - \b(ELEMENT_NODE|ATTRIBUTE_NODE|TEXT_NODE|CDATA_SECTION_NODE|ENTITY_REFERENCE_NODE|ENTITY_NODE|PROCESSING_INSTRUCTION_NODE|COMMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE|DOCUMENT_FRAGMENT_NODE|NOTATION_NODE|INDEX_SIZE_ERR|DOMSTRING_SIZE_ERR|HIERARCHY_REQUEST_ERR|WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR)\b - name - support.constant.dom.js - - - - - uuid - 0D2D03B9-F18B-4D9D-A960-716FDEC35331 - - diff --git a/JavaScriptNext.tmTheme b/JavaScriptNext.tmTheme deleted file mode 100644 index 2e05217..0000000 --- a/JavaScriptNext.tmTheme +++ /dev/null @@ -1,1899 +0,0 @@ - - - - - name - JavaScriptNext - settings - - - settings - - activeGuide - #3333FFFF - background - #000000 - bracketsBackground - #ff00aa66 - bracketsOptions - background - caret - #ff0099 - foreground - #e6e6e6 - guide - #33333388 - gutter - #6600ff33 - invisibles - #404040 - lineHighlight - #ff009933 - multiEditHighlight - #00ff0022 - searchHighlight - #FF00AA99 - selection - #00ffff44 - stackGuide - #333333CC - - - - name - bracket.curly - scope - bracket.curly - settings - - background - #FF44AA - foreground - #3399FF - - - - name - bracket.square - scope - bracket.square - settings - - background - #2266CC - foreground - #FF8800 - - - - name - bracket.round - scope - bracket.round - settings - - background - #9922FF - foreground - #00FF00 - - - - name - bracket.quote - scope - bracket.quote - settings - - background - #00FF00 - - - - name - comment - scope - comment - settings - - fontStyle - italic - foreground - #646464ff - - - - name - Invalid - scope - invalid - settings - - background - #ff000022 - - - - name - constant - scope - constant - settings - - foreground - #3387ccff - - - - name - Keyword - scope - keyword - settings - - foreground - #e28964 - - - - name - constant.numeric - scope - constant.numeric - settings - - foreground - #ffff66 - - - - name - Storage - scope - storage - settings - - foreground - #99cf50 - - - - name - storage.modifier - scope - storage.modifier - settings - - foreground - #cf5099 - - - - name - storage.self - scope - storage.self - settings - - fontStyle - bold - foreground - #cc0033 - - - - name - storage.type - scope - storage.type - settings - - foreground - #cf9950 - - - - name - Support - scope - support - settings - - foreground - #8a5c8dff - - - - name - entity.name.function - scope - entity.name.function - settings - - foreground - #bb00ff - - - - name - keyword control - scope - keyword.control - settings - - foreground - #ff00ff - - - - name - keyword.control.declaration - scope - keyword.control.declaration - settings - - foreground - #8888aa - - - - name - keyword.control.module - scope - keyword.control.module - settings - - foreground - #ffff33 - background - #ffff3333 - options - underline - - - - name - keyword.control.flow - scope - keyword.control.flow - settings - - fontStyle - bold - foreground - #ff6600 - background - #110300 - - - - - name - keyword.control.conditional - scope - keyword.control.conditional - settings - - foreground - #ff00ff - - - - name - keyword.control.trycatch - scope - keyword.control.trycatch - settings - - foreground - #ff0033 - - - - name - keyword.control.loop - scope - keyword.control.loop - settings - - foreground - #009999 - - - - name - keyword.control.switch - scope - keyword.control.switch - settings - - foreground - #999999 - - - - name - keyword operator - scope - keyword.operator - settings - - foreground - #ff0080 - - - - name - Function arg - scope - meta.function.argument, variable.parameter, meta.parens.c - settings - - foreground - #77ff11 - - - - name - - scope - punctuation.section.embedded - settings - - background - #0D0D0D37 - foreground - #00d3ffff - - - - name - keyword.other.unit - scope - keyword.other.unit, keyword.unit.css - settings - - foreground - #80ff00ff - - - - name - invalid.illegal - scope - invalid.illegal - settings - - background - #562d56bf - foreground - #fd5ff1ff - - - - name - string.quoted source - scope - string.quoted source - settings - - foreground - #daefa3 - - - - name - string constant - scope - string constant - settings - - foreground - #cfed81 - - - - name - string.regexp - scope - string.regexp - settings - - foreground - #6fff17 - - - - name - punctuation.definition.string - scope - punctuation.definition.string - settings - - background - #15151501 - foreground - #b4ff82 - - - - name - string.regexp.special - scope - - string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition - - settings - - foreground - #00d505 - - - - name - string.regexp punctuation keyword - scope - string.regexp punctuation keyword - settings - - foreground - #c559ff - - - - name - string variable - scope - string variable - settings - - foreground - #8a9a95 - - - - name - support.function - scope - support.function - settings - - foreground - #fcf352ff - - - - name - meta.tag - scope - meta.tag - settings - - foreground - #4f9effff - - - - name - meta.tag entity - scope - meta.tag entity - settings - - foreground - #157eff - - - - name - HTML/XML tag attribute value - scope - meta.tag string.quoted.double.html - settings - - foreground - #E07D2C - - - - name - html5 tag - scope - meta.tag.block.any.html.html5 - settings - - foreground - #e88bfcff - - - - name - html5 tag entity - scope - meta.tag.block.any.html.html5 entity - settings - - foreground - #d730faff - - - - name - meta.tag.inline - scope - - source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity - - settings - - foreground - #87a7e2ff - - - - name - html js tag - scope - source.js.embedded.html entity.name.tag.script.html - settings - - foreground - #FF3535 - - - - name - html js tag braces - scope - source.js.embedded.html punctuation.definition.tag.html - settings - - foreground - #FF1E1E - - - - name - html js tag url - scope - source.js.embedded.html string.quoted.double.html - settings - - foreground - #FF9D9D - - - - name - Attribute - scope - entity.other.attribute-name - settings - - foreground - #7349beff - - - - name - Meta Toc List - scope - meta.toc-list - settings - - background - #162c1aff - foreground - #BEFEC7FF - options - underline - - - - name - js variable readwrite - scope - meta.initialization, variable.other.readwrite.js - settings - - foreground - #ff9122 - - - - name - js object - scope - variable.other.object.js - settings - - foreground - #ffee00 - - - - name - js object with parent - scope - meta.property-name.js variable.other.object.js - settings - - foreground - #ffff88 - - - - name - support.variable.property.js - scope - support.variable.property.js - settings - - foreground - #3399ff - - - - name - variable.other.dot-access - scope - variable.other.dot-access - settings - - foreground - #66ffdd - - - - name - variable.other.property.js - scope - variable.other.property.js - settings - - foreground - #37C1BE - - - - name - punctuation.section.scope.square.js - scope - punctuation.section.scope.square.js - settings - - foreground - #ff2404 - - - - name - punctuation.section.scope.round.js, meta.brace.round - scope - punctuation.section.scope.round.js, meta.brace.round - settings - - foreground - #1c38ff - - - - name - punctuation.definition.arrow.js - scope - punctuation.definition.arrow.js - settings - - fontStyle - bold - foreground - #aa00ff - background - #001133 - - - - name - entity.arrow.function.js - scope - entity.arrow.function.js - settings - - fontStyle - bold - foreground - #aa00ff - background - #001133 - - - - name - variable.language - scope - variable.language - settings - - foreground - #aa0044 - - - - name - variable.language.prototype - scope - variable.language.prototype - settings - - foreground - #ff6600 - - - - name - support.class.error.js - scope - support.class.error.js - settings - - foreground - #ff5522 - - - - name - support.class.builtin.js - scope - support.class.builtin.js - settings - - fontStyle - italic - foreground - #ffee00 - - - - name - support.class.node.js - scope - support.class.node.js - settings - - foreground - #1224fe - - - - name - entity.name.function.node.js - scope - entity.name.function.node.js - settings - - foreground - #d84014 - - - - name - support.keyword.node.js - scope - support.keyword.node.js - settings - - fontStyle - bold - foreground - #99ef25 - - - - name - variable.import.destructuring.js - scope - variable.import.destructuring.js - settings - - foreground - #00bbff - - - - name - other.object.key.js - scope - other.object.key.js - settings - - foreground - #1C98C1 - - - - name - meta.accessor.js punctuation.definition.parameters - scope - meta.accessor.js punctuation.definition.parameters - settings - - foreground - #005588 - - - - name - storage.type.accessor.js - scope - storage.type.accessor.js - settings - - fontStyle - bold italic - foreground - #0066aa - background - #001122 - - - - name - entity.name.module.js, variable.import.parameter.js, variable.other.class.js - scope - entity.name.module.js, variable.import.parameter.js, variable.other.class.js - settings - - foreground - #ff0044 - background - #220011 - - - - name - storage.type.module.js, storage.type.export.js, storage.type.import.js, storage.type.from.js - scope - storage.type.module.js, storage.type.export.js, storage.type.import.js, storage.type.from.js - settings - - foreground - #cccc44 - background - #222211 - - - - name - storage.type.class.js, storage.type.extends.js - scope - storage.type.class.js, storage.type.extends.js - settings - - foreground - #0044aa - background - #001122 - - - - name - meta.function.call.class.static.js - scope - meta.function.call.class.static.js - settings - - foreground - #880011 - - - - name - variable.other.class.static.js - scope - variable.other.class.static.js - settings - - foreground - #aa0066 - - - - name - entity.name.accessor.js - scope - entity.name.accessor.js - settings - - fontStyle - bold italic - foreground - #00ffcc - background - #001122 - - - - name - entity.name.method.js - scope - entity.name.method.js - settings - - fontStyle - italic bold - foreground - #aa00ff - background - #110022 - - - - name - meta.method.js - scope - meta.method.js - settings - - fontStyle - bold - foreground - #660099 - - - - name - storage.type.function.js - scope - storage.type.function.js - settings - - fontStyle - bold - foreground - #99cc44 - - - - name - string.quoted.single - scope - string.quoted.single - settings - - foreground - #88FFAAAA - - - - name - variable.other.quasi.js - scope - variable.other.quasi.js - settings - - foreground - #ff0099 - - - - name - string.quasi.js - scope - string.quasi.js - settings - - foreground - #00FF00 - - - - name - punctuation.quasi.element - scope - punctuation.quasi.element - settings - - foreground - #008800 - - - - name - entity.quasi.tag.name.js - scope - entity.quasi.tag.name.js - settings - - foreground - #ffff00 - - - - name - meta.group.braces.square, punctuation.destructuring - scope - meta.group.braces.square string.quoted.single, punctuation.destructuring - settings - - foreground - #47E9AC - - - - name - string.quoted.double - scope - string.quoted.double - settings - - foreground - #11bb11 - - - - name - punctuation.section.scope.curly.js - scope - punctuation.section.scope.curly.js - settings - - foreground - #F9044E - - - - name - meta.delimiter.object.comma.js - scope - meta.delimiter.object.comma.js - settings - - foreground - #00ffff - - - - name - meta.group.braces.curly string.quoted.single - scope - meta.group.braces.curly string.quoted.single - settings - - foreground - #16B853 - - - - name - support.function - scope - support.function - settings - - foreground - #B532ff - - - - name - punctuation.definition.string.begin.js - scope - punctuation.definition.string.begin.js - settings - - foreground - #D2E20C - - - - name - punctuation.definition.string.end.js - scope - punctuation.definition.string.end.js - settings - - foreground - #CEA30D - - - - name - instance constructor - scope - meta.class.inheritance, meta.instance.constructor - settings - - fontStyle - italic underline - foreground - #e81e41 - - - - name - entity.name.class.js - scope - entity.name.class.js - settings - - fontStyle - italic - background - #00ffff33 - foreground - #00ffff - - - - name - entity.name.extends.js - scope - entity.name.extends.js - settings - - background - #00ff9933 - foreground - #00ff99 - fontStyle - italic - - - - name - function call - scope - meta.function-call entity.name.function - settings - - foreground - #5b24ff - - - - name - function call with args - scope - meta.function-call.function.with-arguments.js - settings - - foreground - #33ff00 - - - - name - js brace - scope - meta.brace.curly.js - settings - - foreground - #ff0099 - - - - name - js paren - scope - meta.brace.round.js - settings - - background - #000000ff - foreground - #d0c5feff - - - - name - js constant escape - scope - constant.character.escape - settings - - foreground - #10cf62ff - - - - name - pseudo-class - scope - - meta.selector.css entity.other.attribute-name.tag.pseudo-class - - settings - - foreground - #4fbc4b - - - - name - css selectors - scope - entity.namespace.unicode.css - settings - - foreground - #FF4F4F - - - - name - entity.other.attribute-name.id - scope - entity.other.attribute-name.id - settings - - background - #0b0028ff - foreground - #f20073ff - - - - name - class name - scope - meta.prototype support.class - settings - - foreground - #ff0099 - - - - name - support object - scope - support.object - settings - - fontStyle - bold - foreground - #ffee00 - - - - name - class name prototype - scope - meta.prototype support.constant - settings - - foreground - #ff6600 - - - - name - prototype declaration - scope - meta.prototype.declaration.js - settings - - fontStyle - bold - - - - name - js undefined - scope - constant.language.undefined.js - settings - - foreground - #555588 - - - - name - variable.other.constant.js - scope - variable.other.constant.js - settings - - foreground - #00ff33 - background - #003311 - - - - name - false - scope - constant.language.boolean.false - settings - - foreground - #aaaa55 - - - - name - true - scope - constant.language.boolean.true - settings - - foreground - #cc7744 - - - - name - js null - scope - constant.language.null.js - settings - - foreground - #558855 - - - - name - css#id punctuation - scope - punctuation.definition.entity.id.css - settings - - background - #0b0028 - foreground - #ff489f - - - - name - css.class - scope - - entity.other.attribute-name.class, source.css.less entity.other.attribute-name.class.css - - settings - - background - #0b0028 - foreground - #9529b8 - - - - name - css.class puntuation - scope - punctuation.definition.entity.class.css - settings - - background - #0b0028ff - foreground - #cd87e4ff - - - - name - css pseudo element - scope - entity.other.attribute-name.pseudo-element.css - settings - - background - #0b0028ff - foreground - #ff00ffff - - - - name - css property-name - scope - support.type.property-name.css - settings - - foreground - #b8efecff - - - - name - css @at-rule - scope - meta.preprocessor.at-rule keyword.control.at-rule - settings - - foreground - #d7c271ff - - - - name - css color - scope - - constant.other.color.rgb-value.css, support.constant.color.w3c-standard-color-name.css - - settings - - foreground - #fb7720ff - - - - name - css constants - scope - support.constant.property-value.css - settings - - foreground - #7ce85eff - - - - name - Puncation Termination - scope - punctuation.terminator, punctuation.separator - settings - - foreground - #4bfcf8ff - - - - name - css constructor.argument - scope - meta.constructor.argument.css - settings - - foreground - #8f9d6aff - - - - name - diff.header - scope - meta.diff, meta.diff.header, entity.name.namespace - settings - - background - #0e2231ff - foreground - #f8f8f8ff - - - - name - diff.deleted - scope - markup.deleted - settings - - background - #420e09ff - foreground - #f8f8f8ff - - - - name - diff.changed - scope - markup.changed - settings - - background - #4a410dff - foreground - #f8f8f8ff - - - - name - diff.inserted - scope - markup.inserted - settings - - background - #253b22ff - foreground - #f8f8f8ff - - - - name - Markup: Italic - scope - markup.italic - settings - - fontStyle - italic - foreground - #6ad500ff - - - - name - Markup: Underline - scope - markup.underline - settings - - foreground - #e18964ff - options - underline - - - - name - Markup: Quote - scope - markup.quote - settings - - background - #fee09c12 - fontStyle - italic - foreground - #e1d4b9ff - - - - name - Markup: Heading - scope - markup.heading, markup.heading entity - settings - - background - #de3280ff - foreground - #ffffffff - - - - name - Markup: List - scope - markup.list - settings - - foreground - #6657eaff - - - - name - Markup: Raw - scope - markup.raw - settings - - background - #b1b3ba08 - foreground - #578bb3ff - - - - name - Markup: Comment - scope - markup comment - settings - - foreground - #f67b37ff - - - - name - Markup: Separator - scope - meta.separator - settings - - background - #242424ff - foreground - #60a633ff - - - - name - Log Entry - scope - meta.line.entry.logfile, meta.line.exit.logfile - settings - - background - #eeeeee29 - foreground - #f8f8f8ff - - - - name - Log Entry Error - scope - meta.line.error.logfile - settings - - background - #751012 - foreground - #f8f8f8 - - - - name - JSON property top - scope - meta.structure.dictionary.json string.quoted.double - settings - - background - #111111 - foreground - #1144bb - - - - name - JSON property level 2 - scope - - meta.structure meta.structure.dictionary.json string.quoted.double - - settings - - foreground - #1122bb - - - - name - JSON property level 3 - scope - - meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double - - settings - - foreground - #2938eb - - - - name - JSON property level 4 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double - - settings - - foreground - #6d7ef1 - - - - name - JSON property level 5 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double - - settings - - foreground - #b3bbf7 - - - - name - JSON value - scope - meta.structure.dictionary.value.json string.quoted.double - settings - - foreground - #aa00aa - - - - name - JSON value level 2 - scope - - meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double - - settings - - foreground - #bf00bf - - - - name - JSON value level 3 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double - - settings - - foreground - #ff00ff - - - - name - JSON value level 4 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double - - settings - - foreground - #ff40ff - - - - name - JSON value level 5 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double - - settings - - foreground - #ff80ff - - - - name - JSON value string punctuation - scope - - meta.structure.dictionary.value.json string punctuation.definition.string.double - - settings - - foreground - #8409ff - - - - name - JSON array value - scope - meta.structure.array.json string.quoted.double - settings - - foreground - #5522aa - - - - name - JSON array value level 1 - scope - - meta.structure meta.structure meta.structure.array.json string.quoted.double - - settings - - foreground - #7017c8ff - - - - name - JSON array value level 2 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double - - settings - - foreground - #9541e9ff - - - - name - JSON array value level 3 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double - - settings - - foreground - #ba83f1ff - - - - name - JSON array value level 4 - scope - - meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double - - settings - - foreground - #dfc6f9ff - - - - name - JSON prop string punctuation - scope - - meta.structure.dictionary.json string punctuation.definition.string - - settings - - foreground - #66bbddff - - - - name - JSON array string puntuation - scope - - meta.structure.array.json string punctuation.definition.string - - settings - - foreground - #416be9ff - - - - name - JSON array brackets - scope - meta.structure.array.json punctuation.definition.array - settings - - foreground - #fcc401ff - - - - name - JSON object braces - scope - - meta.structure.dictionary.json punctuation.definition.dictionary - - settings - - foreground - #fedf76ff - - - - uuid - b238c753-1549-3f12-a519-0faa5dcd4f65 - - diff --git a/Monokai Phoenix.YAML-tmTheme b/Monokai Phoenix.YAML-tmTheme new file mode 100644 index 0000000..2e61b23 --- /dev/null +++ b/Monokai Phoenix.YAML-tmTheme @@ -0,0 +1,253 @@ +# [PackageDev] target_format: plist, ext: tmTheme +name: Monokai Phoenix +uuid: 5815b34d-fb7d-4593-bf0c-4f41f8b1f0a9 + +settings: +- settings: + activeGuide: '#9D550FB0' + background: '#111111' + 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: + fontStyle: italic + foreground: '#75715E' + +- name: String + scope: string + settings: + foreground: '#E6DB74' + +- name: Built-in constant + scope: constant.language + settings: + foreground: '#AE81FF' + +- name: User-defined constant + scope: constant.character, constant.other + settings: + foreground: '#AE81FF' + +- name: Invalid + scope: invalid + settings: + background: '#F92672' + +- name: constant + scope: constant + settings: + foreground: '#AE81FFA0' + +- name: Keyword + scope: keyword + settings: + foreground: '#F92672' + +- name: constant.numeric + scope: constant.numeric + settings: + foreground: '#AE81FF' + +- name: Storage + scope: storage + settings: + foreground: '#F92672' + +- name: storage.type + scope: storage.type + settings: + foreground: '#66D9EF' + +- name: Support + scope: support + settings: + foreground: '#8A5C8DFF' + +- name: Function arg + scope: meta.function.argument, variable.parameter, meta.parens.c + settings: + foreground: '#FD971F' + +- name: invalid.illegal + scope: invalid.illegal + settings: + background: '#562D56BF' + foreground: '#FD5FF1FF' + +- name: support.function + scope: support.function + settings: + foreground: '#A6E22E' + +- name: meta.tag entity + scope: entity.name.tag + settings: + foreground: '#F92672' + +- name: Attribute + scope: entity.other.attribute-name + settings: + foreground: '#A6E22E' + +- name: entity.arrow.function.js + scope: entity.arrow.function.js + settings: + foreground: '#AA00FF' + +- name: support.class.error.js + scope: support.class.error.js + settings: + foreground: '#FF5522' + +- name: support.class.node.js + scope: support.class.node.js + settings: + foreground: '#1224FE' + +- name: support.keyword.node.js + scope: support.keyword.node.js + settings: + fontStyle: bold + foreground: '#F92672' + +- name: entity.name.module.js, variable.import.parameter.js, variable.other.class.js + scope: entity.name.module.js, variable.import.parameter.js, variable.other.class.js + settings: + foreground: '#A6E22E' + +- name: entity.name.accessor.js + scope: entity.name.accessor.js + settings: + foreground: '#A6E22E' + +- name: entity.name.method.js + scope: entity.name.method.js + settings: + foreground: '#A6E22E' + +- name: meta.method.js + scope: meta.method.js + settings: + foreground: '#FFF' + +- name: support.function + scope: support.function + settings: + foreground: '#66D9EF' + +- name: Function name + scope: entity.name.function + settings: + foreground: '#A6E22E' + +- name: entity.name.class.js + scope: entity.name.class.js + settings: + fontStyle: italic + foreground: '#A6E22E' + +- name: entity.name.extends.js + scope: entity.name.extends.js + settings: + fontStyle: italic + foreground: '#00FF99' + +- name: entity.other.attribute-name.id + scope: entity.other.attribute-name.id + settings: + foreground: '#A6E22E' + +- name: class name + scope: meta.prototype support.class + settings: + foreground: '#A6E22E' + +- name: Library constant + scope: support.constant + settings: + foreground: '#66D9EF' + +- name: Library class/type + scope: support.type, support.class, variable.language + settings: + fontStyle: italic + foreground: '#66D9EF' + +- name: js undefined + scope: constant.language.undefined.js + settings: + foreground: '#AE81FF' + +- name: 'false' + scope: constant.language.boolean.false + settings: + foreground: '#AE81FF' + +- name: 'true' + scope: constant.language.boolean.true + settings: + foreground: '#AE81FF' + +- name: js null + scope: constant.language.null.js + settings: + foreground: '#AE81FF' + +- name: Inherited class + scope: entity.other.inherited-class + settings: + fontStyle: italic underline + foreground: '#A6E22E' + +- name: diff.header + scope: meta.diff, meta.diff.header, entity.name.namespace + settings: + foreground: '#75715E' + +- name: diff.deleted + scope: markup.deleted + settings: + background: '#420E09FF' + foreground: '#F92672' + +- name: diff.changed + scope: markup.changed + settings: + background: '#4A410DFF' + foreground: '#E6DB74' + +- name: diff.inserted + scope: markup.inserted + settings: + background: '#253B22FF' + foreground: '#F8F8F8FF' + +- name: Log Entry + scope: meta.line.entry.logfile, meta.line.exit.logfile + settings: + background: '#EEEEEE29' + foreground: '#F8F8F8FF' + +- name: Log Entry Error + scope: meta.line.error.logfile + settings: + background: '#751012' + foreground: '#F8F8F8' + +- name: JSON String + scope: meta.structure.dictionary.json string.quoted.double + settings: + foreground: '#CFCFC2' diff --git a/Next.YAML-tmTheme b/Next.YAML-tmTheme new file mode 100644 index 0000000..0ba385f --- /dev/null +++ b/Next.YAML-tmTheme @@ -0,0 +1,854 @@ +# [PackageDev] target_format: plist, ext: tmTheme +name: Next +uuid: b238c753-1549-3f12-a519-0faa5dcd4f65 + +settings: +- settings: + activeGuide: '#3333FFFF' + background: '#000000' + bracketsBackground: '#FF00AA66' + bracketsOptions: background + caret: '#FF0099' + foreground: '#E6E6E6' + guide: '#33333388' + gutter: '#6600FF33' + invisibles: '#404040' + lineHighlight: '#FF009933' + multiEditHighlight: '#00FF0022' + searchHighlight: '#FF00AA99' + selection: '#00FFFF44' + stackGuide: '#333333CC' + +- name: bracket.curly + scope: bracket.curly + settings: + background: '#FF44AA' + foreground: '#3399FF' + +- name: bracket.square + scope: bracket.square + settings: + background: '#2266CC' + foreground: '#FF8800' + +- name: bracket.round + scope: bracket.round + settings: + background: '#9922FF' + foreground: '#00FF00' + +- name: bracket.quote + scope: bracket.quote + settings: + background: '#00FF00' + +- name: comment + scope: comment + settings: + fontStyle: italic + foreground: '#646464FF' + +- name: Invalid + scope: invalid + settings: + background: '#FF000022' + +- name: constant + scope: constant + settings: + foreground: '#3387CCFF' + +- name: Keyword + scope: keyword + settings: + foreground: '#E28964' + +- name: constant.numeric + scope: constant.numeric + settings: + foreground: '#FFFF66' + +- name: Storage + scope: storage + settings: + foreground: '#99CF50' + +- name: storage.modifier + scope: storage.modifier + settings: + foreground: '#CF5099' + +- name: storage.self + scope: storage.self + settings: + fontStyle: bold + foreground: '#CC0033' + +- name: storage.type + scope: storage.type + settings: + foreground: '#CF9950' + +- name: Support + scope: support + settings: + foreground: '#8A5C8DFF' + +- name: entity.name.function + scope: entity.name.function + settings: + foreground: '#BB00FF' + +- name: keyword control + scope: keyword.control + settings: + foreground: '#FF00FF' + +- name: keyword.control.declaration + scope: keyword.control.declaration + settings: + foreground: '#8888AA' + +- name: keyword.control.module + scope: keyword.control.module + settings: + background: '#FFFF3333' + foreground: '#FFFF33' + options: underline + +- name: keyword.control.flow + scope: keyword.control.flow + settings: + background: '#110300' + fontStyle: bold + foreground: '#FF6600' + +- name: keyword.control.conditional + scope: keyword.control.conditional + settings: + foreground: '#FF00FF' + +- name: keyword.control.trycatch + scope: keyword.control.trycatch + settings: + foreground: '#FF0033' + +- name: keyword.control.loop + scope: keyword.control.loop + settings: + foreground: '#009999' + +- name: keyword.control.switch + scope: keyword.control.switch + settings: + foreground: '#999999' + +- name: keyword operator + scope: keyword.operator + settings: + foreground: '#FF0080' + +- name: Function arg + scope: meta.function.argument, variable.parameter, meta.parens.c + settings: + foreground: '#77FF11' + +- name: '' + scope: punctuation.section.embedded + settings: + background: '#0D0D0D37' + foreground: '#00D3FFFF' + +- name: keyword.other.unit + scope: keyword.other.unit, keyword.unit.css + settings: + foreground: '#80FF00FF' + +- name: invalid.illegal + scope: invalid.illegal + settings: + background: '#562D56BF' + foreground: '#FD5FF1FF' + +- name: string.quoted source + scope: string.quoted source + settings: + foreground: '#DAEFA3' + +- name: string constant + scope: string constant + settings: + foreground: '#CFED81' + +- name: string.regexp + scope: string.regexp + settings: + foreground: '#6FFF17' + +- name: punctuation.definition.string + scope: punctuation.definition.string + settings: + background: '#15151501' + foreground: '#B4FF82' + +- name: string.regexp.special + scope: "string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition" + settings: + foreground: '#00D505' + +- name: string.regexp punctuation keyword + scope: string.regexp punctuation keyword + settings: + foreground: '#C559FF' + +- name: string variable + scope: string variable + settings: + foreground: '#8A9A95' + +- name: support.function + scope: support.function + settings: + foreground: '#FCF352FF' + +- name: meta.tag + scope: meta.tag + settings: + foreground: '#4F9EFFFF' + +- name: meta.tag entity + scope: meta.tag entity + settings: + foreground: '#157EFF' + +- name: HTML/XML tag attribute value + scope: meta.tag string.quoted.double.html + settings: + foreground: '#E07D2C' + +- name: html5 tag + scope: meta.tag.block.any.html.html5 + settings: + foreground: '#E88BFCFF' + +- name: html5 tag entity + scope: meta.tag.block.any.html.html5 entity + settings: + foreground: '#D730FAFF' + +- name: meta.tag.inline + scope: "source entity.name.tag, source entity.other.attribute-name,meta.tag.inline, meta.tag.inline entity" + settings: + foreground: '#87A7E2FF' + +- name: html js tag + scope: source.js.embedded.html entity.name.tag.script.html + settings: + foreground: '#FF3535' + +- name: html js tag braces + scope: source.js.embedded.html punctuation.definition.tag.html + settings: + foreground: '#FF1E1E' + +- name: html js tag url + scope: source.js.embedded.html string.quoted.double.html + settings: + foreground: '#FF9D9D' + +- name: Attribute + scope: entity.other.attribute-name + settings: + foreground: '#7349BEFF' + +- name: Meta Toc List + scope: meta.toc-list + settings: + background: '#162C1AFF' + foreground: '#BEFEC7FF' + options: underline + +- name: js variable readwrite + scope: meta.initialization, variable.other.readwrite.js + settings: + foreground: '#FF9122' + +- name: js variable dollar + scope: meta.initialization, variable.other.dollar.js + settings: + fontStyle: italic + foreground: '#FF9122' + +- name: js object + scope: variable.other.object.js + settings: + foreground: '#FFEE00' + +- name: js object with parent + scope: meta.property-name.js variable.other.object.js + settings: + foreground: '#FFFF88' + +- name: support.variable.property.js + scope: support.variable.property.js + settings: + foreground: '#3399FF' + +- name: variable.other.dot-access + scope: variable.other.dot-access + settings: + foreground: '#66FFDD' + +- name: variable.other.property.js + scope: variable.other.property.js + settings: + foreground: '#37C1BE' + +- name: punctuation.section.scope.square.js + scope: punctuation.section.scope.square.js + settings: + foreground: '#FF2404' + +- name: punctuation.section.scope.round.js, meta.brace.round + scope: punctuation.section.scope.round.js, meta.brace.round + settings: + foreground: '#1C38FF' + +- name: punctuation.definition.arrow.js + scope: punctuation.definition.arrow.js + settings: + background: '#001133' + fontStyle: bold + foreground: '#AA00FF' + +- name: entity.arrow.function.js + scope: entity.arrow.function.js + settings: + background: '#001133' + fontStyle: bold + foreground: '#AA00FF' + +- name: variable.language + scope: variable.language + settings: + foreground: '#AA0044' + +- name: variable.language.prototype + scope: variable.language.prototype + settings: + foreground: '#FF6600' + +- name: support.class.error.js + scope: support.class.error.js + settings: + foreground: '#FF5522' + +- name: support.class.builtin.js + scope: support.class.builtin.js + settings: + fontStyle: italic + foreground: '#FFEE00' + +- name: support.class.node.js + scope: support.class.node.js + settings: + foreground: '#1224FE' + +- name: entity.name.function.node.js + scope: entity.name.function.node.js + settings: + foreground: '#D84014' + +- name: support.keyword.node.js + scope: support.keyword.node.js + settings: + fontStyle: bold + foreground: '#99EF25' + +- name: variable.import.destructuring.js + scope: variable.import.destructuring.js + settings: + foreground: '#00BBFF' + +- name: other.object.key.js + scope: other.object.key.js + settings: + foreground: '#1C98C1' + +- name: meta.accessor.js punctuation.definition.parameters + scope: meta.accessor.js punctuation.definition.parameters + settings: + foreground: '#005588' + +- name: storage.type.accessor.js + scope: storage.type.accessor.js + settings: + background: '#001122' + fontStyle: bold italic + foreground: '#0066AA' + +- name: entity.name.module.js, variable.import.parameter.js, variable.other.class.js + scope: entity.name.module.js, variable.import.parameter.js, variable.other.class.js + settings: + background: '#220011' + foreground: '#FF0044' + +- name: storage.type.module.js, storage.type.export.js, storage.type.import.js, storage.type.from.js + scope: storage.type.module.js, storage.type.export.js, storage.type.import.js, storage.type.from.js + settings: + background: '#222211' + foreground: '#CCCC44' + +- name: storage.type.class.js, storage.type.extends.js + scope: storage.type.class.js, storage.type.extends.js + settings: + background: '#001122' + foreground: '#0044AA' + +- name: 'meta.function.call.class.static.js ' + scope: 'meta.function.call.class.static.js ' + settings: + foreground: '#880011' + +- name: variable.other.class.static.js + scope: variable.other.class.static.js + settings: + foreground: '#AA0066' + +- name: entity.name.accessor.js + scope: entity.name.accessor.js + settings: + background: '#001122' + fontStyle: bold italic + foreground: '#00FFCC' + +- name: entity.name.method.js + scope: entity.name.method.js + settings: + background: '#110022' + fontStyle: italic bold + foreground: '#AA00FF' + +- name: meta.method.js + scope: meta.method.js + settings: + fontStyle: bold + foreground: '#660099' + +- name: storage.type.function.js + scope: storage.type.function.js + settings: + fontStyle: bold + foreground: '#99CC44' + +- name: string.quoted.single + scope: string.quoted.single + settings: + foreground: '#88FFAAAA' + +- name: variable.other.quasi.js + scope: variable.other.quasi.js + settings: + foreground: '#FF0099' + +- name: string.quasi.js + scope: string.quasi.js + settings: + foreground: '#00FF00' + +- name: punctuation.quasi.element + scope: punctuation.quasi.element + settings: + foreground: '#008800' + +- name: entity.quasi.tag.name.js + scope: entity.quasi.tag.name.js + settings: + foreground: '#FFFF00' + +- name: meta.group.braces.square, punctuation.destructuring + scope: meta.group.braces.square string.quoted.single, punctuation.destructuring + settings: + foreground: '#47E9AC' + +- name: string.quoted.double + scope: string.quoted.double + settings: + foreground: '#11BB11' + +- name: punctuation.section.scope.curly.js + scope: punctuation.section.scope.curly.js + settings: + foreground: '#F9044E' + +- name: meta.delimiter.comma.js + scope: meta.delimiter.comma.js + settings: + foreground: '#00FFFF' + +- name: meta.group.braces.curly string.quoted.single + scope: meta.group.braces.curly string.quoted.single + settings: + foreground: '#16B853' + +- name: support.function + scope: support.function + settings: + foreground: '#B532FF' + +- name: punctuation.definition.string.begin.js + scope: punctuation.definition.string.begin.js + settings: + foreground: '#D2E20C' + +- name: punctuation.definition.string.end.js + scope: punctuation.definition.string.end.js + settings: + foreground: '#CEA30D' + +- name: instance constructor + scope: meta.class.inheritance, meta.instance.constructor + settings: + fontStyle: italic underline + foreground: '#E81E41' + +- name: entity.name.class.js + scope: entity.name.class.js + settings: + background: '#00FFFF33' + fontStyle: italic + foreground: '#00FFFF' + +- name: entity.name.extends.js + scope: entity.name.extends.js + settings: + background: '#00FF9933' + fontStyle: italic + foreground: '#00FF99' + +- name: function call + scope: meta.function-call entity.name.function + settings: + foreground: '#5B24FF' + +- name: function call with args + scope: meta.function-call.function.with-arguments.js + settings: + foreground: '#33FF00' + +- name: js brace + scope: meta.brace.curly.js + settings: + foreground: '#FF0099' + +- name: js paren + scope: meta.brace.round.js + settings: + background: '#000000FF' + foreground: '#D0C5FEFF' + +- name: js constant escape + scope: constant.character.escape + settings: + foreground: '#10CF62FF' + +- name: pseudo-class + scope: "meta.selector.css entity.other.attribute-name.tag.pseudo-class" + settings: + foreground: '#4FBC4B' + +- name: css selectors + scope: entity.namespace.unicode.css + settings: + foreground: '#FF4F4F' + +- name: entity.other.attribute-name.id + scope: entity.other.attribute-name.id + settings: + background: '#0B0028FF' + foreground: '#F20073FF' + +- name: class name + scope: meta.prototype support.class + settings: + foreground: '#FF0099' + +- name: support object + scope: support.object + settings: + fontStyle: bold + foreground: '#FFEE00' + +- name: class name prototype + scope: meta.prototype support.constant + settings: + foreground: '#FF6600' + +- name: prototype declaration + scope: meta.prototype.declaration.js + settings: + fontStyle: bold + +- name: js undefined + scope: constant.language.undefined.js + settings: + foreground: '#555588' + +- name: variable.other.constant.js + scope: variable.other.constant.js + settings: + background: '#003311' + foreground: '#00FF33' + +- name: 'false' + scope: constant.language.boolean.false + settings: + foreground: '#AAAA55' + +- name: 'true' + scope: constant.language.boolean.true + settings: + foreground: '#CC7744' + +- name: js null + scope: constant.language.null.js + settings: + foreground: '#558855' + +- name: css#id punctuation + scope: punctuation.definition.entity.id.css + settings: + background: '#0B0028' + foreground: '#FF489F' + +- name: css.class + scope: "entity.other.attribute-name.class, source.css.less entity.other.attribute-name.class.css" + settings: + background: '#0B0028' + foreground: '#9529B8' + +- name: css.class puntuation + scope: punctuation.definition.entity.class.css + settings: + background: '#0B0028FF' + foreground: '#CD87E4FF' + +- name: css pseudo element + scope: entity.other.attribute-name.pseudo-element.css + settings: + background: '#0B0028FF' + foreground: '#FF00FFFF' + +- name: css property-name + scope: support.type.property-name.css + settings: + foreground: '#B8EFECFF' + +- name: css @at-rule + scope: meta.preprocessor.at-rule keyword.control.at-rule + settings: + foreground: '#D7C271FF' + +- name: css color + scope: "constant.other.color.rgb-value.css, support.constant.color.w3c-standard-color-name.css" + settings: + foreground: '#FB7720FF' + +- name: css constants + scope: support.constant.property-value.css + settings: + foreground: '#7CE85EFF' + +- name: Puncation Termination + scope: punctuation.terminator, punctuation.separator + settings: + foreground: '#4BFCF8FF' + +- name: css constructor.argument + scope: meta.constructor.argument.css + settings: + foreground: '#8F9D6AFF' + +- name: diff.header + scope: meta.diff, meta.diff.header, entity.name.namespace + settings: + background: '#0E2231FF' + foreground: '#F8F8F8FF' + +- name: diff.deleted + scope: markup.deleted + settings: + background: '#420E09FF' + foreground: '#F8F8F8FF' + +- name: diff.changed + scope: markup.changed + settings: + background: '#4A410DFF' + foreground: '#F8F8F8FF' + +- name: diff.inserted + scope: markup.inserted + settings: + background: '#253B22FF' + foreground: '#F8F8F8FF' + +- name: 'Markup: Italic' + scope: markup.italic + settings: + fontStyle: italic + foreground: '#6AD500FF' + +- name: 'Markup: Underline' + scope: markup.underline + settings: + foreground: '#E18964FF' + options: underline + +- name: 'Markup: Quote' + scope: markup.quote + settings: + background: '#FEE09C12' + fontStyle: italic + foreground: '#E1D4B9FF' + +- name: 'Markup: Heading' + scope: markup.heading, markup.heading entity + settings: + background: '#DE3280FF' + foreground: '#FFFFFFFF' + +- name: 'Markup: List' + scope: markup.list + settings: + foreground: '#6657EAFF' + +- name: 'Markup: Raw' + scope: markup.raw + settings: + background: '#B1B3BA08' + foreground: '#578BB3FF' + +- name: 'Markup: Comment' + scope: markup comment + settings: + foreground: '#F67B37FF' + +- name: 'Markup: Separator' + scope: meta.separator + settings: + background: '#242424FF' + foreground: '#60A633FF' + +- name: Log Entry + scope: meta.line.entry.logfile, meta.line.exit.logfile + settings: + background: '#EEEEEE29' + foreground: '#F8F8F8FF' + +- name: Log Entry Error + scope: meta.line.error.logfile + settings: + background: '#751012' + foreground: '#F8F8F8' + +- name: JSON property top + scope: meta.structure.dictionary.json string.quoted.double + settings: + background: '#111111' + foreground: '#1144BB' + +- name: JSON property level 2 + scope: "meta.structure meta.structure.dictionary.json string.quoted.double" + settings: + foreground: '#1122BB' + +- name: JSON property level 3 + scope: "meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double" + settings: + foreground: '#2938EB' + +- name: JSON property level 4 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double" + settings: + foreground: '#6D7EF1' + +- name: JSON property level 5 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.json string.quoted.double" + settings: + foreground: '#B3BBF7' + +- name: JSON value + scope: meta.structure.dictionary.value.json string.quoted.double + settings: + foreground: '#AA00AA' + +- name: JSON value level 2 + scope: "meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double" + settings: + foreground: '#BF00BF' + +- name: JSON value level 3 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double" + settings: + foreground: '#FF00FF' + +- name: JSON value level 4 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double" + settings: + foreground: '#FF40FF' + +- name: JSON value level 5 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.dictionary.value.json string.quoted.double" + settings: + foreground: '#FF80FF' + +- name: JSON value string punctuation + scope: "meta.structure.dictionary.value.json string punctuation.definition.string.double" + settings: + foreground: '#8409FF' + +- name: JSON array value + scope: meta.structure.array.json string.quoted.double + settings: + foreground: '#5522AA' + +- name: JSON array value level 1 + scope: "meta.structure meta.structure meta.structure.array.json string.quoted.double" + settings: + foreground: '#7017C8FF' + +- name: JSON array value level 2 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double" + settings: + foreground: '#9541E9FF' + +- name: JSON array value level 3 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double" + settings: + foreground: '#BA83F1FF' + +- name: JSON array value level 4 + scope: "meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure meta.structure.array.json string.quoted.double" + settings: + foreground: '#DFC6F9FF' + +- name: JSON prop string punctuation + scope: "meta.structure.dictionary.json string punctuation.definition.string" + settings: + foreground: '#66BBDDFF' + +- name: JSON array string puntuation + scope: "meta.structure.array.json string punctuation.definition.string" + settings: + foreground: '#416BE9FF' + +- name: JSON array brackets + scope: meta.structure.array.json punctuation.definition.array + settings: + foreground: '#FCC401FF' + +- name: JSON object braces + scope: "meta.structure.dictionary.json punctuation.definition.dictionary" + settings: + foreground: '#FEDF76FF' diff --git a/README.md b/README.md index e220a8c..bb7c58d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,24 @@ # JavaScript.tmLanguage -Better JavaScript language definition for TextMate and SublimeText2. This builds on the language files commonly used and adds more fine grained matching and also includes new features from ECMAScript 6 like modules, succinct methods, arrow functions, classes, and accessors (ES5). +Better JavaScript language definition for TextMate and SublimeText. This builds on the language files commonly used and adds more fine grained matching and also includes new features from ECMAScript 6 like modules, succinct methods, arrow functions, classes, generators, and accessors (ES5). -__ES6__ +## Installation and Use -![screenshot](https://raw.github.com/Benvie/JavaScriptNext.tmLanguage/master/ss-es6.png) +If you haven't already, [install Package Control](https://sublime.wbond.net/installation), then select `JavaScript Next` from the `Package Control: Install Package` dropdown list in the Command Palette. -__ES5__ +To set this as your default JavaScript syntax, open a javascript file, then select `View -> Syntax -> Open all with current extension as... -> JavascriptNext`. -![screenshot](https://raw.github.com/Benvie/JavaScriptNext.tmLanguage/master/ss-es5.png) +### For TextMate 2 + +Just open the `JavascriptNext.tmbundle` directory with TextMate 2 and you should be good to go. + +You may also need to change the ColorScheme. Pick one from `Preferences -> Color Scheme -> JavaScriptNext`. + +## Screenshots + +![screenshot](https://raw.github.com/Benvie/JavaScriptNext.tmLanguage/master/screenshots/es6.png) + +## Contributing + +Edit the yaml files with the `YAML-XXX` extensions, convert them to plist xml files, and send in a pull request. The easiest way to do this is by using [AAAPackageDev](https://github.com/SublimeText/AAAPackageDev). You can do all of the above without leaving sublime text. + +YAML is used since it's a lot more compact and easier to edit than xml. \ No newline at end of file diff --git a/Regular Expressions (JavaScriptNext).YAML-tmLanguage b/Regular Expressions (JavaScriptNext).YAML-tmLanguage new file mode 100644 index 0000000..7f240c6 --- /dev/null +++ b/Regular Expressions (JavaScriptNext).YAML-tmLanguage @@ -0,0 +1,105 @@ +# [PackageDev] target_format: plist, ext: tmLanguage +name: Regular Expressions (Javascript Next) +scopeName: source.regexp.js +fileTypes: [re] +uuid: 6D74161E-E1A2-4AF3-922D-759E88DEFF63 +foldingStartMarker: (/\*|\{|\() +foldingStopMarker: (\*/|\}|\)) + +patterns: +- include: '#anchor' +- include: '#backref' +- include: '#quantifier' +- include: '#operator' +- include: '#group-assertion' +- include: '#group-definition' +- include: '#character-class' +- include: '#character-class-definition' + +repository: + anchor: + patterns: + - name: keyword.control.anchor.regexp + match: \\[bB]|\^|\$ + + backref: + patterns: + - name: keyword.other.back-reference.regexp + match: \\[1-9][0-9]* + + quantifier: + patterns: + - name: keyword.operator.quantifier.regexp + match: '(\?|\*\??|\+\??)|\{(\d+,\d+|\d+,|\d+)\}' + + operator: + patterns: + - name: keyword.operator.or.regexp + match: \| + + group-assertion: + patterns: + - name: meta.group.assertion.regexp + begin: (\()((\?=)|(\?!)) + beginCaptures: + '1': {name: punctuation.definition.group.regexp} + '2': {name: punctuation.definition.group.assertion.regexp} + '3': {name: meta.assertion.look-ahead.regexp} + '4': {name: meta.assertion.negative-look-ahead.regexp} + end: (\)) + endCaptures: + '1': {name: punctuation.definition.group.regexp} + patterns: + - include: $self + + group-definition: + patterns: + - name: meta.group.regexp + begin: (\()((\?:))? + beginCaptures: + '1': {name: punctuation.definition.group.regexp} + '3': {name: punctuation.definition.group.capture.regexp} + '5': {name: punctuation.definition.group.capture.regexp} + '6': {name: punctuation.definition.group.no-capture.regexp} + end: (\)) + endCaptures: + '1': {name: punctuation.definition.group.regexp} + patterns: + - include: $self + + character-class: + patterns: + - name: constant.other.character-class.escape.backslash.regexp + match: \\[wWsSdD]|\. + + - name: constant.character.escape.backslash.regexp + match: \\([trnvf0\\]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.) + + character-class-definition: + patterns: + - name: constant.other.character-class.set.regexp + begin: (\[)(\^)? + beginCaptures: + '1': {name: punctuation.definition.character-class.regexp} + '2': {name: keyword.operator.negation.regexp} + end: (\]) + endCaptures: + '1': {name: punctuation.definition.character-class.regexp} + patterns: + - include: '#character-class' + - name: constant.other.character-class.range.regexp + match: >- + (?x) + ( + (\\[wWsSdD]|\.)| + (\\([trnvf0]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.)) + )\- + ( + (\\[wWsSdD]|\.)| + (\\([trnvf0]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.)) + ) + captures: + '2': {name: constant.other.character-class.escape.backslash.regexp} + '3': {name: constant.character.escape.backslash.regexp} + '5': {name: constant.other.character-class.escape.backslash.regexp} + '6': {name: constant.character.escape.backslash.regexp} diff --git a/Symbol List Banned.YAML-tmPreferences b/Symbol List Banned.YAML-tmPreferences new file mode 100644 index 0000000..eef90e1 --- /dev/null +++ b/Symbol List Banned.YAML-tmPreferences @@ -0,0 +1,7 @@ +# [PackageDev] target_format: plist, ext: tmPreferences +name: Symbol List Banned +uuid: 71B2B356-23EC-43B8-80A7-CB32E8F2718F +scope: source.js meta.function-call, source.js meta.instance.constructor +settings: + showInSymbolList: '0' + showInIndexedSymbolList: '1' diff --git a/Symbol List Function.YAML-tmPreferences b/Symbol List Function.YAML-tmPreferences new file mode 100644 index 0000000..d6253c6 --- /dev/null +++ b/Symbol List Function.YAML-tmPreferences @@ -0,0 +1,8 @@ +# [PackageDev] target_format: plist, ext: tmPreferences +name: Symbol List Function +uuid: B521FCF1-DDA6-4C69-8170-F6C2DE4C86CD +scope: source.js meta.function, source.js meta.accessor.js, source.js meta.method.js, source.js meta.prototype.function.js, source.js meta.prototype.function.arrow.js, source.js meta.class.js entity.name.class.js +settings: + showInSymbolList: '1' + showInIndexedSymbolList: '1' + symbolTransformation: s/\s+/ /g; diff --git a/create-bundle.sh b/create-bundle.sh new file mode 100755 index 0000000..5a586f5 --- /dev/null +++ b/create-bundle.sh @@ -0,0 +1,30 @@ +#!/bin/sh + + +BUNDLE_DIR="JavaScriptNext.tmbundle" +PREFERENCES_DIR="$BUNDLE_DIR/Preferences" +SYNTAXES_DIR="$BUNDLE_DIR/Syntaxes" +THEMES_DIR="$BUNDLE_DIR/Themes" + +# build bundle dirs +mkdir -p $PREFERENCES_DIR +mkdir -p $SYNTAXES_DIR +mkdir -p $THEMES_DIR + +# copy info.plist +cp info.plist $BUNDLE_DIR/info.plist + +# copy preferences +./yaml-to-plist.rb JavaScript\ Indent.YAML-tmPreferences > $PREFERENCES_DIR/JavaScript\ Indent.tmPreferences +./yaml-to-plist.rb Comments.YAML-tmPreferences > $PREFERENCES_DIR/Comments.tmPreferences +./yaml-to-plist.rb Symbol\ List\ Banned.YAML-tmPreferences > $PREFERENCES_DIR/Symbol\ List\ Banned.tmPreferences +./yaml-to-plist.rb Symbol\ List\ Function.YAML-tmPreferences > $PREFERENCES_DIR/Symbol\ List\ Function.tmPreferences + +# copy language +./yaml-to-plist.rb JavaScriptNext.YAML-tmLanguage > $SYNTAXES_DIR/JavaScriptNext.tmLanguage +./yaml-to-plist.rb JSON\ \(JavaScriptNext\).YAML-tmLanguage > $SYNTAXES_DIR/JSON\ \(JavaScriptNext\).tmLanguage +./yaml-to-plist.rb Regular\ Expressions\ \(JavaScriptNext\).YAML-tmLanguage > $SYNTAXES_DIR/Regular\ Expressions\ \(JavaScriptNext\).tmLanguage + +# copy themes +./yaml-to-plist.rb Next.YAML-tmTheme > $THEMES_DIR/Next.tmTheme +./yaml-to-plist.rb Monokai\ Phoenix.YAML-tmTheme > $THEMES_DIR/Monokai\ Phoenix.tmTheme \ No newline at end of file diff --git a/info.plist b/info.plist new file mode 100644 index 0000000..a60d656 --- /dev/null +++ b/info.plist @@ -0,0 +1,16 @@ + + + + + contactEmailRot13 + + contactName + Henscheid, Derek J + description + New shiny bundle for X. + name + JavaScriptNext + uuid + B5617C72-9CE4-483A-A3B7-D16290DC4BB1 + + diff --git a/screenshots/es6.png b/screenshots/es6.png new file mode 100644 index 0000000..f43ac94 Binary files /dev/null and b/screenshots/es6.png differ diff --git a/ss-es5.png b/ss-es5.png deleted file mode 100644 index 591f92c..0000000 Binary files a/ss-es5.png and /dev/null differ diff --git a/ss-es6.png b/ss-es6.png deleted file mode 100644 index 5a2efef..0000000 Binary files a/ss-es6.png and /dev/null differ diff --git a/yaml-to-plist.rb b/yaml-to-plist.rb new file mode 100755 index 0000000..082ead7 --- /dev/null +++ b/yaml-to-plist.rb @@ -0,0 +1,49 @@ +#!/usr/bin/env ruby +# encoding: UTF-8 +require 'yaml' +require 'rexml/document' + +class PlistWriter + PLIST_STUB_DOC = %q[ + + + ] + + def initialize(root_object) + @document = REXML::Document.new PLIST_STUB_DOC + @current_node = @document.root + process(root_object) + end + + def build_element(name, text = nil) + @current_node.add_element(name.to_s).tap do |new_node| + new_node.add_text(text.to_s.dup) unless text.nil? + next unless block_given? + _current_node = @current_node + @current_node = new_node + yield + @current_node = _current_node + end + end + + def process(object) + case object + when Hash then build_element :dict do object.each { |k, v| build_element(:key, k); process(v) } end + when Array then build_element :array do object.each { |e| process(e) } end + when String then build_element :string , object + when Integer then build_element :integer, object + when Float then build_element :real , object + when Date then build_element :date , object.to_time(:utc).iso8601 + when Time, DateTime then build_element :date , object.to_time.utc.iso8601 + when FalseClass then build_element :false + when TrueClass then build_element :true + else raise "Unexpected object of class #{object.class.name}" + end + end + + def to_s + "".tap { |s| f = REXML::Formatters::Pretty.new(indentation=4); f.compact = true; f.write(@document, s) } + end +end + +puts PlistWriter.new(YAML::load(ARGF.read)) if $0 == __FILE__