浏览代码

fix(fossil): refactor `fossil_prompt_info` and quote % in branch

Marc Cornellà 2 年之前
父节点
当前提交
a280726d93
共有 1 个文件被更改,包括 17 次插入15 次删除
  1. 17 15
      plugins/fossil/fossil.plugin.zsh

+ 17 - 15
plugins/fossil/fossil.plugin.zsh

@@ -13,23 +13,25 @@ ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
 ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
 
 function fossil_prompt_info() {
-  local _OUTPUT=`fossil branch 2>&1`
-  local _STATUS=`echo $_OUTPUT | grep "use --repo"`
-  if [ "$_STATUS" = "" ]; then
-    local _EDITED=`fossil changes`
-    local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
-    local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
-
-    if [ "$_EDITED" != "" ]; then
-      _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
-    fi
+  local info=$(fossil branch 2>&1)
+
+  # if we're not in a fossil repo, don't show anything
+  ! command grep -q "use --repo" <<< "$info" || return
 
-    echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
-      "$_BRANCH" \
-      "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
-      "$_EDITED_SYM"\
-      "%{$reset_color%}"
+  local branch=$(echo $info | grep "* " | sed 's/* //g')
+  local changes=$(fossil changes)
+  local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
+
+  if [[ -n "$changes" ]]; then
+    dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
   fi
+
+  printf '%s %s %s %s %s' \
+    "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
+    "${branch:gs/%/%%}" \
+    "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
+    "$dirty" \
+    "%{$reset_color%}"
 }
 
 function _fossil_prompt () {