Emacs から jq を使って json を整形する

ネットを探してパクって見つけました。
リージョン選択した部分をコマンドに渡すには、shell-command-on-region を使うんですね。
勉強になります。

(defun jq-format (beg end)
  (interactive "r")
  (shell-command-on-region beg end "jq ." nil t))

人間が読みやすいように整形します。
それと、Emacs は一行が長いと動作がめっちゃ遅くなるので
巨大なファイルの場合など複数行に整形したほうがサクサク動作するというメリットもあります。

(defun jq-compact (beg end)
  (interactive "r")
  (shell-command-on-region beg end "jq -c ." nil t))

設定ファイルなんかだと、また1行に戻したい場合もあるので、
戻す版も作ってみました。

応用としてスクラッチに置いたテキスト同士をサクッと diff 取りたいなー
なんていう事も shell-command-on-region を使って簡単なスクリプトを書けば
すぐできそうです。ediff で表示するようにすれば最高ですね。