├── .editorconfig ├── .github └── FUNDING.yml ├── .gitignore ├── .vscode └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs ├── demo.png └── logo.png ├── html.json ├── package-lock.json ├── package.json ├── scripts └── main.js ├── syntaxes ├── es6-inline-css.json ├── es6-inline-glsl.json ├── es6-inline-html.json ├── es6-inline-javascript.json ├── es6-inline-markdown.json ├── es6-inline-sql.json ├── es6-inline-xml.json └── es6-js-injection.json └── tests ├── test.html ├── test.svelte └── test.vue /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{js,json}] 4 | indent_size = 2 5 | indent_style = space -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository 3 | 4 | buy_me_a_coffee: nonholy 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | key 3 | .idea -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "configurations": [ 4 | { 5 | "name": "Debug extension", 6 | "type": "extensionHost", 7 | "request": "launch", 8 | "runtimeExecutable": "${execPath}", 9 | "args": ["--extensionDevelopmentPath=${workspaceRoot}" ] 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | .gitignore 4 | .idea/** -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog] (http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 5 | 6 | ## [Unreleased] 7 | 8 | ## [1.0.0] - 2018-02-02 9 | ### Added 10 | - Syntax highlighting for html in es6 multiline strings 11 | 12 | ## [1.1.0] - 2018-03-08 13 | ### Fixed 14 | - Compatibility with Prettier 15 | 16 | ## [1.2.0] - 2018-03-12 17 | ### Added 18 | - Commands and keybindings 19 | 20 | ## [1.3.0] - 2018-03-17 21 | ### Added 22 | - Syntax highlight without a comment 23 | - Follow semver 24 | 25 | ### [1.4.0] - 2018-03-22 26 | ### Added 27 | - JS Syntax highlight 28 | - Single-line comment support 29 | 30 | ### [1.5.0] - 2018-03-22 31 | ### Fixed 32 | - Compatibility with Prettier 33 | 34 | ### [1.6.0] - 2018-08-13 35 | ### Added 36 | - SQL support. Beta 37 | 38 | ### [1.7.0] - 2018-08-14 39 | ### Fixed 40 | - Improve html function support 41 | 42 | ### [1.7.1] - 2018-08-15 43 | ### Fixed 44 | - Improve single-line comments support 45 | - Disable hotkeys 46 | 47 | ### [1.8.1] - 2018-08-18 48 | ### Added 49 | - Unquoted attributes support 50 | ### Fixed 51 | - Js-in-attributes support 52 | 53 | ### [1.8.2] - 2018-08-19 54 | ### Fixed 55 | - Fix missing `${}` syntax support in sql 56 | 57 | ### [1.8.3] - 2018-08-25 58 | ### Fixed 59 | - Fix broken multiline support for jquery 60 | 61 | ### [1.8.4] - 2019-01-11 62 | ### Fixed 63 | - Add html text as parameter argument support 64 | 65 | ### [1.8.5] - 2019-01-29 66 | ## Fixed 67 | - Highlight html passed directly into a function 68 | - Highlight html inside html script 69 | - Support for html passed as an argument 70 | 71 | ### [1.8.6] - 2019-01-31 72 | ## Fixed 73 | - Improve multiline strings support 74 | 75 | ### [1.8.7] - 2019-02-14 76 | ## Fixed 77 | - Fix bug with syntax coloring after keyword, placed inside html template 78 | 79 | ### [1.8.8] - 2019-04-12 80 | ## Improved 81 | - Match all caps for SQL (by @thebrodmann) 82 | 83 | ### [2.3.0] - 2021-04-23 84 | ## Improved 85 | - Support uppercase /* HTML */ 86 | 87 | ### [2.4.0] - 2021-04-23 88 | ## Improved 89 | - Support XML 90 | 91 | ### [2.5.0] - 2021-04-23 92 | ## Fixed 93 | - Ignore casing 94 | 95 | ### [2.6.0] - 2021-04-23 96 | ## Fixed 97 | - Syntax highlighting breaks with multiple placeholders in the same attribute 98 | ## Improved 99 | - Support SVG 100 | 101 | ### [2.7.0] - 2021-04-23 102 | ## Fixed 103 | - SQL highlight stops after encountering an identifier delimiter ` 104 | 105 | ### [2.8.0] - 2021-04-23 106 | ## Fixed 107 | - SQL support for vue files 108 | 109 | ### [2.9.0] - 2021-05-18 110 | ## Improved 111 | - CSS support 112 | 113 | ### [2.10.0] - 2021-06-03 114 | ## Improved 115 | - GLSL support 116 | 117 | ### [2.11.0] - 2021-10-05 118 | ## Improved 119 | - PHP file support 120 | 121 | ### [2.12.0] - 2021-10-05 122 | ## Fixed 123 | - Fixes issues with trailing syntax in single-line "sql" syntax shown in issue. And also adds support for Prisma and other ORMs that use "xxxxx.sql" syntax. Author: [@jdukleth](https://github.com/jdukleth) 124 | 125 | ### [2.14.1] - 2023-12-26 126 | ## Improved 127 | - Add ts/js support. Author: [@tomgao365](https://github.com/tomgao365) 128 | 129 | ### [2.15.0] - 2024-04-01 130 | ## Added 131 | - Support for html within jQuery without the need for comments. Author: [@scottforte](https://github.com/scottforte) 132 | 133 | ### [2.16.0] - 2024-07-14 134 | ## Added 135 | - Support ReScript syntax. Author: [mrmurphy](https://github.com/mrmurphy) 136 | 137 | ### [2.17.0] - 2024-12-04 138 | ## Added 139 | - Support Markdown (MD) syntax. Author: [aslushnikov](https://github.com/aslushnikov) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Tobimori (Victor Novikov) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ES6 String HTML 2 | > [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=Tobermory.es6-string-html) 3 | 4 | > [Open VSX Registry](https://open-vsx.org/extension/Tobermory/es6-string-html) 5 | 6 | Adds syntax highlight support for code, placed in es6 multiline strings: 7 | - HTML (incl. html quoted and unquoted attrs) 8 | - SQL 9 | - XML 10 | - SVG 11 | - CSS 12 | - GLSL 13 | - JavaScript/TypeScript 14 | 15 | ## Community 16 | - [python-string-sql](https://github.com/ptweir/python-string-sql) - Highlight SQL code in python multiline strings 17 | - [es6-string-javascript](https://github.com/Zjcompt/es6-string-javascript) - Highlight JS in multiline strings 18 | 19 | ## Installation 20 | 21 | - Install `es6-string-html` from extensions (`ctrl + shift + x`) 22 | - Or download it from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=Tobermory.es6-string-html) 23 | - Or download it from the [Open VSX Registry](https://open-vsx.org/extension/Tobermory/es6-string-html) 24 | 25 | ## Donation 26 | 27 | If you've found this extension useful, you can give me a cup of coffee :) 28 | 29 | [](https://www.buymeacoffee.com/nonholy) 30 | 31 | ## Example 32 | 33 |  34 | 35 | ## Usage 36 | 37 | Simply insert the comment /\*html\*/ or `html` (also works with SQL, SVG, XML, just use the appropriate word) before the string 38 | (see Requirements "section" for possible values) or select 39 | `Insert es6-string-html comment/template` from the commands menu 40 | (`ctrl+shift+p` or `f1`) 41 | 42 | > Tip: Comment in the beginning of es6 string is required 43 | 44 | ## Requirements 45 | 46 | - Visual Studio Code v1.19.0 and higher 47 | - Comment `/*html*/` before the string. (also works with CSS, SQL, SVG, XML, JavaScript, just use the appropriate word) Possible values: 48 | - - `/*css*/` 49 | - - `/*html*/` 50 | - - `/*inline-html*/` 51 | - - `/*template*/` 52 | - - `/*inline-template*/` 53 | - - `/*javascript*/` or `/*js*/` 54 | - - `/*typescript*/` or `/*ts*/` 55 | - Or 56 | - - `html` before the string 57 | 58 | ## Release Notes 59 | 60 | ### [...] 61 | - See changelog for previous notes 62 | 63 | ### [2.9.0] - 2021-05-18 64 | ## Improved 65 | - CSS support 66 | 67 | ### [2.10.0] - 2021-06-03 68 | ## Improved 69 | - GLSL support 70 | 71 | ### [2.11.0] - 2021-10-05 72 | ## Improved 73 | - PHP files support 74 | 75 | ### [2.12.0] - 2021-10-05 76 | ## Fixed 77 | - Fixes issues with trailing syntax in single-line "sql" syntax shown in issue. And also adds support for Prisma and other ORMs that use "xxxxx.sql" syntax. Author: [@jdukleth](https://github.com/jdukleth) 78 | 79 | ### [2.14.1] - 2023-12-26 80 | ## Improved 81 | - Add ts/js support. Author: [@tomgao365](https://github.com/tomgao365) 82 | 83 | ### [2.15.0] - 2024-04-01 84 | ## Added 85 | - Support for html within jQuery without the need for comments. Author: [@scottforte](https://github.com/scottforte) 86 | 87 | ### [2.16.0] - 2024-07-14 88 | ## Added 89 | - Support ReScript syntax. Author: [mrmurphy](https://github.com/mrmurphy) 90 | 91 | ### [2.17.0] - 2024-12-04 92 | ## Added 93 | - Support Markdown (MD) syntax. Author: [aslushnikov](https://github.com/aslushnikov) 94 | ----------------------------------------------------------------------------------------------------------- 95 | 96 | **Enjoy!** 97 | -------------------------------------------------------------------------------- /docs/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x00000001A/es6-string-html/e4a9955c57c64d46f6d61eb458fde5eab50862d1/docs/demo.png -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x00000001A/es6-string-html/e4a9955c57c64d46f6d61eb458fde5eab50862d1/docs/logo.png -------------------------------------------------------------------------------- /html.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "html", 4 | "htm", 5 | "shtml", 6 | "xhtml", 7 | "inc", 8 | "tmpl", 9 | "tpl" 10 | ], 11 | "firstLineMatch": "<(?i:(!DOCTYPE\\s*)?html)", 12 | "injections": { 13 | "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": { 14 | "comment": "Uses R: to ensure this matches after any other injections.", 15 | "patterns": [ 16 | { 17 | "match": "<", 18 | "name": "invalid.illegal.bad-angle-bracket.html" 19 | } 20 | ] 21 | } 22 | }, 23 | "keyEquivalent": "^~H", 24 | "name": "HTML", 25 | "patterns": [ 26 | { 27 | "include": "#xml-processing" 28 | }, 29 | { 30 | "include": "#comment" 31 | }, 32 | { 33 | "include": "#doctype" 34 | }, 35 | { 36 | "include": "#cdata" 37 | }, 38 | { 39 | "include": "#tags-valid" 40 | }, 41 | { 42 | "include": "#tags-invalid" 43 | }, 44 | { 45 | "include": "#entities" 46 | } 47 | ], 48 | "repository": { 49 | "attribute": { 50 | "patterns": [ 51 | { 52 | "begin": "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])", 53 | "beginCaptures": [ 54 | { 55 | "name": "entity.other.attribute-name.html" 56 | } 57 | ], 58 | "comment": "HTML5 attributes, not event handlers", 59 | "end": "(?=\\s*+[^=\\s])", 60 | "name": "meta.attribute.$1.html", 61 | "patterns": [ 62 | { 63 | "include": "#attribute-interior" 64 | } 65 | ] 66 | }, 67 | { 68 | "begin": "style(?![\\w:-])", 69 | "beginCaptures": [ 70 | { 71 | "name": "entity.other.attribute-name.html" 72 | } 73 | ], 74 | "comment": "HTML5 style attribute", 75 | "end": "(?=\\s*+[^=\\s])", 76 | "name": "meta.attribute.style.html", 77 | "patterns": [ 78 | { 79 | "begin": "=", 80 | "beginCaptures": [ 81 | { 82 | "name": "punctuation.separator.key-value.html" 83 | } 84 | ], 85 | "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", 86 | "patterns": [ 87 | { 88 | "begin": "(?=[^\\s=<>`/]|/(?!>))", 89 | "end": "(?!\\G)", 90 | "name": "meta.embedded.line.css", 91 | "patterns": [ 92 | { 93 | "captures": [ 94 | { 95 | "name": "source.css" 96 | } 97 | ], 98 | "match": "([^\\s\"'=<>`/]|/(?!>))+", 99 | "name": "string.unquoted.html" 100 | }, 101 | { 102 | "begin": "\"", 103 | "beginCaptures": [ 104 | { 105 | "name": "punctuation.definition.string.begin.html" 106 | } 107 | ], 108 | "contentName": "source.css", 109 | "end": "(\")", 110 | "endCaptures": [ 111 | { 112 | "name": "punctuation.definition.string.end.html" 113 | }, 114 | { 115 | "name": "source.css" 116 | } 117 | ], 118 | "name": "string.quoted.double.html", 119 | "patterns": [ 120 | { 121 | "include": "#entities" 122 | } 123 | ] 124 | }, 125 | { 126 | "begin": "'", 127 | "beginCaptures": [ 128 | { 129 | "name": "punctuation.definition.string.begin.html" 130 | } 131 | ], 132 | "contentName": "source.css", 133 | "end": "(')", 134 | "endCaptures": [ 135 | { 136 | "name": "punctuation.definition.string.end.html" 137 | }, 138 | { 139 | "name": "source.css" 140 | } 141 | ], 142 | "name": "string.quoted.single.html", 143 | "patterns": [ 144 | { 145 | "include": "#entities" 146 | } 147 | ] 148 | } 149 | ] 150 | }, 151 | { 152 | "match": "=", 153 | "name": "invalid.illegal.unexpected-equals-sign.html" 154 | } 155 | ] 156 | } 157 | ] 158 | }, 159 | { 160 | "begin": "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])", 161 | "beginCaptures": [ 162 | { 163 | "name": "entity.other.attribute-name.html" 164 | } 165 | ], 166 | "comment": "HTML5 attributes, event handlers", 167 | "end": "(?=\\s*+[^=\\s])", 168 | "name": "meta.attribute.event-handler.$1.html", 169 | "patterns": [ 170 | { 171 | "begin": "=", 172 | "beginCaptures": [ 173 | { 174 | "name": "punctuation.separator.key-value.html" 175 | } 176 | ], 177 | "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", 178 | "patterns": [ 179 | { 180 | "begin": "(?=[^\\s=<>`/]|/(?!>))", 181 | "end": "(?!\\G)", 182 | "name": "meta.embedded.line.js", 183 | "patterns": [ 184 | { 185 | "captures": [ 186 | { 187 | "name": "source.js" 188 | }, 189 | { 190 | "patterns": [ 191 | { 192 | "include": "source.js" 193 | } 194 | ] 195 | } 196 | ], 197 | "match": "(([^\\s\"'=<>`/]|/(?!>))+)", 198 | "name": "string.unquoted.html" 199 | }, 200 | { 201 | "begin": "\"", 202 | "beginCaptures": [ 203 | { 204 | "name": "punctuation.definition.string.begin.html" 205 | } 206 | ], 207 | "contentName": "source.js", 208 | "end": "(\")", 209 | "endCaptures": [ 210 | { 211 | "name": "punctuation.definition.string.end.html" 212 | }, 213 | { 214 | "name": "source.js" 215 | } 216 | ], 217 | "name": "string.quoted.double.html", 218 | "patterns": [ 219 | { 220 | "captures": [ 221 | { 222 | "patterns": [ 223 | { 224 | "include": "source.js" 225 | } 226 | ] 227 | } 228 | ], 229 | "match": "([^\\n\"/]|/(?![/*]))+" 230 | }, 231 | { 232 | "begin": "//", 233 | "beginCaptures": [ 234 | { 235 | "name": "punctuation.definition.comment.js" 236 | } 237 | ], 238 | "end": "(?=\")|\\n", 239 | "name": "comment.line.double-slash.js" 240 | }, 241 | { 242 | "begin": "/\\*", 243 | "beginCaptures": [ 244 | { 245 | "name": "punctuation.definition.comment.begin.js" 246 | } 247 | ], 248 | "end": "(?=\")|\\*/", 249 | "endCaptures": [ 250 | { 251 | "name": "punctuation.definition.comment.end.js" 252 | } 253 | ], 254 | "name": "comment.block.js" 255 | } 256 | ] 257 | }, 258 | { 259 | "begin": "'", 260 | "beginCaptures": [ 261 | { 262 | "name": "punctuation.definition.string.begin.html" 263 | } 264 | ], 265 | "contentName": "source.js", 266 | "end": "(')", 267 | "endCaptures": [ 268 | { 269 | "name": "punctuation.definition.string.end.html" 270 | }, 271 | { 272 | "name": "source.js" 273 | } 274 | ], 275 | "name": "string.quoted.single.html", 276 | "patterns": [ 277 | { 278 | "captures": [ 279 | { 280 | "patterns": [ 281 | { 282 | "include": "source.js" 283 | } 284 | ] 285 | } 286 | ], 287 | "match": "([^\\n'/]|/(?![/*]))+" 288 | }, 289 | { 290 | "begin": "//", 291 | "beginCaptures": [ 292 | { 293 | "name": "punctuation.definition.comment.js" 294 | } 295 | ], 296 | "end": "(?=')|\\n", 297 | "name": "comment.line.double-slash.js" 298 | }, 299 | { 300 | "begin": "/\\*", 301 | "beginCaptures": [ 302 | { 303 | "name": "punctuation.definition.comment.begin.js" 304 | } 305 | ], 306 | "end": "(?=')|\\*/", 307 | "endCaptures": [ 308 | { 309 | "name": "punctuation.definition.comment.end.js" 310 | } 311 | ], 312 | "name": "comment.block.js" 313 | } 314 | ] 315 | } 316 | ] 317 | }, 318 | { 319 | "match": "=", 320 | "name": "invalid.illegal.unexpected-equals-sign.html" 321 | } 322 | ] 323 | } 324 | ] 325 | }, 326 | { 327 | "begin": "(data-[a-z\\-]+)(?![\\w:-])", 328 | "beginCaptures": [ 329 | { 330 | "name": "entity.other.attribute-name.html" 331 | } 332 | ], 333 | "comment": "HTML5 attributes, data-*", 334 | "end": "(?=\\s*+[^=\\s])", 335 | "name": "meta.attribute.data-x.$1.html", 336 | "patterns": [ 337 | { 338 | "include": "#attribute-interior" 339 | } 340 | ] 341 | }, 342 | { 343 | "begin": "(align|bgcolor|border)(?![\\w:-])", 344 | "beginCaptures": [ 345 | { 346 | "name": "invalid.deprecated.entity.other.attribute-name.html" 347 | } 348 | ], 349 | "comment": "HTML attributes, deprecated", 350 | "end": "(?=\\s*+[^=\\s])", 351 | "name": "meta.attribute.$1.html", 352 | "patterns": [ 353 | { 354 | "include": "#attribute-interior" 355 | } 356 | ] 357 | }, 358 | { 359 | "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", 360 | "beginCaptures": [ 361 | { 362 | "name": "entity.other.attribute-name.html" 363 | } 364 | ], 365 | "comment": "Anything else that is valid", 366 | "end": "(?=\\s*+[^=\\s])", 367 | "name": "meta.attribute.unrecognized.$1.html", 368 | "patterns": [ 369 | { 370 | "include": "#attribute-interior" 371 | } 372 | ] 373 | }, 374 | { 375 | "match": "[^\\s>]+", 376 | "name": "invalid.illegal.character-not-allowed-here.html" 377 | } 378 | ] 379 | }, 380 | "attribute-interior": { 381 | "patterns": [ 382 | { 383 | "begin": "=", 384 | "beginCaptures": [ 385 | { 386 | "name": "punctuation.separator.key-value.html" 387 | } 388 | ], 389 | "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", 390 | "patterns": [ 391 | { 392 | "match": "([^\\s\"'=<>`/]|/(?!>))+", 393 | "name": "string.unquoted.html" 394 | }, 395 | { 396 | "begin": "\"", 397 | "beginCaptures": [ 398 | { 399 | "name": "punctuation.definition.string.begin.html" 400 | } 401 | ], 402 | "end": "\"", 403 | "endCaptures": [ 404 | { 405 | "name": "punctuation.definition.string.end.html" 406 | } 407 | ], 408 | "name": "string.quoted.double.html", 409 | "patterns": [ 410 | { 411 | "include": "#entities" 412 | } 413 | ] 414 | }, 415 | { 416 | "begin": "'", 417 | "beginCaptures": [ 418 | { 419 | "name": "punctuation.definition.string.begin.html" 420 | } 421 | ], 422 | "end": "'", 423 | "endCaptures": [ 424 | { 425 | "name": "punctuation.definition.string.end.html" 426 | } 427 | ], 428 | "name": "string.quoted.single.html", 429 | "patterns": [ 430 | { 431 | "include": "#entities" 432 | } 433 | ] 434 | }, 435 | { 436 | "match": "=", 437 | "name": "invalid.illegal.unexpected-equals-sign.html" 438 | } 439 | ] 440 | } 441 | ] 442 | }, 443 | "cdata": { 444 | "begin": "", 452 | "endCaptures": [ 453 | { 454 | "name": "punctuation.definition.tag.end.html" 455 | } 456 | ], 457 | "name": "meta.tag.metadata.cdata.html" 458 | }, 459 | "comment": { 460 | "begin": "", 467 | "name": "comment.block.html", 468 | "patterns": [ 469 | { 470 | "match": "\\G-?>", 471 | "name": "invalid.illegal.characters-not-allowed-here.html" 472 | }, 473 | { 474 | "match": ")", 475 | "name": "invalid.illegal.characters-not-allowed-here.html" 476 | }, 477 | { 478 | "match": "--!>", 479 | "name": "invalid.illegal.characters-not-allowed-here.html" 480 | } 481 | ] 482 | }, 483 | "core-minus-invalid": { 484 | "comment": "This should be the root pattern array includes minus #tags-invalid", 485 | "patterns": [ 486 | { 487 | "include": "#xml-processing" 488 | }, 489 | { 490 | "include": "#comment" 491 | }, 492 | { 493 | "include": "#doctype" 494 | }, 495 | { 496 | "include": "#cdata" 497 | }, 498 | { 499 | "include": "#tags-valid" 500 | }, 501 | { 502 | "include": "#entities" 503 | } 504 | ] 505 | }, 506 | "doctype": { 507 | "begin": "", 514 | "endCaptures": [ 515 | { 516 | "name": "punctuation.definition.tag.end.html" 517 | } 518 | ], 519 | "name": "meta.tag.metadata.doctype.html", 520 | "patterns": [ 521 | { 522 | "match": "\\G(?i:DOCTYPE)", 523 | "name": "entity.name.tag.html" 524 | }, 525 | { 526 | "begin": "\"", 527 | "end": "\"", 528 | "name": "string.quoted.double.html" 529 | }, 530 | { 531 | "match": "[^\\s>]+", 532 | "name": "entity.other.attribute-name.html" 533 | } 534 | ] 535 | }, 536 | "entities": { 537 | "patterns": [ 538 | { 539 | "captures": { 540 | "1": { 541 | "name": "punctuation.definition.entity.html" 542 | }, 543 | "912": { 544 | "name": "punctuation.definition.entity.html" 545 | } 546 | }, 547 | "comment": "Yes this is a bit ridiculous, there are quite a lot of these", 548 | "match": "(?x)\n\t\t\t\t\t\t(&)\t(?=[a-zA-Z])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n\t\t\t\t\t\t | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n\t\t\t\t\t\t | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n\t\t\t\t\t\t | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n\t\t\t\t\t\t | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n\t\t\t\t\t\t | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n\t\t\t\t\t\t | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n\t\t\t\t\t\t | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n\t\t\t\t\t\t | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n\t\t\t\t\t\t | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n\t\t\t\t\t\t | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n\t\t\t\t\t\t | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n\t\t\t\t\t\t | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n\t\t\t\t\t\t | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n\t\t\t\t\t\t | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n\t\t\t\t\t\t | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n\t\t\t\t\t\t | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n\t\t\t\t\t\t | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n\t\t\t\t\t\t | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n\t\t\t\t\t\t | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n\t\t\t\t\t\t | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n\t\t\t\t\t\t | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n\t\t\t\t\t\t | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n\t\t\t\t\t\t | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n\t\t\t\t\t\t | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n\t\t\t\t\t\t | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(;)\n\t\t\t\t\t", 549 | "name": "constant.character.entity.named.$2.html" 550 | }, 551 | { 552 | "captures": { 553 | "1": { 554 | "name": "punctuation.definition.entity.html" 555 | }, 556 | "3": { 557 | "name": "punctuation.definition.entity.html" 558 | } 559 | }, 560 | "match": "(&)#[0-9]+(;)", 561 | "name": "constant.character.entity.numeric.decimal.html" 562 | }, 563 | { 564 | "captures": { 565 | "1": { 566 | "name": "punctuation.definition.entity.html" 567 | }, 568 | "3": { 569 | "name": "punctuation.definition.entity.html" 570 | } 571 | }, 572 | "match": "(&)#[xX][0-9a-fA-F]+(;)", 573 | "name": "constant.character.entity.numeric.hexadecimal.html" 574 | }, 575 | { 576 | "match": "&(?=[a-zA-Z0-9]+;)", 577 | "name": "invalid.illegal.ambiguous-ampersand.html" 578 | } 579 | ] 580 | }, 581 | "math": { 582 | "patterns": [ 583 | { 584 | "begin": "(?i)(<)(math)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 585 | "beginCaptures": { 586 | "0": { 587 | "name": "meta.tag.structure.$2.start.html" 588 | }, 589 | "1": { 590 | "name": "punctuation.definition.tag.begin.html" 591 | }, 592 | "2": { 593 | "name": "entity.name.tag.html" 594 | }, 595 | "3": { 596 | "patterns": [ 597 | { 598 | "include": "#attribute" 599 | } 600 | ] 601 | }, 602 | "5": { 603 | "name": "punctuation.definition.tag.end.html" 604 | } 605 | }, 606 | "end": "(?i)()(\\2)\\s*(>)", 607 | "endCaptures": [ 608 | { 609 | "name": "meta.tag.structure.$2.end.html" 610 | }, 611 | { 612 | "name": "punctuation.definition.tag.begin.html" 613 | }, 614 | { 615 | "name": "entity.name.tag.html" 616 | }, 617 | { 618 | "name": "punctuation.definition.tag.end.html" 619 | } 620 | ], 621 | "name": "meta.element.structure.$2.html", 622 | "patterns": [ 623 | { 624 | "begin": "(?)\\G", 625 | "end": ">", 626 | "endCaptures": [ 627 | { 628 | "name": "punctuation.definition.tag.end.html" 629 | } 630 | ], 631 | "name": "meta.tag.structure.start.html", 632 | "patterns": [ 633 | { 634 | "include": "#attribute" 635 | } 636 | ] 637 | }, 638 | { 639 | "include": "#tags" 640 | } 641 | ] 642 | } 643 | ], 644 | "repository": { 645 | "attribute": { 646 | "patterns": [ 647 | { 648 | "begin": "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])", 649 | "beginCaptures": [ 650 | { 651 | "name": "entity.other.attribute-name.html" 652 | } 653 | ], 654 | "end": "(?=\\s*+[^=\\s])", 655 | "name": "meta.attribute.$1.html", 656 | "patterns": [ 657 | { 658 | "include": "#attribute-interior" 659 | } 660 | ] 661 | }, 662 | { 663 | "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", 664 | "beginCaptures": [ 665 | { 666 | "name": "entity.other.attribute-name.html" 667 | } 668 | ], 669 | "comment": "Anything else that is valid", 670 | "end": "(?=\\s*+[^=\\s])", 671 | "name": "meta.attribute.unrecognized.$1.html", 672 | "patterns": [ 673 | { 674 | "include": "#attribute-interior" 675 | } 676 | ] 677 | }, 678 | { 679 | "match": "[^\\s>]+", 680 | "name": "invalid.illegal.character-not-allowed-here.html" 681 | } 682 | ] 683 | }, 684 | "tags": { 685 | "patterns": [ 686 | { 687 | "include": "#comment" 688 | }, 689 | { 690 | "include": "#cdata" 691 | }, 692 | { 693 | "captures": { 694 | "0": { 695 | "name": "meta.tag.structure.math.$2.void.html" 696 | }, 697 | "1": { 698 | "name": "punctuation.definition.tag.begin.html" 699 | }, 700 | "2": { 701 | "name": "entity.name.tag.html" 702 | }, 703 | "3": { 704 | "patterns": [ 705 | { 706 | "include": "#attribute" 707 | } 708 | ] 709 | }, 710 | "5": { 711 | "name": "punctuation.definition.tag.end.html" 712 | } 713 | }, 714 | "match": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 715 | "name": "meta.element.structure.math.$2.html" 716 | }, 717 | { 718 | "begin": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 719 | "beginCaptures": { 720 | "0": { 721 | "name": "meta.tag.structure.math.$2.start.html" 722 | }, 723 | "1": { 724 | "name": "punctuation.definition.tag.begin.html" 725 | }, 726 | "2": { 727 | "name": "entity.name.tag.html" 728 | }, 729 | "3": { 730 | "patterns": [ 731 | { 732 | "include": "#attribute" 733 | } 734 | ] 735 | }, 736 | "5": { 737 | "name": "punctuation.definition.tag.end.html" 738 | } 739 | }, 740 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 741 | "endCaptures": [ 742 | { 743 | "name": "meta.tag.structure.math.$2.end.html" 744 | }, 745 | { 746 | "name": "punctuation.definition.tag.begin.html" 747 | }, 748 | { 749 | "name": "entity.name.tag.html" 750 | }, 751 | { 752 | "name": "punctuation.definition.tag.end.html" 753 | }, 754 | { 755 | "name": "punctuation.definition.tag.end.html" 756 | } 757 | ], 758 | "name": "meta.element.structure.math.$2.html", 759 | "patterns": [ 760 | { 761 | "begin": "(?)\\G", 762 | "end": "(?=/>)|>", 763 | "endCaptures": [ 764 | { 765 | "name": "punctuation.definition.tag.end.html" 766 | } 767 | ], 768 | "name": "meta.tag.structure.start.html", 769 | "patterns": [ 770 | { 771 | "include": "#attribute" 772 | } 773 | ] 774 | }, 775 | { 776 | "include": "#tags" 777 | } 778 | ] 779 | }, 780 | { 781 | "captures": { 782 | "0": { 783 | "name": "meta.tag.inline.math.$2.void.html" 784 | }, 785 | "1": { 786 | "name": "punctuation.definition.tag.begin.html" 787 | }, 788 | "2": { 789 | "name": "entity.name.tag.html" 790 | }, 791 | "3": { 792 | "patterns": [ 793 | { 794 | "include": "#attribute" 795 | } 796 | ] 797 | }, 798 | "5": { 799 | "name": "punctuation.definition.tag.end.html" 800 | } 801 | }, 802 | "match": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 803 | "name": "meta.element.inline.math.$2.html" 804 | }, 805 | { 806 | "begin": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 807 | "beginCaptures": { 808 | "0": { 809 | "name": "meta.tag.inline.math.$2.start.html" 810 | }, 811 | "1": { 812 | "name": "punctuation.definition.tag.begin.html" 813 | }, 814 | "2": { 815 | "name": "entity.name.tag.html" 816 | }, 817 | "3": { 818 | "patterns": [ 819 | { 820 | "include": "#attribute" 821 | } 822 | ] 823 | }, 824 | "5": { 825 | "name": "punctuation.definition.tag.end.html" 826 | } 827 | }, 828 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 829 | "endCaptures": [ 830 | { 831 | "name": "meta.tag.inline.math.$2.end.html" 832 | }, 833 | { 834 | "name": "punctuation.definition.tag.begin.html" 835 | }, 836 | { 837 | "name": "entity.name.tag.html" 838 | }, 839 | { 840 | "name": "punctuation.definition.tag.end.html" 841 | }, 842 | { 843 | "name": "punctuation.definition.tag.end.html" 844 | } 845 | ], 846 | "name": "meta.element.inline.math.$2.html", 847 | "patterns": [ 848 | { 849 | "begin": "(?)\\G", 850 | "end": "(?=/>)|>", 851 | "endCaptures": [ 852 | { 853 | "name": "punctuation.definition.tag.end.html" 854 | } 855 | ], 856 | "name": "meta.tag.inline.start.html", 857 | "patterns": [ 858 | { 859 | "include": "#attribute" 860 | } 861 | ] 862 | }, 863 | { 864 | "include": "#tags" 865 | } 866 | ] 867 | }, 868 | { 869 | "captures": { 870 | "0": { 871 | "name": "meta.tag.object.math.$2.void.html" 872 | }, 873 | "1": { 874 | "name": "punctuation.definition.tag.begin.html" 875 | }, 876 | "2": { 877 | "name": "entity.name.tag.html" 878 | }, 879 | "3": { 880 | "patterns": [ 881 | { 882 | "include": "#attribute" 883 | } 884 | ] 885 | }, 886 | "5": { 887 | "name": "punctuation.definition.tag.end.html" 888 | } 889 | }, 890 | "match": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 891 | "name": "meta.element.object.math.$2.html" 892 | }, 893 | { 894 | "begin": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 895 | "beginCaptures": { 896 | "0": { 897 | "name": "meta.tag.object.math.$2.start.html" 898 | }, 899 | "1": { 900 | "name": "punctuation.definition.tag.begin.html" 901 | }, 902 | "2": { 903 | "name": "entity.name.tag.html" 904 | }, 905 | "3": { 906 | "patterns": [ 907 | { 908 | "include": "#attribute" 909 | } 910 | ] 911 | }, 912 | "5": { 913 | "name": "punctuation.definition.tag.end.html" 914 | } 915 | }, 916 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 917 | "endCaptures": [ 918 | { 919 | "name": "meta.tag.object.math.$2.end.html" 920 | }, 921 | { 922 | "name": "punctuation.definition.tag.begin.html" 923 | }, 924 | { 925 | "name": "entity.name.tag.html" 926 | }, 927 | { 928 | "name": "punctuation.definition.tag.end.html" 929 | }, 930 | { 931 | "name": "punctuation.definition.tag.end.html" 932 | } 933 | ], 934 | "name": "meta.element.object.math.$2.html", 935 | "patterns": [ 936 | { 937 | "begin": "(?)\\G", 938 | "end": "(?=/>)|>", 939 | "endCaptures": [ 940 | { 941 | "name": "punctuation.definition.tag.end.html" 942 | } 943 | ], 944 | "name": "meta.tag.object.start.html", 945 | "patterns": [ 946 | { 947 | "include": "#attribute" 948 | } 949 | ] 950 | }, 951 | { 952 | "include": "#tags" 953 | } 954 | ] 955 | }, 956 | { 957 | "captures": { 958 | "0": { 959 | "name": "meta.tag.other.invalid.void.html" 960 | }, 961 | "1": { 962 | "name": "punctuation.definition.tag.begin.html" 963 | }, 964 | "2": { 965 | "name": "entity.name.tag.html" 966 | }, 967 | "3": { 968 | "name": "invalid.illegal.unrecognized-tag.html" 969 | }, 970 | "4": { 971 | "patterns": [ 972 | { 973 | "include": "#attribute" 974 | } 975 | ] 976 | }, 977 | "6": { 978 | "name": "punctuation.definition.tag.end.html" 979 | } 980 | }, 981 | "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 982 | "name": "meta.element.other.invalid.html" 983 | }, 984 | { 985 | "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 986 | "beginCaptures": { 987 | "0": { 988 | "name": "meta.tag.other.invalid.start.html" 989 | }, 990 | "1": { 991 | "name": "punctuation.definition.tag.begin.html" 992 | }, 993 | "2": { 994 | "name": "entity.name.tag.html" 995 | }, 996 | "3": { 997 | "name": "invalid.illegal.unrecognized-tag.html" 998 | }, 999 | "4": { 1000 | "patterns": [ 1001 | { 1002 | "include": "#attribute" 1003 | } 1004 | ] 1005 | }, 1006 | "6": { 1007 | "name": "punctuation.definition.tag.end.html" 1008 | } 1009 | }, 1010 | "end": "(?i)()((\\2))\\s*(>)|(/>)|(?=\\w+)", 1011 | "endCaptures": [ 1012 | { 1013 | "name": "meta.tag.other.invalid.end.html" 1014 | }, 1015 | { 1016 | "name": "punctuation.definition.tag.begin.html" 1017 | }, 1018 | { 1019 | "name": "entity.name.tag.html" 1020 | }, 1021 | { 1022 | "name": "invalid.illegal.unrecognized-tag.html" 1023 | }, 1024 | { 1025 | "name": "punctuation.definition.tag.end.html" 1026 | }, 1027 | { 1028 | "name": "punctuation.definition.tag.end.html" 1029 | } 1030 | ], 1031 | "name": "meta.element.other.invalid.html", 1032 | "patterns": [ 1033 | { 1034 | "begin": "(?)\\G", 1035 | "end": "(?=/>)|>", 1036 | "endCaptures": [ 1037 | { 1038 | "name": "punctuation.definition.tag.end.html" 1039 | } 1040 | ], 1041 | "name": "meta.tag.other.invalid.start.html", 1042 | "patterns": [ 1043 | { 1044 | "include": "#attribute" 1045 | } 1046 | ] 1047 | }, 1048 | { 1049 | "include": "#tags" 1050 | } 1051 | ] 1052 | }, 1053 | { 1054 | "include": "#tags-invalid" 1055 | } 1056 | ] 1057 | } 1058 | } 1059 | }, 1060 | "svg": { 1061 | "patterns": [ 1062 | { 1063 | "begin": "(?i)(<)(svg)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1064 | "beginCaptures": { 1065 | "0": { 1066 | "name": "meta.tag.structure.$2.start.html" 1067 | }, 1068 | "1": { 1069 | "name": "punctuation.definition.tag.begin.html" 1070 | }, 1071 | "2": { 1072 | "name": "entity.name.tag.html" 1073 | }, 1074 | "3": { 1075 | "patterns": [ 1076 | { 1077 | "include": "#attribute" 1078 | } 1079 | ] 1080 | }, 1081 | "5": { 1082 | "name": "punctuation.definition.tag.end.html" 1083 | } 1084 | }, 1085 | "end": "(?i)()(\\2)\\s*(>)", 1086 | "endCaptures": [ 1087 | { 1088 | "name": "meta.tag.structure.$2.end.html" 1089 | }, 1090 | { 1091 | "name": "punctuation.definition.tag.begin.html" 1092 | }, 1093 | { 1094 | "name": "entity.name.tag.html" 1095 | }, 1096 | { 1097 | "name": "punctuation.definition.tag.end.html" 1098 | } 1099 | ], 1100 | "name": "meta.element.structure.$2.html", 1101 | "patterns": [ 1102 | { 1103 | "begin": "(?)\\G", 1104 | "end": ">", 1105 | "endCaptures": [ 1106 | { 1107 | "name": "punctuation.definition.tag.end.html" 1108 | } 1109 | ], 1110 | "name": "meta.tag.structure.start.html", 1111 | "patterns": [ 1112 | { 1113 | "include": "#attribute" 1114 | } 1115 | ] 1116 | }, 1117 | { 1118 | "include": "#tags" 1119 | } 1120 | ] 1121 | } 1122 | ], 1123 | "repository": { 1124 | "attribute": { 1125 | "patterns": [ 1126 | { 1127 | "begin": "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])", 1128 | "beginCaptures": [ 1129 | { 1130 | "name": "entity.other.attribute-name.html" 1131 | } 1132 | ], 1133 | "end": "(?=\\s*+[^=\\s])", 1134 | "name": "meta.attribute.$1.html", 1135 | "patterns": [ 1136 | { 1137 | "include": "#attribute-interior" 1138 | } 1139 | ] 1140 | }, 1141 | { 1142 | "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", 1143 | "beginCaptures": [ 1144 | { 1145 | "name": "entity.other.attribute-name.html" 1146 | } 1147 | ], 1148 | "comment": "Anything else that is valid", 1149 | "end": "(?=\\s*+[^=\\s])", 1150 | "name": "meta.attribute.unrecognized.$1.html", 1151 | "patterns": [ 1152 | { 1153 | "include": "#attribute-interior" 1154 | } 1155 | ] 1156 | }, 1157 | { 1158 | "match": "[^\\s>]+", 1159 | "name": "invalid.illegal.character-not-allowed-here.html" 1160 | } 1161 | ] 1162 | }, 1163 | "tags": { 1164 | "patterns": [ 1165 | { 1166 | "include": "#comment" 1167 | }, 1168 | { 1169 | "include": "#cdata" 1170 | }, 1171 | { 1172 | "captures": { 1173 | "0": { 1174 | "name": "meta.tag.metadata.svg.$2.void.html" 1175 | }, 1176 | "1": { 1177 | "name": "punctuation.definition.tag.begin.html" 1178 | }, 1179 | "2": { 1180 | "name": "entity.name.tag.html" 1181 | }, 1182 | "3": { 1183 | "patterns": [ 1184 | { 1185 | "include": "#attribute" 1186 | } 1187 | ] 1188 | }, 1189 | "5": { 1190 | "name": "punctuation.definition.tag.end.html" 1191 | } 1192 | }, 1193 | "match": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1194 | "name": "meta.element.metadata.svg.$2.html" 1195 | }, 1196 | { 1197 | "begin": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1198 | "beginCaptures": { 1199 | "0": { 1200 | "name": "meta.tag.metadata.svg.$2.start.html" 1201 | }, 1202 | "1": { 1203 | "name": "punctuation.definition.tag.begin.html" 1204 | }, 1205 | "2": { 1206 | "name": "entity.name.tag.html" 1207 | }, 1208 | "3": { 1209 | "patterns": [ 1210 | { 1211 | "include": "#attribute" 1212 | } 1213 | ] 1214 | }, 1215 | "5": { 1216 | "name": "punctuation.definition.tag.end.html" 1217 | } 1218 | }, 1219 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 1220 | "endCaptures": [ 1221 | { 1222 | "name": "meta.tag.metadata.svg.$2.end.html" 1223 | }, 1224 | { 1225 | "name": "punctuation.definition.tag.begin.html" 1226 | }, 1227 | { 1228 | "name": "entity.name.tag.html" 1229 | }, 1230 | { 1231 | "name": "punctuation.definition.tag.end.html" 1232 | }, 1233 | { 1234 | "name": "punctuation.definition.tag.end.html" 1235 | } 1236 | ], 1237 | "name": "meta.element.metadata.svg.$2.html", 1238 | "patterns": [ 1239 | { 1240 | "begin": "(?)\\G", 1241 | "end": "(?=/>)|>", 1242 | "endCaptures": [ 1243 | { 1244 | "name": "punctuation.definition.tag.end.html" 1245 | } 1246 | ], 1247 | "name": "meta.tag.metadata.start.html", 1248 | "patterns": [ 1249 | { 1250 | "include": "#attribute" 1251 | } 1252 | ] 1253 | }, 1254 | { 1255 | "include": "#tags" 1256 | } 1257 | ] 1258 | }, 1259 | { 1260 | "captures": { 1261 | "0": { 1262 | "name": "meta.tag.structure.svg.$2.void.html" 1263 | }, 1264 | "1": { 1265 | "name": "punctuation.definition.tag.begin.html" 1266 | }, 1267 | "2": { 1268 | "name": "entity.name.tag.html" 1269 | }, 1270 | "3": { 1271 | "patterns": [ 1272 | { 1273 | "include": "#attribute" 1274 | } 1275 | ] 1276 | }, 1277 | "5": { 1278 | "name": "punctuation.definition.tag.end.html" 1279 | } 1280 | }, 1281 | "match": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1282 | "name": "meta.element.structure.svg.$2.html" 1283 | }, 1284 | { 1285 | "begin": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1286 | "beginCaptures": { 1287 | "0": { 1288 | "name": "meta.tag.structure.svg.$2.start.html" 1289 | }, 1290 | "1": { 1291 | "name": "punctuation.definition.tag.begin.html" 1292 | }, 1293 | "2": { 1294 | "name": "entity.name.tag.html" 1295 | }, 1296 | "3": { 1297 | "patterns": [ 1298 | { 1299 | "include": "#attribute" 1300 | } 1301 | ] 1302 | }, 1303 | "5": { 1304 | "name": "punctuation.definition.tag.end.html" 1305 | } 1306 | }, 1307 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 1308 | "endCaptures": [ 1309 | { 1310 | "name": "meta.tag.structure.svg.$2.end.html" 1311 | }, 1312 | { 1313 | "name": "punctuation.definition.tag.begin.html" 1314 | }, 1315 | { 1316 | "name": "entity.name.tag.html" 1317 | }, 1318 | { 1319 | "name": "punctuation.definition.tag.end.html" 1320 | }, 1321 | { 1322 | "name": "punctuation.definition.tag.end.html" 1323 | } 1324 | ], 1325 | "name": "meta.element.structure.svg.$2.html", 1326 | "patterns": [ 1327 | { 1328 | "begin": "(?)\\G", 1329 | "end": "(?=/>)|>", 1330 | "endCaptures": [ 1331 | { 1332 | "name": "punctuation.definition.tag.end.html" 1333 | } 1334 | ], 1335 | "name": "meta.tag.structure.start.html", 1336 | "patterns": [ 1337 | { 1338 | "include": "#attribute" 1339 | } 1340 | ] 1341 | }, 1342 | { 1343 | "include": "#tags" 1344 | } 1345 | ] 1346 | }, 1347 | { 1348 | "captures": { 1349 | "0": { 1350 | "name": "meta.tag.inline.svg.$2.void.html" 1351 | }, 1352 | "1": { 1353 | "name": "punctuation.definition.tag.begin.html" 1354 | }, 1355 | "2": { 1356 | "name": "entity.name.tag.html" 1357 | }, 1358 | "3": { 1359 | "patterns": [ 1360 | { 1361 | "include": "#attribute" 1362 | } 1363 | ] 1364 | }, 1365 | "5": { 1366 | "name": "punctuation.definition.tag.end.html" 1367 | } 1368 | }, 1369 | "match": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1370 | "name": "meta.element.inline.svg.$2.html" 1371 | }, 1372 | { 1373 | "begin": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1374 | "beginCaptures": { 1375 | "0": { 1376 | "name": "meta.tag.inline.svg.$2.start.html" 1377 | }, 1378 | "1": { 1379 | "name": "punctuation.definition.tag.begin.html" 1380 | }, 1381 | "2": { 1382 | "name": "entity.name.tag.html" 1383 | }, 1384 | "3": { 1385 | "patterns": [ 1386 | { 1387 | "include": "#attribute" 1388 | } 1389 | ] 1390 | }, 1391 | "5": { 1392 | "name": "punctuation.definition.tag.end.html" 1393 | } 1394 | }, 1395 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 1396 | "endCaptures": [ 1397 | { 1398 | "name": "meta.tag.inline.svg.$2.end.html" 1399 | }, 1400 | { 1401 | "name": "punctuation.definition.tag.begin.html" 1402 | }, 1403 | { 1404 | "name": "entity.name.tag.html" 1405 | }, 1406 | { 1407 | "name": "punctuation.definition.tag.end.html" 1408 | }, 1409 | { 1410 | "name": "punctuation.definition.tag.end.html" 1411 | } 1412 | ], 1413 | "name": "meta.element.inline.svg.$2.html", 1414 | "patterns": [ 1415 | { 1416 | "begin": "(?)\\G", 1417 | "end": "(?=/>)|>", 1418 | "endCaptures": [ 1419 | { 1420 | "name": "punctuation.definition.tag.end.html" 1421 | } 1422 | ], 1423 | "name": "meta.tag.inline.start.html", 1424 | "patterns": [ 1425 | { 1426 | "include": "#attribute" 1427 | } 1428 | ] 1429 | }, 1430 | { 1431 | "include": "#tags" 1432 | } 1433 | ] 1434 | }, 1435 | { 1436 | "captures": { 1437 | "0": { 1438 | "name": "meta.tag.object.svg.$2.void.html" 1439 | }, 1440 | "1": { 1441 | "name": "punctuation.definition.tag.begin.html" 1442 | }, 1443 | "2": { 1444 | "name": "entity.name.tag.html" 1445 | }, 1446 | "3": { 1447 | "patterns": [ 1448 | { 1449 | "include": "#attribute" 1450 | } 1451 | ] 1452 | }, 1453 | "5": { 1454 | "name": "punctuation.definition.tag.end.html" 1455 | } 1456 | }, 1457 | "match": "(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1458 | "name": "meta.element.object.svg.$2.html" 1459 | }, 1460 | { 1461 | "begin": "(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1462 | "beginCaptures": { 1463 | "0": { 1464 | "name": "meta.tag.object.svg.$2.start.html" 1465 | }, 1466 | "1": { 1467 | "name": "punctuation.definition.tag.begin.html" 1468 | }, 1469 | "2": { 1470 | "name": "entity.name.tag.html" 1471 | }, 1472 | "3": { 1473 | "patterns": [ 1474 | { 1475 | "include": "#attribute" 1476 | } 1477 | ] 1478 | }, 1479 | "5": { 1480 | "name": "punctuation.definition.tag.end.html" 1481 | } 1482 | }, 1483 | "end": "(?i)()(\\2)\\s*(>)|(/>)|(?=\\w+)", 1484 | "endCaptures": [ 1485 | { 1486 | "name": "meta.tag.object.svg.$2.end.html" 1487 | }, 1488 | { 1489 | "name": "punctuation.definition.tag.begin.html" 1490 | }, 1491 | { 1492 | "name": "entity.name.tag.html" 1493 | }, 1494 | { 1495 | "name": "punctuation.definition.tag.end.html" 1496 | }, 1497 | { 1498 | "name": "punctuation.definition.tag.end.html" 1499 | } 1500 | ], 1501 | "name": "meta.element.object.svg.$2.html", 1502 | "patterns": [ 1503 | { 1504 | "begin": "(?)\\G", 1505 | "end": "(?=/>)|>", 1506 | "endCaptures": [ 1507 | { 1508 | "name": "punctuation.definition.tag.end.html" 1509 | } 1510 | ], 1511 | "name": "meta.tag.object.start.html", 1512 | "patterns": [ 1513 | { 1514 | "include": "#attribute" 1515 | } 1516 | ] 1517 | }, 1518 | { 1519 | "include": "#tags" 1520 | } 1521 | ] 1522 | }, 1523 | { 1524 | "captures": { 1525 | "0": { 1526 | "name": "meta.tag.other.svg.$2.void.html" 1527 | }, 1528 | "1": { 1529 | "name": "punctuation.definition.tag.begin.html" 1530 | }, 1531 | "2": { 1532 | "name": "entity.name.tag.html" 1533 | }, 1534 | "3": { 1535 | "name": "invalid.deprecated.html" 1536 | }, 1537 | "4": { 1538 | "patterns": [ 1539 | { 1540 | "include": "#attribute" 1541 | } 1542 | ] 1543 | }, 1544 | "6": { 1545 | "name": "punctuation.definition.tag.end.html" 1546 | } 1547 | }, 1548 | "match": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1549 | "name": "meta.element.other.svg.$2.html" 1550 | }, 1551 | { 1552 | "begin": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1553 | "beginCaptures": { 1554 | "0": { 1555 | "name": "meta.tag.other.svg.$2.start.html" 1556 | }, 1557 | "1": { 1558 | "name": "punctuation.definition.tag.begin.html" 1559 | }, 1560 | "2": { 1561 | "name": "entity.name.tag.html" 1562 | }, 1563 | "3": { 1564 | "name": "invalid.deprecated.html" 1565 | }, 1566 | "4": { 1567 | "patterns": [ 1568 | { 1569 | "include": "#attribute" 1570 | } 1571 | ] 1572 | }, 1573 | "6": { 1574 | "name": "punctuation.definition.tag.end.html" 1575 | } 1576 | }, 1577 | "end": "(?i)()((\\2))\\s*(>)|(/>)|(?=\\w+)", 1578 | "endCaptures": [ 1579 | { 1580 | "name": "meta.tag.other.svg.$2.end.html" 1581 | }, 1582 | { 1583 | "name": "punctuation.definition.tag.begin.html" 1584 | }, 1585 | { 1586 | "name": "entity.name.tag.html" 1587 | }, 1588 | { 1589 | "name": "invalid.deprecated.html" 1590 | }, 1591 | { 1592 | "name": "punctuation.definition.tag.end.html" 1593 | }, 1594 | { 1595 | "name": "punctuation.definition.tag.end.html" 1596 | } 1597 | ], 1598 | "name": "meta.element.other.svg.$2.html", 1599 | "patterns": [ 1600 | { 1601 | "begin": "(?)\\G", 1602 | "end": "(?=/>)|>", 1603 | "endCaptures": [ 1604 | { 1605 | "name": "punctuation.definition.tag.end.html" 1606 | } 1607 | ], 1608 | "name": "meta.tag.other.start.html", 1609 | "patterns": [ 1610 | { 1611 | "include": "#attribute" 1612 | } 1613 | ] 1614 | }, 1615 | { 1616 | "include": "#tags" 1617 | } 1618 | ] 1619 | }, 1620 | { 1621 | "captures": { 1622 | "0": { 1623 | "name": "meta.tag.other.invalid.void.html" 1624 | }, 1625 | "1": { 1626 | "name": "punctuation.definition.tag.begin.html" 1627 | }, 1628 | "2": { 1629 | "name": "entity.name.tag.html" 1630 | }, 1631 | "3": { 1632 | "name": "invalid.illegal.unrecognized-tag.html" 1633 | }, 1634 | "4": { 1635 | "patterns": [ 1636 | { 1637 | "include": "#attribute" 1638 | } 1639 | ] 1640 | }, 1641 | "6": { 1642 | "name": "punctuation.definition.tag.end.html" 1643 | } 1644 | }, 1645 | "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", 1646 | "name": "meta.element.other.invalid.html" 1647 | }, 1648 | { 1649 | "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", 1650 | "beginCaptures": { 1651 | "0": { 1652 | "name": "meta.tag.other.invalid.start.html" 1653 | }, 1654 | "1": { 1655 | "name": "punctuation.definition.tag.begin.html" 1656 | }, 1657 | "2": { 1658 | "name": "entity.name.tag.html" 1659 | }, 1660 | "3": { 1661 | "name": "invalid.illegal.unrecognized-tag.html" 1662 | }, 1663 | "4": { 1664 | "patterns": [ 1665 | { 1666 | "include": "#attribute" 1667 | } 1668 | ] 1669 | }, 1670 | "6": { 1671 | "name": "punctuation.definition.tag.end.html" 1672 | } 1673 | }, 1674 | "end": "(?i)()((\\2))\\s*(>)|(/>)|(?=\\w+)", 1675 | "endCaptures": [ 1676 | { 1677 | "name": "meta.tag.other.invalid.end.html" 1678 | }, 1679 | { 1680 | "name": "punctuation.definition.tag.begin.html" 1681 | }, 1682 | { 1683 | "name": "entity.name.tag.html" 1684 | }, 1685 | { 1686 | "name": "invalid.illegal.unrecognized-tag.html" 1687 | }, 1688 | { 1689 | "name": "punctuation.definition.tag.end.html" 1690 | }, 1691 | { 1692 | "name": "punctuation.definition.tag.end.html" 1693 | } 1694 | ], 1695 | "name": "meta.element.other.invalid.html", 1696 | "patterns": [ 1697 | { 1698 | "begin": "(?)\\G", 1699 | "end": "(?=/>)|>", 1700 | "endCaptures": [ 1701 | { 1702 | "name": "punctuation.definition.tag.end.html" 1703 | } 1704 | ], 1705 | "name": "meta.tag.other.invalid.start.html", 1706 | "patterns": [ 1707 | { 1708 | "include": "#attribute" 1709 | } 1710 | ] 1711 | }, 1712 | { 1713 | "include": "#tags" 1714 | } 1715 | ] 1716 | }, 1717 | { 1718 | "include": "#tags-invalid" 1719 | } 1720 | ] 1721 | } 1722 | } 1723 | }, 1724 | "tags-invalid": { 1725 | "patterns": [ 1726 | { 1727 | "begin": "(?)((\\w[^\\s>]*))(?)", 1740 | "endCaptures": { 1741 | "1": { 1742 | "name": "punctuation.definition.tag.end.html" 1743 | } 1744 | }, 1745 | "name": "meta.tag.other.$2.html", 1746 | "patterns": [ 1747 | { 1748 | "include": "#attribute" 1749 | } 1750 | ] 1751 | } 1752 | ] 1753 | }, 1754 | "tags-valid": { 1755 | "patterns": [ 1756 | { 1757 | "begin": "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))", 1758 | "beginCaptures": { 1759 | "1": { 1760 | "name": "punctuation.whitespace.embedded.leading.html" 1761 | } 1762 | }, 1763 | "end": "(?!\\G)([ \\t]*$\\n?)?", 1764 | "endCaptures": { 1765 | "1": { 1766 | "name": "punctuation.whitespace.embedded.trailing.html" 1767 | } 1768 | }, 1769 | "patterns": [ 1770 | { 1771 | "begin": "(?i)(<)(style)(?=\\s|/?>)", 1772 | "beginCaptures": [ 1773 | { 1774 | "name": "meta.tag.metadata.style.start.html" 1775 | }, 1776 | { 1777 | "name": "punctuation.definition.tag.begin.html" 1778 | }, 1779 | { 1780 | "name": "entity.name.tag.html" 1781 | } 1782 | ], 1783 | "end": "(?i)((<)/)(style)\\s*(>)", 1784 | "endCaptures": [ 1785 | { 1786 | "name": "meta.tag.metadata.style.end.html" 1787 | }, 1788 | { 1789 | "name": "punctuation.definition.tag.begin.html" 1790 | }, 1791 | { 1792 | "name": "source.css" 1793 | }, 1794 | { 1795 | "name": "entity.name.tag.html" 1796 | }, 1797 | { 1798 | "name": "punctuation.definition.tag.end.html" 1799 | } 1800 | ], 1801 | "name": "meta.embedded.block.html", 1802 | "patterns": [ 1803 | { 1804 | "begin": "\\G", 1805 | "captures": { 1806 | "1": { 1807 | "name": "punctuation.definition.tag.end.html" 1808 | } 1809 | }, 1810 | "end": "(>)", 1811 | "name": "meta.tag.metadata.style.start.html", 1812 | "patterns": [ 1813 | { 1814 | "include": "#attribute" 1815 | } 1816 | ] 1817 | }, 1818 | { 1819 | "begin": "(?!\\G)", 1820 | "end": "(?=(?i:style))", 1821 | "name": "source.css", 1822 | "patterns": [ 1823 | { 1824 | "include": "source.css" 1825 | } 1826 | ] 1827 | } 1828 | ] 1829 | } 1830 | ] 1831 | }, 1832 | { 1833 | "begin": "(^[ \\t]+)?(?=<(?i:script)\\b(?!-))", 1834 | "beginCaptures": { 1835 | "1": { 1836 | "name": "punctuation.whitespace.embedded.leading.html" 1837 | } 1838 | }, 1839 | "end": "(?!\\G)([ \\t]*$\\n?)?", 1840 | "endCaptures": { 1841 | "1": { 1842 | "name": "punctuation.whitespace.embedded.trailing.html" 1843 | } 1844 | }, 1845 | "patterns": [ 1846 | { 1847 | "begin": "(<)((?i:script))\\b", 1848 | "beginCaptures": [ 1849 | { 1850 | "name": "meta.tag.metadata.script.start.html" 1851 | }, 1852 | { 1853 | "name": "punctuation.definition.tag.begin.html" 1854 | }, 1855 | { 1856 | "name": "entity.name.tag.html" 1857 | } 1858 | ], 1859 | "end": "(/)((?i:script))(>)", 1860 | "endCaptures": [ 1861 | { 1862 | "name": "meta.tag.metadata.script.end.html" 1863 | }, 1864 | { 1865 | "name": "punctuation.definition.tag.begin.html" 1866 | }, 1867 | { 1868 | "name": "entity.name.tag.html" 1869 | }, 1870 | { 1871 | "name": "punctuation.definition.tag.end.html" 1872 | } 1873 | ], 1874 | "name": "meta.embedded.block.html", 1875 | "patterns": [ 1876 | { 1877 | "begin": "\\G", 1878 | "end": "(?=/)", 1879 | "patterns": [ 1880 | { 1881 | "begin": "(>)", 1882 | "beginCaptures": [ 1883 | { 1884 | "name": "meta.tag.metadata.script.start.html" 1885 | }, 1886 | { 1887 | "name": "punctuation.definition.tag.end.html" 1888 | } 1889 | ], 1890 | "end": "((<))(?=/(?i:script))", 1891 | "endCaptures": [ 1892 | { 1893 | "name": "meta.tag.metadata.script.end.html" 1894 | }, 1895 | { 1896 | "name": "punctuation.definition.tag.begin.html" 1897 | }, 1898 | { 1899 | "name": "source.js" 1900 | } 1901 | ], 1902 | "patterns": [ 1903 | { 1904 | "begin": "\\G", 1905 | "end": "(?=(?i:script))", 1906 | "name": "source.js", 1907 | "patterns": [ 1908 | { 1909 | "begin": "(^[ \\t]+)?(?=//)", 1910 | "beginCaptures": { 1911 | "1": { 1912 | "name": "punctuation.whitespace.comment.leading.js" 1913 | } 1914 | }, 1915 | "end": "(?!\\G)", 1916 | "patterns": [ 1917 | { 1918 | "begin": "//", 1919 | "beginCaptures": [ 1920 | { 1921 | "name": "punctuation.definition.comment.js" 1922 | } 1923 | ], 1924 | "end": "(?=\t\t\t\t\t\t\t\t\t\t\t# Tag without type attribute\n\t\t\t\t\t\t\t\t\t\t\t\t | type(?=[\\s=])\n\t\t\t\t\t\t\t\t\t\t\t\t \t(?!\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t''\t\t\t\t\t\t\t\t# Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | \"\"\t\t\t\t\t\t\t\t\t# Values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | ('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\t\t\t\t\t\t\t# Text mime-types\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjavascript(1\\.[0-5])?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | x-javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | jscript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | livescript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | babel\t\t\t\t\t\t# Javascript variant currently\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t# recognized as such\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | application/\t\t\t\t\t# Application mime-types\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(x-)?javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | module\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", 1949 | "name": "meta.tag.metadata.script.start.html", 1950 | "patterns": [ 1951 | { 1952 | "include": "#attribute" 1953 | } 1954 | ] 1955 | }, 1956 | { 1957 | "begin": "(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx-handlebars\n\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-(handlebars-)?|ng-)?template\n\t\t\t\t\t\t\t\t\t\t\t\t\t | html\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", 1958 | "end": "((<))(?=/(?i:script))", 1959 | "endCaptures": [ 1960 | { 1961 | "name": "meta.tag.metadata.script.end.html" 1962 | }, 1963 | { 1964 | "name": "punctuation.definition.tag.begin.html" 1965 | }, 1966 | { 1967 | "name": "text.html.basic" 1968 | } 1969 | ], 1970 | "patterns": [ 1971 | { 1972 | "begin": "\\G", 1973 | "end": "(>)", 1974 | "endCaptures": { 1975 | "1": { 1976 | "name": "punctuation.definition.tag.end.html" 1977 | } 1978 | }, 1979 | "name": "meta.tag.metadata.script.start.html", 1980 | "patterns": [ 1981 | { 1982 | "include": "#attribute" 1983 | } 1984 | ] 1985 | }, 1986 | { 1987 | "begin": "(?!\\G)", 1988 | "end": "(?=(?i:script))", 1989 | "name": "text.html.basic", 1990 | "patterns": [ 1991 | { 1992 | "include": "text.html.basic" 1993 | } 1994 | ] 1995 | } 1996 | ] 1997 | }, 1998 | { 1999 | "begin": "(?=(?i:type))", 2000 | "end": "(<)(?=/(?i:script))", 2001 | "endCaptures": [ 2002 | { 2003 | "name": "meta.tag.metadata.script.end.html" 2004 | }, 2005 | { 2006 | "name": "punctuation.definition.tag.begin.html" 2007 | } 2008 | ], 2009 | "patterns": [ 2010 | { 2011 | "begin": "\\G", 2012 | "end": "(>)", 2013 | "endCaptures": { 2014 | "1": { 2015 | "name": "punctuation.definition.tag.end.html" 2016 | } 2017 | }, 2018 | "name": "meta.tag.metadata.script.start.html", 2019 | "patterns": [ 2020 | { 2021 | "include": "#attribute" 2022 | } 2023 | ] 2024 | }, 2025 | { 2026 | "begin": "(?!\\G)", 2027 | "end": "(?=(?i:script))", 2028 | "name": "source.unknown" 2029 | } 2030 | ] 2031 | } 2032 | ] 2033 | } 2034 | ] 2035 | } 2036 | ] 2037 | }, 2038 | { 2039 | "begin": "(?i)(<)(base|link|meta)(?=\\s|/?>)", 2040 | "beginCaptures": { 2041 | "1": { 2042 | "name": "punctuation.definition.tag.begin.html" 2043 | }, 2044 | "2": { 2045 | "name": "entity.name.tag.html" 2046 | } 2047 | }, 2048 | "end": "/?>", 2049 | "endCaptures": [ 2050 | { 2051 | "name": "punctuation.definition.tag.end.html" 2052 | } 2053 | ], 2054 | "name": "meta.tag.metadata.$2.void.html", 2055 | "patterns": [ 2056 | { 2057 | "include": "#attribute" 2058 | } 2059 | ] 2060 | }, 2061 | { 2062 | "begin": "(?i)(<)(noscript|title)(?=\\s|/?>)", 2063 | "beginCaptures": { 2064 | "1": { 2065 | "name": "punctuation.definition.tag.begin.html" 2066 | }, 2067 | "2": { 2068 | "name": "entity.name.tag.html" 2069 | } 2070 | }, 2071 | "end": ">", 2072 | "endCaptures": [ 2073 | { 2074 | "name": "punctuation.definition.tag.end.html" 2075 | } 2076 | ], 2077 | "name": "meta.tag.metadata.$2.start.html", 2078 | "patterns": [ 2079 | { 2080 | "include": "#attribute" 2081 | } 2082 | ] 2083 | }, 2084 | { 2085 | "begin": "(?i)()(noscript|title)(?=\\s|/?>)", 2086 | "beginCaptures": { 2087 | "1": { 2088 | "name": "punctuation.definition.tag.begin.html" 2089 | }, 2090 | "2": { 2091 | "name": "entity.name.tag.html" 2092 | } 2093 | }, 2094 | "end": ">", 2095 | "endCaptures": [ 2096 | { 2097 | "name": "punctuation.definition.tag.end.html" 2098 | } 2099 | ], 2100 | "name": "meta.tag.metadata.$2.end.html", 2101 | "patterns": [ 2102 | { 2103 | "include": "#attribute" 2104 | } 2105 | ] 2106 | }, 2107 | { 2108 | "begin": "(?i)(<)(col|hr|input)(?=\\s|/?>)", 2109 | "beginCaptures": { 2110 | "1": { 2111 | "name": "punctuation.definition.tag.begin.html" 2112 | }, 2113 | "2": { 2114 | "name": "entity.name.tag.html" 2115 | } 2116 | }, 2117 | "end": "/?>", 2118 | "endCaptures": [ 2119 | { 2120 | "name": "punctuation.definition.tag.end.html" 2121 | } 2122 | ], 2123 | "name": "meta.tag.structure.$2.void.html", 2124 | "patterns": [ 2125 | { 2126 | "include": "#attribute" 2127 | } 2128 | ] 2129 | }, 2130 | { 2131 | "begin": "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)", 2132 | "beginCaptures": { 2133 | "1": { 2134 | "name": "punctuation.definition.tag.begin.html" 2135 | }, 2136 | "2": { 2137 | "name": "entity.name.tag.html" 2138 | } 2139 | }, 2140 | "end": ">", 2141 | "endCaptures": [ 2142 | { 2143 | "name": "punctuation.definition.tag.end.html" 2144 | } 2145 | ], 2146 | "name": "meta.tag.structure.$2.start.html", 2147 | "patterns": [ 2148 | { 2149 | "include": "#attribute" 2150 | } 2151 | ] 2152 | }, 2153 | { 2154 | "begin": "(?i)()(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)", 2155 | "beginCaptures": { 2156 | "1": { 2157 | "name": "punctuation.definition.tag.begin.html" 2158 | }, 2159 | "2": { 2160 | "name": "entity.name.tag.html" 2161 | } 2162 | }, 2163 | "end": ">", 2164 | "endCaptures": [ 2165 | { 2166 | "name": "punctuation.definition.tag.end.html" 2167 | } 2168 | ], 2169 | "name": "meta.tag.structure.$2.end.html", 2170 | "patterns": [ 2171 | { 2172 | "include": "#attribute" 2173 | } 2174 | ] 2175 | }, 2176 | { 2177 | "begin": "(?i)(<)(area|br|wbr)(?=\\s|/?>)", 2178 | "beginCaptures": { 2179 | "1": { 2180 | "name": "punctuation.definition.tag.begin.html" 2181 | }, 2182 | "2": { 2183 | "name": "entity.name.tag.html" 2184 | } 2185 | }, 2186 | "end": "/?>", 2187 | "endCaptures": [ 2188 | { 2189 | "name": "punctuation.definition.tag.end.html" 2190 | } 2191 | ], 2192 | "name": "meta.tag.inline.$2.void.html", 2193 | "patterns": [ 2194 | { 2195 | "include": "#attribute" 2196 | } 2197 | ] 2198 | }, 2199 | { 2200 | "begin": "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)", 2201 | "beginCaptures": { 2202 | "1": { 2203 | "name": "punctuation.definition.tag.begin.html" 2204 | }, 2205 | "2": { 2206 | "name": "entity.name.tag.html" 2207 | } 2208 | }, 2209 | "end": ">", 2210 | "endCaptures": [ 2211 | { 2212 | "name": "punctuation.definition.tag.end.html" 2213 | } 2214 | ], 2215 | "name": "meta.tag.inline.$2.start.html", 2216 | "patterns": [ 2217 | { 2218 | "include": "#attribute" 2219 | } 2220 | ] 2221 | }, 2222 | { 2223 | "begin": "(?i)()(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)", 2224 | "beginCaptures": { 2225 | "1": { 2226 | "name": "punctuation.definition.tag.begin.html" 2227 | }, 2228 | "2": { 2229 | "name": "entity.name.tag.html" 2230 | } 2231 | }, 2232 | "end": ">", 2233 | "endCaptures": [ 2234 | { 2235 | "name": "punctuation.definition.tag.end.html" 2236 | } 2237 | ], 2238 | "name": "meta.tag.inline.$2.end.html", 2239 | "patterns": [ 2240 | { 2241 | "include": "#attribute" 2242 | } 2243 | ] 2244 | }, 2245 | { 2246 | "begin": "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)", 2247 | "beginCaptures": { 2248 | "1": { 2249 | "name": "punctuation.definition.tag.begin.html" 2250 | }, 2251 | "2": { 2252 | "name": "entity.name.tag.html" 2253 | } 2254 | }, 2255 | "end": "/?>", 2256 | "endCaptures": [ 2257 | { 2258 | "name": "punctuation.definition.tag.end.html" 2259 | } 2260 | ], 2261 | "name": "meta.tag.object.$2.void.html", 2262 | "patterns": [ 2263 | { 2264 | "include": "#attribute" 2265 | } 2266 | ] 2267 | }, 2268 | { 2269 | "begin": "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)", 2270 | "beginCaptures": { 2271 | "1": { 2272 | "name": "punctuation.definition.tag.begin.html" 2273 | }, 2274 | "2": { 2275 | "name": "entity.name.tag.html" 2276 | } 2277 | }, 2278 | "end": ">", 2279 | "endCaptures": [ 2280 | { 2281 | "name": "punctuation.definition.tag.end.html" 2282 | } 2283 | ], 2284 | "name": "meta.tag.object.$2.start.html", 2285 | "patterns": [ 2286 | { 2287 | "include": "#attribute" 2288 | } 2289 | ] 2290 | }, 2291 | { 2292 | "begin": "(?i)()(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)", 2293 | "beginCaptures": { 2294 | "1": { 2295 | "name": "punctuation.definition.tag.begin.html" 2296 | }, 2297 | "2": { 2298 | "name": "entity.name.tag.html" 2299 | } 2300 | }, 2301 | "end": ">", 2302 | "endCaptures": [ 2303 | { 2304 | "name": "punctuation.definition.tag.end.html" 2305 | } 2306 | ], 2307 | "name": "meta.tag.object.$2.end.html", 2308 | "patterns": [ 2309 | { 2310 | "include": "#attribute" 2311 | } 2312 | ] 2313 | }, 2314 | { 2315 | "begin": "(?i)(<)((basefont|isindex))(?=\\s|/?>)", 2316 | "beginCaptures": { 2317 | "1": { 2318 | "name": "punctuation.definition.tag.begin.html" 2319 | }, 2320 | "2": { 2321 | "name": "entity.name.tag.html" 2322 | }, 2323 | "3": { 2324 | "name": "invalid.deprecated.html" 2325 | } 2326 | }, 2327 | "end": "/?>", 2328 | "endCaptures": [ 2329 | { 2330 | "name": "punctuation.definition.tag.end.html" 2331 | } 2332 | ], 2333 | "name": "meta.tag.metadata.$2.void.html", 2334 | "patterns": [ 2335 | { 2336 | "include": "#attribute" 2337 | } 2338 | ] 2339 | }, 2340 | { 2341 | "begin": "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)", 2342 | "beginCaptures": { 2343 | "1": { 2344 | "name": "punctuation.definition.tag.begin.html" 2345 | }, 2346 | "2": { 2347 | "name": "entity.name.tag.html" 2348 | }, 2349 | "3": { 2350 | "name": "invalid.deprecated.html" 2351 | } 2352 | }, 2353 | "end": ">", 2354 | "endCaptures": [ 2355 | { 2356 | "name": "punctuation.definition.tag.end.html" 2357 | } 2358 | ], 2359 | "name": "meta.tag.structure.$2.start.html", 2360 | "patterns": [ 2361 | { 2362 | "include": "#attribute" 2363 | } 2364 | ] 2365 | }, 2366 | { 2367 | "begin": "(?i)()((center|frameset|noembed|noframes))(?=\\s|/?>)", 2368 | "beginCaptures": { 2369 | "1": { 2370 | "name": "punctuation.definition.tag.begin.html" 2371 | }, 2372 | "2": { 2373 | "name": "entity.name.tag.html" 2374 | }, 2375 | "3": { 2376 | "name": "invalid.deprecated.html" 2377 | } 2378 | }, 2379 | "end": ">", 2380 | "endCaptures": [ 2381 | { 2382 | "name": "punctuation.definition.tag.end.html" 2383 | } 2384 | ], 2385 | "name": "meta.tag.structure.$2.end.html", 2386 | "patterns": [ 2387 | { 2388 | "include": "#attribute" 2389 | } 2390 | ] 2391 | }, 2392 | { 2393 | "begin": "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)", 2394 | "beginCaptures": { 2395 | "1": { 2396 | "name": "punctuation.definition.tag.begin.html" 2397 | }, 2398 | "2": { 2399 | "name": "entity.name.tag.html" 2400 | }, 2401 | "3": { 2402 | "name": "invalid.deprecated.html" 2403 | } 2404 | }, 2405 | "end": ">", 2406 | "endCaptures": [ 2407 | { 2408 | "name": "punctuation.definition.tag.end.html" 2409 | } 2410 | ], 2411 | "name": "meta.tag.inline.$2.start.html", 2412 | "patterns": [ 2413 | { 2414 | "include": "#attribute" 2415 | } 2416 | ] 2417 | }, 2418 | { 2419 | "begin": "(?i)()((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)", 2420 | "beginCaptures": { 2421 | "1": { 2422 | "name": "punctuation.definition.tag.begin.html" 2423 | }, 2424 | "2": { 2425 | "name": "entity.name.tag.html" 2426 | }, 2427 | "3": { 2428 | "name": "invalid.deprecated.html" 2429 | } 2430 | }, 2431 | "end": ">", 2432 | "endCaptures": [ 2433 | { 2434 | "name": "punctuation.definition.tag.end.html" 2435 | } 2436 | ], 2437 | "name": "meta.tag.inline.$2.end.html", 2438 | "patterns": [ 2439 | { 2440 | "include": "#attribute" 2441 | } 2442 | ] 2443 | }, 2444 | { 2445 | "begin": "(?i)(<)((frame))(?=\\s|/?>)", 2446 | "beginCaptures": { 2447 | "1": { 2448 | "name": "punctuation.definition.tag.begin.html" 2449 | }, 2450 | "2": { 2451 | "name": "entity.name.tag.html" 2452 | }, 2453 | "3": { 2454 | "name": "invalid.deprecated.html" 2455 | } 2456 | }, 2457 | "end": "/?>", 2458 | "endCaptures": [ 2459 | { 2460 | "name": "punctuation.definition.tag.end.html" 2461 | } 2462 | ], 2463 | "name": "meta.tag.object.$2.void.html", 2464 | "patterns": [ 2465 | { 2466 | "include": "#attribute" 2467 | } 2468 | ] 2469 | }, 2470 | { 2471 | "begin": "(?i)(<)((applet))(?=\\s|/?>)", 2472 | "beginCaptures": { 2473 | "1": { 2474 | "name": "punctuation.definition.tag.begin.html" 2475 | }, 2476 | "2": { 2477 | "name": "entity.name.tag.html" 2478 | }, 2479 | "3": { 2480 | "name": "invalid.deprecated.html" 2481 | } 2482 | }, 2483 | "end": ">", 2484 | "endCaptures": [ 2485 | { 2486 | "name": "punctuation.definition.tag.end.html" 2487 | } 2488 | ], 2489 | "name": "meta.tag.object.$2.start.html", 2490 | "patterns": [ 2491 | { 2492 | "include": "#attribute" 2493 | } 2494 | ] 2495 | }, 2496 | { 2497 | "begin": "(?i)()((applet))(?=\\s|/?>)", 2498 | "beginCaptures": { 2499 | "1": { 2500 | "name": "punctuation.definition.tag.begin.html" 2501 | }, 2502 | "2": { 2503 | "name": "entity.name.tag.html" 2504 | }, 2505 | "3": { 2506 | "name": "invalid.deprecated.html" 2507 | } 2508 | }, 2509 | "end": ">", 2510 | "endCaptures": [ 2511 | { 2512 | "name": "punctuation.definition.tag.end.html" 2513 | } 2514 | ], 2515 | "name": "meta.tag.object.$2.end.html", 2516 | "patterns": [ 2517 | { 2518 | "include": "#attribute" 2519 | } 2520 | ] 2521 | }, 2522 | { 2523 | "begin": "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)", 2524 | "beginCaptures": { 2525 | "1": { 2526 | "name": "punctuation.definition.tag.begin.html" 2527 | }, 2528 | "2": { 2529 | "name": "entity.name.tag.html" 2530 | }, 2531 | "3": { 2532 | "name": "invalid.illegal.no-longer-supported.html" 2533 | } 2534 | }, 2535 | "end": ">", 2536 | "endCaptures": [ 2537 | { 2538 | "name": "punctuation.definition.tag.end.html" 2539 | } 2540 | ], 2541 | "name": "meta.tag.other.$2.start.html", 2542 | "patterns": [ 2543 | { 2544 | "include": "#attribute" 2545 | } 2546 | ] 2547 | }, 2548 | { 2549 | "begin": "(?i)()((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)", 2550 | "beginCaptures": { 2551 | "1": { 2552 | "name": "punctuation.definition.tag.begin.html" 2553 | }, 2554 | "2": { 2555 | "name": "entity.name.tag.html" 2556 | }, 2557 | "3": { 2558 | "name": "invalid.illegal.no-longer-supported.html" 2559 | } 2560 | }, 2561 | "end": ">", 2562 | "endCaptures": [ 2563 | { 2564 | "name": "punctuation.definition.tag.end.html" 2565 | } 2566 | ], 2567 | "name": "meta.tag.other.$2.end.html", 2568 | "patterns": [ 2569 | { 2570 | "include": "#attribute" 2571 | } 2572 | ] 2573 | }, 2574 | { 2575 | "include": "#math" 2576 | }, 2577 | { 2578 | "include": "#svg" 2579 | }, 2580 | { 2581 | "begin": "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)", 2582 | "beginCaptures": { 2583 | "1": { 2584 | "name": "punctuation.definition.tag.begin.html" 2585 | }, 2586 | "2": { 2587 | "name": "entity.name.tag.html" 2588 | } 2589 | }, 2590 | "end": "/?>", 2591 | "endCaptures": [ 2592 | { 2593 | "name": "punctuation.definition.tag.end.html" 2594 | } 2595 | ], 2596 | "name": "meta.tag.custom.start.html", 2597 | "patterns": [ 2598 | { 2599 | "include": "#attribute" 2600 | } 2601 | ] 2602 | }, 2603 | { 2604 | "begin": "()([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)", 2605 | "beginCaptures": { 2606 | "1": { 2607 | "name": "punctuation.definition.tag.begin.html" 2608 | }, 2609 | "2": { 2610 | "name": "entity.name.tag.html" 2611 | } 2612 | }, 2613 | "end": ">", 2614 | "endCaptures": [ 2615 | { 2616 | "name": "punctuation.definition.tag.end.html" 2617 | } 2618 | ], 2619 | "name": "meta.tag.custom.end.html", 2620 | "patterns": [ 2621 | { 2622 | "include": "#attribute" 2623 | } 2624 | ] 2625 | } 2626 | ] 2627 | }, 2628 | "xml-processing": { 2629 | "begin": "(<\\?)(xml)", 2630 | "captures": { 2631 | "1": { 2632 | "name": "punctuation.definition.tag.html" 2633 | }, 2634 | "2": { 2635 | "name": "entity.name.tag.html" 2636 | } 2637 | }, 2638 | "end": "(\\?>)", 2639 | "name": "meta.tag.metadata.processing.xml.html", 2640 | "patterns": [ 2641 | { 2642 | "include": "#attribute" 2643 | } 2644 | ] 2645 | } 2646 | }, 2647 | "scopeName": "text.html.basic", 2648 | "uuid": "17994EC8-6B1D-11D9-AC3A-000D93589AF6" 2649 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-string-html", 3 | "version": "2.17.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "es6-string-html", 9 | "version": "2.17.0", 10 | "engines": { 11 | "vscode": "^1.19.0" 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-string-html", 3 | "displayName": "es6-string-html", 4 | "description": "Syntax highlighting in es6 multiline strings", 5 | "version": "2.17.0", 6 | "publisher": "Tobermory", 7 | "icon": "docs/logo.png", 8 | "engines": { 9 | "vscode": "^1.19.0" 10 | }, 11 | "galleryBanner": { 12 | "color": "#dedede", 13 | "theme": "light" 14 | }, 15 | "repository": { 16 | "url": "https://github.com/mydesireiscoma/es6-string-html" 17 | }, 18 | "bugs": { 19 | "url": "https://github.com/mydesireiscoma/es6-string-html/issues" 20 | }, 21 | "main": "./scripts/main", 22 | "categories": [ 23 | "Programming Languages" 24 | ], 25 | "keywords": [ 26 | "javascript", 27 | "es6", 28 | "es6-string-html", 29 | "html", 30 | "sql", 31 | "xml", 32 | "svg" 33 | ], 34 | "activationEvents": [ 35 | "onCommand:es6stringhtml.insertComment", 36 | "onCommand:es6stringhtml.insertTemplate" 37 | ], 38 | "contributes": { 39 | "commands": [ 40 | { 41 | "command": "es6stringhtml.insertComment", 42 | "title": "Insert es6-string-html comment", 43 | "category": "HTML" 44 | }, 45 | { 46 | "command": "es6stringhtml.insertTemplate", 47 | "title": "Insert es6-string-html template", 48 | "category": "HTML" 49 | } 50 | ], 51 | "grammars": [ 52 | { 53 | "injectTo": [ 54 | "source.html", 55 | "source.js", 56 | "source.js.jsx", 57 | "source.jsx", 58 | "source.ts", 59 | "source.tsx", 60 | "source.vue", 61 | "source.svelte", 62 | "source.sql", 63 | "source.css", 64 | "source.rescript", 65 | "text.html" 66 | ], 67 | "scopeName": "inline.es6-markdown", 68 | "path": "./syntaxes/es6-inline-markdown.json", 69 | "embeddedLanguages": { 70 | "meta.embedded.markdown": "markdown" 71 | } 72 | }, 73 | { 74 | "injectTo": [ 75 | "source.html", 76 | "source.js", 77 | "source.js.jsx", 78 | "source.jsx", 79 | "source.ts", 80 | "source.tsx", 81 | "source.vue", 82 | "source.svelte", 83 | "source.sql", 84 | "source.css", 85 | "source.rescript", 86 | "text.html" 87 | ], 88 | "scopeName": "inline.es6-css", 89 | "path": "./syntaxes/es6-inline-css.json", 90 | "embeddedLanguages": { 91 | "meta.embedded.block.html": "html" 92 | } 93 | }, 94 | { 95 | "injectTo": [ 96 | "source.html", 97 | "source.js", 98 | "source.js.jsx", 99 | "source.jsx", 100 | "source.ts", 101 | "source.tsx", 102 | "source.vue", 103 | "source.svelte", 104 | "source.sql", 105 | "source.rescript", 106 | "text.html" 107 | ], 108 | "scopeName": "inline.es6-glsl", 109 | "path": "./syntaxes/es6-inline-glsl.json", 110 | "embeddedLanguages": { 111 | "meta.embedded.glsl": "glsl" 112 | } 113 | }, 114 | { 115 | "injectTo": [ 116 | "source.html", 117 | "source.js", 118 | "source.js.jsx", 119 | "source.jsx", 120 | "source.ts", 121 | "source.tsx", 122 | "source.vue", 123 | "source.svelte", 124 | "source.sql", 125 | "source.rescript", 126 | "text.html" 127 | ], 128 | "scopeName": "inline.es6-xml", 129 | "path": "./syntaxes/es6-inline-xml.json", 130 | "embeddedLanguages": { 131 | "meta.embedded.xml": "xml" 132 | } 133 | }, 134 | { 135 | "injectTo": [ 136 | "source.html", 137 | "source.js", 138 | "source.js.jsx", 139 | "source.jsx", 140 | "source.ts", 141 | "source.tsx", 142 | "source.vue", 143 | "source.svelte", 144 | "source.sql", 145 | "source.rescript", 146 | "text.html" 147 | ], 148 | "scopeName": "inline.es6-js-injection", 149 | "path": "./syntaxes/es6-js-injection.json" 150 | }, 151 | { 152 | "injectTo": [ 153 | "source.html", 154 | "source.js", 155 | "source.js.jsx", 156 | "source.jsx", 157 | "source.ts", 158 | "source.tsx", 159 | "source.vue", 160 | "source.svelte", 161 | "source.sql", 162 | "source.rescript", 163 | "text.html" 164 | ], 165 | "scopeName": "inline.es6-html", 166 | "path": "./syntaxes/es6-inline-html.json" 167 | }, 168 | { 169 | "injectTo": [ 170 | "source.html", 171 | "source.js", 172 | "source.js.jsx", 173 | "source.jsx", 174 | "source.ts", 175 | "source.tsx", 176 | "source.vue", 177 | "source.svelte", 178 | "source.sql", 179 | "source.rescript", 180 | "text.html" 181 | ], 182 | "scopeName": "inline.es6-sql", 183 | "path": "./syntaxes/es6-inline-sql.json", 184 | "embeddedLanguages": { 185 | "meta.embedded.block.sql": "sql" 186 | } 187 | }, 188 | { 189 | "injectTo": [ 190 | "source.html", 191 | "source.js", 192 | "source.js.jsx", 193 | "source.jsx", 194 | "source.ts", 195 | "source.tsx", 196 | "source.vue", 197 | "source.svelte", 198 | "source.sql", 199 | "source.rescript", 200 | "text.html" 201 | ], 202 | "scopeName": "inline.es6-javascript", 203 | "path": "./syntaxes/es6-inline-javascript.json", 204 | "embeddedLanguages": { 205 | "meta.embedded.block.javascript": "javascript" 206 | } 207 | } 208 | ] 209 | }, 210 | "__metadata": { 211 | "id": "db50f65a-6c7c-4134-8e8d-e6b8a9c738da", 212 | "publisherDisplayName": "Tobermory", 213 | "publisherId": "ea206736-c554-4aad-bb7f-813836f42f78" 214 | } 215 | } 216 | -------------------------------------------------------------------------------- /scripts/main.js: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | const typeScriptExtensionId = 'vscode.typescript-language-features'; 4 | const pluginId = 'typescript-lit-html-plugin'; 5 | const configurationSection = 'lit-html'; 6 | 7 | export async function activate(context) { 8 | const extension = vscode.extensions.getExtension(typeScriptExtensionId); 9 | 10 | if (!extension) { 11 | return; 12 | } 13 | 14 | await extension.activate(); 15 | 16 | if (!extension.exports || !extension.exports.getAPI) { 17 | return; 18 | } 19 | 20 | const api = extension.exports.getAPI(0); 21 | 22 | if (!api) { 23 | return; 24 | } 25 | 26 | vscode.workspace.onDidChangeConfiguration(e => { 27 | if (e.affectsConfiguration(configurationSection)) { 28 | synchronizeConfiguration(api); 29 | } 30 | }, undefined, context.subscriptions); 31 | 32 | synchronizeConfiguration(api); 33 | } 34 | 35 | function synchronizeConfiguration(api) { 36 | api.configurePlugin(pluginId, getConfiguration()); 37 | } 38 | 39 | function getConfiguration() { 40 | const config = vscode.workspace.getConfiguration(configurationSection); 41 | const outConfig = { 42 | format: {} 43 | }; 44 | 45 | withConfigValue(config, 'tags', tags => { outConfig.tags = tags; }); 46 | withConfigValue(config, 'format.enabled', enabled => { outConfig.format.enabled = enabled; }); 47 | 48 | return outConfig; 49 | } 50 | 51 | function withConfigValue(config, key, withValue) { 52 | const configSetting = config.inspect(key); 53 | 54 | if (!configSetting) { 55 | return; 56 | } 57 | 58 | // Make sure the user has actually set the value. 59 | // VS Code will return the default values instead of `undefined`, even if user has not don't set anything. 60 | if (typeof configSetting.globalValue === 'undefined' && typeof configSetting.workspaceFolderValue === 'undefined' && typeof configSetting.workspaceValue === 'undefined') { 61 | return; 62 | } 63 | 64 | const value = config.get(key, undefined); 65 | 66 | if (typeof value !== 'undefined') { 67 | withValue(value); 68 | } 69 | } -------------------------------------------------------------------------------- /syntaxes/es6-inline-css.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string, L:source.vue -comment -string, L:source.svelte -comment -string, L:source.php -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(css|inline-css)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | } 31 | }, 32 | "end": "(`)", 33 | "patterns": [ 34 | { 35 | "include": "source.ts#template-substitution-element" 36 | }, 37 | { 38 | "include": "source.css" 39 | }, 40 | { 41 | "include": "inline.es6-htmlx#template" 42 | } 43 | ] 44 | }, 45 | { 46 | "begin": "(?i)(\\s*(css|inline-css))(`)", 47 | "beginCaptures": { 48 | "1": { 49 | "name": "comment.block" 50 | } 51 | }, 52 | "end": "(`)", 53 | "patterns": [ 54 | { 55 | "include": "source.ts#template-substitution-element" 56 | }, 57 | { 58 | "include": "source.css" 59 | }, 60 | { 61 | "include": "inline.es6-htmlx#template" 62 | }, 63 | { 64 | "include": "string.quoted.other.template.js" 65 | } 66 | ] 67 | }, 68 | { 69 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(css|inline-css)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 70 | "beginCaptures": { 71 | "1": { 72 | "name": "comment.line" 73 | } 74 | }, 75 | "end": "(`).*", 76 | "patterns": [ 77 | { 78 | "begin": "(\\G)", 79 | "end": "(`)" 80 | }, 81 | { 82 | "include": "source.ts#template-substitution-element" 83 | }, 84 | { 85 | "include": "source.css" 86 | } 87 | ] 88 | }, 89 | { 90 | "begin": "(\\${)", 91 | "end": "(})", 92 | "beginCaptures": { 93 | "1": { 94 | "name": "entity.name.tag" 95 | } 96 | }, 97 | "endCaptures": { 98 | "1": { 99 | "name": "entity.name.tag" 100 | } 101 | }, 102 | "patterns": [ 103 | { 104 | "include": "source.ts#template-substitution-element" 105 | }, 106 | { 107 | "include": "source.js" 108 | } 109 | ] 110 | } 111 | ], 112 | "scopeName": "inline.es6-css" 113 | } 114 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-glsl.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(glsl|inline-glsl)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | } 31 | }, 32 | "end": "(`)", 33 | "patterns": [ 34 | { 35 | "include": "source.ts#template-substitution-element" 36 | }, 37 | { 38 | "include": "source.glsl" 39 | }, 40 | { 41 | "include": "inline.es6-htmlx#template" 42 | } 43 | ] 44 | }, 45 | { 46 | "begin": "(?i)(\\s*(glsl|inline-glsl))(`)", 47 | "beginCaptures": { 48 | "1": { 49 | "name": "comment.block" 50 | } 51 | }, 52 | "end": "(`)", 53 | "patterns": [ 54 | { 55 | "include": "source.ts#template-substitution-element" 56 | }, 57 | { 58 | "include": "source.glsl" 59 | }, 60 | { 61 | "include": "inline.es6-htmlx#template" 62 | }, 63 | { 64 | "include": "string.quoted.other.template.js" 65 | } 66 | ] 67 | }, 68 | { 69 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(glsl|inline-glsl)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 70 | "beginCaptures": { 71 | "1": { 72 | "name": "comment.line" 73 | } 74 | }, 75 | "end": "(`).*", 76 | "patterns": [ 77 | { 78 | "begin": "(\\G)", 79 | "end": "(`)" 80 | }, 81 | { 82 | "include": "source.ts#template-substitution-element" 83 | }, 84 | { 85 | "include": "source.glsl" 86 | } 87 | ] 88 | }, 89 | { 90 | "begin": "(\\${)", 91 | "end": "(})", 92 | "beginCaptures": { 93 | "1": { 94 | "name": "entity.name.tag" 95 | } 96 | }, 97 | "endCaptures": { 98 | "1": { 99 | "name": "entity.name.tag" 100 | } 101 | }, 102 | "patterns": [ 103 | { 104 | "include": "source.ts#template-substitution-element" 105 | }, 106 | { 107 | "include": "source.js" 108 | } 109 | ] 110 | } 111 | ], 112 | "scopeName": "inline.es6-glsl" 113 | } 114 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-html.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(html|template|inline-html|inline-template)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | } 31 | }, 32 | "end": "(`)", 33 | "patterns": [ 34 | { 35 | "include": "source.ts#template-substitution-element" 36 | }, 37 | { 38 | "include": "text.html.basic" 39 | }, 40 | { 41 | "include": "inline.es6-htmlx#template" 42 | } 43 | ] 44 | }, 45 | { 46 | "begin": "(?i)(\\s*(html|template|inline-html|inline-template))(`)", 47 | "beginCaptures": { 48 | "1": { 49 | "name": "comment.block" 50 | } 51 | }, 52 | "end": "(`)", 53 | "patterns": [ 54 | { 55 | "include": "source.ts#template-substitution-element" 56 | }, 57 | { 58 | "include": "text.html.basic" 59 | }, 60 | { 61 | "include": "inline.es6-htmlx#template" 62 | }, 63 | { 64 | "include": "string.quoted.other.template.js" 65 | } 66 | ] 67 | }, 68 | { 69 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(html|template|inline-html|inline-template)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 70 | "beginCaptures": { 71 | "1": { 72 | "name": "comment.line" 73 | } 74 | }, 75 | "end": "(`).*", 76 | "patterns": [ 77 | { 78 | "begin": "(\\G)", 79 | "end": "(`)" 80 | }, 81 | { 82 | "include": "source.ts#template-substitution-element" 83 | }, 84 | { 85 | "include": "text.html.basic" 86 | } 87 | ] 88 | }, 89 | { 90 | "begin": "(\\${)", 91 | "end": "(})", 92 | "beginCaptures": { 93 | "1": { 94 | "name": "entity.name.tag" 95 | } 96 | }, 97 | "endCaptures": { 98 | "1": { 99 | "name": "entity.name.tag" 100 | } 101 | }, 102 | "patterns": [ 103 | { 104 | "include": "source.ts#template-substitution-element" 105 | }, 106 | { 107 | "include": "source.js" 108 | } 109 | ] 110 | }, 111 | { 112 | "begin": "(\\$\\(`)", 113 | "end": "(`\\))", 114 | "beginCaptures": { 115 | "1": { 116 | "name": "entity.name.tag" 117 | } 118 | }, 119 | "endCaptures": { 120 | "1": { 121 | "name": "entity.name.tag" 122 | } 123 | }, 124 | "patterns": [ 125 | { 126 | "include": "source.ts#template-substitution-element" 127 | }, 128 | { 129 | "include": "source.js" 130 | } 131 | ] 132 | } 133 | ], 134 | "scopeName": "inline.es6-html" 135 | } 136 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-javascript.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(javascript|inline-javascript|typescript|inline-typescript|js|inline-js|ts|inline-ts)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | } 31 | }, 32 | "end": "(`)", 33 | "patterns": [ 34 | { 35 | "include": "source.ts#template-substitution-element" 36 | }, 37 | { 38 | "include": "source.js" 39 | }, 40 | { 41 | "include": "inline.es6-htmlx#template" 42 | } 43 | ] 44 | }, 45 | { 46 | "begin": "(?i)(\\s*(javascript|inline-javascript|typescript|inline-typescript|js|inline-js|ts|inline-ts))(`)", 47 | "beginCaptures": { 48 | "1": { 49 | "name": "comment.block" 50 | } 51 | }, 52 | "end": "(`)", 53 | "patterns": [ 54 | { 55 | "include": "source.ts#template-substitution-element" 56 | }, 57 | { 58 | "include": "source.js" 59 | }, 60 | { 61 | "include": "inline.es6-htmlx#template" 62 | }, 63 | { 64 | "include": "string.quoted.other.template.js" 65 | } 66 | ] 67 | }, 68 | { 69 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(javascript|inline-javascript|typescript|inline-typescript|js|inline-js|ts|inline-ts)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 70 | "beginCaptures": { 71 | "1": { 72 | "name": "comment.line" 73 | } 74 | }, 75 | "end": "(`).*", 76 | "patterns": [ 77 | { 78 | "begin": "(\\G)", 79 | "end": "(`)" 80 | }, 81 | { 82 | "include": "source.ts#template-substitution-element" 83 | }, 84 | { 85 | "include": "source.js" 86 | } 87 | ] 88 | }, 89 | { 90 | "begin": "(\\${)", 91 | "end": "(})", 92 | "beginCaptures": { 93 | "1": { 94 | "name": "entity.name.tag" 95 | } 96 | }, 97 | "endCaptures": { 98 | "1": { 99 | "name": "entity.name.tag" 100 | } 101 | }, 102 | "patterns": [ 103 | { 104 | "include": "source.ts#template-substitution-element" 105 | }, 106 | { 107 | "include": "source.js" 108 | } 109 | ] 110 | } 111 | ], 112 | "scopeName": "inline.es6-javascript" 113 | } 114 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-markdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(md|markdown)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | }, 31 | "3": { 32 | "name": "string.template.js" 33 | } 34 | }, 35 | "end": "(`)", 36 | "endCaptures": { 37 | "1": { 38 | "name": "string.template.js" 39 | } 40 | }, 41 | "patterns": [ 42 | { "include": "text.html.markdown" } 43 | ] 44 | }, 45 | { 46 | "begin": "(?i)(\\s*(md|markdown)`)", 47 | "beginCaptures": { 48 | "1": { 49 | "name": "string.template.js" 50 | } 51 | }, 52 | "end": "(`)", 53 | "endCaptures": { 54 | "1": { 55 | "name": "string.template.js" 56 | } 57 | }, 58 | "patterns": [ 59 | { "include": "text.html.markdown" } 60 | ] 61 | } 62 | ], 63 | "scopeName": "inline.es6-markdown" 64 | } 65 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-sql.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)\\b(\\w+\\.sql)\\s*(`)", 27 | "end": "(`)", 28 | "beginCaptures": { 29 | "1": { 30 | "name": "variable.parameter" 31 | } 32 | }, 33 | "patterns": [ 34 | { "include": "source.ts#template-substitution-element" }, 35 | { "include": "source.ts#string-character-escape" }, 36 | { "include": "source.sql" }, 37 | { "include": "source.plpgsql.postgres" }, 38 | { "match": "." } 39 | ] 40 | }, 41 | { 42 | "begin": "(?i)(\\s?\\/?\\*?\\s?(sql|inline-sql)\\s?\\*?\\/?\\s?)(`)", 43 | "beginCaptures": { 44 | "1": { 45 | "name": "comment.block" 46 | } 47 | }, 48 | "end": "(`)", 49 | "patterns": [ 50 | { "include": "source.ts#template-substitution-element" }, 51 | { "include": "source.ts#string-character-escape" }, 52 | { "include": "source.sql" }, 53 | { "include": "source.plpgsql.postgres" }, 54 | { "match": "." } 55 | ] 56 | }, 57 | { 58 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(sql|inline-sql)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 59 | "beginCaptures": { 60 | "1": { 61 | "name": "comment.line" 62 | } 63 | }, 64 | "end": "(`)", 65 | "patterns": [ 66 | { 67 | "begin": "(\\G)", 68 | "end": "(`)" 69 | }, 70 | { "include": "source.ts#template-substitution-element" }, 71 | { "include": "source.ts#string-character-escape" }, 72 | { "include": "source.sql" }, 73 | { "include": "source.plpgsql.postgres" }, 74 | { "match": "." } 75 | ] 76 | } 77 | ], 78 | "scopeName": "inline.es6-sql" 79 | } 80 | -------------------------------------------------------------------------------- /syntaxes/es6-inline-xml.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string", 14 | "injections": { 15 | "L:source": { 16 | "patterns": [ 17 | { 18 | "match": "<", 19 | "name": "invalid.illegal.bad-angle-bracket.html" 20 | } 21 | ] 22 | } 23 | }, 24 | "patterns": [ 25 | { 26 | "begin": "(?i)(\\s?\\/\\*\\s?(xml|svg|inline-svg|inline-xml)\\s?\\*\\/\\s?)(`)", 27 | "beginCaptures": { 28 | "1": { 29 | "name": "comment.block" 30 | } 31 | }, 32 | "end": "(`)", 33 | "patterns": [ 34 | { 35 | "include": "text.xml" 36 | } 37 | ] 38 | }, 39 | { 40 | "begin": "(?i)(\\s*(xml|inline-xml))(`)", 41 | "beginCaptures": { 42 | "1": { 43 | "name": "comment.block" 44 | } 45 | }, 46 | "end": "(`)", 47 | "patterns": [ 48 | { 49 | "include": "text.xml" 50 | } 51 | ] 52 | }, 53 | { 54 | "begin": "(?i)(?<=\\s|\\,|\\=|\\:|\\(|\\$\\()\\s{0,}(((\\/\\*)|(\\/\\/))\\s?(xml|svg|inline-svg|inline-xml)[ ]{0,1000}\\*?\\/?)[ ]{0,1000}$", 55 | "beginCaptures": { 56 | "1": { 57 | "name": "comment.line" 58 | } 59 | }, 60 | "end": "(`).*", 61 | "patterns": [ 62 | { 63 | "begin": "(\\G)", 64 | "end": "(`)" 65 | }, 66 | { 67 | "include": "text.xml" 68 | } 69 | ] 70 | } 71 | ], 72 | "scopeName": "inline.es6-xml" 73 | } 74 | -------------------------------------------------------------------------------- /syntaxes/es6-js-injection.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileTypes": [ 3 | "js", 4 | "jsx", 5 | "ts", 6 | "tsx", 7 | "html", 8 | "vue", 9 | "svelte", 10 | "php", 11 | "res" 12 | ], 13 | "injectionSelector": "L:source.js (string.quoted.double.html, string.quoted.single.html), L:source.jsx (string.quoted.double.html, string.quoted.single.html), L:source.js.jsx (string.quoted.double.html, string.quoted.single.html), L:source.ts (string.quoted.double.html, string.quoted.single.html), L:source.tsx (string.quoted.double.html, string.quoted.single.html), L:source.rescript -comment -string", 14 | "patterns": [ 15 | { 16 | "include": "source.ts#template-substitution-element" 17 | } 18 | ], 19 | "scopeName": "inline.es6-js-injection" 20 | } -------------------------------------------------------------------------------- /tests/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |