Как установить локальную переменную буфера из Eval: в .dir-local.el?

Почему это работает

((nil . ((compilation-directory . "/home/vava/code_directory/")
         (compilation-command . "rake"))
))

а это нет?

((nil . ((Eval . (setq compilation-directory "/home/vava/code_directory"))
         (compilation-command . "rake"))
))

Что я здесь делаю неправильно?

Я установил enable-local-eval в .emacs.


person vava    schedule 14.05.2010    source источник
comment
Я пытаюсь сделать то же самое, что и вы... динамически устанавливать некоторые переменные при чтении .dir-local.el: жаль, что сейчас это кажется невозможным.   -  person jkp    schedule 19.10.2010


Ответы (2)


Emacs Lisp чувствителен к регистру: попробуйте строчную букву «eval»:

((nil . ((eval . (setq compilation-directory "/home/vava/code_directory"))
         (compilation-command . "rake"))))

Кроме того, имя файла для локальных переменных каталога — .dir-locals.el, а не .dir-local.el, как в заголовке вопроса.

person Thomas    schedule 06.12.2010

Очевидно, вы предполагаете, что "eval" имеет то же особое значение в переменных, локальных для каталога, что и в переменных, локальных для файла; и все же документация, похоже, не подтверждает это. Итак, мое предположение: вы просто не можете этого сделать.

person offby1    schedule 14.05.2010