anchor.diff:                                    (buffer-saved-node ,buffer)))))))
              (ecase *undo-mode*
                (:edit
  -              (incf (buffer-undo-node ,buffer))
                 (push-undo-stack ,buffer elt)
                 (setf (buffer-redo-stack ,buffer) nil))
                (:undo
  -              (incf (buffer-undo-node ,buffer))
                 (push-undo-stack ,buffer elt))
                (:redo
  -              (decf (buffer-undo-node ,buffer))
                 (push-redo-stack ,buffer elt))))))))
   
   (defmacro buffer-read-only-guard (buffer)
  
positive.code:   (prog1 (do ((res #1=(buffer-redo-1 buffer) #1#)
                (pres nil res))
               ((not res) pres))
      (push :undo-separator (buffer-undo-stack buffer))))
  
  (defun buffer-get (buffer indicator &optional default)
  
negative.code:     (setf (buffer-undo-size buffer) 0)
      (setf (buffer-undo-stack buffer) nil)
      (setf (buffer-redo-stack buffer) nil)
      (setf (buffer-undo-node buffer) -1)
      (setf (buffer-saved-node buffer) 0)
      (setf (buffer-overlays buffer) nil)))
  
  