代码之家  ›  专栏  ›  技术社区  ›  Zach Young mo1010

如何在Emacs中选择系统类型

  •  5
  • Zach Young mo1010  · 技术社区  · 15 年前

    我正试图将.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))
      )
    

    我已尝试以下操作,在我的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 在两种环境中都是变量,并且它们的评估都是正确的。

    有人能看到哪里出了问题吗——还有,我对EmacsLisp不是很精通,你能看到我在做什么不正确的假设吗?

    谢谢您, 扎卡里

    1 回复  |  直到 15 年前
        1
  •  4
  •   Brian Postow    15 年前

    请注意,如果在lisp中,则为if,否则为else。因此,在第一种情况下,如果是Windows,则设置字体,否则设置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,这应该是可行的。否则,如果在第二个程序之外,你可以坚持另一个…