Emacs で日本語文章をチェックする方法(flycheck + textlint)
うまく進めば 10分程度で、日本語文章をチェックして適切でない箇所を強調することができると思います。
Emacs 使う前に textlint を設定する
事前に textlint とプラグインをインストールする必要があります。
# textlint 本体です
npm install -g textlint
# 日本語でチェックするためのプラグインです
npm install -g textlint-rule-preset-ja-technical-writing
# org-mode で textlint を動かすためのプラグインです
npm install -g textlint-plugin-org
npm install -g traverse
# 下記のインストールは私の環境では必要でしたが、エラーが出るまで入れなくて良いかもしれません。
npm install -g @textlint/ast-node-types
これらをインストールしたあとホームディレクトリに ~/.textlintrc を作成します。私は下記のようにしました。
{
"plugins": [
"org"
],
"rules": {
"preset-ja-technical-writing": {
"no-exclamation-question-mark": false
},
"preset-ja-spacing": {
"ja-space-between-half-and-full-width": {
"space": "always"
}
}
}
}
org-mode に利用したい場合は plugins を書くのを忘れないようにしましょう。他の設定は自由に変更してください。設定ファイルを作成したあと、適当な検証用ファイル test.org を作って textlint が動くか確かめましょう。
日本語の文章を書いてみた
自動販売機販売計画
そして下記のコマンドを実行します。
textlint test.org
正しく設定が完了していれば下のように textlint がルール違反を検出してくれるでしょう。
test.org
2:1 error 漢字が7つ以上連続しています: 自動販売機販売計画 ja-technical-writing/max-kanji-continuous-len
2:9 error 文末が"。"で終わっていません。 ja-technical-writing/ja-no-mixed-period
✖ 2 problems (2 errors, 0 warnings)
Emacs で textlint の結果を見る
flycheck をインストールしてない場合はインストールしましょう。flycheck をインストールしている場合は test.org を開いて M-x flycheck-mode
を実行しましょう。正しく textlint が動いている場合は下記のように表示されるはずです。
もしこの動作が気に入ったのなら org-mode のフックで flycheck-mode を起動すれば良いでしょう。私は普段からこの厳しいルールを使うよりも、雑にメモを取りたいと考えているため flycheck-mode はオフにせず、デフォルトのまま利用し続けています。
ちなみに org ファイルはプラグインが必要でしたが markdown ファイルはプラグインなしで動作します。
参考文献
textlint の設定がわからない場合や、エラーになってしまう場合は下記を見るのが良いと思います。
flycheck のインストール方法や詳しい使い方は下記で見ることができます。
英語と日本語の設定を分けたい場合には下記の記事が参考になりそうです。
Discussion