Function: markdown-ts--fontify-code-block
markdown-ts--fontify-code-block is a byte-compiled function defined in
markdown-ts-mode.el.gz.
Signature
(markdown-ts--fontify-code-block NODE OVERRIDE START END &rest _)
Documentation
Fontify code block content NODE with a background overlay.
Use markdown-ts-code-block-markup-hidden when markup is hidden,
markdown-ts-code-block otherwise. Use an overlay so the
background layers itself behind language-specific fontification.
The overlay also stores the code block language and mode as
properties markdown-ts-code-block-language and
markdown-ts-code-block-mode, accessible via
markdown-ts-code-block-language-at.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/markdown-ts-mode.el.gz
(defun markdown-ts--fontify-code-block (node _override _start _end &rest _)
"Fontify code block content NODE with a background overlay.
Use `markdown-ts-code-block-markup-hidden' when markup is hidden,
`markdown-ts-code-block' otherwise. Use an overlay so the
background layers itself behind language-specific fontification.
The overlay also stores the code block language and mode as
properties `markdown-ts-code-block-language' and
`markdown-ts-code-block-mode', accessible via
`markdown-ts-code-block-language-at'."
(let* ((node-start (save-excursion
(goto-char (treesit-node-start node))
(line-beginning-position)))
(node-end (save-excursion
(goto-char (treesit-node-end node))
(skip-chars-backward " \t")
(point)))
(face (if markdown-ts-hide-markup
'markdown-ts-code-block-markup-hidden
'markdown-ts-code-block))
(lang (markdown-ts--language-at-node node))
(mode (when lang
(markdown-ts--code-block-language-mode lang)))
(existing (seq-find (lambda (ov)
(overlay-get ov 'markdown-ts-code-block))
(overlays-in node-start node-end))))
(if existing
(progn
(move-overlay existing node-start node-end)
(overlay-put existing 'face face)
(overlay-put existing 'markdown-ts-code-block-language lang)
(overlay-put existing 'markdown-ts-code-block-mode mode))
(let ((ov (make-overlay node-start node-end nil nil t)))
(overlay-put ov 'markdown-ts-code-block t)
(overlay-put ov 'face face)
(overlay-put ov 'priority '(nil . 10))
(overlay-put ov 'markdown-ts-code-block-language lang)
(overlay-put ov 'markdown-ts-code-block-mode mode)
(overlay-put ov 'evaporate t)))))