3

我将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 模式的语法高亮。我还在 minibuffer 中看到当我访问该文件时 flyspell 确实运行,所以显然它只是在之后才关闭。如何以不会在 org 模式文件中留下任何痕迹的方式将其关闭,或者更好但根本不运行?

4

2 回答 2

3

您可以通过检查主要模式有选择地在文本模式挂钩中启用 flyspell。以下将启用 flyspell intext-mode及其派生模式,除了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))))
于 2014-01-22T10:06:58.613 回答
1

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

(flyspell-delete-all-overlays)

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

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

于 2014-01-22T09:48:33.400 回答