English 中文(简体)
将Emacs FlyMake配置为使用Rakefile和Makefile
原标题:
  • 时间:2008-12-27 18:03:52
  •  标签:

我已经学习使用Emacs有一段时间了。到目前为止,我非常喜欢它。

我的问题是,对于小的C代码,我更喜欢使用Rake而不是Make。然而,flymake似乎只能使用Make,因为它抱怨找不到Makefile。从命令行中,Rake的使用方式与Make相同,因此我想知道是否有一些emacs配置可以输入,以允许flymake使用Rake?

为了稍微纠正一下我所做的事情。我实际上并没有编辑Rakefile。而flymake-ruby根本没有帮助。我正在处理C代码。我只是使用RAKE来编译C代码,使用gcc而不是MAKE。

最佳回答

好的,现在明白了;对先前的混淆很抱歉。

快速浏览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。这样至少能让你进行下一步操作...

问题回答

Rake是Ruby语法,所以只需在文件中打开rby的flymake即可。 这个链接是某人的elisp代码,用于执行此操作。EmacsWiki上也有很多关于它的信息。 (实际上,您应该一般阅读EmacsWiki,那里有很多有用的东西。)

继续Charlie所说,EmacsWiki上的FlymakeRuby节点具有您所需的代码,包括启用它在rakefiles的位。





相关问题
热门标签