diff options
author | Neil Kistner <neil.kistner@gmail.com> | 2019-09-04 23:09:51 -0500 |
---|---|---|
committer | Matan Kushner <hello@matchai.me> | 2019-09-05 00:09:51 -0400 |
commit | 1c66869117e140d7b585ee6c9e66a32201b4837b (patch) | |
tree | aeff1f5a90f40575adc4a794bbb93358f5b61e22 /src/modules | |
parent | c5e693b638c3f6c5751662c27a5790c5f468aa8a (diff) |
feat: Add config for ahead/behind count of tracked branch (#281)
Add a configuration option (show_sync_count) to the git_status module that will show/hide the counts ahead/behind of the tracked branch. Currently have this default to false, and would opt-in to show this information.
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/git_status.rs | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/modules/git_status.rs b/src/modules/git_status.rs index 2a637957e..646f01f07 100644 --- a/src/modules/git_status.rs +++ b/src/modules/git_status.rs @@ -36,6 +36,9 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { let module_style = Color::Red.bold(); let mut module = context.new_module("git_status")?; + + let show_sync_count = module.config_value_bool("show_sync_count").unwrap_or(false); + module.get_prefix().set_value("[").set_style(module_style); module.get_suffix().set_value("] ").set_style(module_style); module.set_style(module_style); @@ -66,17 +69,37 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { // Add the ahead/behind segment if let Ok((ahead, behind)) = ahead_behind { - let ahead_segment = format!("{}{}", GIT_STATUS_AHEAD, ahead); - let behind_segment = format!("{}{}", GIT_STATUS_BEHIND, behind); + let add_ahead = |m: &mut Module<'a>| { + m.new_segment("ahead", GIT_STATUS_AHEAD); + + if show_sync_count { + m.new_segment("ahead_count", &ahead.to_string()); + } + }; + + let add_behind = |m: &mut Module<'a>| { + m.new_segment("behind", GIT_STATUS_BEHIND); + + if show_sync_count { + m.new_segment("behind_count", &behind.to_string()); + } + }; if ahead > 0 && behind > 0 { module.new_segment("diverged", GIT_STATUS_DIVERGED); - module.new_segment("ahead", ahead_segment.as_str()); - module.new_segment("behind", behind_segment.as_str()); - } else if ahead > 0 { - module.new_segment("ahead", ahead_segment.as_str()); - } else if behind > 0 { - module.new_segment("behind", behind_segment.as_str()); + + if show_sync_count { + add_ahead(&mut module); + add_behind(&mut module); + } + } + + if ahead > 0 && behind == 0 { + add_ahead(&mut module); + } + + if behind > 0 && ahead == 0 { + add_behind(&mut module); } } |