2010-07-22 12 views
26

Io lavoro con due monitor, e spesso uso emacs con due frame aperti; uno per ogni monitor. ogni fotogramma è diviso in due finestre side-by-side, in questo modo:Quando si utilizzano due frame in emacs, come si impedisce che il buffer di compilazione venga visualizzato in entrambi?

a | b <-- frame 1 in monitor 1 
------- 
c | d <-- frame 2 in monitor 2 

Quando mi ha colpito il mio pulsante 'compilare', mentre nella finestra di un, il buffer di compilazione si apre nel buffer accanto ad essa. Fin qui tutto bene:

a | compilation 
----------------- 
c |  d 

Tuttavia, se poi passare a finestra c per modificare alcune cose, poi ha colpito la compilazione di nuovo, la finestra d visita il buffer di compilazione così:

a | compilation 
------------------ 
c | compilation 

Così ora ho la metà del mio schermo occupato da due copie dello stesso buffer di compilazione, chiedendomi perché ho due monitor :)

Posso prevenire questo coscienziosamente colpendo solo il tasto di compilazione quando il mio cursore si trova nel buffer successivo al buffer di compilazione attualmente aperto, ma ho colpito 'compile' così presto Spesso, di solito, non ho la presenza della mente per farlo. Mi sento come se ci fosse qualcosa che potrei modificare in .emacs, quindi non dovrei farlo.

Qualche suggerimento? Idealmente, quando premo "compile", il buffer di compilazione attualmente aperto dovrebbe spostarsi dalla finestra precedente a quella accanto alla finestra attualmente in uso. Se è troppo complicato, mi accontenterò facilmente di avere emacs non visitare il buffer di compilazione nella finestra adiacente, se è già aperto in un'altra finestra.

+1

Domanda brillante: non è mai stato preso in considerazione l'utilizzo di emacs con questa configurazione prima! – cristobalito

risposta

28
(setq-default display-buffer-reuse-frames t) 

Dalla documentazione:

non-nil significa `Display-buffer' deve riutilizzare fotogrammi. Se il buffer in questione è già visualizzato in un frame, sollevare per quel frame.

+0

Eccellente, grazie! – SuperElectric

+3

'Questa variabile è obsoleta dal 24.3; usa una voce alist 'riusable-frame' in 'display-buffer-alist'' – cYrus