雑文発散

«前の日記(2014-04-07) 最新 次の日記(2014-04-09)» 編集
過去の日記

2014-04-08 [長年日記]

[Emacs] SQL の編集時にインデントをなんとかしたくて sql-indent を Emacs へ入れてみた

相変わらず 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...

これで手動インデントからおさらばできる。

本日のツッコミ(全1件) [ツッコミを入れる]
Richard (2016-12-23 08:55)

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.