emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Review request: javac in compilation-error-regexp-alist-alist


From: Mattias Engdegård
Subject: Re: Review request: javac in compilation-error-regexp-alist-alist
Date: Fri, 28 Feb 2020 18:11:21 +0100

27 feb. 2020 kl. 19.17 skrev Filipp Gunbin <address@hidden>:

> Besides that, `java' symbol in the said list is a misnomer: it handles
> java exceptions (why? we would never normally have them in the
> compilation output), and valgrind output.  Looks like we should just
> rename it to `valgrind'.

Maybe, but as you can see there are several questionably-named entries in the 
list. Renaming them may break user customisation.

As it is, it would be useful with a comment explaining the difference between 
'java' and 'javac' in the list.

> +    (javac
> +     ,(concat
> +       ;; line1
> +       "^\\(\\(?:[A-Za-z]:\\)?[^:\n]+\\): *"      ;file
> +       "\\([0-9]+\\): *"                          ;line
> +       "\\(?:error:\\|\\(warning\\):\\)?[^\n]*\n" ;type (optional) and 
> message
> +       ;; line2: source line containing error
> +       "[^\n]*\n"
> +       ;; line3: single "^" under error position in line2
> +       "[[:space:]]*\\^\n")

(Could I entice you into writing this regexp in rx? Not mandatory in any way, 
but at least some of us who read it will thank you.)

Regexps in this list are good to keep tight; don't cast a net wider than you 
have to. For instance, don't use " *"  unless you know that there may actually 
be any number of spaces. Most regexps here don't match; optimise for that, 
rejecting false attempts as early as possible. Be stingy.

There's an unnecessary ambiguity after the line number and colon; a string of 
spaces can match in multiple ways. Also, avoid [[:space:]] since you don't 
control that syntax class in the buffer; more likely it should just be plain 
spaces, as it's very unlikely that the javac caret output routine would use 
anything else.

> +     1 2
> +     (lambda ()

If you add a comma before the lambda-expression, it gets evaluated, 
byte-compiled, syntax-checked etc.

> +    ("/src/Test.java:5: ';' expected\n        foo foo\n               ^\n" 1 
> 15 5 "/src/Test.java" 2)
> +    ("e:\\src\\Test.java: 7: warning: ';' expected\n   foo foo\n          
> ^\n" 1 10 7 "e:\\src\\Test.java" 1)

Why the differences in spacing before the line number? Is it a difference 
between platforms, error/warning, javac versions, or just different compilers 
altogether? Comments explaining this would be useful. Be sure to include 
variants in compilation.txt.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]