2011-09-07 28 views
7

ここは私の.emacsファイルの内容です。phpモード設定を.emacsから.dir-locals.elに移動するにはどうしたらいいですか?

(add-hook 'php-mode-hook 
     (lambda() 
     (c-set-style "bsd") 
     (setq indent-tabs-mode t) 
     (setq c-basic-offset 4) 
     (setq tab-width 4) 
     (c-set-offset 'arglist-close 'c-lineup-arglist-operators) 
     (c-set-offset 'arglist-intro '+) 
     (c-set-offset 'arglist-cont-nonempty 'c-lineup-math) 
     (c-set-offset 'case-label '+)  
     )) 

これらの書式設定をプロジェクト固有のディレクトリに移動したいとします。 setqステートメント(例:(setq indent-tabs-mode t))で簡単に処理できますが、(c-set-offset 'arglist-intro '+)のような関数呼び出しでは実行できません。ここで

は私が私の.dir-locals.elに入れたものである:

;;; Directory Local Variables 
;;; See Info node `(emacs) Directory Variables' for more information. 

    ((php-mode 
     (c-set-style "bsd") 
     (indent-tabs-mode . t) 
     (c-basic-offset . 4) 
     (tab-width . 4) 
     (c-set-offset 'arglist-close 'c-lineup-arglist-operators) 
     (c-set-offset 'arglist-intro 'c-basic-offset) 
     (c-set-offset 'arglist-cont-nonempty 'c-lineup-math) 
     (c-set-offset 'case-label '+)  
    )) 

ここで間違っていますか?

答えて

10

ディレクトリローカル変数はその変数です。 elisp形式では評価されません。幸いなことに、それはeval擬似変数経由で提供されています

((php-mode 
    (indent-tabs-mode . t) 
    (c-basic-offset . 4) 
    (tab-width . 4) 
    (eval . (progn 
      (c-set-style "bsd") 
      (c-set-offset 'arglist-close 'c-lineup-arglist-operators) 
      (c-set-offset 'arglist-intro 'c-basic-offset) 
      (c-set-offset 'arglist-cont-nonempty 'c-lineup-math) 
      (c-set-offset 'case-label '+))))) 

Emacsは、それはそれに遭遇したとき、コードが安全であることを確認をお願いします、とあなたのcustom-set-variablesセクションでsafe-local-variable-valuesリストに保存されますあなたが望むなら、initファイル。

関連する問題