Выберите flyspell через переменную в файле

  1. Вопрос:

Как я могу выбрать flyspell автоматически с помощью переменной EMACS в моем файле (не через файл конфигурации .emacs!), только для этого файла, аналогично тому, как я выбираю словарь ispell только для этого файла

ПРИМЕР abc.tex:

---СНИП---

text text ..

text text ..

<!-- LocalXIspellDict: de -->
<!-- HERE SHOULD GO THE SOLUTION -->

---СНИП---

Второй вопрос:

Как я могу добиться этого - всякий раз, когда я открываю TeX-файл, т.е. e., XXX.tex -- flyspell автоматически выбирается при настройке моего файла init.el? Это означает, что flyspell выбирается в зависимости от расширения имени файла.


person user1165430    schedule 23.01.2012    source источник
comment
Должно быть‹!-- Local IspellDict: de --›   -  person user1165430    schedule 23.01.2012
comment
Вы действительно должны задать два отдельных вопроса. Это поможет другим пользователям в будущем, которые ищут ответ на проблему, похожую только на одну из двух.   -  person Thomas    schedule 24.01.2012


Ответы (3)


Альтернативой оператору файловых переменных в первой строке является закомментированный блок локальных переменных, подобный этому:

% Local Variables:
% eval: (flyspell-mode 1)
% ispell-local-dictionary: "german"
% End:

(n.b. Начиная с Emacs 24, хотя он все еще применим к основным режимам, синтаксис mode: MINOR-MODE устарел, и вместо него следует использовать eval).

Подробнее см. в руководстве:
M-: (info "(emacs) Specifying File Variables") RET

Также: http://www.emacswiki.org/emacs/FileLocalVariables

person phils    schedule 23.01.2012

Вторая часть довольно проста: просто добавьте flyspell-mode к mode-hook для каждого режима, который вы хотите использовать с flyspell.

Это включает flyspell всякий раз, когда включен text-mode (что в основном всегда):

(add-hook 'text-mode-hook (lambda ()  (flyspell-mode 1)))

Вероятно, вы захотите использовать tex-mode-hook.

Для файла: поместите это в начало файла, и каждый раз, когда вы найдете этот файл, нужно вводить flyspell.

-*- mode: flyspell; -*-
person pmr    schedule 23.01.2012
comment
Это работало с: (add-hook 'LaTeX-mode-hook (лямбда () (flyspell-mode 1))) - person user1165430; 23.01.2012
comment
@ user1165430 Это просто означает, что вы используете AuCTeX, а не стандартный пакет TeX, распространяемый с emacs. Добро пожаловать в SO кстати. Пожалуйста, прочтите часто задаваемые вопросы, чтобы лучше узнать сайт и понять, как голосовать и принимать ответы. - person pmr; 23.01.2012

Использование локальных переменных файла: http://www.gnu.org/software/emacs/manual/html_node/emacs/File-Variables.html

% Local Variables:
%   ispell-local-dictionary: "american"
% End:
person david villa    schedule 22.05.2013
comment
В руководстве по Emacs говорится: "Не используйте ключевое слово режима для второстепенных режимов. - person ceving; 30.10.2015