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)

Работает это как-то так:
emacs+hunspell русский язык

Если есть проблемы с заменой слов с помощью средней кнопки мыши в flyspell-mode.

Навигация по записям