2011-09-13 5 views

Respuesta

6

Supongo que está escribiendo un modo principal, pero font-lock-add-keywords funciona también en los modos menores . Consulte su documentación 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

Se podría o bien tienen que extender el modo que está en incorporar una nueva regla de sintaxis o simplemente puede utilizar para poner de relieve highlight-regexp rápido y sucio.

+0

extender el modo - que es lo que quiero. El modo que voy a extender es simple: también lo escribí yo (tiene tabulación, resaltado de sintaxis y comentarios inteligentes a través de dwim). 'hightlight-regexp' seguramente funcionará. Gracias por tu respuesta. – Adobe

+0

He extendido el modo de reducción básica [aquí] (https://github.com/nibrahim/Hyde/blob/master/hyde-md.el). Puedes ver eso de cómo. No hace ningún resaltado de sintaxis, pero probablemente pueda obtenerlo agregando a la variable 'font-lock-defaults' en su modo. –

+0

BTW: ¿cómo especifico un color? Esto no lo especifica: '(highlight-regexp" \\ [\\ (. +? \\) \\] "'hi-red)' – Adobe

2

Así que aquí está un resumen: Para añadir nuevas palabras clave a un modo

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

Puede tener expresiones regulares:

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

(esto hace que la fuente de todo en corchetes para ser de un color dado)

Para el modo actual y la sesión actual de emacs sólo se puede evaluar lo siguiente:

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

(nota - no especifica un modo aquí)

Para hacerlo permanente puede añadirlo como un gancho al modo:

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

también puede agregarlo a una especificación de modo:

(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") 
Cuestiones relacionadas