Hello. I'd like to have my prompt alert me when I have staged changes (because it's a pain to keep running 'git diff --staged' before every 'git commit -a'). However, I don't want to enable detection of unstaged changes too as that's more expensive (disk crawl v. metadata crawl). Put another way, I want to have %c/stagedstr without the cost of %u/unstagestr. The current code makes detection of %u,%c an all-or-nothing deal: # excerpt from Functions/VCS_Info/Backends/VCS_INFO_get_data_git if zstyle -t ":vcs_info:${vcs}:${usercontext}:${rrn}" "check-for-changes" && ... ; then # Default: off - these are potentially expensive on big repositories ${vcs_comm[cmd]} diff --no-ext-diff --ignore-submodules --quiet --exit-code || gitunstaged=1 ${vcs_comm[cmd]} diff-index --cached --quiet --ignore-submodules HEAD 2> /dev/null (( $? && $? != 128 )) && gitstaged=1 fi I went ahead and implemented a way to enable %c without %u, specifically by adding a 'check-for-staged-changes' style that sets %c but not %u and leaving 'check-for-changes' unchanged (sets both %c and %u). See attached patch. WDYT? Daniel --- Recipe for testing: zsh -f cd $MY_ZSH_SOURCE_DIR zstyle ':vcs_info:git:*' stagedstr '[+]' zstyle ':vcs_info:git:*' check-for-staged-changes true zstyle ':vcs_info:git:*' formats '%b%c' fpath=( $PWD/Functions/**/*(/) ) autoload -Uz vcs_info _precmd_vcs_info() { vcs_info; print -P ${vcs_info_msg_0_} } precmd_functions+=(_precmd_vcs_info) git rm --quiet -- README git checkout HEAD -- README # Observe the last two prompts.