12

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

  • Flyspell模式(默认一种)
  • Speck模式(似乎被设计成比flyspell更快)
  • 检查模式。(设计为通用)

我还对这些模式中的哪些模式为拼写检查器提供了一种根据其语法跳过缓冲区的一部分的方法感兴趣(例如,为了跳过 LaTeX 文档中的数学模式部分,这些部分在 AUCTEX 中突出显示为棕色模式)。Flyspell 似乎没有这样做

4

1 回答 1

6

您可以通过多种不同的方式执行部分飞行拼写模式。一种是使用多模式方法,在单个缓冲区中定义多种模式,其中一种是编辑评论的模式(例如),其中启用了 flyspell-mode。我曾经为某种编程语言这样做,但我再也找不到它的配置了,所以我想我不再使用那种语言了。无论如何,请参阅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,当然。

Bottom line: I'd stick with flyspell-mode, assuming it meets your needs, of course.

于 2009-11-08T23:56:45.370 回答