Emacs regex to grok csc compilation errors
People have asked about this. This is the regular expression I use to allow emacs' next-error function to handle csc error messages. It is included in the emacs.el that I published previously. Here it is excerpted for convenience.
;; to allow next-error to work with csc.exe:
(setq compilation-scroll-output t)
(setq-default compilation-error-regexp-alist
; (append
'(
; Microsoft VJC:
;sample.java(6,1) : error J0020: Expected 'class' or 'interface'
("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)[,]\\([0-9]+\\)): \\(error\\|warning\\) VJS[0-9]+:" 1 3 4)
;; dinoch - Wed, 04 Aug 2004 09:29
;; handle whitespace at beginning of line (for nant output)
;;
;C# Compiler
;t.cs(6,18): error SC1006: Name of constructor must match name of class
;
("[ \t]*\\(\\([_a-zA-Z:\]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)[,]\\([0-9]+\\)): \\(error\\|warning\\) CS[0-9]+:" 1 3 4)
; Microsoft C/C++:
; keyboard.c(537) : warning C4005: 'min' : macro redefinition
; d:\tmp\test.c(23) : error C2143: syntax error : missing ';' before 'if'
;VC EEi
;e:\projects\myce40\tok.h(85) : error C2236: unexpected 'class' '$S1'
;myc.cpp(14) : error C3149: 'class System::String' : illegal use of managed type 'String'; did you forget a '*'?
("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) \
: \\(error\\|warning\\) C[0-9]+:" 1 3)
)
;; compilation-error-regexp-alist)
)
Comments
Anonymous
May 22, 2008
Had you send it to emacs-devel list? i think, that it will useful for other users of emacs ;-)Anonymous
May 23, 2008
I didn't know there was an emacs-devel list? I'll look for it.Anonymous
January 19, 2009
This is slick, but when I run msbuild on a solution, it recursively invokes build on each nested project with the recursive invocations in the directory containing the project file. The net result is that the compiler output doesn't contain the full path from the root of the solution, and next-error can't find the files in the error message. Any thoughts on how to fix this? Thanks, MikeAnonymous
February 09, 2009
Hmmmmmmm, no I don't. Maybe there is an MSBuild option to NOT recurse, or to emit full paths, or something.