Si usted está consiguiendo que UTF-8 de codificación de errores, entonces significa que el proceso se está hunspell
ejecuta con un argumento que especifica alguna otra codificación. Cuando reviso mi lista de procesos, por ejemplo, veo este proceso hijo a Emacs una vez que se ha puesto en marcha:
/usr/bin/hunspell -a -B -i iso-8859-1
La función ispell-get-coding-system
es lo que decide qué codificación a utilizar, lo que lo hace mediante el examen de la gran ispell-dictionary-alist
variables que parece enumerar todos los idiomas conocidos por Emacs. La función normalmente toma el último símbolo de la entrada que coincide con el idioma que desea verificar. Por alguna razón que no me molesté en averiguar, esta lista tiene iso-8859-1
para inglés, en lugar de, ya sabes, prestar atención a la codificación en el búfer real. Lo sé, parece no tener sentido. Pero continuamos.
Se podría pensar que usted podría anular esta estableciendo su propio valor para la variable ispell-dictionary-alist
y utilizar utf-8
como el último de los ocho parámetros:
;; I could never get Emacs to pay attention to this
(setq ispell-dictionary-alist
'((nil "[A-Za-z]" "[^A-Za-z]" "[']" t ("-d" "en_US") nil utf-8)))
pero nunca pude conseguir este ajuste para ponerse a trabajar, si es o no lo hice un primer (load-library "ispell")
en mi .emacs
, o si lo hice en el interior de uno de los:
;; Did not work for me either.
(eval-after-load "ispell" '(progn ...))
de cualquier manera, si yo puso en marcha un Emacs frescas y entré *scratch*
y mecanografió ispell-dictionary-alist
y presionó Control-J, luego surgió la enorme lista original que crea ispell
. Cada vez.
Así que decidí hacer un análisis de final de todo el problema de esta gran lista y simplemente reescribir la función ispell-get-coding-system
para devolver siempre utf-8
. Claro, esto me morderá la próxima vez que abro un archivo que realmente está en iso-8859-1
, pero de todos modos nunca hago eso, ¿verdad?
Para implementar esto con éxito en mi archivo .emacs
(bueno, ~/.emacs.d/init.el
pero eso lleva tanto a escribir una respuesta de desbordamiento de pila) requiere este código:
;; It works! It works! After two hours of slogging, it works!
(if (file-exists-p "/usr/bin/hunspell")
(progn
(setq ispell-program-name "hunspell")
(eval-after-load "ispell"
'(progn (defun ispell-get-coding-system() 'utf-8)))))
ahora tengo hunspell
correcta y funciona como un campeón! Lamentablemente, toda la razón por la que trabajé para que funcionase fue con la esperanza de que su diccionario fuera mucho mayor que el de Aspell, pero veo que está resaltando algunas de las mismas palabras. Oh, bueno, intentaré otro enfoque.Básicamente quiero un corrector ortográfico que pueda cargarse con el diccionario /usr/share/dict/american-english-huge
que está disponible en Ubuntu, pero aspell
murió de muchas maneras cuando traté de expandir sus horizontes. Tal vez tenga más suerte con hunspell
- ya veremos.
GRACIAS. Eso es increíble. Para usar un idioma como el sueco, hunspell es mucho mejor que i/aspell , e incluso si tengo que tener cuidado con los archivos no codificados en utf8, esto sigue siendo impresionante. ¡Gracias! – monotux
Al intentar el enfoque que describes pero me sale un error. Primero hice 'sudo apt-get install hunspell' luego inserté el bloque de código en mis .emacs (el último con el constructo 'if'). Cuando trato de deletrear, recibo lo siguiente en \ * Mensajes \ *:' Comenzando nuevo proceso de Ispell [inglés] ... Error al habilitar Modo Flyspell: (No se pueden abrir los archivos de afijo o diccionario para el diccionario llamado "inglés". @ (#) Internat ional Ispell versión 3.2.06 (pero realmente Hunspell 1.2.14)) '. ¿Cuál es el problema? –
me ayudó mucho, gracias! Aunque tardó 2 horas encontrar esta respuesta :) – daroczig