Puede establecer la variable ispell-parser
en el valor 'tex
para que flyspell omita las secuencias de tex (la). Para ello, puede configurar manualmente en cada búfer de este modo:
M-: (setq 'ispell-parser 'tex)
o escribir una pequeña función que hará que para usted. Ponga lo siguiente en el fichero .emacs:
(defun flyspell-ignore-tex()
(interactive)
(set (make-variable-buffer-local 'ispell-parser) 'tex))
entonces todavía puede invocar de forma manual, utilizando
M-x flyspell-ignore-tex
o se podría añadir un gancho que llama a la función que automáticamente cada vez que se edita un archivo de una cierto tipo. Haría lo último agregando la función recién definida a su auto-mode-alist
. Dicen los nombres de archivo por lo general terminan con ".rst", a continuación, añadir esta línea a su fichero .emacs:
(add-to-list 'auto-mode-alist '("\\.rst$" . flyspell-ignore-tex))
En cuanto a la segunda parte de su pregunta: hacer flyspell-modo de ignorar las regiones más grandes, tales como, por ejemplo, REVISAR comentarios, no es fácilmente alcanzable. Se vuelve claro cuando piensas en la forma en que funciona el flyspell: verifica el texto palabra por palabra. Para eso, flyspell-word
solo mira una palabra a la vez que envía a un proceso ispell que se ejecuta en segundo plano. El proceso ispell realiza la búsqueda del diccionario y devuelve si la palabra actual es correcta o no. Si flyspell-word
tuviera que verificar cada vez si la palabra actual es parte de un comentario u otra región que no debería verificarse, sería bastante lento, porque eso incluiría bastante búsqueda a través del búfer.
Ahora, por supuesto, uno podría acercarse a esto un poco más inteligente y primero encontrar las regiones sin comentarios, etc. y luego hacer la verificación palabra por palabra solo en las partes que están fuera de esas regiones, pero desafortunadamente, esa no es la forma en que se implementa flyspell.
Sin embargo, si puede prescindir de la parte "volar", ispell-mode tiene un mecanismo para personalizar las regiones de un búfer que se pueden omitir. Esto se hace a través de la variable ispell-skip-region-alist
. Pero a pesar de que el modo flyspell funciona a partir del modo ispell, por los motivos descritos anteriormente, esa variable no es utilizada por el modo flyspell.
Thomas, ¡muchas gracias! He usado el modo ispell en el pasado, pero el flyspell me queda mejor en este momento. Sin embargo, después de leer el documento 'ispell-skip-region-alist', creo que tendría que programar una función para detectar el final del comentario. Todavía no estoy tan familiarizado con Emacs Lisp. De todos modos, el método 'ispell-parser' sigue siendo útil. Tal vez podría comprobar cómo se usa y crear mi propio tweek ispell-parser cuando pueda. – manu
Manu, probablemente no tenga que programar una función de lisp para detectar el comienzo y el final de un comentario. Normalmente, una expresión regular debería ser suficiente, una que coincida con el comienzo y otra que coincida con el final. Pones ambos en paréntesis y lo agregas al 'ispell-skip-region-alist' (lo probé ayer, en realidad no es tan difícil) y hay una buena posibilidad de que' primer-modo' ya contenga las expresiones regulares que estamos buscando un lugar – Thomas
En reStructuredText, el final de la sección de código se detecta cuando se disminuye el nivel de sangría. Entonces, la expresión regular no ayudaría. Saludos cordiales, Manu. – manu