0

我有以下 .dir-locals.el:

((c++-mode . ((irony-compile-flags-work-dir . "/home/aparulekar/Developer/GamePlay")
              (irony-compile-flags . (list "-Igameplay/src"
                                       "-Iexternal-deps/bullet/include"
                                       "-Iexternal-deps/oggvorbis/include"
                                       "-Iexternal-deps/libpng/include"
                                       "-Iexternal-deps/zlib/include"
                                       "-Iexternal-deps/lua/include"
                                       "-Iexternal-deps/glew/include")))))

当我访问该文件夹中的任何文件时,我收到以下错误:

Directory-local variables error: (wrong-type-argument stringp irony-compile-flags)

有人可以告诉我为什么我不能将列表分配给目录局部变量吗?

(这是针对https://github.com/sarcasm/irony-mode

编辑- Anton 的回答,加上我正在进行一些与 dir-local unsafe-variable-related 相关的抑制。

4

1 回答 1

1

irony-compile-flags被定义为其形式的字符串列表 ( repeat string) 。defcustom

在您的.dir-locals.el中,您忘记了您提供的是values,而不是要评估的lisp 表达式。因此,list符号是多余的,这就是破坏类型检查的原因:您正在设置irony-compile-flags以符号开头的列表list。试试这个:

((c++-mode . ((irony-compile-flags-work-dir . "/home/aparulekar/Developer/GamePlay")
              (irony-compile-flags .  ("-Igameplay/src"
                                       "-Iexternal-deps/bullet/include"
                                       "-Iexternal-deps/oggvorbis/include"
                                       "-Iexternal-deps/libpng/include"
                                       "-Iexternal-deps/zlib/include"
                                       "-Iexternal-deps/lua/include"
                                       "-Iexternal-deps/glew/include")))))
于 2013-02-21T11:52:42.090 回答