如何在Emacs中选择系统类型

时间:2010-03-04 19:47:51

标签: emacs elisp

我正在尝试将我的.emacs文件配置为在Windows,Linux和Mac环境中工作 - 具体来说,我需要它为组织模式选择正确的字体和某个目录。

我尝试了以下加载正确字体的内容,但没有加载为org-mode指定的路径:

;; On Windows
(if (eq system-type 'windows-nt)
    (set-default-font "-outline-Consolas-normal-r-normal-normal-14-97-96-96-c-*-iso8859-1")
  (setq load-path (cons "~/elisp/org-6.34c/lisp" load-path))
  )

;; On Linux
(if (eq system-type 'gnu/linux)
    (set-default-font "Inconsolata-11")
  (setq load-path (cons "~/elisp/org-current/lisp" load-path))
  )

我尝试过以下操作,在我的Windows机器上返回错误Font Inconsolata-11 is not defined,在我的Linux机器上返回错误Font -outline-Consolas-normal-r-normal-normal-14-97-96-96-c-*-iso8859-1 is not defined。对于这两者,未加载指定的组织路径:

;; On Windows
(if (eq system-type 'windows-nt)
    (setq load-path (cons "~/elisp/org-6.34c/lisp" load-path))
  (set-default-font "-outline-Consolas-normal-r-normal-normal-14-97-96-96-c-*-iso8859-1")
  )

;; On Linux
(if (eq system-type 'gnu/linux)
    (setq load-path (cons "~/elisp/org-current/lisp" load-path))
  (set-default-font "Inconsolata-11")
  )

我评估了两个环境中的system-type变量,它们都正确评估。

任何人都可以看到什么是错的 - 而且,我对emacs-lisp并不是很精通,你能看到我正在做出的错误假设吗?

谢谢你, 扎卡里

1 个答案:

答案 0 :(得分:4)

请注意,如果在lisp中是if-then-else。所以,在你的第一种情况下你正在做windows,设置字体,ELSE设置windows的加载路径!然后,如果linux设置了字体,你就是这样做,否则设置linux的加载路径!

(if (eq system-type 'windows-nt)
    (progn
       (setq load-path (cons "~/elisp/org-6.34c/lisp" load-path))
       (set-default-font "-outline-Consolas-normal-r-normal-normal-14-97-96-96-c-*-iso8859-1")
     )
     (progn
            (setq load-path (cons "~/elisp/org-current/lisp" load-path))
            (set-default-font "Inconsolata-11")
     )
)

这对mac或其他什么都不起作用,但是如果你只使用NT或linux,这应该可行。否则,如果超出第二个预测,你可以坚持另一个......