Tengo mis diccionarios hunspell en C:\hunspell\. Contiene .dicy .affarchivos para tres idiomas: en_GB, en_US, y nb_NO. Las descripciones que encuentro en la web sobre cómo hacer que el hunspell funcione en Emacs me confunden.
¿Cuál es el código mínimo que necesito en mi archivo init para poder usar estos tres diccionarios hunspell en Emacs?
He intentado el siguiente código sugerido por un sitio web:
(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
exec-path exec-suffixes 'file-executable-p))
Pero cuando quiero cambiar el diccionario M-x ispell-change-dictionary, recibo el siguiente mensaje:
ispell-phaf: no hay entrada coincidente para nil.
microsoft-windows
hunspell
miotis
fuente
fuente

Respuestas:
Configuración de Emacs:
Configuración del diccionario Hunspell:
Ejecutar
hunspell -Den la ventana DOS que enumerará los directorios hunspell buscando diccionarios. Copie sus diccionarios a ese directorio. Esta es la configuración mínima que necesita.Consulte http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html para obtener más detalles técnicos.
fuente
use-packagees(use-package ispell :config (setq ispell-program-name "C:/Program Files (x86)/hunspell-1.3.2-3-w32-bin/bin/hunspell.exe") (setq ispell-local-dictionary "en_US") (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))Me encontré con este problema hace un tiempo. Si recuerdo correctamente, la razón por la que recibe ese mensaje de error es porque
hunspellno puede configurarse en función del entorno actual. Entonces, para solucionarlo, debe configurar las variableshunspellespecíficasispell. El siguiente código debería ser suficiente para configurar hunspell para los diccionarios de inglés:La parte importante es
ispell-hunspell-dictionary-alistque debe rellenarse con una lista de diccionario adecuada, como la que se proporcionaispell-local-dictionary-alist.Sin embargo, hay muchos detalles en torno a esta lista. Si desea saber más al respecto, no dude en leer
M-x describe-variableispell-local-dictionary-alist.fuente
ispell-hunspel-dictionary-alist. En lugar de(require 'flyspell)considerarlo(with-eval-after-load "ispell" ...)Instale todos los diccionarios que desee en la ubicación en la que hunspell busca; encuentra esto con
hunspell -D. Una vez instalado, este comando debería mostrarlos.En el archivo init, agregue solo agregue uno de ellos, por ejemplo, tengo instalado
en_GByen_USdiccionarios. Tengo, en mi archivo init, esto:Al abrir Emacs, solo habilítelo
flyspell-mode. Emacs debería decir que se inicia ispell con el diccionario predeterminado. Esto significa queen_GBestá en acción, para nuestro ejemplo. Ahora, si quieres cambiar, solo hazloM-x ispell-change-dictionaryy dale el nuevo nombre del diccionario Egen_US. Ahora el otro diccionario debería estar en acción. Esto, nuevamente, será notificado por Emacs diciendo que comenzó ispell pero esta vez con elen_USdiccionario.fuente
Suponiendo que está utilizando una versión reciente de Emacs (24.4 o superior, según recuerdo), todo lo que necesita hacer es asegurarse de estar usando el nombre de diccionario correcto, y Emacs hará el resto automáticamente.
El problema principal es que Windows usa un formato de descripción de idioma diferente, por ejemplo, el inglés británico se llama ENG y el inglés de EE . UU. Es ENU . Esto significa que sus archivos de diccionario deben llamarse ENU.dic y ENU.aff para inglés de EE. UU., Y ENG.dic y ENG.aff para inglés británico.
También puede ser necesario tener un diccionario "predeterminado" o un hunspell puede no ser muy feliz. También puede establecer la variable de entorno DICCIONARIO para forzar un valor predeterminado.
Lamentablemente, no puedo entender cómo debe llamarse su diccionario noruego. Si está utilizando la configuración regional noruega en Windows, debería poder verificar dentro de Emacs evaluando:
Lo que le mostrará la configuración que Emacs está utilizando.
fuente
Esto es solo una suposición, pero tal vez necesite decir qué idioma le gustaría usar como "predeterminado":
El valor predeterminado de
ispell-dictionaryesnil, por lo que puede ser esta la causa de su problema.fuente