]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/textmodes/markdown-ts-mode.el: Improve.
authorJuri Linkov <juri@linkov.net>
Sun, 4 May 2025 17:03:32 +0000 (20:03 +0300)
committerEshel Yaron <me@eshelyaron.com>
Sat, 10 May 2025 08:49:40 +0000 (10:49 +0200)
(markdown-ts-list-marker): Inherit from 'shadow' like in non-ts mode.
(markdown-ts-block-quote): Inherit from 'italic' like in non-ts mode.
(markdown-ts--treesit-settings): Use 'shadow' for parens in
'markdown-inline' only under 'inline_link' and 'image'.
Use @markdown-ts-block-quote for 'block_quote'.
Override with 'append' for links.
(markdown-ts--range-settings): Use global html parser for 'html_tag'
since its ranges are interconnected.
(markdown-ts-setup): Create the 'html' parser.

(cherry picked from commit 9e75d1815125178b4b8584faa02569d6b84fc0b5)

lisp/textmodes/markdown-ts-mode.el

index cee38b0289a4e83df815fed9a99af788ba077af9..c7a32d07a89a9a088e3f875219cf74053158ccdf 100644 (file)
@@ -127,10 +127,10 @@ maps to tree-sitter language `cpp'.")
 (defface markdown-ts-heading-6 '((t (:inherit outline-6)))
   "Face for sixth level Markdown headings.")
 
-(defface markdown-ts-list-marker '((t (:inherit font-lock-keyword-face)))
+(defface markdown-ts-list-marker '((t (:inherit shadow)))
   "Face for Markdown list markers like - and *.")
 
-(defface markdown-ts-block-quote '((t (:inherit font-lock-string-face)))
+(defface markdown-ts-block-quote '((t (:inherit italic)))
   "Face for Markdown block quotes.")
 
 (defface markdown-ts-language-keyword '((t (:inherit font-lock-keyword-face)))
@@ -140,10 +140,11 @@ maps to tree-sitter language `cpp'.")
 
 (defvar markdown-ts--treesit-settings
   (treesit-font-lock-rules
-   :language 'markdown
+   :language 'markdown-inline
    :override t
    :feature 'delimiter
-   '([ "[" "]" "(" ")" ] @shadow)
+   '((inline_link [ "[" "]" "(" ")" ] @shadow)
+     (image [ "!" "[" "]" "(" ")" ] @shadow))
 
    :language 'markdown
    :feature 'heading
@@ -172,14 +173,12 @@ maps to tree-sitter language `cpp'.")
      (list_item (list_marker_star) @markdown-ts-list-marker)
      (list_item (list_marker_plus) @markdown-ts-list-marker)
      (list_item (list_marker_minus) @markdown-ts-list-marker)
-     (list_item (list_marker_dot) @markdown-ts-list-marker)
-
-     (block_quote) @markdown-ts-block-quote)
+     (list_item (list_marker_dot) @markdown-ts-list-marker))
 
    :language 'markdown
    :feature 'paragraph
    :override 'prepend
-   '((block_quote) @italic
+   '((block_quote) @markdown-ts-block-quote
      (block_quote_marker) @markdown-ts-delimiter
      (fenced_code_block_delimiter) @markdown-ts-delimiter
      (fenced_code_block
@@ -189,7 +188,7 @@ maps to tree-sitter language `cpp'.")
       (paragraph (inline (block_continuation) @markdown-ts-delimiter))))
 
    :language 'markdown-inline
-   :override t ;; override paren delimiter inside inline link
+   :override 'append
    :feature 'paragraph-inline
    '(((image_description) @link)
      ((link_destination) @font-lock-string-face)
@@ -312,7 +311,6 @@ the same features enabled in MODE."
 
    :embed 'html
    :host 'markdown-inline
-   :local t
    '((html_tag) @html)
 
    :embed #'markdown-ts--convert-code-block-language
@@ -329,6 +327,7 @@ the same features enabled in MODE."
   (setq-local treesit-range-settings (markdown-ts--range-settings))
 
   (when (treesit-ready-p 'html t)
+    (treesit-parser-create 'html)
     (require 'html-ts-mode)
     (defvar html-ts-mode--font-lock-settings)
     (defvar html-ts-mode--treesit-font-lock-feature-list)