続・HTML Tidyをサクラエディタのマクロから呼び出す

HTML Tidyをサクラエディタのマクロから呼び出す - Bouldering & Com.で書いたのの修正。
前の版だといちど保存してから押さなきゃいけなかったけど、どうせテンプファイルにtidyの結果を吐かせる必要があったので、先にテンプファイルに編集中のファイル内容を吐き出して、それに対してtidyをかけるように変えた。
少しマシになったけど、HTMLtidyはCSSとJSは整形対象になってないぽいのでやっぱり不満が残る。
CSS整形とJS整形は別のやつ使うか。

(function(){
    var _tidy_home = "C:\\tidy_jp_win\\";
    var _tidy_bin = "bin\\tidy.exe";
    var _tidy_conf = "sh_tidy.conf";
    var _temp_file = _tidy_home + ".temp_for_tidy2";

    var _charcode_table = ["shift_jis", "iso-2022-jp", "x-euc-jp", "unicode", "utf-8", "utf-7", "unicodeBE"];

    // save temp file
    //Editor.FileSaveAs(_temp_file, 99, 0);
    
    // output current status
    Editor.SelectAll();
    var _f_text = Editor.GetSelectedString(0);
    access_by_ado(function(stream) {
        stream.WriteText(_f_text);
        stream.SaveToFile(_temp_file, 2);
        return _f_text;
    });

    // execute tidy
    Editor.ExecCommand(_tidy_home + _tidy_bin
                         + " -quiet -config " + quote(_tidy_home + _tidy_conf)
//                         + " -o " + quote(_temp_file)
//                         + " " + quote(Editor.GetFileName())
                         + " -m " + quote(_temp_file)
                       , 0);

    // read temp file
    _f_text = access_by_ado(function(stream) {
        stream.LoadFromFile(_temp_file);
        return stream.ReadText();
    });

    // del all
    Editor.SelectAll();

    // paste
    Editor.InsText(_f_text);

    function quote(_src) {
        return "\"" + _src + "\"";
    }

    function access_by_ado(exec) {
        var stream = new ActiveXObject("ADODB.Stream");
        stream.Type = 2;
        stream.Charset = _charcode_table[Editor.GetCharCode()];
        stream.Open();

        var _text = exec(stream);

        stream.close();
        return _text;
    }

    function read_by_fso() {
        var ForReading = 1;
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var ts = fso.OpenTextFile(_temp_file, ForReading);
        var _f_text = ts.ReadAll();
        ts.Close();
        return _f_text;
    }

})();