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