Mike Woolley writes:
 > Paul Kinnucan <[EMAIL PROTECTED]> writes:
 > 
 > > Jeff Greif writes:
 > > 
 > >  > The problem appears to be the attempt to support both GNU Emacs and
 > > Xemacs using runtime conditionals.  It appears that compile-time
 > > conditionals are needed in order to compile the code in
 > > tree-widget.el, or some additional runtime conditionals are needed,
 > > such as
 > > 
 > >  > 
 > >  > if (not (featurep 'xemacs))
 > >  >   (progn
 > >  >     (defvar widget-button-keymap nil)
 > >  >     (defun extent-list () nil)))
 > >  > 
 > >  > You can also work around the problem in ways which break Xemacs
 > > support.
 > > 
 > > Hi Jeff,
 > > 
 > > Yes, most of the JDE Lisp files include XEmacs comptability code that
 > > leads to free variable warnings when the files are compiled under
 > > Emacs or under XEmacs. I don't know of any compile-time method of
 > > avoiding free variable warnings in the compiler output. Do you?
 > > 
 > > 
 > > - Paul
 > 
 > Yes it's possible.
 > 
 > The conditional forms suggested by Jeff need to be surrounded by
 > (eval-when-compile...), so the byte compiler sees the dummy
 > definitions.
 > 
 > I usually do something like the following:
 > 
 > (eval-and-compile
 >   (defconst my-xemacs-flag (featurep 'xemacs)))
 > 
 > (eval-when-compile
 >   (cond (my-xemacs-flag
 >       (defvar gnu-emacs-variable nil)
 >       (fset 'gnu-emacs-function nil))
 >      (t ; GNU Emacs
 >       (defvar xemacs-variable nil)
 >       (fset 'xemacs-function nil))))
 > 

eval-when-compile affects only compiled files. A lot of JDE users,
including myself, run source files uncompiled for various
reasons. As a result, if I do what you suggest, the emacs 
environment will be polluted with a lot of XEmacs variables,
etc. Jeff then suggested that I add an additional test of
a byte-compile flag. I'll give this a try when I get a chance.

- Paul

Reply via email to