Home | History | Annotate | Line # | Download | only in cli
      1      1.1  christos /* CLI colorizing
      2      1.1  christos 
      3  1.1.1.4  christos    Copyright (C) 2018-2024 Free Software Foundation, Inc.
      4      1.1  christos 
      5      1.1  christos    This file is part of GDB.
      6      1.1  christos 
      7      1.1  christos    This program is free software; you can redistribute it and/or modify
      8      1.1  christos    it under the terms of the GNU General Public License as published by
      9      1.1  christos    the Free Software Foundation; either version 3 of the License, or
     10      1.1  christos    (at your option) any later version.
     11      1.1  christos 
     12      1.1  christos    This program is distributed in the hope that it will be useful,
     13      1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14      1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15      1.1  christos    GNU General Public License for more details.
     16      1.1  christos 
     17      1.1  christos    You should have received a copy of the GNU General Public License
     18      1.1  christos    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19      1.1  christos 
     20      1.1  christos #include "cli/cli-cmds.h"
     21  1.1.1.3  christos #include "cli/cli-decode.h"
     22  1.1.1.3  christos #include "cli/cli-setshow.h"
     23      1.1  christos #include "cli/cli-style.h"
     24      1.1  christos #include "source-cache.h"
     25      1.1  christos #include "observable.h"
     26      1.1  christos 
     27      1.1  christos /* True if styling is enabled.  */
     28      1.1  christos 
     29  1.1.1.2  christos #if defined (__MSDOS__)
     30  1.1.1.2  christos bool cli_styling = false;
     31      1.1  christos #else
     32  1.1.1.2  christos bool cli_styling = true;
     33      1.1  christos #endif
     34      1.1  christos 
     35      1.1  christos /* True if source styling is enabled.  Note that this is only
     36      1.1  christos    consulted when cli_styling is true.  */
     37      1.1  christos 
     38  1.1.1.2  christos bool source_styling = true;
     39      1.1  christos 
     40  1.1.1.3  christos /* True if disassembler styling is enabled.  Note that this is only
     41  1.1.1.3  christos    consulted when cli_styling is true.  */
     42  1.1.1.3  christos 
     43  1.1.1.3  christos bool disassembler_styling = true;
     44  1.1.1.3  christos 
     45      1.1  christos /* Name of colors; must correspond to ui_file_style::basic_color.  */
     46      1.1  christos static const char * const cli_colors[] = {
     47      1.1  christos   "none",
     48      1.1  christos   "black",
     49      1.1  christos   "red",
     50      1.1  christos   "green",
     51      1.1  christos   "yellow",
     52      1.1  christos   "blue",
     53      1.1  christos   "magenta",
     54      1.1  christos   "cyan",
     55      1.1  christos   "white",
     56      1.1  christos   nullptr
     57      1.1  christos };
     58      1.1  christos 
     59      1.1  christos /* Names of intensities; must correspond to
     60      1.1  christos    ui_file_style::intensity.  */
     61      1.1  christos static const char * const cli_intensities[] = {
     62      1.1  christos   "normal",
     63      1.1  christos   "bold",
     64      1.1  christos   "dim",
     65      1.1  christos   nullptr
     66      1.1  christos };
     67      1.1  christos 
     68      1.1  christos /* See cli-style.h.  */
     69      1.1  christos 
     70  1.1.1.2  christos cli_style_option file_name_style ("filename", ui_file_style::GREEN);
     71      1.1  christos 
     72      1.1  christos /* See cli-style.h.  */
     73      1.1  christos 
     74  1.1.1.2  christos cli_style_option function_name_style ("function", ui_file_style::YELLOW);
     75      1.1  christos 
     76      1.1  christos /* See cli-style.h.  */
     77      1.1  christos 
     78  1.1.1.2  christos cli_style_option variable_name_style ("variable", ui_file_style::CYAN);
     79      1.1  christos 
     80      1.1  christos /* See cli-style.h.  */
     81      1.1  christos 
     82  1.1.1.2  christos cli_style_option address_style ("address", ui_file_style::BLUE);
     83      1.1  christos 
     84      1.1  christos /* See cli-style.h.  */
     85      1.1  christos 
     86  1.1.1.2  christos cli_style_option highlight_style ("highlight", ui_file_style::RED);
     87  1.1.1.2  christos 
     88  1.1.1.2  christos /* See cli-style.h.  */
     89  1.1.1.2  christos 
     90  1.1.1.2  christos cli_style_option title_style ("title", ui_file_style::BOLD);
     91  1.1.1.2  christos 
     92  1.1.1.2  christos /* See cli-style.h.  */
     93  1.1.1.2  christos 
     94  1.1.1.5  christos cli_style_option command_style ("command", ui_file_style::BOLD);
     95  1.1.1.5  christos 
     96  1.1.1.5  christos /* See cli-style.h.  */
     97  1.1.1.5  christos 
     98  1.1.1.2  christos cli_style_option tui_border_style ("tui-border", ui_file_style::CYAN);
     99  1.1.1.2  christos 
    100  1.1.1.2  christos /* See cli-style.h.  */
    101  1.1.1.2  christos 
    102  1.1.1.2  christos cli_style_option tui_active_border_style ("tui-active-border",
    103  1.1.1.2  christos 					  ui_file_style::CYAN);
    104  1.1.1.2  christos 
    105  1.1.1.2  christos /* See cli-style.h.  */
    106  1.1.1.2  christos 
    107  1.1.1.2  christos cli_style_option metadata_style ("metadata", ui_file_style::DIM);
    108  1.1.1.2  christos 
    109  1.1.1.2  christos /* See cli-style.h.  */
    110  1.1.1.2  christos 
    111  1.1.1.3  christos cli_style_option version_style ("version", ui_file_style::MAGENTA,
    112  1.1.1.3  christos 				ui_file_style::BOLD);
    113  1.1.1.3  christos 
    114  1.1.1.3  christos /* See cli-style.h.  */
    115  1.1.1.3  christos 
    116  1.1.1.3  christos cli_style_option disasm_mnemonic_style ("mnemonic", ui_file_style::GREEN);
    117  1.1.1.3  christos 
    118  1.1.1.3  christos /* See cli-style.h.  */
    119  1.1.1.3  christos 
    120  1.1.1.3  christos cli_style_option disasm_register_style ("register", ui_file_style::RED);
    121  1.1.1.3  christos 
    122  1.1.1.3  christos /* See cli-style.h.  */
    123  1.1.1.3  christos 
    124  1.1.1.3  christos cli_style_option disasm_immediate_style ("immediate", ui_file_style::BLUE);
    125  1.1.1.3  christos 
    126  1.1.1.3  christos /* See cli-style.h.  */
    127  1.1.1.3  christos 
    128  1.1.1.3  christos cli_style_option disasm_comment_style ("comment", ui_file_style::WHITE,
    129  1.1.1.3  christos 				       ui_file_style::DIM);
    130  1.1.1.3  christos 
    131  1.1.1.3  christos /* See cli-style.h.  */
    132  1.1.1.3  christos 
    133  1.1.1.5  christos cli_style_option line_number_style ("line-number", ui_file_style::DIM);
    134  1.1.1.5  christos 
    135  1.1.1.5  christos /* See cli-style.h.  */
    136  1.1.1.5  christos 
    137  1.1.1.2  christos cli_style_option::cli_style_option (const char *name,
    138  1.1.1.3  christos 				    ui_file_style::basic_color fg,
    139  1.1.1.3  christos 				    ui_file_style::intensity intensity)
    140  1.1.1.2  christos   : changed (name),
    141  1.1.1.2  christos     m_name (name),
    142  1.1.1.2  christos     m_foreground (cli_colors[fg - ui_file_style::NONE]),
    143      1.1  christos     m_background (cli_colors[0]),
    144  1.1.1.3  christos     m_intensity (cli_intensities[intensity])
    145      1.1  christos {
    146      1.1  christos }
    147      1.1  christos 
    148  1.1.1.2  christos /* See cli-style.h.  */
    149  1.1.1.2  christos 
    150  1.1.1.2  christos cli_style_option::cli_style_option (const char *name,
    151  1.1.1.2  christos 				    ui_file_style::intensity i)
    152  1.1.1.2  christos   : changed (name),
    153  1.1.1.2  christos     m_name (name),
    154  1.1.1.2  christos     m_foreground (cli_colors[0]),
    155  1.1.1.2  christos     m_background (cli_colors[0]),
    156  1.1.1.2  christos     m_intensity (cli_intensities[i])
    157  1.1.1.2  christos {
    158  1.1.1.2  christos }
    159  1.1.1.2  christos 
    160      1.1  christos /* Return the color number corresponding to COLOR.  */
    161      1.1  christos 
    162      1.1  christos static int
    163      1.1  christos color_number (const char *color)
    164      1.1  christos {
    165      1.1  christos   for (int i = 0; i < ARRAY_SIZE (cli_colors); ++i)
    166      1.1  christos     {
    167      1.1  christos       if (color == cli_colors[i])
    168      1.1  christos 	return i - 1;
    169      1.1  christos     }
    170      1.1  christos   gdb_assert_not_reached ("color not found");
    171      1.1  christos }
    172      1.1  christos 
    173      1.1  christos /* See cli-style.h.  */
    174      1.1  christos 
    175      1.1  christos ui_file_style
    176      1.1  christos cli_style_option::style () const
    177      1.1  christos {
    178      1.1  christos   int fg = color_number (m_foreground);
    179      1.1  christos   int bg = color_number (m_background);
    180      1.1  christos   ui_file_style::intensity intensity = ui_file_style::NORMAL;
    181      1.1  christos 
    182      1.1  christos   for (int i = 0; i < ARRAY_SIZE (cli_intensities); ++i)
    183      1.1  christos     {
    184      1.1  christos       if (m_intensity == cli_intensities[i])
    185      1.1  christos 	{
    186      1.1  christos 	  intensity = (ui_file_style::intensity) i;
    187      1.1  christos 	  break;
    188      1.1  christos 	}
    189      1.1  christos     }
    190      1.1  christos 
    191      1.1  christos   return ui_file_style (fg, bg, intensity);
    192      1.1  christos }
    193      1.1  christos 
    194      1.1  christos /* See cli-style.h.  */
    195      1.1  christos 
    196      1.1  christos void
    197  1.1.1.2  christos cli_style_option::do_set_value (const char *ignore, int from_tty,
    198  1.1.1.2  christos 				struct cmd_list_element *cmd)
    199  1.1.1.2  christos {
    200  1.1.1.3  christos   cli_style_option *cso = (cli_style_option *) cmd->context ();
    201  1.1.1.2  christos   cso->changed.notify ();
    202  1.1.1.2  christos }
    203  1.1.1.2  christos 
    204  1.1.1.2  christos /* Implements the cli_style_option::do_show_* functions.
    205  1.1.1.2  christos    WHAT and VALUE are the property and value to show.
    206  1.1.1.2  christos    The style for which WHAT is shown is retrieved from CMD context.  */
    207  1.1.1.2  christos 
    208  1.1.1.2  christos static void
    209  1.1.1.2  christos do_show (const char *what, struct ui_file *file,
    210  1.1.1.2  christos 	 struct cmd_list_element *cmd,
    211  1.1.1.2  christos 	 const char *value)
    212  1.1.1.2  christos {
    213  1.1.1.3  christos   cli_style_option *cso = (cli_style_option *) cmd->context ();
    214  1.1.1.3  christos   gdb_puts (_("The "), file);
    215  1.1.1.2  christos   fprintf_styled (file, cso->style (), _("\"%s\" style"), cso->name ());
    216  1.1.1.3  christos   gdb_printf (file, _(" %s is: %s\n"), what, value);
    217  1.1.1.2  christos }
    218  1.1.1.2  christos 
    219  1.1.1.2  christos /* See cli-style.h.  */
    220  1.1.1.2  christos 
    221  1.1.1.2  christos void
    222      1.1  christos cli_style_option::do_show_foreground (struct ui_file *file, int from_tty,
    223      1.1  christos 				      struct cmd_list_element *cmd,
    224      1.1  christos 				      const char *value)
    225      1.1  christos {
    226  1.1.1.2  christos   do_show (_("foreground color"), file, cmd, value);
    227      1.1  christos }
    228      1.1  christos 
    229      1.1  christos /* See cli-style.h.  */
    230      1.1  christos 
    231      1.1  christos void
    232      1.1  christos cli_style_option::do_show_background (struct ui_file *file, int from_tty,
    233      1.1  christos 				      struct cmd_list_element *cmd,
    234      1.1  christos 				      const char *value)
    235      1.1  christos {
    236  1.1.1.2  christos   do_show (_("background color"), file, cmd, value);
    237      1.1  christos }
    238      1.1  christos 
    239      1.1  christos /* See cli-style.h.  */
    240      1.1  christos 
    241      1.1  christos void
    242      1.1  christos cli_style_option::do_show_intensity (struct ui_file *file, int from_tty,
    243      1.1  christos 				     struct cmd_list_element *cmd,
    244      1.1  christos 				     const char *value)
    245      1.1  christos {
    246  1.1.1.2  christos   do_show (_("display intensity"), file, cmd, value);
    247      1.1  christos }
    248      1.1  christos 
    249      1.1  christos /* See cli-style.h.  */
    250      1.1  christos 
    251  1.1.1.3  christos set_show_commands
    252  1.1.1.2  christos cli_style_option::add_setshow_commands (enum command_class theclass,
    253      1.1  christos 					const char *prefix_doc,
    254      1.1  christos 					struct cmd_list_element **set_list,
    255      1.1  christos 					struct cmd_list_element **show_list,
    256  1.1.1.2  christos 					bool skip_intensity)
    257      1.1  christos {
    258  1.1.1.3  christos   set_show_commands prefix_cmds
    259  1.1.1.3  christos     = add_setshow_prefix_cmd (m_name, theclass, prefix_doc, prefix_doc,
    260  1.1.1.3  christos 			      &m_set_list, &m_show_list, set_list, show_list);
    261  1.1.1.3  christos 
    262  1.1.1.3  christos   set_show_commands commands;
    263  1.1.1.3  christos 
    264  1.1.1.3  christos   commands = add_setshow_enum_cmd
    265  1.1.1.3  christos     ("foreground", theclass, cli_colors,
    266  1.1.1.3  christos      &m_foreground,
    267  1.1.1.3  christos      _("Set the foreground color for this property."),
    268  1.1.1.3  christos      _("Show the foreground color for this property."),
    269  1.1.1.3  christos      nullptr,
    270  1.1.1.3  christos      do_set_value,
    271  1.1.1.3  christos      do_show_foreground,
    272  1.1.1.3  christos      &m_set_list, &m_show_list);
    273  1.1.1.3  christos   commands.set->set_context (this);
    274  1.1.1.3  christos   commands.show->set_context (this);
    275  1.1.1.3  christos 
    276  1.1.1.3  christos   commands = add_setshow_enum_cmd
    277  1.1.1.3  christos     ("background", theclass, cli_colors,
    278  1.1.1.3  christos      &m_background,
    279  1.1.1.3  christos      _("Set the background color for this property."),
    280  1.1.1.3  christos      _("Show the background color for this property."),
    281  1.1.1.3  christos      nullptr,
    282  1.1.1.3  christos      do_set_value,
    283  1.1.1.3  christos      do_show_background,
    284  1.1.1.3  christos      &m_set_list, &m_show_list);
    285  1.1.1.3  christos   commands.set->set_context (this);
    286  1.1.1.3  christos   commands.show->set_context (this);
    287      1.1  christos 
    288  1.1.1.2  christos   if (!skip_intensity)
    289  1.1.1.3  christos     {
    290  1.1.1.3  christos       commands = add_setshow_enum_cmd
    291  1.1.1.3  christos 	("intensity", theclass, cli_intensities,
    292  1.1.1.3  christos 	 &m_intensity,
    293  1.1.1.3  christos 	 _("Set the display intensity for this property."),
    294  1.1.1.3  christos 	 _("Show the display intensity for this property."),
    295  1.1.1.3  christos 	 nullptr,
    296  1.1.1.3  christos 	 do_set_value,
    297  1.1.1.3  christos 	 do_show_intensity,
    298  1.1.1.3  christos 	 &m_set_list, &m_show_list);
    299  1.1.1.3  christos       commands.set->set_context (this);
    300  1.1.1.3  christos       commands.show->set_context (this);
    301  1.1.1.3  christos     }
    302  1.1.1.3  christos 
    303  1.1.1.3  christos   return prefix_cmds;
    304      1.1  christos }
    305      1.1  christos 
    306  1.1.1.3  christos cmd_list_element *style_set_list;
    307  1.1.1.3  christos cmd_list_element *style_show_list;
    308  1.1.1.3  christos 
    309  1.1.1.3  christos /* The command list for 'set style disassembler'.  */
    310  1.1.1.3  christos 
    311  1.1.1.3  christos static cmd_list_element *style_disasm_set_list;
    312  1.1.1.3  christos 
    313  1.1.1.3  christos /* The command list for 'show style disassembler'.  */
    314  1.1.1.3  christos 
    315  1.1.1.3  christos static cmd_list_element *style_disasm_show_list;
    316      1.1  christos 
    317      1.1  christos static void
    318      1.1  christos set_style_enabled  (const char *args, int from_tty, struct cmd_list_element *c)
    319      1.1  christos {
    320      1.1  christos   g_source_cache.clear ();
    321  1.1.1.3  christos   gdb::observers::styling_changed.notify ();
    322      1.1  christos }
    323      1.1  christos 
    324      1.1  christos static void
    325      1.1  christos show_style_enabled (struct ui_file *file, int from_tty,
    326      1.1  christos 		    struct cmd_list_element *c, const char *value)
    327      1.1  christos {
    328      1.1  christos   if (cli_styling)
    329  1.1.1.3  christos     gdb_printf (file, _("CLI output styling is enabled.\n"));
    330      1.1  christos   else
    331  1.1.1.3  christos     gdb_printf (file, _("CLI output styling is disabled.\n"));
    332      1.1  christos }
    333      1.1  christos 
    334      1.1  christos static void
    335      1.1  christos show_style_sources (struct ui_file *file, int from_tty,
    336      1.1  christos 		    struct cmd_list_element *c, const char *value)
    337      1.1  christos {
    338      1.1  christos   if (source_styling)
    339  1.1.1.3  christos     gdb_printf (file, _("Source code styling is enabled.\n"));
    340      1.1  christos   else
    341  1.1.1.3  christos     gdb_printf (file, _("Source code styling is disabled.\n"));
    342  1.1.1.3  christos }
    343  1.1.1.3  christos 
    344  1.1.1.3  christos /* Implement 'show style disassembler'.  */
    345  1.1.1.3  christos 
    346  1.1.1.3  christos static void
    347  1.1.1.3  christos show_style_disassembler (struct ui_file *file, int from_tty,
    348  1.1.1.3  christos 			 struct cmd_list_element *c, const char *value)
    349  1.1.1.3  christos {
    350  1.1.1.3  christos   if (disassembler_styling)
    351  1.1.1.3  christos     gdb_printf (file, _("Disassembler output styling is enabled.\n"));
    352  1.1.1.3  christos   else
    353  1.1.1.3  christos     gdb_printf (file, _("Disassembler output styling is disabled.\n"));
    354      1.1  christos }
    355      1.1  christos 
    356  1.1.1.2  christos void _initialize_cli_style ();
    357      1.1  christos void
    358      1.1  christos _initialize_cli_style ()
    359      1.1  christos {
    360  1.1.1.3  christos   add_setshow_prefix_cmd ("style", no_class,
    361  1.1.1.3  christos 			  _("\
    362  1.1.1.2  christos Style-specific settings.\n\
    363      1.1  christos Configure various style-related variables, such as colors"),
    364  1.1.1.3  christos 			  _("\
    365  1.1.1.2  christos Style-specific settings.\n\
    366      1.1  christos Configure various style-related variables, such as colors"),
    367  1.1.1.3  christos 			  &style_set_list, &style_show_list,
    368  1.1.1.3  christos 			  &setlist, &showlist);
    369      1.1  christos 
    370      1.1  christos   add_setshow_boolean_cmd ("enabled", no_class, &cli_styling, _("\
    371      1.1  christos Set whether CLI styling is enabled."), _("\
    372      1.1  christos Show whether CLI is enabled."), _("\
    373      1.1  christos If enabled, output to the terminal is styled."),
    374      1.1  christos 			   set_style_enabled, show_style_enabled,
    375      1.1  christos 			   &style_set_list, &style_show_list);
    376      1.1  christos 
    377      1.1  christos   add_setshow_boolean_cmd ("sources", no_class, &source_styling, _("\
    378      1.1  christos Set whether source code styling is enabled."), _("\
    379      1.1  christos Show whether source code styling is enabled."), _("\
    380      1.1  christos If enabled, source code is styled.\n"
    381      1.1  christos #ifdef HAVE_SOURCE_HIGHLIGHT
    382      1.1  christos "Note that source styling only works if styling in general is enabled,\n\
    383      1.1  christos see \"show style enabled\"."
    384      1.1  christos #else
    385  1.1.1.2  christos "Source highlighting may be disabled in this installation of gdb, because\n\
    386  1.1.1.2  christos it was not linked against GNU Source Highlight.  However, it might still be\n\
    387  1.1.1.2  christos available if the appropriate extension is available at runtime."
    388      1.1  christos #endif
    389      1.1  christos 			   ), set_style_enabled, show_style_sources,
    390      1.1  christos 			   &style_set_list, &style_show_list);
    391      1.1  christos 
    392  1.1.1.3  christos   add_setshow_prefix_cmd ("disassembler", no_class,
    393  1.1.1.3  christos 			  _("\
    394  1.1.1.3  christos Style-specific settings for the disassembler.\n\
    395  1.1.1.3  christos Configure various disassembler style-related variables."),
    396  1.1.1.3  christos 			  _("\
    397  1.1.1.3  christos Style-specific settings for the disassembler.\n\
    398  1.1.1.3  christos Configure various disassembler style-related variables."),
    399  1.1.1.3  christos 			  &style_disasm_set_list, &style_disasm_show_list,
    400  1.1.1.3  christos 			  &style_set_list, &style_show_list);
    401  1.1.1.3  christos 
    402  1.1.1.3  christos   add_setshow_boolean_cmd ("enabled", no_class, &disassembler_styling, _("\
    403  1.1.1.3  christos Set whether disassembler output styling is enabled."), _("\
    404  1.1.1.3  christos Show whether disassembler output styling is enabled."), _("\
    405  1.1.1.3  christos If enabled, disassembler output is styled.  Disassembler highlighting\n\
    406  1.1.1.3  christos requires the Python Pygments library, if this library is not available\n\
    407  1.1.1.3  christos then disassembler highlighting will not be possible."
    408  1.1.1.3  christos 			   ), set_style_enabled, show_style_disassembler,
    409  1.1.1.3  christos 			   &style_disasm_set_list, &style_disasm_show_list);
    410  1.1.1.3  christos 
    411  1.1.1.2  christos   file_name_style.add_setshow_commands (no_class, _("\
    412  1.1.1.2  christos Filename display styling.\n\
    413  1.1.1.2  christos Configure filename colors and display intensity."),
    414  1.1.1.2  christos 					&style_set_list, &style_show_list,
    415  1.1.1.2  christos 					false);
    416  1.1.1.2  christos 
    417  1.1.1.3  christos   set_show_commands function_prefix_cmds
    418  1.1.1.3  christos     = function_name_style.add_setshow_commands (no_class, _("\
    419  1.1.1.2  christos Function name display styling.\n\
    420  1.1.1.2  christos Configure function name colors and display intensity"),
    421  1.1.1.3  christos 						&style_set_list,
    422  1.1.1.3  christos 						&style_show_list,
    423  1.1.1.3  christos 						false);
    424  1.1.1.2  christos 
    425  1.1.1.2  christos   variable_name_style.add_setshow_commands (no_class, _("\
    426  1.1.1.2  christos Variable name display styling.\n\
    427  1.1.1.2  christos Configure variable name colors and display intensity"),
    428  1.1.1.2  christos 					    &style_set_list, &style_show_list,
    429  1.1.1.2  christos 					    false);
    430  1.1.1.2  christos 
    431  1.1.1.3  christos   set_show_commands address_prefix_cmds
    432  1.1.1.3  christos     = address_style.add_setshow_commands (no_class, _("\
    433  1.1.1.2  christos Address display styling.\n\
    434  1.1.1.2  christos Configure address colors and display intensity"),
    435  1.1.1.3  christos 					  &style_set_list, &style_show_list,
    436  1.1.1.3  christos 					  false);
    437  1.1.1.2  christos 
    438  1.1.1.2  christos   title_style.add_setshow_commands (no_class, _("\
    439  1.1.1.2  christos Title display styling.\n\
    440  1.1.1.2  christos Configure title colors and display intensity\n\
    441  1.1.1.2  christos Some commands (such as \"apropos -v REGEXP\") use the title style to improve\n\
    442  1.1.1.2  christos readability."),
    443  1.1.1.2  christos 				    &style_set_list, &style_show_list,
    444  1.1.1.2  christos 				    false);
    445  1.1.1.2  christos 
    446  1.1.1.5  christos   command_style.add_setshow_commands (no_class, _("\
    447  1.1.1.5  christos Command display styling.\n\
    448  1.1.1.5  christos Configure the colors and display intensity for GDB commands mentioned\n\
    449  1.1.1.5  christos in the output."),
    450  1.1.1.5  christos 				      &style_set_list, &style_show_list,
    451  1.1.1.5  christos 				      false);
    452  1.1.1.5  christos 
    453  1.1.1.2  christos   highlight_style.add_setshow_commands (no_class, _("\
    454  1.1.1.2  christos Highlight display styling.\n\
    455  1.1.1.2  christos Configure highlight colors and display intensity\n\
    456  1.1.1.2  christos Some commands use the highlight style to draw the attention to a part\n\
    457  1.1.1.2  christos of their output."),
    458  1.1.1.2  christos 					&style_set_list, &style_show_list,
    459  1.1.1.2  christos 					false);
    460  1.1.1.2  christos 
    461  1.1.1.2  christos   metadata_style.add_setshow_commands (no_class, _("\
    462  1.1.1.2  christos Metadata display styling.\n\
    463  1.1.1.2  christos Configure metadata colors and display intensity\n\
    464  1.1.1.2  christos The \"metadata\" style is used when GDB displays information about\n\
    465  1.1.1.2  christos your data, for example \"<unavailable>\""),
    466  1.1.1.2  christos 				       &style_set_list, &style_show_list,
    467  1.1.1.2  christos 				       false);
    468  1.1.1.2  christos 
    469  1.1.1.2  christos   tui_border_style.add_setshow_commands (no_class, _("\
    470  1.1.1.2  christos TUI border display styling.\n\
    471  1.1.1.2  christos Configure TUI border colors\n\
    472  1.1.1.2  christos The \"tui-border\" style is used when GDB displays the border of a\n\
    473  1.1.1.2  christos TUI window that does not have the focus."),
    474  1.1.1.2  christos 					 &style_set_list, &style_show_list,
    475  1.1.1.2  christos 					 true);
    476  1.1.1.2  christos 
    477  1.1.1.2  christos   tui_active_border_style.add_setshow_commands (no_class, _("\
    478  1.1.1.2  christos TUI active border display styling.\n\
    479  1.1.1.2  christos Configure TUI active border colors\n\
    480  1.1.1.2  christos The \"tui-active-border\" style is used when GDB displays the border of a\n\
    481  1.1.1.2  christos TUI window that does have the focus."),
    482  1.1.1.2  christos 						&style_set_list,
    483  1.1.1.2  christos 						&style_show_list,
    484  1.1.1.2  christos 						true);
    485  1.1.1.3  christos 
    486  1.1.1.3  christos   version_style.add_setshow_commands (no_class, _("\
    487  1.1.1.3  christos Version string display styling.\n\
    488  1.1.1.3  christos Configure colors used to display the GDB version string."),
    489  1.1.1.3  christos 				      &style_set_list, &style_show_list,
    490  1.1.1.3  christos 				      false);
    491  1.1.1.3  christos 
    492  1.1.1.3  christos   disasm_mnemonic_style.add_setshow_commands (no_class, _("\
    493  1.1.1.3  christos Disassembler mnemonic display styling.\n\
    494  1.1.1.3  christos Configure the colors and display intensity for instruction mnemonics\n\
    495  1.1.1.3  christos in the disassembler output.  The \"disassembler mnemonic\" style is\n\
    496  1.1.1.3  christos used to display instruction mnemonics as well as any assembler\n\
    497  1.1.1.3  christos directives, e.g. \".byte\", \".word\", etc.\n\
    498  1.1.1.3  christos \n\
    499  1.1.1.3  christos This style will only be used for targets that support libopcodes based\n\
    500  1.1.1.3  christos disassembler styling.  When Python Pygments based styling is used\n\
    501  1.1.1.3  christos then this style has no effect."),
    502  1.1.1.3  christos 					      &style_disasm_set_list,
    503  1.1.1.3  christos 					      &style_disasm_show_list,
    504  1.1.1.3  christos 					      false);
    505  1.1.1.3  christos 
    506  1.1.1.3  christos   disasm_register_style.add_setshow_commands (no_class, _("\
    507  1.1.1.3  christos Disassembler register display styling.\n\
    508  1.1.1.3  christos Configure the colors and display intensity for registers in the\n\
    509  1.1.1.3  christos disassembler output.\n\
    510  1.1.1.3  christos \n\
    511  1.1.1.3  christos This style will only be used for targets that support libopcodes based\n\
    512  1.1.1.3  christos disassembler styling.  When Python Pygments based styling is used\n\
    513  1.1.1.3  christos then this style has no effect."),
    514  1.1.1.3  christos 					      &style_disasm_set_list,
    515  1.1.1.3  christos 					      &style_disasm_show_list,
    516  1.1.1.3  christos 					      false);
    517  1.1.1.3  christos 
    518  1.1.1.3  christos   disasm_immediate_style.add_setshow_commands (no_class, _("\
    519  1.1.1.3  christos Disassembler immediate display styling.\n\
    520  1.1.1.3  christos Configure the colors and display intensity for immediates in the\n\
    521  1.1.1.3  christos disassembler output.  The \"disassembler immediate\" style is used for\n\
    522  1.1.1.3  christos any number that is not an address, this includes constants in arithmetic\n\
    523  1.1.1.3  christos instructions, as well as address offsets in memory access instructions.\n\
    524  1.1.1.3  christos \n\
    525  1.1.1.3  christos This style will only be used for targets that support libopcodes based\n\
    526  1.1.1.3  christos disassembler styling.  When Python Pygments based styling is used\n\
    527  1.1.1.3  christos then this style has no effect."),
    528  1.1.1.3  christos 					       &style_disasm_set_list,
    529  1.1.1.3  christos 					       &style_disasm_show_list,
    530  1.1.1.3  christos 					       false);
    531  1.1.1.3  christos 
    532  1.1.1.3  christos   disasm_comment_style.add_setshow_commands (no_class, _("\
    533  1.1.1.3  christos Disassembler comment display styling.\n\
    534  1.1.1.3  christos Configure the colors and display intensity for comments in the\n\
    535  1.1.1.3  christos disassembler output.  The \"disassembler comment\" style is used for\n\
    536  1.1.1.3  christos the comment character, and everything after the comment character up to\n\
    537  1.1.1.3  christos the end of the line.  The comment style overrides any other styling,\n\
    538  1.1.1.3  christos e.g. a register name in a comment will use the comment styling.\n\
    539  1.1.1.3  christos \n\
    540  1.1.1.3  christos This style will only be used for targets that support libopcodes based\n\
    541  1.1.1.3  christos disassembler styling.  When Python Pygments based styling is used\n\
    542  1.1.1.3  christos then this style has no effect."),
    543  1.1.1.3  christos 					     &style_disasm_set_list,
    544  1.1.1.3  christos 					     &style_disasm_show_list,
    545  1.1.1.3  christos 					     false);
    546  1.1.1.3  christos 
    547  1.1.1.5  christos   line_number_style.add_setshow_commands (no_class, _("\
    548  1.1.1.5  christos Line number display styling.\n\
    549  1.1.1.5  christos Configure colors and display intensity for line numbers\n\
    550  1.1.1.5  christos The \"line-number\" style is used when GDB displays line numbers\n\
    551  1.1.1.5  christos coming from your source code."),
    552  1.1.1.5  christos 				       &style_set_list, &style_show_list,
    553  1.1.1.5  christos 				       false);
    554  1.1.1.5  christos 
    555  1.1.1.3  christos   /* Setup 'disassembler address' style and 'disassembler symbol' style,
    556  1.1.1.3  christos      these are aliases for 'address' and 'function' styles respectively.  */
    557  1.1.1.3  christos   add_alias_cmd ("address", address_prefix_cmds.set, no_class, 0,
    558  1.1.1.3  christos 		 &style_disasm_set_list);
    559  1.1.1.3  christos   add_alias_cmd ("address", address_prefix_cmds.show, no_class, 0,
    560  1.1.1.3  christos 		 &style_disasm_show_list);
    561  1.1.1.3  christos   add_alias_cmd ("symbol", function_prefix_cmds.set, no_class, 0,
    562  1.1.1.3  christos 		 &style_disasm_set_list);
    563  1.1.1.3  christos   add_alias_cmd ("symbol", function_prefix_cmds.show, no_class, 0,
    564  1.1.1.3  christos 		 &style_disasm_show_list);
    565      1.1  christos }
    566