-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Convert syntax to sublime-syntax instead of tmLanguage.
- Loading branch information
1 parent
b23f7cd
commit 0899f1e
Showing
3 changed files
with
381 additions
and
1,110 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,377 @@ | ||
%YAML 1.2 | ||
--- | ||
# http://www.sublimetext.com/docs/3/syntax.html | ||
name: CJSX | ||
comment: CJSX Syntax | ||
file_extensions: | ||
- cjsx | ||
- coffee | ||
- Cakefile | ||
- coffee.erb | ||
- cson | ||
first_line_match: ^#!.*\bcoffee | ||
scope: source.coffee | ||
contexts: | ||
main: | ||
- include: jsx | ||
- match: '(\([^()]*?\))\s*([=-]>)' | ||
comment: "match stuff like: a -> …" | ||
scope: meta.inline.function.coffee | ||
captures: | ||
1: variable.parameter.function.coffee | ||
2: storage.type.function.coffee | ||
- match: (new)\s+(\w+(?:\.\w*)*) | ||
scope: meta.class.instance.constructor | ||
captures: | ||
1: keyword.operator.new.coffee | ||
2: support.class.coffee | ||
- match: "'''" | ||
captures: | ||
0: punctuation.definition.string.begin.coffee | ||
push: | ||
- meta_scope: string.quoted.heredoc.coffee | ||
- match: "'''" | ||
captures: | ||
0: punctuation.definition.string.end.coffee | ||
pop: true | ||
- match: '"""' | ||
captures: | ||
0: punctuation.definition.string.begin.coffee | ||
push: | ||
- meta_scope: string.quoted.double.heredoc.coffee | ||
- match: '"""' | ||
captures: | ||
0: punctuation.definition.string.end.coffee | ||
pop: true | ||
- match: \\. | ||
scope: constant.character.escape.coffee | ||
- include: interpolated_coffee | ||
- match: "`" | ||
captures: | ||
0: punctuation.definition.string.begin.coffee | ||
push: | ||
- meta_scope: string.quoted.script.coffee | ||
- match: "`" | ||
captures: | ||
0: punctuation.definition.string.end.coffee | ||
pop: true | ||
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' | ||
scope: constant.character.escape.coffee | ||
- match: (?<!#)###(?!#) | ||
captures: | ||
0: punctuation.definition.comment.coffee | ||
push: | ||
- meta_scope: comment.block.coffee | ||
- match: "###" | ||
captures: | ||
0: punctuation.definition.comment.coffee | ||
pop: true | ||
- match: '@\w*' | ||
scope: storage.type.annotation.coffeescript | ||
- match: '(#)(?!\{).*$\n?' | ||
scope: comment.line.number-sign.coffee | ||
captures: | ||
1: punctuation.definition.comment.coffee | ||
- match: "/{3}" | ||
push: | ||
- meta_scope: string.regexp.coffee | ||
- match: "/{3}[imgy]{0,4}" | ||
pop: true | ||
- include: interpolated_coffee | ||
- include: embedded_comment | ||
- match: '/(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])' | ||
scope: string.regexp.coffee | ||
- match: |- | ||
(?x) | ||
\b(?<![\.\$])( | ||
break|by|catch|continue|else|finally|for|in|of|if|return|switch| | ||
then|throw|try|unless|when|while|until|loop|do|(?<=for)\s+own | ||
)(?!\s*:)\b | ||
scope: keyword.control.coffee | ||
- match: |- | ||
(?x) | ||
and=|or=|!|%|&|\^|\*|\/|(\-)?\-(?!>)|\+\+|\+|~|==|=(?!>)|!=|<=|>=|<<=|>>=| | ||
>>>=|<>|<|>|!|&&|\.\.(\.)?|\?|\||\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=| | ||
\^=|\b(?<![\.\$])(instanceof|new|delete|typeof|and|or|is|isnt|not|super)\b | ||
scope: keyword.operator.coffee | ||
- match: '([a-zA-Z\$_](\w|\$|\.)*\s*(?!\::)((:)|(=[^=]))(?!(\s*\(.*\))?\s*((=|-)>)))' | ||
scope: variable.assignment.coffee | ||
captures: | ||
1: variable.assignment.coffee | ||
4: punctuation.separator.key-value | ||
5: keyword.operator.coffee | ||
- match: '(?<=\s|^)([\[\{])(?=.*?[\]\}]\s+[:=])' | ||
captures: | ||
0: keyword.operator.coffee | ||
push: | ||
- meta_scope: meta.variable.assignment.destructured.coffee | ||
- match: '([\]\}]\s*[:=])' | ||
captures: | ||
0: keyword.operator.coffee | ||
pop: true | ||
- include: variable_name | ||
- include: instance_variable | ||
- include: jsx-single-quoted-prop | ||
- include: jsx-double-quoted-prop | ||
- include: numeric | ||
- match: |- | ||
(?x) | ||
(\s*) | ||
(?=[a-zA-Z\$_]) | ||
( | ||
[a-zA-Z\$_](\w|\$|:|\.)*\s* | ||
(?=[:=](\s*\(.*\))?\s*([=-]>)) | ||
) | ||
scope: meta.function.coffee | ||
captures: | ||
2: entity.name.function.coffee | ||
3: entity.name.function.coffee | ||
4: variable.parameter.function.coffee | ||
5: storage.type.function.coffee | ||
- match: ^\s*(describe|it|app\.(get|post|put|all|del|delete)) | ||
comment: Show well-known functions from Express and Mocha in Go To Symbol view | ||
push: | ||
- meta_scope: meta.function.symbols.coffee | ||
- match: $ | ||
pop: true | ||
- include: main | ||
- match: "[=-]>" | ||
scope: storage.type.function.coffee | ||
- match: '\b(?<!\.)(true|on|yes)(?!\s*[:=])\b' | ||
scope: constant.language.boolean.true.coffee | ||
- match: '\b(?<!\.)(false|off|no)(?!\s*[:=])\b' | ||
scope: constant.language.boolean.false.coffee | ||
- match: '\b(?<!\.)null(?!\s*[:=])\b' | ||
scope: constant.language.null.coffee | ||
- match: '\b(?<!\.)(this|extends)(?!\s*[:=])\b' | ||
scope: variable.language.coffee | ||
- match: '(class\b)\s+(@?[a-zA-Z\$_][\w\.]*)?(?:\s+(extends)\s+(@?[a-zA-Z\$\._][\w\.]*))?' | ||
scope: meta.class.coffee | ||
captures: | ||
1: storage.type.class.coffee | ||
2: entity.name.type.class.coffee | ||
3: keyword.control.inheritance.coffee | ||
4: entity.other.inherited-class.coffee | ||
- match: \b(debugger|\\)\b | ||
scope: keyword.other.coffee | ||
- match: |- | ||
(?x)\b( | ||
Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function| | ||
Int(8|16|32|64)Array|Math|Map|Number| | ||
Object|Proxy|RegExp|Set|String|WeakMap| | ||
window|Uint(8|16|32|64)Array|XMLHttpRequest | ||
)\b | ||
scope: support.class.coffee | ||
- match: ((?<=console\.)(debug|warn|info|log|error|time|timeEnd|assert))\b | ||
scope: support.function.console.coffee | ||
- match: |- | ||
(?x)\b( | ||
decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require | ||
)\b | ||
scope: support.function.coffee | ||
- match: |- | ||
(?x)((?<=\.)( | ||
apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf| | ||
isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push| | ||
reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String| | ||
unshift|valueOf | ||
))\b | ||
scope: support.function.method.array.coffee | ||
- match: |- | ||
(?x)((?<=Array\.)( | ||
isArray | ||
))\b | ||
scope: support.function.static.array.coffee | ||
- match: |- | ||
(?x)((?<=Object\.)( | ||
create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)| | ||
getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?| | ||
isnt|keys|preventExtensions|seal | ||
))\b | ||
scope: support.function.static.object.coffee | ||
- match: |- | ||
(?x)((?<=Math\.)( | ||
abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor| | ||
hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt| | ||
tan|tanh|trunc | ||
))\b | ||
scope: support.function.static.math.coffee | ||
- match: |- | ||
(?x)((?<=Number\.)( | ||
is(Finite|Integer|NaN)|toInteger | ||
))\b | ||
scope: support.function.static.number.coffee | ||
- match: \b(Infinity|NaN|undefined)\b | ||
scope: constant.language.coffee | ||
- match: \; | ||
scope: punctuation.terminator.statement.coffee | ||
- match: ',[ |\t]*' | ||
scope: meta.delimiter.object.comma.coffee | ||
- match: \. | ||
scope: meta.delimiter.method.period.coffee | ||
- match: '\{|\}' | ||
scope: meta.brace.curly.coffee | ||
- match: \(|\) | ||
scope: meta.brace.round.coffee | ||
- match: '\[|\]\s*' | ||
scope: meta.brace.square.coffee | ||
- include: instance_variable | ||
- include: single_quoted_string | ||
- include: double_quoted_string | ||
- include: numeric | ||
double_quote: | ||
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' | ||
scope: constant.character.escape.coffee | ||
- include: interpolated_coffee | ||
- include: jsx-entities | ||
double_quoted_string: | ||
- match: '"' | ||
captures: | ||
0: punctuation.definition.string.begin.coffee | ||
push: | ||
- meta_scope: string.quoted.double.coffee | ||
- match: '"' | ||
captures: | ||
0: punctuation.definition.string.end.coffee | ||
pop: true | ||
- include: double_quote | ||
embedded_comment: | ||
- match: (?<!\\)(#).*$\n? | ||
scope: comment.line.number-sign.coffee | ||
captures: | ||
1: punctuation.definition.comment.coffee | ||
instance_variable: | ||
- match: '(@)([a-zA-Z_\$]\w*)?' | ||
scope: variable.other.readwrite.instance.coffee | ||
interpolated_coffee: | ||
- match: '\#\{' | ||
captures: | ||
0: punctuation.section.embedded.coffee | ||
push: | ||
- meta_scope: source.coffee.embedded.source | ||
- match: '\}' | ||
captures: | ||
0: punctuation.section.embedded.coffee | ||
pop: true | ||
- include: main | ||
jsx: | ||
- include: jsx-evaluated-code | ||
- include: jsx-tag-area | ||
- include: jsx-tag-open | ||
- include: jsx-tag-close | ||
- include: jsx-tag-invalid | ||
jsx-double-quoted-prop: | ||
- match: (?:\s*=\s*)(") | ||
captures: | ||
1: string.quoted.double.punctuation.definition.begin.coffee | ||
push: | ||
- match: '"' | ||
captures: | ||
0: string.quoted.double.punctuation.definition.end.coffee | ||
pop: true | ||
- include: double_quote | ||
- match: .*? | ||
scope: string.quoted.double.coffee | ||
jsx-entities: | ||
- match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)" | ||
scope: constant.character.entity.coffee | ||
captures: | ||
1: punctuation.definition.entity.coffee | ||
3: punctuation.definition.entity.coffee | ||
- match: "&" | ||
scope: invalid.illegal.bad-ampersand.coffee | ||
jsx-evaluated-code: | ||
- match: "{" | ||
captures: | ||
0: punctuation.definition.brace.curly.start.coffee | ||
push: | ||
- meta_scope: meta.brace.curly.coffee | ||
- match: "}" | ||
captures: | ||
0: punctuation.definition.brace.curly.end.coffee | ||
pop: true | ||
- include: main | ||
jsx-single-quoted-prop: | ||
- match: (?:=)\s?*(') | ||
captures: | ||
1: string.quoted.single.punctuation.definition.string.begin.coffee | ||
push: | ||
- match: "'" | ||
captures: | ||
0: string.quoted.single.punctuation.definition.string.end.coffee | ||
pop: true | ||
- include: single_quote | ||
- match: .*? | ||
scope: string.quoted.single.coffee | ||
jsx-tag-area: | ||
- match: |- | ||
(<)([a-zA-Z0-9:.]+)(?![^ | ||
]*/>) | ||
captures: | ||
1: punctuation.definition.tag.begin.coffee | ||
2: entity.name.tag.coffee | ||
push: | ||
- meta_scope: jsx.tag-area.coffee | ||
- match: '(</)(\2)([^>]*>)|(\/>)' | ||
captures: | ||
1: punctuation.definition.tag.begin.coffee | ||
2: entity.name.tag.coffee | ||
4: punctuation.definition.tag.end.coffee | ||
pop: true | ||
- include: jsx-tag-attributes | ||
- include: jsx | ||
jsx-tag-attribute-name: | ||
- match: '\b([a-zA-Z_:][a-zA-Z_:0-9\-\.]*)' | ||
scope: meta.tag.attribute-name.html | ||
captures: | ||
1: entity.other.attribute-name.html | ||
jsx-tag-attributes: | ||
- include: jsx-tag-attribute-name | ||
- include: jsx-double-quoted-prop | ||
- include: jsx-single-quoted-prop | ||
- include: jsx-evaluated-code | ||
jsx-tag-close: | ||
- match: '(</)([^>]+)(>)|(\/>)' | ||
scope: tag.close.coffee | ||
captures: | ||
1: punctuation.definition.tag.begin.coffee | ||
2: entity.name.tag.coffee | ||
3: punctuation.definition.tag.end.coffee | ||
jsx-tag-invalid: | ||
- match: <\s*> | ||
scope: invalid.illegal.tag.incomplete.coffee | ||
jsx-tag-open: | ||
- match: "(<)([a-zA-Z0-9:.]+)" | ||
captures: | ||
1: punctuation.definition.tag.begin.coffee | ||
2: entity.name.tag.coffee | ||
push: | ||
- meta_scope: tag.open.coffee | ||
- match: (/?>) | ||
captures: | ||
1: punctuation.definition.tag.end.coffee | ||
pop: true | ||
- include: jsx-tag-attributes | ||
numeric: | ||
- match: '(?<!\$)\b((0([box])[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?))\b' | ||
scope: constant.numeric.coffee | ||
single_quote: | ||
- match: '\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)' | ||
scope: constant.character.escape.coffee | ||
- include: jsx-entities | ||
single_quoted_string: | ||
- match: "'" | ||
captures: | ||
0: punctuation.definition.string.begin.coffee | ||
push: | ||
- meta_scope: string.quoted.single.coffee | ||
- match: "'" | ||
captures: | ||
0: punctuation.definition.string.end.coffee | ||
pop: true | ||
- include: single_quote | ||
variable_name: | ||
- match: '([a-zA-Z\$_]\w*(\.\w+)*)' | ||
scope: variable.assignment.coffee | ||
captures: | ||
1: variable.assignment.coffee |
Oops, something went wrong.