On Tue, Mar 17, 2020 at 10:37:13AM -0500, Robert Dailey wrote: > > It works perfectly right now except for the case where `%b` is empty. > > In that case, I just want one newline after `%s` instead of 2. Is > > there a way to make my second `%n` conditional on `%b` having a value? > [...] > Another solution I tried is `%+b`, based on this documentation: That's what I would have suggested. And it does seem to work if you do: git log --format='* %s%n%+b' but not when you add in the indentation and wrapping: git log --format='* %s%n%w(100,2,2)%+b' Which is unfortunate, but I think makes sense: the wrapping sees the extra newline as part of the text to be wrapped, so it gets folded into the first line. I think what you really want is a conditional that can cover multiple placeholders, and put the wrapped body inside that. You can do that with the for-each-ref placeholders, which have a real "%(if)...%(end)" block. But I don't think the pretty-format placeholders have an equivalent. It would be nice to unify them one day, but progress has been slow on that front. I wonder in the meantime if it would be possible to introduce a block syntax to the pretty formats, like: git log --format='* %s%n%+{%w(100,2,2)%b}' or something. I don't know the conditional code well enough to say whether that would be a trivial patch or a horribly complicated one. :) -Peff