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's answerに加えて、いくつかの dir-local unsafe-variable 関連の抑制が行われていました。

4

1 に答える 1

1

irony-compile-flagsrepeat string文字列のリスト ( )として定義されますdefcustom

あなたのでは、評価されるLisp 式ではなく、.dir-locals.elを提供していることを忘れています。したがって、シンボルは冗長であり、それが型チェックを破るものです。シンボルで始まるリストに設定しています。これを試して:listirony-compile-flagslist

((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 に答える