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