Проверка орфографии в Emacs с использованием Hunspell: проверка не выполняется
Я хотел бы активировать проверку орфографии в GNU Emacs 24.5.1 (в Mac OS X 11.10). Я сделал следующее:
1) brew install hunspell
2) cd ~/Library/Spelling
wget http://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.aff
wget http://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_US.dic
(hunspell -D
правильно работает из терминала). В ~/.bash_profile
Я поставил export DICTIONARY=en_US
и мой ~/.emacs
показывает:
;; Activate Hunspell
(when (executable-find "hunspell")
(setq-default ispell-program-name "/usr/local/bin/hunspell")
(setq ispell-really-hunspell t))
;; Activate flyspell
(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'message-mode-hook 'flyspell-mode)
(setq flyspell-issue-message-flag nil)
(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode))
'(c-mode-common-hook R-mode-hook emacs-lisp-mode-hook))
Тем не менее, когда я открываю любой .txt
файл, я не вижу ошибок в проверке орфографии или что-то еще... и M-x ispell
шоу ispell-parse-hunspell-affix-file: ispell-phaf: No matching entry for nil.
, Как я могу заставить это работать?
Я нашел это и это, и этот связанный пост, но все еще не мог понять проблему.
2 ответа
Хорошо, я понял это: установка переменной среды DICTIONARY
в ~/.bash_profile
не работал, но положить (setenv "DICTIONARY" "en_US")
в .emacs
решил проблему.
Я использовал это, чтобы условно загрузить hunspell
если flyspell
может быть загружен через use-package
с помощью en_GB
толковый словарь.
Терминальные команды:
brew install hunspell
cd ~/Library/Spelling/
wget http://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_GB.aff
wget http://cgit.freedesktop.org/libreoffice/dictionaries/plain/en/en_GB.dic
ln -s en_GB.dic english.dic
ln -s en_GB.aff english.aff
Тогда в моем скрипте инициализации Emacs:
(use-package flyspell
:hook ((text-mode . flyspell-mode)
(prog-mode . flyspell-prog-mode))
:config
(when (executable-find "hunspell")
(setq ispell-program-name (executable-find "hunspell"))
(setq ispell-really-hunspell t)
(setenv "DICTIONARY" "english"))
(setq ispell-dictionary "english"))