2011-09-07 8 views
7

Aquí está el contenido de mi archivo .emacs.¿Cómo puedo mover la configuración del modo php de .emacs a .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 '+)  
     )) 

Quiero mover estas configuraciones de formato al directorio específico del proyecto. Aunque puedo hacerlo fácilmente para las declaraciones setq (por ejemplo, (setq indent-tabs-mode t)), no puedo hacerlo para llamadas a funciones como: (c-set-offset 'arglist-intro '+).

Aquí es lo que he puesto en mi .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 '+)  
    )) 

Qué está mal aquí?

Respuesta

10

Las variables locales del directorio son solo eso: variables; no elisp los formularios para ser evaluados Por fortuna, que está prevista para a través de la eval pseudo-variables:

((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 le pedirá que confirme que el código es seguro cuando se encuentra con él, y lo guardará en la lista safe-local-variable-values en los custom-set-variables secciones de su archivo init si lo desea.

Cuestiones relacionadas