17constexpr std::size_t gutter_columns = 2;
26 const TextFormatter &fmt,
const Style style,
const std::vector<std::string> &lines,
const std::size_t wrap_width)
28 const std::size_t body_width =
29 wrap_width == 0 ? 0 : (wrap_width > gutter_columns ? wrap_width - gutter_columns : 1);
30 const std::string gutter = fmt.
style(
"│", style);
31 for (
const auto &logical : lines) {
33 std::cerr << gutter <<
" " << physical << std::endl;
111 if (!lines.empty()) {
119 emit_note_impl(tag, lines);
124 emit_note_impl(tag, lines);
129 emit_note_impl(tag, lines);
132void StderrStyledUserDiagnostics::emit_note_impl(
const std::string &tag,
const std::vector<std::string> &lines)
const
Abstract interface for all error types used in ChainableResult error chains.
virtual std::vector< std::string > details(const TextFormatter &formatter) const =0
Returns a formatted multi-line string representation of the error.
void error(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged error message to stderr.
void warning_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with a warning to stderr.
void emit_fatal_proximate(const Error &err) const override
Emit the proximate (immediate) error in a fatal error chain to stderr.
void remark(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged informational remark to stderr.
void remark_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with a remark to stderr.
void emit_fatal_root(const Error &err) const override
Emit the root cause error in a fatal error chain to stderr.
void emit_fatal_step(const Error &err) const override
Emit an intermediate step error in a fatal error chain to stderr.
void warning(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged warning to stderr.
void error_note(const std::string &tag, const std::vector< std::string > &lines) const override
Display a multi-line tagged note associated with an error to stderr.
Text styling class supporting formatting, foreground colors, and background colors.
static const Style magenta
Magenta foreground color.
static const Style red
Red foreground color.
static const Style cyan
Cyan foreground color.
static const Style blue
Blue foreground color.
static const Style bold
Bold text formatting.
Abstract base class for applying text styling with context-aware formatting.
virtual std::string style(const std::string &text, Style styles) const =0
Applies styling to a text string.
const TextFormatter & formatter() const
void assert_or_panic(bool condition, const StringViewSourceLoc &s)
Conditionally panics if the given condition is false.
std::vector< std::string > wrap_ansi_line(const std::string &line, std::size_t width)
Word-wraps a single logical line to a visible column width, preserving ANSI styling.