2010-02-10 9 views
5

Quando si impostano le parole chiave di blocco font per una modalità GNU/Emacs, è possibile evidenziare più espressioni secondarie di un'espressione regolare con un singolo matcher? Quello che mi piacerebbe fare è qualcosa sulla falsariga di:Font-lock-keywords: evidenziando più sottoespressione

("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face)) 

Quale sarebbe la sintassi corretta per una cosa del genere - o devo dividerlo in due distinte matchers?

risposta

5

provare qualcosa di simile:

("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face)) 

(cioè uguali ai suoi, ma senza le virgolette in più).

Dico questo perché ho vari bit come questo nelle mie definizioni personalizzate di parole chiave-blocco-parole chiave. Alcuni di loro hanno nil t alla fine del secondo, in questo modo:

("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face nil t)) 

che corrispondono alle bandiere opzionali OVERRIDE e LAXMATCH e possono essere necessarie a seconda delle circostanze precise.

La documentazione per font-lock-keywords discute questo in modo approfondito, anche se non è sempre il più semplice da seguire - trovo più semplice copiare l'impostazione di lavoro di qualcun altro, ad esempio il valore esistente di c-font-lock-keywords-3, ad esempio.

Problemi correlati