Sat
Jan
23
気軽に編集してください。 "Tips (Japanese) - keysnail - GitHub" - http://j.mp/8jXCgu
ところで、prompt.selector 開かれるときに選択行をインデックス指定するのって KeySnail 本体 Hack しないと無理?
上だと現在のWebページじゃなくて最上行=session history の最初が選択されるのがちと使いにくい。
どうもそれらしき公開 API が見当たらないんだが…
追記1: 速やかにお返事いただいた
prompt.selector 内で initialIndex 使えばいいとのことなので上を書き換えておく。
追記2: 参照コード のまま tabHistory.length - 1 だと history 移動したあとがまずいので curIdx, thIdx 変数周り追加…わざわざ構築した tabHistory のインデックス探すのにループするの嫌なんだが、こうしないと動かなかった。後で試行錯誤。
Tips (Japanese) - keysnail - GitHub
ん。Firegestures からのパクリだけど tab 毎の history (session history) を prompt.selector で。
ext.add("list-tab-history", function () {
const fav = "chrome://mozapps/skin/places/defaultFavicon.png";
var tabHistory = [];
var sessionHistory = gBrowser.webNavigation.sessionHistory;
if (sessionHistory.count < 1)
return void display.echoStatusBar("Tab history not exist", 2000);
var curIdx = sessionHistory.index;
for (var i = 0; i < sessionHistory.count; i++) {
var entry = sessionHistory.getEntryAtIndex(i, false);
if (!entry)
continue;
try {
var iconURL = Cc["@mozilla.org/browser/favicon-service;1"]
.getService(Ci.nsIFaviconService)
.getFaviconForPage(entry.URI).spec;
} catch (ex) {}
tabHistory.push([iconURL || fav, entry.title, entry.URI.spec, i]);
}
for (var thIdx = 0; thIdx < tabHistory.length; thIdx++) {
if (tabHistory[thIdx][3] == curIdx) break;
}
prompt.selector(
{
message : "select history in tab",
collection : tabHistory,
flags : [ICON | IGNORE, 0, 0, IGNORE | HIDDEN],
header : ["Title", "URL"],
initialIndex : thIdx;
callback : function(i) { if (i >= 0) gBrowser.webNavigation.gotoIndex(tabHistory[i][3]); }
});
}, 'List tab history');上を %PRESERVE% 内 に、下を Key Binding エリアにkey.setViewKey(['u', 'h'], function (aEvent, arg) {
ext.exec("list-tab-history", arg);
}, 'list tab history', true);
上だと現在のWebページじゃなくて最上行=session history の最初が選択されるのがちと使いにくい。
どうもそれらしき公開 API が見当たらないんだが…
追記1: 速やかにお返事いただいた
prompt.selector 内で initialIndex 使えばいいとのことなので上を書き換えておく。
追記2: 参照コード のまま tabHistory.length - 1 だと history 移動したあとがまずいので curIdx, thIdx 変数周り追加…わざわざ構築した tabHistory のインデックス探すのにループするの嫌なんだが、こうしないと動かなかった。後で試行錯誤。