2011-11-02 15 views
5

Ogni volta che Emacs fallisce con l'evidenziazione della sintassi e la colorazione diventa funky in un buffer. Esiste un modo per forzare Emacs a "ricolorare" la sintassi? Provaci? Non mi importa se ci vuole un momento.Howto force emacs recolor

risposta

8

Penso che M-x font-lock-fontify-buffer farà quello che stai cercando. Oppure selezionare una regione e fare M-o M-o (o M-x font-lock-fontify-block).

+0

Grazie Jon! Ha funzionato alla grande Sapevo che doveva esserci solo un po 'di vocabolario di Emacs che mi mancava: "Fontify". – sligocki

+0

Nessun problema! Sono contento che sia stato utile. –

+0

questo non tiene (attualmente) conto delle modifiche apportate dopo aver caricato un buffer chiamando (ad esempio nel buffer * scratch *) "font-lock-add-keywords". Affinché questi vengano applicati, è necessario eseguire 'M-x normal-mode' o' M-x revert-buffer'. – Mark

0

Una volta ho scritto la seguente semplice funzione per ripristinare il buffer nella sua modalità naturale, riconfigurarlo, portare la linea in cui il cursore si trova al centro dello schermo, disabilitare la barra dei menu, disabilitare la barra degli strumenti e spostare la barra di scorrimento a sinistra.

(defun --normal-mode-no-gimmicks() 
    "Enable buffer `normal-mode' and refontify. 
Disable frame menu, toolbar, scrollbars." 
    (interactive) 
    (menu-bar-mode 0) 
    (tool-bar-mode 0) 
    (set-scroll-bar-mode 'left) 
    (toggle-scroll-bar 1) 
    (normal-mode) (recenter-top-bottom) 
    (font-lock-fontify-buffer)) 

Questo può essere molto utile quando si cambia la modalità, Emacs mostra improvvisamente la barra dei menu o qualcos'altro va storto. Quindi devo semplicemente premere M-g g per curarlo.

(global-set-key [?\M-g ?g] '--normal-mode-no-gimmicks) 

Non sapevo di M-o M-o; sembra che questo potrebbe essere un legame chiave migliore per questa funzione.