如何使flyspell忽略网址?


14

当我使用时flyspell-mode,只要输入网址,它就会报告拼写错误。有没有办法让我告诉Flyspell停止检查URL?


1
对于ispell(不是flyspell)这个半相关的链接,ispell-skip-region-alist看起来很有帮助: superuser.com/a/345461/206164 也许flyspell可以实现类似的功能-例如,使用flyspell-mode-predicate
法律列表

Answers:


11

经过一番挖掘,我在[this 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:,file:等烦恼(但是那样可能会让人发疯 ……)

但作为一种快捷方法,它应该可以工作。


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/}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.