Ich habe eine sehr ähnliche Konfiguration wie Ihre (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, was mit dem System kommt, sondern Kopien dieser Pakete in Subversion.
Mehrheit der Einrichtung funktioniert nur in allen Umgebungen. Bezüglich Pfaden denke ich, dass die Mehrheit der Dinge, die man nennen möchte, wie aspell, auch außerhalb von Emacs von der Kommandozeile aus aufgerufen werden kann, so dass es sinnvoll ist, sie in $ PATH zu setzen, so dass keine vollständigen Pfade in Emacs angegeben werden müssen.
Für andere Dinge, 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 aufzustellen, sie auf einem anderen System auszuprobieren und alles auszumerzen, was nötig ist dem systemspezifischen Setup entsprechen.
Und der Artikel von Steve Yegge in Noufals Antwort ist ein sehr guter.
+1 für tatsächlichen Code gespaltet werden. Ich muss lernen, beim nächsten Mal weniger faul zu sein. :) –