1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-22 10:47:57 +01:00

Deal with echoed messages being cleared by scroll event. Closes issue #374.

This commit is contained in:
Kris Maglione
2011-03-05 06:54:44 -05:00
parent 96c5044ac4
commit cf681d5cbb
4 changed files with 24 additions and 17 deletions

View File

@@ -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);
},
/**

View File

@@ -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

View File

@@ -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);

View File

@@ -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("")),