読者です 読者をやめる 読者になる 読者になる

atomのtextlintプラグインを使ってみる

textlint atom

textlint のatomプラグインがあるというので install してみました。
textlintのAtomプラグイン - 1000ch.net

Install

textlint 本体

textlint/textlint: The pluggable natural language linter for text and markdown.
注意事項としては
Node.js 4.0.0 >=
かつ

If you have installed textlint as --global(-g), must install each rule as --global.
If you have installed textlint as --save-dev(-D), must install each rule as --save-dev.

混ぜるな危険だそうです。

Recommended way: Install textlint and rules as --save-dev per project.

とりあえず個人で使うだけなので 各プロジェクトのversionの統一は可能ですし、
それほど多くのprojectで使用する予定はないので、一旦globalで入れてみました。

Ruleファイル

textlintで日本語の文章をチェックする | Web Scratch
こちらの記事のRuleファイルを入れて、.lintコマンドラインで実行してみると、正しく動作しました。

phr

追加で表記揺れの検出が可能なプラグインをinstall。表記揺れの設定自体はyamlで定義します。
azu/textlint-rule-prh: textlint rule for prh.

atomプラグイン

1000ch/linter-textlint: A plugin for Atom Linter providing an interface to textlint.
.textlintrc がプロジェクトに存在すると動くのかと思いましたが
npmで入れた Rule ファイルも同様に存在しないと動きません。
(つまり、node_modules がないとダメ)

linter-textlint の setting には「textlint Rule Dir」と「.textlint Path」の2つのglobal settingがあります。 
Ruleファイルはglobalで入れたので、てっきり「textlint Rule Dir」のみを指定すれば
動作すると思い込んであれやこれややっていたのですが、一向に動作しませんでした。
 
とりあえずプラグインのソースを見てみると、
linter-textlint/index.js at v1.11.1 · 1000ch/linter-textlint

      let configFile = directory.resolve('./.textlintrc');
      let pluginPath = directory.resolve('./node_modules/');

      if (!existsConfig(configFile, pluginPath)) {
        if (!existsConfig(textlintrcPath, textlintRulesDir)) {
          return Promise.resolve([]);
        }

        // use global config
        configFile = textlintrcPath;
        pluginPath = textlintRulesDir;
      }

textlintrcPath、textlintRulesDir がそれぞれ setting で指定した値なのですが
両方存在しないと利用されないようになっていました。

こんな感じ

f:id:rochefort:20160620074149p:plain
例は以下で紹介されたいたものです。
linter-textlintが全く反応しない · Issue #6 · 1000ch/linter-textlint