emacs中各种拼写检查模式的优缺点

时间:2009-11-08 17:22:54

标签: emacs spell-checking

我想知道是否有人可以权衡Emacs不同拼写模式的优缺点。 Emacswiki-CategorySpelling提到三种拼写检查模式:

  • Flyspell模式(默认值为)
  • Speck模式(似乎设计为比flyspell更快)
  • Wcheck模式。 (旨在成为一般用途)

我也感兴趣的是,这些模式中的哪一种为拼写检查器提供了一种方法,可以根据其语法跳过部分缓冲区(例如,为了跳过LaTeX文档中的数学模式部分,这些部分突出显示为AUCTEX模式下的棕色)。 Flyspell doesn't seem to do this

1 个答案:

答案 0 :(得分:6)

您可以通过多种不同的方式进行部分flyspell模式。一种是使用多模式方法,在单一缓冲区中定义多种模式,其中一种模式是编辑注释(例如),其中启用了flyspell模式。我曾经为一些编程语言做这个,但我找不到它的配置了,所以我想我不再使用那种语言了。无论如何,请参阅mmm-mode了解更多信息。

第二种方法是使用`flyspell-prog-mode'(参见参考资料),它为缓冲区的某些部分设置flyspell模式,在这种情况下由字体面定义(字符串和注释的特定面)大多数编程语言主要模式)。它使用谓词回调函数,可以根据需要定义;我维护TNT,这是Emacs的AIM模式,我们这样使用它:

(defun tnt-im-mode-flyspell-verify ()
  "This function is used for `flyspell-generic-check-word-p' in TNT."
  (not (get-text-property (point) 'read-only)))

(put 'tnt-im-mode 'flyspell-mode-predicate 'tnt-im-mode-flyspell-verify)
(put 'tnt-chat-mode 'flyspell-mode-predicate 'tnt-im-mode-flyspell-verify)

关于flyspell vs. speck vs. wcheck - 我只使用了flyspell模式。 speck似乎非常适合于可查看的内容,这可能很好,但一般来说我希望我正在处理的任何文档都要经过拼写检查,所以我不希望这样。 wcheck似乎是外部程序的通用接口;我猜你将不得不自己建立它的用途。 flyspell可以使用两种不同的方式:as-you-type,这是我通常使用它的方式,以及“批处理模式”,其中一次检查整个区域或缓冲区。前者非常快,我从来没有找到寻找更好工具的理由。后者可能有点慢,特别是当有很多拼写错误的单词并且文档很大时,但我真的记不起等待超过15秒才能完成。在观看屏幕15秒并且什么都不做的时候看起来好像很长时间,但事实并非如此。当然是YMMV。

结论:当然,我坚持使用flyspell模式,假设它符合您的需求。