[source:feat] add site-key aliases
aliases define sites that should have the same site-specific keybindings
This commit is contained in:
parent
df1378a953
commit
4577a9b451
2
conf.js
2
conf.js
|
@ -28,7 +28,7 @@ const searchleader = "a"
|
||||||
// See ./keys.js and ./completions.js
|
// See ./keys.js and ./completions.js
|
||||||
util.rmMaps(keys.unmaps.mappings)
|
util.rmMaps(keys.unmaps.mappings)
|
||||||
util.rmSearchAliases(keys.unmaps.searchAliases)
|
util.rmSearchAliases(keys.unmaps.searchAliases)
|
||||||
util.processMaps(keys.maps, siteleader)
|
util.processMaps(keys.maps, keys.aliases, siteleader)
|
||||||
util.processCompletions(completions, searchleader)
|
util.processCompletions(completions, searchleader)
|
||||||
|
|
||||||
module.exports = { siteleader, searchleader }
|
module.exports = { siteleader, searchleader }
|
||||||
|
|
34
keys.js
34
keys.js
|
@ -574,6 +574,36 @@ const maps = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aliases
|
// Aliases
|
||||||
maps["en.wiktionary.org"] = maps["wikipedia.org"]
|
const aliases = {
|
||||||
|
"wikipedia.org": [
|
||||||
|
// Wikimedia sites
|
||||||
|
"wiktionary.org",
|
||||||
|
"wikiquote.org",
|
||||||
|
"wikisource.org",
|
||||||
|
"wikimedia.org",
|
||||||
|
"mediawiki.org",
|
||||||
|
"wikivoyage.org",
|
||||||
|
"wikibooks.org",
|
||||||
|
"wikinews.org",
|
||||||
|
"wikiversity.org",
|
||||||
|
"wikidata.org",
|
||||||
|
|
||||||
module.exports = { unmaps, maps }
|
// MediaWiki-powered sites
|
||||||
|
"wiki.archlinux.org",
|
||||||
|
],
|
||||||
|
|
||||||
|
"stackoverflow.com": [
|
||||||
|
"stackexchange.com",
|
||||||
|
"serverfault.com",
|
||||||
|
"superuser.com",
|
||||||
|
"askubuntu.com",
|
||||||
|
"stackapps.com",
|
||||||
|
"mathoverflow.net",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
unmaps,
|
||||||
|
maps,
|
||||||
|
aliases,
|
||||||
|
}
|
||||||
|
|
12
util.js
12
util.js
|
@ -70,11 +70,18 @@ util.rmSearchAliases = a => Object.entries(a).forEach(([leader, items]) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
// Process Mappings
|
// Process Mappings
|
||||||
util.processMaps = (maps, siteleader) => {
|
util.processMaps = (maps, aliases, siteleader) => {
|
||||||
if (typeof map === "undefined" || typeof mapkey === "undefined") {
|
if (typeof map === "undefined" || typeof mapkey === "undefined") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Object.entries(maps).forEach(([domain, domainMaps]) => domainMaps.forEach(((mapObj) => {
|
|
||||||
|
const hydratedAliases = Object.entries(aliases)
|
||||||
|
.flatMap(([baseDomain, aliasDomains]) =>
|
||||||
|
aliasDomains.flatMap(a => ({ [a]: maps[baseDomain] })))
|
||||||
|
|
||||||
|
const mapsAndAliases = Object.assign({}, maps, ...hydratedAliases)
|
||||||
|
|
||||||
|
Object.entries(mapsAndAliases).forEach(([domain, domainMaps]) => domainMaps.forEach(((mapObj) => {
|
||||||
const {
|
const {
|
||||||
alias,
|
alias,
|
||||||
callback,
|
callback,
|
||||||
|
@ -84,7 +91,6 @@ util.processMaps = (maps, siteleader) => {
|
||||||
} = mapObj
|
} = mapObj
|
||||||
const opts = {}
|
const opts = {}
|
||||||
|
|
||||||
|
|
||||||
const key = `${leader}${alias}`
|
const key = `${leader}${alias}`
|
||||||
|
|
||||||
// Determine if it's a site-specific mapping
|
// Determine if it's a site-specific mapping
|
||||||
|
|
Loading…
Reference in New Issue