anchor.diff:          ;; ERROR: it's full of frames in virtual frame
           (return-from exit))
         (let* ((frame (lem::make-frame))
  -             (%frame (%make-frame id frame)))
  -        (setf (aref (vf-frames vf) id) %frame
  -              (vf-current vf) %frame))
  +             (%frame (%make-frame id frame))
  +             (tmp-buffer (find "*tmp*" lem-base::*buffer-list*
  +                               :key (lambda (b) (slot-value b 'lem-base::name))
  +                               :test #'string=)))
  +        (lem::setup-frame frame)
  +        (when tmp-buffer
  +          (let ((new-window (lem::make-window tmp-buffer
  +                                              0 0 (display-width) (display-height)
  +                                              t)))
  +            (setf (lem::frame-window-tree frame) new-window
  +                  (lem::frame-current-window frame) new-window
  +                  (aref (vf-frames vf) id) %frame
  +                  (vf-current vf) %frame)
  +            (lem::map-frame (implementation) frame))))
         (setf (vf-changed vf) t))))
   
   (define-key *global-keymap* "c-z d" 'fm-delete)
  
positive.code:       (when (null id)
          ;; ERROR: something wrong...
          (return-from exit))
        (setf (aref (vf-frames vf) id) nil
              (vf-current vf) (search-previous-frame vf id))
        (setf (vf-changed vf) t))))
  
  (define-key *global-keymap* "C-z p" 'fm-prev)
  
negative.code:       (when (null id)
          ;; ERROR: something wrong...
          (return-from exit))
        (let ((%frame (search-next-frame vf id)))
          (when %frame
            (setf (vf-current vf) %frame)
            (lem::map-frame (implementation) (%frame-frame %frame))))
        (setf (vf-changed vf) t))))
  