KomodoでLatin-1撲滅を試みる2008年10月30日 04時16分58秒

KomodoでHTAを書いてみようと思ったわけだが

仕事でちょっとしたツールが必要になったので、久々にHTAを書くことにした。

単純なJSやHTAなんかは大体サクラエディタでしこしこと書くのだが、バッチやら参照ディレクトリやらでちくっと複雑になりそうだったのでKomodoを使ってみることにした。

が、ちと困ったことが。Shift_JISのソースをKomodoで開くとなぜか「Latin-1」として検出されてしまい、こんな具合で表示されるのだ。

Latin-1化けすぎ

ほんとはこうなんだけど。

ほんとはSJIS

開くたび変更するのは面倒くさい

ドキュメントのプロパティでCP932に変更すればちゃんと表示されるんだけども恒久的に覚えてくれるわけじゃないので、ファイルを開くたびにちくちくと設定する必要があり、すごく面倒くさい。

なので、なにか手はないかと思って調べたら、どうやらKomodoのマクロはファイルを開くタイミングで起動することができるらしい。これでなんとかならんか。

で、マクロ書いてみた

先のリンクとかを参考に、こんなマクロを書いてみたわけだが。

if( ! komodo.document ) return;
var doc = komodo.document;
if( doc.encoding.short_encoding_name == "Latin-1" ) {
    try {
        doc.setEncodingFromEncodingName( "CP932" );
    } catch(e) {
        ko.dialogs.alert( e );
    }
}
このマクロをとりあえずはプロジェクトに登録し、プロパティの「Triggers」で「after file open」を設定してみると、Latin-1として検出された場合のみCP932にエンコードを自動的に変更してくれる。あー、これでイライラせずにすむわ。

ちなみにCP932以外に設定したかったり、トリガになるエンコーディングをLatin-1以外にしたかったりしたら、使用したいエンコードのファイルをKomodoで開いて、以下のマクロで調べてみればよいかと。

if( ! komodo.document ) return;
ko.dialogs.alert( komodo.document.encoding.short_encoding_name );

あ、そういやマクロ中で使用している komodo オブジェクトは使用が推奨されていないそうな。なのでKomodoのバージョンがあがったら動かなくなる可能性なきにしもあらず。まぁ気にしない。

そういや、これToolboxに登録しても検出してくれるのかな?

Komodoでアクティブなファイルを実行2008年10月30日 04時30分35秒

続けてKomodoネタ。しかも超コネタ。

HTAやWSH向けのJSファイルなんかだと、編集 → 起動 → また編集... てなサイクルで作業を行うんだけど、いままでいちいちエクスプローラに切り替えてから起動していた。これまた結構面倒くさくなってくるやり方だ。

なのでマクロかなにかで編集中のファイルをさくっと起動できないかとごにょごにょいじってて、さっきようやくできるようになった。非常に単純な話で、Tookboxにコマンド登録しときゃいいと。

具体的には、「New Command...」でコマンド登録ダイアログを呼び出し、「Command」欄に "%F" と登録する。変数「%F」を二重引用符でくくるのを忘れないように。

んでさらに「Run in」で「No Console (GUI Application)」を選択する。これで起動できるようになった。

ついでに「Key Binding」で F5 とかを設定しておくと、キー一発で現在アクティブなファイルをデフォルトアプリケーションで起動できるようになる(HTMLを編集中ならデフォルトブラウザ、とか)。うん、結構快適になったかも。

オマケ

これまたさっきようやく気づいたのだが、Ctlr + Page UP(またはPage Down)でタブフォーカス切り替えられるのね。