2

我正在研究一种程序模式,它对汇编程序、程序员和其他外部程序有各种不同的调用。我狡猾的计划是用compile函数处理所有这些,传递一个compile-command取决于正在运行的程序的显式。

这种似乎可行,现在我想为不同的外部程序添加特定的错误正则表达式。一种选择是更改compilation-error-regexp-alist-alist,键入我的主要模式,然后将我的主要模式添加到compilation-error-regexp-alist.

不过,我更愿意做的是如下所示:

(let ((compilation-error-regexp-alist
       (cons <my-regexp-and-numbers> compilation-error-regexp-alist))
  (compile <my-compile-command>))

奇怪的是,这个绑定似乎不会影响编译缓冲区被解析/标记的方式。如果我手动推<my-regexp-and-numbers>到缓冲区的前面compilation-error-regexp-alist然后调用(compilation-mode t)缓冲区,一切都会按预期进行字体化(所以我没有弄错正则表达式)。但是,将调用粘在上面(compilation-mode t)的表单内部let不会影响任何事情。

我意识到这作为一个易于重现的测试用例非常失败。如果没有人有任何想法,我会尝试破解一个例子,但我希望有人会去“啊,是的!那是因为那时没有得到评估,而是在”或类似的.. .

4

1 回答 1

2

我的猜测是该变量是为命令设置的,但不知何故没有传递给编译缓冲区。

尝试您的方法并查看编译缓冲区内的变量 ( C-h v) 的值以进行确认。

于 2012-08-21T22:23:48.800 回答