mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 10:47:59 +01:00
More lazy instantiation. Look out for breakage.
This commit is contained in:
@@ -1640,9 +1640,9 @@ var Buffer = Module("buffer", {
|
||||
};
|
||||
},
|
||||
events: function () {
|
||||
events.addSessionListener(config.browser, "DOMContentLoaded", this.closure.onDOMContentLoaded, true);
|
||||
events.addSessionListener(config.browser, "load", this.closure.onPageLoad, true);
|
||||
events.addSessionListener(config.browser, "scroll", this.closure._updateBufferPosition, false);
|
||||
events.addSessionListener(config.browser, "DOMContentLoaded", buffer.closure.onDOMContentLoaded, true);
|
||||
events.addSessionListener(config.browser, "load", buffer.closure.onPageLoad, true);
|
||||
events.addSessionListener(config.browser, "scroll", buffer.closure._updateBufferPosition, false);
|
||||
},
|
||||
mappings: function () {
|
||||
var myModes = config.browserModes;
|
||||
|
||||
@@ -468,7 +468,7 @@ var Commands = Module("commands", {
|
||||
_addCommand: function (args, replace) {
|
||||
if (!args[3])
|
||||
args[3] = {};
|
||||
args[3].definedAt = commands.getCaller(Components.stack.caller.caller);
|
||||
args[3].definedAt = Commands.getCaller(Components.stack.caller.caller);
|
||||
|
||||
let names = array.flatten(Command.parseSpecs(args[0]));
|
||||
args.parsedSpecs = names;
|
||||
@@ -659,23 +659,6 @@ var Commands = Module("commands", {
|
||||
return this._exCommands.filter(function (cmd) cmd.user);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns a frame object describing the currently executing
|
||||
* command, if applicable, otherwise returns the passed frame.
|
||||
*
|
||||
* @param {nsIStackFrame} frame
|
||||
*/
|
||||
getCaller: function (frame) {
|
||||
if (io.sourcing)
|
||||
return {
|
||||
__proto__: frame,
|
||||
filename: io.sourcing.file[0] == "[" ? io.sourcing.file :
|
||||
services.io.newFileURI(File(io.sourcing.file)).spec,
|
||||
lineNumber: io.sourcing.line
|
||||
};
|
||||
return frame;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns true if a command invocation contains a URL referring to the
|
||||
* domain *host*.
|
||||
@@ -1179,6 +1162,23 @@ var Commands = Module("commands", {
|
||||
delete this._exMap[name];
|
||||
}
|
||||
}, {
|
||||
/**
|
||||
* Returns a frame object describing the currently executing
|
||||
* command, if applicable, otherwise returns the passed frame.
|
||||
*
|
||||
* @param {nsIStackFrame} frame
|
||||
*/
|
||||
getCaller: function (frame) {
|
||||
if (io.sourcing)
|
||||
return {
|
||||
__proto__: frame,
|
||||
filename: io.sourcing.file[0] == "[" ? io.sourcing.file :
|
||||
services.io.newFileURI(File(io.sourcing.file)).spec,
|
||||
lineNumber: io.sourcing.line
|
||||
};
|
||||
return frame;
|
||||
},
|
||||
|
||||
// returns [count, parsed_argument]
|
||||
parseArg: function parseArg(str, sep, keepQuotes) {
|
||||
let arg = "";
|
||||
|
||||
@@ -172,7 +172,7 @@ var MapHive = Class("MapHive", {
|
||||
extra = extra || {};
|
||||
|
||||
let map = Map(modes, keys, description, action, extra);
|
||||
map.definedAt = commands.getCaller(Components.stack.caller);
|
||||
map.definedAt = Commands.getCaller(Components.stack.caller);
|
||||
map.hive = this;
|
||||
|
||||
if (this.name !== "builtin")
|
||||
@@ -344,7 +344,7 @@ var Mappings = Module("mappings", {
|
||||
*/
|
||||
add: function () {
|
||||
let map = this.builtin.add.apply(this.builtin, arguments);
|
||||
map.definedAt = commands.getCaller(Components.stack.caller);
|
||||
map.definedAt = Commands.getCaller(Components.stack.caller);
|
||||
return map;
|
||||
},
|
||||
|
||||
@@ -361,7 +361,7 @@ var Mappings = Module("mappings", {
|
||||
*/
|
||||
addUserMap: function () {
|
||||
let map = this.user.add.apply(this.user, arguments);
|
||||
map.definedAt = commands.getCaller(Components.stack.caller);
|
||||
map.definedAt = Commands.getCaller(Components.stack.caller);
|
||||
return map;
|
||||
},
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ var Marks = Module("marks", {
|
||||
events: function () {
|
||||
let appContent = document.getElementById("appcontent");
|
||||
if (appContent)
|
||||
events.addSessionListener(appContent, "load", this.closure._onPageLoad, true);
|
||||
events.addSessionListener(appContent, "load", marks.closure._onPageLoad, true);
|
||||
},
|
||||
mappings: function () {
|
||||
var myModes = config.browserModes;
|
||||
|
||||
@@ -660,7 +660,7 @@ var Options = Module("options", {
|
||||
if (!extraInfo)
|
||||
extraInfo = {};
|
||||
|
||||
extraInfo.definedAt = commands.getCaller(Components.stack.caller);
|
||||
extraInfo.definedAt = Commands.getCaller(Components.stack.caller);
|
||||
|
||||
let name = names[0];
|
||||
if (name in this._optionMap) {
|
||||
@@ -973,7 +973,7 @@ var Options = Module("options", {
|
||||
}
|
||||
if (res)
|
||||
dactyl.echoerr(res);
|
||||
option.setFrom = commands.getCaller(null);
|
||||
option.setFrom = Commands.getCaller(null);
|
||||
}
|
||||
}
|
||||
flushList();
|
||||
|
||||
@@ -875,7 +875,7 @@ var Tabs = Module("tabs", {
|
||||
}
|
||||
for (let event in values(["TabMove", "TabOpen", "TabClose"]))
|
||||
events.addSessionListener(tabContainer, event, callback, false);
|
||||
events.addSessionListener(tabContainer, "TabSelect", this.closure._onTabSelect, false);
|
||||
events.addSessionListener(tabContainer, "TabSelect", tabs.closure._onTabSelect, false);
|
||||
},
|
||||
mappings: function () {
|
||||
mappings.add([modes.NORMAL], ["g0", "g^"],
|
||||
|
||||
@@ -147,6 +147,9 @@ defineModule.modules = [];
|
||||
defineModule.times = { all: 0 };
|
||||
defineModule.time = function time(major, minor, func, self) {
|
||||
let time = Date.now();
|
||||
if (typeof func !== "function")
|
||||
func = self[func];
|
||||
|
||||
try {
|
||||
var res = func.apply(self, Array.slice(arguments, 4));
|
||||
}
|
||||
|
||||
@@ -844,7 +844,7 @@ var Completion = Module("completion", {
|
||||
get setFunctionCompleter() JavaScript.setCompleter, // Backward compatibility
|
||||
|
||||
Local: function (dactyl, modules, window) ({
|
||||
options: modules.options,
|
||||
get options() modules.options,
|
||||
|
||||
// FIXME
|
||||
_runCompleter: function _runCompleter(name, filter, maxItems) {
|
||||
|
||||
@@ -162,7 +162,7 @@ var RangeFinder = Module("rangefinder", {
|
||||
}, {
|
||||
}, {
|
||||
modes: function (dactyl, modules, window) {
|
||||
const { commandline, modes } = modules;
|
||||
const { modes } = modules;
|
||||
modes.addMode("FIND", {
|
||||
extended: true,
|
||||
description: "Find mode, active when typing search input",
|
||||
|
||||
@@ -246,9 +246,11 @@ var Overlay = Module("Overlay", {
|
||||
defineModule.loadLog.push(" from: " + util.fixURI(frame.filename) + ":" + frame.lineNumber);
|
||||
|
||||
delete modules[module.className];
|
||||
// util.dump("INIT: " + module.className);
|
||||
modules[module.className] = defineModule.time(module.className, "init", module);
|
||||
frob(module.className);
|
||||
|
||||
init(modules[module.className]);
|
||||
// init(modules[module.className]);
|
||||
}
|
||||
catch (e) {
|
||||
util.dump("Loading " + (module && module.className) + ":");
|
||||
@@ -257,16 +259,38 @@ var Overlay = Module("Overlay", {
|
||||
return modules[module.className];
|
||||
}
|
||||
|
||||
for each (let module in defineModule.modules)
|
||||
if (module.INIT.init)
|
||||
defineModule.time(module.constructor.className, "init",
|
||||
module.INIT.init, module,
|
||||
modules.dactyl, modules, window);
|
||||
Module.list.forEach(function (mod) {
|
||||
Object.keys(mod.prototype.INIT).forEach(function (name) {
|
||||
deferredInit[name] = deferredInit[name] || [];
|
||||
deferredInit[name].push(function () {
|
||||
// util.dump("INIT: " + mod.className + ":" + name);
|
||||
defineModule.time(mod.className, name,
|
||||
name, mod.prototype.INIT,
|
||||
modules.dactyl, modules, window);
|
||||
});
|
||||
});
|
||||
});
|
||||
defineModule.modules.forEach(function (mod) {
|
||||
Object.keys(mod.INIT).forEach(function (name) {
|
||||
deferredInit[name] = deferredInit[name] || [];
|
||||
deferredInit[name].push(function () {
|
||||
// util.dump("INIT: " + mod.constructor.className + ":" + name);
|
||||
defineModule.time(mod.constructor.className, name,
|
||||
mod.INIT[name], mod,
|
||||
modules.dactyl, modules, window);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
defineModule.modules.map(init);
|
||||
function frob(name) {
|
||||
(deferredInit[name] || []).forEach(call);
|
||||
}
|
||||
|
||||
Module.list.forEach(load);
|
||||
deferredInit["load"].forEach(call);
|
||||
frob("init");
|
||||
defineModule.modules.forEach(function (mod) { frob(mod.className); });
|
||||
|
||||
// Module.list.forEach(load);
|
||||
frob("load");
|
||||
modules.times = update({}, defineModule.times);
|
||||
|
||||
defineModule.loadLog.push("Loaded in " + (Date.now() - start) + "ms");
|
||||
|
||||
Reference in New Issue
Block a user