[
  {
    "path": ".gitignore",
    "content": "*.vsix\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "// A launch configuration that launches the extension inside a new window\n// Use IntelliSense to learn about possible attributes.\n// Hover to view descriptions of existing attributes.\n// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n{\n\t\"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Extension\",\n            \"type\": \"extensionHost\",\n            \"request\": \"launch\",\n            \"runtimeExecutable\": \"${execPath}\",\n            \"args\": [\n                \"--extensionDevelopmentPath=${workspaceFolder}\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": ".vscodeignore",
    "content": ".vscode/**\n.vscode-test/**\n.gitignore\nvsc-extension-quickstart.md\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\n## v0.1.3 (2024-12-16)\n\n- Support syntax highlighting for curly brackets in the body\n\n## v0.1.2 (2022-10-04)\n\n- Support for commenting and highlighting of new `<%!-- --%>` EEx comment syntax\n\n## v0.1.1 (2021-10-29)\n\n- Syntax highlight support for slots\n\n## v0.1.0 (2021-08-25)\n\n- Initial release"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2021 Marlus Saraiva\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Phoenix package for VS Code\n\nSyntax highlighting support for Phoenix templates.\n\n## Features\n\n  * Support syntax highlighting for `.heex` files\n  * Extends Elixir's syntax highlighting to support HEEx's syntax inside `~H`\n\n## Emmet Support \n\nTo use emmet with `.heex` file extensions, include the options below in your settings:\n\n```json\n\"emmet.includeLanguages\": {\n  \"phoenix-heex\": \"html\"\n}\n```\n\n## License\n\nCopyright (c) 2021, Marlus Saraiva.\n\nSource code is licensed under the [MIT License](LICENSE).\n"
  },
  {
    "path": "language-configuration.json",
    "content": "{\n  \"comments\": {\n    \"blockComment\": [\"<%!--\", \"--%>\"]\n  },\n  \"brackets\": [\n    [\"<\", \">\"],\n    [\"{\", \"}\"],\n    [\"(\", \")\"],\n    [\"[\", \"]\"]\n  ],\n  \"autoClosingPairs\": [\n    [\"{\", \"}\"],\n    [\"[\", \"]\"],\n    [\"(\", \")\"],\n    [\"<%\", \" %>\"],\n    [\"'\", \"'\"],\n    [\"\\\"\", \"\\\"\"]\n  ],\n  \"surroundingPairs\": [\n    [\"'\", \"'\"],\n    [\"{\", \"}\"],\n    [\"[\", \"]\"],\n    [\"(\", \")\"],\n    [\"<\", \">\"],\n    [\"%\", \"%\"],\n    [\"\\\"\", \"\\\"\"]\n  ]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"name\": \"phoenix\",\n    \"displayName\": \"Phoenix Framework\",\n    \"homepage\": \"https://www.phoenixframework.org\",\n    \"description\": \"Syntax highlighting support for HEEx\",\n    \"version\": \"0.1.3\",\n    \"author\": \"Marlus Saraiva\",\n    \"publisher\": \"phoenixframework\",\n    \"license\": \"MIT\",\n    \"icon\": \"images/logo.png\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/phoenixframework/vscode-phoenix.git\"\n    },\n    \"engines\": {\n        \"vscode\": \"^1.25.1\"\n    },\n    \"categories\": [\n        \"Programming Languages\"\n    ],\n    \"contributes\": {\n        \"languages\": [\n            {\n                \"id\": \"phoenix-heex\",\n                \"aliases\": [\n                    \"HEEx\",\n                    \"heex\"\n                ],\n                \"extensions\": [\n                    \".heex\"\n                ],\n                \"configuration\": \"./language-configuration.json\"\n            }\n        ],\n        \"grammars\": [\n            {\n                \"language\": \"phoenix-heex\",\n                \"scopeName\": \"source.heex\",\n                \"path\": \"./syntaxes/heex.json\"\n            },\n            {\n                \"scopeName\": \"source.elixir.heex\",\n                \"path\": \"./syntaxes/elixir-heex.json\",\n                \"injectTo\": [\n                    \"source.elixir\"\n                ],\n                \"embeddedLanguages\": {\n                    \"text.html.heex\": \"phoenix-heex\"\n                }\n            }\n        ]\n    }\n}\n"
  },
  {
    "path": "syntaxes/elixir-heex.json",
    "content": "{\n  \"injectionSelector\": \"L:source.elixir -comment -text -string\",\n  \"name\": \"elixir-heex\",\n  \"patterns\": [\n    {\n      \"comment\": \"HEEx sigil with heredoc (double quotes)\",\n      \"name\": \"text.html.heex\",\n      \"begin\": \"\\\\s?(~H\\\"\\\"\\\")$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"end\": \"^\\\\s*(\\\"\\\"\\\"[a-z]*)$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.heex\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"HEEx sigil with double quotes\",\n      \"name\": \"text.html.heex\",\n      \"begin\": \"~H\\\\\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"end\": \"\\\\\\\"[a-z]*\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.heex\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"HEEx sigil with square brackets\",\n      \"name\": \"text.html.heex\",\n      \"begin\": \"~H\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"end\": \"\\\\][a-z]*\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.heex\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"HEEx sigil with parentheses\",\n      \"name\": \"text.html.heex\",\n      \"begin\": \"~H\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"end\": \"\\\\)[a-z]*\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.heex\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"HEEx sigil with curly brackets\",\n      \"name\": \"text.html.heex\",\n      \"begin\": \"~H\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"end\": \"\\\\}[a-z]*\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.heredoc.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.heex\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"source.elixir.heex\"\n}\n"
  },
  {
    "path": "syntaxes/heex.json",
    "content": "{\n  \"name\": \"heex\",\n  \"scopeName\": \"source.heex\",\n  \"fileTypes\": [\"heex\"],\n  \"patterns\": [\n    {\n      \"include\": \"#doctype\"\n    },\n    {\n      \"include\": \"#html-comment\"\n    },\n    {\n      \"include\": \"#deprecated-heex-comment\"\n    },\n    {\n      \"include\": \"#heex-comment\"\n    },\n    {\n      \"include\": \"#heex-multi-line-comment\"\n    },\n    {\n      \"include\": \"#elixir-embedded\"\n    },\n    {\n      \"include\": \"#slotable\"\n    },\n    {\n      \"include\": \"#component\"\n    },\n    {\n      \"include\": \"#tag-style\"\n    },\n    {\n      \"include\": \"#tag-script\"\n    },\n    {\n      \"include\": \"#tag\"\n    },\n    {\n      \"include\": \"#interpolation\"\n    }\n  ],\n  \"repository\": {\n    \"doctype\": {\n      \"begin\": \"<!(?=(?i:DOCTYPE\\\\s))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.metadata.doctype.html\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?i:DOCTYPE)\",\n          \"name\": \"entity.name.tag.html\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"match\": \"[^\\\\s>]+\",\n          \"name\": \"entity.other.attribute-name.html\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.elixir\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.elixir\"\n        }\n      ]\n    },\n    \"deprecated-heex-comment\": {\n      \"begin\": \"<%+#\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.heex\"\n        }\n      },\n      \"end\": \"%>\",\n      \"name\": \"comment.block.heex\"\n    },\n    \"heex-comment\": {\n      \"begin\": \"<%+ #\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.heex\"\n        }\n      },\n      \"end\": \"%>\",\n      \"name\": \"comment.block.heex\"\n    },\n    \"heex-multi-line-comment\": {\n      \"begin\": \"<%+!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.heex\"\n        }\n      },\n      \"end\": \"--%>\",\n      \"name\": \"comment.block.heex\"\n    },\n    \"elixir-embedded\": {\n      \"begin\": \"<%+(?!>)[-=]*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.elixir\"\n        }\n      },\n      \"end\": \"-?%>\",\n      \"name\": \"source.elixir.embedded\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.elixir\"\n            }\n          },\n          \"match\": \"(#).*?(?=-?%>)\",\n          \"name\": \"comment.line.number-sign.elixir\"\n        },\n        {\n          \"include\": \"source.elixir\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"name\": \"source.elixir.embedded\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.heex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.heex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(</?)(\\\\w[^\\\\s>]*)(?<!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.other.unrecognized.html.derivative\",\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"component\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.other.unrecognized.html.derivative\",\n          \"begin\": \"(</?)([A-Z|\\\\.][^\\\\s>]*)(?<!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.module.elixir\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"slotable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.other.unrecognized.html.derivative\",\n          \"begin\": \"(</?)(\\\\:[^\\\\s>]*)(?<!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.slot.surface\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"html-comment\": {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"-->\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G-?>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"<!--(?!>)|<!-(?=-->)\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"--!>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        }\n      ]\n    },\n    \"node-attributes\": {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#attribute\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"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}]+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"Anything else that is valid\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.unrecognized.$1.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute-value\": {\n      \"patterns\": [\n        {\n          \"begin\": \"=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            }\n          },\n          \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"([^\\\\s\\\"'=<>`/]|/(?!>))+\",\n              \"name\": \"string.unquoted.html\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.html\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.html\"\n                }\n              },\n              \"name\": \"string.quoted.double.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#entities\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.html\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.html\"\n                }\n              },\n              \"name\": \"string.quoted.single.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#entities\"\n                }\n              ]\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"invalid.illegal.unexpected-equals-sign.html\"\n            }\n          ]\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.html\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.html\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"tag-style\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:type=('text/sass'|\\\"text/sass\\\")|lang=(sass|'sass'|\\\"sass\\\")))(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.sass\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.sass\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:type=('text/scss'|\\\"text/scss\\\")|lang=(scss|'scss'|\\\"scss\\\")))(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.css.scss\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css.scss\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:type=('text/less'|\\\"text/less\\\")|lang=(less|'less'|\\\"less\\\")))(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.css.less\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css.less\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:type=('text/stylus'|\\\"text/stylus\\\")|lang=(stylus|'stylus'|\\\"stylus\\\")))(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.stylus\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.stylus\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:type=('text/postcss'|\\\"text/postcss\\\")|lang=(postcss|'postcss'|\\\"postcss\\\")))(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.postcss\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.postcss\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<)(style)\\\\b(?=[^>]*(?:(?:type=('text/css'|\\\"text/css\\\")|lang=(css|'css'|\\\"css\\\")))?)(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            }\n          },\n          \"end\": \"(</)(style)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.css\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</style>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-script\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)(script)\\\\b(?=[^>]*(?:(?:type=('text/javascript'|\\\"text/javascript\\\")|lang=(javascript|'javascript'|\\\"javascript\\\")))?)(?![^/>]*/>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(</)(script)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#node-attributes\"\n            },\n            {\n              \"contentName\": \"source.js\",\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?=</script>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  }
]