X-Git-Url: https://git.donarmstrong.com/dactyl.git?a=blobdiff_plain;f=common%2Fcontent%2Fabbreviations.js;h=f0cd06d17747011ec4441a5505354031505086cc;hb=354a049cce8415487552ce405cce167b7071fe1f;hp=4013be29f68b27361e2b16a6b17b07b5d5d2179c;hpb=3d837eb266a3a01d424192aa4ec1a167366178c5;p=dactyl.git diff --git a/common/content/abbreviations.js b/common/content/abbreviations.js index 4013be2..f0cd06d 100644 --- a/common/content/abbreviations.js +++ b/common/content/abbreviations.js @@ -1,6 +1,6 @@ // Copyright (c) 2006-2009 by Martin Stubenschrott // Copyright (c) 2010 by anekos -// Copyright (c) 2010-2012 Kris Maglione +// Copyright (c) 2010-2013 Kris Maglione // // This work is licensed for reuse under an MIT license. Details are // given in the LICENSE.txt file included with this file. @@ -64,7 +64,7 @@ var Abbreviation = Class("Abbreviation", { * @param {Mode} mode The mode to test. * @returns {boolean} The result of the comparison. */ - inMode: function (mode) this.modes.some(function (_mode) _mode == mode), + inMode: function (mode) this.modes.some(m => m == mode), /** * Returns true if this abbreviation is defined in any of *modes*. @@ -72,7 +72,7 @@ var Abbreviation = Class("Abbreviation", { * @param {[Modes]} modes The modes to test. * @returns {boolean} The result of the comparison. */ - inModes: function (modes) modes.some(function (mode) this.inMode(mode), this), + inModes: function (modes) modes.some(mode => this.inMode(mode)), /** * Remove *mode* from the list of supported modes for this abbreviation. @@ -80,7 +80,8 @@ var Abbreviation = Class("Abbreviation", { * @param {Mode} mode The mode to remove. */ removeMode: function (mode) { - this.modes = this.modes.filter(function (m) m != mode).sort(); + this.modes = this.modes.filter(m => m != mode) + .sort(); }, /** @@ -90,7 +91,7 @@ var Abbreviation = Class("Abbreviation", { get modeChar() Abbreviation.modeChar(this.modes) }, { modeChar: function (_modes) { - let result = array.uniq(_modes.map(function (m) m.char)).join(""); + let result = array.uniq(_modes.map(m => m.char)).join(""); if (result == "ci") result = "!"; return result; @@ -142,7 +143,7 @@ var AbbrevHive = Class("AbbrevHive", Contexts.Hive, { // Wth? --Kris; let map = values(this._store).map(Iterator).map(iter.toArray) .flatten().toObject(); - return Object.keys(map).sort().map(function (k) map[k]); + return Object.keys(map).sort().map(k => map[k]); }, /** @@ -227,6 +228,10 @@ var Abbreviations = Module("abbreviations", { */), "x", params); }, + get allHives() contexts.allGroups.abbrevs, + + get userHives() this.allHives.filter(h => h !== this.builtin), + get: deprecated("group.abbrevs.get", { get: function get() this.user.closure.get }), set: deprecated("group.abbrevs.set", { get: function set() this.user.closure.set }), remove: deprecated("group.abbrevs.remove", { get: function remove() this.user.closure.remove }), @@ -244,7 +249,8 @@ var Abbreviations = Module("abbreviations", { match: function (mode, text) { let match = this._match.exec(text); if (match) - return this.hives.map(function (h) h.get(mode, match[2] || match[4] || match[6])).nth(util.identity, 0); + return this.hives.map(h => h.get(mode, match[2] || match[4] || match[6])) + .nth(util.identity, 0); return null; }, @@ -257,10 +263,10 @@ var Abbreviations = Module("abbreviations", { * @optional */ list: function (modes, lhs, hives) { - let hives = hives || contexts.allGroups.abbrevs.filter(function (h) !h.empty); + let hives = (hives || this.userHives).filter(h => !h.empty); function abbrevs(hive) - hive.merged.filter(function (abbr) (abbr.inModes(modes) && abbr.lhs.indexOf(lhs) == 0)); + hive.merged.filter(ab => (ab.inModes(modes) && ab.lhs.indexOf(lhs) == 0)); let list = ["table", {}, ["tr", { highlight: "Title" }, @@ -269,9 +275,9 @@ var Abbreviations = Module("abbreviations", { ["td", { style: "padding-right: 1em;" }, _("title.Abbrev")], ["td", { style: "padding-right: 1em;" }, _("title.Replacement")]], ["col", { style: "min-width: 6em; padding-right: 1em;" }], - hives.map(function (hive) let (i = 0) [ + hives.map(hive => let (i = 0) [ ["tr", { style: "height: .5ex;" }], - abbrevs(hive).map(function (abbrev) + abbrevs(hive).map(abbrev => ["tr", {}, ["td", { highlight: "Title" }, !i++ ? String(hive.name) : ""], ["td", {}, abbrev.modeChar], @@ -298,7 +304,8 @@ var Abbreviations = Module("abbreviations", { completion: function initCompletion() { completion.abbreviation = function abbreviation(context, modes, group) { group = group || abbreviations.user; - let fn = modes ? function (abbr) abbr.inModes(modes) : util.identity; + let fn = modes ? abbr => abbr.inModes(modes) + : abbr => abbr; context.keys = { text: "lhs" , description: "rhs" }; context.completions = group.merged.filter(fn); }; @@ -341,18 +348,22 @@ var Abbreviations = Module("abbreviations", { description: "Expand this abbreviation by evaluating its right-hand-side as JavaScript" } ], - serialize: function () [ - { - command: this.name, - arguments: [abbr.lhs], - literalArg: abbr.rhs, - options: { - "-javascript": callable(abbr.rhs) ? null : undefined + serialize: function () array(abbreviations.userHives) + .filter(h => h.persist) + .map(hive => [ + { + command: this.name, + arguments: [abbr.lhs], + literalArg: abbr.rhs, + options: { + "-group": hive.name == "user" ? undefined : hive.name, + "-javascript": callable(abbr.rhs) ? null : undefined + } } - } - for ([, abbr] in Iterator(abbreviations.user.merged)) - if (abbr.modesEqual(modes)) - ] + for ([, abbr] in Iterator(hive.merged)) + if (abbr.modesEqual(modes)) + ]). + flatten().array }); commands.add([ch + "una[bbreviate]"],