From 144da1a3a6817c7c820c1141e9b8b76a683c7a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Tue, 19 Jul 2022 08:31:45 +0200 Subject: [PATCH] Add a cosmetic hack to avoid duplication of the 'error:' tag This duplication can occur when intercepting a NormalError --- src/language/PugsParser.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index 368e86c83..58ab42773 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -102,8 +102,22 @@ parser(const std::string& filename) catch (const ParseError& e) { const auto p = e.positions().front(); + std::string error_specifier = [] { + std::ostringstream os; + os << rang::style::bold << "error:" << rang::style::reset << ' '; + return os.str(); + }(); + + std::string message = e.what(); + + // This is a cosmetic hack to avoid repetition of "error: " in + // output + if (message.substr(0, error_specifier.size()) == error_specifier) { + message = message.substr(error_specifier.size()); + } + std::cerr << rang::style::bold << p.source << ':' << p.line << ':' << p.column << ": " << rang::style::reset - << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset + << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << message << rang::style::reset << '\n' << input.line_at(p) << '\n' << std::string(p.column - 1, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << '\n'; -- GitLab