hunspell / emacs на OS X 10.9
Я не могу получить aspell, чтобы построить, поэтому я пытаюсь hunspell. Получил Hunspell построен. Настройте.emacs так, чтобы emacs мог (и действительно) находил исполняемый файл, вот так:
;;; Spell checking using hunspell
(setq ispell-dictionary-alist
'((nil "[A-Za-z]" "[^A-Za-z]" "[']" t
("-d" "en_US" "-i" "utf-8") nil utf-8)
("american"
"[A-Za-z]" "[^A-Za-z]" "[']" nil
("-d" "en_US") nil utf-8)
("english"
"[A-Za-z]" "[^A-Za-z]" "[']" nil
("-d" "en_GB") nil utf-8)
("british"
"[A-Za-z]" "[^A-Za-z]" "[']" nil
("-d" "en_GB") nil utf-8)
("norsk"
"[A-Za-zÉÆØÅéæøå]" "[^A-Za-zÉÆØÅéæøå]" "[\"]" nil
("-d" "nb_NO") "~list" utf-8)))
(eval-after-load "ispell"
(progn
(setq ispell-dictionary "english"
ispell-extra-args '("-a" "-i" "utf-8")
ispell-silently-savep t)))
(setq ispell-dictionary "en_US")
(setq ispell-program-name "/usr/local/bin/hunspell")
и это в моем.bash_profile
export DICTIONARY=en_US
export DICPATH=/Users/myname/Applications/en_US
также пытался
export DICTIONARY=en_US
export DICPATH=/Users/gpajer/Applications/
(есть каталог ~/Applications/en_US, в котором находятся файлы словаря)
Но ispell-buffer возвращает что-то вроде
Can't open affix or dictionary flies for dictionary named "english".
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
Hunspell не находит словарь? Есть ли специальное место, где я должен поставить словарь? или как мне сказать emacs/hunspell, где искать словарь?
2 ответа
Обновите Emacs до 24.4, либо установив недавний предварительный тест, либо собрав транк Emacs. Предварительно собранные двоичные файлы для предварительных тестов и ночные сборки транка Emacs доступны в Emacs для Mac OS X, в разделах "Pretests" и "Nightlies" соответственно.
Emacs 24.4 значительно улучшает поддержку Hunspell, и теперь он может использовать Hunspell автоматически с минимальной дополнительной настройкой. В частности, Emacs теперь может находить доступные словари Hunspell и заполнять ispell-dictionary-alist
автоматически. По сути, вам просто нужно следующее, чтобы заставить Emacs использовать hunspell:
(setq ispell-program-name (executable-find "hunspell"))
Вам необходимо явно установить эти словари для Hunspell, в зависимости от того, как вы установили Hunspell. Обычно вам просто нужно поставить соответствующий *.aff
а также *.dic
файлы в ~/Library/Spelling
, Однако получить словари немного сложнее. Лучший способ, вероятно, состоит в том, чтобы загрузить соответствующие расширения LibreOffice и извлечь *.dic
а также *.aff
файлы из файлов OXT, которые по сути являются просто файлами ZIP. По крайней мере, так я и делаю. Там могут быть лучшие источники словарей.
Помимо языковых словарей у вас также должен быть словарь по умолчанию для Emacs. Этот словарь должен быть назван default
, в прямом смысле. Однако создать его достаточно просто. Просто создайте символические ссылки на словари предпочитаемого вами языка:
$ cd ~/Library/Spelling
$ ln -s en_GB.aff default.aff
$ ln -s en_GB.dic default.dic
Это все, что мне нужно, чтобы Hunspell начал работать над своей системой.
Вот моя рабочая установка Emacs 24.4 / OS X 10.9 Hunspell, надеюсь, это поможет.
Во-первых, получите рабочий путь:
(cond
((eq system-type 'darwin)
;; Sane path (OSX doesn't've much on the path when launching not from shell:
(setq path "/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/texbin:/opt/local/bin")
(setenv "PATH" path)
;; Emacs 24.4 seems to need this...:
(mapc (lambda (p) (push p exec-path)) '("/usr/local/bin" "/usr/texbin" "/opt/local/bin"))))
Затем укажите Hunspell и настройте его:
(setq-default ispell-program-name (executable-find "hunspell"))
(setq ispell-dictionary "american"
ispell-extra-args '() ;; TeX mode "-t"
ispell-silently-savep t
)
(add-hook 'ispell-initialize-spellchecker-hook
(lambda ()
(setq ispell-base-dicts-override-alist
'((nil ; default
"[A-Za-z]" "[^A-Za-z]" "[']" t
("-d" "en_US" "-i" "utf-8") nil utf-8)
("american" ; Yankee English
"[A-Za-z]" "[^A-Za-z]" "[']" t
("-d" "en_US" "-i" "utf-8") nil utf-8)
("british" ; British English
"[A-Za-z]" "[^A-Za-z]" "[']" t
("-d" "en_GB" "-i" "utf-8") nil utf-8)))))