Hunspell — одна из программ для проверки орфографии в GNU/Linux. Используется в firefox, openoffice и еще много где — поэтому мой выбор пал именно на неё. Словари для hunspell состоят из двух файлов:
- словарь.dic — содержит в себе список слов, по одной в строке.
- словарь.aff — различные необязательные флаги и атрибуты, в том числе таблицы замены слов.
Установка русского словаря для hunspell
Если поискать, то в интернете можно найти много словарей для hunspell, однако они обычно предназначены для firefox или open/libreoffice. На деле *.xpi или *.oxp представляют собой ZIP-архивы, содержащие в себе нужные нам файлы.
К примеру, понравившийся мне словарик я брал отсюда:
$ wget http://ftp.mozilla-russia.org/dictionaries/ru-en_spell_dictionary.xpi
Приглянулся мне он тем, что содержит в себе как русские, так и английские слова. Не нужно особо мудрить с их переключением. Минус — слишком мало альтернатив для замены неправильно написанных слов. Однако мне было важно — именно проверка ачепяток, а исправить их я и сам могу.
Затем необходимо распаковать архив:
$ unzip ru-en_spell_dictionary.xpi
После чего скопировать файлы *.dic и *.aff в папку /usr/share/hunspell (при необходимости создав её). Имя словаря выбирается произвольно, но должно совпадать для этих двух файлов. Я не придумал ничего лучше, чем en-ru:
# cp Russian-English.aff /usr/share/hunspell/en-ru.aff
# cp Russian-English.dic /usr/share/hunspell/en-ru.dic
Протестировать работу словаря можно так:
$ echo "ошебка" | hunspell -d en-ru
Настройка проверки орфографии в emacs с hunspell
Теперь необходимо отредактировать файл настройки emacs (~/.emacs), добавив в него следующие строки:
;;если есть программка hunspell, то используем её для проверки орфографии
;;словарь - en-ru
(if (executable-find "hunspell")
(progn
(setq ispell-program-name "hunspell")
(setq ispell-really-aspell nil)
(setq ispell-really-hunspell t)
(setq ispell-dictionary "en-ru")
)
)
;;режим работы с файлами в emacs по умолчанию - текстовый
(setq default-major-mode 'text-mode)
;;включаем проверку синтаксиса на лету в emacs с помощью flyspell-mode
(dolist (hook '(text-mode-hook))
(add-hook hook (lambda () (flyspell-mode 1)))
)
;;назначаем на Ctrl+l интерактивную проверку орфографии
(global-set-key (kbd "C-l") 'ispell)
Если есть проблемы с заменой слов с помощью средней кнопки мыши в flyspell-mode.