diff --git a/common/content/autocommands.js b/common/content/autocommands.js index f8b10121..6d0b9b84 100644 --- a/common/content/autocommands.js +++ b/common/content/autocommands.js @@ -73,15 +73,15 @@ var AutoCommands = Module("autocommands", { hives: contexts.Hives("autocmd", AutoCmdHive), user: contexts.hives.autocmd.user, allHives: contexts.allGroups.autocmd, - matchingHives: function matchingHives(uri) contexts.matchingGroups(uri).autocmd + matchingHives: function matchingHives(uri, doc) contexts.matchingGroups(uri, doc).autocmd }); }, get activeHives() contexts.allGroups.autocmd.filter(function (h) h._store.length), - add: deprecated("autocommand.user.add", { get: function add() autocommands.user.closure.add }), - get: deprecated("autocommand.user.get", { get: function get() autocommands.user.closure.get }), - remove: deprecated("autocommand.user.remove", { get: function remove() autocommands.user.closure.remove }), + add: deprecated("group.autocmd.add", { get: function add() autocommands.user.closure.add }), + get: deprecated("group.autocmd.get", { get: function get() autocommands.user.closure.get }), + remove: deprecated("group.autocmd.remove", { get: function remove() autocommands.user.closure.remove }), /** * Lists all autocommands with a matching *event* and *regexp*. @@ -142,16 +142,18 @@ var AutoCommands = Module("autocommands", { dactyl.echomsg('Executing ' + event + ' Auto commands for "*"', 8); let lastPattern = null; - let uri = args.url ? util.createURI(args.url) : buffer.uri; + let { uri, doc } = args; + if (!uri) + ({ uri, doc }) = buffer; event = event.toLowerCase(); - for (let hive in values(this.matchingHives(uri))) { + for (let hive in values(this.matchingHives(uri, doc))) { let args = update({}, hive.argsExtra(arguments[1]), arguments[1]); for (let autoCmd in values(hive._store)) - if (autoCmd.eventName === event && autoCmd.filter(uri)) { + if (autoCmd.eventName === event && autoCmd.filter(uri, doc)) { if (!lastPattern || lastPattern !== String(autoCmd.filter)) dactyl.echomsg("Executing " + event + " Auto commands for " + autoCmd.filter, 8); diff --git a/common/content/buffer.js b/common/content/buffer.js index 73d0e3b3..f970e9f3 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -227,10 +227,16 @@ var Buffer = Module("buffer", { }, set lastInputField(value) { this.localStore.lastInputField = value && Cu.getWeakReference(value); }, + /** + * @property {nsIURI} The current top-level document. + */ + get doc() window.content.document, + /** * @property {nsIURI} The current top-level document's URI. */ get uri() util.newURI(content.location.href), + /** * @property {nsIURI} The current top-level document's URI, sans any * fragment identifier. diff --git a/common/content/modes.js b/common/content/modes.js index 7e4eedb6..33951bc7 100644 --- a/common/content/modes.js +++ b/common/content/modes.js @@ -310,14 +310,14 @@ var Modes = Module("modes", { return; } + params = params || this.getMode(mainMode || this.main).params; + + if (!stack && mainMode != null && this._modeStack.length > 1) + this.reset(); + this.withSavedValues(["inSet"], function set() { this.inSet = true; - params = params || this.getMode(mainMode || this.main).params; - - if (!stack && mainMode != null && this._modeStack.length > 1) - this.reset(); - oldMain = this._main, oldExtended = this._extended; if (extendedMode != null) diff --git a/common/modules/contexts.jsm b/common/modules/contexts.jsm index 8d2dd98e..1dafd148 100644 --- a/common/modules/contexts.jsm +++ b/common/modules/contexts.jsm @@ -267,7 +267,11 @@ var Contexts = Module("contexts", { groups: { value: this.activeGroups(uri) }, }), - activeGroups: function (uri) this.initializedGroups().filter(function (g) g.filter(this), uri || this.modules.buffer.uri), + activeGroups: function (uri, doc) { + if (!uri) + ({ uri, doc }) = this.modules.buffer; + return this.initializedGroups().filter(function (g) g.filter(uri, doc)); + }, flush: function flush() { delete this.groups;