¿Cómo puedo hacer que flyspell ignore las URL?

14

Cuando lo uso flyspell-mode, informa errores ortográficos cada vez que escribo una URL. ¿Hay alguna forma de decirle a Flyspell que deje de verificar las URL?

Matthew Piziak
fuente
1
Para ispell(no flyspell) este enlace semi-relacionado, con respecto ispell-skip-region-alist, parece útil: superuser.com/a/345461/206164 Quizás flyspelltenga algo similar que se pueda implementar, por ejemplo, usar flyspell-mode-predicate.
leyes

Respuestas:

11

Después de un poco de búsqueda, encontré una pista en [esta respuesta de Superuser.com : debe establecer flyspell-mode-predicateuna función que decida si las palabras deben verificarse o no. Aquí hay una manera de hacer que Flyspell ignore cualquier cosa que comience 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)

Hay algunas deficiencias, por supuesto:

  • Supongo que se debe omitir todo lo que comience con "http" o "https"; eso incluye " http://cnn.com " y " https://google.com " (bueno), pero también "httpomatic" y "httpstatisticiansarehip" (presumiblemente malo)
  • No me estoy molestando con mailto :, ftp :, file :, etc., etc. (Pero de esa manera puede estar la locura ...)

Pero como método rápido y sucio, debería funcionar.

San Aardvark el Alfombrado
fuente
1

Tengo algo en este sentido (en mi caso para el modo de reducción) para ser un poco más resistente a algunos casos comunes pero patológicos de la respuesta de Saint Aardvark the Carpeted:

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

En particular, si comienza mirando el espacio en blanco antes de una palabra, la URL no necesariamente comenzará con https. Considere estos casos:

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