Hatena::Groupvimperator

vimpがあればなんでもできるっ! RSSフィード

 | 

2009ねん02がつ09にち、

以前作ったLDRで購読停止するコマンドをVimperator的にするとこんな感じかな?

18:34 | 以前作ったLDRで購読停止するコマンドをVimperator的にするとこんな感じかな? - vimpがあればなんでもできるっ! を含むブックマーク はてなブックマーク - 以前作ったLDRで購読停止するコマンドをVimperator的にするとこんな感じかな? - vimpがあればなんでもできるっ!

だんだん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的な commandautocmdを駆使したやつは、なんか関数プログラミング的というか、簡潔に書けるけどどう動くか分かりづらいというか...

まあ、vimpのスクリプトで大した処理は書く気ないけどね。

追記:2009.2.10

マップを外すためにわざわざコマンド作ってたけど、<NOP>使えばいいことに気が付いた。ので、ちょっと修正。

wocotawocota2009/02/21 01:19localkeymode.jsでやるのはどーだろうか
[/^http:\/\/reader\.livedoor\.com\/reader/, [
['U', function () window.content.window.wrappedJSObject.Control.unsubscribe()],
]],

snaka72snaka722009/02/22 13:21おお、localkeymode.jsつかえばもっとシンプルに設定が書けそうですね。試してみます!

トラックバック - http://vimperator.g.hatena.ne.jp/snaka72/20090209
 |