[Lldb-commits] [lldb] Colorize output when searching for symbols in lldb (PR #69422)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Thu Nov 2 08:43:13 PDT 2023
================
@@ -1506,13 +1514,50 @@ static bool LookupAddressInModule(CommandInterpreter &interpreter, Stream &strm,
ExecutionContextScope *exe_scope =
interpreter.GetExecutionContext().GetBestExecutionContextScope();
- DumpAddress(exe_scope, so_addr, verbose, all_ranges, strm);
+ DumpAddress(exe_scope, so_addr, verbose, all_ranges, strm, nullptr);
return true;
}
return false;
}
+//===========================================================================================
+
+// This function is the one which colorizes the regex symbol searched
+static void PrintRed(Stream &strm, const char *text, const char *name, CommandInterpreter *interpreter= nullptr) {
+ if (!name) {
+ strm.PutCString(text);
+ return;
+ }
+
+ bool use_color = interpreter->GetDebugger().GetUseColor();
+
+ std::string str_text(text);
+ std::regex reg_name(name);
+ std::sregex_iterator next(str_text.begin(), str_text.end(), reg_name);
+ std::sregex_iterator end;
+
+ std::string red_start = lldb_private::ansi::FormatAnsiTerminalCodes("${ansi.fg.red}", use_color);
+ std::string reset_color = lldb_private::ansi::FormatAnsiTerminalCodes("${ansi.normal}", use_color);
----------------
DavidSpickett wrote:
Generally you'd use this by making a format string like:
```
${ansi.fg.red}%s${ansi.normal}
```
Then the function will remove the ansi bits as needed and you can use it as a format string to printf. `strm.Printf(fmt, ...)`.
What you have isn't wrong, but changing it will save a call or two.
https://github.com/llvm/llvm-project/pull/69422
More information about the lldb-commits
mailing list