Я хотел бы выполнить проверку орфографии нескольких файлов в большом проекте/репозитории и использовать другой частный словарь, чем мой собственный. Таким образом, я вместо этого использую словарь проекта и могу позже загрузить его для использования другими пользователями.Как изменить частный словарь ispell
ответ
С Emacs, переменная ispell-personal-dictionary
может использоваться, чтобы выбрать свой личный файл словаря:
имя файла вашего личного орфографического словаря, или ноль. Если nil, используется личный словарь по умолчанию («~/.ispell_DICTNAME» для ispell или «~/.aspell.LANG.pws» для aspell), где DICTNAME - это имя словаря по умолчанию и LANG, то два буквенный код.
В современных системах ispell-
функции Emacs' обычно используют GNU aspell
, орфографический
бесплатно и с открытым исходным кодом в конечном итоге будет заменить Ispell
Это не ясно из вашего вопрос, будут ли все проверять орфографию через Emacs. К счастью, aspell
поддерживает параметр командной строки, которая работает аналогично:
--personal=<file>, -p <file>
Personal word list file name.
Ответ Крис является правильным. Вот лишь пример того, что я использую для переключения между личными словарями aspell
, а также aspell
языков. Я использую как flyspell
, так и ispell
. Пути к личным словарям должны быть скорректированы в соответствии с пользовательскими спецификациями.
(defface ispell-alpha-num-choice-face
'((t (:background "black" :foreground "red")))
"Face for `ispell-alpha-num-choice-face`."
:group 'ispell)
(defface ispell-text-choice-face
'((t (:background "black" :foreground "forestgreen")))
"Face for `ispell-text-choice-face`."
:group 'ispell)
(defun my-ispell-change-dictionaries()
"Switch between language dictionaries."
(interactive)
(let ((choice (read-char-exclusive (concat
"["
(propertize "E" 'face 'ispell-alpha-num-choice-face)
"]"
(propertize "nglish" 'face 'ispell-text-choice-face)
" | ["
(propertize "S" 'face 'ispell-alpha-num-choice-face)
"]"
(propertize "panish" 'face 'ispell-text-choice-face)))))
(cond
((eq choice ?E)
(setq flyspell-default-dictionary "english")
(setq ispell-dictionary "english")
(setq ispell-personal-dictionary "/Users/HOME/.0.data/.0.emacs/.aspell.en.pws")
(ispell-kill-ispell)
(message "English"))
((eq choice ?S)
(setq flyspell-default-dictionary "spanish")
(setq ispell-dictionary "spanish")
(setq ispell-personal-dictionary "/Users/HOME/.0.data/.0.emacs/.aspell.es.pws")
(ispell-kill-ispell)
(message "Español"))
(t (message "No changes have been made.")))))
У меня есть это в моем init.el файле, который работает отлично подходит для меня (найденный в http://www.emacswiki.org/emacs/FlySpell)
(setq ispell-program-name "aspell")
(setq ispell-list-command "list")
(let ((langs '("spanish" "british" "french")))
(setq lang-ring (make-ring (length langs)))
(dolist (elem langs) (ring-insert lang-ring elem)))
(defun cycle-ispell-languages()
(interactive)
(let ((lang (ring-ref lang-ring -1)))
(ring-insert lang-ring lang)
(ispell-change-dictionary lang)))
Я установил комбинацию клавиш для переключения от одного словаря к другому
(global-set-key [M-f6] 'cycle-ispell-languages)
После изменения 'ispell-personal-dictionary' для буфера, который уже открыт с' flyspell' active, я использую 'ispell-kill-ispell', чтобы начать новый сеанс ispell. При установке 'ispell-personal-dictionary' перед загрузкой буфера нет необходимости называть' ispell-kill-ispell'. – lawlist