2012-03-19 14 views
8

Utilizzo Emacs da molto tempo e l'ho personalizzato parecchio. Ho persino scritto semplici funzioni ELisp e ora sto iniziando a usare sempre più macro. Non sono da nessuna parte vicino a un utente di Emacs ben informato, ma non sono un principiante assoluto.Emacs: spiegazione font-lock

Sto usando nxhtml, mumamo, dired, ido, combinazioni di tasti personalizzate e così tante cose che ho aggiunto nel corso degli anni che non ricordo tutte loro;)

Ma c'è qualcosa che non ho mai veramente capito: cos'è la modalità "font-lock" e perché dovrei preoccuparmi?

Ad esempio, ho letto che nxhtml e nxml, se ricordo correttamente, non usano il blocco dei font. Forse non ho capito bene quella parte, ma in entrambi i casi: cosa cambia per me, come utente?

Oppure prendere ad esempio questa descrizione su spazi bianchi:

Nota che, quando gli spazi bianchi è acceso, gli spazi bianchi salva lo stato font-lock, cioè se font-lock è acceso o spento. E WhiteSpace ripristina lo stato di blocco del carattere quando è disattivato. Quindi, se WhiteSpace è attivato e il blocco font è disattivato, WhiteSpace attiva anche il blocco font per evidenziare gli spazi vuoti, ma il blocco font verrà disattivato quando WhiteSpace è disattivato. Pertanto, attivare il blocco font prima che WhiteSpace sia attivo, se si desidera che il blocco font continui dopo WhiteSpace sia disattivato.

OK, va bene. Lo capisco. Ma cosa cambia se il font-lock continua dopo o no?

Fondamentalmente non lo "capisco", non importa quanto leggo sull'argomento.

Qualsiasi esempio/spiegazione di cosa "font-lock" è in Emacs e perché mi interessa sarebbe il benvenuto!

+1

Il blocco dei caratteri è tutto relativo agli effetti applicati ai caratteri per renderli diversi dall'aspetto normale. La descrizione 'whitespace-mode' che stai citando ti dice che' whitespace-mode' non viola il codice di comportamento dei modi minori, il quale stabilisce che le modalità minori non dovrebbero disturbarsi a vicenda.Anche se 'spazio-spazio' ha bisogno di attivare il blocco dei caratteri per rendere gli spazi diversi, ricorda il precedente stato di blocco dei font per rimettere tutto in ordine quando lo si disattiva. – Francesco

risposta

4

Visualizza il codice con tutti i colori diversi (rosso per commenti, verde per i nomi di classe, ecc.). Se è spento, si ottiene invece il codice in bianco e nero. Apri un po 'di codice ed esegui M-x-font-lock-mode un paio di volte per vederlo accendere e spegnere.

+0

ok ma allora come mai alcune modalità come nxml o nxhtml dicono che non usano il font-lock e tuttavia mostrano le cose in molti colori diversi? –

+0

È quello che stai vedendo? Quando apro un file xml in modalità nxml, posso vedere i colori accendere e spegnere quando accendo la modalità di blocco dei caratteri. –

10

font-lock-mode == sintassi colorata highligthing. global-font-lock-mode abilita il blocco dei caratteri per ogni modalità in Emacs. La versione precedente di Emacs richiedeva l'abilitazione manuale, la versione più recente (credo 23+) lo abilita di default. Non riesco a immaginare che molte persone vorrebbero disattivare questa funzione, poiché rende un certo tipo di contenuto (come il codice sorgente) immensamente più leggibile. Ogni modalità che utilizza il blocco font si basa su un determinato set di facce - una combinazione di proprietà dei caratteri come dimensione, grassetto, sottolineatura, corsivo e colore. I volti di base che la maggior parte delle modalità di utilizzo sono:

font-lock-builtin-face 
font-lock-comment-face 
font-lock-comment-delimiter-face 
font-lock-constant-face 
font-lock-doc-face 
font-lock-doc-string-face 
font-lock-function-name-face 
font-lock-keyword-face 
font-lock-negation-char-face 
font-lock-preprocessor-face 
font-lock-string-face 
font-lock-type-face 
font-lock-variable-name-face 
font-lock-warning-face 

Si può facilmente sostituire i loro valori se vuoi li (o utilizzare un diverso colore-tema). Alcune modalità possono anche definire volti aggiuntivi.