anchor.diff:        (flet ((make-title-string (len)
                  (concatenate 'string "|~" (write-to-string (+ len 2)) ":@<~A~>|")))
           (add menu (format nil (make-title-string (length title)) title) :y 0 :x 2)))
  -    ;; todo: when we refresh a window with a subwin, we shouldnt have to refresh the subwin separately.
  +    ;; TODO: when we refresh a window with a subwin, we shouldnt have to refresh the subwin separately.
       ;; make refresh specialize on menu and decorated window in a way to do both.
       (refresh menu)
       (refresh sub-win)))
  
positive.code:                   (:up    (setf i (max (1- i) 0)))
                    (:down  (setf i (min (1+ i) (1- m))))
                    (:left  (setf j (max (1- j) 0)))
                    (:right (setf j (min (1+ j) (1- n))))))))
        (setf item (sub2rmi layout (list i j))))))
  
  (defun format-menu-item (menu item-number)
  
negative.code:   (declare (special menu))
    (with-accessors ((item .current-item-number) (items .items) (layout .layout) (cyclic-selection .cyclic-selection)
                     (scrolled-layout .scrolled-layout) (scrolled-region-start .scrolled-region-start)) menu
      (let ((i  (car  (rmi2sub layout item)))
            (j  (cadr (rmi2sub layout item)))
            (m  (car  layout))
            (n  (cadr layout))
            (m0 (car  scrolled-region-start))
            (n0 (cadr scrolled-region-start))
            (m1 (car  scrolled-layout))
            (n1 (cadr scrolled-layout)))
        (if scrolled-layout
            ;; when scrolling is on, the menu is not cycled.
            (progn
              (case event
                (:up    (when (> i 0) (decf i))             ; when not in first row, move one row up
                        (when (< i m0) (decf m0)))          ; when above region, move region one row up
                (:down  (when (< i (1- m)) (incf i))        ; when not in last row, move one row down
                        (when (>= i (+ m0 m1)) (incf m0)))  ; when below region, move region one row down
                (:left  (when (> j 0) (decf j))             ; when not in first column, move one column left
                        (when (< j n0) (decf n0)))          ; when left of region, move region one column left
                (:right (when (< j (1- n)) (incf j))        ; when not in last column, move one column right
                        (when (>= j (+ n0 n1)) (incf n0)))) ; when right of region, move region one column right
  
              ;; set new scrolled-region coordinates
              (setf scrolled-region-start (list m0 n0)))
  
            ;; when scrolling is off, the menu can be cycled.
            (if cyclic-selection
                  ;; do cycle through the items
                  (case event
                    (:up    (setf i (mod (1- i) m)))
  