Ich habe eine sehr ähnliche Konfiguration wie Sie (Emacs 22.1, 22.2, 23.1 auf verschiedenen Linux-Versionen mit und ohne X und Windows mit und ohne Cygwin). Mein Setup enthält ELPA, auctex, emacsw32, CEDET, JDEE, nxml und verschiedene andere Elisp-Pakete. Ich verwende nicht das, was mit dem System geliefert wird, sondern halte Kopien dieser Pakete in Subversion.
Der Großteil der Einstellungen funktioniert einfach in allen Umgebungen. Was die Pfade angeht, denke ich, dass die meisten Dinge, die man aufrufen möchte, wie aspell, auch außerhalb von Emacs von der Kommandozeile aus aufgerufen werden können, so dass es sich lohnt, sie in den $PATH zu packen und so zu vermeiden, dass man die vollen Pfade in Emacs angeben muss.
Für andere Dinge tue ich In .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.
Wo in 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
)
Und in 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...
)
Im Grunde geht es darum, Dinge auf einem System einzurichten, sie auf einem anderen auszuprobieren und alles zu berücksichtigen, was sich von der systemspezifischen Einrichtung unterscheiden muss.
Und der Artikel von Steve Yegge in der Antwort von Noufal ist ein sehr guter Artikel.