mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
feat(treesitter): bundle markdown parser and queries (#22481)
* bundle split Markdown parser from https://github.com/MDeiml/tree-sitter-markdown * add queries from https://github.com/nvim-treesitter/nvim-treesitter/tree/main * upstream `#trim!` and `#inject-language!` directives Co-authored-by: dundargoc <gocdundar@gmail.com>
This commit is contained in:
9
runtime/queries/markdown/folds.scm
Normal file
9
runtime/queries/markdown/folds.scm
Normal file
@ -0,0 +1,9 @@
|
||||
(
|
||||
[
|
||||
(fenced_code_block)
|
||||
(indented_code_block)
|
||||
(list)
|
||||
(section)
|
||||
] @fold
|
||||
(#trim! @fold)
|
||||
)
|
63
runtime/queries/markdown/highlights.scm
Normal file
63
runtime/queries/markdown/highlights.scm
Normal file
@ -0,0 +1,63 @@
|
||||
;From MDeiml/tree-sitter-markdown & Helix
|
||||
(setext_heading (paragraph) @text.title.1 (setext_h1_underline) @text.title.1.marker)
|
||||
(setext_heading (paragraph) @text.title.2 (setext_h2_underline) @text.title.2.marker)
|
||||
|
||||
(atx_heading (atx_h1_marker) @text.title.1.marker (inline) @text.title.1)
|
||||
(atx_heading (atx_h2_marker) @text.title.2.marker (inline) @text.title.2)
|
||||
(atx_heading (atx_h3_marker) @text.title.3.marker (inline) @text.title.3)
|
||||
(atx_heading (atx_h4_marker) @text.title.4.marker (inline) @text.title.4)
|
||||
(atx_heading (atx_h5_marker) @text.title.5.marker (inline) @text.title.5)
|
||||
(atx_heading (atx_h6_marker) @text.title.6.marker (inline) @text.title.6)
|
||||
|
||||
(link_title) @text.literal
|
||||
(indented_code_block) @text.literal.block
|
||||
((fenced_code_block) @text.literal.block (#set! "priority" 90))
|
||||
|
||||
(info_string) @label
|
||||
|
||||
(pipe_table_header (pipe_table_cell) @text.title)
|
||||
|
||||
(pipe_table_header "|" @punctuation.special)
|
||||
(pipe_table_row "|" @punctuation.special)
|
||||
(pipe_table_delimiter_row "|" @punctuation.special)
|
||||
(pipe_table_delimiter_cell) @punctuation.special
|
||||
|
||||
[
|
||||
(fenced_code_block_delimiter)
|
||||
] @punctuation.delimiter
|
||||
|
||||
(code_fence_content) @none
|
||||
|
||||
[
|
||||
(link_destination)
|
||||
] @text.uri
|
||||
|
||||
[
|
||||
(link_label)
|
||||
] @text.reference
|
||||
|
||||
[
|
||||
(list_marker_plus)
|
||||
(list_marker_minus)
|
||||
(list_marker_star)
|
||||
(list_marker_dot)
|
||||
(list_marker_parenthesis)
|
||||
(thematic_break)
|
||||
] @punctuation.special
|
||||
|
||||
|
||||
(task_list_marker_unchecked) @text.todo.unchecked
|
||||
(task_list_marker_checked) @text.todo.checked
|
||||
|
||||
(block_quote) @text.quote
|
||||
|
||||
[
|
||||
(block_continuation)
|
||||
(block_quote_marker)
|
||||
] @punctuation.special
|
||||
|
||||
[
|
||||
(backslash_escape)
|
||||
] @string.escape
|
||||
|
||||
(inline) @spell
|
26
runtime/queries/markdown/injections.scm
Normal file
26
runtime/queries/markdown/injections.scm
Normal file
@ -0,0 +1,26 @@
|
||||
(fenced_code_block
|
||||
(info_string
|
||||
(language) @_lang)
|
||||
(code_fence_content) @injection.content
|
||||
(#inject-language! @_lang))
|
||||
|
||||
((html_block) @injection.content
|
||||
(#set! injection.language "html")
|
||||
(#set! injection.combined)
|
||||
(#set! injection.include-children))
|
||||
|
||||
((minus_metadata) @injection.content
|
||||
(#set! injection.language "yaml")
|
||||
(#offset! @injection.content 1 0 -1 0)
|
||||
(#set! injection.include-children))
|
||||
|
||||
((plus_metadata) @injection.content
|
||||
(#set! injection.language "toml")
|
||||
(#offset! @injection.content 1 0 -1 0)
|
||||
(#set! injection.include-children))
|
||||
|
||||
([
|
||||
(inline)
|
||||
(pipe_table_cell)
|
||||
] @injection.content
|
||||
(#set! injection.language "markdown_inline"))
|
92
runtime/queries/markdown_inline/highlights.scm
Normal file
92
runtime/queries/markdown_inline/highlights.scm
Normal file
@ -0,0 +1,92 @@
|
||||
;; From MDeiml/tree-sitter-markdown
|
||||
[
|
||||
(code_span)
|
||||
(link_title)
|
||||
] @text.literal @nospell
|
||||
|
||||
[
|
||||
(emphasis_delimiter)
|
||||
(code_span_delimiter)
|
||||
] @punctuation.delimiter
|
||||
|
||||
(emphasis) @text.emphasis
|
||||
|
||||
(strong_emphasis) @text.strong
|
||||
|
||||
(strikethrough) @text.strike
|
||||
|
||||
[
|
||||
(link_destination)
|
||||
(uri_autolink)
|
||||
] @text.uri @nospell
|
||||
|
||||
[
|
||||
(link_label)
|
||||
(link_text)
|
||||
(image_description)
|
||||
] @text.reference
|
||||
|
||||
[
|
||||
(backslash_escape)
|
||||
(hard_line_break)
|
||||
] @string.escape
|
||||
|
||||
(image "!" @punctuation.special)
|
||||
(image ["[" "]" "(" ")"] @punctuation.bracket)
|
||||
(inline_link ["[" "]" "(" ")"] @punctuation.bracket)
|
||||
(shortcut_link ["[" "]"] @punctuation.bracket)
|
||||
|
||||
; Conceal codeblock and text style markers
|
||||
([
|
||||
(code_span_delimiter)
|
||||
(emphasis_delimiter)
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
||||
|
||||
; Conceal inline links
|
||||
(inline_link
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"("
|
||||
(link_destination)
|
||||
")"
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
||||
|
||||
; Conceal image links
|
||||
(image
|
||||
[
|
||||
"!"
|
||||
"["
|
||||
"]"
|
||||
"("
|
||||
(link_destination)
|
||||
")"
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
||||
|
||||
; Conceal full reference links
|
||||
(full_reference_link
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
(link_label)
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
||||
|
||||
; Conceal collapsed reference links
|
||||
(collapsed_reference_link
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
||||
|
||||
; Conceal shortcut links
|
||||
(shortcut_link
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
] @conceal
|
||||
(#set! conceal ""))
|
8
runtime/queries/markdown_inline/injections.scm
Normal file
8
runtime/queries/markdown_inline/injections.scm
Normal file
@ -0,0 +1,8 @@
|
||||
((html_tag) @injection.content
|
||||
(#set! injection.language "html")
|
||||
(#set! injection.combined)
|
||||
(#set! injection.include-children))
|
||||
|
||||
((latex_block) @injection.content
|
||||
(#set! injection.language "latex")
|
||||
(#set! injection.include-children))
|
Reference in New Issue
Block a user