improve error display

This commit is contained in:
🪞👃🪞 2025-08-15 19:59:19 +03:00
parent cac3fe044e
commit ea47d605a6

View file

@ -218,14 +218,24 @@ impl App {
fn render_dsl <'t, S> (state: &'t S, src: &str) -> Box<dyn Render<TuiOut>>
where S: DslSymNs<'t, Box<dyn Render<TuiOut>>> + DslExpNs<'t, Box<dyn Render<TuiOut>>>
{
if let Ok(Some(value)) = state.from_sym(src) { return value }
if let Ok(Some(value)) = state.from_exp(src) { return value }
Box::new(Bsp::s(
Fill::x(Align::w(Tui::bold(true, Tui::fg_bg(Color::Rgb(240,160,100), Color::Rgb(48,00,00),
"Could not render:")))),
Max::x(40, Tui::fg_bg(Color::Rgb(250,200,120), Color::Rgb(32,00,00),
format!("{src}")))
))
let sym_err: Option<Box<dyn Error>> = match state.from_sym(src) {
Ok(Some(value)) => return value,
Ok(None) => None,
Err(e) => Some(e),
};
let exp_err = match state.from_exp(src) {
Ok(Some(value)) => return value,
Ok(None) => None,
Err(e) => Some(e),
};
let (err_fg_1, err_bg_1) = (Color::Rgb(240, 160, 100), Color::Rgb(48, 0, 0));
let (err_fg_2, err_bg_2) = (Color::Rgb(250, 200, 120), Color::Rgb(32, 0, 0));
Box::new(Fill::x(col! {
Fill::x(Margin::x(1, Align::w(Tui::bold(true, Tui::fg_bg(err_fg_1, err_bg_1, "Could not render:"))))),
Fill::x(Margin::x(1, Tui::fg_bg(err_fg_2, err_bg_2, format!("{src}")))),
Fill::x(Margin::x(1, Tui::fg_bg(err_fg_2, err_bg_2, format!("{sym_err:?}")))),
Fill::x(Margin::x(1, Tui::fg_bg(err_fg_2, err_bg_2, format!("{exp_err:?}")))),
}))
}
dsl_exp!(|app: App, tail| -> Box<dyn Render<TuiOut>> {