This restriction is set explicitly by follow-all-followers
in its call to next-window
.
Here's a rudimentary workaround. There are some deficiencies you'll notice pretty quickly (e.g. you may need to arrange the frames manually), but it facilitates the basic requirement of utilising all frames, and you should be able to get it working.
I would also suggest that FrameMove with WindMove might prove very useful for this arrangement.
(defmacro with-temporary-advice (function class name &rest body)
"Enable the specified advice, evaluate BODY, then disable the advice."
`(progn
(ad-enable-advice ,function ,class ,name)
(ad-activate ,function)
,@body
(ad-disable-advice ,function ,class ,name)
(ad-activate ,function)))
(defadvice next-window (before my-next-window-all-frames disable)
"Enforce the ALL-FRAMES argument to `next-window'."
(ad-set-arg 2 'visible))
(defadvice follow-all-followers (around my-follow-all-frames activate)
"Allow `follow-mode' to span frames."
(with-temporary-advice
'next-window 'before 'my-next-window-all-frames
ad-do-it))
You might instead prefer to simply redefine the follow-all-followers
function to do what you want.