วิธีการหนึ่งที่ใช้ flyspell ในองค์กรบัฟเฟอร์โดยไม่ต้อง flyspell เรียกบนบล็อกรหัส tangled?


19

ลองนึกภาพบัฟเฟอร์ org ใน Emacs เช่น:

* Title

Some text describing the title and the codew (sic) and whatnot.

#+BEGIN_SRC emacs_lisp
(setq backup-by-copying t)
#+END_SRC

ฉันต้องการ flyspell เพื่อตรวจสอบบัฟเฟอร์องค์กร (และตรวจจับข้อผิดพลาดในการสะกดคำ) แต่ไม่ต้องสนใจเนื้อหาระหว่างเครื่องหมาย # + BEGIN_SRC และ # + END_SRC เราจะไปได้อย่างไร


2
ดูเหมือนว่าบางคนจะต้องเขียนโค้ดโดยใช้flyspell-generic-check-word-predicateถ้าหากยังไม่ได้ทำการประดิษฐ์ นี่คือหัวข้อที่เกี่ยวข้องสำหรับ flyspell โดยใช้flyspell-generic-check-word-predicate: superuser.com/a/345461/206164 ; และนี่คือหัวข้อกึ่งที่เกี่ยวข้องสำหรับการใช้ ispell ispell-skip-region-alistแต่ไม่เกี่ยวข้องกับ flyspell: emacs.stackexchange.com/a/2103/2287
ฏหมาย

สามารถemacs.stackexchange.com/a/2103/2609ช่วยได้ไหม?
ชื่อ

คำถามนี้เป็นคำตอบของemacs.stackexchange.com/questions/450/…
grettke

1
@grettke: ดูเหมือนเป็นเหยื่อ แต่มันไม่ใช่ การเปลี่ยนการตั้งค่าสำหรับ Ispell ไม่ได้ช่วยแก้ปัญหาใน Flyspell อย่างน้อยก็ไม่ใช่ตอนที่ฉันลอง
Brian Z

มันทำงานออกจากกล่องใน v8.3 oxเมื่อคุณต้องการ
rasmus

คำตอบ:


12
;; NO spell check for embedded snippets
(defadvice org-mode-flyspell-verify (after org-mode-flyspell-verify-hack activate)
  (let* ((rlt ad-return-value)
         (begin-regexp "^[ \t]*#\\+begin_\\(src\\|html\\|latex\\|example\\|quote\\)")
         (end-regexp "^[ \t]*#\\+end_\\(src\\|html\\|latex\\|example\\|quote\\)")
         (case-fold-search t)
         b e)
    (when ad-return-value
      (save-excursion
        (setq b (re-search-backward begin-regexp nil t))
        (if b (setq e (re-search-forward end-regexp nil t))))
      (if (and b e (< (point) e)) (setq rlt nil)))
    (setq ad-return-value rlt)))

โปรดทราบว่า flyspell ไม่ได้ใช้ ispell-skip-region-alist

ทดสอบ Emacs24.3, 24.4, 24.5, 25.1 ด้วยโหมด builtin org

ผู้ใช้ส่วนใหญ่เปิดใช้งาน flyspell ตามค่าเริ่มต้น ดังนั้นโค้ดด้านบนก็เพียงพอแล้ว

แต่ฉันไม่เปิดใช้งานโหมด flyspell ในไฟล์ org ฉันชอบตนเองM-x flyspell-bufferอีกครั้งและอีกครั้ง ดังนั้นฉันต้องการ(flyspell-mode 1) (flyspell-mode -1)org-mode-hook ใช่เปิดแล้วปิดโหมด flyspell วัตถุประสงค์คือเพื่อให้แน่ใจว่ามีการโหลดเพรดิเคตเริ่มต้นของโหมดองค์กร


ฉันแนะนำให้เพิ่มเครื่องหมายคำพูดใน regexp เช่น: `(start-regexp" ^ [\ t] * # \\ + start _ \ (src \\ | html \\ | latex \\ | quote \) ") (สิ้นสุด - regexp "^ [\ t] * # \\ + end _ \ (src \\ | html \\ | latex \\ | quote \)") `
prjorgensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.