diff --git a/package.json b/package.json new file mode 100644 index 0000000..1339fad --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "embedded-string-highlighting", + "displayName": "fuck fuck fuck", + "description": "yeet", + "version": "0.0.1", + "engines": { + "vscode": "^1.98.0" + }, + "categories": [ + "Programming Languages" + ], + "scripts": { + "build": "node build.mjs", + "build:watch": "nodemon -e js,mjs,cjs --exec npm run build" + }, + "devDependencies": { + "dprint": "^0.49.0", + "js-yaml": "^4.1.0", + "nodemon": "^3.1.9", + "vscode-textmate": "^9.2.0" + }, + "contributes": { + "grammars": [ + { + "path": "./syntaxes/javascript.injection.json", + "scopeName": "embedded-string-highlighting.injection", + "injectTo": [ + "source.js" + ], + "embeddedLanguages": { + "meta.embedded.inline.javascript": "javascript", + "meta.embedded.block.javascript": "javascript", + "meta.embedded.inline.typescript": "typescript", + "meta.embedded.block.typescript": "typescript", + "meta.embedded.inline.javascriptreact": "javascriptreact", + "meta.embedded.block.javascriptreact": "javascriptreact", + "meta.embedded.inline.typescriptreact": "typescriptreact", + "meta.embedded.block.typescriptreact": "typescriptreact", + "meta.embedded.inline.json": "json", + "meta.embedded.block.json": "json", + "meta.embedded.inline.jsonc": "jsonc", + "meta.embedded.block.jsonc": "jsonc", + "meta.embedded.inline.jsonl": "jsonl", + "meta.embedded.block.jsonl": "jsonl", + "meta.embedded.inline.shellscript": "shellscript", + "meta.embedded.block.shellscript": "shellscript", + "meta.embedded.inline.rust": "rust", + "meta.embedded.block.rust": "rust", + "meta.embedded.inline.css": "css", + "meta.embedded.block.css": "css", + "meta.embedded.inline.scss": "scss", + "meta.embedded.block.scss": "scss", + "meta.embedded.inline.less": "less", + "meta.embedded.block.less": "less", + "meta.embedded.inline.html": "html", + "meta.embedded.block.html": "html", + "meta.embedded.inline.sql": "sql", + "meta.embedded.block.sql": "sql", + "meta.embedded.inline.markdown": "markdown", + "meta.embedded.block.markdown": "markdown", + "meta.embedded.inline.xml": "xml", + "meta.embedded.block.xml": "xml", + "meta.embedded.inline.yaml": "yaml", + "meta.embedded.block.yaml": "yaml" + } + } + ] + } +} \ No newline at end of file diff --git a/syntaxes/javascript.injection.json b/syntaxes/javascript.injection.json new file mode 100644 index 0000000..f42a7ff --- /dev/null +++ b/syntaxes/javascript.injection.json @@ -0,0 +1,450 @@ +{ + "scopeName": "embedded-string-highlighting.injection", + "injectionSelector": "L:source.js -string -comment", + "repository": { + "tagged-template-literal-block-javascript": { + "begin": "(javascript|js)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.javascript", + "patterns": [ + { + "include": "source.js" + } + ] + }, + "tagged-template-literal-block-typescript": { + "begin": "(typescript|ts)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.typescript", + "patterns": [ + { + "include": "source.ts" + } + ] + }, + "tagged-template-literal-block-javascriptreact": { + "begin": "(javascriptreact|jsx)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.javascriptreact", + "patterns": [ + { + "include": "source.js.jsx" + } + ] + }, + "tagged-template-literal-block-typescriptreact": { + "begin": "(typescriptreact|tsx)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.typescriptreact", + "patterns": [ + { + "include": "source.tsx" + } + ] + }, + "tagged-template-literal-block-json": { + "begin": "(json)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.json", + "patterns": [ + { + "include": "source.json" + } + ] + }, + "tagged-template-literal-block-jsonc": { + "begin": "(jsonc)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.jsonc", + "patterns": [ + { + "include": "source.json.comments" + } + ] + }, + "tagged-template-literal-block-jsonl": { + "begin": "(jsonl)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.jsonl", + "patterns": [ + { + "include": "source.json.lines" + } + ] + }, + "tagged-template-literal-block-shellscript": { + "begin": "(shellscript|sh)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.shellscript", + "patterns": [ + { + "include": "source.shell" + } + ] + }, + "tagged-template-literal-block-rust": { + "begin": "(rust|rs)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.rust", + "patterns": [ + { + "include": "source.rust" + } + ] + }, + "tagged-template-literal-block-css": { + "begin": "(css)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.css", + "patterns": [ + { + "include": "source.css" + } + ] + }, + "tagged-template-literal-block-scss": { + "begin": "(scss)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.scss", + "patterns": [ + { + "include": "source.css.scss" + } + ] + }, + "tagged-template-literal-block-less": { + "begin": "(less)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.less", + "patterns": [ + { + "include": "source.css.less" + } + ] + }, + "tagged-template-literal-block-html": { + "begin": "(html)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.html", + "patterns": [ + { + "include": "text.html.derivative" + } + ] + }, + "tagged-template-literal-block-sql": { + "begin": "(sql)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.sql", + "patterns": [ + { + "include": "source.sql" + } + ] + }, + "tagged-template-literal-block-markdown": { + "begin": "(markdown|md)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.markdown", + "patterns": [ + { + "include": "text.html.markdown" + } + ] + }, + "tagged-template-literal-block-xml": { + "begin": "(xml)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.xml", + "patterns": [ + { + "include": "text.xml" + } + ] + }, + "tagged-template-literal-block-yaml": { + "begin": "(yaml)(`)", + "end": "`", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.js entity.name.embedded-source" + }, + "2": { + "name": "string.template.js punctuation.definition.string.template.begin.js punctuation.definition.embedded-source.begin" + } + }, + "endCaptures": { + "0": { + "name": "string.template.js punctuation.definition.string.template.end.js punctuation.definition.embedded-source.end" + } + }, + "contentName": "meta.embedded.block.yaml", + "patterns": [ + { + "include": "source.yaml" + } + ] + } + }, + "patterns": [ + { + "include": "#tagged-template-literal-block-javascript" + }, + { + "include": "#tagged-template-literal-block-typescript" + }, + { + "include": "#tagged-template-literal-block-javascriptreact" + }, + { + "include": "#tagged-template-literal-block-typescriptreact" + }, + { + "include": "#tagged-template-literal-block-json" + }, + { + "include": "#tagged-template-literal-block-jsonc" + }, + { + "include": "#tagged-template-literal-block-jsonl" + }, + { + "include": "#tagged-template-literal-block-shellscript" + }, + { + "include": "#tagged-template-literal-block-rust" + }, + { + "include": "#tagged-template-literal-block-css" + }, + { + "include": "#tagged-template-literal-block-scss" + }, + { + "include": "#tagged-template-literal-block-less" + }, + { + "include": "#tagged-template-literal-block-html" + }, + { + "include": "#tagged-template-literal-block-sql" + }, + { + "include": "#tagged-template-literal-block-markdown" + }, + { + "include": "#tagged-template-literal-block-xml" + }, + { + "include": "#tagged-template-literal-block-yaml" + } + ] +} \ No newline at end of file