new module system
commit4fa077828a87d18fdcb30e6ff5ed3bea8e32d659
authorJohn Foerch <jjfoerch@earthlink.net>
Fri, 19 Mar 2010 18:24:02 +0000 (19 14:24 -0400)
committerJohn Foerch <jjfoerch@earthlink.net>
Mon, 22 Mar 2010 17:47:07 +0000 (22 13:47 -0400)
tree17a4b4c73afefcfc6bf0a7de7dbcf6250ee3b964
parent32f1c6f5d16a0fa93bd8016f7399781d17cf6043
new module system

This commit provides a new module system which, while in the main being
backward compatible with the old module system, provides the capability
for modules to have their own namespace.  The centerpiece of the system is
a new function 'load', which is patterned after the function of that name
in emacs lisp, plus the added capability of working with modules.

Modules now need to have as their first expression an in_module assertion,
and as their last expression a 'provide' call.  Backward compatibility is
provided by "in_module(null);" which causes the module to be loaded into
application scope instead of its own namespace.

The call_after_load procedure now takes a feature name, not a filename.
Feature names are normally the same as the filename, but without a .js
extension.

This patch fixes a bug in the theme system whereby modules in
subdirectories could not be themed.  (The theme system depends on feature
names being independent of directory structures.)

The capability to write namespaced modules is thus provided, but no
existing modules are updated in this patch.  Those can be done
incrementally as deemed useful.
125 files changed:
components/application.js
contrib/modules/mode-line-buttons.js
defaults/preferences/default-modules.js
modules/array.js
modules/bindings/default/bindings.js
modules/bindings/default/caret.js
modules/bindings/default/content-buffer/anchor.js
modules/bindings/default/content-buffer/button.js
modules/bindings/default/content-buffer/checkbox.js
modules/bindings/default/content-buffer/element.js
modules/bindings/default/content-buffer/form.js
modules/bindings/default/content-buffer/normal.js
modules/bindings/default/content-buffer/richedit.js
modules/bindings/default/content-buffer/select.js
modules/bindings/default/content-buffer/text.js
modules/bindings/default/content-buffer/textarea.js
modules/bindings/default/content-buffer/zoom.js
modules/bindings/default/download-buffer.js
modules/bindings/default/global.js
modules/bindings/default/help-buffer.js
modules/bindings/default/hints.js
modules/bindings/default/isearch.js
modules/bindings/default/minibuffer.js
modules/bindings/default/quote.js
modules/bindings/default/special-buffer.js
modules/block-content-focus-change.js
modules/buffer.js
modules/builtin-commands.js
modules/cache.js
modules/caret.js
modules/casual-spelling.js
modules/clicks-in-new-buffer.js
modules/command-line.js
modules/commands.js
modules/conkeror.js
modules/content-buffer-input.js
modules/content-buffer.js
modules/content-handler.js
modules/cookie.js
modules/coroutine.js
modules/daemon.js
modules/debug.js
modules/download-manager.js
modules/element.js
modules/env.js
modules/extension.js
modules/extensions/adblockplus.js
modules/extensions/dom-inspector.js
modules/extensions/noscript.js
modules/extensions/venkman.js
modules/external-editor.js
modules/eye-guide.js
modules/favicon.js
modules/find.js
modules/follow-relationship.js
modules/global-overlay-keymap.js
modules/help.js
modules/hints.js
modules/history.js
modules/hook.js
modules/index-webjump.js
modules/input.js
modules/interactive.js
modules/io.js
modules/keymap.js
modules/keywords.js
modules/labels.js
modules/load-spec.js
modules/media.js
modules/mime-type-override.js
modules/mime.js
modules/minibuffer-completion.js
modules/minibuffer-read-file.js
modules/minibuffer-read-mime-type.js
modules/minibuffer-read-option.js
modules/minibuffer-read.js
modules/minibuffer.js
modules/mode-line.js
modules/mode.js
modules/new-tabs.js
modules/page-modes/dailymotion.js
modules/page-modes/gmail.js
modules/page-modes/gmane.js
modules/page-modes/google-calendar.js
modules/page-modes/google-gqueues.js
modules/page-modes/google-images.js
modules/page-modes/google-maps.js
modules/page-modes/google-reader.js
modules/page-modes/google-search-results.js
modules/page-modes/google-video.js
modules/page-modes/google-voice.js
modules/page-modes/reddit.js
modules/page-modes/stackoverflow.js
modules/page-modes/wikipedia.js
modules/page-modes/xkcd.js
modules/page-modes/youtube.js
modules/permission-manager.js
modules/pref.js
modules/pretty-print.js
modules/quote.js
modules/rc.js
modules/save.js
modules/scroll.js
modules/search-engine.js
modules/selectively-unstyle.js
modules/services.js
modules/session.js
modules/source-code.js
modules/spawn-process.js
modules/special-buffer.js
modules/ssl.js
modules/string.js
modules/stylesheet.js
modules/suggest-file-name.js
modules/tab-bar.js
modules/theme.js
modules/timer.js
modules/universal-argument.js
modules/user-variable.js
modules/utils.js
modules/walnut.js
modules/webjump.js
modules/window.js
modules/zoom.js
tests/simple/modules.js