ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output)
Commit Message
On 7/1/19 1:25 PM, Tom Tromey wrote:
>>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
>
> Pedro> Do you still see value in keeping %pN? If we make nullptr mean
> Pedro> "keep the default", as you mentioned earlier, then the above can be
> Pedro> rewritten as:
>
> Pedro> fprintf_filtered (stream, " %pS<repeats %u times>%pS",
> Pedro> metadata_style.style ().ptr (), reps, nullptr);
>
> I was thinking that we'd change the spelling to some form of brackets,
> in which case it would be good. So like "%p[<repeats %u times>%p]".
> We discussed this before but I don't recall whether there was some
> counter-argument to it.
>
> If we're just using letters, then there doesn't seem to be a reason to
> have two %p suffixes.
Ah, my counter-argument which I guess I may have never expressed was that I
liked the idea of making %pS+nullptr mean "default", for eliminating
the having to explain/think about the "must pass a nullptr to %pN" wart.
The visual balance of brackets is appealing as well, so I can't say
I have a strong preference either way. If you've been converting things
already, you'll have a better judgment, so I'll defer to you.
(And it should go without saying, but, to everyone else, you're more
than welcome to voice your opinions too, of course.)
If we went the always-%pS way, I had written the patch and it'd look like this:
From 74899ceab18b23e45225d5560033993596c2a942 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Fri, 7 Jun 2019 22:42:57 +0100
Subject: [PATCH] Eliminate %pN
---
gdb/common/format.c | 1 -
gdb/ui-out.c | 13 ++++++++-----
2 files changed, 8 insertions(+), 6 deletions(-)
Comments
>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
Pedro> The visual balance of brackets is appealing as well, so I can't say
Pedro> I have a strong preference either way. If you've been converting things
Pedro> already, you'll have a better judgment, so I'll defer to you.
I haven't really converted much, just what you saw on the branch.
I suspect using some kind of paired brackets will make it a little
harder to forget to close the style. But probably only a little. Also
I guess we could add asserts to check that the closing parameter is
always null.
Pedro> If we went the always-%pS way, I had written the patch and it'd
Pedro> look like this:
This is fine by me too.
Tom
@@ -259,7 +259,6 @@ format_pieces::format_pieces (const char **arg, bool gdb_extensions)
case 's':
case 'S':
case 'F':
- case 'N':
f++;
break;
}
@@ -618,11 +618,14 @@ ui_out::vmessage (const char *format, va_list args)
}
break;
case 'S':
- style = *va_arg (args, const ui_file_style *);
- break;
- case 'N':
- va_arg (args, void *);
- style = {};
+ {
+ const ui_file_style *style_p
+ = va_arg (args, const ui_file_style *);
+ if (style_p != nullptr)
+ style = *style_p;
+ else
+ style = {};
+ }
break;
default:
call_do_message (style, current_substring, va_arg (args, void *));