组织模式下的智能拼写检查


38

默认情况下,M-x ispell-buffer以组织模式运行的结果非常令人失望。

  1. Ispell看起来在:PROPERTY:抽屉内部,通常包含诸如

    :ID:       797495bd-581b-4a42-883b-c2a55a08f08a
    
  2. 它尝试更正org语句!例如,它抱怨的SRC

    #+BEGIN_SRC emacs-lisp
    
  3. 它进入组织块内部。我想这对于诸如之类的块可能有用#+BEGIN_QUOTE,但是在源代码块中却很愚蠢。

是否有一个软件包可以解决所有这些问题?

我很想拼写检查我的写作,但是我得到的假阳性数量使它变得不可行。

如果重要,则操作系统的拼写检查器为aspell。


org-mode有一个flyspell谓词(check (get 'org-mode 'flyspell-mode-predicate)),但是我不确定如何将其推广ispell-buffer
legoscia 2014年

@legoscia Ispell有一个名为的变量ispell-parser,因此flyspell的谓词在此处可以使用包装器很好地工作。
马拉巴巴2014年

1
我使用flyspell和hunspell,但没有看到这种行为。与#+源代码块一致或在源代码块中的任何内容都不会进行拼写检查。但是会检查标题下的普通文本。:我有这些在我的flyspell设置(add-hook 'prog-mode-hook 'flyspell-prog-mode)(add-hook 'org-mode-hook 'turn-on-flyspell)
Kaushal莫迪

@kaushalmodi是的,flyspell比ispell更聪明。不幸的是,flyspell是有点苛刻了我的笔记本电脑处理能力:(这不是不可用,但它是一个有点讨厌,这就是为什么我试图ispell的。
Malabarba

3
您是否Can I prevent ispell from checking source blocks?orgmode.org/worg/org-faq.html中看到过?
rvf0068

Answers:


26

rvf0068所建议,可以将ispell配置为跳过与正则表达式匹配的区域。例如,跳过:PROPERTIES::LOGBOOK:抽屉以及SRC块,你可以把这个在您的.emacs文件:

(add-to-list 'ispell-skip-region-alist '(":\\(PROPERTIES\\|LOGBOOK\\):" . ":END:"))
(add-to-list 'ispell-skip-region-alist '("#\\+BEGIN_SRC" . "#\\+END_SRC"))

(我是StackExchange的新手,所以如果通过扩展rvf0068的答案来破坏礼节或规则,请告诉我。)


4
我完全不介意,感谢您的进一步阐述。:)
rvf0068 2014年

以下是我希望ispell忽略的内容:github.com/grettke/home/blob/master/TC3F.org
grettke 2014年

这很有用,但对我来说太大了。我经常在LOGBOOK中记下我想假脱机的记录。
vanden 2014年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.