Comment puis-je faire en sorte que flyspell ignore les URL?

14

Lorsque j'utilise flyspell-mode, il signale les fautes d'orthographe chaque fois que je tape une URL. Existe-t-il un moyen de dire à Flyspell d'arrêter de vérifier les URL?

Matthew Piziak
la source
1
Pour ispell(pas flyspell) ce lien semi-lié, concernant ispell-skip-region-alist, semble utile: superuser.com/a/345461/206164 Peut-être flyspella quelque chose de similaire qui peut être mis en œuvre - par exemple, en utilisant flyspell-mode-predicate.
lawlist

Réponses:

11

Après avoir creusé un peu, j'ai trouvé un indice dans [cette réponse Superuser.com : vous devez définir flyspell-mode-predicateune fonction qui décidera si les mots doivent être vérifiés ou non. Voici un moyen pour que Flyspell ignore tout ce qui commence par "http" ou "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)

Il y a bien sûr des lacunes:

  • Je suppose que tout ce qui commence par "http" ou "https" doit être ignoré; cela inclut " http://cnn.com " et " https://google.com " (bon), mais aussi "httpomatic" et "httpstatisticiansarehip" (vraisemblablement mauvais)
  • Je ne suis pas prendre la peine avec mailto :, ftp :, file :, etc etc (Mais cette façon peut se situer la folie ...)

Mais en tant que méthode rapide et sale, cela devrait fonctionner.

Saint Aardvark le Moquette
la source
1

J'ai quelque chose dans ce sens (dans mon cas pour le mode démarque) pour être légèrement plus résistant à certains cas courants mais pathologiques de la réponse de Saint Aardvark le Moquette:

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

En particulier, si vous commencez par regarder les espaces avant un mot, l'URL ne commencera pas nécessairement par https. Considérez ces cas:

(/emacs/)
[text text](/emacs/)
\url{/emacs/}
VF1
la source