评估dir locals

时间:2015-10-31 23:09:41

标签: emacs elisp

我有一个插件系统设置(将在编译时)搜索插件目录中的所有插件。

我的问题是我试图允许flycheck添加这些插件'包含路径的标题。

我遇到的问题是,我无法弄清楚如何使表达式实际评估其值。 (表达式被视为一个值,而不是被评估)

((c++-mode . ((flycheck-clang-include-path . (split-string (substring
                                                            (shell-command-to-string
                                                             (concat "echo src;"
                                                                     "cd /home/czipperz/vick &&"
                                                                     "[ \"$(ls plugins)\" ] &&"
                                                                     "[ \"$(find plugins -name src -type d)\" ] &&"
                                                                     "   find plugins -name src -type d")) 0 -1)
                                                           "\n+")))))

当我打开文件时出现错误:Error while checking syntax automatically: (split-string (substring ...) "\n+") of flycheck-clang-include-path for option "-I" is not a list of strings

2 个答案:

答案 0 :(得分:1)

python main.py # Outputs: i'm myclass in module_a i'm myclass in module_x 伪变量有助于在局部变量配置中进行评估。

e.g:

如果您在eval表单中设置变量,请注意您设置缓冲区本地值(作为一般规则,只需使用eval而不是{ {1}}在这些情况下)。

答案 1 :(得分:0)

  

表达式被视为值而不是被评估

这正是原因。 .dir-locals.el文件的内容不是要评估的elisp,而是要作为数据读取的列表。

作为替代方案,请考虑在init文件中添加对//duplicate Play Timer var i = 0; var original = document.getElementById('Play_Start'); var count = 1; function duplicatePlay() { if (count < 20) { var clone = original.cloneNode(true); // "deep" clone clone.id = "Play_Start" + ++i; // there can only be one element with an ID original.parentNode.appendChild(clone); $(clone).effect( "highlight", {color:"#FEFFB9"}, 3000 ); count++; } else { } } 的调用。此函数使用符号作为类名和变量列表(您可以以任何方式计算)。然后使用dir-locals-set-class-variables将特定目录名称(作为路径指定)设置为您创建的新类。 Emacs手册包含一个例子; dir-locals-set-directory-class会带你去。