Esta restricción se establece explícitamente en follow-all-followers
en su llamada al next-window
.
Aquí hay una solución rudimentaria. Hay algunas deficiencias que notará muy rápidamente (por ejemplo, puede que necesite organizar los marcos manualmente), pero facilita el requisito básico de utilizar todos los marcos, y debería poder ponerlo en funcionamiento.
También sugeriría que FrameMove con WindMove podría resultar muy útil para esta disposición.
(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))
Es posible que en cambio prefieren simplemente redefinir la función follow-all-followers
a hacer lo que quiera.
Esta limitación existe por dos razones: 1) no existe un "primer fotograma" natural, por lo que sería difícil para el modo de seguimiento determinar en qué orden organizar el contenido de las ventanas. 2) Permite a un usuario abrir varios marcos, cada uno mostrando diferentes partes del buffer. ¿Por qué no usa un marco grande? El mío tiene seis columnas de ancho y se extiende a través de dos monitores físicos, lo que me da un total de 888 líneas. – Lindydancer