У меня есть настройки, очень похожие на вашу (Emacs 22.1, 22.2, 23.1 в различных версиях Linux с X и Windows и без и с Cygwin и без). Моя установка включает в себя ELPA, auctex, emacsw32, CEDET, JDEE, nxml и различные другие пакеты elisp. Я не использую то, что поставляется с системой, но храню копии этих пакетов в Subversion.
Большинство настроек работает только во всех средах. Что касается путей, я думаю, что большинство вещей, которые вы хотите вызвать, таких как aspell, могут быть вызваны и вне Emacs из командной строки, поэтому стоит поместить их в $ PATH, избегая необходимости указывать полные пути в Emacs.
Для других вещей я делаю
В .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.
Где в 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
)
А в 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...
)
По сути, это вопрос настройки вещей в одной системе, примерки их в другой и выделения того, что должно отличаться от настроек системы.
И статья Стива Йегге в ответе Нуфаля очень хорошая.