如何从compilation-error-regexp-alist文件函数中获取当前匹配的行?

时间:2013-08-04 22:53:30

标签: emacs elisp compile-mode

我正在使用compile运行命令,因此我可以将错误消息链接到关联的源,但我需要转换匹配行的内容块以获取要链接的文件。 (该行显示了一个clojure名称空间,如foo-bar.quux,需要转换为foo_bar/quux.clj。)

compilation-error-regexp-alist的文档部分说明

  

每个elt都有表格(REGEXP FILE [LINE COLUMN TYPE HYPERLINK HIGHLIGHT ...])。 ... FILE也可以有格式(FILE FORMAT ...),其中FORMAT(例如\“%s.c \”)将依次应用于识别的文件   name,直到找到该名称的文件。或者FILE也可以是返回(FILENAME)或(RELATIVE-FILENAME.DIRNAME)的函数。在前一种情况下,FILENAME可能是相对的或绝对的。

当我使用compilation-error-regexp-alist-alist位置的函数向compilation-error-regexp-alistFILE添加条目时,我的函数将被调用,不带参数。如何在该函数中获得匹配的行?

1 个答案:

答案 0 :(得分:1)

打开compile.el,然后使用C-s (funcall进行搜索,跳转到:

           (setq file (if (functionp file) (funcall file)
                        (match-string-no-properties file))))

这似乎是相关的点,并且表明函数确实在没有参数的情况下调用,并且match-data仍然非常有效,因此您可以使用(match-string <the-file-sub-group>)提取文件名。 / p>