Làm thế nào để một người sử dụng flyspell trong bộ đệm org mà không kích hoạt flyspell trên các khối mã bị rối?


19

Hãy tưởng tượng một bộ đệm org trong Emacs như:

* Title

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

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

Tôi muốn flyspell kiểm tra bộ đệm org (và bắt lỗi chính tả trong đó) nhưng bỏ qua nội dung giữa các dấu # + BEGIN_SRC và # + END_SRC. Làm thế nào để một người đi về điều đó?


2
Có vẻ như ai đó sẽ cần phải viết một số mã bằng cách sử dụng flyspell-generic-check-word-predicate, nếu điều đó chưa được phát minh. Đây là một chủ đề liên quan cho flyspell bằng cách sử dụng flyspell-generic-check-word-predicate: superuser.com/a/345461/206164 ; và, đây là một chủ đề bán liên quan cho ispell bằng cách sử dụng ispell-skip-region-alist, nhưng không liên quan đến flyspell: emacs.stackexchange.com/a/2103/2287
luật

emacs.stackexchange.com/a/2103/2609 có thể giúp gì không?
Tên

Câu hỏi này là một dupe đó một emacs.stackexchange.com/questions/450/...
grettke

1
@grettke: Có vẻ như là một bản dupe, nhưng không phải vậy. Thay đổi cài đặt cho Ispell không thực sự giải quyết được vấn đề trong Flyspell. Ít nhất là không khi tôi đã thử nó.
Brian Z

Nó hoạt động ngoài hộp trong v8.3 khi bạn yêu cầu ox.
rasmus

Câu trả lời:


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)))

Xin lưu ý ispell-Skip-area-alist KHÔNG được sử dụng bởi flyspell.

Thử nghiệm trên Emacs24.3, 24.4, 24.5, 25.1 với chế độ org dựng sẵn

Hầu hết người dùng bật flyspell theo mặc định. Vậy mã trên là đủ.

Nhưng tôi không kích hoạt chế độ flyspell trong tệp org. Tôi thích thủ công M-x flyspell-buffernhiều lần. Vì vậy, tôi cần (flyspell-mode 1) (flyspell-mode -1)trong hook-mode-hook. Có, bật rồi tắt chế độ flyspell. Mục đích là để đảm bảo vị từ mặc định của chế độ org được tải.


Tôi khuyên bạn nên thêm trích dẫn vào regrec, chẳng hạn như: `(started-regapi" ^ [\ t] * # \\ + started _ \ (src \\ | html \\ | latex \\ | quote \) ") (end- regrec "^ [\ t] * # \\ + end _ \ (src \\ | html \\ | latex \\ | quote \)") `
prjorgensen
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.