2008年11月20日

[vimperator]リクエスト結果をバッファ出力(muilti_requester.js)


vimperator が便利すぎてやばい。

元々、ほんの些細なブラウザ操作でもキーボードから手を離すのがかなりのストレスになるのだが、マウスでブラウザ操作するのは半ば諦めていたのに、かなり軽減された。

今までもなるべく手間を減らすように、ブックマークにキーワードを設定したり、Ctrl + L とかでアドレスバーなどにフォーカス後、URL を入力して飛んだりしていたのだけれど、検索や辞書などはそこからまたキーワードを入力せねばならなかったり。

しかし、それが 以下の vimperator plugin でかなり改善された。
Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン - hogehoge はてなブックマーク数
しかし、
「リクエストしてレスポンスをバッファに表示したい内容」
って、結構沢山ありそうで、もう少し拡張性がほしくなったので、プラグイン書いた。

CodeRepos::Share – Trac - _libty.js (共通ライブラリ) はてなブックマーク数
CodeRepos::Share – Trac - multi_requester.js (for vimperator ver. 1.2) はてなブックマーク数
CodeRepos::Share – Trac - multi_requester.js (for vimperator ver. 2.0pre) はてなブックマーク数

仕様的には、lookupDictionary.js と似ている。(というか中身もぱくってる!)
実際にはこんな感じで表示される。

20081119_1.jpg


大体の使い方はプラグインのコメントに書いてるけれど、 ここでも説明しておく。
(これ読んで使おうと思う人は、ここでの説明はあんまりいらない気もするが)

SITEINFO


リクエストする URL は以下で拡張可能(優先順位高い順)

ex.) .vimperatorrc
javascript <<EOM
liberator.globalVariables.multi_requester_siteinfo = [
{
map: ',me', // optional: keymap for this siteinfo call
bang: true, // optional:
args: 'any' // optional:
name: 'ex', // required: subcommand name
description: 'example', // required: commandline short help
url: 'http://example.com/?%s', // required: %s <-- replace string
xpath: '//*', // optional: default all
srcEncode: 'SHIFT_JIS', // optional: default UTF-8
urlEncode: 'SHIFT_JIS', // optional: default srcEncode
ignoreTags: 'img', // optional: default script, syntax 'tag1,tag2,……'
extractLink: '//xpath' // optional: extract permalink
},
];
EOM

追記 2008/12/02 23:53 map, bang, args, extractLink追加

主な lookupDictionary.js と異なる点は、name の値がコマンドとはならないところ。
複数のリクエストを拡張する為に、サブコマンドとなっている。

Usage


実際のコマンドはデフォルトは :mr
:mr ex INPUT_KEYWORD

とすることで、%sINPUT_KEYWORD で置換されてリクエストされる。
追記 2008/11/20 03:00: テキストを選択状態で引数がない場合は、選択テキストで置換して実行するようにした。

:mr! ex INPUT_KEYWORD

とすると、結果が新しいタブに表示され、

:mr! ex -s

と -s オプションをつけることで、選択された文字列で実行される。
追記 2008/11/20 03:00: テキストを選択していて、引数がなければ自動で実行するようにした。
メインコマンドの :mr が気に入らない場合は、

let g:multi_requester_command = "ANY1, ANY2, ……";
or
liberator.globalVariables.multi_requester_command = [ANY1, ANY2, ……];

で上書き可能。

Mappings


上記まででもだいぶタイピングの量は減るのだけれど、もっと簡略化する為のキーマッピングも設定可能。
liberator.globalVariables.multi_requester_mappings = [
[',ml', 'ex'], // <-- :mr ex
[',ma', 'alc', , 'arg'], // <-- :mr alc arg
[',mg', 'goo', '!', 'arg'], // <-- :mr! goo
];

設定内容は見たまんま。

自分でキーマップするのとの違いは、文字列が選択状態か arg が設定されている場合はすぐにリクエストが実行され、それ以外は入力待ちになるところ。
なので、この例の場合、何か文字列を選択した状態で ,mg とキーを打つと、即座に goo辞書 で検索結果が新しいタブに表示される。

Options


let g:multi_requester_use_wedata = "false" // true by default
wedata 利用制御フラグ。

追記 2008/11/20 01:50: 2.0pre バージョンを anekos さんが commit してくれた。
追記 2008/12/12 02:20: _libly.js が必要となってます。

Links


- CodeRepos::Share Trac - _libty.js (共通ライブラリ) はてなブックマーク数
- CodeRepos::Share – Trac - multi_requester.js (for vimperator ver. 1.2) はてなブックマーク数
- CodeRepos::Share – Trac - multi_requester.js (for vimperator ver. 2.0pre) はてなブックマーク数
- アイテム - データベース: Multi Requester - wedata はてなブックマーク数
- Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン - hogehoge はてなブックマーク数
- suVeneのあれ: [vimperator]multi_requester.js で天気予報をみる!(extractLink) はてなブックマーク数
posted by suVene at 00:09