From 03e2ebe2d21c2ee5c2bdd04b6cedd76d95fd9e32 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 20 Sep 2025 00:01:26 +0100 Subject: [PATCH] Make LineWrapper UTF-8 aware. --- src/misc.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/misc.cpp b/src/misc.cpp index 374ad035b..14ab4b534 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -309,8 +309,8 @@ void InfoFormatter::AddOption(const Anope::string &opt) void HelpWrapper::AddEntry(const Anope::string &name, const Anope::string &desc) { entries.emplace_back(name, desc); - if (name.length() > longest) - longest = name.length(); + if (name.utf8length() > longest) + longest = name.utf8length(); } void HelpWrapper::SendTo(CommandSource &source) @@ -329,13 +329,15 @@ void HelpWrapper::SendTo(CommandSource &source) else { LineWrapper lw(Language::Translate(source.nc, entry_desc.c_str()), max_length); - Anope::string line; - if (lw.GetLine(line)) - source.Reply(" %-*s %s", (int)longest, entry_name.c_str(), line.c_str()); + Anope::string padding(longest - entry_name.utf8length(), ' '); + if (lw.GetLine(line)) + source.Reply(" %s%s %s", entry_name.nobreak().c_str(), padding.c_str(), line.c_str()); + + padding = Anope::string(longest, ' '); while (lw.GetLine(line)) - source.Reply(" %-*s %s", (int)longest, "", line.c_str()); + source.Reply(" %s %s", padding.c_str(), line.c_str()); } } };