Browse Source

[Fix #244] Add Git special action styles

master
Sorin Ionescu 12 years ago
parent
commit
cfc95cd5ee
  1. 20
      modules/git/README.md
  2. 35
      modules/git/functions/git-info

20
modules/git/README.md

@ -241,9 +241,12 @@ Theming
------- -------
To display information about the current repository in a prompt, define the To display information about the current repository in a prompt, define the
following styles in the `prompt_name_setup` function. following styles in the `prompt_name_setup` function, where the syntax for
setting a style is as follows.
| Name | Format Code | Content zstyle ':prezto:module:git:info:context:subcontext' format 'string'
| Name | Format Code | Description
| --------- | :---------: | --------------------------------------------------- | --------- | :---------: | ---------------------------------------------------
| action | %s | Special action name | action | %s | Special action name
| added | %a | Added files count | added | %a | Added files count
@ -261,6 +264,19 @@ following styles in the `prompt_name_setup` function.
| stashed | %S | Stashed states count | stashed | %S | Stashed states count
| unmerged | %U | Unmerged files count | unmerged | %U | Unmerged files count
| untracked | %u | Untracked files count | untracked | %u | Untracked files count
[**Main Contexts**]
| Name | Format | Description
| -------------------- | :---------: | -----------------------------------------
| apply | value | Applying patches
| bisect | value | Binary searching for changes
| cherry-pick | value | Cherry picking
| cherry-pick-sequence | value | Cherry picking sequence
| merge | value | Merging
| rebase | value | Rebasing
| rebase-interactive | value | Rebasing interactively
| rebase-merge | value | Rebasing merge
[**Special Action Contexts**]
First, format the repository state attributes. For example, to format the branch First, format the repository state attributes. For example, to format the branch
and remote names, define the following styles. and remote names, define the following styles.

35
modules/git/functions/git-info

@ -10,6 +10,14 @@
function _git-action { function _git-action {
local action_dir local action_dir
local git_dir="$(git-dir)" local git_dir="$(git-dir)"
local apply_formatted
local bisect_formatted
local cherry_pick_formatted
local cherry_pick_sequence_formatted
local merge_formatted
local rebase_formatted
local rebase_interactive_formatted
local rebase_merge_formatted
for action_dir in \ for action_dir in \
"${git_dir}/rebase-apply" \ "${git_dir}/rebase-apply" \
@ -17,12 +25,15 @@ function _git-action {
"${git_dir}/../.dotest" "${git_dir}/../.dotest"
do do
if [[ -d "$action_dir" ]] ; then if [[ -d "$action_dir" ]] ; then
zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' || apply_formatted='apply'
zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' || rebase_formatted='rebase'
if [[ -f "${action_dir}/rebasing" ]] ; then if [[ -f "${action_dir}/rebasing" ]] ; then
print 'rebase' print "$rebase_formatted"
elif [[ -f "${action_dir}/applying" ]] ; then elif [[ -f "${action_dir}/applying" ]] ; then
print 'am' print "$apply_formatted"
else else
print 'am/rebase' print "${rebase_formatted}/${apply_formatted}"
fi fi
return 0 return 0
@ -34,7 +45,8 @@ function _git-action {
"${git_dir}/.dotest-merge/interactive" "${git_dir}/.dotest-merge/interactive"
do do
if [[ -f "$action_dir" ]]; then if [[ -f "$action_dir" ]]; then
print 'rebase-i' zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' || rebase_interactive_formatted='rebase-interactive'
print "$rebase_interactive_formatted"
return 0 return 0
fi fi
done done
@ -44,28 +56,33 @@ function _git-action {
"${git_dir}/.dotest-merge" "${git_dir}/.dotest-merge"
do do
if [[ -d "$action_dir" ]]; then if [[ -d "$action_dir" ]]; then
print 'rebase-m' zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' || rebase_merge_formatted='rebase-merge'
print "$rebase_merge_formatted"
return 0 return 0
fi fi
done done
if [[ -f "${git_dir}/MERGE_HEAD" ]]; then if [[ -f "${git_dir}/MERGE_HEAD" ]]; then
print 'merge' zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' || merge_formatted='merge'
print "$merge_formatted"
return 0 return 0
fi fi
if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then
if [[ -d "${git_dir}/sequencer" ]] ; then if [[ -d "${git_dir}/sequencer" ]] ; then
print 'cherry-seq' zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' || cherry_pick_sequence_formatted='cherry-pick-sequence'
print "$cherry_pick_sequence_formatted"
else else
print 'cherry' zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' || cherry_pick_formatted='cherry-pick'
print "$cherry_pick_formatted"
fi fi
return 0 return 0
fi fi
if [[ -f "${git_dir}/BISECT_LOG" ]]; then if [[ -f "${git_dir}/BISECT_LOG" ]]; then
print 'bisect' zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' || bisect_formatted='bisect'
print "$bisect_formatted"
return 0 return 0
fi fi

Loading…
Cancel
Save