1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-20 18:45:46 +01:00

Add wildanchor option.

This commit is contained in:
Kris Maglione
2010-09-23 15:15:09 -04:00
parent db2a6ba0a3
commit 2f30daa09e
6 changed files with 37 additions and 13 deletions

View File

@@ -54,7 +54,7 @@ const CompletionContext = Class("CompletionContext", {
["filters", "keys", "title", "quote"].forEach(function (key)
self[key] = parent[key] && util.cloneObject(parent[key]));
["anchored", "compare", "editor", "_filter", "filterFunc", "keys", "process", "top"].forEach(function (key)
["anchored", "compare", "editor", "_filter", "filterFunc", "forceAnchored", "keys", "process", "top"].forEach(function (key)
self[key] = parent[key]);
self.__defineGetter__("value", function () this.top.value);
@@ -96,6 +96,7 @@ const CompletionContext = Class("CompletionContext", {
* @default true
*/
this.anchored = true;
this.forceAnchored = null;
this.compare = function (a, b) String.localeCompare(a.text, b.text);
/**
@@ -405,6 +406,9 @@ const CompletionContext = Class("CompletionContext", {
let self = this;
delete this._substrings;
if (!this.forceAnchored)
this.anchored = options.get("wildanchor").getKey(this.name, this.anchored);
// Item matchers
if (this.ignoreCase)
this.matchString = this.anchored ?
@@ -802,7 +806,7 @@ const Completion = Module("completion", {
</div>);
},
{
argCount: "1",
argCount: "*",
completer: function (context, args) {
let PREFIX = "/ex/contexts";
context.fork("ex", 0, completion, "ex");
@@ -849,6 +853,10 @@ const Completion = Module("completion", {
completer: function (context) array(values(completion.urlCompleters))
});
options.add(["wildanchor", "wia"],
"Regexp list defining which contexts require matches anchored to the begining of the result",
"regexlist", "!/ex/(back|buffer|ext|forward|help|undo),.*");
options.add(["wildcase", "wic"],
"Completion case matching mode",
"regexmap", "smart",

View File

@@ -358,6 +358,7 @@ const JavaScript = Module("javascript", {
offset: key.length
};
context.forceAnchored = true;
// TODO: Make this a generic completion helper function.
for (let [, obj] in Iterator(objects))
this.context.fork(obj[1], this._top.offset, this, this._fill,
@@ -605,10 +606,7 @@ const JavaScript = Module("javascript", {
"Switch on/off jsdebugger",
"boolean", false, {
setter: function (value) {
if (value)
services.get("debugger").on();
else
services.get("debugger").off();
services.get("debugger")[value ? "on" : "off"]();
},
getter: function () services.get("debugger").isOn
});

View File

@@ -382,11 +382,11 @@ const Option = Class("Option", {
stringlist: function (k) this.values.indexOf(k) >= 0,
get charlist() this.stringlist,
regexlist: function (k) {
regexlist: function (k, default_) {
for (let re in values(this.values))
if (re.test(k))
return re.result;
return null;
return arguments.length > 1 ? default_ : null;
},
get regexmap() this.regexlist
},