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