Style URLs in GDB output
authorTom Tromey <tom@tromey.com>
Thu, 10 Mar 2022 00:26:37 +0000 (17:26 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 1 Apr 2022 00:01:38 +0000 (18:01 -0600)
I noticed that GDB will display URLs in a few spots.  This changes
them to be styled.  Originally I thought I'd introduce a new "url"
style, but there aren't many places to use this, so I just reused
filename styling instead.  This patch also changes the debuginfod URL
list to be printed one URL per line.  I think this is probably a bit
easier to read.

gdb/debuginfod-support.c
gdb/doc/gdb.texinfo
gdb/main.c
gdb/testsuite/gdb.base/style.exp
gdb/top.c
gdb/utils.c

index b3a49bfeccff24c1728d8986d978268e9cd5fa2b..22944ce50bbe112295ffe98deb21a0a3850b0a4f 100644 (file)
@@ -181,10 +181,27 @@ debuginfod_is_enabled ()
 
   if (debuginfod_enabled == debuginfod_ask)
     {
-      int resp = nquery (_("\nThis GDB supports auto-downloading debuginfo " \
-                          "from the following URLs:\n%s\nEnable debuginfod " \
-                          "for this session? "),
-                        urls);
+      gdb_printf (_("\nThis GDB supports auto-downloading debuginfo " \
+                   "from the following URLs:\n"));
+
+      gdb::string_view url_view (urls);
+      while (true)
+       {
+         url_view = url_view.substr (url_view.find_first_not_of (' '));
+         if (url_view.empty ())
+           break;
+         size_t off = url_view.find_first_of (' ');
+         gdb_printf
+           (_("  <%ps>\n"),
+            styled_string (file_name_style.style (),
+                           gdb::to_string (url_view.substr (0,
+                                                            off)).c_str ()));
+         if (off == gdb::string_view::npos)
+           break;
+         url_view = url_view.substr (off);
+       }
+
+      int resp = nquery (_("Enable debuginfod for this session? "));
       if (!resp)
        {
          gdb_printf (_("Debuginfod has been disabled.\nTo make this " \
index a4afa75d9674d8288c263208bed7c4fd86d7462e..d21fd0d3f0a61e7b58495db1dae644157c2556e1 100644 (file)
@@ -26238,7 +26238,7 @@ their characteristics and the visual aspect of each style.
 The style-able objects are:
 @table @code
 @item filename
-Control the styling of file names.  By default, this style's
+Control the styling of file names and URLs.  By default, this style's
 foreground color is green.
 
 @item function
index f53131da567bb2499289735002aa248ee68946f2..8c0807ff83b2d74aa1d1b2c7a35556772847a78c 100644 (file)
@@ -1495,8 +1495,8 @@ GDB manual (available as on-line info or a printed manual).\n\
 "), stream);
   if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
     gdb_printf (stream, _("\n\
-Report bugs to %s.\n\
-"), REPORT_BUGS_TO);
+Report bugs to %ps.\n\
+"), styled_string (file_name_style.style (), REPORT_BUGS_TO));
   if (stream == gdb_stdout)
     gdb_printf (stream, _("\n\
 You can ask GDB-related questions on the GDB users mailing list\n\
index 68196d6e3e28872a925f9d9734fdf7cca9f62e21..611b8ae52ba07ab873646f4f9a3d2ddb0b7af1d5 100644 (file)
@@ -309,8 +309,9 @@ proc run_style_tests { } {
        # Check that the version string is styled in the output of 'show
        # version', and that this styling can be disabled.
        set vers [style "GNU gdb.*" version]
-       gdb_test "show version" "${vers}.*" \
-           "version is styled in 'show version'"
+       set url [limited_style "http:.*html" file]
+       gdb_test "show version" "${vers}.*<$url>.*" \
+           "'show version' is styled"
     }
 }
 
index ecd31456f03b4307b6677b2146061ff9dacdfd34..c7ff6744694281ae0d5d8bc3bbe73a81cc16be2e 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1428,9 +1428,11 @@ print_gdb_version (struct ui_file *stream, bool interactive)
      there is no warranty.  */
 
   gdb_printf (stream, "\
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\
+License GPLv3+: GNU GPL version 3 or later <%ps>\
 \nThis is free software: you are free to change and redistribute it.\n\
-There is NO WARRANTY, to the extent permitted by law.");
+There is NO WARRANTY, to the extent permitted by law.",
+                   styled_string (file_name_style.style (),
+                                  "http://gnu.org/licenses/gpl.html"));
 
   if (!interactive)
     return;
@@ -1459,11 +1461,15 @@ There is NO WARRANTY, to the extent permitted by law.");
     {
       gdb_printf (stream,
                  _("For bug reporting instructions, please see:\n"));
-      gdb_printf (stream, "%s.\n", REPORT_BUGS_TO);
+      gdb_printf (stream, "%ps.\n",
+                 styled_string (file_name_style.style (),
+                                REPORT_BUGS_TO));
     }
   gdb_printf (stream,
              _("Find the GDB manual and other documentation \
-resources online at:\n    <http://www.gnu.org/software/gdb/documentation/>."));
+resources online at:\n    <%ps>."),
+             styled_string (file_name_style.style (),
+                            "http://www.gnu.org/software/gdb/documentation/"));
   gdb_printf (stream, "\n\n");
   gdb_printf (stream, _("For help, type \"help\".\n"));
   gdb_printf (stream,
index 9ca268ad07feb145b156ccabc377c1856431ed34..68bf3a67340c582a1de70c6d9ad863a546b4c7b7 100644 (file)
@@ -404,8 +404,9 @@ internal_vproblem (struct internal_problem *problem,
 
   gdb_puts (_("\nThis is a bug, please report it."), gdb_stderr);
   if (REPORT_BUGS_TO[0])
-    gdb_printf (gdb_stderr, _("  For instructions, see:\n%s."),
-               REPORT_BUGS_TO);
+    gdb_printf (gdb_stderr, _("  For instructions, see:\n%ps."),
+               styled_string (file_name_style.style (),
+                              REPORT_BUGS_TO));
   gdb_puts ("\n\n", gdb_stderr);
 
   if (problem->should_dump_core == internal_problem_ask)