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に変更。