2

我正在运行一个命令,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(例如 \"%sc\")将依次应用于识别的文件名,直到找到该名称的文件。或者 FILE 也可以是返回 (FILENAME) 或 (RELATIVE-FILENAME . DIRNAME) 的函数。在前一种情况下,FILENAME 可以是相对的或绝对的。

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

4

1 回答 1

2

打开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>).

于 2013-08-05T01:53:20.513 回答