Jake Gage writes: > Hey there, > > I've been using emacs for quite a few years, but never byte compiled > anything until I started using the JDE... so bear with me. I've > checked all the documentation and FAQs I could find, but I'm still a > bit confused. I've byte compiled all the JDEE packages a number of > times, but gotten errors every time: this time I've got a shiny new > machine and I'd like to actually see if I'm compiling everything > correctly. >
You can generally ignore byte compile error messages that refer to missing functions and variables. Generally these arise because a package is written to work on many different versions of Emacs, some of which may not define a particular function. In such cases, the package tests for the presence of the function or variable or the version of Emacs and works around the missing function or variable. The compiler, however, cannot know this and so simply assumes that any reference to a function or variable that is missing on the version of Emacs doing the compiling is valid and that the missing function or variable is defined by a package that will be loaded at runtime. The compiler nevertheless displays an error message for each reference to a missing function or variable as a warning to the developer. In general, you can assume that the developer has compiled the package and checked to ensure that his code works around each missing function or variable. The most common mistake made by JDEE users in compiling JDEE Lisp files is to compile them individually without first ensuring that codependent Lisp files are loaded in memory. This causes the compiler to compile references to macros defined in another file as references to nonexistent functions which then leads to missing function errors at compile time and runtime. The easiest way to avoid this problem is to use the makefiles that come with the JDEE packages or better to use jde-compile-jde command to compile them. The makefiles and jde-compile-jde command ensure that all codependent packages are loaded in memory--and hence all macros defined--before compiling any of them. - Paul
