EDIT: Deokhwan Kim originalmente señaló que su expresión regular contiene dos comillas dobles consecutivos, y que el paréntesis de cierre )
necesita ser escapado con comillas, así:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\<\\(\\conceito\\)\\>" 1 font-lock-warning-face t)))))
Además de los puntos señaló por Deokhwan Kim, también existen las siguientes dos cuestiones:
se necesitan cuatro backslashs en lugar de dos frente a 'conceito': \\\\conceito
La secuencia de barra invertida \\<
coincide con la cadena vacía solo al comienzo de una palabra, sin embargo, la barra invertida al comienzo de su nuevo comando LaTeX no se considera parte de una palabra, por lo que \\<
no coincidirá.
Tal vez puedas probar:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\(\\\\conceito\\)\\>" 1 font-lock-warning-face t)))
EDIT: Otra buena observación de que Kim hizo Deokhwan es que en este caso particular, que realmente no necesita el paréntesis en absoluto, porque usted está tratando para que coincida con la expresión completa de todos modos. Por lo tanto una alternativa a la última línea podría ser:
'(("\\\\conceito\\>" 0 font-lock-warning-face t)))))
El punto sobre el paréntesis es correcta, pero en realidad se podría ampliar su expresión regular para solo cuando una llave de apertura {
sigue a la palabra "conceito". Pero ya que realmente no quiere destacar que abrazadera, usando subgrupos definidos por paréntesis está el camino a seguir:
(add-hook 'LaTeX-mode-hook
(lambda()
(font-lock-add-keywords nil
'(("\\(\\\\conceito\\)\\s-*{" 1 font-lock-warning-face t)))
Tenga en cuenta que ya estamos probando para una {
que sigue directamente después de "conceito" (a menos que haya espacio en blanco en el medio), ya no necesitamos la prueba para \\>
.
En general, trate M-x re-constructor a las embarcaciones de expresión regular interactiva: puede editar una nueva expresión regular en una pequeña memoria intermedia y ver al instante lo que se destaca en la memoria intermedia desde la que llamó la re-constructor.
Para el registro, en mi publicación eliminada, señalé algunos errores, como comillas dobles consecutivas '" "' y faltantes \\ antes ')', en la expresión regular en la pregunta. Pero Thomas me notificó que todavía me acechaban otros problemas y que mi solución no era suficiente. Así que eliminé mi publicación para evitar complicaciones. – dkim
¡Buen trabajo! Una sugerencia más es que, en el último ejemplo, '\\ s- *' es mejor que no esté allí. En LaTeX, un argumento debería seguir inmediatamente a su macro sin ningún espacio entre ellos, ¿no es así? – dkim
@Deokhwan Kim - No, el espacio en blanco está bien entre el comando y el '{'. – Thomas