summaryrefslogtreecommitdiff
path: root/lldb/utils/TableGen/LLDBOptionDefEmitter.cpp
diff options
context:
space:
mode:
authorMingming Liu <mingmingl@google.com>2025-09-10 15:25:31 -0700
committerGitHub <noreply@github.com>2025-09-10 15:25:31 -0700
commit1417dafa1db9cb1b2b09438aa9f53ea5ab6e36e2 (patch)
tree57f4b1f313c8cf74eed8819870f39c36ea263c68 /lldb/utils/TableGen/LLDBOptionDefEmitter.cpp
parent898b813bc8a6d0276bf0f4769f5f2f64b34e632d (diff)
parentb8cefcb601ddaa18482555c4ff363c01a270c2fe (diff)
Merge branch 'main' into users/mingmingl-llvm/samplefdo-profile-formatusers/mingmingl-llvm/samplefdo-profile-format
Diffstat (limited to 'lldb/utils/TableGen/LLDBOptionDefEmitter.cpp')
-rw-r--r--lldb/utils/TableGen/LLDBOptionDefEmitter.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/lldb/utils/TableGen/LLDBOptionDefEmitter.cpp b/lldb/utils/TableGen/LLDBOptionDefEmitter.cpp
index 2507910d8a97..e6d5b7bb52a2 100644
--- a/lldb/utils/TableGen/LLDBOptionDefEmitter.cpp
+++ b/lldb/utils/TableGen/LLDBOptionDefEmitter.cpp
@@ -23,6 +23,33 @@ using namespace llvm;
using namespace lldb_private;
namespace {
+/// Parses curly braces and replaces them with ANSI underline formatting.
+std::string underline(llvm::StringRef Str) {
+ llvm::StringRef OpeningHead, OpeningTail, ClosingHead, ClosingTail;
+ std::string Result;
+ llvm::raw_string_ostream Stream(Result);
+ while (!Str.empty()) {
+ // Find the opening brace.
+ std::tie(OpeningHead, OpeningTail) = Str.split("${");
+ Stream << OpeningHead;
+
+ // No opening brace: we're done.
+ if (OpeningHead == Str)
+ break;
+
+ assert(!OpeningTail.empty());
+
+ // Find the closing brace.
+ std::tie(ClosingHead, ClosingTail) = OpeningTail.split('}');
+ assert(!ClosingTail.empty() &&
+ "unmatched curly braces in command option description");
+
+ Stream << "${ansi.underline}" << ClosingHead << "${ansi.normal}";
+ Str = ClosingTail;
+ }
+ return Result;
+}
+
struct CommandOption {
std::vector<std::string> GroupsArg;
bool Required = false;
@@ -68,7 +95,7 @@ struct CommandOption {
Completions = Option->getValueAsListOfStrings("Completions");
if (auto D = Option->getValue("Description"))
- Description = D->getValue()->getAsUnquotedString();
+ Description = underline(D->getValue()->getAsUnquotedString());
}
};
} // namespace