public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Require help text to fit in 80 columns
@ 2024-06-03 17:57 Tom Tromey
  2024-06-03 17:57 ` [PATCH 1/4] Call gdbpy_fix_doc_string_indentation for function help Tom Tromey
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Tom Tromey @ 2024-06-03 17:57 UTC (permalink / raw)
  To: gdb-patches

I noticed that "help info variables" was pretty ugly on my 80-column
terminal.  While fixing this, I was curious to know what other
problems there might be, and I ended up writing a unit test to check
for over-long lines in the help text.  This series is the result.

Regression tested on x86-64 Fedora 38.

---
Tom Tromey (4):
      Call gdbpy_fix_doc_string_indentation for function help
      Wrap help strings at 80 columns
      Wrap help options when building help string
      Ensure that help text fits in 80 columns

 gdb/cli/cli-cmds.c                    |  3 +-
 gdb/cli/cli-decode.h                  |  3 ++
 gdb/cli/cli-option.c                  | 60 +++++++++++++++++++++--------------
 gdb/cli/cli-utils.c                   |  8 ++---
 gdb/debuginfod-support.c              | 12 +++----
 gdb/infcmd.c                          |  6 ++--
 gdb/memattr.c                         |  3 +-
 gdb/psymtab.c                         |  3 +-
 gdb/python/py-function.c              |  2 ++
 gdb/record-btrace.c                   | 10 +++---
 gdb/record-full.c                     |  4 +--
 gdb/record.c                          | 26 +++++++--------
 gdb/regcache-dump.c                   |  6 ++--
 gdb/symfile.c                         |  4 +--
 gdb/symmisc.c                         |  3 +-
 gdb/unittests/command-def-selftests.c |  5 +++
 16 files changed, 93 insertions(+), 65 deletions(-)
---
base-commit: 7c493aa7e73e6718790f6b4a01a39ff4146cba4a
change-id: 20240603-doc-string-cols-0fd31bbe72e2

Best regards,
-- 
Tom Tromey <tromey@adacore.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] Call gdbpy_fix_doc_string_indentation for function help
  2024-06-03 17:57 [PATCH 0/4] Require help text to fit in 80 columns Tom Tromey
@ 2024-06-03 17:57 ` Tom Tromey
  2024-06-03 17:57 ` [PATCH 2/4] Wrap help strings at 80 columns Tom Tromey
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Tom Tromey @ 2024-06-03 17:57 UTC (permalink / raw)
  To: gdb-patches

If you invoke "help function _caller_is", you'll see that the help
text is indented strangely.  The fix for this is to add a call to
gdbpy_fix_doc_string_indentation in the appropriate spot, as is
already done for Python commands and parameters.
---
 gdb/python/py-function.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gdb/python/py-function.c b/gdb/python/py-function.c
index 2bbfb9d3a6d..952f03bb77c 100644
--- a/gdb/python/py-function.c
+++ b/gdb/python/py-function.c
@@ -120,6 +120,8 @@ fnpy_init (PyObject *self, PyObject *args, PyObject *kwds)
 	      docstring = python_string_to_host_string (ds_obj.get ());
 	      if (docstring == NULL)
 		return -1;
+	      docstring
+		= gdbpy_fix_doc_string_indentation (std::move (docstring));
 	    }
 	}
     }

-- 
2.44.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/4] Wrap help strings at 80 columns
  2024-06-03 17:57 [PATCH 0/4] Require help text to fit in 80 columns Tom Tromey
  2024-06-03 17:57 ` [PATCH 1/4] Call gdbpy_fix_doc_string_indentation for function help Tom Tromey
@ 2024-06-03 17:57 ` Tom Tromey
  2024-06-05 15:11   ` Metzger, Markus T
  2024-06-03 17:57 ` [PATCH 3/4] Wrap help options when building help string Tom Tromey
  2024-06-03 17:57 ` [PATCH 4/4] Ensure that help text fits in 80 columns Tom Tromey
  3 siblings, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2024-06-03 17:57 UTC (permalink / raw)
  To: gdb-patches

This patch ensures that all ordinary help strings are wrapped at 80
columns.  For the most part this consists of changing code like this
(note the embedded \n and the trailing backslash without a newline):

-Manage the space-separated list of debuginfod server URLs that GDB will query \
-when missing debuginfo, executables or source files.\nThe default value is \
-copied from the DEBUGINFOD_URLS environment variable."),

... to end each line with \n\, like:

+Manage the space-separated list of debuginfod server URLs that GDB will\n\
+query when missing debuginfo, executables or source files.\n\
+The default value is copied from the DEBUGINFOD_URLS environment variable."),
---
 gdb/cli/cli-cmds.c       |  3 ++-
 gdb/cli/cli-utils.c      |  8 ++++----
 gdb/debuginfod-support.c | 12 ++++++------
 gdb/infcmd.c             |  6 ++++--
 gdb/memattr.c            |  3 +--
 gdb/psymtab.c            |  3 ++-
 gdb/record-btrace.c      | 10 +++++-----
 gdb/record-full.c        |  4 ++--
 gdb/record.c             | 26 +++++++++++++-------------
 gdb/regcache-dump.c      |  6 +++---
 gdb/symfile.c            |  4 ++--
 gdb/symmisc.c            |  3 ++-
 12 files changed, 46 insertions(+), 42 deletions(-)

diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 3af794cebaf..ca1ed836c53 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -2751,9 +2751,10 @@ as 0 or -1 depending on the setting."),
 			 gdb_setting_internal_fn, NULL);
 
   add_internal_function ("_gdb_maint_setting_str", _("\
-$_gdb_maint_setting_str - returns the value of a GDB maintenance setting as a string.\n\
+$_gdb_maint_setting_str - returns the value of a GDB maintenance setting.\n\
 Usage: $_gdb_maint_setting_str (setting)\n\
 \n\
+Like \"$_gdb_maint_setting\", but the return value is always a string.\n\
 auto-boolean values are \"off\", \"on\", \"auto\".\n\
 boolean values are \"off\", \"on\".\n\
 Some integer settings accept an unlimited value, returned\n\
diff --git a/gdb/cli/cli-utils.c b/gdb/cli/cli-utils.c
index 45b30842e00..152fee96f8c 100644
--- a/gdb/cli/cli-utils.c
+++ b/gdb/cli/cli-utils.c
@@ -197,10 +197,10 @@ info_print_args_help (const char *prefix,
 		      bool document_n_flag)
 {
   return xstrprintf (_("\
-%sIf NAMEREGEXP is provided, only prints the %s whose name\n\
-matches NAMEREGEXP.\n\
-If -t TYPEREGEXP is provided, only prints the %s whose type\n\
-matches TYPEREGEXP.  Note that the matching is done with the type\n\
+%sIf NAMEREGEXP is provided, only prints the %s\n\
+whose name matches NAMEREGEXP.\n\
+If -t TYPEREGEXP is provided, only prints the %s\n\
+whose type matches TYPEREGEXP.  Note that the matching is done with the type\n\
 printed by the 'whatis' command.\n\
 By default, the command might produce headers and/or messages indicating\n\
 why no %s can be printed.\n\
diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
index 841b6f2078c..8029c87264d 100644
--- a/gdb/debuginfod-support.c
+++ b/gdb/debuginfod-support.c
@@ -624,9 +624,9 @@ When set to \"ask\", prompt whether to enable or disable debuginfod." ),
   add_setshow_string_noescape_cmd ("urls", class_run, _("\
 Set the list of debuginfod server URLs."), _("\
 Show the list of debuginfod server URLs."), _("\
-Manage the space-separated list of debuginfod server URLs that GDB will query \
-when missing debuginfo, executables or source files.\nThe default value is \
-copied from the DEBUGINFOD_URLS environment variable."),
+Manage the space-separated list of debuginfod server URLs that GDB will\n\
+query when missing debuginfo, executables or source files.\n\
+The default value is copied from the DEBUGINFOD_URLS environment variable."),
 				   set_debuginfod_urls,
 				   get_debuginfod_urls,
 				   show_debuginfod_urls,
@@ -657,9 +657,9 @@ query.\nTo disable, set to zero.  Verbose output is displayed by default."),
   add_setshow_boolean_cmd ("download-sections", class_maintenance, _("\
 Set whether debuginfod may download individual ELF/DWARF sections."), _("\
 Show whether debuginfod may download individual ELF/DWARF sections."), _("\
-When enabled, debuginfod may attempt to download individual ELF/DWARF \
-sections from debug info files.\nIf disabled, only whole debug info files \
-may be downloaded."),
+When enabled, debuginfod may attempt to download individual ELF/DWARF\n\
+sections from debug info files.\n\
+If disabled, only whole debug info files may be downloaded."),
 			   maint_set_debuginfod_download_sections,
 			   maint_get_debuginfod_download_sections,
 			   nullptr,
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 69db665da75..32dfa03a7e3 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -3280,8 +3280,10 @@ frame."));
   add_com_alias ("u", until_cmd, class_run, 1);
 
   c = add_com ("advance", class_run, advance_command, _("\
-Continue the program up to the given location (same form as args for break \
-command).\n\
+Continue the program up to the given location.\n\
+Usage: advance LOCSPEC\n\
+The argument is a location specification, i.e., the same forms\n\
+accepted by the 'break' command.\n\
 Execution will also stop upon exit from the current stack frame."));
   set_cmd_completer (c, location_completer);
 
diff --git a/gdb/memattr.c b/gdb/memattr.c
index 735068e5a46..669a5486ddf 100644
--- a/gdb/memattr.c
+++ b/gdb/memattr.c
@@ -595,8 +595,7 @@ void
 _initialize_mem ()
 {
   add_com ("mem", class_vars, mem_command, _("\
-Define attributes for memory region or reset memory region handling to "
-"target-based.\n\
+Define or reset attributes for memory regions.\n\
 Usage: mem auto\n\
        mem LOW HIGH [MODE WIDTH CACHE],\n\
 where MODE  may be rw (read/write), ro (read-only) or wo (write-only),\n\
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 20822c3101e..e1c0036e227 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1564,7 +1564,8 @@ Usage: mt print psymbols [-objfile OBJFILE] [-pc ADDRESS] [--] [OUTFILE]\n\
        mt print psymbols [-objfile OBJFILE] [-source SOURCE] [--] [OUTFILE]\n\
 Entries in the partial symbol table are dumped to file OUTFILE,\n\
 or the terminal if OUTFILE is unspecified.\n\
-If ADDRESS is provided, dump only the symbols for the file with code at that address.\n\
+If ADDRESS is provided, dump only the symbols for the file\n\
+with code at that address.\n\
 If SOURCE is provided, dump only that file's symbols.\n\
 If OBJFILE is provided, dump only that object file's symbols."),
 	   &maintenanceprintlist);
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 9fec6112755..cd498e4301e 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -3134,7 +3134,7 @@ Set what memory accesses are allowed during replay."), _("\
 Show what memory accesses are allowed during replay."),
 			   _("Default is READ-ONLY.\n\n\
 The btrace record target does not trace data.\n\
-The memory therefore corresponds to the live target and not \
+The memory therefore corresponds to the live target and not\n\
 to the current replay position.\n\n\
 When READ-ONLY, allow accesses to read-only memory during replay.\n\
 When READ-WRITE, allow accesses to read-only and read-write memory during \
@@ -3181,10 +3181,10 @@ Show the cpu to be used for trace decode."),
 			    &record_btrace_conf.bts.size,
 			    _("Set the record/replay bts buffer size."),
 			    _("Show the record/replay bts buffer size."), _("\
-When starting recording request a trace buffer of this size.  \
-The actual buffer size may differ from the requested size.  \
+When starting recording request a trace buffer of this size.\n\
+The actual buffer size may differ from the requested size.\n\
 Use \"info record\" to see the actual buffer size.\n\n\
-Bigger buffers allow longer recording but also take more time to process \
+Bigger buffers allow longer recording but also take more time to process\n\
 the recorded execution trace.\n\n\
 The trace buffer size may not be changed while recording."), NULL,
 			    show_record_bts_buffer_size_value,
@@ -3203,7 +3203,7 @@ The trace buffer size may not be changed while recording."), NULL,
 			    &record_btrace_conf.pt.size,
 			    _("Set the record/replay pt buffer size."),
 			    _("Show the record/replay pt buffer size."), _("\
-Bigger buffers allow longer recording but also take more time to process \
+Bigger buffers allow longer recording but also take more time to process\n\
 the recorded execution.\n\
 The actual buffer size may differ from the requested size.  Use \"info record\" \
 to see the actual buffer size."), NULL, show_record_pt_buffer_size_value,
diff --git a/gdb/record-full.c b/gdb/record-full.c
index eb62d186fa5..622eb2fc069 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -2977,8 +2977,8 @@ When ON, query if PREC cannot record memory change of next instruction."),
 	   _("\
 Print a recorded instruction.\n\
 If no argument is provided, print the last instruction recorded.\n\
-If a negative argument is given, prints how the nth previous \
+If a negative argument is given, prints how the nth previous\n\
 instruction will be undone.\n\
-If a positive argument is given, prints \
+If a positive argument is given, prints\n\
 how the nth following instruction will be redone."), &maintenanceprintlist);
 }
diff --git a/gdb/record.c b/gdb/record.c
index b25445713fd..b8ef7287365 100644
--- a/gdb/record.c
+++ b/gdb/record.c
@@ -859,38 +859,38 @@ With a /m or /s modifier, source lines are included (if available).\n\
 With a /r modifier, raw instructions in hex are included.\n\
 With a /f modifier, function names are omitted.\n\
 With a /p modifier, current position markers are omitted.\n\
-With no argument, disassembles ten more instructions after the previous \
+With no argument, disassembles ten more instructions after the previous\n\
 disassembly.\n\
-\"record instruction-history -\" disassembles ten instructions before a \
+\"record instruction-history -\" disassembles ten instructions before a\n\
 previous disassembly.\n\
-One argument specifies an instruction number as shown by 'info record', and \
+One argument specifies an instruction number as shown by 'info record', and\n\
 ten instructions are disassembled after that instruction.\n\
-Two arguments with comma between them specify starting and ending instruction \
+Two arguments with comma between them specify starting and ending instruction\n\
 numbers to disassemble.\n\
-If the second argument is preceded by '+' or '-', it specifies the distance \
+If the second argument is preceded by '+' or '-', it specifies the distance\n\
 from the first argument.\n\
-The number of instructions to disassemble can be defined with \"set record \
-instruction-history-size\"."),
+The number of instructions to disassemble can be defined with\n\
+\"set record instruction-history-size\"."),
 	   &record_cmdlist);
 
   add_cmd ("function-call-history", class_obscure, cmd_record_call_history, _("\
 Prints the execution history at function granularity.\n\
-It prints one line for each sequence of instructions that belong to the same \
+It prints one line for each sequence of instructions that belong to the same\n\
 function.\n\
 Without modifiers, it prints the function name.\n\
 With a /l modifier, the source file and line number range is included.\n\
 With a /i modifier, the instruction number range is included.\n\
 With a /c modifier, the output is indented based on the call stack depth.\n\
 With no argument, prints ten more lines after the previous ten-line print.\n\
-\"record function-call-history -\" prints ten lines before a previous ten-line \
+\"record function-call-history -\" prints ten lines before a previous ten-line\n\
 print.\n\
-One argument specifies a function number as shown by 'info record', and \
+One argument specifies a function number as shown by 'info record', and\n\
 ten lines are printed after that function.\n\
 Two arguments with comma between them specify a range of functions to print.\n\
-If the second argument is preceded by '+' or '-', it specifies the distance \
+If the second argument is preceded by '+' or '-', it specifies the distance\n\
 from the first argument.\n\
-The number of functions to print can be defined with \"set record \
-function-call-history-size\"."),
+The number of functions to print can be defined with\n\
+\"set record function-call-history-size\"."),
 	   &record_cmdlist);
 
   /* Sync command control variables.  */
diff --git a/gdb/regcache-dump.c b/gdb/regcache-dump.c
index bc665dc08a6..1badfe2c9f8 100644
--- a/gdb/regcache-dump.c
+++ b/gdb/regcache-dump.c
@@ -325,8 +325,8 @@ _initialize_regcache_dump ()
 	   &maintenanceprintlist);
   add_cmd ("remote-registers", class_maintenance,
 	   maintenance_print_remote_registers, _("\
-Print the internal register configuration including remote register number "
-"and g/G packets offset.\n\
-Takes an optional file parameter."),
+Print the internal register configuration.\n\
+Usage: maintenance print remote-registers [FILE]\n\
+The remote register number and g/G packets offset are included."),
 	   &maintenanceprintlist);
 }
diff --git a/gdb/symfile.c b/gdb/symfile.c
index f7f5be5a39a..21b65a860f1 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -3855,8 +3855,8 @@ to execute.\n" READNOW_READNEVER_HELP), &cmdlist);
 
   c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
-Usage: add-symbol-file FILE [-readnow | -readnever] [-o OFF] [ADDR] \
-[-s SECT-NAME SECT-ADDR]...\n\
+Usage: add-symbol-file FILE [-readnow|-readnever] [-o OFF] [ADDR]\n\
+                       [-s SECT-NAME SECT-ADDR]...\n\
 ADDR is the starting address of the file's text.\n\
 Each '-s' argument provides a section name and address, and\n\
 should be specified if the data and bss segments are not contiguous\n\
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 2956ad92fce..74b5e6c850a 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -1052,7 +1052,8 @@ Usage: mt print symbols [-pc ADDRESS] [--] [OUTFILE]\n\
        mt print symbols [-objfile OBJFILE] [-source SOURCE] [--] [OUTFILE]\n\
 Entries in the full symbol table are dumped to file OUTFILE,\n\
 or the terminal if OUTFILE is unspecified.\n\
-If ADDRESS is provided, dump only the symbols for the file with code at that address.\n\
+If ADDRESS is provided, dump only the symbols for the file\n\
+with code at that address.\n\
 If SOURCE is provided, dump only that file's symbols.\n\
 If OBJFILE is provided, dump only that object file's symbols."),
 	   &maintenanceprintlist);

-- 
2.44.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 3/4] Wrap help options when building help string
  2024-06-03 17:57 [PATCH 0/4] Require help text to fit in 80 columns Tom Tromey
  2024-06-03 17:57 ` [PATCH 1/4] Call gdbpy_fix_doc_string_indentation for function help Tom Tromey
  2024-06-03 17:57 ` [PATCH 2/4] Wrap help strings at 80 columns Tom Tromey
@ 2024-06-03 17:57 ` Tom Tromey
  2024-06-03 17:57 ` [PATCH 4/4] Ensure that help text fits in 80 columns Tom Tromey
  3 siblings, 0 replies; 7+ messages in thread
From: Tom Tromey @ 2024-06-03 17:57 UTC (permalink / raw)
  To: gdb-patches

When building a help string, it's possible that the resulting options
will go over 80 columns.  This patch changes this code to add line
wrapping where needed.

This can most be seen by looking "help bt" and in particular the
"-frame-info" help text.
---
 gdb/cli/cli-decode.h |  3 +++
 gdb/cli/cli-option.c | 60 ++++++++++++++++++++++++++++++++--------------------
 2 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h
index 7365c3f0157..7e25374fc80 100644
--- a/gdb/cli/cli-decode.h
+++ b/gdb/cli/cli-decode.h
@@ -29,6 +29,9 @@
 #include "gdbsupport/intrusive_list.h"
 #include "gdbsupport/buildargv.h"
 
+/* The allowed length of a line in a documentation string.  */
+constexpr int cli_help_line_length = 80;
+
 /* Not a set/show command.  Note that some commands which begin with
    "set" or "show" might be in this category, if their syntax does
    not fall into one of the following categories.  */
diff --git a/gdb/cli/cli-option.c b/gdb/cli/cli-option.c
index 05539285c80..520810276a4 100644
--- a/gdb/cli/cli-option.c
+++ b/gdb/cli/cli-option.c
@@ -659,50 +659,68 @@ process_options (const char **args,
     }
 }
 
-/* Helper for build_help.  Return a fragment of a help string showing
-   OPT's possible values.  Returns NULL if OPT doesn't take an
-   argument.  */
+/* Helper for build_help.  Append a fragment of a help string showing
+   OPT's possible values.  LEN_AT_START is the length of HELP at the
+   start of the current line.  This is used when wrapping is
+   needed.  */
 
-static const char *
-get_val_type_str (const option_def &opt, std::string &buffer)
+static void
+append_val_type_str (std::string &help, const option_def &opt,
+		     size_t len_at_start)
 {
   if (!opt.have_argument)
-    return nullptr;
+    return;
 
   switch (opt.type)
     {
     case var_boolean:
-      return "[on|off]";
+      help += " [on|off]";
+      break;
     case var_uinteger:
     case var_integer:
     case var_pinteger:
       {
-	buffer = "NUMBER";
+	help += " NUMBER";
 	if (opt.extra_literals != nullptr)
 	  for (const literal_def *l = opt.extra_literals;
 	       l->literal != nullptr;
 	       l++)
 	    {
-	      buffer += '|';
-	      buffer += l->literal;
+	      help += '|';
+	      help += l->literal;
 	    }
-	return buffer.c_str ();
       }
+      break;
     case var_enum:
       {
-	buffer = "";
+	help += ' ';
+	/* If wrapping is needed, subsequent lines will be indented
+	   this amount.  */
+	size_t indent = help.length () - len_at_start;
 	for (size_t i = 0; opt.enums[i] != nullptr; i++)
 	  {
 	    if (i != 0)
-	      buffer += "|";
-	    buffer += opt.enums[i];
+	      {
+		size_t new_len = help.length () + 1 + strlen (opt.enums[i]);
+
+		if (new_len - len_at_start >= cli_help_line_length)
+		  {
+		    help += "\n";
+		    len_at_start = help.length ();
+
+		    help.append (indent, ' ');
+		  }
+		help += "|";
+	      }
+	    help += opt.enums[i];
 	  }
-	return buffer.c_str ();
       }
+      break;
     case var_string:
-      return "STRING";
+      help += " STRING";
+      break;
     default:
-      return nullptr;
+      break;
     }
 }
 
@@ -740,15 +758,11 @@ build_help_option (gdb::array_view<const option_def> options,
       if (o.set_doc == nullptr)
 	continue;
 
+      size_t initial_len = help.length ();
       help += "  -";
       help += o.name;
 
-      const char *val_type_str = get_val_type_str (o, buffer);
-      if (val_type_str != nullptr)
-	{
-	  help += ' ';
-	  help += val_type_str;
-	}
+      append_val_type_str (help, o, initial_len);
       help += "\n";
       append_indented_doc (o.set_doc, help);
       if (o.help_doc != nullptr)

-- 
2.44.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 4/4] Ensure that help text fits in 80 columns
  2024-06-03 17:57 [PATCH 0/4] Require help text to fit in 80 columns Tom Tromey
                   ` (2 preceding siblings ...)
  2024-06-03 17:57 ` [PATCH 3/4] Wrap help options when building help string Tom Tromey
@ 2024-06-03 17:57 ` Tom Tromey
  3 siblings, 0 replies; 7+ messages in thread
From: Tom Tromey @ 2024-06-03 17:57 UTC (permalink / raw)
  To: gdb-patches

This patch adds a new unit test that ensures that all help text wraps
at 80 columns.
---
 gdb/unittests/command-def-selftests.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gdb/unittests/command-def-selftests.c b/gdb/unittests/command-def-selftests.c
index 6a9b194e680..a87ce2c5603 100644
--- a/gdb/unittests/command-def-selftests.c
+++ b/gdb/unittests/command-def-selftests.c
@@ -78,6 +78,7 @@ check_doc (struct cmd_list_element *commandlist, const char *prefix)
 	  (prefix, c->name,
 	   "has superfluous trailing whitespace");
 
+      const char *prev_start = c->doc;
       for (const char *nl = strchr (c->doc, '\n');
 	   nl != nullptr;
 	   nl = strchr (nl + 1, '\n'))
@@ -91,6 +92,10 @@ check_doc (struct cmd_list_element *commandlist, const char *prefix)
 		broken_doc_invariant (prefix, c->name,
 				      "has whitespace before a newline");
 	    }
+
+	  if (nl - prev_start > cli_help_line_length)
+	    broken_doc_invariant (prefix, c->name, "has over-long line");
+	  prev_start = nl + 1;
 	}
 
       /* Check if this command has subcommands and is not an

-- 
2.44.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH 2/4] Wrap help strings at 80 columns
  2024-06-03 17:57 ` [PATCH 2/4] Wrap help strings at 80 columns Tom Tromey
@ 2024-06-05 15:11   ` Metzger, Markus T
  2024-06-07 16:50     ` Tom Tromey
  0 siblings, 1 reply; 7+ messages in thread
From: Metzger, Markus T @ 2024-06-05 15:11 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

Hello Tom,

>diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
>index 9fec6112755..cd498e4301e 100644
>--- a/gdb/record-btrace.c
>+++ b/gdb/record-btrace.c
>@@ -3134,7 +3134,7 @@ Set what memory accesses are allowed during
>replay."), _("\
> Show what memory accesses are allowed during replay."),
> 			   _("Default is READ-ONLY.\n\n\
> The btrace record target does not trace data.\n\
>-The memory therefore corresponds to the live target and not \
>+The memory therefore corresponds to the live target and not\n\
> to the current replay position.\n\n\
> When READ-ONLY, allow accesses to read-only memory during replay.\n\
> When READ-WRITE, allow accesses to read-only and read-write memory during \

Looks like there is one missing.

>@@ -3181,10 +3181,10 @@ Show the cpu to be used for trace decode."),
> 			    &record_btrace_conf.bts.size,
> 			    _("Set the record/replay bts buffer size."),
> 			    _("Show the record/replay bts buffer size."), _("\
>-When starting recording request a trace buffer of this size.  \
>-The actual buffer size may differ from the requested size.  \
>+When starting recording request a trace buffer of this size.\n\
>+The actual buffer size may differ from the requested size.\n\
> Use \"info record\" to see the actual buffer size.\n\n\
>-Bigger buffers allow longer recording but also take more time to process \
>+Bigger buffers allow longer recording but also take more time to process\n\
> the recorded execution trace.\n\n\
> The trace buffer size may not be changed while recording."), NULL,
> 			    show_record_bts_buffer_size_value,
>@@ -3203,7 +3203,7 @@ The trace buffer size may not be changed while
>recording."), NULL,
> 			    &record_btrace_conf.pt.size,
> 			    _("Set the record/replay pt buffer size."),
> 			    _("Show the record/replay pt buffer size."), _("\
>-Bigger buffers allow longer recording but also take more time to process \
>+Bigger buffers allow longer recording but also take more time to process\n\
> the recorded execution.\n\
> The actual buffer size may differ from the requested size.  Use \"info record\" \

Here, too.

> to see the actual buffer size."), NULL, show_record_pt_buffer_size_value,

Regards,
Markus.
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/4] Wrap help strings at 80 columns
  2024-06-05 15:11   ` Metzger, Markus T
@ 2024-06-07 16:50     ` Tom Tromey
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Tromey @ 2024-06-07 16:50 UTC (permalink / raw)
  To: Metzger, Markus T; +Cc: Tom Tromey, gdb-patches

>>>>> Metzger, Markus T <markus.t.metzger@intel.com> writes:

>> When READ-WRITE, allow accesses to read-only and read-write memory during \

> Looks like there is one missing.

Thanks for noticing this.  This pointed out that the unit test was not
checking the last line of the doc string; and this found a significant
number of new problems...

Tom

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-06-07 16:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-03 17:57 [PATCH 0/4] Require help text to fit in 80 columns Tom Tromey
2024-06-03 17:57 ` [PATCH 1/4] Call gdbpy_fix_doc_string_indentation for function help Tom Tromey
2024-06-03 17:57 ` [PATCH 2/4] Wrap help strings at 80 columns Tom Tromey
2024-06-05 15:11   ` Metzger, Markus T
2024-06-07 16:50     ` Tom Tromey
2024-06-03 17:57 ` [PATCH 3/4] Wrap help options when building help string Tom Tromey
2024-06-03 17:57 ` [PATCH 4/4] Ensure that help text fits in 80 columns 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).