diff --git a/crates/nu-cli/src/commands/alias.rs b/crates/nu-cli/src/commands/alias.rs index 3e66391c03..c7ad0c97cd 100644 --- a/crates/nu-cli/src/commands/alias.rs +++ b/crates/nu-cli/src/commands/alias.rs @@ -43,10 +43,16 @@ impl WholeStreamCommand for Alias { } fn examples(&self) -> &[Example] { - &[Example { - description: "Some people prefer to write one letter instead of two", - example: "alias l [x] { ls $x }", - }] + &[ + Example { + description: "An alias without parameters", + example: "alias say-hi [] { echo 'Hello!' }", + }, + Example { + description: "An alias with a single parameter", + example: "alias l [x] { ls $x }", + }, + ] } } diff --git a/crates/nu-cli/src/commands/help.rs b/crates/nu-cli/src/commands/help.rs index 96c780a313..23c5eba6fe 100644 --- a/crates/nu-cli/src/commands/help.rs +++ b/crates/nu-cli/src/commands/help.rs @@ -272,14 +272,19 @@ pub(crate) fn get_help( let examples = cmd.examples(); if !examples.is_empty() { - long_desc.push_str("\nExamples:\n"); + long_desc.push_str("\nExamples:"); } for example in examples { + long_desc.push_str("\n"); long_desc.push_str(" "); long_desc.push_str(example.description); - long_desc.push_str(&format!("\n > {}\n", example.example)); + let colored_example = + crate::shell::helper::Painter::paint_string(example.example, registry); + long_desc.push_str(&format!("\n > {}\n", colored_example)); } + long_desc.push_str("\n"); + help.push_back(ReturnSuccess::value( UntaggedValue::string(long_desc).into_value(Tag::from((0, cmd_name.len(), None))), )); diff --git a/crates/nu-cli/src/shell/helper.rs b/crates/nu-cli/src/shell/helper.rs index e12426272e..b4d8005e59 100644 --- a/crates/nu-cli/src/shell/helper.rs +++ b/crates/nu-cli/src/shell/helper.rs @@ -61,24 +61,7 @@ impl Highlighter for Helper { } fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> { - let lite_block = nu_parser::lite_parse(line, 0); - - match lite_block { - Err(_) => Cow::Borrowed(line), - Ok(lb) => { - let classified = - nu_parser::classify_block(&lb, &self.context.registry().clone_box()); - - let shapes = nu_parser::shapes(&classified.block); - let mut painter = Painter::new(line); - - for shape in shapes { - painter.paint_shape(&shape); - } - - Cow::Owned(painter.into_string()) - } - } + Painter::paint_string(line, &self.context.registry().clone_box()) } fn highlight_char(&self, _line: &str, _pos: usize) -> bool { @@ -98,7 +81,7 @@ fn vec_tag(input: Vec>) -> Option { }) } -struct Painter { +pub struct Painter { original: Vec, styles: Vec