vimperatorプラグイン基礎の基礎

vimperatorプラグイン(ここでは何らかの動作をコマンドとして登録)の作り方を調べたのでメモ。

hostsの変更を反映してくれるアドオン、DNS Flusherと同様の機能をコマンドとして登録してみました。

function flush() {
    //ioサービス生成
    var io = Components.classes['@mozilla.org/network/io-service;1'].createInstance(Components.interfaces.nsIIOService); 
    
    //オンラインモードなら
    if(!io.offline) {
        //キャッシュサービス生成
        var cache = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
        
        //オフラインモードに切り替え
        io.offline = true;
        //キャッシュクリア
        cache.evictEntries(Components.interfaces.nsICache.STORE_ANYWHERE);
        //オンラインモードに切り替え       
        io.offline = false;
    }else {
        //コマンドラインバッファにメッセージ出力
        liberator.echo('Please release offline mode!');
        //ビープ        
        liberator.beep();
    }
}

//addUserCommandでコマンドを登録
//第1引数にコマンド、第2引数に簡易説明、第3引数に実行するfunctionを渡す
commands.addUserCommand(
    ['flush'],
    'Flush hosts settings',
    function() {
        flush();
    }
);

上記スクリプトjavascriptファイルとしてVimperator/pluginに保存するか、javascriptとして.vimperatorrcに追記するとDNS Flusherで行っている、
オフラインモード→キャッシュクリア→オンラインモード
という動作をflushというコマンドで実行できるようになります。
(IPの表示は実装していないので確認できないですが。。。)


追記:2.0との互換性を維持するためliberator.commands.addUserCommandからcommands.addUserCommandに変更。