aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/cli/cli-style.c99
-rw-r--r--gdb/cli/cli-style.h16
3 files changed, 74 insertions, 54 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 29b525a..18a2dbb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2019-01-12 Philippe Waroquiers <philippe.waroquiers@skynet.be>
+
+ * cli/cli-style.h (class cli_style_option): <add_setshow_commands>
+ Remove arg prefixname, add do_set and do_show.
+ Add member functions set_list and show_list.
+ * cli/cli-style.c (class cli_style_option): Update accordingly.
+ (style_set_list): Move to file scope.
+ (style_show_list): Likewise.
+ (set_style): Call help_list.
+ (show_style): Call cmd_show_list.
+ (_initialize_cli_style): New macro STYLE_ADD_SETSHOW_COMMANDS.
+ Update to use the new macro.
+
2019-10-12 Joel Brobecker <brobecker@adacore.com>
* ada-lang.c (_initialize_ada_language): Expand the help text
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index d9cb94d..234cc41 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -115,20 +115,6 @@ cli_style_option::style () const
/* See cli-style.h. */
void
-cli_style_option::do_set (const char *args, int from_tty)
-{
-}
-
-/* See cli-style.h. */
-
-void
-cli_style_option::do_show (const char *args, int from_tty)
-{
-}
-
-/* See cli-style.h. */
-
-void
cli_style_option::do_show_foreground (struct ui_file *file, int from_tty,
struct cmd_list_element *cmd,
const char *value)
@@ -168,12 +154,15 @@ void
cli_style_option::add_setshow_commands (const char *name,
enum command_class theclass,
const char *prefix_doc,
- const char *prefixname,
struct cmd_list_element **set_list,
- struct cmd_list_element **show_list)
+ void (*do_set) (const char *args,
+ int from_tty),
+ struct cmd_list_element **show_list,
+ void (*do_show) (const char *args,
+ int from_tty))
{
- m_set_prefix = std::string ("set ") + prefixname + " ";
- m_show_prefix = std::string ("show ") + prefixname + " ";
+ m_set_prefix = std::string ("set style ") + name + " ";
+ m_show_prefix = std::string ("show style ") + name + " ";
add_prefix_cmd (name, no_class, do_set, prefix_doc, &m_set_list,
m_set_prefix.c_str (), 0, set_list);
@@ -198,23 +187,29 @@ cli_style_option::add_setshow_commands (const char *name,
&m_set_list, &m_show_list, (void *) name);
add_setshow_enum_cmd ("intensity", theclass, cli_intensities,
&m_intensity,
- _("Set the display intensity color for this property"),
- _("\
-Show the display intensity color for this property"),
+ _("Set the display intensity for this property"),
+ _("Show the display intensity for this property"),
nullptr,
nullptr,
do_show_intensity,
&m_set_list, &m_show_list, (void *) name);
}
+static cmd_list_element *style_set_list;
+static cmd_list_element *style_show_list;
+
static void
set_style (const char *arg, int from_tty)
{
+ printf_unfiltered (_("\"set style\" must be followed "
+ "by an appropriate subcommand.\n"));
+ help_list (style_set_list, "set style ", all_commands, gdb_stdout);
}
static void
show_style (const char *arg, int from_tty)
{
+ cmd_show_list (style_show_list, from_tty, "");
}
static void
@@ -236,9 +231,6 @@ show_style_enabled (struct ui_file *file, int from_tty,
void
_initialize_cli_style ()
{
- static cmd_list_element *style_set_list;
- static cmd_list_element *style_show_list;
-
add_prefix_cmd ("style", no_class, set_style, _("\
Style-specific settings\n\
Configure various style-related variables, such as colors"),
@@ -255,32 +247,43 @@ If enabled, output to the terminal is styled."),
set_style_enabled, show_style_enabled,
&style_set_list, &style_show_list);
- file_name_style.add_setshow_commands ("filename", no_class,
- _("\
+#define STYLE_ADD_SETSHOW_COMMANDS(STYLE, NAME, PREFIX_DOC) \
+ STYLE.add_setshow_commands (NAME, no_class, PREFIX_DOC, \
+ &style_set_list, \
+ [] (const char *args, int from_tty) \
+ { \
+ help_list \
+ (STYLE.set_list (), \
+ "set style " NAME " ", \
+ all_commands, \
+ gdb_stdout); \
+ }, \
+ &style_show_list, \
+ [] (const char *args, int from_tty) \
+ { \
+ cmd_show_list \
+ (STYLE.show_list (), \
+ from_tty, \
+ ""); \
+ })
+
+ STYLE_ADD_SETSHOW_COMMANDS (file_name_style, "filename",
+ _("\
Filename display styling\n\
-Configure filename colors and display intensity."),
- "style filename",
- &style_set_list,
- &style_show_list);
- function_name_style.add_setshow_commands ("function", no_class,
- _("\
+Configure filename colors and display intensity."));
+
+ STYLE_ADD_SETSHOW_COMMANDS (function_name_style, "function",
+ _("\
Function name display styling\n\
-Configure function name colors and display intensity"),
- "style function",
- &style_set_list,
- &style_show_list);
- variable_name_style.add_setshow_commands ("variable", no_class,
- _("\
+Configure function name colors and display intensity"));
+
+ STYLE_ADD_SETSHOW_COMMANDS (variable_name_style, "variable",
+ _("\
Variable name display styling\n\
-Configure variable name colors and display intensity"),
- "style variable",
- &style_set_list,
- &style_show_list);
- address_style.add_setshow_commands ("address", no_class,
- _("\
+Configure variable name colors and display intensity"));
+
+ STYLE_ADD_SETSHOW_COMMANDS (address_style, "address",
+ _("\
Address display styling\n\
-Configure address colors and display intensity"),
- "style address",
- &style_set_list,
- &style_show_list);
+Configure address colors and display intensity"));
}
diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h
index 85df034..07830f9 100644
--- a/gdb/cli/cli-style.h
+++ b/gdb/cli/cli-style.h
@@ -38,9 +38,17 @@ public:
void add_setshow_commands (const char *name,
enum command_class theclass,
const char *prefix_doc,
- const char *prefixname,
struct cmd_list_element **set_list,
- struct cmd_list_element **show_list);
+ void (*do_set) (const char *args, int from_tty),
+ struct cmd_list_element **show_list,
+ void (*do_show) (const char *args, int from_tty));
+
+ /* Return the 'set style NAME' command list, that can be used
+ to build a lambda DO_SET to call add_setshow_commands. */
+ struct cmd_list_element *set_list () { return m_set_list; };
+
+ /* Same as SET_LIST but for the show command list. */
+ struct cmd_list_element *show_list () { return m_show_list; };
private:
@@ -59,10 +67,6 @@ private:
struct cmd_list_element *m_set_list = nullptr;
struct cmd_list_element *m_show_list = nullptr;
- /* Callback to set a value. */
- static void do_set (const char *args, int from_tty);
- /* Callback to show a value. */
- static void do_show (const char *args, int from_tty);
/* Callback to show the foreground. */
static void do_show_foreground (struct ui_file *file, int from_tty,
struct cmd_list_element *cmd,