Làm thế nào tôi có thể làm cho flyspell bỏ qua các url?


14

Khi tôi sử dụng flyspell-mode, nó báo cáo lỗi chính tả mỗi khi tôi nhập URL. Có cách nào tôi có thể nói với Flyspell ngừng kiểm tra URL không?


1
Đối với ispell(không flyspell) liên kết bán liên quan này, liên quan ispell-skip-region-alist, có vẻ hữu ích: superuser.com/a/345461/206164 Có lẽ flyspellcó một cái gì đó tương tự có thể được thực hiện - ví dụ: sử dụng flyspell-mode-predicate.
luật

Câu trả lời:


11

Sau khi đào một chút, tôi tìm thấy một gợi ý trong [ câu trả lời Superuser.com này : bạn cần đặt flyspell-mode-predicatethành một chức năng sẽ quyết định xem có nên kiểm tra các từ hay không. Đây là một cách để Flyspell bỏ qua mọi thứ bắt đầu bằng "http" hoặc "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)

Có một số thiếu sót, tất nhiên:

  • Tôi cho rằng mọi thứ bắt đầu bằng "http" hoặc "https" nên được bỏ qua; bao gồm " http://cnn.com " và " https://google.com " (tốt), nhưng cũng "httpomatic" và "httpstatisticiansarehip" (có lẽ là xấu)
  • Tôi không bận tâm với mailto:, ftp:, file:, v.v. (Nhưng cách đó có thể nói dối điên rồ ...)

Nhưng là một phương pháp nhanh và bẩn, nó sẽ hoạt động.


1

Tôi đã có một cái gì đó dọc theo các dòng này (trong trường hợp của tôi cho chế độ đánh dấu) để chống lại một số trường hợp phổ biến nhưng bệnh lý từ câu trả lời của Saint Aardvark the Carpained:

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

Cụ thể, nếu bạn bắt đầu bằng cách nhìn vào khoảng trắng trước một từ, URL sẽ không nhất thiết phải bắt đầu bằng https. Hãy xem xét những trường hợp sau:

(/emacs/)
[text text](/emacs/)
\url{/emacs/}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.