Правильно, получил это сейчас; извините за раннюю путаницу.
Быстро просматривая 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
.
Итак, ответ right будет модифицировать flymake-allowed-file-name-masks
для сопоставления *.c
файлов с другим init-defun, а затем написать этот defun для вызова rake так, как вы хотите. Существует множество этих defuns, уже написанных для разных вещей, и большинство из них довольно короткие и приятные - поэтому, даже если вы не знаете Emacs Lisp, вы, вероятно, можете заставить что-то работать с минимумом фьюзинга. (Ответ действительно правильный будет состоять в том, чтобы изменить flymake-simple-make-init
так, чтобы имя команды было прочитано из переменной defcustom, а затем отправить это изменение обратно в поток ...)
Быстрый и грязный ответ, учитывая, что вы сказали, что все, что вам нужно сделать - это вызвать 'rake' с теми же аргументами, что и 'make', - это взять копию flymake.el, вставив ее в начале load-path
и наберите строку 'make' в flymake-get-make-cmdline
, чтобы вместо этого прочитать 'rake'. Это, по крайней мере, приведет вас к следующему шагу ...