2011-09-13 5 views

risposta

6

Suppongo che tu stia scrivendo una modalità principale, ma font-lock-add-keywords funziona anche nelle modalità minori . Controlla la sua documentazione con C-h f RET font-lock-add-keywords.

(define-derived-mode my-mode text-mode "mymode" 
    ;; some init code 
    (font-lock-add-keywords nil '(("\\[\\(.*\\)\\]" 
           1 font-lock-warning-face prepend))) 
    ;; some more init code 
) 
2

Faresti sia necessario estendere la modalità siete in per incorporare una nuova regola di sintassi o si può semplicemente utilizzare highlight-regexp per l'evidenziazione rapida e sporca.

+0

per estendere la modalità - che è quello che voglio. La modalità che ho intenzione di estendere è una semplice, anch'essa scritta da me (ha tab-completion, evidenziazione della sintassi e commenti intelligenti tramite dwim). 'hightlight-regexp' sicuramente funzionerà. Grazie per la tua risposta. – Adobe

+0

Ho esteso la modalità di markdown di base [qui] (https://github.com/nibrahim/Hyde/blob/master/hyde-md.el). Puoi guardare quello per come. Non fa alcuna evidenziazione della sintassi, ma è possibile ottenerlo aggiungendo alla variabile 'font-lock-defaults' nella tua modalità. –

+0

BTW: come si specifica un colore? Questo non lo specifica: '(highlight-regexp" \\ [\\ (. +? \\) \\] "'hi-red)' – Adobe

2

Quindi, ecco un riassunto: Per aggiungere nuove parole chiave a una modalità

(font-lock-add-keywords 'emacs-lisp-mode 
    '(("foo" . font-lock-keyword-face))) 

Può avere espressioni regolari:

(font-lock-add-keywords 'emacs-lisp-mode '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 

(questo rende fonte di tutto ciò che tra parentesi quadre di essere di un determinato colore)

Per la modalità corrente e la sessione corrente di emacs si può solo valutare la seguente:

(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 

(nota - non si specifica una modalità qui)

Per renderlo permanente è possibile aggiungerlo come un gancio per la modalità:

(add-hook 'bk-grmx-mode-hook 
      (lambda() 
      (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 
     ) 
) 

si può anche aggiungere che a una specifica modalità:

(define-derived-mode bk-grmx-mode fundamental-mode 
    (setq font-lock-defaults '(bk-grmx-keyWords)) 
    ;; the next line is added: 
    (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 
    (setq mode-name "bk-grmx-mode")