Вы можете установить переменную ispell-parser
на значение 'tex
, чтобы flyspell игнорировал (la) текс-последовательности.Для этого вы можете установить его вручную в каждом буфере следующим образом:
M-: (setq 'ispell-parser 'tex)
или написать небольшую функцию, которая сделает это за вас.Поместите в файл .emacs следующее:
(defun flyspell-ignore-tex ()
(interactive)
(set (make-variable-buffer-local 'ispell-parser) 'tex))
Затем вы все равно можете вызвать его вручную, используя
M-x flyspell-ignore-tex
, или вы можете добавить ловушку, которая автоматически вызывает эту функцию при каждом редактировании.файл определенного типа.Вы бы сделали последнее, добавив недавно определенную функцию к вашему auto-mode-alist
.Скажите, что ваши имена файлов обычно заканчиваются на «.rst», затем добавьте эту строку в ваш файл .emacs:
(add-to-list 'auto-mode-alist '("\\.rst$" . flyspell-ignore-tex))
Что касается второй части вашего вопроса: заставить режим flyspell игнорировать большие регионы, такие как,например, reST комментарии не легко достижимы.Это становится понятным, когда вы думаете о том, как работает flyspell: он проверяет текст по словам.Для этого flyspell-word
просматривает только одно слово за раз, которое оно отправляет процессу ispell, работающему в фоновом режиме.Процесс ispell выполняет поиск в словаре и возвращает правильное текущее слово.Если бы flyspell-word
приходилось каждый раз проверять, является ли текущее слово частью комментария или другой области, которую не следует проверять, это было бы довольно медленно, потому что это включало бы довольно большой поиск в буфере.
Теперь, конечно, можно подойти к этому немного умнее и сначала найти области без комментариев и т. Д., А затем выполнить дословную проверку только в тех частях, которые находятся за пределами этих областей - но, к сожалению,Это не способ реализации flyspell.
Если вы можете обойтись без части «fly», однако, ispell-mode имеет механизм для настройки того, какие области буфера могут быть пропущены.Это делается с помощью переменной ispell-skip-region-alist
.Но хотя режим flyspell работает в режиме ispell, по причинам, изложенным выше, эта переменная не используется в режиме flyspell.