progmode应该如何将相应的字符串插入compilation-error-regexp-alist?

时间:2010-02-10 21:20:03

标签: c# emacs

我想修改csharp-mode.el,以便它包含.NET csc.exe编译器的相应错误正则表达式(regexi?)。

一个表现良好的progmode应如何做到这一点?

2 个答案:

答案 0 :(得分:2)

表现良好的Emacs用户应该将正则表达式添加到compilation-error-regexp-alist-alist并向Emacs提供补丁,以便后续版本中的所有人都可以使用它。

compile.el中定义的变量,可以通过

找到
M-x find-variable compilation-error-regexp-alist-alist RET

我不认为csharp模式主模式改变正则表达式是有意义的。如果有的话,它应该设置compilation-error-regexp-alist的本地值以包含您在...-alist-alist变量中添加的新符号。

也就是说,它可以通过检查符号...-alist-alist(或者你添加的任何内容)是否已经是列表的一部分来修改c#变量,如果没有则添加它。注意:compilation-error-regexp-alist是先验定义的,因此您需要仔细检查该变量的内容,以确保它还包含c#符号。

答案 1 :(得分:0)

以下是我在csharp-mode内所做的事情:

(if (boundp 'compilation-error-regexp-alist-alist)
    (progn
      (add-to-list
       'compilation-error-regexp-alist-alist
       '(ms-csharp 
         "^[ \t]*\\([A-Za-z0-9_][^(]*\\.cs\\)(\\([0-9]+\\)[,]\\([0-9]+\\)) ?: \\(error\\|warning\\) CS[0-9]+:" 1 2 3))
      (add-to-list
       'compilation-error-regexp-alist
       'ms-csharp)))