2017-10-19 7 views
1

実際、Elispを扱うときは堪能ではありません。とにかく:私は同じEmacs設定ファイルを使用しますが、家庭やオフィスでは小さな違いがありますが、私の作業ディレクトリをこのようなコードで定義できるかどうかわかりません:Elispで "system-name"を使用してディレクトリを設定する

私の作業ディレクトリを定義することが可能である場合、私は知らない
(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'は何もしません。 2. 'message'は' nil'を返します( 'progn'でラッピングします)。 3.最初の 'setq'は変数' my-dir'を 'nil'に設定します。 4. 2番目の 'setq'は' default-directory'を 'nil'に設定します。あなたが達成しようとしていることは何ですか? – Drew

+1

私は推測させてください。あなたの 'system-name'に応じて' default-directory'を '〜/ manuel/entwicklung/lisp'または'〜/ mmontoya/projects/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

もちろん、あなたが望むなら '(set" default-directory(条件 "foo" "bar")) 'にさらに減らすことができます。 – phils

+0

'default-directory'はバッファローカルです。おそらくローカル値を設定したいだけですが、デフォルト値を設定したい場合は、 'setq-default'を使います。 – jpkotta

関連する問題