Skip to content
Snippets Groups Projects

git subrepo clone git@gitlab.com:OlMon/org-themes.git packages/org-themes

1 file
+ 15
1
Compare changes
  • Side-by-side
  • Inline
+ 15
1
@@ -102,8 +102,22 @@ parser(const std::string& filename)
@@ -102,8 +102,22 @@ parser(const std::string& filename)
catch (const ParseError& e) {
catch (const ParseError& e) {
const auto p = e.positions().front();
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
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'
<< '\n'
<< input.line_at(p) << '\n'
<< input.line_at(p) << '\n'
<< std::string(p.column - 1, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << '\n';
<< std::string(p.column - 1, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << '\n';
Loading