]>
Commit | Line | Data |
---|---|---|
cbe56571 TT |
1 | /* CLI stylizing |
2 | ||
1d506c26 | 3 | Copyright (C) 2018-2024 Free Software Foundation, Inc. |
cbe56571 TT |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
1a5c2598 TT |
20 | #ifndef CLI_CLI_STYLE_H |
21 | #define CLI_CLI_STYLE_H | |
cbe56571 TT |
22 | |
23 | #include "ui-file.h" | |
0d12e84c | 24 | #include "command.h" |
a2a7af0c | 25 | #include "gdbsupport/observable.h" |
cbe56571 TT |
26 | |
27 | /* A single CLI style option. */ | |
28 | class cli_style_option | |
29 | { | |
30 | public: | |
31 | ||
32 | /* Construct a CLI style option with a foreground color. */ | |
9d2d8a16 AB |
33 | cli_style_option (const char *name, ui_file_style::basic_color fg, |
34 | ui_file_style::intensity = ui_file_style::NORMAL); | |
9303eb2f PW |
35 | |
36 | /* Construct a CLI style option with an intensity. */ | |
37 | cli_style_option (const char *name, ui_file_style::intensity i); | |
cbe56571 TT |
38 | |
39 | /* Return a ui_file_style corresponding to the settings in this CLI | |
40 | style. */ | |
41 | ui_file_style style () const; | |
42 | ||
9303eb2f PW |
43 | /* Return the style name. */ |
44 | const char *name () { return m_name; }; | |
45 | ||
4cbe4ca5 AB |
46 | /* Call once to register this CLI style with the CLI engine. Returns |
47 | the set/show prefix commands for the style. */ | |
48 | set_show_commands add_setshow_commands (enum command_class theclass, | |
49 | const char *prefix_doc, | |
50 | struct cmd_list_element **set_list, | |
51 | struct cmd_list_element **show_list, | |
52 | bool skip_intensity); | |
d73cff18 PW |
53 | |
54 | /* Return the 'set style NAME' command list, that can be used | |
55 | to build a lambda DO_SET to call add_setshow_commands. */ | |
56 | struct cmd_list_element *set_list () { return m_set_list; }; | |
57 | ||
58 | /* Same as SET_LIST but for the show command list. */ | |
59 | struct cmd_list_element *show_list () { return m_show_list; }; | |
cbe56571 | 60 | |
a2a7af0c TT |
61 | /* This style can be observed for any changes. */ |
62 | gdb::observers::observable<> changed; | |
63 | ||
cbe56571 TT |
64 | private: |
65 | ||
9303eb2f PW |
66 | /* The style name. */ |
67 | const char *m_name; | |
68 | ||
cbe56571 TT |
69 | /* The foreground. */ |
70 | const char *m_foreground; | |
71 | /* The background. */ | |
72 | const char *m_background; | |
73 | /* The intensity. */ | |
74 | const char *m_intensity; | |
75 | ||
cbe56571 TT |
76 | /* Storage for command lists needed when registering |
77 | subcommands. */ | |
78 | struct cmd_list_element *m_set_list = nullptr; | |
79 | struct cmd_list_element *m_show_list = nullptr; | |
80 | ||
a2a7af0c TT |
81 | /* Callback to notify the observable. */ |
82 | static void do_set_value (const char *ignore, int from_tty, | |
83 | struct cmd_list_element *cmd); | |
84 | ||
cbe56571 TT |
85 | /* Callback to show the foreground. */ |
86 | static void do_show_foreground (struct ui_file *file, int from_tty, | |
87 | struct cmd_list_element *cmd, | |
88 | const char *value); | |
89 | /* Callback to show the background. */ | |
90 | static void do_show_background (struct ui_file *file, int from_tty, | |
91 | struct cmd_list_element *cmd, | |
92 | const char *value); | |
93 | /* Callback to show the intensity. */ | |
94 | static void do_show_intensity (struct ui_file *file, int from_tty, | |
95 | struct cmd_list_element *cmd, | |
96 | const char *value); | |
97 | }; | |
98 | ||
1863e6a5 SM |
99 | /* Chains containing all defined "set/show style" subcommands. */ |
100 | extern struct cmd_list_element *style_set_list; | |
101 | extern struct cmd_list_element *style_show_list; | |
102 | ||
cbe56571 TT |
103 | /* The file name style. */ |
104 | extern cli_style_option file_name_style; | |
105 | ||
106 | /* The function name style. */ | |
107 | extern cli_style_option function_name_style; | |
108 | ||
80ae2043 TT |
109 | /* The variable name style. */ |
110 | extern cli_style_option variable_name_style; | |
111 | ||
35fb8261 TT |
112 | /* The address style. */ |
113 | extern cli_style_option address_style; | |
114 | ||
9303eb2f PW |
115 | /* The highlight style. */ |
116 | extern cli_style_option highlight_style; | |
117 | ||
118 | /* The title style. */ | |
119 | extern cli_style_option title_style; | |
120 | ||
7f6aba03 TT |
121 | /* The metadata style. */ |
122 | extern cli_style_option metadata_style; | |
9303eb2f | 123 | |
4cbe4ca5 AB |
124 | /* The disassembler style for mnemonics or assembler directives |
125 | (e.g. '.byte', etc). */ | |
126 | extern cli_style_option disasm_mnemonic_style; | |
127 | ||
128 | /* The disassembler style for register names. */ | |
129 | extern cli_style_option disasm_register_style; | |
130 | ||
131 | /* The disassembler style for numerical values that are not addresses, this | |
132 | includes immediate operands (e.g. in, an add instruction), but also | |
133 | address offsets (e.g. in a load instruction). */ | |
134 | extern cli_style_option disasm_immediate_style; | |
135 | ||
136 | /* The disassembler style for comments. */ | |
137 | extern cli_style_option disasm_comment_style; | |
138 | ||
a2a7af0c TT |
139 | /* The border style of a TUI window that does not have the focus. */ |
140 | extern cli_style_option tui_border_style; | |
141 | ||
142 | /* The border style of a TUI window that does have the focus. */ | |
143 | extern cli_style_option tui_active_border_style; | |
144 | ||
9d2d8a16 AB |
145 | /* The style to use for the GDB version string. */ |
146 | extern cli_style_option version_style; | |
147 | ||
d085f989 | 148 | /* True if source styling is enabled. */ |
491144b5 | 149 | extern bool source_styling; |
d085f989 | 150 | |
e867795e AB |
151 | /* True if disassembler styling is enabled. */ |
152 | extern bool disassembler_styling; | |
153 | ||
cbe56571 | 154 | /* True if styling is enabled. */ |
491144b5 | 155 | extern bool cli_styling; |
cbe56571 | 156 | |
1a5c2598 | 157 | #endif /* CLI_CLI_STYLE_H */ |