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)