28
28
#include " lldb/Core/StreamFile.h"
29
29
#include " lldb/Core/ValueObjectUpdater.h"
30
30
#include " lldb/Host/File.h"
31
+ #include " lldb/Utility/AnsiTerminal.h"
31
32
#include " lldb/Utility/Predicate.h"
32
33
#include " lldb/Utility/Status.h"
33
34
#include " lldb/Utility/StreamString.h"
@@ -495,7 +496,7 @@ class Surface {
495
496
if (use_blue_background)
496
497
::wattron (m_window, COLOR_PAIR(WhiteOnBlue));
497
498
while (!string.empty ()) {
498
- size_t esc_pos = string.find (' \x1b ' );
499
+ size_t esc_pos = string.find (ANSI_ESC_START );
499
500
if (esc_pos == StringRef::npos) {
500
501
string = string.substr (skip_first_count);
501
502
if (!string.empty ()) {
@@ -517,26 +518,24 @@ class Surface {
517
518
string = string.drop_front (esc_pos);
518
519
}
519
520
}
520
- bool consumed = string.consume_front (" \x1b " );
521
+ bool consumed = string.consume_front (ANSI_ESC_START );
521
522
assert (consumed);
522
523
UNUSED_IF_ASSERT_DISABLED (consumed);
523
524
// This is written to match our Highlighter classes, which seem to
524
525
// generate only foreground color escape sequences. If necessary, this
525
526
// will need to be extended.
526
- if (!string.consume_front (" [" )) {
527
- llvm::errs () << " Missing '[' in color escape sequence.\n " ;
528
- continue ;
529
- }
530
527
// Only 8 basic foreground colors and reset, our Highlighter doesn't use
531
528
// anything else.
532
529
int value;
533
530
if (!!string.consumeInteger (10 , value) || // Returns false on success.
534
- !(value == 0 || (value >= 30 && value <= 37 ))) {
531
+ !(value == 0 ||
532
+ (value >= ANSI_FG_COLOR_BLACK && value <= ANSI_FG_COLOR_WHITE))) {
535
533
llvm::errs () << " No valid color code in color escape sequence.\n " ;
536
534
continue ;
537
535
}
538
- if (!string.consume_front (" m" )) {
539
- llvm::errs () << " Missing 'm' in color escape sequence.\n " ;
536
+ if (!string.consume_front (ANSI_ESC_END)) {
537
+ llvm::errs () << " Missing '" << ANSI_ESC_END
538
+ << " ' in color escape sequence.\n " ;
540
539
continue ;
541
540
}
542
541
if (value == 0 ) { // Reset.
@@ -545,8 +544,8 @@ class Surface {
545
544
::wattron (m_window, COLOR_PAIR(WhiteOnBlue));
546
545
} else {
547
546
// Mapped directly to first 16 color pairs (black/blue background).
548
- ::wattron (m_window,
549
- COLOR_PAIR (value - 30 + 1 + (use_blue_background ? 8 : 0 )));
547
+ ::wattron (m_window, COLOR_PAIR(value - ANSI_FG_COLOR_BLACK + 1 +
548
+ (use_blue_background ? 8 : 0 )));
550
549
}
551
550
}
552
551
wattr_set (m_window, saved_attr, saved_pair, nullptr );
0 commit comments