anchor.diff:             (p (buffer-point buffer))
              (charpos (point-charpos p)))
         (erase-buffer buffer)
  -      (dolist (%frame (virtual-frame-frames window))
  -        (let* ((focusp (eq %frame (virtual-frame-current window)))
  -               (start-pos (point-charpos p)))
  +      (dolist (frame (virtual-frame-frames window))
  +        (let ((focusp (eq frame (virtual-frame-current window)))
  +              (start-pos (point-charpos p)))
             (insert-button p
                            ;; virtual frame name on header
  -                         (let* ((frame (%frame-frame %frame))
  -                                (buffer (window-buffer (lem:frame-current-window frame)))
  +                         (let* ((buffer (window-buffer (lem:frame-current-window frame)))
                                   (name (buffer-name buffer)))
                              (format nil "~a~a:~a "
                                      (if focusp #\# #\space)
  -                                   (%frame-id %frame)
  +                                   (find-frame-id window frame)
                                      (if (>= (length name) +fm-max-width-of-each-frame-name+)
                                          (format nil "~a..."
                                                  (subseq name 0 +fm-max-width-of-each-frame-name+))
                                          name)))
                            ;; set action when click
  -                         (let ((%frame %frame))
  +                         (let ((frame frame))
                              (lambda ()
  -                             (setf (virtual-frame-current window) %frame)
  +                             (setf (virtual-frame-current window) frame)
                                (setf (virtual-frame-changed window) t)))
                            :attribute (if focusp
                                           'fm-active-frame-name-attribute
  
positive.code: (define-command fm-next () ()
    (check-frame-multiplexer-enabled)
    (let* ((vf (gethash (implementation) *virtual-frame-map*))
           (%frame (search-next-frame vf (virtual-frame-current vf))))
      (when %frame
        (setf (virtual-frame-current vf) %frame)
        (lem:map-frame (implementation) (%frame-frame %frame)))
      (lem::change-display-size-hook)
      (setf (virtual-frame-changed vf) t)))
  
  
negative.code:                         (return-from vf v))
                        *virtual-frame-map*))
             (check-nth-frame (expected-id)
               (let* ((virtual-frame (vf))
                      (actual-id (find-frame-id virtual-frame (virtual-frame-current virtual-frame))))
                 (assert (= expected-id actual-id))))
             (check-tabs (&rest nums)
               (let ((virtual-frame (vf)))
                 (assert (equal nums (mapcar (lambda (frame)
                                               (find-frame-id virtual-frame frame))
                                             (virtual-frame-frames virtual-frame)))))))
      (when (enabled-frame-multiplexer-p)
        (editor-error "fm-mode is already enabled"))
      ;; fm-create-with-new-buffer-list
  