mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-14 20:45:46 +01:00
Get rid of most remaining comprehensions.
This commit is contained in:
@@ -449,13 +449,17 @@ var Bookmarks = Module("bookmarks", {
|
||||
description: "Bookmark page title or description",
|
||||
completer: function title(context, args) {
|
||||
let frames = buffer.allFrames();
|
||||
|
||||
if (!args.bang)
|
||||
return [
|
||||
[win.document.title, frames.length == 1 ? /*L*/"Current Location" : /*L*/"Frame: " + win.location.href]
|
||||
for (win of frames)];
|
||||
return frames.map(win => [win.document.title,
|
||||
frames.length == 1 ? /*L*/"Current Location"
|
||||
: /*L*/"Frame: " + win.location.href]);
|
||||
|
||||
context.keys.text = "title";
|
||||
context.keys.description = "url";
|
||||
return bookmarks.get(args.join(" "), args["-tags"], null, { keyword: args["-keyword"], title: context.filter });
|
||||
return bookmarks.get(args.join(" "), args["-tags"], null,
|
||||
{ keyword: args["-keyword"],
|
||||
title: context.filter });
|
||||
},
|
||||
type: CommandOption.STRING
|
||||
};
|
||||
@@ -514,12 +518,14 @@ var Bookmarks = Module("bookmarks", {
|
||||
if (!args.bang) {
|
||||
context.title = ["Page URL"];
|
||||
let frames = buffer.allFrames();
|
||||
context.completions = [
|
||||
[win.document.documentURI, frames.length == 1 ? /*L*/"Current Location" : /*L*/"Frame: " + win.document.title]
|
||||
for (win of frames)];
|
||||
context.completions = frames.map(win => [win.document.documentURI,
|
||||
frames.length == 1 ? /*L*/"Current Location"
|
||||
: /*L*/"Frame: " + win.document.title]);
|
||||
}
|
||||
else
|
||||
completion.bookmark(context, args["-tags"], { keyword: args["-keyword"], title: args["-title"] });
|
||||
completion.bookmark(context, args["-tags"],
|
||||
{ keyword: args["-keyword"],
|
||||
title: args["-title"] });
|
||||
},
|
||||
options: [keyword, title, tags, post,
|
||||
{
|
||||
|
||||
@@ -525,7 +525,8 @@ var CommandLine = Module("commandline", {
|
||||
if (storage.exists("history-" + name)) {
|
||||
let ary = storage.newArray("history-" + name, { store: true, privateData: true });
|
||||
|
||||
this._store.set(name, [v for ([k, v] of ary)]);
|
||||
this._store.set(name, Array.from(ary, ([key, val]) => val));
|
||||
|
||||
ary.delete();
|
||||
this._store.changed();
|
||||
}
|
||||
|
||||
@@ -775,19 +775,34 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
||||
|
||||
let loadplugins = options.get("loadplugins");
|
||||
if (args)
|
||||
loadplugins = { __proto__: loadplugins, value: args.map(Option.parseRegexp) };
|
||||
loadplugins = { __proto__: loadplugins,
|
||||
value: args.map(Option.parseRegexp) };
|
||||
|
||||
dir.readDirectory(true).forEach(function (file) {
|
||||
if (file.leafName[0] == ".")
|
||||
let shouldSource = file => {
|
||||
if (!loadplugins.getKey(file.path))
|
||||
return false;
|
||||
|
||||
if (force)
|
||||
return true;
|
||||
|
||||
if (file.path in dactyl.pluginFiles)
|
||||
return dactyl.pluginFiles[file.path] < file.lastModifiedTime;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
dir.readDirectory(true).forEach(file => {
|
||||
if (file.leafName.startsWith("."))
|
||||
;
|
||||
else if (file.isFile() && loadplugins.getKey(file.path)
|
||||
&& !(!force && file.path in dactyl.pluginFiles && dactyl.pluginFiles[file.path] >= file.lastModifiedTime)) {
|
||||
try {
|
||||
io.source(file.path);
|
||||
dactyl.pluginFiles[file.path] = file.lastModifiedTime;
|
||||
}
|
||||
catch (e) {
|
||||
dactyl.reportError(e);
|
||||
else if (file.isFile()) {
|
||||
if (shouldSource(file)) {
|
||||
try {
|
||||
io.source(file.path);
|
||||
dactyl.pluginFiles[file.path] = file.lastModifiedTime;
|
||||
}
|
||||
catch (e) {
|
||||
dactyl.reportError(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (file.isDirectory())
|
||||
@@ -804,10 +819,9 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
||||
|
||||
dactyl.echomsg(
|
||||
_("plugin.searchingForIn",
|
||||
JSON.stringify("plugins/**/*.{js," + config.fileExtension + "}"),
|
||||
JSON.stringify([dir.path.replace(/.plugins$/, "")
|
||||
for (dir of dirs)]
|
||||
.join(","))),
|
||||
JSON.stringify("plugins/**/*.{js," + config.fileExtension + "}"),
|
||||
JSON.stringify(dirs.map(dir => dir.path.replace(/.plugins$/, ""))
|
||||
.join(","))),
|
||||
2);
|
||||
|
||||
dirs.forEach(function (dir) {
|
||||
@@ -1226,7 +1240,7 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
||||
* @property {[Window]} Returns an array of all the host application's
|
||||
* open windows.
|
||||
*/
|
||||
get windows() { return [w for (w of overlay.windows)]; }
|
||||
get windows() { return Array.from(overlay.windows); }
|
||||
|
||||
}, {
|
||||
isToolbarHidden: function isToolbarHidden(toolbar) {
|
||||
@@ -1399,7 +1413,9 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
||||
N: ["Tab number over icon", highlight.selector("TabIconNumber")]
|
||||
},
|
||||
setter: function (opts) {
|
||||
let classes = [v[1] for ([k, v] of iter(this.opts)) if (opts.indexOf(k) < 0)];
|
||||
let classes = Object.entries(this.opts)
|
||||
.filter(([name]) => !opts.includes(name))
|
||||
.map(([name, data]) => data[1]);
|
||||
|
||||
styles.system.add("taboptions", "chrome://*",
|
||||
classes.length ? classes.join(",") + "{ display: none; }" : "");
|
||||
@@ -1876,7 +1892,10 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
|
||||
completion.dialog = function dialog(context) {
|
||||
context.title = ["Dialog"];
|
||||
context.filters.push(({ item }) => !item[2] || item[2]());
|
||||
context.completions = [[k, v[0], v[2]] for ([k, v] of iter(config.dialogs))];
|
||||
|
||||
context.completions = (
|
||||
Object.entries(config.dialogs)
|
||||
.map(([key, val]) => [k, v[0], v[2]]));
|
||||
};
|
||||
|
||||
completion.menuItem = function menuItem(context) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2008-2014 Kris Maglione <maglione.k at Gmail>
|
||||
// Copyright (c) 2008-2015 Kris Maglione <maglione.k at Gmail>
|
||||
// Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
|
||||
//
|
||||
// This work is licensed for reuse under an MIT license. Details are
|
||||
@@ -1399,9 +1399,11 @@ var Editor = Module("editor", XPCOM(Ci.nsIEditActionListener, ModuleBase), {
|
||||
},
|
||||
validator: function (value) {
|
||||
this.format({}, value);
|
||||
|
||||
let allowed = new RealSet(["column", "file", "line"]);
|
||||
return [k for (k of util.compileMacro(value).seen)]
|
||||
.every(k => allowed.has(k));
|
||||
return util.compileMacro(value)
|
||||
.seen.difference(allowed)
|
||||
.size == 0;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -306,9 +306,12 @@ var Events = Module("events", {
|
||||
* @param {string} filter A regular expression filter string. A null
|
||||
* filter selects all macros.
|
||||
*/
|
||||
getMacros: function (filter) {
|
||||
getMacros: function (filter = null) {
|
||||
let re = RegExp(filter || "");
|
||||
return ([k, m.text] for ([k, m] of editor.registers) if (re.test(k)));
|
||||
|
||||
return Array.from(editor.registers,
|
||||
([key, macro]) => [key, macro.text])
|
||||
.filter(([key]) => re.test(key));
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -1026,7 +1029,7 @@ var Events = Module("events", {
|
||||
completion: function initCompletion() {
|
||||
completion.macro = function macro(context) {
|
||||
context.title = ["Macro", "Keys"];
|
||||
context.completions = [item for (item of events.getMacros())];
|
||||
context.completions = Array.from(events.getMacros());
|
||||
};
|
||||
},
|
||||
mappings: function initMappings() {
|
||||
|
||||
@@ -1090,8 +1090,8 @@ var Hints = Module("hints", {
|
||||
autocomplete: false,
|
||||
completer: function (context) {
|
||||
context.compare = () => 0;
|
||||
context.completions = [[k, v.prompt]
|
||||
for ([k, v] of iter(hints.modes))];
|
||||
context.completions = Object.entries(hints.modes)
|
||||
.map(([key, mode]) => [key, mode.prompt]);
|
||||
},
|
||||
onCancel: mappings.bound.popCommand,
|
||||
onSubmit: function (arg) {
|
||||
@@ -1234,16 +1234,16 @@ var Hints = Module("hints", {
|
||||
}),
|
||||
indexOf: function indexOf(dest, src) {
|
||||
let table = this.translitTable;
|
||||
var end = dest.length - src.length;
|
||||
let end = dest.length - src.length;
|
||||
if (src.length == 0)
|
||||
return 0;
|
||||
outer:
|
||||
for (var i = 0; i <= end; i++) {
|
||||
var j = i;
|
||||
for (var k = 0; k < src.length;) {
|
||||
var s = dest[j++];
|
||||
for (let i = 0; i <= end; i++) {
|
||||
let j = i;
|
||||
for (let k = 0; k < src.length;) {
|
||||
let s = dest[j++];
|
||||
s = table[s] || s;
|
||||
for (var l = 0; l < s.length; l++, k++) {
|
||||
for (let l = 0; l < s.length; l++, k++) {
|
||||
if (s[l] != src[k])
|
||||
continue outer;
|
||||
if (k == src.length - 1)
|
||||
|
||||
@@ -350,11 +350,20 @@ var History = Module("history", {
|
||||
};
|
||||
|
||||
// FIXME: Schema-specific
|
||||
context.generate = () => [
|
||||
Array.slice(row.rev_host).reverse().join("").slice(1)
|
||||
for (row of iter(services.history.DBConnection
|
||||
.createStatement("SELECT DISTINCT rev_host FROM moz_places WHERE rev_host IS NOT NULL;")))
|
||||
].slice(2);
|
||||
context.generate = () => {
|
||||
// FIXME: Synchronous.
|
||||
let statement = services.history.DBConnection
|
||||
.createStatement(`SELECT DISTINCT rev_host FROM moz_places
|
||||
WHERE rev_host IS NOT NULL;`);
|
||||
|
||||
let result = Array.from(iter(statement),
|
||||
({ rev_host }) => Array.from(rev_host)
|
||||
.reverse().join("")
|
||||
.slice(1));
|
||||
|
||||
statement.finalize();
|
||||
return result.slice(2); // Why slice 2?;
|
||||
};
|
||||
};
|
||||
|
||||
completion.history = function _history(context, maxItems, sort) {
|
||||
|
||||
@@ -746,12 +746,15 @@ var Mappings = Module("mappings", {
|
||||
return null;
|
||||
}
|
||||
function uniqueModes(modes) {
|
||||
let chars = [k for ([k, v] of iter(modules.modes.modeChars))
|
||||
if (v.every(mode => modes.indexOf(mode) >= 0))];
|
||||
let chars = (
|
||||
Object.entries(modules.modes.modeChars)
|
||||
.filter(([char, modes_]) => modes_.every(m => modes.includes(m)))
|
||||
.map(([char]) => char));
|
||||
|
||||
return Ary.uniq(modes.filter(m => chars.indexOf(m.char) < 0)
|
||||
.map(m => m.name.toLowerCase())
|
||||
.concat(chars));
|
||||
let names = modes.filter(m => !chars.includes(m.char))
|
||||
.map(m => m.name.toLowerCase());
|
||||
|
||||
return [...new RealSet([...chars, ...names])];
|
||||
}
|
||||
|
||||
commands.add(["feedkeys", "fk"],
|
||||
@@ -773,7 +776,8 @@ var Mappings = Module("mappings", {
|
||||
for (let mode of modes.mainModes)
|
||||
if (mode.char && !commands.get(mode.char + "map", true))
|
||||
addMapCommands(mode.char,
|
||||
[m.mask for (m of modes.mainModes) if (m.char == mode.char)],
|
||||
modes.mainModes.filter(m => m.char == mode.char)
|
||||
.map(m => m.mask),
|
||||
mode.displayName);
|
||||
|
||||
let args = {
|
||||
@@ -841,9 +845,11 @@ var Mappings = Module("mappings", {
|
||||
let prefix = /^[bCmn]$/.test(mode.char) ? "" : mode.char + "_";
|
||||
let haveTag = k => hasOwnProp(help.tags, k);
|
||||
|
||||
return ({ helpTag: prefix + map.name, __proto__: map }
|
||||
for (map of self.iterate(args, true))
|
||||
if (map.hive === mappings.builtin || haveTag(prefix + map.name)));
|
||||
return Array.from(self.iterate(args, true))
|
||||
.filter(map => (map.hive === mappings.builtin ||
|
||||
haveTag(prefix + map.name)))
|
||||
.map(map => ({ helpTag: prefix + map.name,
|
||||
__proto__: map }));
|
||||
},
|
||||
description: "List all " + mode.displayName + " mode mappings along with their short descriptions",
|
||||
index: mode.char + "-map",
|
||||
@@ -870,8 +876,8 @@ var Mappings = Module("mappings", {
|
||||
[
|
||||
null,
|
||||
function (context, obj, args) {
|
||||
return [[m.names, m.description]
|
||||
for (m of this.iterate(args[0]))];
|
||||
return Array.from(this.iterate(args[0]),
|
||||
map => [map.names, map.description]);
|
||||
}
|
||||
]);
|
||||
},
|
||||
|
||||
@@ -274,13 +274,14 @@ var Marks = Module("marks", {
|
||||
template.tabular(
|
||||
["Mark", "HPos", "VPos", "File"],
|
||||
["", "text-align: right", "text-align: right", "color: green"],
|
||||
([name,
|
||||
mark.offset ? Math.round(mark.offset.x)
|
||||
: Math.round(mark.position.x * 100) + "%",
|
||||
mark.offset ? Math.round(mark.offset.y)
|
||||
: Math.round(mark.position.y * 100) + "%",
|
||||
mark.location]
|
||||
for ([name, mark] of marks))));
|
||||
Array.from(marks, ([name, mark]) => [
|
||||
name,
|
||||
mark.offset ? Math.round(mark.offset.x)
|
||||
: Math.round(mark.position.x * 100) + "%",
|
||||
mark.offset ? Math.round(mark.offset.y)
|
||||
: Math.round(mark.position.y * 100) + "%",
|
||||
mark.location,
|
||||
])));
|
||||
},
|
||||
|
||||
_onPageLoad: function _onPageLoad(event) {
|
||||
@@ -399,9 +400,10 @@ var Marks = Module("marks", {
|
||||
return !host || util.isDomainURL(url, host);
|
||||
}
|
||||
function match(marks) {
|
||||
return (k
|
||||
for ([k, v] of iter(marks))
|
||||
if (timespan.contains(v.timestamp) && matchhost(v.location)));
|
||||
return Array.from(marks)
|
||||
.filter(([name, mark]) => (timespan.contains(marktimestamp) &&
|
||||
matchhost(marklocation)))
|
||||
.map(([name]) => name);
|
||||
}
|
||||
|
||||
for (let [url, local] of marks._localMarks)
|
||||
|
||||
@@ -209,9 +209,9 @@ var Modes = Module("modes", {
|
||||
get all() { return this._modes.slice(); },
|
||||
|
||||
get mainModes() {
|
||||
return (mode
|
||||
for ([k, mode] of iter(modes._modeMap))
|
||||
if (!mode.extended && mode.name == k));
|
||||
return Object.entries(modes._modeMap)
|
||||
.filter(([name, mode]) => !mode.extended && mode.name == name)
|
||||
.map(([name, mode]) => mode);
|
||||
},
|
||||
|
||||
get mainMode() { return this._modeMap[this._main]; },
|
||||
@@ -595,9 +595,9 @@ var Modes = Module("modes", {
|
||||
for (let base of mode.bases)
|
||||
tree[base.name][mode.name] = tree[mode.name];
|
||||
|
||||
let roots = iter([m.name, tree[m.name]]
|
||||
for (m of list)
|
||||
if (!m.bases.length)).toObject();
|
||||
let roots = Ary.toObject(
|
||||
list.filter(mode => !mode.bases.length)
|
||||
.map(mode => [mode.name, tree[mode.name]]));
|
||||
|
||||
function rec(obj) {
|
||||
let res = ["ul", { "dactyl:highlight": "Dense" }];
|
||||
|
||||
@@ -100,7 +100,8 @@ var QuickMarks = Module("quickmarks", {
|
||||
* @param {string} filter The list of quickmarks to display, e.g. "a-c i O-X".
|
||||
*/
|
||||
list: function list(filter) {
|
||||
let marks = [k for ([k, v] of this._qmarks)];
|
||||
let marks = Array.from(this._qmarks, ([k]) => k);
|
||||
|
||||
let lowercaseMarks = marks.filter(bind("test", /[a-z]/)).sort();
|
||||
let uppercaseMarks = marks.filter(bind("test", /[A-Z]/)).sort();
|
||||
let numberMarks = marks.filter(bind("test", /[0-9]/)).sort();
|
||||
@@ -115,8 +116,10 @@ var QuickMarks = Module("quickmarks", {
|
||||
dactyl.assert(marks.length >= 0, _("quickmark.noMatching", JSON.stringify(filter)));
|
||||
}
|
||||
|
||||
commandline.commandOutput(template.tabular(["QuickMark", "URL"], [],
|
||||
([mark, quickmarks._qmarks.get(mark)] for (mark of marks))));
|
||||
commandline.commandOutput(template.tabular(
|
||||
["QuickMark", "URL"], [],
|
||||
Array.from(marks,
|
||||
mark => [mark, quickmarks._qmarks.get(mark)])));
|
||||
}
|
||||
}, {
|
||||
}, {
|
||||
|
||||
@@ -862,7 +862,8 @@ var Tabs = Module("tabs", {
|
||||
let arg = args[0];
|
||||
|
||||
if (tabs.indexFromSpec(arg) == -1) {
|
||||
let list = [tab for (tab of tabs.match(args[0], args.count, true))];
|
||||
let list = Array.from(tabs.match(args[0], args.count, true));
|
||||
|
||||
dactyl.assert(list.length, _("error.invalidArgument", arg));
|
||||
dactyl.assert(list.length == 1, _("buffer.multipleMatching", arg));
|
||||
arg = list[0];
|
||||
@@ -1296,7 +1297,11 @@ var Tabs = Module("tabs", {
|
||||
];
|
||||
options.add(["activate", "act"],
|
||||
"Define when newly created tabs are automatically activated",
|
||||
"stringlist", [g[0] for (g of activateGroups.slice(1)) if (!g[2] || !prefs.get("browser.tabs." + g[2]))].join(","),
|
||||
"stringlist", activateGroups.slice(1)
|
||||
.filter(g => (!g[2] ||
|
||||
!prefs.get("browser.tabs." + g[2])))
|
||||
.map(g => g[0])
|
||||
.join(","),
|
||||
{
|
||||
values: activateGroups,
|
||||
has: Option.has.toggleAll,
|
||||
|
||||
Reference in New Issue
Block a user