Wie kann ich Flyspell dazu bringen, URLs zu ignorieren?

14

Wenn ich flyspell-modeeine URL eingebe, werden Rechtschreibfehler gemeldet. Gibt es eine Möglichkeit, Flyspell anzuweisen, die Überprüfung von URLs zu beenden?

Matthew Piziak
quelle
1
Für ispell(nicht flyspell) diesen semi-verwandten Link ispell-skip-region-alistsieht diesbezüglich hilfreich aus: superuser.com/a/345461/206164 Vielleicht flyspellgibt es etwas Ähnliches, das implementiert werden kann - z flyspell-mode-predicate. B. mithilfe von .
Gesetzesliste

Antworten:

11

Nach einigem Graben habe ich in [dieser Superuser.com-Antwort einen Hinweis gefunden : Sie müssen flyspell-mode-predicateeine Funktion festlegen , die entscheidet, ob Wörter überprüft werden sollen oder nicht. Hier ist eine Möglichkeit, Flyspell dazu zu bringen, alles zu ignorieren, was mit "http" oder "https" beginnt:

(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)

Natürlich gibt es einige Mängel:

  • Ich gehe davon aus, dass alles, was mit "http" oder "https" beginnt, übersprungen werden sollte. das beinhaltet " http://cnn.com " und " https://google.com " (gut), aber auch "httpomatic" und "httpstatisticiansarehip" (vermutlich schlecht)
  • Ich kümmere mich nicht um mailto :, ftp :, file :, etc etc. (Aber so kann Wahnsinn liegen ...)

Aber als schnelle und schmutzige Methode sollte es funktionieren.

Saint Aardvark der Teppichboden
quelle
1

Ich habe etwas in diese Richtung (in meinem Fall für den Markdown-Modus), das gegenüber einigen häufigen, aber pathologischen Fällen von Saint Aardvark the Carpeted etwas widerstandsfähiger ist:

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

Insbesondere wenn Sie zuerst den Leerraum vor einem Wort betrachten, beginnt die URL nicht unbedingt mit https. Betrachten Sie diese Fälle:

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