Когда я использую flyspell-mode
, он сообщает об ошибках правописания всякий раз, когда я набираю URL. Есть ли способ, которым я могу сказать Flyspell прекратить проверку URL?
Когда я использую flyspell-mode
, он сообщает об ошибках правописания всякий раз, когда я набираю URL. Есть ли способ, которым я могу сказать Flyspell прекратить проверку URL?
Ответы:
Немного покопавшись, я нашел подсказку в [этом ответе Superuser.com : вам нужно установить flyspell-mode-predicate
функцию, которая будет определять, следует ли проверять слова или нет. Вот способ заставить Flyspell игнорировать все, что начинается с «http» или «https»:
(defun flyspell-ignore-http-and-https ()
"Function used for `flyspell-generic-check-word-predicate' to ignore stuff starting with \"http\" or \"https\"."
(save-excursion
(forward-whitespace -1)
(when (looking-at " ")
(forward-char)
(not (looking-at "https?\\b")))))
(put 'text-mode 'flyspell-mode-predicate 'flyspell-ignore-http-and-https)
Конечно, есть и недостатки:
Но как быстрый и грязный метод, он должен работать.
У меня есть что-то вроде этого (в моем случае для режима уценки), чтобы быть немного более устойчивым к некоторым распространенным, но патологическим случаям из ответа Святого Аардварка Коврового:
(require 'thingatpt)
(defun markdown-flyspell-predicate ()
(not (thing-at-point 'url)))
(put 'markdown-mode 'flyspell-mode-predicate 'markdown-flyspell-predicate)
В частности, если вы начинаете с просмотра пробелов перед словом, URL-адрес не обязательно начинается с https
. Рассмотрим эти случаи:
(/emacs/)
[text text](/emacs/)
\url{/emacs/}
ispell
(неflyspell
) эта полусвязанная ссылка, в отношенииispell-skip-region-alist
, выглядит полезной: superuser.com/a/345461/206164 Возможно,flyspell
есть нечто подобное, что можно реализовать - например, используяflyspell-mode-predicate
.