1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-07 23:44:12 +01:00

Match only complete words in :lk filters. Should we maybe support regexps instead?

This commit is contained in:
Kris Maglione
2011-01-03 15:22:34 -05:00
parent 5aa7450973
commit f41e245cb1
3 changed files with 20 additions and 5 deletions

View File

@@ -176,9 +176,11 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
function (args) {
let results = array(params.iterate(args))
.sort(function (a, b) String.localeCompare(a.name, b.name));
if (args.length)
results = results.filter(function (item) args.map(String.toLowerCase)
.every(function (arg) (item.name + item.description).toLowerCase().indexOf(arg) >= 0));
let filters = args.map(function (arg) RegExp("\\b" + util.regexp.escape(arg) + "\\b", "i"));
if (filters.length)
results = results.filter(function (item) filters.every(function (re) re.test(item.name + item.description)));
commandline.commandOutput(
template.usage(results, params.format));
},

View File

@@ -273,7 +273,15 @@ function prototype(obj)
function properties(obj, prototypes, debugger_) {
let orig = obj;
let seen = {};
let seen = { dactylPropertyNames: true };
try {
if ("dactylpropertynames" in obj && !prototypes)
for (let key in values(dactylpropertynames))
if (key in obj && !set.add(seen, key))
yield key;
}
catch (e) {}
for (; obj; obj = prototypes && prototype(obj)) {
try {

View File

@@ -1168,11 +1168,16 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
* @param {object} tokens The tokens to substitute. @optional
*/
regexp: update(function (expr, flags, tokens) {
if (isinstance(expr, ["RegExp"]))
expr = expr.source;
if (tokens)
expr = String.replace(expr, /<(\w+)>/g, function (m, n1) set.has(tokens, n1) ? tokens[n1].source || tokens[n1] : m);
expr = String.replace(expr, /\/\/[^\n]*|\/\*[^]*?\*\//gm, "")
.replace(/\s+/g, "");
return RegExp(expr, flags);
return update(RegExp(expr, flags), {
closure: Class.Property(Object.getOwnPropertyDescriptor(Class.prototype, "closure")),
dactylPropertyNames: ["exec", "match", "test", "toSource", "toString", "global", "ignoreCase", "lastIndex", "multiLine", "source", "sticky"]
});
}, {
/**
* Escapes Regular Expression special characters in *str*.