[Lldb-commits] [lldb] [lldb] Highlight "note:" in CommandReturnObject (PR #114610)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Fri Nov 1 15:59:19 PDT 2024
https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/114610
>From ef1aaf94b52726c77e5569c84c09ecdd73811abd Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Fri, 1 Nov 2024 15:02:59 -0700
Subject: [PATCH] [lldb] Highlight "note:" in CommandReturnObject
We have helpers to emit warnings and errors. Do the same thing for notes
to they stand out more.
---
.../lldb/Interpreter/CommandReturnObject.h | 10 ++++++++
.../Commands/CommandObjectDWIMPrint.cpp | 15 ++++++------
.../Interpreter/CommandReturnObject.cpp | 24 +++++++++++++++++++
3 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/lldb/include/lldb/Interpreter/CommandReturnObject.h b/lldb/include/lldb/Interpreter/CommandReturnObject.h
index a491a6c1535b11..9fef59337016df 100644
--- a/lldb/include/lldb/Interpreter/CommandReturnObject.h
+++ b/lldb/include/lldb/Interpreter/CommandReturnObject.h
@@ -110,6 +110,11 @@ class CommandReturnObject {
void AppendMessageWithFormat(const char *format, ...)
__attribute__((format(printf, 2, 3)));
+ void AppendNote(llvm::StringRef in_string);
+
+ void AppendNoteWithFormat(const char *format, ...)
+ __attribute__((format(printf, 2, 3)));
+
void AppendWarning(llvm::StringRef in_string);
void AppendWarningWithFormat(const char *format, ...)
@@ -127,6 +132,11 @@ class CommandReturnObject {
AppendMessage(llvm::formatv(format, std::forward<Args>(args)...).str());
}
+ template <typename... Args>
+ void AppendNoteWithFormatv(const char *format, Args &&...args) {
+ AppendNote(llvm::formatv(format, std::forward<Args>(args)...).str());
+ }
+
template <typename... Args>
void AppendWarningWithFormatv(const char *format, Args &&... args) {
AppendWarning(llvm::formatv(format, std::forward<Args>(args)...).str());
diff --git a/lldb/source/Commands/CommandObjectDWIMPrint.cpp b/lldb/source/Commands/CommandObjectDWIMPrint.cpp
index 76bed100dc7291..62c4e74d853ad1 100644
--- a/lldb/source/Commands/CommandObjectDWIMPrint.cpp
+++ b/lldb/source/Commands/CommandObjectDWIMPrint.cpp
@@ -121,10 +121,10 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
if (note_shown)
return;
- result.GetOutputStream()
- << "note: object description requested, but type doesn't implement "
- "a custom object description. Consider using \"p\" instead of "
- "\"po\" (this note will only be shown once per debug session).\n";
+ result.AppendNote(
+ "object description requested, but type doesn't implement "
+ "a custom object description. Consider using \"p\" instead of "
+ "\"po\" (this note will only be shown once per debug session).\n");
note_shown = true;
}
};
@@ -164,8 +164,8 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
StringRef flags;
if (args.HasArgs())
flags = args.GetArgString();
- result.AppendMessageWithFormatv("note: ran `frame variable {0}{1}`",
- flags, expr);
+ result.AppendNoteWithFormatv("ran `frame variable {0}{1}`", flags,
+ expr);
}
dump_val_object(*valobj_sp);
@@ -224,8 +224,7 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
StringRef flags;
if (args.HasArgs())
flags = args.GetArgStringWithDelimiter();
- result.AppendMessageWithFormatv("note: ran `expression {0}{1}`", flags,
- expr);
+ result.AppendNoteWithFormatv("ran `expression {0}{1}`", flags, expr);
}
if (valobj_sp->GetError().GetError() != UserExpression::kNoResult)
diff --git a/lldb/source/Interpreter/CommandReturnObject.cpp b/lldb/source/Interpreter/CommandReturnObject.cpp
index 94f5ff608b2aea..2776efbb5ee36d 100644
--- a/lldb/source/Interpreter/CommandReturnObject.cpp
+++ b/lldb/source/Interpreter/CommandReturnObject.cpp
@@ -27,6 +27,12 @@ static llvm::raw_ostream &warning(Stream &strm) {
<< "warning: ";
}
+static llvm::raw_ostream ¬e(Stream &strm) {
+ return llvm::WithColor(strm.AsRawOstream(), llvm::HighlightColor::Note,
+ llvm::ColorMode::Enable)
+ << "note: ";
+}
+
static void DumpStringToStreamWithNewline(Stream &strm, const std::string &s) {
bool add_newline = false;
if (!s.empty()) {
@@ -74,6 +80,18 @@ void CommandReturnObject::AppendMessageWithFormat(const char *format, ...) {
GetOutputStream() << sstrm.GetString();
}
+void CommandReturnObject::AppendNoteWithFormat(const char *format, ...) {
+ if (!format)
+ return;
+ va_list args;
+ va_start(args, format);
+ StreamString sstrm;
+ sstrm.PrintfVarArg(format, args);
+ va_end(args);
+
+ note(GetOutputStream()) << sstrm.GetString();
+}
+
void CommandReturnObject::AppendWarningWithFormat(const char *format, ...) {
if (!format)
return;
@@ -92,6 +110,12 @@ void CommandReturnObject::AppendMessage(llvm::StringRef in_string) {
GetOutputStream() << in_string.rtrim() << '\n';
}
+void CommandReturnObject::AppendNote(llvm::StringRef in_string) {
+ if (in_string.empty())
+ return;
+ note(GetOutputStream()) << in_string.rtrim() << '\n';
+}
+
void CommandReturnObject::AppendWarning(llvm::StringRef in_string) {
if (in_string.empty())
return;
More information about the lldb-commits
mailing list