diff --git a/common/content/buffer.js b/common/content/buffer.js index da1ac020..89c103c2 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -150,7 +150,7 @@ var Buffer = Module("buffer", { // called when the active document is scrolled _updateBufferPosition: function _updateBufferPosition() { statusline.updateBufferPosition(); - commandline.clear(); + commandline.clear(true); }, /** diff --git a/common/content/commandline.js b/common/content/commandline.js index b146118b..593d879f 100644 --- a/common/content/commandline.js +++ b/common/content/commandline.js @@ -619,8 +619,10 @@ var CommandLine = Module("commandline", { return commands.lastCommand = val; }, - clear: function clear() { - this.clearMessage(); + clear: function clear(scroll) { + if (!scroll || Date.now() - this._lastEchoTime > 5000) + this.clearMessage(); + this._lastEchoTime = 0; if (!this.commandSession) { this.widgets.command = null; @@ -754,10 +756,12 @@ var CommandLine = Module("commandline", { } this._lastClearable = action === this._echoLine && String(data); + this._lastEchoTime = (flags & this.FORCE_SINGLELINE) && Date.now(); if (action) action.call(this, data, highlightGroup, single); }, + _lastEchoTime: 0, /** * Prompt the user. Sets modes.main to COMMAND_LINE, which the user may diff --git a/common/modules/finder.jsm b/common/modules/finder.jsm index a5d60c58..0a4dc973 100644 --- a/common/modules/finder.jsm +++ b/common/modules/finder.jsm @@ -93,10 +93,8 @@ var RangeFinder = Module("rangefinder", { find: function (pattern, backwards) { let str = this.bootstrap(pattern, backwards); if (!this.rangeFind.find(str)) - this.timeout(function () { - this.dactyl.echoerr("E486: Pattern not found: " + pattern, - this.commandline.FORCE_SINGLELINE); - }); + this.dactyl.echoerr("E486: Pattern not found: " + pattern, + this.commandline.FORCE_SINGLELINE); return this.rangeFind.found; }, @@ -107,15 +105,12 @@ var RangeFinder = Module("rangefinder", { else if (!this.rangeFind.find(null, reverse)) this.dactyl.echoerr("E486: Pattern not found: " + this.lastFindPattern, this.commandline.FORCE_SINGLELINE); - else if (this.rangeFind.wrapped) - // hack needed, because wrapping causes a "scroll" event which - // clears our command line - this.timeout(function () { - let msg = this.rangeFind.backward ? "find hit TOP, continuing at BOTTOM" - : "find hit BOTTOM, continuing at TOP"; - this.commandline.echo(msg, "WarningMsg", this.commandline.APPEND_TO_MESSAGES - | this.commandline.FORCE_SINGLELINE); - }, 0); + else if (this.rangeFind.wrapped) { + let msg = this.rangeFind.backward ? "find hit TOP, continuing at BOTTOM" + : "find hit BOTTOM, continuing at TOP"; + this.commandline.echo(msg, "WarningMsg", this.commandline.APPEND_TO_MESSAGES + | this.commandline.FORCE_SINGLELINE); + } else this.commandline.echo((this.rangeFind.backward ? "?" : "/") + this.lastFindPattern, "Normal", this.commandline.FORCE_SINGLELINE); diff --git a/common/modules/options.jsm b/common/modules/options.jsm index c5a6fa38..2e2d2c3c 100644 --- a/common/modules/options.jsm +++ b/common/modules/options.jsm @@ -60,6 +60,9 @@ var Option = Class("Option", { if (this.type in Option.stringify) this.stringify = Option.stringify[this.type]; + if (this.type in Option.domains) + this.domains = Option.domains[this.type]; + if (this.type in Option.testValues) this.testValues = Option.testValues[this.type]; @@ -331,7 +334,7 @@ var Option = Class("Option", { * references to a given domain from the given values. */ filterDomain: function filterDomain(host, values) - Array.filter(values, function (val) !util.isSubdomain(val, host)), + Array.filter(values, function (val) !this.domains([val]).some(function (val) util.isSubdomain(val, host)), this), /** * @property {value} The option's default value. This value will be used @@ -471,6 +474,11 @@ var Option = Class("Option", { get sitemap() this.regexplist }, + domains: { + sitelist: function (vals) array.compact(vals.map(function (site) util.getHost(site.filter))), + get sitemap() this.sitelist + }, + stringify: { charlist: function (vals) Commands.quote(vals.join("")),