Quando si cambiano i buffer, impedire a emacs di cambiare automaticamente frame


13

Quando cambio buffer, emacs passerà a un frame esistente se il buffer è già aperto lì.

Ho trovato come evitarlo quando si cambia con ido usando:

(setq ido-default-buffer-method 'selected-window)

Ma non è abbastanza: per esempio se c'è un errore lisp, emacs passerà automaticamente al buffer * Backtrace * e cambierà i frame se è già aperto.

Esiste un modo per impedire a emacs completamente di passare a un frame esistente?

Risposte:


3

Non sembra esserci un'opzione per questo.

La funzione di trovare un buffer non consentono di specificare se guardare in tutti i fotogrammi o solo nel fotogramma corrente:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

Tuttavia, l'implementazione di switch-to-bufferpassa 0 per l' ALL-FRAMESargomento, il che significa che cercherà in tutti i frame.

Suppongo che potresti usare un :aroundconsiglio get-buffer-windowper sostituire quell'argomento, se davvero volessi prevenire questo comportamento a livello globale ... ma sospetto che ciò spezzerebbe altre cose.


Questo è quello che temevo. Potrei provare i consigli aggiuntivi su get-buffer-window, ma non mi piace troppo consigliare funzioni ampiamente utilizzate.
Monsieur

Sì, sembra che possa causare problemi. Potresti voler controllare il popwinpacchetto come un modo per gestire buffer speciali - non sei sicuro che oltre alla configurazione ido che hai già trovato possa essere sufficiente.
glucas,

1
In realtà, potrei aver perso la barca qui. Dai un'occhiata alle sezioni del manuale di Emacs su "Scelta della finestra" e "Visualizzazione delle funzioni di azione". In particolare, l'uso di inhibit-switch-framesembra utile. (Non ho ancora avuto la possibilità di sperimentare queste opzioni.)
Glucas,


Grazie, quel thread SE è molto utile. La documentazione per display-buffere display-buffer-alistmi fa male alla testa, ma è solo una questione di tempo fino a quando non trovo una soluzione.
Monsieur
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.