anchor.diff:                           :attribute 'fm-background-attribute)))
         (line-offset p 0 charpos))
       ;; redraw windows in current frame
  -    (let* ((%frame (virtual-frame-current (gethash (lem:implementation) *virtual-frame-map*)))
  -           (frame (%frame-frame %frame)))
  +    (let* ((frame (virtual-frame-current (gethash (lem:implementation) *virtual-frame-map*))))
         (dolist (w (lem::window-tree-flatten (lem:frame-window-tree frame)))
           (lem:window-redraw w t))
         (dolist (w (lem:frame-floating-windows frame))
  
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: (defun make-virtual-frame (impl frame)
    (declare (type frame frame))
    (let* ((buffer (make-buffer "*fm*" :enable-undo-p nil :temporary t))
           (id/frame-table (make-array +fm-max-number-of-frames+ :initial-element nil)))
      (setf (aref id/frame-table 0) frame)
      (setf (lem:variable-value 'truncate-lines :buffer buffer) nil)
      (let ((vf (make-instance 'virtual-frame
                               :impl impl
  