Bagaimana saya bisa membuat url mengabaikan flyspell?

14

Saat saya gunakan flyspell-mode, itu melaporkan kesalahan ejaan setiap kali saya mengetik URL. Apakah ada cara saya bisa memberi tahu Flyspell untuk berhenti memeriksa URL?

Matthew Piziak
sumber
1
Untuk ispell(bukan flyspell) tautan semi-terkait ini, mengenai ispell-skip-region-alist, terlihat membantu: superuser.com/a/345461/206164 Mungkin flyspellmemiliki sesuatu yang serupa yang dapat diterapkan - misalnya, menggunakan flyspell-mode-predicate.
lawlist

Jawaban:

11

Setelah sedikit menggali, saya menemukan petunjuk di [ jawaban Superuser.com ini : Anda perlu mengatur flyspell-mode-predicateke fungsi yang akan memutuskan apakah kata-kata harus diperiksa atau tidak. Berikut cara agar Flyspell mengabaikan apa pun yang dimulai dengan "http" atau "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)

Ada beberapa kekurangan, tentu saja:

  • Saya berasumsi bahwa apa pun yang dimulai dengan "http" atau "https" harus dilewati; itu termasuk " http://cnn.com " dan " https://google.com " (bagus), tetapi juga "httpomatic" dan "httpstatisticiansarehip" (mungkin buruk)
  • Aku tidak mengganggu dengan mailto :, ftp :, berkas :, dll dll (Namun demikian mungkin berbohong kegilaan ...)

Tetapi sebagai metode yang cepat dan kotor, metode ini seharusnya bekerja.

Saint Aardvark the Carpeted
sumber
1

Saya memiliki sesuatu di sepanjang baris ini (dalam kasus saya untuk mode penurunan harga) menjadi sedikit lebih tahan terhadap beberapa kasus patologis yang umum tetapi dari Saint Aardvark the Carpeted's menjawab:

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

Secara khusus, jika Anda mulai dengan melihat spasi putih sebelum kata, URL tidak akan selalu dimulai dengan https. Pertimbangkan kasus-kasus ini:

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