diff --git a/common/content/commandline.js b/common/content/commandline.js index 4dac7071..e7e1ec23 100644 --- a/common/content/commandline.js +++ b/common/content/commandline.js @@ -18,8 +18,8 @@ const CommandWidgets = Class("CommandWidgets", { }); this.addElem({ name: "commandline", - getValue: function () this.command, getGroup: function () options.get("guioptions").has("C") ? this.commandbar : this.statusbar, + getValue: function () this.command, noValue: true, }); this.addElem({ @@ -129,7 +129,7 @@ const CommandWidgets = Class("CommandWidgets", { for (let group in values([this.commandbar, this.statusbar])) { let meth, node = group[elem.name]; let visible = (value && group === activeGroup); - if (!node.collapsed == !visible) { + if (node && !node.collapsed == !visible) { node.collapsed = !visible; if (elem.onVisibility) elem.onVisibility.call(this, node, visible); diff --git a/common/content/completion.js b/common/content/completion.js index a7a08c34..ac1693ff 100644 --- a/common/content/completion.js +++ b/common/content/completion.js @@ -442,20 +442,28 @@ const CompletionContext = Class("CompletionContext", { this.processor[0] = function (item, text) self.process[0].call(self, item, template.highlightFilter(item.text, self.filter)); - // Item prototypes - let proto = this.proto; - if (!this.cache.constructed) - this.cache.constructed = items.map(function (item) Object.create(proto, { item: { value: item, enumerable: true } })); + try { + // Item prototypes + let proto = this.proto; + if (!this.cache.constructed) + this.cache.constructed = items.map(function (item) Object.create(proto, { item: { value: item, enumerable: true } })); - // Filters - let filtered = this.filterFunc(this.cache.constructed); - if (this.maxItems) - filtered = filtered.slice(0, this.maxItems); + // Filters + let filtered = this.filterFunc(this.cache.constructed); + if (this.maxItems) + filtered = filtered.slice(0, this.maxItems); - // Sorting - if (this.sortResults && this.compare) - filtered.sort(this.compare); - return this.cache.filtered = filtered; + // Sorting + if (this.sortResults && this.compare) + filtered.sort(this.compare); + + return this.cache.filtered = filtered; + } + catch (e) { + this.message = "Error: " + e; + dactyl.reportError(e); + return []; + } }, get substrings() { diff --git a/common/content/quickmarks.js b/common/content/quickmarks.js index e55b0e2a..07cf7134 100644 --- a/common/content/quickmarks.js +++ b/common/content/quickmarks.js @@ -157,7 +157,8 @@ const QuickMarks = Module("quickmarks", { commands.add(["qmarks"], "Show all QuickMarks", function (args) { - args = args[0]; + dactyl.dump(args); + args = args[0] || ""; // ignore invalid qmark characters unless there are no valid qmark chars dactyl.assert(!args || /[a-zA-Z0-9]/.test(args), "E283: No QuickMarks matching " + args.quote()); diff --git a/pentadactyl/NEWS b/pentadactyl/NEWS index fa039399..6b3b6b4f 100644 --- a/pentadactyl/NEWS +++ b/pentadactyl/NEWS @@ -41,6 +41,7 @@ * Added 'autocomplete' option for specifying which completion groups should be auto-completed. * Added 'banghist' option. + * Added BookmarkChange, BookmarkRemove autocommands. * Added -keyword, -tags, -title to :delbmarks * Added 'hintkeys' option. * Replaced 'focuscontent' with 'strictfocus'. diff --git a/pentadactyl/TODO b/pentadactyl/TODO index eb7dd72e..651a83cf 100644 --- a/pentadactyl/TODO +++ b/pentadactyl/TODO @@ -25,11 +25,6 @@ BUGS: (recent Mercurial regressions): 9 about:pentadactyl is currently about:undefined -- messages is still broken in several ways - needs testing. - => it often overwrites the open command line while editing etc. -- :messages is _very_ slow for message history of several thousand lines -> - Unresponsive Script: util.js:79 (sometimes xmlToDom() and elsewhere) - FEATURES: 9 Add quoting help tag 8 Document Caret and Visual modes.