Ответ 1
Скорее всего, вы не хотите, чтобы flyspell-mode
разрешен для всех режимов, но вместо этого требуется flyspell-mode
для режимов, которые предназначены главным образом для текста (текстовый режим, режим сообщений и т.д.) и flyspell-prog-mode
для режимов программирования (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)