Add Djot support (#12562)

This commit is contained in:
Matthew Mark Ibbetson 2025-02-10 23:36:01 +02:00 committed by GitHub
parent 7a3470c48d
commit 35faa73be1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 318 additions and 0 deletions

View file

@ -39,6 +39,7 @@
| devicetree | ✓ | | | |
| dhall | ✓ | ✓ | | `dhall-lsp-server` |
| diff | ✓ | | | |
| djot | ✓ | | | |
| docker-compose | ✓ | ✓ | ✓ | `docker-compose-langserver`, `yaml-language-server` |
| dockerfile | ✓ | ✓ | | `docker-langserver` |
| dot | ✓ | | | `dot-language-server` |

View file

@ -1696,6 +1696,18 @@ grammar = "markdown_inline"
name = "markdown_inline"
source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-markdown", rev = "62516e8c78380e3b51d5b55727995d2c511436d8", subpath = "tree-sitter-markdown-inline" }
[[language]]
name = "djot"
scope = "source.djot"
injection-regex = "dj|djot"
file-types = ["dj", "djot"]
indent = { tab-width = 2, unit = " " }
block-comment-tokens = { start = "{%", end = "%}" }
[[grammar]]
name = "djot"
source = { git = "https://github.com/treeman/tree-sitter-djot", rev = "67e6e23ba7be81a4373e0f49e21207bdc32d12a5" }
[[language]]
name = "dart"
scope = "source.dart"

View file

@ -0,0 +1,286 @@
(heading) @markup.heading
((heading
(marker) @markup.heading.marker) @markup.heading.1
(#eq? @markup.heading.marker "# "))
((heading
(marker) @markup.heading.marker) @markup.heading.2
(#eq? @markup.heading.marker "## "))
((heading
(marker) @markup.heading.marker) @markup.heading.3
(#eq? @markup.heading.marker "### "))
((heading
(marker) @markup.heading.marker) @markup.heading.4
(#eq? @markup.heading.marker "##### "))
((heading
(marker) @markup.heading.marker) @markup.heading.5
(#eq? @markup.heading.marker "###### "))
((heading
(marker) @markup.heading.marker) @markup.heading.6
(#eq? @markup.heading.marker "####### "))
(thematic_break) @special
[
(div_marker_begin)
(div_marker_end)
] @tag
[
(code_block)
(raw_block)
(frontmatter)
] @markup.raw.block
[
(code_block_marker_begin)
(code_block_marker_end)
(raw_block_marker_begin)
(raw_block_marker_end)
] @punctuation.bracket
(language) @type.enum.variant
(inline_attribute _ @attribute)
(language_marker) @punctuation.delimiter
[
(block_quote)
(block_quote_marker)
] @markup.quote
(table_header) @markup.heading
(table_header "|" @punctuation.special)
(table_row "|" @punctuation.special)
(table_separator) @punctuation.special
(table_caption (marker) @punctuation.special)
(table_caption) @label
[
(list_marker_dash)
(list_marker_plus)
(list_marker_star)
(list_marker_definition)
] @markup.list.unnumbered
[
(list_marker_decimal_period)
(list_marker_decimal_paren)
(list_marker_decimal_parens)
(list_marker_lower_alpha_period)
(list_marker_lower_alpha_paren)
(list_marker_lower_alpha_parens)
(list_marker_upper_alpha_period)
(list_marker_upper_alpha_paren)
(list_marker_upper_alpha_parens)
(list_marker_lower_roman_period)
(list_marker_lower_roman_paren)
(list_marker_lower_roman_parens)
(list_marker_upper_roman_period)
(list_marker_upper_roman_paren)
(list_marker_upper_roman_parens)
] @markup.list.numbered
(list_marker_task
(unchecked)) @markup.list.unchecked
(list_marker_task
(checked)) @markup.list.checked
(checked
[
"x"
"X"
] @constant.builtin.boolean) @markup.list.checked
[
(ellipsis)
(en_dash)
(em_dash)
(quotation_marks)
] @punctuation.special
(list_item (term) @constructor)
(quotation_marks) @markup.quote
((quotation_marks) @constant.character.escape
(#any-of? @constant.character.escape "\\\"" "\\'"))
[
(hard_line_break)
(backslash_escape)
] @constant.character.escape
(emphasis) @markup.italic
(strong) @markup.bold
(symbol) @string.special.symbol
(delete) @markup.strikethrough
(insert) @markup.italic
(highlighted) @markup.bold
(superscript) @string.special.superscript
(subscript) @string.special.subscript
[
(emphasis_begin)
(emphasis_end)
(strong_begin)
(strong_end)
(superscript_begin)
(superscript_end)
(subscript_begin)
(subscript_end)
(highlighted_begin)
(highlighted_end)
(insert_begin)
(insert_end)
(delete_begin)
(delete_end)
(verbatim_marker_begin)
(verbatim_marker_end)
(math_marker)
(math_marker_begin)
(math_marker_end)
(raw_inline_attribute)
(raw_inline_marker_begin)
(raw_inline_marker_end)
] @punctuation.bracket
(math) @markup.raw
(verbatim) @markup.raw
(raw_inline) @markup.raw
(comment) @comment.block
(inline_comment) @comment.line
(span
[
"["
"]"
] @punctuation.bracket)
(inline_attribute
[
"{"
"}"
] @punctuation.bracket)
(block_attribute
[
"{"
"}"
] @punctuation.bracket)
[
(class)
(class_name)
] @type
; NOTE: Not perfectly semantically accurate, but a fair approximation.
(identifier) @string.special.symbol
(key_value "=" @operator)
(key_value (key) @attribute)
(key_value (value) @string)
(link_text
[
"["
"]"
] @punctuation.bracket)
(autolink
[
"<"
">"
] @punctuation.bracket)
(inline_link (inline_link_destination) @markup.link.url)
(link_reference_definition ":" @punctuation.delimiter)
(full_reference_link (link_text) @markup.link.text)
(full_reference_link (link_label) @markup.link.label)
(collapsed_reference_link "[]" @punctuation.bracket)
(full_reference_link
[
"["
"]"
] @punctuation.bracket)
(collapsed_reference_link (link_text) @markup.link.text)
(inline_link (link_text) @markup.link.text)
(full_reference_image (link_label) @markup.link.label)
(full_reference_image
[
"["
"]"
] @punctuation.bracket)
(collapsed_reference_image "[]" @punctuation.bracket)
(image_description
[
"!["
"]"
] @punctuation.bracket)
(image_description) @label
(link_reference_definition
[
"["
"]"
] @punctuation.bracket)
(link_reference_definition (link_label) @markup.link.label)
(inline_link_destination
[
"("
")"
] @punctuation.bracket)
[
(autolink)
(inline_link_destination)
(link_destination)
] @markup.link.url
(footnote (reference_label) @markup.link.label)
(footnote_reference (reference_label) @markup.link.label)
[
(footnote_marker_begin)
(footnote_marker_end)
] @punctuation.bracket

View file

@ -0,0 +1,19 @@
(comment (content) @injection.content
(#set! injection.language "comment"))
(math (content) @injection.content
(#set! injection.language "latex") (#set! injection.include-unnamed-children))
(code_block
(language) @injection.language
(code) @injection.content (#set! injection.include-unnamed-children))
(raw_block
(raw_block_info
(language) @injection.language)
(content) @injection.content (#set! injection.include-unnamed-children))
(raw_inline
(content) @injection.content (#set! injection.include-unnamed-children)
(raw_inline_attribute
(language) @injection.language))