2009-11-08 26 views
11

我想知道是否有人可以權衡Emacs不同拼寫模式的優缺點。 Emacswiki-CategorySpelling提到了拼寫檢查三種模式:emacs中各種拼寫檢查模式的優缺點

  • Flyspell模式(默認的)
  • 斯佩克模式(似乎被設計爲比flyspell更快)
  • W檢查模式。 (設計爲通用)

我也有興趣在這些模式提供了一種拼寫檢查,這取決於它的語法(例如跳過緩衝區的一部分,以跳過數學模式在LaTeX文檔中的部分,在AUCTEX模式下突出顯示爲棕色)。 Flyspell doesn't seem to do this

+1

這可能會增加討論:Xah Lee對Flyspell模式的批評以及如何獲得Speck模式 - http://xahlee.org/emacs/emacs_spell_checker_problems.html – Yoo 2010-07-11 18:10:59

回答

6

您可以通過多種不同的方式來完成部分飛行模式。一種是使用多模式方法,在單個緩衝區中定義多種模式,其中之一是編輯註釋的模式(例如),其中啓用了flyspell模式。我曾經爲一些編程語言做過這些工作,但我無法再找到它的配置,所以我想我不再使用這種語言。總之,請參閱mmm-mode瞭解更多信息。

第二種方法是使用`flyspell-prog-mode'(參見參考資料),它爲緩衝區的某些部分設置了flyspell模式,在這種情況下由字體定義(字符串和註釋對於大多數編程語言的主要模式)。它使用謂詞回調函數,可以根據需要定義它;我保持TNT,這是AIM-模式Emacs的,我們用它像這樣:

(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與斑點與W檢查 - 我只用flyspell模式。斑點似乎非常重視可見的內容,這可以很好,但通常我希望我正在處理的所有文檔都經過拼寫檢查,所以我不想要這樣做。 wcheck似乎是一個外部程序的通用接口;我猜想你將不得不自己建立它的使用。 flyspell可以以兩種不同的方式使用:as-you-type,這是我通常使用它的方式,以及「批處理模式」,其中一次檢查整個區域或緩衝區。前者速度非常快,我從來沒有找到找到更好工具的理由。後者可能會慢一些,特別是當有很多拼寫錯誤的單詞和文檔很大時,但我真的不記得等待超過15秒才能完成。在觀看屏幕15秒鐘而無所事事看起來很長時間的時候,事實並非如此。 YMMV,當然。底線:當然,我會堅持使用flyspell模式,假設它滿足您的需求。