配置Emacs FlyMake以使用Rakefile和Makefile

时间:2008-12-27 18:03:53

标签: emacs ide makefile rake

我一直在学习使用Emacs一段时间。到目前为止一直很喜欢它。

我的问题是,对于小C代码,我更喜欢使用Rake而不是Make。然而,flymake似乎除了Make之外不需要任何其他东西。因为它抱怨它找不到Makefile。在命令行中,Rake的使用方式与Make相同,所以我想知道是否有一些emacs配置我可以输入以允许flymake使用Rake?

纠正我正在做的事情。我实际上并没有编辑Rakefile。而flymake-ruby根本没有帮助。我正在使用C代码。我只是使用RAKE使用gcc而不是MAKE来编译c代码。

3 个答案:

答案 0 :(得分:2)

是的,现在就拿到了;抱歉早先的混乱。

快速浏览一下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以将flymake-simple-make-init文件映射到不同的init defun,然后编写defun以按照您想要的方式调用rake。有很多已经针对各种事情编写的defuns,其中大多数都非常短而且很甜 - 所以即使你不了解Emacs Lisp,你也可以用最少的东西来处理。 (非常正确的答案是更改load-path,以便从defcustom变量中读取命令名称,然后将该更改提交回上游...)

快速而肮脏的回答,鉴于你说你需要做的就是用'make'这个叫做'rake',就是拿一份flymake.el,把它贴在你的早期flymake-get-make-cmdline,并在{{1}}中使用'make'字符串来代替'rake'。那至少会让你进入下一步......

答案 1 :(得分:0)

Rake是Ruby语法,因此只需在文件中打开rby的flymake即可。 This link用于执行此操作的某人的elisp代码。 EmacsWiki has a lot on it也是如此。 (事实上​​,你应该阅读EmacsWiki,那里有很多有用的东西。)

答案 2 :(得分:0)

要继续查理所说的话,FlymakeRuby node上的EmacsWiki具有您需要的代码,包括在rakefiles上启用它的位。