textlint + flycheck
ブログを書くときの機械的な文章チェックにtextlintの設定を入れた。ずいぶん前から知ってはいたもののの、億劫でこれまで全く使ったことがなく、勘が働かない。まずはtextlint-rule-preset-japaneseだけを使う。
ブログ側の設定
あまりやることはない。textlintはローカルインストール推奨とのことなので、npm install
した上で、.textlintrc
を準備すれば良い。手で毎度やるのは面倒なので、package.json
を追加した。当初は、上記に書いたようにtextlint-rule-preset-japaneseだけ使う。
Emacsの設定
textlint用のflycheck checkerを書く。flycheckにもともと入っていないことに驚いた。
(flycheck-define-checker textlint
"textlint."
:command ("textlint" "--format" "unix"
source-inplace)
:error-patterns
((warning line-start (file-name) ":" line ":" column ": "
(id (one-or-more (not (any " "))))
(message (one-or-more not-newline)
(zero-or-more "\n" (any " ") (one-or-more not-newline)))
line-end))
:modes (text-mode markdown-mode gfm-mode))
(add-to-list 'flycheck-checkers 'textlint)
それからnode_modules
にあるtextlint
を使うために、 add-node-modules-mathをpackage-install
する。
これらを、markdown-mode
で有効にする。
(with-eval-after-load 'markdown-mode
(add-hook 'gfm-mode-hook
(lambda ()
(flycheck-mode)
(add-node-modules-path)))
(add-hook 'markdown-mode-hook
(lambda ()
(flycheck-mode)
(add-node-modules-path))))
この記事は文章が少なく、ほとんどなんのチェックも引っかからない。だが、最近の他のpostを見てみると、割とひっかかっているようだ。「一文中で使う、の数が3を超えている」などが踏みやすい。しばらく使ってみて、調整していこうと思う。