2011-08-26 20 views
13

Una domanda è già stata posta how to reload a .emacs file after changing it.Ricarica .emacs per tutti i buffer attivi

Le soluzioni proposte dovevano utilizzare M-x load-file o M-x eval-region RET nell'area modificata.

Nessuna di queste soluzioni ha effetto su altri buffer aperti per me. C'è un modo per ricaricare il file .emacs per tutti i buffer aperti?

Devo anche notare che lo M-x load-file non ha l'effetto desiderato per i motivi delineati nei commenti a that answer.

risposta

18

Il file .emacs è una configurazione globale che viene valutata una sola volta. Non viene applicato a ciascun buffer singolarmente.

Il modo in cui effettivamente si ottiene ciò che si desidera dipende in realtà da quali sono questi cambiamenti .emacs. Alcune eli saranno effettive solo la prima volta che viene valutata; o quando un buffer cambia le modalità principali; o quando viene caricato un file; ecc, ecc ...

Se si desidera ricaricare alcuni o tutti i buffer di file, ibuffer fa che abbastanza facile:

  • MxibufferRET per avviare ibuffer (vi consiglio questo legame a CxCb).
  • /f.RET per filtrare in base al nome file regexp . in modo da corrispondere a qualsiasi nome file.
  • m (su [default]) per contrassegnare tutti i buffer filtrati.
  • V (maiuscolo) per ripristinare tutti i buffer contrassegnati.

o si potrebbe sostituire i passaggi 2 + 3 con M-xibuffer-mark-by-file-name-regexpRET.RET. Si potrebbe desiderare di associare quel comando per *f:

;; Bind `ibuffer-mark-by-file-name-regexp' to *f 
(eval-after-load "ibuffer" 
    '(define-key ibuffer-mode-map (kbd "* f") 'ibuffer-mark-by-file-name-regexp)) 

tipo *c-h per vedere tutte le altre ibuffer-mark-* comandi che sono legati per impostazione predefinita.

3

Questo può colpire come la forza bruta, ma

  • sarà certamente ricaricare il file di init (si pensi alternatives to .emacs)
  • si ricaricherà tutti i buffer aperti (a condizione che si sta utilizzando desktop, che si dovrebbe)
  • è facile

    C-x C-c 
    emacs --debug-init & 
    
+1

Tieni presente che desktop.el ripristinerà alcune cose (ad es. principali e secondarie e variabili locali) come erano originariamente, piuttosto che come sarebbero se il buffer fosse creato di nuovo. Se l'obiettivo è applicare nuove impostazioni a questi buffer, questo potrebbe essere un impedimento. – phils

Problemi correlati