Function: forms-save-buffer

forms-save-buffer is an interactive and byte-compiled function defined in forms.el.gz.

Signature

(forms-save-buffer &optional ARGS)

Documentation

Forms mode replacement for save-buffer.

It saves the data buffer instead of the forms buffer. Calls forms-write-file-filter before, and forms-read-file-filter after writing out the data.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/forms.el.gz
(defun forms-save-buffer (&optional args)
  "Forms mode replacement for `save-buffer'.
It saves the data buffer instead of the forms buffer.
Calls `forms-write-file-filter' before, and `forms-read-file-filter'
after writing out the data."
  (interactive "p")
  (forms--checkmod)
  (let ((write-file-filter forms-write-file-filter)
	(read-file-filter forms-read-file-filter)
	(cur forms--current-record))
    (with-current-buffer forms--file-buffer
      (let ((inhibit-read-only t))
	;; Write file hooks are run via write-file-functions.
	;; (if write-file-filter
	;;  (save-excursion
	;;   (forms--run-functions write-file-filter)))

	;; If they have a write-file-filter, force the buffer to be
	;; saved even if it doesn't seem to be changed.  First, they
	;; might have changed the write-file-filter; and second, if
	;; save-buffer does nothing, write-file-filter won't get run,
	;; and then read-file-filter will be mightily confused.
	(or (null write-file-filter)
	    (set-buffer-modified-p t))
	(save-buffer args)
	(if read-file-filter
	   (save-excursion
	     (forms--run-functions read-file-filter)))
	(set-buffer-modified-p nil)))
    ;; Make sure we end up with the same record number as we started.
    ;; Since read-file-filter may perform arbitrary transformations on
    ;; the data buffer contents, save-excursion is not enough.
    (forms-jump-record cur))
  t)