1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 09:17:59 +01:00

Allow :se foo nobar baz="Foo. No bar in this town."

This commit is contained in:
Kris Maglione
2008-12-04 12:06:38 -05:00
parent f4a0e51cec
commit 667e1433ec
4 changed files with 130 additions and 117 deletions

View File

@@ -417,7 +417,7 @@ function Commands() //{{{
argCount = "*";
var args = []; // parsed options
args.__iterator__ = util.Array.iterator2;
args.__iterator__ = function () util.Array.iterator2(this);
args.string = str; // for access to the unparsed string
args.literalArg = "";

View File

@@ -351,18 +351,18 @@ function Options() //{{{
function loadPreference(name, forcedDefault, defaultBranch)
{
var defaultValue = null; // XXX
let defaultValue = null; // XXX
if (forcedDefault != null) // this argument sets defaults for non-user settable options (like extensions.history.comp_history)
defaultValue = forcedDefault;
var branch = defaultBranch ? prefService.getDefaultBranch("") : prefService;
var type = prefService.getPrefType(name);
let branch = defaultBranch ? prefService.getDefaultBranch("") : prefService;
let type = prefService.getPrefType(name);
try
{
switch (type)
{
case prefService.PREF_STRING:
var value = branch.getComplexValue(name, Components.interfaces.nsISupportsString).data;
let value = branch.getComplexValue(name, Components.interfaces.nsISupportsString).data;
// try in case it's a localized string (will throw an exception if not)
if (!prefService.prefIsLocked(name) && !prefService.prefHasUserValue(name) &&
/^chrome:\/\/.+\/locale\/.+\.properties/.test(value))
@@ -562,18 +562,17 @@ function Options() //{{{
function (args, modifiers)
{
let bang = args.bang;
args = args.string;
if (!args.length)
args[0] = "all";
for (let [,arg] in args)
{
if (bang)
{
var onlyNonDefault = false;
if (!args)
{
args = "all";
onlyNonDefault = true;
}
let [matches, name, postfix, valueGiven, operator, value] =
args.match(/^\s*?([a-zA-Z0-9\.\-_{}]+)([?&!])?\s*(([-+^]?)=(.*))?\s*$/);
arg.match(/^\s*?([a-zA-Z0-9\.\-_{}]+)([?&!])?\s*(([-+^]?)=(.*))?\s*$/);
let reset = (postfix == "&");
let invertBoolean = (postfix == "!");
@@ -611,10 +610,10 @@ function Options() //{{{
return;
}
let opt = options.parseOpt(args, modifiers);
let opt = options.parseOpt(arg, modifiers);
if (!opt)
{
liberator.echoerr("Error parsing :set command: " + args);
liberator.echoerr("Error parsing :set command: " + arg);
return;
}
@@ -662,7 +661,7 @@ function Options() //{{{
{
if (opt.valueGiven)
{
liberator.echoerr("E474: Invalid argument: " + args);
liberator.echoerr("E474: Invalid argument: " + arg);
return;
}
opt.values = !opt.unsetBoolean;
@@ -671,6 +670,7 @@ function Options() //{{{
if (res)
liberator.echoerr(res);
}
}
},
{
bang: true,
@@ -684,7 +684,11 @@ function Options() //{{{
if (filter[filter.length - 1] == "=")
{
context.advance(filter.length);
context.completions = [options.getPref(filter.substr(0, filter.length - 1)), "Current Value"];
filter = filter.substr(0, filter.length - 1);
context.completions = [
[loadPreference(filter, null, false), "Current Value"],
[loadPreference(filter, null, true), "Default Value"]
];
return;
}
@@ -728,7 +732,6 @@ function Options() //{{{
completion.optionValue(context, opt.name, opt.operator);
},
literal: 0,
serial: function () [
{
command: this.name,
@@ -886,7 +889,7 @@ function Options() //{{{
let prefs = function () {
for each (let pref in prefArray)
{
var userValue = prefService.prefHasUserValue(pref);
let userValue = prefService.prefHasUserValue(pref);
if (onlyNonDefault && !userValue || pref.indexOf(filter) == -1)
continue;

View File

@@ -1,5 +1,7 @@
2008-XX-XX:
* version 2.0 (probably)
* IMPORTANT: :set now sets multiple options, as in Vim. Spaces in values
must be quoted or escaped.
* IMPORTANT: Due to much improved autocompletion, changed default 'complete' option
value to 'sfl', listing intelligent Firefox location bar results. Removed possibility
to use 'h' in 'complete'.

View File

@@ -26,36 +26,44 @@ Show all options. Show all options.
____
|E518| |E519|
||:se[t] {option}?||
||:se[t] {option}*||
____
Show value of {option}.
____
||:se[t] {option}||
||:se[t] {option} [...]||
____
Toggle option: set, switch it on. +
Number option: show value. +
String option: show value.
____
||:se[t] no((option))|| +
||:se[t] no((option)) [...]|| +
____
Toggle option: Reset, switch it off.
____
||:se[t] {option}!|| +
||:se[t] inv((option))|| +
||:se[t] {option}! [...]|| +
||:se[t] inv((option)) [...]|| +
____
Toggle option: Invert value.
____
||:se[t] inv((option))={value}|| +
||:se[t] inv((option))={value} [...]|| +
||:se[t] {option}!={value} [...]|| +
____
For list options, toggle the specified values.
If the option is a list, the given values are toggled. Given
:set opt=foo,bar
Then,
:set opt!=foo,baz
results in
opt=bar,baz
____
|:set-default|
||:se[t] {option}&||
||:se[t] {option}& [...]||
____
Reset option to its default value.
____
@@ -66,7 +74,7 @@ Set all options to their default value.
____
|:set-args| |E487| |E521|
||:se[t] {option}={value}|| +
||:se[t] {option}={value} [...]|| +
____
Set string or number option to {value}. +
For numeric options the value must be given in decimal.
@@ -74,7 +82,7 @@ The old value can be inserted by typing [m]<Tab>[m].
____
|:set+=|
||:se[t] {option}+={value}|| +
||:se[t] {option}+={value} [...]|| +
____
Add the {value} to a number option, or append the
{value} to a string option. When the option is a
@@ -86,7 +94,7 @@ present the option value doesn't change.
____
|:set^=|
||:se[t] {option}^={value}|| +
||:se[t] {option}^={value} [...]|| +
____
Multiply the {value} to a number option, or prepend
the {value} to a string option. When the option is a
@@ -95,7 +103,7 @@ value was empty.
____
|:set-=|
||:se[t] {option}-={value}|| +
||:se[t] {option}-={value} [...]|| +
____
Subtract the {value} from a number option, or remove