anchor.diff:  (defun buffer-disable-undo (buffer)
     @lang(:jp "`buffer`のアンドゥを無効にしてアンドゥ用の情報を空にします。")
     (setf (buffer-%enable-undo-p buffer) nil)
  -  (setf (buffer-undo-size buffer) 0)
  -  (setf (buffer-undo-stack buffer) nil)
  +  (setf (buffer-edit-history buffer) (make-array 0 :adjustable t :fill-pointer 0))
     (setf (buffer-redo-stack buffer) nil)
     nil)
   
  
positive.code:     :initform nil
      :initarg :nlines
      :accessor buffer-nlines)
     (undo-size
      :initform nil
      :initarg :undo-size
      :accessor buffer-undo-size)
     (undo-stack
      :initform nil
      :initarg :undo-stack
      :accessor buffer-undo-stack)
     (redo-stack
      :initform nil
      :initarg :redo-stack
      :accessor buffer-redo-stack)
     (external-format
      :initform nil
  
negative.code: 
  (defun buffer-undo-1 (point)
    (let* ((buffer (point-buffer point))
           (edit-history (buffer-edit-history buffer))
           (elt (and (< 0 (length edit-history)) (vector-pop edit-history))))
      (when elt
        (let ((*undo-mode* :undo))
          (unless (eq elt :separator)
            (apply-inverse-edit elt point))))))
  
  (defun buffer-undo (point)
    (let ((buffer (point-buffer point)))
      (push :separator (buffer-redo-stack buffer))
      (when (eq :separator (last-edit-history buffer))
        (vector-pop (buffer-edit-history buffer)))
      (let ((result0 nil))
        (loop :for result := (buffer-undo-1 point)
              :while result
  