@@ -0,0 +1,142 @@
2+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
4+ "scopeName": "source.htmlang",
6+ { "include": "#comment" },
7+ { "include": "#raw-block" },
8+ { "include": "#page-directive" },
9+ { "include": "#let-definition" },
10+ { "include": "#define-definition" },
11+ { "include": "#fn-definition" },
12+ { "include": "#include-directive" },
13+ { "include": "#element" },
14+ { "include": "#function-call" },
15+ { "include": "#variable" },
16+ { "include": "#attributes" },
17+ { "include": "#inline-element" },
18+ { "include": "#color" },
19+ { "include": "#number" }
23+ "name": "comment.line.double-dash.htmlang",
24+ "match": "^\\s*--.*$"
27+ "name": "meta.raw.htmlang",
28+ "begin": "(@raw)\\s+(\"\"\")",
31+ "1": { "name": "entity.name.tag.htmlang" },
32+ "2": { "name": "punctuation.definition.string.begin.htmlang" }
35+ "1": { "name": "punctuation.definition.string.end.htmlang" }
37+ "contentName": "string.unquoted.raw.htmlang"
40+ "match": "(@page)\\s+(.*)",
42+ "1": { "name": "keyword.control.directive.htmlang" },
43+ "2": { "name": "string.unquoted.page-title.htmlang" }
47+ "match": "(@let)\\s+([a-zA-Z_][a-zA-Z0-9_-]*)",
49+ "1": { "name": "keyword.control.directive.htmlang" },
50+ "2": { "name": "variable.other.htmlang" }
53+ "define-definition": {
54+ "match": "(@define)\\s+([a-zA-Z_][a-zA-Z0-9_-]*)",
56+ "1": { "name": "keyword.control.directive.htmlang" },
57+ "2": { "name": "variable.other.constant.htmlang" }
61+ "match": "(@fn)\\s+([a-zA-Z_][a-zA-Z0-9_-]*)",
63+ "1": { "name": "keyword.control.directive.htmlang" },
64+ "2": { "name": "entity.name.function.definition.htmlang" }
67+ "include-directive": {
68+ "match": "(@include)\\s+(.*)",
70+ "1": { "name": "keyword.control.directive.htmlang" },
71+ "2": { "name": "string.unquoted.filename.htmlang" }
75+ "name": "entity.name.tag.htmlang",
76+ "match": "@(?:row|column|col|el|text|paragraph|p|image|img|link|raw|children)\\b"
79+ "name": "entity.name.function.htmlang",
80+ "match": "@[a-zA-Z_][a-zA-Z0-9_-]*"
83+ "name": "variable.other.htmlang",
84+ "match": "\\$[a-zA-Z_][a-zA-Z0-9_-]*"
87+ "name": "meta.attribute-list.htmlang",
91+ "0": { "name": "punctuation.section.brackets.begin.htmlang" }
94+ "0": { "name": "punctuation.section.brackets.end.htmlang" }
97+ { "include": "#variable" },
98+ { "include": "#color" },
99+ { "include": "#number" },
100+ { "include": "#state-prefix" },
101+ { "include": "#attribute-name" },
103+ "name": "punctuation.separator.comma.htmlang",
109+ "name": "keyword.other.state.htmlang",
110+ "match": "(?:hover|active|focus):"
113+ "name": "support.type.property-name.htmlang",
114+ "match": "\\b(?:spacing|padding|padding-x|padding-y|width|height|min-width|max-width|min-height|max-height|center-x|center-y|align-left|align-right|align-top|align-bottom|background|color|border|rounded|bold|italic|underline|size|font|transition|cursor|opacity|wrap|id|class)\\b"
117+ "name": "meta.inline-element.htmlang",
118+ "begin": "(\\{)(?=@)",
121+ "1": { "name": "punctuation.section.braces.begin.htmlang" }
124+ "1": { "name": "punctuation.section.braces.end.htmlang" }
127+ { "include": "#element" },
128+ { "include": "#function-call" },
129+ { "include": "#attributes" },
130+ { "include": "#variable" }
134+ "name": "constant.other.color.htmlang",
135+ "match": "#[0-9a-fA-F]{3,8}\\b"
138+ "name": "constant.numeric.htmlang",
139+ "match": "\\b[0-9]+(\\.[0-9]+)?\\b"