Hatena::Groupvimperator

ヴィンペラートル・オクタウィアヌス RSSフィード

記事一覧 | はてダ
 | 

2010-05-26

タブのサムネイルを表示する補完を作ろうとしたけど上手くできなかった

| 22:32 | タブのサムネイルを表示する補完を作ろうとしたけど上手くできなかった - ヴィンペラートル・オクタウィアヌス を含むブックマーク はてなブックマーク - タブのサムネイルを表示する補完を作ろうとしたけど上手くできなかった - ヴィンペラートル・オクタウィアヌス

まずは

現在のタブのサムネイルをechoするワンライナっぽいもの
:js commandline.echo(template.commandOutput(<><img src={tabs.getTab().__thumbnail.toDataURL()}/></>),null,commandline.FORCE_SINGLELINE)

_libly.jsが入っていると割と格好よくechoされる

サムネイルを補完させたい

とりあえず作ったスクリーンショット

f:id:voidy21:20100526221957p:image

ソース
commands.addUserCommand(
    ["thumbnail"],
    "View Thumbnails",
    function(args){
        if(args != "") {
            liberator.open(args.string);
        }
    },
    {
        count: false,
        completer: function(context, args) {
            let filter = context.filter;
            context.keys = {title: 'title', thumbnail: 'thumbnail', url: 'url', text:'text'};
            context.process = [templateThumbnail,function(obj){return obj.url}];
            context.title = ['Buffer','URL'];
            context.completions = generateCandidates();
        }
    },
    true
);

function templateThumbnail(obj) {
    return <>
      <img src={obj.thumbnail}/>{obj.title}
    </>;
}

function generateCandidates() {
    let allTabInfo = [];
    let index = 0;
    for each ( [,tab] in tabs.browsers ) {
        let url = tab.currentURI.spec;
        let title = tab.contentTitle;
        let getTab = tabs.getTab(index++);
        let thumbnail = ('__thumbnail' in getTab) ? getTab.__thumbnail.toDataURL() : "";
        let tabInfo = {
            "text": index + ":",
            "url" : url,
            "thumbnail" : thumbnail,
            "title" : title,
        }
        allTabInfo = allTabInfo.concat(tabInfo);
    }
    return allTabInfo;
}
問題点
  • タブ数が増えると非常に残念な補完になる(スクロールされない)
  • サムネイルを作成するタイミングがある(タブ移動時?)ので、開いたばかりのタブとかはサムネイルが出来ていない

caisuicaisui2010/05/27 01:15ワンライナーのほうは、getTab()→getTab(数字) ではないでしょうか?
エラーでたので報告です。

voidy21voidy212010/05/27 07:09> id:caisui
コメントありがとうございます!
>> ワンライナーのほうは、getTab()→getTab(数字) ではないでしょうか?
一応、ソースを見る限り、数字を省略しても大丈夫なはずなんですが・・・
http://code.google.com/p/vimperator-labs/source/browse/common/content/tabs.js?r=7c7331c0ad121902689d067449dd091e45c41f7c#182
おそらくエラーはタブを開いたばかりで__thumbnailが作られていなかったからではないかと思いますが、間違っていたら申し訳ないです

caisuicaisui2010/05/28 01:15問題点の2番目が 問題でした。
何も考えずに、開いたtabで ワンライナー走らせてました。orz
お騒がせしました。

 |