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)))))