diff --git a/src/main.rs b/src/main.rs index 12e1346..6d17098 100644 --- a/src/main.rs +++ b/src/main.rs @@ -140,28 +140,29 @@ // Number of staged files. // example: 1 A. N... 000000 100644 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file.staged - let staged = match NonZeroUsize::new(Regex::new(r"1 A. ([^\x00]+)").unwrap().find_iter(&git_status).count()) { + let staged = match NonZeroUsize::new(Regex::new(r"1 (A.) [^\x00]+").unwrap().find_iter(&git_status).count()) { Some(n) => format!("{}{STAGED_PREFIX}{n}{} ", staged_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 .M ([^\x00]+)").unwrap().find_iter(&git_status).count()) { + let changed = match NonZeroUsize::new(Regex::new(r"1 (.[MT]) [^\x00]+").unwrap().find_iter(&git_status).count()) { Some(n) => format!("{}{CHANGED_PREFIX}{n}{} ", changed_style(), reset_style()), None => "".to_string(), }; // Number of deleted files. + // example: 1 D. N... 100644 000000 000000 284f07612f65f8032a5f5871c2591da2af4bd184 0000000000000000000000000000000000000000 file.deleted // example: 1 .D N... 100644 100644 000000 cefc2d5fe77876ddd24e962031bd5829d6431470 cefc2d5fe77876ddd24e962031bd5829d6431470 file.deleted - let deleted = match NonZeroUsize::new(Regex::new(r"1 .D ([^\x00]+)").unwrap().find_iter(&git_status).count()) { + let deleted = match NonZeroUsize::new(Regex::new(r"1 (D[^D]|[^D]D) [^\x00]+").unwrap().find_iter(&git_status).count()) { Some(n) => format!("{}{DELETED_PREFIX}{n}{} ", deleted_style(), reset_style()), None => "".to_string(), }; // Number of conflicted files. // example: u UD N... 000000 100644 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 file.conflicted - let conflicted = match NonZeroUsize::new(Regex::new(r"u .. ([^\x00]+)").unwrap().find_iter(&git_status).count()) { + let conflicted = match NonZeroUsize::new(Regex::new(r"u [ADU][ADU] ([^\x00]+)").unwrap().find_iter(&git_status).count()) { Some(n) => format!("{}{CONFLICTED_PREFIX}{n}{} ", conflicted_style(), reset_style()), None => "".to_string(), };