Function: markdown-ts--insert-code-block

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

Signature

(markdown-ts--insert-code-block CHAR &optional LANGUAGE)

Documentation

Insert a fenced code block using a CHAR sequence.

CHAR should be one of a backtick or a tilde. LANGUAGE is a whitespace free language string.

Source Code

;; Defined in /usr/src/emacs/lisp/textmodes/markdown-ts-mode.el.gz
(defun markdown-ts--insert-code-block (char &optional language)
  "Insert a fenced code block using a CHAR sequence.
CHAR should be one of a backtick or a tilde.
LANGUAGE is a whitespace free language string."
  (setq language
        (or language
            (replace-regexp-in-string
             "[[:blank:]]" ""
             (let ((completion-ignore-case nil)
                   (candidates
                    (seq-map
                     #'symbol-name
                     (seq-uniq
                      (append (mapcar #'car markdown-ts--code-block-languages)
                              (mapcar #'car markdown-ts--code-block-non-ts-modes)
                              (mapcar #'car markdown-ts-code-block-modes))))))
               (completing-read
                "Code block language: "
                candidates
                nil
                'confirm ; Prompt if the language is not on our list.
                nil
                'markdown-ts-language-history)))))
  (let ((fence-string (make-string 3 char)))
    (if (use-region-p)
        (let ((beg (region-beginning))
              (end (region-end)))
          (save-excursion
            (goto-char end)
            (unless (bolp) (insert "\n"))
            (insert fence-string "\n")
            (goto-char beg)
            (insert fence-string language "\n")))
      (insert fence-string language "\n\n" fence-string)
      (forward-line -1))))