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?
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?
Câu trả lời:
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-predicate
thà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:
Nhưng là một phương pháp nhanh và bẩn, nó sẽ hoạt động.
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/}
ispell
(khôngflyspell
) liên kết bán liên quan này, liên quanispell-skip-region-alist
, có vẻ hữu ích: superuser.com/a/345461/206164 Có lẽflyspell
có một cái gì đó tương tự có thể được thực hiện - ví dụ: sử dụngflyspell-mode-predicate
.