Как я могу переместить настройки php-режима из .emacs в .dir-locals.el? - PullRequest
7 голосов
/ 07 сентября 2011

Вот содержимое моего файла .emacs.

(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 '+)       
      ))

Что здесь не так?

1 Ответ

11 голосов
/ 08 сентября 2011

Локальные переменные каталога - это просто переменные; не 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 попросит вас подтвердить, что код безопасен при его обнаружении, и сохранит его в списке safe-local-variable-values в разделах custom-set-variables вашего файла инициализации, если вы захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...