Function: markdown-ts--code-block-ts-language

markdown-ts--code-block-ts-language is a byte-compiled function defined in markdown-ts-mode.el.gz.

Signature

(markdown-ts--code-block-ts-language NODE)

Documentation

Convert NODE to a language for the code block.

Source Code

;; Defined in /usr/src/emacs/lisp/textmodes/markdown-ts-mode.el.gz
(defun markdown-ts--code-block-ts-language (node)
  "Convert NODE to a language for the code block."
  (let* ((lang (intern (treesit-node-text node)))
         (mode (markdown-ts--code-block-language-mode lang))
         (ts-language (alist-get lang markdown-ts--code-block-languages))
         (non-ts-language (alist-get lang markdown-ts--code-block-non-ts-modes)))
    (cond
     ((fboundp mode)
      (cond
       ;; Return known treesit language.
       (ts-language ts-language)
       ;; Return nil for known non-treesit language for font-lock.
       (non-ts-language nil)
       ;; Markdown itself needs two parsers (markdown +
       ;; markdown-inline), so treesit embedding (which creates only
       ;; one) cannot fully fontify it.  Route through the non-ts
       ;; path so the temp buffer runs the full mode with both
       ;; parsers.
       ((provided-mode-derived-p mode 'markdown-ts-mode)
        (unless (assq lang markdown-ts--code-block-non-ts-modes)
          (push (cons lang mode) markdown-ts--code-block-non-ts-modes))
        nil)
       (t
        (let* ((configuration (markdown-ts--harvest-mode-treesit-configuration
                               mode))
               (ts-language (plist-get configuration :language)))
          (cond
           ((and ts-language
                 (plist-get configuration :font-lock))
            (markdown-ts--configure-current-buffer configuration)
            (unless (assq lang markdown-ts--code-block-languages)
              (push (cons lang ts-language) markdown-ts--code-block-languages))
            ts-language)
           ;; Otherwise, classify mode as non-tree-sitter.
           (t
            (unless (assq lang markdown-ts--code-block-non-ts-modes)
              (push (cons lang mode) markdown-ts--code-block-non-ts-modes))
            nil))))))
     (t nil))))