TL; DR
- SQLファイルの保存時に自動で整形してくれるEmacs用パッケージを作りました
はじめに
zetasql-formatterは、@Matts966 さん謹製の、SQLを良い感じに整形してくれるやつです。
もともと、init.elの中にこれを適用する関数を作り保存時のHookに登録して利用していたのですが、Emacsアドベントカレンダー2021の記事にすべくパッケージとして独立させてみました。
正直、パッケージのお作法的なものをキチンと理解して書いているわけではないので、記事内の誤りや実装の不具合など、お気づきの点があれば、そっとマサカリなり編集リクエストなりPRなりいただきたく。
作ったもの & 使い方
下の画像の左のようなクエリを保存すると、右のように整形してくれます。
インストール
ソースはGitHubにあるので、ここからインストールします。
インストールの方法については主旨ではないのでフットノートで1。
使い方
インストールすれば、特に設定の必要はなく、sql-mode
なファイルの保存時に、自動で整形されます。
注意
要Docker
整形には、zetasql-formatterのDockerイメージを使っています。つまり、
-
docker
コマンドが必要・・なのと、 - 初回の実行時には、
docker pull matts966/zetasql-formatter:latest
が走るので、少し時間がかかる・・です。
Emacs起動時にdockerコマンドの有無をチェックし、見つからない場合は初期化の処理をスキップしているので、dockerがない環境にインストールしても問題ありません。
自動整形を無効にする方法
zetqsql-formatterは、名前の通りzetasqlを利用しています。SQLの異なる方言を利用している場合など、文法エラーが発生するかもしれません。
特定のバッファで自動整形を適用したくない場合は、zsfm-do-format
という変数にnil
を代入すると、整形の処理がスキップされます2。