Hi,
I've sent a bug report to <efs-bugs(a)hplb.hpl.hp.com> months ago,
but I got no response. So, I'll send it again.
If a user put the line (require 'efs) in the startup file rather
than (require 'efs-auto), or if a user actually run efs for the
remote file systems first, `eval-after-load' won't work if it is
written in a Lisp file. Here's an example:
(let* ((default-directory "/tmp/")
(load-path (cons default-directory load-path))
(features (delq 'foo (delq 'bar features))))
(if (featurep 'xemacs)
(require 'efs)
(require 'ange-ftp))
(with-temp-file "foo.el"
(insert "\
\(eval-after-load \"bar\"
'(message \"The after-load form is evaluated successfully\"))
\(provide 'foo)
"))
(with-temp-file "bar.el"
(insert "\
\(provide 'bar)
"))
(require 'foo)
(require 'bar)
(assoc "bar" after-load-alist))
=> nil
After evaluating this form, the after-load form for "bar" has
not been registered in `after-load-alist' and you may not see
the "successful" message. I can find similar cases in many Lisp
programs, and let me say all those programs might not work.
I've fixed it by myself, it isn't a smart solution, though:
ftp://ftp.jpl.org/xemacs/packages/efs-1.29-pkg-after-load.patch.gz
--
Katsumi Yamaoka <yamaoka(a)jpl.org>