2012-04-16 40 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

相关问题