LanguageTool

vi にあるのに Emacs にないという状況なので即興で作ってみました。

github に上げています。

http://github.com/mhayashi1120/Emacs-langtool/raw/master/langtool.el

私は長い英語の文章は書かないので、というより書けないのであまり嬉しさは分からないのですが、まあ動くみたいです。
LanguageTool の方にバグがあるらしく、ときどき出力される行や列がずれてしまうようです。

インストール

LanguageTool - Spell and Grammar Checker をダウンロードして展開してください。私は展開したものを ~/lib/java/LanguageTool-X.X/ に置いています。詳しくは official サイトを参照してください。
以下は参考までに

mkdir -p ~/lib/java/
mv LanguageTool-X.X.zip ~/lib/java/
cd ~/lib/java/
unzip LanguageTool-X.X.zip

お決まりですが langtool.el を load-path に置いてください。

設定

.emacs に以下のように設定してください。

(require 'langtool)
(setq langtool-language-tool-jar "/path/to/languagetool-commandline.jar")

この設定は必要だったらしてください。ispell が M-$ なので C-x4 を prefix にしてみました。

(global-set-key "\C-x4w" 'langtool-check)
(global-set-key "\C-x4W" 'langtool-check-done)
(global-set-key "\C-x4l" 'langtool-switch-default-language)
(global-set-key "\C-x44" 'langtool-show-message-at-point)
(global-set-key "\C-x4c" 'langtool-correct-buffer)

java のことはよく知らないのですが、GNU バージョンの java *1 だと動かなかったです。(2011 年当時)

(setq langtool-java-bin "/path/to/java")

私が使ってる java のバージョンは以下の通りです。 apt では openjdk-6-jre-headless で入るものだと思います。

java version "1.6.0_32"
OpenJDK Runtime Environment (IcedTea6 1.13.4) (6b32-1.13.4-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

使い方

check したいバッファで C-x4w で LanguageTool を呼び出します。

実行後 C-x4c で LanguageTool の提案する修正候補を対話しながら確認、修正することができます。

赤くなったエラーのところで C-x44 するとエラー内容を表示します。

無視したいルールがある場合はこんな感じでルールを追加していってください。

(setq langtool-disabled-rules
      '("WHITESPACE_RULE"))

まとめ

スペースの連続とかクオートの使い方が間違っているとか、そういうことしか教えてくれない感じがします。役に立つのでしょうか。。ispell の方がはるかに有用な感じはしますが、今後に期待するべきかもしれません。
現状では日本語はルールが少なく使い物にならないと思われます。

以上、簡単ながら langtool.el の解説でした。LanguageTool の使い方が違うとか、 langtool.el がバグってるとかあったら教えてください。

改訂履歴

2011-02-05
2014-11-15 現状の仕様に合わせて設定方法を追記、補正。

*1:確認した限りでは gij (GNU libgcj) version 4.3.2