我将每种类型的 emacs 设置放入一些单独的文件中,例如 load-cygwin.el、load-cedet.el 等。并使用 subverion 随时随地共享它们。
现在对于 load-cygwin.el,它只需要在 Windows 平台上,但每次我在 Linux 平台上同步这些配置时,我都必须删除它们。
emacs 怎么可能在初始化时不加载 load-cygwin.el 文件?我需要一些条件才能跳出文件?
谢谢。
我将每种类型的 emacs 设置放入一些单独的文件中,例如 load-cygwin.el、load-cedet.el 等。并使用 subverion 随时随地共享它们。
现在对于 load-cygwin.el,它只需要在 Windows 平台上,但每次我在 Linux 平台上同步这些配置时,我都必须删除它们。
emacs 怎么可能在初始化时不加载 load-cygwin.el 文件?我需要一些条件才能跳出文件?
谢谢。
有不同的方法来处理它。一种方式(我使用)
我根据主机名为每个系统命名。(你也可以定义检查窗口系统/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
)
至少通读其中的前两个:
对于依赖于操作系统的设置,请检查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
。