2

我将每种类型的 emacs 设置放入一些单独的文件中,例如 load-cygwin.el、load-cedet.el 等。并使用 subverion 随时随地共享它们。

现在对于 load-cygwin.el,它只需要在 Windows 平台上,但每次我在 Linux 平台上同步这些配置时,我都必须删除它们。

emacs 怎么可能在初始化时不加载 load-cygwin.el 文件?我需要一些条件才能跳出文件?

谢谢。

4

3 回答 3

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

   )
于 2012-04-16T07:52:52.600 回答
0

对于依赖于操作系统的设置,请检查system-type变量

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

处理条件要求的另一种方法是使用该locate-library函数来查看文件是否存在。(这假设load-cygwin.el您的 Linux 机器上不存在。)

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

这种条件要求的另一个有用变量是window-system

于 2012-04-17T10:03:45.827 回答