2017-10-19 149 views
1

设置使用“系统名称”目录的确,我的elisp打交道时我不流利。总之:我用的是相同的Emacs的配置文件,但像往常一样,也有小的差异,当我在家里或在办公室的时候,我不知道是否可以定义与这样的代码,我的工作目录:上的elisp

(setq my-dir (if (string= system-name "hp-pavilion23") 
       (progn (message "/home/manuel/entwicklung/lisp/")) 
       (progn (message "/home/mmontoya/projects/chipotle/")))) 

(setq default-directory my-dir) 
+1

1.'progn's这里什么都不做。 2.'message'返回'nil'(并且用'progn'包装它)。所以第一个'setq'将变量'my-dir'设置为'nil'。 4.第二个'setq'然后将'default-directory'设置为'nil'。你试图完成什么? – Drew

+1

让我猜。你想'默认directory'到是'〜/曼努埃尔/发展协会/ lisp'或'〜/ mmontoya /项目/取决于你'系统name' chipotle'? –

回答

4

我不知道是否有可能定义我的工作目录...

是的,可以。你只需要一个简单的路要走,因为Lisp的被设计成简单

(if (string= system-name "hp-pavilion23") 
    (setq my-dir "/home/manuel/entwicklung/lisp/") 
    (setq my-dir "/home/mmontoya/projects/chipotle/")) 

(setq default-directory my-dir) 

但是,为什么还要打扰那额外的my-dir?只需在您想要的地方设置default-directory即可。

;; Somewhere in your ~/.emacs 
(if (string= system-name "hp-pavilion23") 
    ;; Set default-directory here. 
    (setq default-directory "/home/manuel/entwicklung/lisp/") 
    (setq default-directory "/home/mmontoya/projects/chipotle/")) 

请注意,default-directory是Emacs自动提供的一个变量。所以请确保更改不会损害任何其他行为。

+3

当然,您也可以进一步降低到'(setq默认目录(如果条件“富”,“酒吧”))'如果你喜欢。 – phils

+0

请注意,'default-directory'是缓冲区本地的。您可能只想设置本地值,但如果您想设置默认值,请使用'setq-default'。 – jpkotta