diff --git a/common/content/autocommands.js b/common/content/autocommands.js index 68bea161..83298751 100644 --- a/common/content/autocommands.js +++ b/common/content/autocommands.js @@ -71,7 +71,9 @@ var AutoCommands = Module("autocommands", { init: function () { update(this, { hives: contexts.Hives("autocmd", AutoCmdHive), - user: contexts.hives.autocmd.user + user: contexts.hives.autocmd.user, + allHives: contexts.allGroups.autocmd, + matchingHives: function matchingHives(uri) contexts.matchingGroups(uri).autocmd }); }, @@ -143,7 +145,7 @@ var AutoCommands = Module("autocommands", { let uri = args.url ? util.newURI(args.url) : buffer.uri; event = event.toLowerCase(); - for (let hive in this.hives.iterValues()) { + for (let hive in values(this.matchingHives(uri))) { let args = update({}, hive.argsExtra(arguments[1]), arguments[1]); diff --git a/common/modules/contexts.jsm b/common/modules/contexts.jsm index d208ea8e..b25b374a 100644 --- a/common/modules/contexts.jsm +++ b/common/modules/contexts.jsm @@ -265,15 +265,17 @@ var Contexts = Module("contexts", { return frame; }, - groups: Class.memoize(function () Object.create(this.groupsProto, { - groups: { value: this.activeGroups() }, - })), + groups: Class.memoize(function () this.matchingGroups(this.modules.buffer.uri)), allGroups: Class.memoize(function () Object.create(this.groupsProto, { groups: { value: this.initializedGroups() } })), - activeGroups: function (hive) this.initializedGroups().filter(function (g) g.filter(this), this.modules.buffer.uri), + matchingGroups: function (uri) Object.create(this.groupsProto, { + groups: { value: this.activeGroups(uri) }, + }), + + activeGroups: function (uri) this.initializedGroups().filter(function (g) g.filter(this), uri || this.modules.buffer.uri), flush: function flush() { delete this.groups;