Pregunta

Yo uso Emacs para escribir la mayor parte de mis escritos. Escribo usando reStructuredText, y luego transformarlas al látex después de algún procesamiento previo, ya que escribo mis citas a-La LaTeX. Este es un extracto de una de mis textos (en español):

En \cite[pp.~XXVIII--XXIX]{Crnkovic2002} se brindan algunos riesgos
que se pueden asumir con el desarrollo basado en componentes, los

Este texto es procesado por algunos scripts personalizados que se ocupa de la parte \cite por lo rst2latex pueden hacer su trabajo.

cuando activo flyspell modo que las señales de la mayor parte de las claves de cita como errores de ortografía.

¿Cómo puedo saber flyspell no SpellCheck cosas dentro de comandos \cite.

Por otra parte, ¿cómo puedo combinar el primer modo y Flyspell, de manera que en primer lugar en modo mantendría flyspell de corrección ortográfica lo siguiente?

  • Resto comenta
  • código reST literal
  • parámetros y argumentos directiva resto
  • Resto contenidos directiva prima

¿Alguna idea?

¿Fue útil?

Solución

Se puede configurar la variable ispell-parser al valor 'tex modo que flyspell ignorará (la) secuencias tex. Para ello, puede configurar manualmente en cada búfer de esta manera:

M-: (setq 'ispell-parser 'tex)

o se escribe una pequeña función que va a hacer eso para usted. Ponga lo siguiente en el fichero .emacs:

(defun flyspell-ignore-tex ()
  (interactive)
  (set (make-variable-buffer-local 'ispell-parser) 'tex))

A continuación, todavía puede invocar de forma manual, utilizando

M-x flyspell-ignore-tex

o se puede añadir un gancho que las llamadas que funcionan de forma automática cada vez que editar un archivo de un tipo determinado. Se podría hacer esto último mediante la adición de la función que acaba de definir 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, los comentarios resto, no es fácilmente alcanzable. Se hace evidente cuando se piensa en la forma Flyspell obras: comprueba el texto sobre una base palabra por palabra. Por eso, flyspell-word sólo se basa en una palabra a la vez que se envía a un proceso de ispell ejecuta en segundo plano. El proceso de ispell hace la búsqueda de diccionario y devuelve si la palabra actual es correcta. Si flyspell-word tuvo que comprobar cada vez si es o no la palabra actual es parte de un comentario u otra región que no debe ser comprobado, sería bastante lento, ya que incluiría un poco de búsqueda a través de la memoria intermedia.

Ahora, por supuesto, uno podría acercarse a esto un poco más inteligente y encontrar primero las regiones no de comentarios, etc., y luego hacer la palabra, palabra por chequeando solo en aquellas partes que están fuera de esas regiones - pero, por desgracia, que de no de la manera flyspell se implementa.

Si se puede hacer sin la parte de "volar", sin embargo, ispell-modo tiene un mecanismo para personalizar las regiones de un tampón se pueden saltar. Esto se hace a través de la ispell-skip-region-alist variable. Pero a pesar de flyspell modo funciona con ispell-modo, por las razones expuestas más arriba que la variable no es utilizado por flyspell-mode.

Otros consejos

También puede utilizar flyspell-generic-check-word-predicate como he explicado en esta pregunta en super usuario.

(filtro tex de aspell puede hacer exactamente lo que quiere - pero si quieres una solución más general)

A pesar de que estoy utilizando el código de abajo para persuadir a flyspell no bandera ciertas palabras con números en ellos, se puede utilizar este tipo de gancho para que coincida con cierto contexto.

looking-at comienza en la posición que desee. - por lo que es posible que desee buscar hacia atrás para el inicio / final de cualquier contexto que se preocupan por

(when "another attempt to accept certain words flyspell/ispell/aspell flags as incorrect"
  (defun flyspell-ignore-WordNumber99-stuff/ag (beg end info)
    (save-excursion
      (goto-char beg)
      (cond
    ((or
       (looking-at "\\bWord1\\b")
       (looking-at "\\bWord99Foo\\b")
       )
      t)
    (t nil)
    )
      )
    )
  )

(add-hook 'flyspell-incorrect-hook 'flyspell-ignore-WordNumber99-stuff/ag)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top