[Lldb-commits] [lldb] 4a8e4b5 - [lldb][gui] use names for color pairs, instead of magic numbers
Luboš Luňák via lldb-commits
lldb-commits at lists.llvm.org
Wed Aug 5 23:59:08 PDT 2020
Author: Luboš Luňák
Date: 2020-08-06T08:58:29+02:00
New Revision: 4a8e4b5c744791da629ec4a282acdf536f4471dd
URL: https://github.com/llvm/llvm-project/commit/4a8e4b5c744791da629ec4a282acdf536f4471dd
DIFF: https://github.com/llvm/llvm-project/commit/4a8e4b5c744791da629ec4a282acdf536f4471dd.diff
LOG: [lldb][gui] use names for color pairs, instead of magic numbers
Differential Revision: https://reviews.llvm.org/D85286
Added:
Modified:
lldb/source/Core/IOHandlerCursesGUI.cpp
Removed:
################################################################################
diff --git a/lldb/source/Core/IOHandlerCursesGUI.cpp b/lldb/source/Core/IOHandlerCursesGUI.cpp
index 4eb441a4d7ee..9ae077124ab1 100644
--- a/lldb/source/Core/IOHandlerCursesGUI.cpp
+++ b/lldb/source/Core/IOHandlerCursesGUI.cpp
@@ -273,6 +273,32 @@ struct KeyHelp {
const char *description;
};
+// COLOR_PAIR index names
+enum {
+ // First 16 colors are 8 black background and 8 blue background colors,
+ // needed by OutputColoredStringTruncated().
+ BlackOnBlack = 1,
+ RedOnBlack,
+ GreenOnBlack,
+ YellowOnBlack,
+ BlueOnBlack,
+ MagentaOnBlack,
+ CyanOnBlack,
+ WhiteOnBlack,
+ BlackOnBlue,
+ RedOnBlue,
+ GreenOnBlue,
+ YellowOnBlue,
+ BlueOnBlue,
+ MagentaOnBlue,
+ CyanOnBlue,
+ WhiteOnBlue,
+ // Other colors, as needed.
+ BlackOnWhite,
+ MagentaOnWhite,
+ LastColorPairIndex = MagentaOnWhite
+};
+
class WindowDelegate {
public:
virtual ~WindowDelegate() = default;
@@ -462,7 +488,7 @@ class Window {
int saved_opts;
::wattr_get(m_window, &saved_attr, &saved_pair, &saved_opts);
if (use_blue_background)
- ::wattron(m_window, COLOR_PAIR(16));
+ ::wattron(m_window, COLOR_PAIR(WhiteOnBlue));
while (!string.empty()) {
size_t esc_pos = string.find('\x1b');
if (esc_pos == StringRef::npos) {
@@ -498,7 +524,7 @@ class Window {
if (value == 0) { // Reset.
::wattr_set(m_window, saved_attr, saved_pair, &saved_opts);
if (use_blue_background)
- ::wattron(m_window, COLOR_PAIR(16));
+ ::wattron(m_window, COLOR_PAIR(WhiteOnBlue));
} else {
// Mapped directly to first 16 color pairs (black/blue background).
::wattron(m_window,
@@ -596,7 +622,7 @@ class Window {
void DrawTitleBox(const char *title, const char *bottom_message = nullptr) {
attr_t attr = 0;
if (IsActive())
- attr = A_BOLD | COLOR_PAIR(18);
+ attr = A_BOLD | COLOR_PAIR(BlackOnWhite);
else
attr = 0;
if (attr)
@@ -1026,14 +1052,14 @@ void Menu::DrawMenuTitle(Window &window, bool highlight) {
if (m_key_name.empty()) {
if (!underlined_shortcut && llvm::isPrint(m_key_value)) {
- window.AttributeOn(COLOR_PAIR(19));
+ window.AttributeOn(COLOR_PAIR(MagentaOnWhite));
window.Printf(" (%c)", m_key_value);
- window.AttributeOff(COLOR_PAIR(19));
+ window.AttributeOff(COLOR_PAIR(MagentaOnWhite));
}
} else {
- window.AttributeOn(COLOR_PAIR(19));
+ window.AttributeOn(COLOR_PAIR(MagentaOnWhite));
window.Printf(" (%s)", m_key_name.c_str());
- window.AttributeOff(COLOR_PAIR(19));
+ window.AttributeOff(COLOR_PAIR(MagentaOnWhite));
}
}
}
@@ -1045,7 +1071,7 @@ bool Menu::WindowDelegateDraw(Window &window, bool force) {
Menu::Type menu_type = GetType();
switch (menu_type) {
case Menu::Type::Bar: {
- window.SetBackground(18);
+ window.SetBackground(BlackOnWhite);
window.MoveCursor(0, 0);
for (size_t i = 0; i < num_submenus; ++i) {
Menu *menu = submenus[i].get();
@@ -1065,7 +1091,7 @@ bool Menu::WindowDelegateDraw(Window &window, bool force) {
int cursor_x = 0;
int cursor_y = 0;
window.Erase();
- window.SetBackground(18);
+ window.SetBackground(BlackOnWhite);
window.Box();
for (size_t i = 0; i < num_submenus; ++i) {
const bool is_selected = (i == static_cast<size_t>(selected_idx));
@@ -2440,7 +2466,7 @@ class ValueObjectListDelegate : public WindowDelegate {
attr_t changd_attr = 0;
if (valobj->GetValueDidChange())
- changd_attr = COLOR_PAIR(2) | A_BOLD;
+ changd_attr = COLOR_PAIR(RedOnBlack) | A_BOLD;
if (value && value[0]) {
window.PutCStringTruncated(1, " = ");
@@ -3309,7 +3335,7 @@ class StatusBarWindowDelegate : public WindowDelegate {
Thread *thread = exe_ctx.GetThreadPtr();
StackFrame *frame = exe_ctx.GetFramePtr();
window.Erase();
- window.SetBackground(18);
+ window.SetBackground(BlackOnWhite);
window.MoveCursor(0, 0);
if (process) {
const StateType state = process->GetState();
@@ -3581,7 +3607,7 @@ class SourceFileWindowDelegate : public WindowDelegate {
}
const attr_t selected_highlight_attr = A_REVERSE;
- const attr_t pc_highlight_attr = COLOR_PAIR(9);
+ const attr_t pc_highlight_attr = COLOR_PAIR(BlackOnBlue);
for (size_t i = 0; i < num_visible_lines; ++i) {
const uint32_t curr_line = m_first_visible_line + i;
@@ -3600,7 +3626,7 @@ class SourceFileWindowDelegate : public WindowDelegate {
highlight_attr = selected_highlight_attr;
if (bp_lines.find(curr_line + 1) != bp_lines.end())
- bp_attr = COLOR_PAIR(18);
+ bp_attr = COLOR_PAIR(BlackOnWhite);
if (bp_attr)
window.AttributeOn(bp_attr);
@@ -3641,7 +3667,7 @@ class SourceFileWindowDelegate : public WindowDelegate {
window.Printf("%*s", desc_x - window.GetCursorX(), "");
window.MoveCursor(window_width - stop_description_len - 16,
line_y);
- const attr_t stop_reason_attr = COLOR_PAIR(17);
+ const attr_t stop_reason_attr = COLOR_PAIR(WhiteOnBlue);
window.AttributeOn(stop_reason_attr);
window.PrintfTruncated(1, " <<< Thread %u: %s ",
thread->GetIndexID(), stop_description);
@@ -3685,7 +3711,7 @@ class SourceFileWindowDelegate : public WindowDelegate {
}
const attr_t selected_highlight_attr = A_REVERSE;
- const attr_t pc_highlight_attr = COLOR_PAIR(17);
+ const attr_t pc_highlight_attr = COLOR_PAIR(WhiteOnBlue);
StreamString strm;
@@ -3733,7 +3759,7 @@ class SourceFileWindowDelegate : public WindowDelegate {
if (bp_file_addrs.find(inst->GetAddress().GetFileAddress()) !=
bp_file_addrs.end())
- bp_attr = COLOR_PAIR(18);
+ bp_attr = COLOR_PAIR(BlackOnWhite);
if (bp_attr)
window.AttributeOn(bp_attr);
@@ -4270,10 +4296,10 @@ void IOHandlerCursesGUI::Activate() {
init_pair(14, COLOR_MAGENTA, COLOR_BLUE);
init_pair(15, COLOR_CYAN, COLOR_BLUE);
init_pair(16, COLOR_WHITE, COLOR_BLUE);
-
- init_pair(17, COLOR_WHITE, COLOR_BLUE);
- init_pair(18, COLOR_BLACK, COLOR_WHITE);
- init_pair(19, COLOR_MAGENTA, COLOR_WHITE);
+ // These must match the order in the color indexes enum.
+ init_pair(17, COLOR_BLACK, COLOR_WHITE);
+ init_pair(18, COLOR_MAGENTA, COLOR_WHITE);
+ static_assert(LastColorPairIndex == 18, "Color indexes do not match.");
}
}
More information about the lldb-commits
mailing list