Re: Conditional newline in pretty format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux