I realize there are a number of questions surrounding this topic, but I'm trying use a global function that I've written inside a project .dir-locals.el
.
Specifically, I wrote a function to add a series of include paths to the company-clang-arguments
variable. I simply want to call this function (which returns a list of strings), and add it to company-clang-arguments
.
This is what I am attempting to do:
((nil . ((company-clang-arguments . (eval (company-clang-header-paths "/path/to/compile_commands.json"))))))
I know that company-clang-header-paths
correctly returns a list ("-I/path/one -I/path/two")
when I evaluate it in another buffer.
I also know that I am able to use dir-locals.el
manually like so:
((nil . ((company-clang-arguments . ("-I/a/b" "-I/c/d")))))
I realize this may be a newbie question, but I'm struggling to understand the evaluation context. The .
operator cons the list together, but I'm a bit lost on how to evaluate this function and return the list.
I keep running into errors that tell me I'm providing the wrong type:
Wrong type argument: stringp, eval
Obviously, I've tried playing around, but I always get Wrong type argument: stringp, <something>
, where <something>
is the thing I tried.
If anyone could help me out, I'd appreciate it. Thanks.
((nil . ((eval . (setq company-clang-arguments (company-clang-header-paths "/path/to/compile_commands.json"))))))
, aseval
is one of the special variables.