2015-10-22 4 views
0

Я хотел бы активировать проверку орфографии в GNU Emacs 24.5.1 (на Mac OS X 11.10). Я сделал следующее:Проверка орфографии Emacs с помощью hunspell: нет проверки орфографии

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.. Как я могу заставить это работать?

Я нашел this и this и this Связанный пост, но все еще не мог решить проблему.

ответ

2

Хорошо, я понял это: Установка переменной окружения DICTIONARY в ~/.bash_profile не работал, но помещение (setenv "DICTIONARY" "en_US") в .emacs решить эту проблему.

0

Я использовал это, чтобы условно загрузить 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")) 
Смежные вопросы