我有以下.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's answer,此外我还进行了与dir-local不安全变量相关的抑制。
答案 0 :(得分:1)
irony-compile-flags
被定义为repeat string
形式的字符串列表(defcustom
)。
在.dir-locals.el
中,您忘记了要提供值,而不是 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")))))