[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: Xemacs
- To:
- Subject: Re: Xemacs
- From: François Pinard <>
- Date: Wed, 15 Mar 2000 14:28:29 -0500
-
In-reply-to: <[email protected]>
[email protected] (Dominic Mitchell) écrit:
> Note que GNU Emacs et Xemacs ne sont pas parfaitement compatibles, dans
> le sens où tu ne peux pas partager le même fichier de configuration
> entre les deux logiciels.
Dans la mesure où le fichier de configuration n'est pas compilé, c'est
faisable de partager le même fichier de configuration entre plusieurs
versions du même Emacs, ou entre Emacs et XEmacs, sur Unix et sur
DOS/Windows, ou même pour tenir compte de nos caprices variables d'une
machine à l'autre. (Il faut être un peu plus astucieux si l'on veut
compiler la configuration.) Lorsque le ou les fichiers de configurations
deviennent gros et complexes, c'est très avantageux pour l'entretien de
n'en avoir qu'une seule copie, que l'on distribue un peu partout où l'on
travaille et que l'on utilise dans tous les cas.
Il suffit de faire en sorte que le fichier de configuration s'autoconfigure.
Juste pour jeter quelques idées:
(setq EMACS19 (string-match "\\<Emacs 19" (emacs-version))
EMACS20 (string-match "\\<Emacs 20" (emacs-version))
XEMACS (string-match "XEmacs\\|Lucid" (emacs-version)))
permet ensuite de paramétrer en fonction de la valeur de ces trois
variables. Mais je préfère simplement fournir des routines ou solutions
de remplacement, que de dépendre de telles variables. C'est bien plus
dans l'esprit d'Autoconf, aussi. Par exemple:
(eval-when-compile
(require 'cl))
(or (fboundp 'when)
(defmacro when (cond &rest body)
"(when COND BODY...): if COND yields non-nil, do BODY, else return nil."
(list 'if cond (cons 'progn body))))
(or (fboundp 'unless)
(defmacro unless (cond &rest body)
"(unless COND BODY...): if COND yields nil, do BODY, else return nil."
(cons 'if (cons cond (cons nil body)))))
(or (fboundp 'font-lock-add-keywords)
(defun font-lock-add-keywords (&rest args)
nil))
etc. Cette approche me satisfait bien, en tous cas!
--
François Pinard http://www.iro.umontreal.ca/~pinard