2012年2月18日土曜日

サクラエディタでPerlの構文チェック


サクラエディタでperlの構文チェックをするには、
CTRL+F5で「外部コマンド実行...」を実行し、以下のコマンドを入力します。
"[perlのパス]\perl.exe" -c "$F"
エラーがある場合はダブルクリックでエラーの行へジャンプできるので便利♪

2012年2月3日金曜日

サクラエディタでCSSの構文チェック その2

サクラエディタでCSSの構文チェック で CSSLintのWSH版 を使用したのですが、ファイルの読み込みに FileSystemObject を使用しているため、UTF-8 だと文字化けしてしまいます。
サクラエディタでJavaScriptの構文チェック その3 と同じように、ファイルの読み込みを ADODB.Stream に変更して UTF-8 に対応してみます。

まずコマンドラインオプションを処理している箇所に文字コードを追加します。
8222行目からのここを
            if (argName.indexOf("rules=") > -1){
                options.rules = argName.substring(argName.indexOf("=") + 1);
            } else if (argName.indexOf("format=") > -1) {
                options.format = argName.substring(argName.indexOf("=") + 1);
            }
こんなかんじに。
            if (argName.indexOf("rules=") > -1){
                options.rules = argName.substring(argName.indexOf("=") + 1);
            } else if (argName.indexOf("format=") > -1) {
                options.format = argName.substring(argName.indexOf("=") + 1);
            } else if (argName.indexOf("charset=") > -1) {
                options.charset = argName.substring(argName.indexOf("=") + 1);
            }

次に、ファイルを読み込む箇所に、文字コードを追加してあげます。
8222行目からのここを
        var input = api.readFile(relativeFilePath),
こうする。
        var input = api.readFile(relativeFilePath, options.charset),

最後に、FileSystemObjectを使用している箇所をADODB.Streamに変更します。
8444行目からのここを
        readFile: function(path){
            var forReading = 1;
            var tf = fso.OpenTextFile(path, forReading);
            var allText = tf.ReadAll();
            tf.Close();
            return allText;
        }
こうする。
        readFile: function(path, charset){
            var stream = new ActiveXObject('ADODB.Stream');
            stream.type = 2;
            stream.charset = charset || '_autodetect_all';
            stream.open();
            stream.loadFromFile(path);
            var allText = stream.ReadText();
            stream.close();
            return allText;
        }
UTF-8でも文字化けしなくて便利♪