(string-match "XEmacs" emacs-version)
when
possible.
fboundp
before calling an version specific function.
(condition-case nil (emacs-code) (error (xemacs-code)))
(define-key [(shift tab)] 'field-backward)Avoid the Emacs format.
(define-key [S-tab] 'field-backward)Do not use any of the abbreviated forms, except for simple "ascii" events where you can use a string.
mouse-2
while XEmacs uses
button2
. I haven't found a way around this, except to
write conditional code.
(if (string-match "XEmacs" emacs-version) (define-key map [button2] 'func) (define-key map [mouse-2] 'func))
News flash! XEMacs 19.15 and later understands the `mouse-2' keysyms.
Unless you explicitly tell him not to, rms will reserve the right to make changes in the package once it is bundled with Emacs. This has the advantage of making Emacs feel more like a single application than like a collection of unrelated packages. However, it has the disadvantage that he (or other contributors) might introduce bugs or misfeatures in your package. If you feel strongly about this, make rms aware of this before donating the code. The XEmacs maintainers generally leave your code alone.
Hysterical reasons. See the public flames if you must know. Currently the largest problems is that Sun owns the copyright for large part of the code. It is copyleft, but they refuse to sign over the changes to the FSF. Some people think it is good to have an Emacs variant where you can contribute code without signing any papers. Feel free to disagree.
Per Abrahamsen <abraham@dina.kvl.dk>