我想修改csharp-mode.el,以便它包含.NET csc.exe编译器的相应错误正则表达式(regexi?)。
一个表现良好的progmode应如何做到这一点?
答案 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)))