On Wed, Apr 10, 2013 at 09:04:06PM -0500, Gabriel Dos Reis wrote: > We might be saying the same thing using different languages. > > I was the %r/%R markers are ways of implementing the IL language > I suggested in that message. So, as such I do not object to it. > Having an explicit call makes the FE makes a "colorful" formatting > decision way too early -- a FE shouldn't be concerned about color matters. > That decision should be left to the device doing the formatting. Separation > of concerns here isn't just taste; it is good engineering practice.
But the decision is left to the device doing the formatting. The %r/%R only says, this text in between is of this kind (locus, quote (well, that is automatically done by the patch also for %</%> and %qs etc.), etc.), and we either color that using GCC_COLORS (or default) defined color if requested through command line option and terminal supports it, or we don't. As discussed earlier, alternative to the current uses of %r/%R in the sources would be %U (first and only letter from locus that is still available) which would take location_t and would perform on it: expanded_location el = expand_location (va_arg (ap, location_t)); pp_string (pp, colorize_start (pp_show_color (pp), "locus")); pp_string (pp, el.file); pp_colon (pp); pp_decimal_int (pp, el.line); if (context->show_column && el.column) { pp_colon (pp); pp_decimal_int (pp, el.column); } pp_string (pp, colorize_stop (pp_show_color (pp))); or so. But I wonder if we won't need %r/%R in the future, or add more and more formatting codes, say if we wanted to highlight something that isn't to be quoted around, or some substring inside quotes. With %r/%R we have the flexibility to do so easily, with just %U we don't. Jakub