Emacs で csstidy

[vimでCSSTidy]
http://blog.hide-k.net/archives/2007/06/vimcsstidy.php


Emacsだとこんな感じですかね 。まだちょっとしか使用してないのでバグるかもしれないけど...

(defun csstidy-buffer ()
  "Run csstidy on the current buffer."
  (interactive)
  (save-excursion
    (shell-command-on-region (point-min) (point-max)
                             (format "csstidy %s --silent=true --sort_properties=true"
                                     (buffer-file-name (current-buffer)))
                              nil t)))

;;; オプションは適当に追加


hoge.css を編集している時に、 M-x csstidy-buffer を呼び出すとソースが整形されます。( あらかじめ csstidyはシェルのパスが通っているところに置いておくように )

CSSTidyは標準出力を受け取ってくれないみたいなので、Emacsの場合では バッファ名からファイル名を引っ張って,それをシェルに渡した出力で強引にバッファ全体を書き替えてみました。なので cssファイル単体として編集してる時じゃないとダメですね。それ◯◯できるよ!ってやり方があったら教えて!

余談


さてさて CSSTidyはいろんな整形オプションがあるのが面白いですね。プロパティやセレクタのソートとか、圧縮の設定とか。僕はCSSはほとんどいじらないのでただ感心してたんですけど、デザイナさん的にはどうなんでしょうか ?

perltidyにしろcsstidyにしろ、こういう整形ツールはソースを奇麗にするっていう機能はもちろんですが、プログラマやコーダーが各自持ってる俺俺コーディングルールの差を吸収して 曖昧さが無く統一的なソース整形ができるって点もとても重要なんじゃないかなぁと思います。コーディングスタイルの「見やすい」「見にくい」っていう視点は個人の感覚に依り過ぎるので( ある程度譲歩すべきラインはありますが )、整形は機械任せにしちゃった方が中立的で喧嘩せずに済みそう。(まぁ その整形ツールも誰かの「見やすい」を元に作られているのだけど)

ちなみに

csstidy-buffer は perltidy-region インスパイヤ です!

http://unknownplace.org/memo/2005/12/11#e001