【问题标题】:Can't properly disable flyspell in org mode无法在 org 模式下正确禁用 flyspell
【发布时间】:2014-01-22 09:36:51
【问题描述】:

我将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 模式文件中留下任何痕迹或完全不运行的方式将其关闭?

【问题讨论】:

    标签: emacs org-mode flyspell


    【解决方案1】:

    您可以通过检查主要模式来选择性地在文本模式挂钩中启用 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))))
    

    【讨论】:

    • 您可以将 lambda 简化为 (lambda () (flyspell-mode (not (equal major-mode 'org-mode))))
    • 嗨@Thomas,感谢您的建议,但是根据flyspell-mode 的文档,当从Lisp 调用时,即使arg 被省略或为nil,也会启用flyspell 模式。
    • 你的解决方案显然更好。我简单地尝试了一下,尽管文档说了什么,但它似乎可以工作,但我没有非常彻底地测试它。即便如此,我们最好还是遵守文档中所说的内容。
    • 虽然这会在 org 缓冲区中禁用 fylspell 模式,但我仍然留下了拼写错误突出显示的痕迹。换句话说,在flyspell完成它的事情之后它仍然会禁用它。我设法使用 fniessen 的建议摆脱了它的亮点,所以我想这解决了我的问题。如果您修改答案,我会接受。我仍然很好奇是否有可能使 flyspell 不会从 org-mode 缓冲区开始。
    • 这很奇怪,对我来说,上面两行 flyspell-mode 根本没有在 org 缓冲区中激活。试试M-: text-mode-hook RET 它打印什么?还要确保你的 init 文件中没有 (add-hook 'text-mode-hook 'flyspell-mode)
    【解决方案2】:

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

    (flyspell-delete-all-overlays)
    

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

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

    【讨论】:

    • 您似乎认为 flyspell 在几乎任何 org-mode 的使用中都是“非常、非常、非常”的重要功能。我向你保证不是。我的 org-mode 文件包含名称、混合语言、缩写以及许多其他我不想进行拼写检查的内容。当这些东西被高亮显示时,org-mode 语法高亮不会在文本的其余部分中突出显示,这会降低可读性。
    • 在这种情况下,我会添加您的缩写,例如本地单词或全球词典。当然,这确实不能解决混合语言问题。但是 Flyspell 是如此有趣,以至于我无法想象在我所有的 Org 文件中都没有启用它。最好通过局部变量在本地禁用它。
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多