Ok, I hope the attached patch takes care of things. This time
it's based on the emacs-29 branch.
- I've updated the docstring with a description of the TYPE,
pretty much copied from compile.el. Feel free to change it of
course.
- I've added TYPE to the vhdl-compiler definition with the
appropriate choices for Info/Warning/Error and the dotted
pair. I'm not sure if sexp was the correct choice for the
dotted pair, is there a better alternative? At any rate, it
seems to work.
- All other compiler entries now have TYPE nil, i.e. an error.
- I added another entry to the backwards compatibility code, all
it took was a slight modification of the entry before
that. I've tested it by saving a custom vhdl-compiler-alist and
then updating the vhdl-mode.el, it automatically inserted nil
into the customization without touching the other values.
- Unrelated to the changes above, I've also updated the Xilinx
Vivado compiler entry's library directory, I got an error
message that it must end with '/'.
Since this introduces changes in the vhdl-compiler type, I guess
it would be appropriate to increment the vhdl-version number?
Von: Cyril Arnould
Gesendet: Samstag, 6. Mai 2023 14:53
An: Mattias Engdegård;
63251@debbugs.gnu.org
Cc: Reto Zimmermann;
Eli Zaretskii
Betreff: AW: bug#63251: 28.2; vhdl-mode contribution
Forgot to hit «Reply to all»
Oh, did not realize that. Yes, the (2 . 3) is important, it’s the
TYPE that determines whether the message is highlighted as an
INFO, WARNING or ERROR. From compilation-error-regexp-alist:
Each elt has the form (REGEXP FILE [LINE COLUMN TYPE HYPERLINK
HIGHLIGHT...]).
TYPE is 2 or nil for a real error or 1 for warning or 0 for info.
TYPE can also be of the form (WARNING . INFO). In that case this
will be equivalent to 1 if the WARNING’th subexpression matched
or else equivalent to 0 if the INFO’th subexpression matched,
or else equivalent to 2 if neither of them matched.
See ‘compilation-error-face’, ‘compilation-warning-face’,
‘compilation-info-face’ and ‘compilation-skip-threshold’.
I’ll try to take a look into modifying the type of the
vhdl-compiler-alist.
Von: Mattias Engdegård
Gesendet: Samstag, 6. Mai 2023 11:22
An: 63251@debbugs.gnu.org
Cc: Reto Zimmermann;
Eli Zaretskii; Cyril Arnould
Betreff: bug#63251: 28.2; vhdl-mode contribution
> Following bug#62508, I've taken a bit of a closer look at the compiler
> regexp for ModelSim. I've modified it so that it can differentiate
> between Errors, Warnings and Notes when highlighting. I also make use of
> Xilinx Vivado at work, for which I've added a new compiler entry:
Sorry, but computer says no. The modified vhdl-compiler-alist value does not match its declared type.
You can easily check this by running `M-x customize-variable vhdl-compiler-alist`; it will show the contents as a single big text field and say (mismatch).
If the value matches the type, it would have shown the value structurally.
Another check is to run `make -C test test-custom-opts`, which checks the values of all defcustom variables in Emacs.
In this case it seems to be the `(2 . 3)` values at the end of the error message sublists. Remove them and the value matches the type.
If those (2 . 3) are important, perhaps you want to change the type instead but you would have to maintain compatibility somehow. I see there is a lot of code dealing with changes to the type of that variable in vhdl-mode.el.