だんだんVimpの気持ちがわかるようになってきた。
以前のエントリでjsゴリゴリで作った「LDRで購読停止するコマンド」をVimp的書き直すと以下のようにシンプルになる
" LDRで購読停止するコマンド command ldrunsubscribe js window.content.window.wrappedJSObject.Control.unsubscribe() " LDRに移動したときには"U"にコマンドをマップする autocmd LocationChange .* :map U <NOP> autocmd LocationChange reader\\.livedoor\\.com :noremap U :ldrunsubscribe<CR>
よりVimp的になった気がする。
ちなみに以前のやつはこんな感じ
javascript <<EOM commands.addUserCommand( ['unsub[scribe]','us'], 'LDR unsubscribe feed', function() { if(!window.content.location.toString().match(/^http:\/\/reader\.livedoor\.com\/reader\//)) { liberator.echoerr("このページ、LivedoorReaderじゃない"); return; } window.content.window.wrappedJSObject.Control.unsubscribe(); liberator.echo('unsubscribed!'); } EOM
でも、どちらかと言うと後者の方が何をやっているかはわかりやすい。
Vim的というかVimp的な commandと autocmdを駆使したやつは、なんか関数プログラミング的というか、簡潔に書けるけどどう動くか分かりづらいというか...
まあ、vimpのスクリプトで大した処理は書く気ないけどね。
マップを外すためにわざわざコマンド作ってたけど、<NOP>使えばいいことに気が付いた。ので、ちょっと修正。
[/^http:\/\/reader\.livedoor\.com\/reader/, [
['U', function () window.content.window.wrappedJSObject.Control.unsubscribe()],
]],