On 19 Aug 2007, Michael Olson outgrape: > Nix <[EMAIL PROTECTED]> writes: >> On 18 Aug 2007, Michael Olson outgrape: >>> +(eval-when-compile >>> + (condition-case nil >>> + (require 'overlay) >>> + (error nil))) >>> } >> >> IIRC, this will lead to overlay not being required at runtime, which >> means we'll still see the same failures. overlay.el isn't dumped into >> XEmacs (it's part of the optional `fsf-compat' package and thus can't >> be dumped). >> >> If `overlay' isn't present on XEmacs we're going to die sooner or >> later anyway so we might as well fail sooner. > > I'm uncertain. The same fix has been present in Planner for quite a > while and I haven't heard any complaints about it.
I haven't tested planner for ages: I'll try it soon and see if I can break it :) > Additionally, I > tried evaluating (featurep 'overlay) before evaluating > (require 'emms-playlist-mode) > and afterward. The results were nil and t, respectively. That might be because you hadn't byte-compiled emms-playlist-mode.el (or at least not with the XEmacs byte-compiler). `eval-when-compile' has somewhat strange semantics: the body is executed when the byte-compiler processes the form *or* when the form is read by the interpreter, but not when an .elc is loaded at runtime. (This is easily verifiable with a one-line testcase. Try executing (eval-when-compile (message "foo")), then byte-compiling it and loading the resulting .elc, and watch the ` *Message-Log*' buffer.) I'd say you really do want `eval-and-compile' here, but since you're only doing a `require' which has those semantics anyway, this reduces to a plain `require'. The only situtation in which I can envisage you wanting to put a `require' in an `eval-when-compile' is when the file required contains only macros, and that's a dangerous thing to depend upon. > This is in XEmacs 21.4 (patch 20). Does your version of XEmacs do the > same? No: I get nil both before and after byte-compilation in XEmacs 21.5.28 and 21.4.20 both. Are you sure you didn't typo somewhere? (Byte-compiling in the same XEmacs session will have the effect you see, of course, because the byte-compiler will have required 'overlay during the byte-compilation phase.) (See the definition of `eval-when-compile' in bytecomp-runtime.el, and the corresponding definition in `byte-compile-initial-macro-environment' in bytecomp.el.) _______________________________________________ Emms-help mailing list Emms-help@gnu.org http://lists.gnu.org/mailman/listinfo/emms-help