Come posso fare in modo che flyspell ignori gli URL?


14

Quando uso flyspell-mode, segnala errori di ortografia ogni volta che scrivo un URL. C'è un modo per dire a Flyspell di smettere di controllare gli URL?


1
Per ispell(non flyspell) questo link semi-correlato, per quanto riguarda ispell-skip-region-alist, sembra utile: superuser.com/a/345461/206164 Forse flyspellha qualcosa di simile che può essere implementato - ad esempio, usando flyspell-mode-predicate.
elenco delle leggi

Risposte:


11

Dopo un po 'di ricerche, ho trovato un suggerimento in [questa risposta di Superuser.com : devi impostare flyspell-mode-predicateuna funzione che deciderà se le parole devono essere controllate o meno. Ecco un modo per far sì che Flyspell ignori qualsiasi cosa che inizi con "http" o "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)

Ci sono alcune carenze, ovviamente:

  • Suppongo che tutto ciò che inizia con "http" o "https" debba essere ignorato; che include " http://cnn.com " e " https://google.com " (buono), ma anche "httpomatic" e "httpstatisticiansarehip" (presumibilmente negativo)
  • Non mi preoccupo di mailto :, ftp :, file :, ecc. Ecc. (Ma in questo modo potrebbe mentire la follia ...)

Ma come metodo rapido e sporco, dovrebbe funzionare.


1

Ho qualcosa del genere (nel mio caso per la modalità markdown) per essere leggermente più resistente ad alcuni casi comuni ma patologici della risposta di Saint Aardvark the Carpeted:

(require 'thingatpt)
(defun markdown-flyspell-predicate ()
  (not (thing-at-point 'url)))
(put 'markdown-mode 'flyspell-mode-predicate 'markdown-flyspell-predicate)

In particolare, se inizi guardando lo spazio bianco prima di una parola, l'URL non inizierà necessariamente con https. Considera questi casi:

(/emacs/)
[text text](/emacs/)
\url{/emacs/}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.