aleでRe:VIEWのlinterにRedPenを使う際に必要な修正箇所をまとめてみた

vimでaleを使ってRe:VIEWドキュメントのlintを実施する際に必要になるRedPenについて、設定ファイルの扱いが嵌りどころであると感じました。今回はHomeBrew経由でRedPenを導入する時を例にしてまとめました。
2020.08.07

はじめに

vimでRe:VIEWフォーマット文書を校正する場合、aleベースだとlinterはRedPen一択になります。ただ、aleからのRedpen呼び出しはオプションについて余り考慮されていないのが事実です。

confファイルの設定で嵌りやすい場所や、公式ドキュメントでの記述についての補足等を含めて、動作するまでの過程をまとめました。version 1.10.4ベースとなります。

RedPenの導入

インストール後、設定ファイルの編集を行います。

brew install redpen

設定ファイルの指定

公式ドキュメントによると、設定ファイルの適用は以下の順です。

  1. 作業ディレクトリのredpen-conf.xml
  2. 作業ディレクトリのredpen-conf-{lang}.xml
  3. $REDPEN_HOME/confのredpen-conf.xml
  4. $REDPEN_HOME/confのredpen-conf-{lang}.xml

{lang}はLOCALE設定に依存するとありますが、実装を見る限りでは実行時オプションの-L--langの指定に基づくもののようです。

aleのlinter指定を使う場合、-Lオプションが呼び出しに含まれておらず、且つredpen-conf.xmlが存在しないため、redpen-conf-en.xmlが適用されます。redpen-conf-ja.xmlを複製してredpen-conf.xmlとして設置するのが手っ取り早いでしょう。

なお、HomeBrew経由で導入する場合は設定ファイルが/usr/local/Cellar/redpen/以下にあるため、以下のような操作となります。

cp /usr/local/Cellar/redpen/$(redpen --version)/libexec/conf/redpen-conf-ja.xml /usr/local/Cellar/redpen/$(redpen --version)/libexec/conf/redpen-conf.xml

設定ファイル初期状態で日本語の校正をすると、句点と句読点がエラー扱いになります。そこで以下の指定を追加します。

  <symbols>
    <symbol name="FULL_STOP" value="。"/>
    <symbol name="COMMA" value="、" />
  </symbols>
</redpen-conf>

valueに複数の文字を指定することは出来ない点だけ注意しましょう。

aleにreviewのlinter指定を入れる

プラグイン指定が漏れている場合は、以下のように追加します。

[[plugins]]
repo = 'w0rp/ale'
hook_add = '''
    let b:ale_linters = {
    \   'review': ['redpen']
\}

以降、Re:VIEWのドキュメント編集時にLinterが起動するようになります。

あとがき

aleでRe:VIEWの校正を行おうとしたものの意図した通りにredpenが動作せず、ドキュメントとソースコードを辿ってみた結果、想定外の指定になっていたというところでした。

割と嵌りどころであり、今回の記事と自身の環境でのパス等が一致しない場合は、自身の環境に合わせた調整が必要になります。

参考リンク