目录本地变量错误:错误类型参数stringp

时间:2013-02-21 11:47:06

标签: emacs elisp

我有以下.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不安全变量相关的抑制。

1 个答案:

答案 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")))))