Function: org-edit-src-save

org-edit-src-save is an interactive and byte-compiled function defined in org-src.el.gz.

Signature

(org-edit-src-save)

Documentation

Save parent buffer with current state source-code buffer.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-src.el.gz
(defun org-edit-src-save ()
  "Save parent buffer with current state source-code buffer."
  (interactive)
  (unless (org-src-edit-buffer-p) (user-error "Not in a sub-editing buffer"))
  (set-buffer-modified-p nil)
  (let ((write-back-buf (generate-new-buffer "*org-src-write-back*"))
	(beg org-src--beg-marker)
	(end org-src--end-marker)
	(overlay org-src--overlay))
    (org-src--contents-for-write-back write-back-buf)
    (with-current-buffer (org-src-source-buffer)
      (undo-boundary)
      (goto-char beg)
      ;; Temporarily disable read-only features of OVERLAY in order to
      ;; insert new contents.
      (delete-overlay overlay)
      (let ((expecting-bol (bolp)))
	(if (version< emacs-version "27.1")
	    (progn (delete-region beg end)
		   (insert (with-current-buffer write-back-buf (buffer-string))))
	  (save-restriction
	    (narrow-to-region beg end)
	    (org-replace-buffer-contents write-back-buf 0.1 nil)
	    (goto-char (point-max))))
	(when (and expecting-bol (not (bolp))) (insert "\n")))
      (kill-buffer write-back-buf)
      (save-buffer)
      (move-overlay overlay beg (point))))
  ;; `write-contents-functions' requires the function to return
  ;; a non-nil value so that other functions are not called.
  t)