2017-09-17 23:33:01 +00:00
|
|
|
//---- Cleanup ----//
|
2017-08-28 03:24:24 +00:00
|
|
|
// Unmap undesired defaults
|
|
|
|
var unmaps = [ "sb" , "sw", "ob"
|
|
|
|
, "ow" , "cp", ";cp"
|
|
|
|
, ";ap", "spa", "spb"
|
|
|
|
, "spd", "sps", "spc"
|
|
|
|
, "spi", "sfr", "zQ"
|
|
|
|
, "zz" , "zR", "ab"
|
|
|
|
, "Q" , "q", "ag"
|
2017-09-16 01:17:23 +00:00
|
|
|
, "af" , ";s"
|
2017-08-28 03:24:24 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
unmaps.forEach(function(u) {
|
|
|
|
unmap(u);
|
|
|
|
});
|
|
|
|
|
|
|
|
var rmSearchAliases =
|
|
|
|
{ "s" : [ "g", "d", "b"
|
|
|
|
, "w", "s", "h" ]
|
|
|
|
};
|
|
|
|
|
|
|
|
Object.keys(rmSearchAliases).forEach(function(k) {
|
|
|
|
rmSearchAliases[k].forEach(function(v) {
|
|
|
|
removeSearchAliasX(v, k);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-09-17 23:33:01 +00:00
|
|
|
//---- Settings ----//
|
2017-08-28 03:24:24 +00:00
|
|
|
settings.hintAlign = "left";
|
2017-09-16 00:18:16 +00:00
|
|
|
settings.omnibarSuggestionTimeout = 500;
|
|
|
|
settings.hintGroups = true;
|
|
|
|
settings.hintGroupStart = "middle";
|
2017-10-18 05:19:57 +00:00
|
|
|
settings.richHintsForKeystroke = 1;
|
|
|
|
|
|
|
|
//---- Theme ----//
|
|
|
|
settings.theme = `
|
|
|
|
/* Disable RichHints CSS animation */
|
|
|
|
.expandRichHints {
|
|
|
|
animation: 0s ease-in-out 1 forwards expandRichHints;
|
|
|
|
}
|
|
|
|
.collapseRichHints {
|
|
|
|
animation: 0s ease-in-out 1 forwards collapseRichHints;
|
|
|
|
}
|
|
|
|
`;
|
2017-08-28 03:24:24 +00:00
|
|
|
|
2017-09-17 23:33:01 +00:00
|
|
|
//---- Maps ----//
|
2017-08-28 03:24:24 +00:00
|
|
|
// Left-hand aliases
|
|
|
|
// Movement
|
|
|
|
map('w', 'k');
|
|
|
|
map('s', 'j');
|
|
|
|
|
|
|
|
// Right-hand aliases
|
|
|
|
// Tab Navigation
|
|
|
|
map('J', 'E');
|
|
|
|
map('K', 'R');
|
|
|
|
|
|
|
|
// History
|
|
|
|
map('H', 'S');
|
|
|
|
map('L', 'D');
|
|
|
|
|
2017-09-17 23:33:01 +00:00
|
|
|
//---- Mapkeys ----//
|
2017-10-31 05:50:48 +00:00
|
|
|
const ri = { repeatIgnore: true };
|
2017-10-18 05:19:57 +00:00
|
|
|
|
|
|
|
mapkey('=w', "Lookup whois information for domain", whois, ri);
|
|
|
|
mapkey('=d', "Lookup dns information for domain", dns, ri);
|
|
|
|
mapkey('=D', "Lookup all information for domain", dnsVerbose, ri);
|
|
|
|
mapkey(';se', "#11Edit Settings", editSettings, ri);
|
|
|
|
mapkey(';pd', "Toggle PDF viewer from SurfingKeys", togglePdfViewer, ri);
|
|
|
|
mapkey('gi', "Edit current URL with vim editor", vimEditURL, ri);
|
|
|
|
|
2017-11-02 07:14:51 +00:00
|
|
|
const siteleader = "\\";
|
|
|
|
|
2017-10-18 05:19:57 +00:00
|
|
|
function mapsitekey(domainRegex, key, desc, f, opts) {
|
|
|
|
opts = opts || {};
|
2017-11-02 07:14:51 +00:00
|
|
|
mapkey(`${siteleader}${key}`, desc, f, Object.assign({}, opts, { domain: domainRegex }));
|
2017-10-18 05:19:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function mapsitekeys(domainRegex, maps) {
|
|
|
|
maps.forEach(function(map) {
|
|
|
|
mapsitekey(domainRegex, map[0], map[1], map[2]);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
mapsitekeys(/(amazon\.com)/i, [
|
|
|
|
['fs', "Fakespot", fakeSpot],
|
|
|
|
// TODO: Add to cart
|
|
|
|
// TODO:
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(yelp\.com)/i, [
|
|
|
|
['fs', "Fakespot", fakeSpot],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(youtube\.com)/i, [
|
|
|
|
['F', "Toggle fullscreen", ytFullscreen],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(vimeo\.com)/i, [
|
|
|
|
['F', "Toggle fullscreen", vimeoFullscreen],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(github\.com)/i, [
|
|
|
|
['s', "Toggle Star", ghToggleStar],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(gitlab\.com)/i, [
|
|
|
|
['s', "Toggle Star", glToggleStar],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(reddit\.com)/i, [
|
|
|
|
['c', "Collapse comment", redditCollapseComment],
|
|
|
|
['v', "Cast vote", redditVote],
|
|
|
|
]);
|
|
|
|
|
|
|
|
mapsitekeys(/(news\.ycombinator\.com)/i, [
|
|
|
|
['c', "Collapse comment", hnCollapseComment],
|
|
|
|
['v', "Cast vote", hnVote],
|
|
|
|
]);
|
2017-08-28 03:24:24 +00:00
|
|
|
|
2017-09-17 23:33:01 +00:00
|
|
|
//---- Search & completion ----//
|
2017-08-28 03:24:24 +00:00
|
|
|
// Search leader
|
2017-10-31 05:50:48 +00:00
|
|
|
const sl = 'a';
|
2017-08-28 03:24:24 +00:00
|
|
|
|
2017-10-31 05:39:21 +00:00
|
|
|
// Register Search Engine Completions
|
2017-10-31 05:50:48 +00:00
|
|
|
// The `completions` variable is defined in `completions.js` and
|
|
|
|
// is prepended to this file by gulp-concat.
|
2017-10-31 05:39:21 +00:00
|
|
|
for(var i = 0; i < completions.length; i++) {
|
|
|
|
var s = completions[i], // Search Engine object
|
|
|
|
la = sl + s.alias; // Search leader + alias
|
2017-08-28 03:24:24 +00:00
|
|
|
|
|
|
|
addSearchAliasX(s.alias, s.name, s.search, sl, s.compl, s.callback);
|
|
|
|
mapkey(la, '#8Search ' + s.name, 'Front.openOmnibar({type: "SearchEngine", extra: "' + s.alias + '"})');
|
|
|
|
}
|
|
|
|
|
2017-09-17 23:33:01 +00:00
|
|
|
//---- Functions ----//
|
2017-08-28 03:24:24 +00:00
|
|
|
function fakeSpot() {
|
|
|
|
var url = "http://fakespot.com/analyze?url=" + window.location.href;
|
|
|
|
window.open(url, '_blank').focus();
|
|
|
|
}
|
|
|
|
|
|
|
|
function ytFullscreen() {
|
|
|
|
$('.ytp-fullscreen-button.ytp-button').click();
|
|
|
|
}
|
|
|
|
|
|
|
|
function vimeoFullscreen() {
|
|
|
|
$('.fullscreen-icon').click();
|
|
|
|
}
|
|
|
|
|
|
|
|
function ghToggleStar() {
|
|
|
|
var repo = window.location.pathname.slice(1).split("/").slice(0,2).join("/");
|
|
|
|
var cur = $('div.starring-container > form').filter(function() {
|
|
|
|
return $(this).css("display") === "block";
|
|
|
|
});
|
|
|
|
|
|
|
|
var action = "starred";
|
|
|
|
var star = "★";
|
2017-10-08 01:41:05 +00:00
|
|
|
if ($(cur).attr("class").indexOf("unstarred") === -1) {
|
2017-09-17 23:26:02 +00:00
|
|
|
action = "un" + action;
|
|
|
|
star = "☆";
|
2017-08-28 03:24:24 +00:00
|
|
|
}
|
|
|
|
|
2017-10-08 01:41:05 +00:00
|
|
|
$(cur).find("button").click();
|
2017-08-28 03:24:24 +00:00
|
|
|
Front.showBanner(star + " Repository " + repo + " " + action);
|
|
|
|
}
|
|
|
|
|
|
|
|
function glToggleStar() {
|
|
|
|
var repo = window.location.pathname.slice(1).split("/").slice(0,2).join("/");
|
|
|
|
var action = $('.btn.star-btn > span').click().text().toLowerCase() + "red";
|
|
|
|
var star = "☆";
|
|
|
|
if (action === "starred") {
|
|
|
|
star = "★";
|
|
|
|
}
|
|
|
|
Front.showBanner(star + " Repository " + repo + " " + action);
|
|
|
|
}
|
|
|
|
|
|
|
|
function vimEditURL() {
|
|
|
|
Front.showEditor(window.location.href, function(data) {
|
|
|
|
window.location.href = data;
|
|
|
|
}, 'url');
|
|
|
|
}
|
|
|
|
|
|
|
|
function whois() {
|
|
|
|
var url = "http://centralops.net/co/DomainDossier.aspx?dom_whois=true&addr=" + window.location.hostname;
|
|
|
|
window.open(url, '_blank').focus();
|
|
|
|
}
|
|
|
|
|
|
|
|
function dns() {
|
|
|
|
var url = "http://centralops.net/co/DomainDossier.aspx?dom_dns=true&addr=" + window.location.hostname;
|
|
|
|
window.open(url, '_blank').focus();
|
|
|
|
}
|
|
|
|
|
|
|
|
function dnsVerbose() {
|
|
|
|
var url = "http://centralops.net/co/DomainDossier.aspx?dom_whois=true&dom_dns=true&traceroute=true&net_whois=true&svc_scan=true&addr=" + window.location.hostname;
|
|
|
|
window.open(url, '_blank').focus();
|
|
|
|
}
|
|
|
|
|
2017-09-16 01:19:54 +00:00
|
|
|
function togglePdfViewer() {
|
|
|
|
chrome.storage.local.get("noPdfViewer", function(resp) {
|
|
|
|
if(!resp.noPdfViewer) {
|
|
|
|
chrome.storage.local.set({"noPdfViewer": 1}, function() {
|
|
|
|
Front.showBanner("PDF viewer disabled.");
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
chrome.storage.local.remove("noPdfViewer", function() {
|
|
|
|
Front.showBanner("PDF viewer enabled.");
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2017-09-17 23:26:02 +00:00
|
|
|
|
|
|
|
function editSettings() {
|
|
|
|
tabOpenLink("/pages/options.html");
|
|
|
|
}
|
|
|
|
|
|
|
|
function redditCollapseComment() {
|
|
|
|
Hints.create('a.expand', Hints.dispatchMouseClick);
|
|
|
|
}
|
|
|
|
|
|
|
|
function hnCollapseComment() {
|
|
|
|
Hints.create('a.togg', Hints.dispatchMouseClick);
|
|
|
|
}
|
|
|
|
|
|
|
|
function redditVote() {
|
|
|
|
Hints.create('div.arrow', Hints.dispatchMouseClick);
|
|
|
|
}
|
|
|
|
|
|
|
|
function hnVote() {
|
|
|
|
Hints.create('div.votearrow', Hints.dispatchMouseClick);
|
|
|
|
}
|
|
|
|
|
2017-08-28 03:24:24 +00:00
|
|
|
// vim: set ft=javascript expandtab:
|