J'ai une configuration très similaire à la vôtre (Emacs 22.1, 22.2, 23.1 sur diverses versions de Linux avec et sans X et Windows avec et sans Cygwin). Ma configuration inclut ELPA, auctex, emacsw32, CEDET, JDEE, nxml et divers autres paquets elisp. Je n'utilise pas ce qui vient avec le système mais garde des copies de ces paquets dans subversion.
La majorité de la configuration fonctionne uniquement dans tous les environnements. En ce qui concerne les chemins, je pense que la majorité des choses que l'on veut appeler, comme aspell, peuvent être appelées en dehors d'Emacs à partir de la ligne de commande, donc cela vaut la peine de les placer dans $ PATH.
pour d'autres choses, je En .emacs:
; Load system-specific library and setup system-specific things that
; must be setup before main setup
(cond ((eq system-type 'windows-nt) (load-library "ntemacs-cygwin"))
((eq system-type 'gnu/linux) (load-library "linux"))
(t (load-library "default")))
(system-specific-setup)
; Set up things as usually, no more system-type queries.
Où dans linux.el:
(defun system-specific-setup()
; Default font
(add-to-list
'default-frame-alist
'(font . "-Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO8859-1"))
(setq my-frame-width 95)
(setq my-frame-height 56)
; Not much else
)
Et NTEmacs-cygwin.el:
(defun system-specific-setup()
;; EmacsW32
(setq emacsw32-root (concat private-elisp-lib "EmacsW32"))
(add-to-load-path emacsw32-root)
;; Work around XSymbol initialization bug
;; ("C:\\ImageMagick\\convert" instead of system $PATH? Seriously?)
(setq x-symbol-image-convert-program "convert")
;; etcetera...
)
Fondamentalement, il s'agit de mettre les choses en place sur un système, de les essayer les unes sur les autres et de prendre en compte tout ce qui doit être dif à la configuration spécifique au système.
Et l'article de Steve Yegge dans la réponse de Noufal est très bon.
+1 pour le code réel. Je dois apprendre à être moins paresseux la prochaine fois. :) –