vscodeでパーサージェネレータpest独自形式のコードをフォーマットする
Table of Contents
概要
rustのパーサージェネレータにpestというライブラリがある。
パーサーを生成する際に独自のpest形式のファイルを利用するが、
2026/02/17現在、既存のvscodeのプラグインでフォーマットできない。
そこで汎用的なvscodeのフォーマットのラッパープラグインである
vscode-custom-local-formattersと
cargoでインストールできるpest-fmtを用いて*.pest形式のファイルを
フォーマットする方法を示す。
前提条件
前提条件はつぎのとおりである。
- rustのパッケージマネージャである
cargoがインストールされていること- インストール方法は公式サイトを参照してください。
${HOME}/.cargo/binがPATHに登録されていること
- シェル(例:
bash)が動作すること
手順
最初にpestのフォーマッターであるpestfmtをインストールする。
cargo install pest_fmt
次にvscodeで次のプラグインをインストールする。
vscode-custom-local-formatters
そして次のようにsettings.jsonに書く。
"customLocalFormatters.formatters": [
{
"languages": [
"pest"
],
"command": "bash -c \"pestfmt ${file} >/dev/null && cat ${file}\"",
}
]
Tip
vscode-custom-local-formattersは標準出力へ出力された出力でファイルを置換します。
しかしpestfmtはstdoutへフォーマットされた出力を書き込まず、
ファイルを直接置換します。
そのため、冗長ですが置換したファイルを再度読み込ませています。
これを一つのコマンドラインで動かすためにbashでラップしています。
ちなみにCLIで直接フォーマットする場合は次のようにコマンドを実行できます。
pestfmt hoge.pest