Right, got it now; sorry about the earlier confusion.
Taking a quick look through flymake.el, for *.c files, the 'make' invocation ultimately comes from here:
(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")))
That gets called by flymake-simple-make-init
, which is called because that's what *.c
files are mapped to by flymake-allowed-file-name-masks
.
So, the right answer would be to modify flymake-allowed-file-name-masks
to map *.c
files to a different init defun, then write that defun to call rake the way you want. There are a bunch of those defuns already written for various things, and most of them are pretty short and sweet -- so even if you don't know Emacs Lisp, you could probably get something to work with a minimum of futzing. (The really really right answer would be to change flymake-simple-make-init
so that the command name was read from a defcustom variable, then submit that change back upstream...)
The quick-and-dirty answer, given that you said all you need to do is call 'rake' with the same args as 'make', would be to grab a copy of flymake.el, stick it early in your load-path
, and munge the 'make' string in flymake-get-make-cmdline
to read 'rake' instead. That'll at least get you to the next step...