Vimperatorからdel.icio.us IncSearchを使うプラグインを作った
ローカルにdeliciousのブックマークをキャッシュしておいてから,インクリメンタルサーチで簡単に検索できるdel.icio.us IncSearchをVimperatorから使えるプラグインを作ってみた.一応,Hatebu IncSearch ,livedoor clip IncSearch, Google Bookmarks IncSearchでも使えるようにしたつもり.
使い方としては,まず.vimperatorrcに使うブックマークサービスの名前(deliciousの場合不要)と一回に表示する検索結果の数(デフォルトの15でよければ不要)を書きます.
" delicious, hatebu, livedoorclip, googlebookmarksのどれか
let sbmincsearch_service_name = "delicious"
" あんまり大きくすると遅くなるかも
let sbmincsearch_max = 50
すると,deliciousならdeliciousIncsearch,hatebuならhatebuIncsearchという風にコマンドが定義されて,それを使ってIncSearch拡張のデータベースからインクリメンタルサーチできます.元の拡張の検索関数を使っているので,|によるOR検索や,!によるNOT検索,[tag]によるタグの識別なども使えます.
さらに,はてなブックマーク拡張のVimperatorプラグインのようにcompleteオプションを指定することもできます.というか,はてブ拡張のVimpプラグインの実装をとても参考にしました.
autocmd VimperatorEnter .* :set complete+=I
のように,completeにIを加えると,:openや:tabopenの結果にインクリメンタルサーチの結果を含めることができます.あと,ブックマークの同期コマンドは用意していないので,通常のIncSearch拡張の画面から同期して下さい.
2009/09/19 17:00 | Firefox | トラックバック(0) | コメント(6)
Tree Style TabとMultiple Tab HandlerをVimperatorから使うプラグイン その2
以前に作ったTree Style TabとMultiple Tab HandlerをVimperatorから使うプラグインをもう少しバージョンアップしてみた.Firefox 3.5 + Vimperator 2.1でのみ動作確認しています.
前回からの変更点はたぶん以下のような感じ.
- Vimperatorのタブ移動コマンドでは,TreeStyleTabで畳んでいるタブから次のタブへ移動するときに次のタブへ行かずにタブを展開してその子タブへ移動してしまうので,それを修正するようにタブの移動コマンドを再定義した.
- TreeStyleTabで<C-w>k, <C-w>j, <C-w>h, <C-w>lでそれぞれタブバーの位置を上下左右に配置できる.APIがあったからやってみたけど,これはあんまりいらないかも.
- MultipleTabHandlerでタブのURIをコピーする時のフォーマットをカスタマイズできるようになったので,それを利用するmcopyコマンドを定義.これでcopy.jsとまではいかなくてもそれなりに柔軟に,しかも複数タブ同時にURLやタイトルをコピーすることができる.MultipleTabHandlerの設定画面で定義したフォーマットを使えるのでそこそこ便利だと思う.
- MultipleTabHandlerとTreeStyleTabが両方インストールされているときには,ツリーの構造に従ってタブを選択するコマンドを作成した.zsで同じレベルのタブ全部,ztで同じツリーのタブ全部を選択できる.
例によって問答無用でデフォルトのマッピングを上書きしたりするので,ご利用には十分ご注意下さい.
2009/09/19 16:31 | Firefox | トラックバック(0) | コメント(0)
VimperatorをTreeStyleTab対応にするパッチのようなもの
さんざかpiroさんとteramakoさんがやっているのであれなのだが,日頃からVimperatorとTreeStyleTabを併用していて興味があったので,自分でもやってみた.
要するにpiroさんのtabFx2CompatibleをもとにVimperatorのタブに対する番号振るのを実現したら良いということなのでVimperatorのbinding部分のソースを見てみた.すると,Macとそれ以外ではタブに対するbindingが別々になっていて,そのMac用のbindingとtabFx2Compatibleの構造が似ていたので,tabFx2CompatibleからVimperatorのMac用bindingに近くなるように操作してやることにした.作ってみたパッチと,それぞれのbinding部分をgistに貼ってみたので,興味がある人は見てみて下さい.
teramakoさんのエントリにもあったけど,なぜかタブのタイトルがおかしくなってしまうので,タブのテキストの前に番号入れるのを諦めて,後ろに入れるようにしたら一応うまくいった.あと,元のVimperatorのbindingはxbl:inherits属性を使って番号を振ってるけど,それをJavaScriptから操作する方法がよくわからなかった.まぁともかく自分の環境では動いたのでよかったことにする.
XULはほとんど触ったことなくて,以前にpiroさんのLatest topics > タブからプレースホルダーがゴッソリ消えた件についての憤り - outsider reflexのエントリを読んだときはいまいちよく分からなかったけど,今回ちょっと触ってみてなんとなく意味が分かった気がした.
2009/4/16 22:43 追記: ぎゃー!git pull --rebaseしたらタブが消えた!いないと思うけど,上記パッチ試される方は,自己責任でお願いしますm(_ _)m
2009/4/17 14:53 追記: タブ消えるの直した.それと,TreeStyleTabのソース見てタブの構造いじるコードを分離してみた.あと,Vimperatorは番号振るのにordinal属性を使ってて,TreeStyleTabも別の目的でordinal属性使ってるっぽいので,ここも注意しないと動作がおかしくなりそう.
2009/4/17 16:45 追記: パッチのせいか分からないけど,タブ消去時に番号がうまく振り直されなかったので,TabCloseの番号振り直す関数にsetTimeoutを挟んで無理矢理対処してみた.
2009/4/17 20:14 追記: もうちょいコードを整理してみた.今の自分の知識ではこれが限界かなぁ.
2009/04/16 22:28 | Firefox | トラックバック(0) | コメント(0)
VimperatorでウェブページのコンテキストでJavaScript実行
通常のjsコマンドのようにChromeのコンテキストではなくて,FirebugのコンソールみたいにウェブページのコンテキストでJavaScriptを実行する(つもり).なんかもっとうまい書き方があるような気がするけど,with文で無理矢理やってみた.
.vimperatorrcに中に以下のように書くと,wrappedjavascriptまたはwjsコマンドが使えます.補完が効かなかったり,名前が微妙だったりするけど,とりあえず動きます.
2009/01/20 11:32 | Firefox | トラックバック(0) | コメント(0)
livedoor Readerでスクロールをスムーズにする続きの続き
LDR/Fastladderでアイテムの高さを制限してサクサク読むためのスクリプト - by edvakf in hatenaの記事で,ぼちぼち散歩 livedoor Readerでフィードを読むのがちょっとだけ早くなるかも知れないUser CSSで作ってみたCSSを改良する,fastladder_fixed_item_height.user.jsというGreasemonkeyを作ってくださったので,スクロールをスムーズにするやつをこれに対応してみた.
二つのGreasemonkeyを両方インストールすると各アイテムのスクロールもスムーズになるはずです.
fastladder_fixed_item_height.user.jsはOperaでもFirefoxでも動くのに対して,こっちのldr_smooth_scroll.user.jsはFirefoxバリバリなので,大変申し訳ない限りです.もうちょっとがんばって,設定画面以外はOperaでも動くようにがんばってみようかな.
2009/1/20追記: 一応Operaでも動くようにしてみた.
ただし,OperaではE4X動かないので,設定画面の追加部分はコメントアウトしてます.あと,Safri + GreaseKitでも動くようにしたかったけど,DOM要素に対する__(define|lookup)(setter|getter)__がうまくいってない?っぽくてできなかった.変な実装にするんじゃなかったな.
2009/01/16 23:50 | Firefox | トラックバック(0) | コメント(0)