Як я можу змусити змусити ігнорувати 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:, файлів:, і т.д. і т.п. (Але це шлях може лежати безумство ...)

Але як швидкий і брудний метод, він повинен працювати.


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/}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.