]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/cli/cli-style.h
gdb: move style_set_list/style_show_list declarations to cli/cli-style.h
[thirdparty/binutils-gdb.git] / gdb / cli / cli-style.h
CommitLineData
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. */
28class cli_style_option
29{
30public:
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
64private:
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. */
100extern struct cmd_list_element *style_set_list;
101extern struct cmd_list_element *style_show_list;
102
cbe56571
TT
103/* The file name style. */
104extern cli_style_option file_name_style;
105
106/* The function name style. */
107extern cli_style_option function_name_style;
108
80ae2043
TT
109/* The variable name style. */
110extern cli_style_option variable_name_style;
111
35fb8261
TT
112/* The address style. */
113extern cli_style_option address_style;
114
9303eb2f
PW
115/* The highlight style. */
116extern cli_style_option highlight_style;
117
118/* The title style. */
119extern cli_style_option title_style;
120
7f6aba03
TT
121/* The metadata style. */
122extern cli_style_option metadata_style;
9303eb2f 123
4cbe4ca5
AB
124/* The disassembler style for mnemonics or assembler directives
125 (e.g. '.byte', etc). */
126extern cli_style_option disasm_mnemonic_style;
127
128/* The disassembler style for register names. */
129extern 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). */
134extern cli_style_option disasm_immediate_style;
135
136/* The disassembler style for comments. */
137extern cli_style_option disasm_comment_style;
138
a2a7af0c
TT
139/* The border style of a TUI window that does not have the focus. */
140extern cli_style_option tui_border_style;
141
142/* The border style of a TUI window that does have the focus. */
143extern cli_style_option tui_active_border_style;
144
9d2d8a16
AB
145/* The style to use for the GDB version string. */
146extern cli_style_option version_style;
147
d085f989 148/* True if source styling is enabled. */
491144b5 149extern bool source_styling;
d085f989 150
e867795e
AB
151/* True if disassembler styling is enabled. */
152extern bool disassembler_styling;
153
cbe56571 154/* True if styling is enabled. */
491144b5 155extern bool cli_styling;
cbe56571 156
1a5c2598 157#endif /* CLI_CLI_STYLE_H */