将函子传递给编译命令

时间:2018-06-26 09:45:14

标签: forms elisp

我创建了自己的elisp函数,每次我要编译整个项目(该项目通常在项目目录树的根目录中都有一个makefile)或单个文件(其中一个通常没有makefile并使用make的隐式规则。)

它使我可以自动找到项目目录树中最近创建,重命名或移动的makefile的位置,而不必关闭并重新打开编辑器即可在项目开始时重新加载文件本地变量。

Emacs的compile-command函数实现使用compile表达式,以防(let ((command (eval compile-command))) body)绑定到某种形式(例如{{1} }}文档)。

我想借此机会获得动态的compile-command字符串,但是我不知道如何创建compilation-read-command所要求的封装函数调用的“表单”。我在emacs-lisp文档中找到的有关compile-command的所有示例都使用简单变量,而不是函数捕获。

我尝试过简单的操作compile-command,但是当然没有用。

eval没有参数。

1 个答案:

答案 0 :(得分:1)

ELISP> (defun foo () "bar")
foo

ELISP> (foo)
"bar"

ELISP> (eval '(foo))
"bar"

因此,您大概想要这样:

(setq-default compile-command '(my-compile-command-fun))