public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] Fix formatting of long function description in chew output
@ 2023-02-20 21:35 Tom Tromey
  0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2023-02-20 21:35 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ee0e1723013527bfea4116f2fb8428add2e5343c

commit ee0e1723013527bfea4116f2fb8428add2e5343c
Author: Tom Tromey <tom@tromey.com>
Date:   Fri Feb 17 12:12:11 2023 -0700

    Fix formatting of long function description in chew output
    
    Currently, if a function description spans a line, the resulting info
    can look like this:
    
     -- Function: long bfd_canonicalize_reloc
         (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); Call the
         back end associated with the open BFD ABFD and translate the
         external form of the relocation information attached to SEC into
         the internal canonical form.  Place the table into memory at LOC,
    
    That is, the function prototype runs together with the text in an ugly
    way.  This patch fixes this by introducing a new primitive, so that
    the generated Texinfo can be a bit nicer.  Now this output looks like:
    
     -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec,
              arelent **loc, asymbol **syms);
         Call the back end associated with the open BFD ABFD and translate
         the external form of the relocation information attached to SEC
    
    2023-02-17  Tom Tromey  <tom@tromey.com>
    
            * doc/doc.str (SYNOPSIS): Use collapse_whitespace.
            * doc/chew.c (collapse_whitespace): New function.
            (main): Register collapse_whitespace.

Diff:
---
 bfd/ChangeLog   |  6 ++++++
 bfd/doc/chew.c  | 33 +++++++++++++++++++++++++++++++++
 bfd/doc/doc.str |  2 ++
 3 files changed, 41 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e160e4472df..2b487818721 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2023-02-17  Tom Tromey  <tom@tromey.com>
+
+	* doc/doc.str (SYNOPSIS): Use collapse_whitespace.
+	* doc/chew.c (collapse_whitespace): New function.
+	(main): Register collapse_whitespace.
+
 2023-02-07  Tom Tromey  <tom@tromey.com>
 
 	* bfd.c, cache.c, compress.c, opncls.c: Remove RETURNS from
diff --git a/bfd/doc/chew.c b/bfd/doc/chew.c
index cd399697abd..e8478969d64 100644
--- a/bfd/doc/chew.c
+++ b/bfd/doc/chew.c
@@ -884,6 +884,38 @@ kill_bogus_lines (void)
 
 }
 
+static void
+collapse_whitespace (void)
+{
+  int last_was_ws = 0;
+  int idx;
+
+  string_type out;
+  init_string (&out);
+
+  for (idx = 0; at (tos, idx) != 0; ++idx)
+    {
+      char c = at (tos, idx);
+      if (isspace (c))
+	{
+	  if (!last_was_ws)
+	    {
+	      catchar (&out, ' ');
+	      last_was_ws = 1;
+	    }
+	}
+      else
+	{
+	  catchar (&out, c);
+	  last_was_ws = 0;
+	}
+    }
+
+  pc++;
+  delete_string (tos);
+  *tos = out;
+}
+
 static void
 indent (void)
 {
@@ -1485,6 +1517,7 @@ main (int ac, char *av[])
   add_intrinsic ("indent", indent);
   add_intrinsic ("print_stack_level", print_stack_level);
   add_intrinsic ("strip_trailing_newlines", strip_trailing_newlines);
+  add_intrinsic ("collapse_whitespace", collapse_whitespace);
 
   internal_mode = xmalloc (sizeof (intptr_t));
   *internal_mode = 0;
diff --git a/bfd/doc/doc.str b/bfd/doc/doc.str
index 2a0953a3ece..5077ada9812 100644
--- a/bfd/doc/doc.str
+++ b/bfd/doc/doc.str
@@ -55,8 +55,10 @@ variable synopsis_seen
 	"@deftypefn {Function} " catstr
 	get_stuff_in_command  
 	kill_bogus_lines
+	collapse_whitespace
 	indent
 	catstr
+	"\n" catstr
 	;
 
 : func

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-02-20 21:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-20 21:35 [binutils-gdb] Fix formatting of long function description in chew output Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).