¿Cómo puedo usar varios diccionarios con el corrector ortográfico de Emacs? Específicamente, quiero usar un diccionario de inglés británico y un diccionario de inglés médico al mismo tiempo.
fuente
¿Cómo puedo usar varios diccionarios con el corrector ortográfico de Emacs? Específicamente, quiero usar un diccionario de inglés británico y un diccionario de inglés médico al mismo tiempo.
Hunspell puede revisar la ortografía con varios diccionarios, y puede configurarlo para que funcione con Emacs. Así es como lo hago en OS X 10.11, con Emacs 25.0. No funcionará con Emacsen anteriores.
Instalar Hunspell
brew install hunspell
Descargue los diccionarios Hunspell de LibreOffice y OpenMedSpel .
cd ~/Downloads/
curl http://extensions.libreoffice.org/extension-center/english-dictionaries/releases/2016.04.01/dict-en.oxt > dict-en.oxt
unzip dict-en.oxt en_GB.aff en_GB.dic
curl -L https://addons.mozilla.org/en-US/firefox/downloads/latest/6526/addon-6526-latest.xpi > openmedspel.xpi
unzip openmedspel.xpi dictionaries/OpenMedSpel.{aff,dic}
mv dictionaries/OpenMedSpel.dic en_US-med.dic
mv dictionaries/OpenMedSpel.aff en_US-med.aff
Pon los diccionarios en ~/Library/Spelling/
.
mv *.aff *.dic ~/Library/Spelling/
Agregue esto a ~/.emacs/init.el
:
(with-eval-after-load "ispell"
(setq ispell-program-name "hunspell")
(setq ispell-dictionary "en_GB,en_US-med")
;; ispell-set-spellchecker-params has to be called
;; before ispell-hunspell-add-multi-dic will work
(ispell-set-spellchecker-params)
(ispell-hunspell-add-multi-dic "en_GB,en_US-med"))
ispell-hunspell-add-multi-dic
parece no estar presente en versiones anteriores de ispell.el
, incluso la de Emacs 24.5. Tuve que descargar el archivo más nuevo en github.com/emacs-mirror/emacs/blob/master/lisp/textmodes/… y compilarlo en bytes nuevamente para que funcione.
Symbol’s function definition is void: ispell-hunspell-add-multi-dic
aunque estoy seguro /usr/share/emacs/25.1.50/lisp/textmodes/ispell.elc
, la función está presente. ¿Alguna idea de cómo pudo haber sucedido? Gracias.
ispell.el
en /usr/share/emacs/site-lisp/
la sombra de su más reciente ispell.el
en Emacs25 ... Ver unix.stackexchange.com/questions/28483/... para cualquiera que pudiera encontrarse con el mismo problema.
Supongamos que ya ha descargado en_US-med.dic y en_US-med.aff y ha instalado hunspell
Paso 1, ejecute hunspell -D
en shell, que le dirá al directorio donde hunspell busca diccionarios, copie en_US-med.dic y en_US-med.aff a ese directorio.
Paso 2, inserte el siguiente código en ~ / .emacs,
(setq ispell-program-name "hunspell")
;; you could set `ispell-dictionary` instead but `ispell-local-dictionary' has higher priority
(setq ispell-local-dictionary "en_US")
(setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US,en_US-med") nil utf-8)))
De hecho, pasamos la opción "-d en_US, en_US-med" a la CLI de hunspell para que pueda usar DOS diccionarios "en_US" y "en_US-med" al mismo tiempo.
Las opciones "-d" están documentadas en el manual hunspell ( man hunspell
en shell)
Aquí está el texto citado del manual hunspell:
-d en_US,en_geo,en_med,de_DE,de_med
en_US and de_DE are base dictionaries, they consist of aff and dic
file pairs: en_US.aff, en_US.dic and de_DE.aff, de_DE.dic. En_geo,
en_med, de_med are special dictionaries: dictionaries without affix
file. Special dictionaries are optional extension of the base dictio‐
naries usually with special (medical, law etc.) terms. There is no
naming convention for special dictionaries, only the ".dic" extension:
dictionaries without affix file will be an extension of the preceding
base dictionary (right order of the parameter list needs for good sug‐
gestions). First item of -d parameter list must be a base dictionary.
Probado en Emacs 24.3, Debian 7 con la palabra "fibrocondritis".
Debería funcionar en Emacs 23+ en cualquier sistema operativo .
Tenga en cuenta que en Windows la forma más fácil de decirle al ejecutable hunspell que la ruta de búsqueda del diccionario es configurar la variable de entorno DICTPATH
(está documentado en el manual hunspell). Es muy posible que el ejecutable hunspell de Cygwin / MSYS2 solo reconozca la ruta en formato UNIX .
-d
opción.
helm-flyspell
de alguna manera parece que solo usa el diccionario con el idioma del sistema.
flyspell
?flyspell
.flyspell
pero no tiene que hacerlo. De esa manera, las respuestas pueden ser relevantes para más personas.