相変わらず Emacs のカスタマイズ。
今日は、SQL のクエリを編集(正確には Treasure Data で使っている HiveQL の編集)をしていて、そういえばインデントとかうまくできないんだよなぁと思って、ちょっと調べたところ、sql-indent
というヤツを見つけた。
インストールは、いつもの package
で。
M-x package-install
Install package: sql-indent
sql-indent
は、メジャーモードでもマイナーモードでもなく、sql-mode
を拡張するものみたいで、パッケージの解説には次のようにして使えと書いてある。
(eval-after-load "sql"
'(load-library "sql-indent"))
これで何がどう変わるかと言うと、例えば次のような SQL を書きたいとする。
通常の sql-mode
だと、例えば table
の前で TAB キーを押すと、普通にタブが入力されてしまう。もう一度 TAB キーを押すと、更にタブが入力される。その他のプログラム言語用のメジャーモードに慣れていると、「インデント = TAB キー」という癖が付いているので、だいぶやりにくい。
そこで sql-indent
を入れると、TAB キーがインデントになって、なかなか良い感じ。
標準では、インデントが 4 スペースなので、次の変数で 2 スペースに変更することで、だいぶ期待通りの動きになった。
(setq sql-indent-offset 2)
あと、sql-mode
は、本来(?)は Emacs から DB サーバへ接続してインタラクティブにデータ操作ができるのが売りみたい。そのため、どの DB を使うかをセットする変数がある。特にサーバへ接続するつもりがなくても、シンタックスハイライトなどの設定も各 DB 用に用意されているようなので、主に使う DB を設定しておくのが良さそうだ。残念ながら Hive 用の設定は無かったけど。
(sql-set-product "mysql") ; mysql, postgres, oracle, sqlite...
これで手動インデントからおさらばできる。
I conceive this website has got some rattling superb info for everyone. Dealing with network executives is like being nibbled to death by ducks. by Eric Sevareid.