;; NO spell check for embedded snippets
(defadvice org-mode-flyspell-verify (after org-mode-flyspell-verify-hack activate)
(let* ((rlt ad-return-value)
(begin-regexp "^[ \t]*#\\+begin_\\(src\\|html\\|latex\\|example\\|quote\\)")
(end-regexp "^[ \t]*#\\+end_\\(src\\|html\\|latex\\|example\\|quote\\)")
(case-fold-search t)
b e)
(when ad-return-value
(save-excursion
(setq b (re-search-backward begin-regexp nil t))
(if b (setq e (re-search-forward end-regexp nil t))))
(if (and b e (< (point) e)) (setq rlt nil)))
(setq ad-return-value rlt)))
Будь ласка, зверніть увагу, що ISLET-skip-region-alist НЕ використовується flyspell.
Тест на Emacs24.3, 24.4, 24.5, 25.1 із вбудованим org-режимом
Більшість користувачів включають flyspell за замовчуванням. Тож вище коду вистачає.
Але я не вмикаю режиму flyspell у файлі org. Я віддаю перевагу вручну M-x flyspell-buffer
знову і знову. Тому мені потрібно (flyspell-mode 1) (flyspell-mode -1)
в org-mode-гачок. Так, увімкніть, а потім вимкніть режим прольоту. Мета полягає в тому, щоб переконатися, що завантажений предикат за замовчуванням в режимі org.
flyspell-generic-check-word-predicate
, якщо це ще не винайдено. Ось пов'язана нитка для flyspell за допомогоюflyspell-generic-check-word-predicate
: superuser.com/a/345461/206164 ; і осьispell-skip-region-alist
напівспоріднена нитка для використання ispell , але не стосується flyspell: emacs.stackexchange.com/a/2103/2287