2012-04-16 67 views
2

我把每個類型的emacs設置放入一些單獨的文件中,比如load-cygwin.el,load-cedet.el等。並且使用一個subverion在任何地方和任何時間共享它們。emacs如何在初始化時不加載某些.el文件?

現在對於load-cygwin.el,它只需要在Windows平臺上,但每次我在Linux平臺上同步這些配置時,我必須將其刪除。

emacs如何在初始化時不加載load-cygwin.el文件?我需要一些條件來跳出文件?

謝謝。

回答

2

有不同的方法來處理它。一種方法(我使用)

我根據主機名爲每個系統分配一個名稱。 (你也可以定義檢查窗口系統/ emacs的vesrion/OS等..)

;;;;;;;;;;;;;; define systems ;;;;;;;;;;;;;;;; 

(defvar on-laptop   ; on my laptop, mostly I can run everything 
    (string-match "rag" (system-name))) 

(defvar on-lab-computer     ; main lab desktop 
    (string-match "okho" (system-name))) 

(defvar on-lab-server  ; lab cluster 
    (string-match "amu" (system-name))) 


;;;;;;;;;;;;;;; Usage ;;;;;;;;;;;;;;;;;;;;;;;;; 
(when on-laptop 
;;; music/emms config 
    (load "emms-config.el")) 


; load work related stuff 
(when on-lab-computer 
    ;; load work related 

    ) 


(when (not on-lab-server) 
    ;;; some setup that are unnecessary on cluster, but useful on remaining systems 

    ) 
0

對於依賴於操作系統的設置,請檢查system-type variable

(and (memq system-type '(cygwin windows-nt)) 
    (load "load-cygwin")) 

另一種方式來處理的條件要求是使用locate-library function查看文件是否存在。 (這裏假定load-cygwin.el沒有出現在你的Linux機器。)

(and (locate-library "load-cygwin") 
    (load "load-cygwin")) 

對於這種條件要求另一個有用的變量是window-system

相關問題