diff --git a/common/content/bookmarks.js b/common/content/bookmarks.js index 5a1f297e..2f4700dc 100644 --- a/common/content/bookmarks.js +++ b/common/content/bookmarks.js @@ -117,24 +117,20 @@ const Bookmarks = Module("bookmarks", { // also ensures that each search engine has a Dactyl-friendly alias getSearchEngines: function getSearchEngines() { let searchEngines = []; + let aliases = {}; for (let [, engine] in Iterator(services.get("browserSearch").getVisibleEngines({}))) { let alias = engine.alias; - if (!alias || !/^[a-z0-9_-]+$/.test(alias)) + if (!alias || !/^[a-z_-]+$/.test(alias)) alias = engine.name.replace(/^\W*([a-zA-Z_-]+).*/, "$1").toLowerCase(); if (!alias) alias = "search"; // for search engines which we can't find a suitable alias - // make sure we can use search engines which would have the same alias (add numbers at the end) - let newAlias = alias; - for (let j = 1; j <= 10; j++) { // <=10 is intentional - if (!searchEngines.some(function (item) item[0] == newAlias)) - break; - - newAlias = alias + j; - } - // only write when it changed, writes are really slow - if (engine.alias != newAlias) - engine.alias = newAlias; + if (set.has(aliases, alias)) + alias += ++aliases[alias]; + else + aliases[alias] = 0; + if (engine.alias != alias) + engine.alias = alias; searchEngines.push([engine.alias, engine.description, engine.iconURI && engine.iconURI.spec]); } diff --git a/common/content/completion.js b/common/content/completion.js index a741302c..26846834 100644 --- a/common/content/completion.js +++ b/common/content/completion.js @@ -316,7 +316,7 @@ const CompletionContext = Class("CompletionContext", { get message() this._message || (this.waitingForTab ? "Waiting for " : null), set message(val) this._message = val, - get proto() { + get itemPrototype() { let res = {}; function result(quote) { yield ["result", quote ? function () quote[0] + quote[1](this.text) + quote[2] @@ -444,9 +444,9 @@ const CompletionContext = Class("CompletionContext", { try { // Item prototypes - let proto = this.proto; + let proto = this.itemPrototype; if (!this.cache.constructed) - this.cache.constructed = items.map(function (item) Object.create(proto, { item: { value: item, enumerable: true } })); + this.cache.constructed = items.map(function (item) ({ __proto__: proto, item: item })); // Filters let filtered = this.filterFunc(this.cache.constructed); diff --git a/common/content/dactyl.xul b/common/content/dactyl.xul index 683b9561..1e95af9a 100644 --- a/common/content/dactyl.xul +++ b/common/content/dactyl.xul @@ -53,9 +53,8 @@ oncommandupdate="&events;.onSelectionChange(event);"/> - - + +