anchor.diff:    (when *current-sourcelist*
       (when (< (1+ (sourcelist-index *current-sourcelist*))
                (length (sourcelist-elements *current-sourcelist*)))
  -      (incf (sourcelist-index *current-sourcelist*))
  -      (jump-current-element))))
  +      (jump-current-element
  +       (incf (sourcelist-index *current-sourcelist*))))))
   
   (define-key *global-keymap* "C-x p" 'sourcelist-previous)
   (define-key *global-keymap* "C-x C-p" 'sourcelist-previous)
   (define-command sourcelist-previous () ()
     (when *current-sourcelist*
       (when (<= 0 (1- (sourcelist-index *current-sourcelist*)))
  -      (decf (sourcelist-index *current-sourcelist*))
  -      (jump-current-element))))
  +      (jump-current-element
  +       (decf (sourcelist-index *current-sourcelist*))))))
   
   (define-minor-mode sourcelist-mode
       (:name "sourcelist"
  
positive.code: (define-key *sourcelist-mode-keymap* "q" 'quit-window)
  
  (define-command sourcelist-jump () ()
    (let ((jump-function (text-property-at (current-point) 'sourcelist)))
      (when jump-function
        (funcall jump-function
                 (lambda (buffer)
                   (with-point ((p (buffer-point buffer)))
                     (setf (current-window) (pop-to-buffer buffer))
                     (move-point (buffer-point buffer) p)))))))
  
negative.code:                          ,focus))
  
  (defun append-jump-function (sourcelist start end jump-function)
    (put-text-property start end
                       'sourcelist
                       (length (sourcelist-elements sourcelist)))
    (vector-push-extend jump-function (sourcelist-elements sourcelist)))
  
  (defun append-sourcelist (sourcelist write-function jump-function)
  