While working on my own plotLegends
package I encoutered some weird behaviour of the front end's syntax highlighting. I reduced the problem to the following minimal example:
Unprotect[Plot];
AppendTo[Options[Plot], opt1 -> True];
Plot[a_, b_, c___, opt1 -> opt_, d___] :=
foo[Plot[a, b, c, d], opt]
Plot[a_, b_, c___, opt1 -> opt_, d___] /; True :=
foo[Plot[a, b, c, d], opt]
Protect[Plot];
Unprotect[ListPlot];
AppendTo[Options[ListPlot], opt1 -> True];
ListPlot[a_, c___, opt1 -> opt_, d___] :=
foo[ListPlot[a, c, d], opt]
ListPlot[a_, c___, opt1 -> opt_, d___] /; True :=
foo[ListPlot[a, c, d], opt]
Protect[ListPlot];
You can see what I mean by "weird behaviour" in the following screenshot:
For both Plot
and ListPlot
, adding /;True
leads to the option being highlighted red (which it otherwise isn't) . But only for Plot
the default green highlighting of the patterns gets lost too. Can anyone reproduce this? Is there any reason why Plot
should differ from ListPlot
?
I'm using version 8.0 on Windows 7.