[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
|
||||
util.rmMaps(keys.unmaps.mappings)
|
||||
util.rmSearchAliases(keys.unmaps.searchAliases)
|
||||
util.processMaps(keys.maps, siteleader)
|
||||
util.processMaps(keys.maps, keys.aliases, siteleader)
|
||||
util.processCompletions(completions, searchleader)
|
||||
|
||||
module.exports = { siteleader, searchleader }
|
||||
|
|
34
keys.js
34
keys.js
|
@ -574,6 +574,36 @@ const maps = {
|
|||
}
|
||||
|
||||
// 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
|
||||
util.processMaps = (maps, siteleader) => {
|
||||
util.processMaps = (maps, aliases, siteleader) => {
|
||||
if (typeof map === "undefined" || typeof mapkey === "undefined") {
|
||||
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 {
|
||||
alias,
|
||||
callback,
|
||||
|
@ -84,7 +91,6 @@ util.processMaps = (maps, siteleader) => {
|
|||
} = mapObj
|
||||
const opts = {}
|
||||
|
||||
|
||||
const key = `${leader}${alias}`
|
||||
|
||||
// Determine if it's a site-specific mapping
|
||||
|
|
Loading…
Reference in New Issue