对,现在明白了;很抱歉之前的混乱。
快速浏览 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")))
调用 by flymake-simple-make-init
,之所以调用它,是因为这就是*.c
文件映射到 by 的内容flymake-allowed-file-name-masks
。
因此,正确的答案是修改flymake-allowed-file-name-masks
以将*.c
文件映射到不同的 init defun,然后编写该 defun 以按照您想要的方式调用 rake。已经为各种事物编写了许多这样的 defun,其中大多数都非常简短和甜美——所以即使你不了解 Emacs Lisp,你也可以用最少的 futzing 得到一些东西。(真正正确的答案是更改flymake-simple-make-init
,以便从 defcustom 变量中读取命令名称,然后将该更改提交回上游......)
鉴于您说您需要做的就是使用与“make”相同的参数调用“rake”,那么快速而肮脏的答案就是获取 flymake.el 的副本,将其尽早粘贴到您的load-path
, 然后 munge 'make' 字符串flymake-get-make-cmdline
改为读取 'rake'。这至少会让你进入下一步......