93ec48fb0a798775b9e5d366c11a4ac3826c3ea4
- Author
- Marc Cornellà <hello@mcornella.com>
- Committer
- Marc Cornellà <hello@mcornella.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh
2index 851f1a45e8cf2b138eff8d25837b2b46406f91f1..9c3b50d16b2bb4642576f61fb6353fb0c68a04f0 100644
3--- a/plugins/svn/svn.plugin.zsh
4+++ b/plugins/svn/svn.plugin.zsh
5@@ -1,21 +1,28 @@
6 svn_prompt_info() {
7- local _DISPLAY
8- if in_svn; then
9- if [[ "$SVN_SHOW_BRANCH" = true ]]; then
10- unset SVN_SHOW_BRANCH
11- _DISPLAY=$(svn_get_branch_name)
12- else
13- _DISPLAY=$(svn_get_repo_name)
14- _DISPLAY=$(omz_urldecode "${_DISPLAY}")
15- fi
16- echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\
17-$ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$(svn_dirty_pwd)$ZSH_PROMPT_BASE_COLOR"
18+ local info display
19+ info="$(LANG= svn info 2>/dev/null)" || return 1
20+
21+ if [[ "$SVN_SHOW_BRANCH" = true ]]; then
22+ display="$(svn_get_branch_name "$info")"
23+ else
24+ display="$(svn_get_repo_name "$info")"
25 fi
26-}
27
28+ printf '%s%s%s%s%s%s%s%s%s%s' \
29+ "$ZSH_PROMPT_BASE_COLOR" \
30+ "$ZSH_THEME_SVN_PROMPT_PREFIX" \
31+ "$ZSH_THEME_REPO_NAME_COLOR" \
32+ "${display:gs/%/%%}" \
33+ "$ZSH_PROMPT_BASE_COLOR" \
34+ "$ZSH_THEME_SVN_PROMPT_SUFFIX" \
35+ "$ZSH_PROMPT_BASE_COLOR" \
36+ "$(svn_dirty $info)" \
37+ "$(svn_dirty_pwd)" \
38+ "$ZSH_PROMPT_BASE_COLOR"
39+}
40
41 in_svn() {
42- svn info >/dev/null 2>&1
43+ svn info &>/dev/null
44 }
45
46 svn_get_repo_name() {
47@@ -26,47 +33,44 @@ svn_get_repo_name() {
48 }
49
50 svn_get_branch_name() {
51- local _DISPLAY=$(
52- LANG=C svn info 2> /dev/null | \
53- awk -F/ \
54- '/^URL:/ { \
55- for (i=0; i<=NF; i++) { \
56- if ($i == "branches" || $i == "tags" ) { \
57- print $(i+1); \
58- break;\
59- }; \
60- if ($i == "trunk") { print $i; break; } \
61- } \
62- }'
63+ local info branch
64+ info="${1:-$(LANG= svn info 2>/dev/null)}"
65+ branch=$(
66+ awk -F/ '/^URL:/ {
67+ for (i=0; i<=NF; i++) {
68+ if ($i == "branches" || $i == "tags" ) {
69+ print $(i+1)
70+ break
71+ };
72+ if ($i == "trunk") {
73+ print $i
74+ break
75+ }
76+ }
77+ }' <<< "$info"
78 )
79+ branch="$(omz_urldecode "$branch")"
80
81- if [[ -z "$_DISPLAY" ]]; then
82- svn_get_repo_name
83- else
84- echo $_DISPLAY
85- fi
86+ echo "${branch:-$(svn_get_repo_name "$info")}"
87 }
88
89 svn_get_rev_nr() {
90- if in_svn; then
91- LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p'
92- fi
93+ sed -n 's/Revision:\ //p' "${1:-$(LANG= svn info 2>/dev/null)}"
94 }
95
96 svn_dirty() {
97- svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN
98+ svn_dirty_choose "${1:-$(LANG= svn info 2>/dev/null)}" $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN
99 }
100
101 svn_dirty_choose() {
102- if in_svn; then
103- local root=$(LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p')
104- if svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then