Stefan Monnier writes: >>> + (let* ((aux (if special mover >>> + (lambda (x) >>> + (cons (progn (funcall mover x) (point)) >>> + (progn (funcall mover (- x)) (point)))))) >> >> If `mover` is changed to return a pair of positions, than the above can >> just be: > > [ ... and here I hit `C-c C-c` i.s.o `C-x C-x`, sorry. ] > > (let* ((aux (if special mover > (lambda (x) > (let ((pos (progn (funcall mover x) (point)))) > (if (consp pos) pos > (cons pos > (progn (funcall mover (- x)) (point)))))))) > I think I managed to keep the semantics as they are now. What do you think? Does this seem like a sane approach? Theo