%YAML 1.2 --- # http://www.sublimetext.com/docs/3/syntax.html name: LiveScript comment: "LiveScript Syntax: version 1" file_extensions: - ls - Slakefile - ls.erb first_line_match: ^#!.*\bls scope: source.livescript contexts: main: - match: |- (?x) !?[~-]{1,2}>\*? |<[~-]{1,2}!? |\(\s* (?= instanceof[\s)]|and[\s)]|or[\s)]|is[\s)]|isnt[\s)]|in[\s)]|import[\s)]|import\ all[\s)] |\.|[-+/*%^&<>=|][\b\s)\w$]|\*\*|\%\%) | (?<=[\s(]instanceof|[\s(]and|[\s(]or|[\s(]is|[\s(]isnt|[\s(]in|[\s(]import|[\s(]import\ all|[\s(]do|\.|\*\*|\%\%|[\b\s(\w$][-+/*%^&<>=|]) \s*\) scope: storage.type.function.livescript - match: \/\* captures: 0: punctuation.definition.comment.livescript push: - meta_scope: comment.block.livescript - match: \*\/ captures: 0: punctuation.definition.comment.livescript pop: true - match: '@\w*' scope: storage.type.annotation.livescriptscript - match: '(#)(?!\{).*$\n?' scope: comment.line.number-sign.livescript captures: 1: punctuation.definition.comment.livescript - match: '((?:!|~|!~|~!)?function\*?)\s+([$\w\-]*[$\w]+)' captures: 1: storage.type.function.livescript 2: entity.name.function.livescript - match: (new)\s+(\w+(?:\.\w*)*) captures: 1: keyword.operator.new.livescript 2: entity.name.type.instance.livescript - match: \b(package|private|protected|public|interface|enum|static)(?!-)\b scope: keyword.illegal.livescript - match: "'''" captures: 0: punctuation.definition.string.begin.livescript push: - meta_scope: string.quoted.heredoc.livescript - match: "'''" captures: 0: punctuation.definition.string.end.livescript pop: true - match: '"""' captures: 0: punctuation.definition.string.begin.livescript push: - meta_scope: string.quoted.double.heredoc.livescript - match: '"""' captures: 0: punctuation.definition.string.end.livescript pop: true - match: \\. scope: constant.character.escape.livescript - include: interpolated_livescript - match: "``" captures: 0: punctuation.definition.string.begin.livescript push: - meta_scope: string.quoted.script.livescript - match: "``" captures: 0: punctuation.definition.string.end.livescript pop: true - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' scope: constant.character.escape.livescript - match: '<\[' push: - meta_scope: string.array-literal.livescript - match: '\]>' pop: true - match: '/{2}(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}' scope: string.regexp.livescript - match: '/{2}\n' push: - meta_scope: string.regexp.livescript - match: "/{2}[imgy]{0,4}" pop: true - include: embedded_spaced_comment - include: interpolated_livescript - match: "/{2}" push: - meta_scope: string.regexp.livescript - match: "/{2}[imgy]{0,4}" pop: true - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' scope: constant.character.escape.livescript - include: interpolated_livescript - match: '/(?![\s=/*+{}?]).*?[^\\]/[igmy]{0,4}(?![a-zA-Z0-9])' scope: string.regexp.livescript - match: |- (?x) \b(?<![\.\$\-@])( instanceof|new|delete|typeof|and|or|is|isnt|not )(?!\-|\s*:)\b scope: keyword.operator.livescript - match: <\||\|> scope: keyword.operator.livescript - match: "=>" scope: keyword.control.livescript - match: |- (?x) \b(?<![\.\$\-@])(?: return|break|continue|throw |try|if|while|for|for\s+own|switch|unless|until |catch|finally|else|nobreak|case|default|fallthrough|when|otherwise|then |yield )(?!\-|\s*:)\b scope: keyword.control.livescript - match: |- (?x) and=|or=|%|&|\^|\*|\/|(?<![a-zA-Z$_])(\-)?\-(?!\-?>)|\+\+|\+| ~(?!~?>)|==|=|!=|<=|>=|<<=|>>=| >>>=|<>|<(?!\[)|(?<!\])>|(?<!\w)!(?!([~\-]+)?>)|&&|\.\.(\.)?|\s\.\s|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|\.=|&= |\^= scope: keyword.operator.livescript - match: |- (?x) \b(?<![\.\$\-@])(?: function )(?!\-|\s*:)\b scope: storage.type.function.livescript - match: |- (?x) \b(?<![\.\$\-@])(?: this|throw|then|try|typeof!?|til|to |continue|const|case|catch|class |in|instanceof|import|import\s+all|implements|if|is |default|delete|debugger|do |for|for\s+own|finally|function|from|fallthrough |super|switch |else|nobreak|extends|export|eval |and|arguments |new|not |unless|until |while|with|when |of|or|otherwise |let|var|loop |match |by|yield )(?!\-|\s*:)\b scope: keyword.other.livescript - match: '([a-zA-Z\$_](?:[\w$.-])*)\s*(?!\::)((:)|(=(?!>)))\s*(?!(\s*!?\s*\(.*\))?\s*(!?[~-]{1,2}>\*?))' captures: 1: variable.assignment.livescript 3: punctuation.separator.key-value, keyword.operator.livescript 4: keyword.operator.livescript - match: '(?<=\s|^)([\[\{])(?=.*?[\]\}]\s+[:=])' captures: 0: keyword.operator.livescript push: - meta_scope: meta.variable.assignment.destructured.livescript - match: '([\]\}]\s*[:=])' captures: 0: keyword.operator.livescript pop: true - include: variable_name - include: instance_variable - include: single_quoted_string - include: double_quoted_string - include: numeric - match: |- (?x) (\s*) (?=[a-zA-Z\$_]) ([a-zA-Z\$_]([\w$.:-])*)\s* (?=[:=](\s*!?\s*\(.*\))?\s*(!?[~-]{1,2}>\*?)) scope: meta.function.livescript captures: 2: entity.name.function.livescript 3: entity.name.function.livescript 4: variable.parameter.function.livescript 5: storage.type.function.livescript - match: \b(?<!\.)(true|on|yes)(?!\s*:)\b scope: constant.language.boolean.true.livescript - match: \b(?<!\.)(false|off|no)(?!\s*:)\b scope: constant.language.boolean.false.livescript - match: \b(?<!\.)(null|void)(?!\s*:)\b scope: constant.language.null.livescript - match: \b(?<!\.)(super|this|extends)(?!\s*:)\b scope: variable.language.livescript - match: '(class\b)\s+(@?[a-zA-Z$_][\w$.-]*)?(?:\s+(extends)\s+(@?[a-zA-Z$_][\w$.-]*))?' scope: meta.class.livescript captures: 1: storage.type.class.livescript 2: entity.name.type.class.livescript 3: keyword.control.inheritance.livescript 4: entity.other.inherited-class.livescript - match: \b(debugger|\\)\b scope: keyword.other.livescript - 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.livescript - match: \b(console)\b scope: entity.name.type.object.livescript - match: \b(Infinity|NaN|undefined)\b scope: constant.language.livescript - match: \; scope: punctuation.terminator.statement.livescript - match: ',[ |\t]*' scope: meta.delimiter.object.comma.livescript - match: \. scope: meta.delimiter.method.period.livescript - match: '\{|\}' scope: meta.brace.curly.livescript - match: \(|\) scope: meta.brace.round.livescript - match: '\[|\]\s*' scope: meta.brace.square.livescript - include: instance_variable - include: backslash_string - include: single_quoted_string - include: double_quoted_string - include: numeric - match: '()(@|@@|[$\w\-]*[$\w]+)\s*(`)' captures: 1: keyword.operator.livescript 2: meta.function-call.livescript 3: keyword.operator.livescript - match: "`" scope: keyword.operator.livescript - match: '()(@|@@|[$\w\-]*[$\w]+)(?:(\??\!)|[(])' captures: 1: keyword.operator.livescript 2: meta.function-call.livescript 3: keyword.operator.livescript - match: '(@|@@|[$\w\-]*[$\w]+)(\?)? (?!\s*(((by|of|and|or|with|when|unless|if|is|isnt|else|nobreak|for|from|not in|in|catch|til|to|then|import|extends|implements|instanceof)\b)|[=:.*\/+\-%\^<>][ =)]|[`}%*)]|/(?!.*?/)|&&|[.][^.]|=>|\/ +|\||\|\||\-\-|\+\+|\|>|<|\||$|\n|\#|/\*))' captures: 1: meta.function-call.livescript 2: keyword.operator.livescript - match: \| _ scope: keyword.control.livescript - match: '\|(?![.])' scope: keyword.control.livescript - match: \| scope: keyword.operator.livescript - match: ((?<=console\.)(debug|warn|info|log|error|time(End|-end)|assert))\b scope: support.function.console.livescript - match: |- (?x)\b( decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require )\b scope: support.function.livescript - match: |- (?x)(?<![.-])\b( map|filter|reject|partition|find|each|head|tail|last|initial|empty| values|keys|length|cons|append|join|reverse|fold(l|r)?1?|unfoldr| and(List|-list)|or(List|-list)|any|all|unique|sum|product|mean|compact| concat(Map|-map)?|maximum|minimum|scan(l|r)?1?|replicate|slice|apply| split(At|-at)?|take(While|-while)?|drop(While|-while)?|span|first| break(It|-it)|list(ToObj|-to-obj)|obj(ToFunc|-to-func)| pairs(ToObj|-to-obj)|obj(ToPairs|-to-pairs|ToLists|-to-lists)| zip(All|-all)?(With|-with)?|compose|curry|partial|flip|fix| sort(With|-with|By|-by)?|group(By|-by)|break(List|-list|Str|-str)| difference|intersection|union|average|flatten|chars|unchars|repeat| lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod| recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate| round|ceiling|floor|is(It|-it)NaN|even|odd|gcd|lcm|disabled__id )\b(?![.-]) comment: | Generated by DOM query from http://gkz.github.com/prelude-ls/: [].slice .call(document.querySelectorAll(".nav-pills li a")) .map(function(_) {return _.innerText}) .filter(function(_) {return _.trim() !== '}) .slice(2) .join("|") scope: support.function.prelude.livescript - match: '(?x)(?<![.-])\b(that|it|e|_)\b' scope: support.function.semireserved.livescript - match: |- (?x)((?<=(\.|\]|\)))( apply|call|concat|every|filter|for(Each|-each)| from|has(Own|-own)(Property|-property)|index(Of|-of)| is(Prototype|-prototype)(Of|-of)|join|last(Index|-index)(Of|-of)| map|of|pop|property(Is|-is)(Enumerable|-enumerable)|push| reduce(Right|-right)?|reverse|shift|slice|some|sort| splice|to(Locale|-locale)?(String|-string)|unshift|valueOf ))\b(?!-) scope: support.function.method.array.livescript - match: |- (?x)((?<=Array\.)( isArray ))\b scope: support.function.static.array.livescript - match: |- (?x)((?<=Object\.)( create|define(Propert|-propert)(ies|y)|freeze| get(Own|-own)(Property|-property)(Descriptors?|Names)| get(Property|-property)(Descriptor|Names)|getPrototypeOf| is((Extensible|-extensible)|(Frozen|-frozen)|(Sealed|-sealed))?| keys|prevent(Extensions|-extensions)|seal ))\b scope: support.function.static.object.livescript - 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.livescript - match: |- (?x)((?<=Number\.)( is(Finite|Integer|NaN)|to(Integer|-integer) ))\b scope: support.function.static.number.livescript - match: '[\$\w][\w-]*' scope: variable.other.livescript backslash_string: - match: '\\([\\)\s,\};\]])?' captures: 0: string.quoted.single.livescript push: - meta_content_scope: string.quoted.single.livescript - match: '([\\)\s,\};\]])' captures: 0: punctuation.definition.string.end.livescript pop: true constructor_variable: - match: '([a-zA-Z$_][\w$-]*)(@{2})([a-zA-Z$_][\w$-]*)?' scope: variable.other.readwrite.constructor.livescript double_quoted_string: - match: '"' captures: 0: punctuation.definition.string.begin.livescript push: - meta_scope: string.quoted.double.livescript - match: '"' captures: 0: punctuation.definition.string.end.livescript pop: true - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' scope: constant.character.escape.livescript - include: interpolated_livescript embedded_comment: - match: (?<!\\)(#).*$\n scope: comment.line.number-sign.livescript captures: 1: punctuation.definition.comment.livescript embedded_spaced_comment: - match: (?<!\\)(#\s).*$\n scope: comment.line.number-sign.livescript captures: 1: punctuation.definition.comment.livescript instance_variable: - match: '(?<![$\w\-])(@)' scope: variable.other.readwrite.instance.livescript interpolated_livescript: - match: '\#\{' captures: 0: punctuation.section.embedded.livescript push: - meta_scope: source.livescript.embedded.source - match: '\}' captures: 0: punctuation.section.embedded.livescript pop: true - include: main - match: '\#' push: - meta_scope: source.livescript.embedded.source.simple - match: "" pop: true - include: main numeric: - match: '(?<![\$@a-zA-Z_])(([0-9]+r[0-9_]+)|((16r|0[xX])[0-9a-fA-F_]+)|([0-9]+(\.[0-9]+[0-9_]*)?(e[+\-]?[0-9_]+)?)[_a-zA-Z0-9]*)' scope: constant.numeric.livescript single_quoted_string: - match: "'" captures: 0: punctuation.definition.string.begin.livescript push: - meta_scope: string.quoted.single.livescript - match: "'" captures: 0: punctuation.definition.string.end.livescript pop: true - match: '\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)' scope: constant.character.escape.livescript variable_name: - match: '([a-zA-Z\$_][\w$-]*(\.\w+)*)(?!\-)' scope: variable.assignment.livescript captures: 1: variable.assignment.livescript