ブックマークをタグで絞り込んで開く その2

  • TreeStyleTab の チェック方法を修正
  • に 割り当て
  • タグに数字が含まれていると正常動作しない問題を修正
  • オートコンプリートの補完でbookmarkは 数字が 補完されるように修正
  • タグを一つも指定していない場合のエラーメッセージを追加

ソースはこちら

以下差分

diff -r f8a1af9da174 tagBookmark.js
--- a/tagBookmark.js	Sat May 02 00:34:07 2009 +0900
+++ b/tagBookmark.js	Thu Jun 25 00:31:02 2009 +0900
@@ -15,7 +15,7 @@
   let openURL = function(url){
     liberator.open(url, liberator.NEW_TAB);
   };
-  let openURLs = TreeStyleTabService ?
+  let openURLs = ("TreeStyleTabService" in window) ?
     function(list){
       TreeStyleTabService.readyToOpenNewTabGroup(gBrowser);
       gBrowser.loadTabs(["about:blank"].concat(list));
@@ -47,13 +47,27 @@
     }
   };
 
+	var map ={
+		modes:[liberator.modules.modes.NORMAL]
+		,keys:["<C-t>"]
+		,desc:"open bookmark from tag"
+		,action:function open_cmd(){
+			commandline.open("",":tagopen /",liberator.modules.modes.EX);
+		}
+	};
+
+	mappings.addUserMap(map.modes,map.keys, map.desc, map.action);
   cmd.addUserCommand(["tagopen"],"open bookmark from tag"
   ,function(args){
     let tags=args[0].match(/([^/]+)/g);
+		if(!tags){
+			liberator.echoerr("no tag list!");
+			return;
+		}
     let c = new Check();
     let all=true,m,cnt=0;
     let lastTag=tags[tags.length-1];
-    if(/[0-9-,]+/.test(lastTag)){
+    if(/^[0-9-,]+$/.test(lastTag)){
       tags=tags.slice(0,-1);
       for(let r in mod.util.Array.itervalues(lastTag.split(","))){
         c.addRule(r);
@@ -93,7 +107,7 @@
               if(tags[t1]) ++tags[t1];
               else tags[t1] = 1;
             }
-            bm.push({text:path,desc:r.title||"(Untitled)",ico:r.icon,index:cnt++,url:r.url});
+            bm.push({text:path+cnt,desc:r.title||"(Untitled)",ico:r.icon,index:cnt++,url:r.url});
           }
           for(let a in mod.util.Array.itervalues(q)) delete tags[a];
 
@@ -111,3 +125,4 @@
     }
   });
 })();