--- name: Template Toolkit fileTypes: - tt firstLineMatch: \[%.+?%\] scopeName: text.html.tt repository: tt-stuff: patterns: - name: comment.line.number-sign.tt captures: "1": name: punctuation.definition.comment.tt match: (#).*?(?=%\]) - captures: "1": name: string.quoted.double.filename.tt "2": name: punctuation.definition.string.begin.tt "4": name: punctuation.definition.string.begin.tt "5": name: string.unquoted.other.filename.tt match: ((")([a-z][a-z0-9_]+\/)+[a-z0-9_\.]+("))|(\b([a-z][a-z0-9_]+\/)+[a-z0-9_\.]+\b) - include: "#string-double-quoted" - include: "#string-single-quoted" - name: variable.other.tt captures: "1": name: punctuation.definition.variable.tt match: (\$?)\b[a-z]([a-z0-9_]\.?)*\b - name: keyword.control.tt match: \b(?:IF|END|BLOCK|INCLUDE|ELSE|ELSIF|SWITCH|CASE|UNLESS|WRAPPER|FOR|FOREACH|LAST|NEXT|USE|WHILE|FILTER|IN|GET|CALL|SET|INSERT|MACRO|PERL|TRY|CATCH|THROW|FINAL|STOP|META|DEBUG|RAWPERL)\b - name: keyword.operator.tt match: \||\|\||=|_|-|\*|\/|\?|:|div|mod|;|\+ tag-stuff: patterns: - include: "#tag-generic-attribute" - include: "#string-double-quoted" - include: "#string-single-quoted" - include: "#keyword" string-double-quoted: name: string.quoted.double.tt endCaptures: "0": name: punctuation.definition.string.end.tt begin: "\"" beginCaptures: "0": name: punctuation.definition.string.begin.tt end: "\"" patterns: - include: "#embedded-code" - include: "#entities" tmpl-container-tag: patterns: - name: meta.tag.template.tt captures: "0": name: punctuation.definition.tag.tt begin: \[% end: "%\\]" patterns: - include: "#tt-stuff" entities: patterns: - name: constant.character.entity.html captures: "1": name: punctuation.definition.constant.html "3": name: punctuation.definition.constant.html match: (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) - name: invalid.illegal.bad-ampersand.html match: "&" string-single-quoted: name: string.quoted.single.tt endCaptures: "0": name: punctuation.definition.string.end.tt begin: "'" beginCaptures: "0": name: punctuation.definition.string.begin.tt end: "'" patterns: - include: "#embedded-code" - include: "#entities" tag-generic-attribute: name: entity.other.attribute-name.tt captures: "2": name: punctuation.separator.key-value.tt match: \b([a-zA-Z-_:]+)\s*(=) keyword: name: string.unquoted.tt match: \b([A-Za-z0-9_]+) embedded-code: {} uuid: 67D0DEC7-9E8C-44B3-8FA5-ADD9BBA05DE3 foldingStartMarker: (<(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\b.*?>|^ *\[%[^%]*\b(?:FOR|WRAPPER|SWITCH|FOREACH|IF|UNLESS|BLOCK|MACRO|FILTER|PERL|TRY)\b(?!.*END *%\])) patterns: - endCaptures: "0": name: meta.tag.template.tt "1": name: punctuation.definition.tag.tt "2": name: entity.name.tag.tt "3": name: punctuation.definition.tag.tt begin: (?=\[% *(?:RAW)?PERL\b.*? *%\]) contentName: source.perl end: (\[%) *(END) *(%\]) patterns: - include: "#tmpl-container-tag" - include: source.perl - include: "#tmpl-container-tag" - include: text.html.basic foldingStopMarker: (|^ *\[% *END *%\]) keyEquivalent: ^~T