diff --git a/examples/mode_02.rs b/examples/mode_02.rs index 1ec2069..a077f20 100644 --- a/examples/mode_02.rs +++ b/examples/mode_02.rs @@ -42,7 +42,9 @@ impl_keywords!(Tui, XYWH, State [ kw_push, kw_tui_text, kw_tui_fg, - kw_tui_bg + kw_tui_bg, + kw_color_g, + kw_color_rgb, ]); impl Interpret>> for State { diff --git a/src/layout/azimuth.rs b/src/layout/azimuth.rs index ac749b8..2eeb0af 100644 --- a/src/layout/azimuth.rs +++ b/src/layout/azimuth.rs @@ -38,7 +38,6 @@ fn_kw_layout!(kw_align |state, output, expr| { draw(move|output: &mut O|{state.interpret(output, &expr.tail().head())}).align( eval_enum!("align", output, state, expr.head().src()?.unwrap_or_default().split("/").skip(1).next(), - expr.tail().head(), Azimuth { "c" => C, "x" => X, "y" => Y, "n" => N, "s" => S, "e" => E, "w" => W, @@ -131,7 +130,7 @@ fn_kw_layout!(kw_split |state, output, expr| { let head = expr.head(); let mut frags = head.src()?.unwrap_or_default().split("/"); Ok(matches!(frags.next(), Some("bsp")).then(||{ - eval_enum!("bsp", output, state, frags.next(), expr.tail().head()?, Split { + eval_enum!("bsp", output, state, frags.next(), Split { "n" => North, "s" => South, "e" => East, @@ -140,10 +139,10 @@ fn_kw_layout!(kw_split |state, output, expr| { "b" => Below }).stack( draw(move|output: &mut O|{ - state.interpret(output, &expr.tail().tail().head()?) + state.interpret(output, &expr.tail().head()?) }), draw(move|output: &mut O|{ - state.interpret(output, &expr.tail().tail().tail().head()?) + state.interpret(output, &expr.tail().tail().head()?) }), ).draw(output) }).transpose()?.flatten()) diff --git a/src/lib.rs b/src/lib.rs index 119bd52..20cb81b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -182,7 +182,7 @@ pub trait AsMutOpt { fn as_mut_opt (&mut self) -> Option<&mut T>; } /// Some layout operations exist in multiple variants that take a single argument. /// Their handling in [eval_view] is uniform and goes like this: macro_rules! eval_enum (( - $name:literal, $output:ident, $state:ident, $value:expr, $arg0:expr, $Enum:ident { + $name:literal, $output:ident, $state:ident, $value:expr, $Enum:ident { $($v:literal => $V:ident),* $(,)? } ) => {{ diff --git a/src/term.rs b/src/term.rs index 9a66b5d..452c65f 100644 --- a/src/term.rs +++ b/src/term.rs @@ -500,7 +500,7 @@ impl> Draw for ShowSizeOf { } } -#[cfg(feature = "eval")] fn_kw_layout_tui!(kw_tui_text |state, output, expr| { +#[cfg(feature = "eval")] fn_kw_layout_tui!(kw_tui_text |_state, output, expr| { Ok(matches!(expr.head()?, Some("text")).then(||{ if let Some(src) = expr.tail().src()? { src.draw(output) diff --git a/src/term/modify.rs b/src/term/modify.rs index 176971a..5a7512c 100644 --- a/src/term/modify.rs +++ b/src/term/modify.rs @@ -36,7 +36,8 @@ impl Tui { if let Some(expr) = src.expr()? { match (expr.head()?, expr.tail()?) { (Some("g"), Some(tail)) => { - let n: u8 = state.namespace(tail.head().map_err(Into::into))?.ok_or(LanguageError::Domain("not gray"))?; + let n: u8 = state.namespace(tail.head().map_err(Into::into))? + .ok_or(LanguageError::Domain("not gray"))?; Ok(Some(Color::Rgb(n, n, n))) }, (Some("rgb"), Some(tail)) => {