Estoy tratando de entender cómo funcionan las tablas de sintaxis, pero mi modo mayor mínimo no resalta nada.
He escrito el siguiente elisp, que se supone que resalta los comentarios:
(defconst my-yaml-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?# "<" table)
(modify-syntax-entry ?\n ">" table)
table)
"Syntax table for `my-yaml-mode'.")
(define-derived-mode my-yaml-mode fundamental-mode "My YAML"
"testing"
:syntax-table my-yaml-mode-syntax-table)
Sin embargo, dado un archivo:
# foo
# bar
baz
Si activo mi modo mayor con M-x my-yaml-mode
, no obtengo ningún resaltado. C-u C-x =
muestra que no se han aplicado caras.
elisp
major-mode
syntax-highlighting
Wilfred Hughes
fuente
fuente
M-;
Inserta correctamente un#
? En caso afirmativo, se aplica la tabla de sintaxis. Debe buscar en las especificaciones de bloqueo de fuente para obtener resaltado de sintaxis.M-;
está vinculado acomment-dwim
newcomment.el, que utiliza encomment-start
lugar de la tabla de sintaxis. AIUI#
presionarC-u C-x =
, la salida debe contener la líneasyntax: < which means: comment
.font-lock-mode
sumy-yaml-mode
búfer.:)
Respuestas:
Es correcto, pero no se refontifica solo porque cambias los modos principales.
Habilite su modo principal y coloque el cursor en el comentario y luego ejecute M-x
eval-expression
(syntax-ppss-context (syntax-ppss (point)))
, debería producir un comentario y verá que la tabla de sintaxis está configurada correctamente.Una solución simple sería llamar
(font-lock-fontify-buffer)
al habilitar su modo.fuente