SQL崩しとも言うようです。 すごく適当なメモです。気が向いたら修正などするかもです。
sonota's anbt-sql-formatter at master - GitHub ここからアーカイブをダウンロードして展開して適当なところに置く。 以下では、展開して出てきたフォルダを ~/anbt-sql-formatter となるように置き、 その中に bin, lib, ... がある状態にしたとして進める。 テストがしたければ $ cd ~/anbt-sql-formatter $ ruby setup.rb test しなくてもOK。 動作確認(これも必須ではない) $ cd ~/anbt-sql-formatter $ ruby bin/anbt-sql-formatter sample.sql (サンプルSQLを整形した結果が出力される) .emacs.el に以下を追加
(defvar anbt-sql-formatter:formatter-path
"~/anbt-sql-formatter/bin/anbt-sql-formatter")
(defun anbt-sql-formatter:format ()
"Format SQL on specified region."
(interactive)
(let ((beg)
(end))
(if mark-active
(setq beg (region-beginning)
end (region-end))
(setq beg (point-min)
end (point-max)))
(save-excursion
(shell-command-on-region
beg end
(format "ruby %s" anbt-sql-formatter:formatter-path) nil t))))
(add-hook 'sql-mode-hook
(lambda ()
(define-key sql-mode-map (kbd "C-S-f") 'anbt-sql-formatter:format)))
リージョンを指定して M-x anbt-sql-formatter:format RET または C-S-f で整形できる。 リージョンが指定されていない場合はバッファ全体を整形する。 ---- インデントの幅や改行などの整形ルールや 関数名として扱うキーワードなどもカスタマイズできますが説明は割愛。 とりあえず bin/anbt-sql-formatter をコピーして bin/my-sql-formatter を作って そっちでゴニョゴニョやる、という方法を推奨しておきます。
関連記事
参考(外部リンク)
- 2007-12-23 Emacs で SQL を整形する ― ありえるえりあ