4

我已经学习使用 Emacs 有一段时间了。至今非常喜欢。

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

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

4

3 回答 3

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")))

调用 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'。这至少会让你进入下一步......

于 2008-12-31T01:41:37.503 回答
0

Rake 是 Ruby 语法,因此只需在文件中为 rby 打开 flymake 即可。 此链接指向某人的 elisp 代码,用于执行此操作。EmacsWiki也有很多内容。(事实上​​,你应该阅读 EmacsWiki,那里有很多有用的东西。)

于 2008-12-27T19:17:43.020 回答
0

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

于 2008-12-30T18:52:22.977 回答