Qual è il modo più veloce per ricaricare il mio file .emacs quando apporto le modifiche in modo che tutti i buffer interessati prendano tali modifiche?


27

Sono consapevole di C-x C-equale sia eval-last-sexpe M-x eval-buffer, ma questi non sono sempre sufficienti per raccogliere tutte le modifiche. A volte è necessario chiudere effettivamente i buffer nelle modalità in cui è stata modificata la configurazione e altre volte è necessario riavviare emacs completamente. Esiste un modo più generale di gestire questo problema? In alternativa, c'è un modo per riavviare emacs senza perdere i buffer aperti esistenti e la cronologia interattiva?


Come @ b4hand inizialmente ha affermato che questa è essenzialmente una domanda basata su una delle domande della proposta: area51.stackexchange.com/proposals/76571/emacs/76588#76588
tarsius

Risposte:


16

No, non è possibile ricaricare la configurazione modificata e fare in modo che Emacs si comporti come se tali modifiche fossero già in atto al momento del caricamento di Emacs. In breve, i pacchetti Emacs hanno troppa libertà perché ciò sia fattibile.

Dici che alcune principali modalità non rilevano le modifiche alla configurazione. Una probabile ragione di ciò è che l'abilitazione della modalità imposta alcune variabili buffer-local in base ai valori correnti di determinate opzioni. Senza riattivare tale modalità in ogni buffer che la utilizza, non verranno prese tutte le modifiche. E anche allora è possibile che alcune cose rimangano invariate. Le probabilità di questo funzionamento sono maggiori quando le opzioni sono personalizzate utilizzando un custom-set-variablesmodulo, ma questo deve essere implementato esplicitamente per ogni singola opzione. E finora abbiamo parlato solo delle principali modalità e delle loro opzioni ...

È possibile tentare di implementare un comando per riattivare la modalità principale di ciascun buffer. Ma è improbabile che abiliterebbe completamente tutte le modifiche e, peggio ancora, disabiliterebbe tutte le modalità minori che hai abilitato manualmente e perderebbe ogni tipo di altro stato.

Per questo motivo, raccomanderei persino di non eval-bufferinserire il tuo file init per raccogliere quante più modifiche possibili. Valuta le impostazioni modificate singolarmente usando eval-last-sexpe se ciò non funziona, allora devi riavviare Emacs.

Come conservare lo stato quando Emacs è chiuso è una domanda diversa che dovrebbe essere posta separatamente.


Ho fatto la domanda di riavvio qui: emacs.stackexchange.com/questions/639/…
b4hand,

3

A volte è necessario chiudere effettivamente i buffer nelle modalità in cui è stata modificata la configurazione

La chiamata normal-modeè un modo utile per riattivare tutte le modalità per un determinato buffer, se hai apportato modifiche a questi o ai loro hook associati.

Puoi anche usare revert-buffer(quali chiamate normal-mode), che è un po 'come ricaricare il file senza scartare la cronologia degli annullamenti.

(È possibile anche caricare un file con C-xC-v, ma che si scarta la tua cronologia di annullamento.)

Nella M-x ibufferdigitazione in maiuscolo Vripristina tutti i buffer contrassegnati, mentre in maiuscolo Ee Wconsente di valutare un elisp arbitrario per tutti i buffer contrassegnati.

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.