Скорее всего, вы не хотите, чтобы flyspell-mode
был включен для всех режимов, но вместо этого хотите, чтобы flyspell-mode
был включен для режимов, которые в основном работают с текстом (текстовый режим, режим сообщений и т. Д.) И flyspell-prog-mode
для режимов программирования (C / C ++, Java, Ruby, Lisp и т. д.). Разница между этими двумя режимами заключается в том, что первый проверяет все слова, тогда как flyspell-prog-mode
проверяет только слова в комментариях и строках (тем самым избегая проверки кода, который обычно не является словами).
В любом случае, нет единого места для включения flyspell во всех файлах / буферах, потому что он был написан так, чтобы всегда быть локальным буфером. Близкое приближение было бы
(defun turn-on-flyspell () (flyspell-mode 1))
(add-hook 'find-file-hooks 'turn-on-flyspell)
Это не распространяется на буферы, у которых нет связанных файлов, и я не советую использовать их, потому что они не различают режимы программирования и режимы непрограммирования - что я считаю полезным.
Поскольку нет способа узнать, являются ли определенные режимы режимами программирования или нет, вам необходимо вручную добавить настройки для всех режимов программирования, которые вам нужны, с помощью чего-то вроде:
(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode))
'(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook
ruby-mode-hook java-mode-hook))
Примечание: два куска кода, вероятно, не очень хорошо сочетаются друг с другом.
И, что касается XML, flyspell уже имеет настройки для sgml-mode
, html-mode
и nxml-mode
, чтобы не проверять правописание тегов (по состоянию на Emacs 23.2). Если вы используете более старую версию Emacs (обратно до 21.1), вы сможете добавить это в ваш .emacs, чтобы получить поддержку nxml-mode
:
(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)