2012-10-06 6 views
6

C'è un modo per ottenere un comportamento come te trovare in follow-mode, ma averlo in più finestre in fotogrammi separati?emacs follow-modalità tra i fotogrammi

ho devo lavorare con un certo codice legacy brutta che ha sette mattoni pagina di otto livelli di profondità cicli for innestati con goto lots'a di e aiuta a vedere come gran parte del codice come possibile (al fine di adeguatamente capirlo e riscriverlo senza rompere tutto il resto).

il codice più che posso vedere in una sola volta, meglio è.

+2

esiste Questa limitazione per due ragioni: 1) non c'è naturale "primo frame", quindi sarebbe difficile per il follow-mode di capire in quale ordine di organizzare il contenuto delle finestre. 2) Permette ad un utente di aprire diversi frame, ognuno dei quali mostra parti diverse del buffer. Perché non usi un frame grande - il mio è di sei colonne che si estende su due monitor fisici, il che mi dà un totale di 888 linee. – Lindydancer

risposta

3

Questa restrizione è impostata in modo esplicito dalla follow-all-followers nella sua chiamata a next-window.

Ecco una soluzione rudimentale. Ci sono alcune carenze che noterai abbastanza rapidamente (ad esempio potresti dover organizzare manualmente i frame), ma facilita il requisito di base di utilizzare tutti i frame e dovresti riuscire a farlo funzionare.

Vorrei anche suggerire che FrameMove con WindMove potrebbe rivelarsi molto utile per questa disposizione.

(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)) 

Si potrebbe invece preferire di ridefinire semplicemente la funzione di follow-all-followers a fare quello che vuoi.

+0

Questo rappresenta un buon punto di partenza. Grazie. – Ishpeck