Проверка орфографии в 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"))
Другие вопросы по тегам