2012-10-06 25 views
6

¿Hay alguna manera de obtener un comportamiento como el que se encuentra en el modo de seguimiento pero tenerlo en varias ventanas en marcos separados?emacs follow-mode en todos los marcos

Tengo que trabajar con un desagradable código heredado que tiene siete páginas de ocho niveles de profundidad anidadas para bucles con much'a goto's y ayuda a ver la mayor cantidad de código posible (para poder comprenda y reescriba sin romper todo lo demás).

Cuanto más código puedo ver a la vez, mejor.

+2

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

Respuesta

3

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.

+0

Esto representa un buen lugar para comenzar. Gracias. – Ishpeck

Cuestiones relacionadas