diff --git a/CHANGELOG.md b/CHANGELOG.md index f227d4717..91e63f573 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ - Inlay Hints (experimetal). `rescript.settings.inlayHints.enable: true`. Turned off by default. - Code Lenses for functions (experimetal). `rescript.settings.codeLens: true`. Turned off by default. +- Markdown code blocks tagged as `rescript` now get basic syntax highlighting. ## v1.4.2 diff --git a/grammars/rescript.markdown.json b/grammars/rescript.markdown.json new file mode 100644 index 000000000..95cf16f96 --- /dev/null +++ b/grammars/rescript.markdown.json @@ -0,0 +1,45 @@ +{ + "fileTypes": [], + "injectionSelector": "L:text.html.markdown", + "patterns": [ + { + "include": "#rescript-code-block" + } + ], + "repository": { + "rescript-code-block": { + "name": "markup.fenced_code.block.markdown", + "begin": "(^|\\G)(\\s*)(\\`{3,}|~{3,})\\s*(?i:(res|rescript)(\\s+[^`~]*)?$)", + "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$", + "beginCaptures": { + "3": { + "name": "punctuation.definition.markdown" + }, + "5": { + "name": "fenced_code.block.language" + }, + "6": { + "name": "fenced_code.block.language.attributes" + } + }, + "endCaptures": { + "3": { + "name": "punctuation.definition.markdown" + } + }, + "patterns": [ + { + "begin": "(^|\\G)(\\s*)(.*)", + "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)", + "contentName": "meta.embedded.block.rescript", + "patterns": [ + { + "include": "source.rescript" + } + ] + } + ] + } + }, + "scopeName": "markdown.rescript.codeblock" +} diff --git a/package.json b/package.json index 181499112..3f99ceebd 100644 --- a/package.json +++ b/package.json @@ -163,6 +163,16 @@ "language": "rescript", "scopeName": "source.rescript", "path": "./grammars/rescript.tmLanguage.json" + }, + { + "scopeName": "markdown.rescript.codeblock", + "path": "./grammars/rescript.markdown.json", + "injectTo": [ + "text.html.markdown" + ], + "embeddedLanguages": { + "meta.embedded.block.rescript": "rescript" + } } ], "languages": [ @@ -191,4 +201,4 @@ "@types/vscode": "1.68.0", "typescript": "^4.7.3" } -} +} \ No newline at end of file