Function: calendar-in-read-only-buffer
calendar-in-read-only-buffer is a macro defined in calendar.el.gz.
Signature
(calendar-in-read-only-buffer BUFFER &rest BODY)
Documentation
Switch to BUFFER and execute the forms in BODY.
First creates or erases BUFFER as needed. Leaves BUFFER read-only,
with disabled undo. Leaves point at point-min, displays BUFFER.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/calendar.el.gz
(defmacro calendar-in-read-only-buffer (buffer &rest body)
"Switch to BUFFER and execute the forms in BODY.
First creates or erases BUFFER as needed. Leaves BUFFER read-only,
with disabled undo. Leaves point at `point-min', displays BUFFER."
(declare (indent 1) (debug t))
(let ((window (gensym)))
`(progn
(set-buffer (get-buffer-create ,buffer))
(or (derived-mode-p 'special-mode) (special-mode))
(setq buffer-read-only nil
buffer-undo-list t)
(erase-buffer)
(let ((,window (display-buffer ,buffer)))
(when ,window
(with-selected-window ,window
,@body
(goto-char (point-min)))))
(set-buffer-modified-p nil)
(setq buffer-read-only t))))