On Friday 02 February 2007 17:25, Stephen J. Turnbull wrote:
Now, vc-svn-registered is a strange beast: it gets defun'ed in
autoload file to a function which loads vc-svn and then calls
vc-svn-registered, which has been redefined in vc-svn. I suspect the
21.4 byte-compiler or maybe the bytecode interpreter gets confused by
these shenanigans. I think this is excessively tricky, but it should
I suppose the reason for this is that unless the vc-BACKEND-registered defun
for a specific backend is fully embedded into auto-autoloads.el, the whole
backend gets always loaded when vc-registered in vc-hooks.el calls it. And
of course, if a file being opened is not handled by that backend, that
backend was loaded pretty much for nothing.
If on the other hand there's a fully selfcontained vc-BACKEND-registered
available through autoloads, it can be called without pulling in the backend
and the actual backend loaded only when some basic checks performed by the
selfcontained one indicates that the likelihood of the full backend being
actually needed is sufficently big.
I haven't tried it yet, but I wouldn't be surprised if in
1. marking the defvar of vc-svn-admin-directory with an autoload cookie
2. getting rid of the magical autoload of vc-svn-registered
3. marking the regular defun of vc-svn-registered
works around the bytecode bug in 21.4.
By 3) above do you mean marking the whole vc-svn-registered function,
essentially copy-pasting it and just prepending ;;;###autoload to every line
of it in the copy, or just keeping one copy and marking it with an autoload
cookie as usual?
If copy-pasting the whole defun, I suppose vc-svn-admin-directory would need
the autoload cookie indeed. With other backends it could be much more than
just a single defvar. If just one copy marked with an autoload cookie as
usual, I guess vc-svn-admin-directory wouldn't need the cookie, but the
drawback would vc-hooks.el dragging along all handled backends right from the
start as discussed above.
I think I'll play a bit with renaming the "embedded autoloads copies" of
vc-BACKEND-registered to something else so the redefining of
vc-BACKEND-registered doesn't happen and see if that makes a difference.
If not, perhaps KISS and shrug off the penalty of all backends being pulled in
XEmacs-Beta mailing list