diff --git a/src/main.rs b/src/main.rs index 6d17098..735aca4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,9 @@ const STASHED_PREFIX: &str = "\u{2691}"; // U+2691 BLACK FLAG // What to print before the number of staged files. -const STAGED_PREFIX: &str = "\u{ea71}"; // Nerd Font nf-cod-circle_filled + +// What to print before the number of renamed files. +const RENAMED_PREFIX: &str = "~"; // U+007E TILDE // What to print before the number of changed files. const CHANGED_PREFIX: &str = "+"; // U+002B PLUS SIGN @@ -61,6 +63,10 @@ return format!("%{{{}%}}", SetForegroundColor(Color::Blue)); } +fn renamed_style() -> String { + return format!("%{{{}%}}", SetForegroundColor(Color::Blue)); +} + fn changed_style() -> String { return format!("%{{{}%}}", SetForegroundColor(Color::DarkMagenta)); } @@ -145,6 +151,13 @@ None => "".to_string(), }; + // Number of renamed files. + // example: 2 R. N... 100644 100644 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 R100 file.renamed.new.1 file.renamed.original.1 + let renamed = match NonZeroUsize::new(Regex::new(r"2 (R.) [^\x00]+").unwrap().find_iter(&git_status).count()) { + Some(n) => format!("{}{RENAMED_PREFIX}{n}{} ", renamed_style(), reset_style()), + None => "".to_string(), + }; + // Number of changed files. // example: 1 .M N... 000000 100644 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file.changed let changed = match NonZeroUsize::new(Regex::new(r"1 (.[MT]) [^\x00]+").unwrap().find_iter(&git_status).count()) { @@ -181,7 +194,7 @@ None => "".to_string(), }; - let status_string = format!("{stashed}{ignored}{staged}{changed}{deleted}{conflicted}{untracked}"); + let status_string = format!("{stashed}{ignored}{staged}{renamed}{changed}{deleted}{conflicted}{untracked}"); print!("{branch}{ahead}{behind}{STATUS_SEPARATOR}{}", if status_string.len() > 0 {