GNU Info

Info Node: (gnus)Emacs/XEmacs Code

(gnus)Emacs/XEmacs Code


Next: Various File Formats Prev: Extended Interactive Up: Gnus Reference Guide
Enter node , (file) or (file)node

Emacs/XEmacs Code
-----------------

   While Gnus runs under Emacs, XEmacs and Mule, I decided that one of
the platforms must be the primary one.  I chose Emacs.  Not because I
don't like XEmacs or Mule, but because it comes first alphabetically.

   This means that Gnus will byte-compile under Emacs with nary a
warning, while XEmacs will pump out gigabytes of warnings while
byte-compiling.  As I use byte-compilation warnings to help me root out
trivial errors in Gnus, that's very useful.

   I've also consistently used Emacs function interfaces, but have used
Gnusey aliases for the functions.  To take an example:  Emacs defines a
`run-at-time' function while XEmacs defines a `start-itimer' function.
I then define a function called `gnus-run-at-time' that takes the same
parameters as the Emacs `run-at-time'.  When running Gnus under Emacs,
the former function is just an alias for the latter.  However, when
running under XEmacs, the former is an alias for the following function:

     (defun gnus-xmas-run-at-time (time repeat function &rest args)
       (start-itimer
        "gnus-run-at-time"
        `(lambda ()
           (,function ,@args))
        time repeat))

   This sort of thing has been done for bunches of functions.  Gnus does
not redefine any native Emacs functions while running under XEmacs--it
does this `defalias' thing with Gnus equivalents instead.  Cleaner all
over.

   In the cases where the XEmacs function interface was obviously
cleaner, I used it instead.  For example `gnus-region-active-p' is an
alias for `region-active-p' in XEmacs, whereas in Emacs it is a
function.

   Of course, I could have chosen XEmacs as my native platform and done
mapping functions the other way around.  But I didn't.  The performance
hit these indirections impose on Gnus under XEmacs should be slight.


automatically generated by info2www version 1.2.2.9