diff --git a/crates/app/app.rs b/crates/app/app.rs index 5b4c74d4..b7be6127 100644 --- a/crates/app/app.rs +++ b/crates/app/app.rs @@ -216,16 +216,26 @@ impl App { } fn render_dsl <'t, S> (state: &'t S, src: &str) -> Box> -where S: DslSymNs<'t, Box>> + DslExpNs<'t, Box>> + where S: DslSymNs<'t, Box>> + DslExpNs<'t, Box>> { - 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> = 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> {