anchor.diff:      (setf (buffer-undo-size buffer) 0)
       (setf (buffer-undo-stack buffer) nil)
       (setf (buffer-redo-stack buffer) nil)
  -    (setf (buffer-undo-node buffer) 0)
  +    (setf (buffer-undo-node buffer) -1)
       (setf (buffer-saved-node buffer) 0)
       (setf (buffer-overlays buffer) nil)))
   
  
positive.code:                                   (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)
  
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)
      (push buffer *buffer-list*)
      buffer))
  