【问题标题】:Configure Emacs FlyMake to use Rakefile as well as Makefile配置 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。

【问题讨论】:

    标签: emacs ide makefile rake


    【解决方案1】:

    好的,现在明白了;很抱歉之前的混乱。

    快速浏览 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,你也可以用最少的 futzing 得到一些东西。 (非常正确的答案是更改 flymake-simple-make-init 以便从 defcustom 变量中读取命令名称,然后将该更改提交回上游...)

    鉴于您说过您需要做的就是使用与“make”相同的 args 调用“rake”,那么快速而简单的答案就是获取 flymake.el 的副本,并尽早将其粘贴到您的load-path,然后将 flymake-get-make-cmdline 中的“make”字符串改为“rake”。这至少会让你进入下一步......

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢 EmacsWiki。会读那个。然而,你指给我的是红宝石模式。我说的是c模式。我只是使用 Rake 构建系统而不是 Make 来构建 C 代码。当我尝试使用 flymake 时,它​​抱怨找不到 Makefile。但我希望它使用 Rakefile。
      【解决方案3】:

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

      【讨论】:

      • 不,我已经安装了 flymake Ruby。它所做的只是让我在编辑 Rakefile 时进入 flymake-mode。但这不是我正在做的。我不是在编辑 Ruby 文件,而是在编辑 C 文件。我只是想让flymake使用rake来编译C文件而不是make。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多