我正在使用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-alist
和FILE
添加条目时,我的函数将被调用,不带参数。如何在该函数中获得匹配的行?
答案 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>