On 30 May 2018 at 08:00, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > >> Jeff King <peff@xxxxxxxx> writes: >> >>> But most importantly, it means we could eventually colorize errors, too, >>> where we are not allowed to allocate. >>> >>> So perhaps: >>> >>> void report_lines(FILE *out, >>> const char *color, const char *color_reset, >>> const char *prefix, const char *msg); >>> >>> or something? >> >> Sounds good to me. And if you hate the repeated "error:" prefix >> that makes the prefix on the second and subsequent lines included in >> cutting and pasting, we could use the two-prefix idea elsewhere in >> the thread, too. (That also gets rid of the minor strangeness of my series to introduce an overly broad `suffix` and use it only for resetting color, not actually for giving any textual suffix.) > If we do not want duplicate prefix, another approach is to leave > everything including alignment up to the translators. For example, > > error(_("the first line of error.\n" > " ... and the second.")); > [...] > with these entries for that hypothetical "shout in caps" language. > > msgid "error: " > msgstr "ERRORX: " > msgid "the first line of error.\n ... and the second." > msgstr"THE FIRST LINE OF ERROR.\n ... AND THE SECOND." > > So I do not think the two-prefix idea is necessary (and if people > prefer to have repeated prefix, that can also be done perfectly well > within this scheme---the second and subsequent message needs to > duplicate "error:" at the beginning, which is sort of ugly, but the > leading spaces for alignment we see above already knows how wide > "error:" and its translation is, so it is not that much worse > anyway). Thanks for lots of good input. Doing the indenting in the error does mean that to indent properly, the translator needs to know that it is an error, and not a warning. Or one could say that they would need to know the amount of indentation anyway so that they can know where to wrap optimally. Another consequence is that if we can emit a certain string as either, e.g., a warning or an error depending on the context, we need to address that. Using contexts, of course. Thank you for the hint about that. (I have not checked if we actually have such "this is a warning or an error"-strings currently.) Somehow it feels slightly cleaner to me, at least on first thought, to try to decouple the indenting from the translating and line-wrapping. But as noted above, the indenting does affect how the line-wrapping should/may be done. I won't have as much time as I'd like for tinkering with this the next week, or even weeks. Hopefully when I do get around to it, I will have processed all the very good input I have received and turn that into something good. Thanks, Martin