无法在组织模式下正确禁用flyspell

时间:2014-01-22 09:36:52

标签: emacs org-mode flyspell

我设置了emacs,默认情况下使用

打开文本模式的flyspell
(add-hook 'flyspell-mode-hook 'flyspell-buffer)
(add-hook 'text-mode-hook 'flyspell-mode)

我想在org模式文件中自动禁用它,我确实设法在org模式钩子中使用lambda函数禁用它:

(add-hook 'org-mode-hook (lambda () (flyspell-mode -1)))

这样可行,但语法高亮显示仍然保留了flyspell,并干扰了org模式的语法高亮。我还在迷你缓冲区中看到,当我访问该文件时,flyspell会运行,所以显然它之后才关闭。如何以一种不会在组织模式文件中留下任何痕迹的方式将其关闭,或者更好还是根本不运行?

2 个答案:

答案 0 :(得分:3)

您可以通过检查主模式在文本模式挂钩中有选择地启用flyspell。以下将在text-mode及其派生模式中启用flyspell,但org-mode

除外
(add-hook 'flyspell-mode-hook 'flyspell-buffer)

(add-hook 'text-mode-hook (lambda ()
                                 (when (not (equal major-mode 'org-mode))
                                   (flyspell-mode t))))

答案 1 :(得分:1)

关于第一个问题(删除突出显示),以下调用应该这样做:

(flyspell-delete-all-overlays)

但是,你真的,真的,你确定要在Org模式下禁用flyspell ???这有真的,非常非常好的理由吗?

如果是的话,你不应该解决那个问题,而不是尝试上述问题吗?