From ea04220874a262c2a2d64f8eb9e9cb3124eb0886 Mon Sep 17 00:00:00 2001
From: Matthias Deiml <matthias@deiml.net>
Date: Sat, 6 Aug 2022 17:56:48 +0200
Subject: [PATCH] Use split_parser branch for markdown grammar (#3108)

---
 book/src/generated/lang-support.md            |  1 +
 languages.toml                                | 14 ++++-
 .../queries/markdown.inline/highlights.scm    | 39 ++++++++++++
 .../queries/markdown.inline/injections.scm    |  2 +
 runtime/queries/markdown/highlights.scm       | 61 +++++++++----------
 runtime/queries/markdown/injections.scm       | 22 ++++---
 6 files changed, 99 insertions(+), 40 deletions(-)
 create mode 100644 runtime/queries/markdown.inline/highlights.scm
 create mode 100644 runtime/queries/markdown.inline/injections.scm

diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 677975c35139..a33b5acc3324 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -62,6 +62,7 @@
 | lua | ✓ |  | ✓ | `lua-language-server` |
 | make | ✓ |  |  |  |
 | markdown | ✓ |  |  |  |
+| markdown.inline | ✓ |  |  |  |
 | meson | ✓ |  | ✓ |  |
 | mint |  |  |  | `mint` |
 | nickel | ✓ |  | ✓ | `nls` |
diff --git a/languages.toml b/languages.toml
index 8302ff49c5a5..7947104bd5f7 100644
--- a/languages.toml
+++ b/languages.toml
@@ -884,7 +884,19 @@ indent = { tab-width = 2, unit = "  " }
 
 [[grammar]]
 name = "markdown"
-source = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "ab15701d8f3f68aeb74e30573b7d669a6ef2a7ed" }
+source = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "142a5b4a1b092b64c9f5db8f11558f9dd4009a1b", subpath = "tree-sitter-markdown" }
+
+[[language]]
+name = "markdown.inline"
+scope = "source.markdown.inline"
+injection-regex = "markdown\\.inline"
+file-types = []
+roots = []
+grammar = "markdown_inline"
+
+[[grammar]]
+name = "markdown_inline"
+source = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "142a5b4a1b092b64c9f5db8f11558f9dd4009a1b", subpath = "tree-sitter-markdown-inline" }
 
 [[language]]
 name = "dart"
diff --git a/runtime/queries/markdown.inline/highlights.scm b/runtime/queries/markdown.inline/highlights.scm
new file mode 100644
index 000000000000..ee0926a5f198
--- /dev/null
+++ b/runtime/queries/markdown.inline/highlights.scm
@@ -0,0 +1,39 @@
+;; From nvim-treesitter/nvim-treesitter
+[
+  (code_span)
+  (link_title)
+] @markup.raw.inline
+
+[
+  (emphasis_delimiter)
+  (code_span_delimiter)
+] @punctuation.bracket
+
+(emphasis) @markup.italic
+
+(strong_emphasis) @markup.bold
+
+(strikethrough) @markup.strikethrough
+
+[
+  (link_destination)
+  (uri_autolink)
+] @markup.link.url
+
+[
+  (link_text)
+  (image_description)
+] @markup.link.text
+
+(link_label) @markup.link.label
+
+[
+  (backslash_escape)
+  (hard_line_break)
+] @constant.character.escape
+
+(image ["[" "]" "(" ")"] @punctuation.bracket)
+(image "!" @punctuation.special)
+(inline_link ["[" "]" "(" ")"] @punctuation.bracket)
+(shortcut_link ["[" "]"] @punctuation.bracket)
+
diff --git a/runtime/queries/markdown.inline/injections.scm b/runtime/queries/markdown.inline/injections.scm
new file mode 100644
index 000000000000..c137a8222a48
--- /dev/null
+++ b/runtime/queries/markdown.inline/injections.scm
@@ -0,0 +1,2 @@
+
+((html_tag) @injection.content (#set! injection.language "html"))
diff --git a/runtime/queries/markdown/highlights.scm b/runtime/queries/markdown/highlights.scm
index 096c29542622..25f22ba73861 100644
--- a/runtime/queries/markdown/highlights.scm
+++ b/runtime/queries/markdown/highlights.scm
@@ -1,54 +1,53 @@
-(setext_heading (heading_content) @markup.heading.1 (setext_h1_underline) @markup.heading.marker)
-(setext_heading (heading_content) @markup.heading.2 (setext_h2_underline) @markup.heading.marker)
 
-(atx_heading (atx_h1_marker) @markup.heading.marker (heading_content) @markup.heading.1)
-(atx_heading (atx_h2_marker) @markup.heading.marker (heading_content) @markup.heading.2)
-(atx_heading (atx_h3_marker) @markup.heading.marker (heading_content) @markup.heading.3)
-(atx_heading (atx_h4_marker) @markup.heading.marker (heading_content) @markup.heading.4)
-(atx_heading (atx_h5_marker) @markup.heading.marker (heading_content) @markup.heading.5)
-(atx_heading (atx_h6_marker) @markup.heading.marker (heading_content) @markup.heading.6)
+(setext_heading (paragraph) @markup.heading.1 (setext_h1_underline) @markup.heading.marker)
+(setext_heading (paragraph) @markup.heading.2 (setext_h2_underline) @markup.heading.marker)
+
+(atx_heading (atx_h1_marker) @markup.heading.marker (inline) @markup.heading.1)
+(atx_heading (atx_h2_marker) @markup.heading.marker (inline) @markup.heading.2)
+(atx_heading (atx_h3_marker) @markup.heading.marker (inline) @markup.heading.3)
+(atx_heading (atx_h4_marker) @markup.heading.marker (inline) @markup.heading.4)
+(atx_heading (atx_h5_marker) @markup.heading.marker (inline) @markup.heading.5)
+(atx_heading (atx_h6_marker) @markup.heading.marker (inline) @markup.heading.6)
 
 [
   (indented_code_block)
-  (code_fence_content)
+  (fenced_code_block)
 ] @markup.raw.block
 
-(block_quote) @markup.quote
-
-(code_span) @markup.raw.inline
-
-(emphasis) @markup.italic
-
-(strong_emphasis) @markup.bold
+(info_string) @label
 
-(link_destination) @markup.link.url
-(link_label) @markup.link.label
+[
+  (fenced_code_block_delimiter)
+] @punctuation.bracket
 
-(info_string) @label
+[
+  (link_destination)
+] @markup.link.url
 
 [
-  (link_text)
-  (image_description)
-] @markup.link.text
+  (link_label)
+] @markup.link.label
 
 [
   (list_marker_plus)
   (list_marker_minus)
   (list_marker_star)
-] @markup.list.numbered
+] @markup.list.unnumbered
 
 [
   (list_marker_dot)
   (list_marker_parenthesis)
-] @markup.list.unnumbered
+] @markup.list.numbered
+
+(thematic_break) @punctuation.delimiter
 
 [
-  (backslash_escape)
-  (hard_line_break)
-] @constant.character.escape
+  (block_continuation)
+  (block_quote_marker)
+] @punctuation.special
 
-(thematic_break) @punctuation.delimiter
+[
+  (backslash_escape)
+] @string.escape
 
-(inline_link ["[" "]" "(" ")"] @punctuation.bracket)
-(image ["[" "]" "(" ")"] @punctuation.bracket)
-(fenced_code_block_delimiter) @punctuation.bracket
+(block_quote) @markup.quote
diff --git a/runtime/queries/markdown/injections.scm b/runtime/queries/markdown/injections.scm
index 10dcab0b9cb6..9940e961ac1a 100644
--- a/runtime/queries/markdown/injections.scm
+++ b/runtime/queries/markdown/injections.scm
@@ -1,9 +1,15 @@
+; From nvim-treesitter/nvim-treesitter
+
 (fenced_code_block
-  (info_string) @injection.language
-  (code_fence_content) @injection.content
-  (#set! injection.include-children))
-
-((html_block) @injection.content
- (#set! injection.language "html"))
-((html_tag) @injection.content
- (#set! injection.language "html"))
+  (info_string
+    (language) @injection.language)
+  (code_fence_content) @injection.content (#set! injection.include-unnamed-children))
+
+((html_block) @injection.content (#set! injection.language "html") (#set! injection.include-unnamed-children))
+
+([
+  (minus_metadata)
+  (plus_metadata)
+] @injection.content (#set! injection.language "yaml") (#set! injection.include-unnamed-children))
+
+((inline) @injection.content (#set! injection.language "markdown.inline") (#set! injection.include-unnamed-children))