diff --git a/build.ts b/build.ts
index 09c3b49..e3218a9 100644
--- a/build.ts
+++ b/build.ts
@@ -42,6 +42,7 @@ const languages: Language[] = [
{ name: 'go', language: 'go', identifiers: ['go', 'golang'], source: 'source.go' },
{ name: 'groovy', language: 'groovy', identifiers: ['groovy', 'gvy'], source: 'source.groovy' },
{ name: 'pug', language: 'pug', identifiers: ['jade', 'pug'], source: 'text.pug' },
+ { name: 'hsml', language: 'hsml', identifiers: ['hsml'], source: 'text.hsml' },
{ name: 'ignore', language: 'ignore', identifiers: ['gitignore', 'ignore'], source: 'source.ignore' },
{ name: 'js', language: 'javascript', identifiers: ['js', 'jsx', 'javascript', 'es6', 'mjs', 'cjs', 'dataviewjs', '\\{\\.js.+?\\}'], source: 'source.js' },
diff --git a/syntaxes/markdown.tmLanguage b/syntaxes/markdown.tmLanguage
index 9117e2e..5f1b338 100644
--- a/syntaxes/markdown.tmLanguage
+++ b/syntaxes/markdown.tmLanguage
@@ -1531,6 +1531,59 @@
+ fenced_code_block_hsml
+
+ begin
+ (^|\G)(\s*)(`{3,}|~{3,})\s*(?i:(hsml)((\s+|:|,|\{|\?)[^`]*)?$)
+ name
+ markup.fenced_code.block.markdown
+ end
+ (^|\G)(\2|\s{0,3})(\3)\s*$
+ beginCaptures
+
+ 3
+
+ name
+ punctuation.definition.markdown
+
+ 4
+
+ name
+ fenced_code.block.language.markdown
+
+ 5
+
+ name
+ fenced_code.block.language.attributes.markdown
+
+
+ endCaptures
+
+ 3
+
+ name
+ punctuation.definition.markdown
+
+
+ patterns
+
+
+ begin
+ (^|\G)(\s*)(.*)
+ while
+ (^|\G)(?!\s*([`~]{3,})\s*$)
+ contentName
+ meta.embedded.block.hsml
+ patterns
+
+
+ include
+ text.hsml
+
+
+
+
+
fenced_code_block_ignore
begin
@@ -3445,6 +3498,10 @@
include
#fenced_code_block_pug
+
+ include
+ #fenced_code_block_hsml
+
include
#fenced_code_block_ignore