2011-07-28 28 views

Respuesta

17

Es probable que, realmente no desea que flyspell-mode esté habilitado para todos los modos, sino que desee flyspell-mode activado para modos que se ocupan principalmente de texto (modo de texto, modo de mensaje, etc.) y flyspell-prog-mode para los modos de programación (C/C++, Java, Ruby, Lisp, etc.). La diferencia entre los dos modos es que el primero verifica todas las palabras, mientras que el flyspell-prog-mode solo verifica palabras en comentarios y cadenas (evitando así verificar el código, que generalmente no son palabras).

De cualquier manera, no hay un solo lugar para habilitar flyspell en todos los archivos/almacenamientos intermedios porque se ha escrito para que siempre sea un buffer local. Una aproximación sería

(defun turn-on-flyspell() (flyspell-mode 1)) 
(add-hook 'find-file-hooks 'turn-on-flyspell) 

que no cubra los tampones que no tienen archivos asociados, y yo no aconsejaría a usarlo porque no distingue entre los modos de programación y los modos de programación no-- que creo que es útil.

Debido a que no hay manera de saber si ciertos modos están programando modos o no, tiene que agregar manualmente las personalizaciones para todos los modos de programación que le interesan, con algo como:

(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode)) 
     '(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook 
      ruby-mode-hook java-mode-hook)) 

Nota: los dos trozos de código probablemente no jueguen bien juntos.

Y, en cuanto al XML, flyspell ya tiene personalizaciones para sgml-mode, html-mode y nxml-mode para no revisar las etiquetas (a partir de Emacs 23.2). Si está utilizando una versión anterior de Emacs (de vuelta a 21.1), debería poder agregar esto a su.emacs para obtener el apoyo a nxml-mode:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 
+0

Estoy usando nXml-mode. Entonces, si quiero, por ejemplo, que Flyspell se active automáticamente para todos los archivos de marcación, ¿puedo usar algo como esto? (add-hook 'markdown-mode-hook' flyspell-mode) – mart1n

+0

@ mart1n Agregué más información sobre el manejo de XML, puede necesitar la última línea de actualizaciones si está usando una versión anterior de Emacs (21 o 22). –

+0

En la versión de flyspell incluida con Emacs 24, se incluye la siguiente línea para desactivar también la comprobación de etiquetas xml en modo nxml: (poner 'nxml-mode' flyspell-mode-predicate 'sgml-mode-flyspell-verify) – zev

3

Usted puede añadir lo siguiente a su archivo de inicio de Emacs:

(Flyspell-todos modos)

La descripción de funciones estados:

Uso Flyspell en todos los modos mayores. Se aplica tanto a los almacenamientos intermedios existentes como a los almacenamientos intermedios que crea posteriormente. Desactiva `flyspell-text-modes ' si está activado.

EDIT: Al parecer la función anterior sólo se incluye en la versión de flyspell que está en Emacs 24. Si no puede utilizar esa versión, en su lugar debe utilizar la solución sugerida por Trey a "semi-global" habilitar flyspell. Para desactivar la etiqueta XML comprobar con nxml, se puede añadir la siguiente línea a su archivo de inicio de Emacs:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 

Nota: Esta línea ya está en la flyspell.el incluido en Emacs 24.

+0

¿Dónde se define esto? No lo veo en el último flyspell.el (1.70) http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html ni el enviado con Emacs 23.2. –

+0

^También mi pregunta, no veo tales opciones documentadas en ninguna parte. – mart1n

+0

Está en el flyspell.el que se incluye en Emacs 24. – zev

18

La respuesta de esta pregunta que funcionó para mí:

How to enable automatic spell check by default?

Además, parece ser más general, a diferencia de la corriente votaron respuesta. Agregue las siguientes líneas a su .emacs o init.el.

(add-hook 'text-mode-hook 'flyspell-mode) 
(add-hook 'prog-mode-hook 'flyspell-prog-mode) 
+0

Esto funcionó perfectamente para mí, probado en Text WS, Markdown WS, Tex WS y Python WS. Funcionó como se esperaba. –

Cuestiones relacionadas