// Copyright (c) 2006-2008 by Martin Stubenschrott <stubenschrott@vimperator.org>
// Copyright (c) 2007-2011 by Doug Kearns <dougkearns@gmail.com>
-// Copyright (c) 2008-2013 Kris Maglione <maglione.k at Gmail>
+// Copyright (c) 2008-2014 Kris Maglione <maglione.k at Gmail>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
Object.freeze(this.modes);
if (info) {
- if (Set.has(Map.types, info.type))
+ if (hasOwnProperty(Map.types, info.type))
this.update(Map.types[info.type]);
this.update(info);
}
*/
hasName: function (name) this.keys.indexOf(name) >= 0,
- get keys() array.flatten(this.names.map(mappings.closure.expand)),
+ get keys() array.flatten(this.names.map(mappings.bound.expand)),
/**
* Execute the action for this mapping.
* @param {[Modes.Mode]} modes The modes for which to return mappings.
*/
iterate: function (modes) {
- let stacks = Array.concat(modes).map(this.closure.getStack);
+ let stacks = Array.concat(modes).map(this.bound.getStack);
return values(stacks.shift().sort((m1, m2) => String.localeCompare(m1.name, m2.name))
.filter((map) => map.rhs &&
stacks.every(stack => stack.some(m => m.rhs && m.rhs === map.rhs && m.name === map.name))));
* @param {Object} extra An optional extra configuration hash.
* @optional
*/
- add: function (modes, keys, description, action, extra = {}) {
+ add: function (modes, keys, description, action, extra={}) {
modes = Array.concat(modes);
if (!modes.every(util.identity))
throw TypeError(/*L*/"Invalid modes: " + modes);
},
iterate: function (mode) {
- let seen = {};
+ let seen = RealSet();
for (let hive in this.hives.iterValues())
for (let map in array(hive.getStack(mode)).iterValues())
- if (!Set.add(seen, map.name))
+ if (!seen.add(map.name))
yield map;
},
}
};
function userMappings(hive) {
- let seen = {};
+ let seen = RealSet();
for (let stack in values(hive.stacks))
for (let map in array.iterValues(stack))
- if (!Set.add(seen, map.id))
+ if (!seen.add(map.id))
yield map;
}
function uniqueModes(modes) {
let chars = [k for ([k, v] in Iterator(modules.modes.modeChars))
if (v.every(mode => modes.indexOf(mode) >= 0))];
+
return array.uniq(modes.filter(m => chars.indexOf(m.char) < 0)
.map(m => m.name.toLowerCase())
.concat(chars));
if (!mainOnly)
modes = modes[0].allBases;
- let seen = {};
+ let seen = RealSet();
// Bloody hell. --Kris
for (let [i, mode] in Iterator(modes))
for (let hive in mappings.hives.iterValues())
for (let map in array.iterValues(hive.getStack(mode)))
for (let name in values(map.names))
- if (!Set.add(seen, name)) {
+ if (!seen.add(name))
yield {
name: name,
columns: [
],
__proto__: map
};
- }
},
format: {
description: function (map) [
name: [mode.char + "listk[eys]", mode.char + "lk"],
iterateIndex: function (args)
let (self = this, prefix = /^[bCmn]$/.test(mode.char) ? "" : mode.char + "_",
- haveTag = Set.has(help.tags))
+ haveTag = k => hasOwnProperty(help.tags, k))
({ helpTag: prefix + map.name, __proto__: map }
for (map in self.iterate(args, true))
if (map.hive === mappings.builtin || haveTag(prefix + map.name))),
});
},
completion: function initCompletion(dactyl, modules, window) {
- completion.userMapping = function userMapping(context, modes_ = [modes.NORMAL], hive = mappings.user) {
+ completion.userMapping = function userMapping(context, modes_=[modes.NORMAL], hive=mappings.user) {
context.keys = { text: function (m) m.names[0],
description: function (m) m.description + ": " + m.action };
context.completions = hive.iterate(modes_);