Function: markdown-edit-code-block

markdown-edit-code-block is an interactive and byte-compiled function defined in markdown-mode.el.

Signature

(markdown-edit-code-block)

Documentation

Edit Markdown code block in an indirect buffer.

Key Bindings

Source Code

;; Defined in ~/.emacs.d/elpa/markdown-mode-20260321.143/markdown-mode.el
(defun markdown-edit-code-block ()
  "Edit Markdown code block in an indirect buffer."
  (interactive)
  (save-excursion
    (if (fboundp 'edit-indirect-region)
        (if-let* ((bounds (markdown-get-enclosing-fenced-block-construct))
                  (fence-begin (nth 0 bounds))
                  (fence-end (nth 1 bounds)))
            (let* ((original-line (line-number-at-pos))
                   (original-column (current-column))
                   (begin (progn (goto-char fence-begin) (line-beginning-position 2)))
                   (line (max 0 (- original-line (line-number-at-pos) 1)))
                   (indentation (current-indentation))
                   (column (max 0 (- original-column indentation)))
                   (end (progn (goto-char fence-end) (line-beginning-position 1)))
                   (lang (markdown-code-block-lang))
                   (mode (or (and lang (markdown-get-lang-mode lang))
                             markdown-edit-code-block-default-mode))
                   (edit-indirect-guess-mode-function
                    (lambda (_parent-buffer _beg _end)
                      (funcall mode)))
                   (indirect-buf (edit-indirect-region begin end 'display-buffer)))
              (with-current-buffer indirect-buf
                ;; reset `sh-shell' when indirect buffer
                (when (and (not (member system-type '(ms-dos windows-nt)))
                           (member mode '(shell-script-mode sh-mode))
                           (member lang (append
                                         (mapcar (lambda (e) (symbol-name (car e)))
                                                 sh-ancestor-alist)
                                         '("csh" "rc" "sh"))))
                  (sh-set-shell lang))
                (when (> indentation 0) ;; un-indent in edit-indirect buffer
                  (indent-rigidly (point-min) (point-max) (- indentation)))
                (goto-char (point-min))
                (forward-line line)
                (move-to-column column)))
          (user-error "Not inside a GFM or tilde fenced code block"))
      (when (y-or-n-p "Package edit-indirect needed to edit code blocks. Install it now? ")
        (package-refresh-contents)
        (package-install 'edit-indirect)
        (markdown-edit-code-block)))))