ソースコードを整形する

1年前にCの仕事を始めたときは、エディタが自動整形してくれないことに絶望していた。
なんて面倒くさいんだ…。
面倒なことは大嫌いなので速攻でツールを検索。
とりあえず「Artistic Style - Index」に落ち着いた。
xyzzyからこんな感じで使用。
(Astyle.exeはxyzzyディレクトリに'bin'ディレクトリを作成し、その中に置いてある。)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Artistic StyleでCソース整形 (Artistic Style 1.22専用)
;;
;; 現在のバッファをAstyle.exeで整形する。
;; 実行終了を待ってからバッファの再読込を行う。
;;
;; ここで使用しているArtistic Style のオプション
;; -t4 : インデントをタブで行う。タブ幅は4を指定。
;; -S  : 'switch' に対して 'case XXX:' をインデントする。
;; -l  : ブラケットをclassや関数宣言では行分割し、ブロック前文と同じ行に置く。('--brackets= linux')
;; -p  : 演算子だけの場合、前後に空白を挿入する。
;; -y  : '--brackets=attach' か '--brackets= linux' を使用したときに、 先行する閉ブラケットと閉ヘッダ(例えば'else', 'catch', ...)を行分割する。
;; -X  : 標準エラー出力でなく標準出力へエラーおよびヘルプ情報を表示する。
;; -v  : 冗長なモード。オプション情報等を表示する。
(defun astyle () (interactive)
  (setq curbuf (buffer-name (selected-buffer)))
  (pipe-command (concat (merge-pathnames "bin/AStyle.exe" (si:system-root)) " -t4SlpyXv " (get-buffer-file-name)))
  (setq resultbuf (buffer-name (selected-buffer)))
  (switch-to-buffer curbuf)
  (revert-buffer)
  (switch-to-buffer resultbuf))
(define-key spec-map #\C-a 'astyle)