もつれたコードブロックでflyspellがトリガーされることなく、組織バッファーでflyspellを使用するにはどうすればよいですか?


19

次のような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-predicatesuperuser.com/a/345461/206164は、そして、これはispellを使用するがispell-skip-region-alist、flyspellに関連しない半関連のスレッドです: emacs.stackexchange.com/a/2103/2287
lawlist



1
@grettke:だまされているように見えますが、そうではありません。Ispellの設定を変更しても、Flyspellの問題は実際には解決しません。少なくとも私がそれを試したときはそうではなかった。
ブライアンZ

v8.3では、必要なときにそのまま使用できますox
ラスマス

回答:


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

ispell-skip-region-alistはflyspellでは使用されないことに注意してください。

組み込みの組織モードでEmacs24.3、24.4、24.5、25.1をテストする

ほとんどのユーザーは、デフォルトでflyspellをオンにします。したがって、上記のコードで十分です。

ただし、orgファイルではflyspell-modeを有効にしません。私は何度も何度も手動で好むM-x flyspell-buffer。したがって(flyspell-mode 1) (flyspell-mode -1)、org-mode-hook が必要です。はい、flyspell-modeをオンにしてからオフにします。目的は、org-modeのデフォルトの述語がロードされていることを確認することです。


次のように、正規表現に引用符を追加することをお勧めします: `(begin-regexp" ^ [\ t] *#\\ + begin _ \(src \\ | html \\ | latex \\ | quote \) ")(end-正規表現「^ [\ t] *#\\ + end _ \(src \\ | html \\ | latex \\ | quote \)」) `
prjorgensen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.