Подтвердить что ты не робот

Как включить режим flyspell в emacs для всех файлов и всех основных режимов?

Как включить режим flyspell для автоматического использования для каждого файла и каждого основного режима сразу после запуска Emacs?

Кроме того, существует ли XML-словарь, который не маркирует теги XML как слова с ошибками?

4b9b3361

Ответ 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)

Ответ 2

Ответ от этого вопроса работал у меня:

Как включить автоматическую проверку орфографии по умолчанию?

Кроме того, он кажется более общим, в отличие от текущего проголосовавшего ответа. Добавьте следующие строки в .emacs или init.el.

(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'prog-mode-hook 'flyspell-prog-mode)

Ответ 3

В файл Emacs init можно добавить следующее:

(Flyspell-все-режимы)

В описании функции указано:

Использовать Flyspell во всех основных режимах. Применяется как к существующим буферам, так и к буферов, которые вы впоследствии создали. Отключает `flyspell-text-modes ' если включено.

EDIT: По-видимому, вышеуказанная функция включена только в версию flyspell, которая находится в Emacs 24. Если вы не можете использовать эту версию, вместо этого вы должны использовать решение, предложенное Trey, чтобы "полу-глобально" включить flyspell. Чтобы отключить проверку тегов XML с помощью NXML, вы можете добавить следующую строку в файл инициализации Emacs:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)

Примечание. Эта строка уже находится в файле flyspell.el, включенном в Emacs 24.