ฉันจะทำให้ flyspell เพิกเฉย URL ได้อย่างไร


14

เมื่อฉันใช้flyspell-modeมันจะรายงานข้อผิดพลาดการสะกดเมื่อใดก็ตามที่ฉันพิมพ์ URL มีวิธีที่ฉันสามารถบอก Flyspell ให้หยุดตรวจสอบ URL ได้หรือไม่


1
สำหรับispell(ไม่flyspell) นี้การเชื่อมโยงกึ่งที่เกี่ยวข้องเกี่ยวกับispell-skip-region-alistลักษณะที่เป็นประโยชน์: superuser.com/a/345461/206164 บางทีflyspellมีบางสิ่งบางอย่างที่คล้ายกันที่สามารถดำเนินการได้ - flyspell-mode-predicateเช่นการใช้
กฎหมาย

คำตอบ:


11

หลังจากการขุดเล็กน้อยฉันพบคำใบ้ใน [ คำตอบ 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 :, ไฟล์:, ฯลฯ และอื่น ๆ (แต่วิธีนี้อาจทำให้คนบ้า ... )

แต่เป็นวิธีที่รวดเร็วและสกปรกมันควรจะทำงานได้


1

ฉันมีบางอย่างตามบรรทัดเหล่านี้ (ในกรณีของฉันสำหรับโหมดมาร์กดาวน์) ที่จะทนต่อบางกรณีที่พบบ่อย แต่พยาธิวิทยาจาก Saint Aardvark คำตอบของ Carpeted:

(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/}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.