textlint-logo

ブログを書くときの機械的な文章チェックに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-mathpackage-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を超えている」などが踏みやすい。しばらく使ってみて、調整していこうと思う。