好的,现在明白了;对先前的混淆很抱歉。
快速浏览flymake.el文件,对于*.c文件,make调用最终来自于这里:
(defun flymake-get-make-cmdline (source base-dir)
(list "make"
(list "-s"
"-C"
base-dir
(concat "CHK_SOURCES=" source)
"SYNTAX_CHECK_MODE=1"
"check-syntax")))
这是由flymake-simple-make-init
调用的,因为*.c
文件是由flymake-allowed-file-name-masks
映射到的。
所以,正确的答案是修改flymake-allowed-file-name-masks
,将*.c
文件映射到不同的init defun上,然后编写该defun以按您想要的方式调用rake。已经为各种事物编写了一堆这些defun,其中大多数都相当简短而甜美--因此,即使您不了解Emacs Lisp,也可以通过最少的问题解决方案。 (真正的、真正正确的答案是更改flymake-simple-make-init
,使命令名称从一个defcustom变量中读取,然后向上提交该更改...)
快而简单的答案,假设你说你只需要像调用make一样调用rake,那么你可以获取flymake.el的副本,把它早早放在load-path
中,并将flymake-get-make-cmdline
中的make字符串改为rake。这样至少能让你进行下一步操作...