4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

emacsAdvent Calendar 2021

Day 19

zetasql-formatter.elを作りました

Last updated at Posted at 2021-12-17

TL; DR

  • SQLファイルの保存時に自動で整形してくれるEmacs用パッケージを作りました

はじめに

zetasql-formatterは、@Matts966 さん謹製の、SQLを良い感じに整形してくれるやつです。
もともと、init.elの中にこれを適用する関数を作り保存時のHookに登録して利用していたのですが、Emacsアドベントカレンダー2021の記事にすべくパッケージとして独立させてみました。
正直、パッケージのお作法的なものをキチンと理解して書いているわけではないので、記事内の誤りや実装の不具合など、お気づきの点があれば、そっとマサカリなり編集リクエストなりPRなりいただきたく。

作ったもの & 使い方

下の画像の左のようなクエリを保存すると、右のように整形してくれます。

図1.png

インストール

ソースはGitHubにあるので、ここからインストールします。
インストールの方法については主旨ではないのでフットノートで1

使い方

インストールすれば、特に設定の必要はなく、sql-modeなファイルの保存時に、自動で整形されます。

注意

要Docker

整形には、zetasql-formatterのDockerイメージを使っています。つまり、

  1. dockerコマンドが必要・・なのと、
  2. 初回の実行時には、docker pull matts966/zetasql-formatter:latestが走るので、少し時間がかかる・・です。

Emacs起動時にdockerコマンドの有無をチェックし、見つからない場合は初期化の処理をスキップしているので、dockerがない環境にインストールしても問題ありません。

自動整形を無効にする方法

zetqsql-formatterは、名前の通りzetasqlを利用しています。SQLの異なる方言を利用している場合など、文法エラーが発生するかもしれません。
特定のバッファで自動整形を適用したくない場合は、zsfm-do-formatという変数にnilを代入すると、整形の処理がスキップされます2

    1. git clone git@github.com:hotoku/zetqsql-formatter-el /some/path を実行する
    2. Emacs上で、M-x package-install-fileを実行する。ファイルを尋ねられるので、/some/path/zetasql-formatter.elを指定する
  1. 例えば
    -- Local Variables: -- zsfm-do-format: nil -- End:
    とファイルの末尾に書いておけば、そのファイルでは、自動整形が無効になります。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?