Tôi có thiết lập rất giống với thiết bị của bạn (Emacs 22.1, 22.2, 23.1 trên các phiên bản Linux khác nhau có và không có X và Windows có và không có Cygwin). Thiết lập của tôi bao gồm ELPA, auctex, emacsw32, CEDET, JDEE, nxml và các gói elisp khác nhau. Tôi không sử dụng bất cứ điều gì đi kèm với hệ thống nhưng giữ bản sao của những gói trong lật đổ.
Đa số thiết lập chỉ hoạt động trong mọi môi trường. Về đường dẫn, tôi nghĩ rằng phần lớn thứ mà người ta muốn gọi, chẳng hạn như aspell, có thể được gọi bên ngoài Emacs từ dòng lệnh, vì vậy đáng để đặt chúng vào $ PATH, do đó tránh phải chỉ định đường dẫn đầy đủ trong Emacs.
Đối với những thứ khác, tôi làm Trong 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.
đâu trong 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
)
Và trong 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...
)
Về cơ bản nó là vấn đề thiết lập mọi thứ trên một hệ thống, thử chúng trên một hệ thống khác và tính ra bất cứ thứ gì cần phải khác lên đến thiết lập hệ thống cụ thể.
Và bài viết của Steve Yegge trong câu trả lời của Noufal là câu trả lời hay nhất.
+1 cho mã thực tế. Tôi phải học ít lười hơn lần sau. :) –