mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-11 20:55:47 +01:00
Import part of top patch in queue: Add no-op option hive for plugin API reasons, cleanup some related code.
This commit is contained in:
@@ -45,6 +45,11 @@ var Group = Class("Group", {
|
||||
|
||||
argsExtra: function argsExtra() ({}),
|
||||
|
||||
makeArgs: function makeArgs(doc, context, args) {
|
||||
let res = update({ doc: doc, context: context }, args);
|
||||
return update(this.argsExtra(res), args);
|
||||
},
|
||||
|
||||
get toStringParams() [this.name],
|
||||
|
||||
get builtin() this.modules.contexts.builtinGroups.indexOf(this) >= 0,
|
||||
@@ -288,7 +293,10 @@ var Contexts = Module("contexts", {
|
||||
groups: { value: this.activeGroups(uri) }
|
||||
}),
|
||||
|
||||
activeGroups: function (uri, doc) {
|
||||
activeGroups: function (uri) {
|
||||
if (uri instanceof Ci.nsIDOMDocument)
|
||||
var [doc, uri] = [uri, uri.documentURIObject || util.newURI(uri.documentURI)];
|
||||
|
||||
if (!uri)
|
||||
var { uri, doc } = this.modules.buffer;
|
||||
|
||||
@@ -463,6 +471,7 @@ var Contexts = Module("contexts", {
|
||||
get modifiable() this.group.modifiable,
|
||||
|
||||
get argsExtra() this.group.argsExtra,
|
||||
get makeArgs() this.group.makeArgs,
|
||||
get builtin() this.group.builtin,
|
||||
|
||||
get name() this.group.name,
|
||||
|
||||
@@ -11,7 +11,7 @@ try {
|
||||
Components.utils.import("resource://dactyl/bootstrap.jsm");
|
||||
defineModule("options", {
|
||||
exports: ["Option", "Options", "ValueError", "options"],
|
||||
require: ["messages", "storage"],
|
||||
require: ["contexts", "messages", "storage"],
|
||||
use: ["commands", "completion", "config", "prefs", "services", "styles", "template", "util"]
|
||||
}, this);
|
||||
|
||||
@@ -757,6 +757,18 @@ var Option = Class("Option", {
|
||||
EXPORTED_SYMBOLS.push(class_.className);
|
||||
}, this);
|
||||
|
||||
var OptionHive = Class("OptionHive", Contexts.Hive, {
|
||||
init: function init(group) {
|
||||
init.supercall(this, group);
|
||||
this.values = {};
|
||||
this.has = Set.has(this.values);
|
||||
},
|
||||
|
||||
add: function add(names, description, type, defaultValue, extraInfo) {
|
||||
return this.modules.options.add(names, description, type, defaultValue, extraInfo);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @instance options
|
||||
*/
|
||||
@@ -764,6 +776,12 @@ var Options = Module("options", {
|
||||
Local: function Local(dactyl, modules, window) let ({ contexts } = modules) ({
|
||||
init: function init() {
|
||||
const self = this;
|
||||
|
||||
update(this, {
|
||||
hives: contexts.Hives("options", Class("OptionHive", OptionHive, { modules: modules })),
|
||||
user: contexts.hives.options.user
|
||||
});
|
||||
|
||||
this.needInit = [];
|
||||
this._options = [];
|
||||
this._optionMap = {};
|
||||
@@ -853,6 +871,10 @@ var Options = Module("options", {
|
||||
*/
|
||||
add: function add(names, description, type, defaultValue, extraInfo) {
|
||||
const self = this;
|
||||
|
||||
if (!util.isDactyl(Components.stack.caller))
|
||||
deprecated.warn(add, "options.add", "group.options.add");
|
||||
|
||||
util.assert(type in Option.types,
|
||||
_("option.noSuchType", type),
|
||||
true);
|
||||
|
||||
Reference in New Issue
Block a user