如何在Emacs中选择系统类型

如何在Emacs中选择系统类型,emacs,elisp,Emacs,Elisp,我正在尝试将.emacs文件配置为在Windows、Linux和Mac环境下工作——具体来说,我需要它为组织模式选择正确的字体和特定的目录 我尝试了以下加载正确字体的方法,但没有加载为组织模式指定的路径: ;; 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

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

我尝试了以下加载正确字体的方法,但没有加载为组织模式指定的路径:

;; 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)) ) 我在两种环境中都评估了
系统类型
变量,它们的评估结果都正确

有人能看出哪里出了问题吗?还有,我对emacs lisp不是很精通,你能看出我做出了哪些不正确的假设吗

谢谢,,
Zachary

注意,lisp中的if是if-then-else。因此,在第一种情况下,如果是windows,请设置字体,否则请设置windows的加载路径!然后,独立地,如果linux设置字体,则您正在执行,否则将为linux设置加载路径

试一试


这在mac或其他任何平台上都不起作用,但如果你只使用NT或linux,这应该可以。否则,如果在第二个程序之外,您可以粘贴另一个…

非常感谢,布赖恩。我真的很感激
if
语句if-then-else的解释。我确实认为,
中的两个语句在不同级别缩进的方式很奇怪,我知道这不是无关紧要的——现在很明显。我打算为每种类型使用单独的
if
语句,但只是像您所描述的那样将真实条件封装在
progn()
块中,实际上省略了else子句。再次感谢。干杯这也行。永远记住,emacs不会无缘无故地做任何事情。如果它以一种让你惊讶的方式缩进了某个东西,那么你可能做错了B-)你也可以使用
when
构造,它类似于
if
,但没有“else”分支。它对多行进行求值(就像有一个隐式的
progn
),因此,如果您只是将所有
if
替换为
when
,您就可以使用原始示例了。您不需要else子句中的
progn
,所有表单都将被求值。您假设
if
when
,而事实并非如此。另外,为什么不在每个系统上命名相同的目录,并在另一个系统上安装您喜欢的字体呢。“Foo-42”语法适用于任何地方。 ;; 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") )
(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")
     )
)