У меня есть свои словари Hunspell в C:\hunspell\
. Она содержит .dic
и .aff
файлы для трех языков: en_GB
, en_US
, и nb_NO
. Описания, которые я нахожу в Интернете о том, как заставить работать Hunspell в Emacs, приводят меня в замешательство.
Какой минимальный код мне нужен в моем файле инициализации, чтобы иметь возможность использовать эти три словаря hunspell в Emacs?
Я пробовал следующий код, предложенный одним веб-сайтом:
(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
exec-path exec-suffixes 'file-executable-p))
Но когда M-x ispell-change-dictionary
я хочу изменить словарь , я получаю следующее сообщение:
ispell-phaf: Нет подходящей записи для nil.
microsoft-windows
hunspell
Myotis
источник
источник
Ответы:
Настройка Emacs:
Настройка словаря Hunspell:
Запустите
hunspell -D
окно DOS, в котором будут перечислены каталоги, которые ищут словари. Скопируйте свои словари в этот каталог. Это минимальная настройка, которая вам нужна.См. Http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html для получения дополнительной технической информации.
источник
use-package
это(use-package ispell :config (setq ispell-program-name "C:/Program Files (x86)/hunspell-1.3.2-3-w32-bin/bin/hunspell.exe") (setq ispell-local-dictionary "en_US") (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
Я сам столкнулся с этой проблемой некоторое время назад. Если я правильно помню, причина, по которой вы получаете это сообщение об ошибке, заключается в том, что
hunspell
он не может настроить себя в зависимости от текущей среды. Таким образом, чтобы исправить это, вам нужно настроитьhunspell
конкретныеispell
переменные. Следующего кода должно быть достаточно для настройки hunspell для английских словарей:Важной частью является то
ispell-hunspell-dictionary-alist
, что он должен быть заполнен правильным словарным списком, таким как приведенный вispell-local-dictionary-alist
.Есть довольно много деталей, окружающих этот список, хотя. Если вы хотите узнать больше об этом, не стесняйтесь читать
M-x describe-variable
ispell-local-dictionary-alist
.источник
ispell-hunspel-dictionary-alist
. Вместо того, чтобы(require 'flyspell)
вы могли рассмотреть(with-eval-after-load "ispell" ...)
Установите все словари, которые вы хотите, в том месте, где ищет hunspell; найти это с
hunspell -D
. После установки эта команда должна показать их.В файле инициализации добавьте только один из них, например, у меня есть
en_GB
иen_US
словари установлены. Я в своем файле инициализации это:После открытия Emacs просто включите
flyspell-mode
. Emacs должен сказать, что он запускается ispell со словарем по умолчанию. Это означает,en_GB
что в действии, для нашего примера. Теперь, если вы хотите переключиться, просто сделайтеM-x ispell-change-dictionary
и дайте новому словарю имя Egen_US
. Теперь другой словарь должен быть в действии. Это, опять же, будет уведомлено Emacs о том, что он запустил ispell, но на этот раз соen_US
словарем.источник
Предполагая, что вы используете последнюю версию Emacs (24.4 или выше, насколько я помню), все, что вам нужно сделать, это убедиться, что вы используете правильное имя словаря, а Emacs сделает все автоматически.
Основная проблема заключается в том, что Windows использует другой формат описания языка, например, британский английский называется ENG , а американский английский - ENU . Это означает, что ваши файлы словаря должны называться ENU.dic и ENU.aff для американского английского языка, а также ENG.dic и ENG.aff для британского английского.
Также может потребоваться иметь словарь «по умолчанию», или Hunspell может быть не слишком счастлив. Вы также можете установить переменную окружения DICTIONARY для принудительной установки значения по умолчанию.
К сожалению, я не могу понять, как должен называться ваш норвежский словарь. Если вы используете норвежскую локаль в Windows, вы сможете проверить в Emacs, оценив:
Который покажет вам настройки, которые использует Emacs.
источник
Это всего лишь предположение, но, возможно, вам нужно указать, какой язык вы хотели бы использовать в качестве «по умолчанию»:
Значением по умолчанию
ispell-dictionary
являетсяnil
, поэтому, возможно, это является причиной вашей проблемы.источник