Как я могу заставить flyspell игнорировать URL?

14

Когда я использую flyspell-mode, он сообщает об ошибках правописания всякий раз, когда я набираю URL. Есть ли способ, которым я могу сказать Flyspell прекратить проверку URL?

Мэтью Пизиак
источник
1
Для ispell(не flyspell) эта полусвязанная ссылка, в отношении ispell-skip-region-alist, выглядит полезной: superuser.com/a/345461/206164 Возможно, flyspellесть нечто подобное, что можно реализовать - например, используя flyspell-mode-predicate.
юрист

Ответы:

11

Немного покопавшись, я нашел подсказку в [этом ответе 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)

Конечно, есть и недостатки:

  • Я предполагаю, что все, что начинается с «http» или «https», должно быть пропущено; это включает в себя " http://cnn.com " и " https://google.com " (хорошо), но также "httpomatic" и "httpstatisticiansarehip" (предположительно, плохо)
  • Я не беспокоюсь о mailto :, ftp :, file: и т. Д. И т. Д. (Но это может привести к безумию ...)

Но как быстрый и грязный метод, он должен работать.

Святой Аардварк Ковровое покрытие
источник
1

У меня есть что-то вроде этого (в моем случае для режима уценки), чтобы быть немного более устойчивым к некоторым распространенным, но патологическим случаям из ответа Святого Аардварка Коврового:

(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/}
VF1
источник