2017-01-04 4 views
0

Ich versuche, die Bira zsh-Thema zu gestalten, so dass eine saubere Zweig grün ist und ein schmutziges Zweig ist rot und hat einen Stern am Ende wie so ...Zsh Thema: dirty Farbe und Suffix

custom zsh-theme

Ich habe es so bekommen, dass die Farbe basierend auf dem Zweigstatus ändert, aber nicht herausfinden kann, wie das Sternchen am Ende angezeigt werden kann. Unten ist was ich bisher habe. Ich bin sehr neu im Anpassen von Zsh-Theme-Dateien, so dass jede Hilfe sehr geschätzt werden würde!

# ZSH Theme - Modified from bira.zsh-theme 
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" 

if [[ $UID -eq 0 ]]; then 
    local user_host='%{$terminfo[bold]$fg[red]%}%[email protected]%m%{$reset_color%}' 
    local user_symbol='#' 
else 
    local user_host='%{$terminfo[bold]$fg[cyan]%}%[email protected]%m%{$reset_color%}' 
    local user_symbol='$' 
fi 

local current_dir='%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}' 
local git_branch='$(git_prompt_info)%{$reset_color%}' 

function git_prompt_info() { 
    ref=$(git symbolic-ref HEAD 2> /dev/null) || return 
    echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX" 
} 

PROMPT=" 
╭─${user_host} ${current_dir} ${git_branch} 
╰─%B${user_symbol}%b " 
RPS1="%B${return_code}%b" 


ZSH_THEME_GIT_PROMPT_PREFIX="‹" 
ZSH_THEME_GIT_PROMPT_SUFFIX="›$reset_color" 
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]" 
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]" 

Antwort

1

Die parse_git_dirty Funktion wird in lib/git.zsh definiert

Durch diese Funktion in der Datei kopieren und leicht ändern, können wir erreichen, was Sie wollen:

function git_prompt_info() { 
    ref=$(git symbolic-ref HEAD 2> /dev/null) || return 

    # Checks if working tree is dirty 
    local STATUS='' 
    local FLAGS 
    FLAGS=('--porcelain') 
    if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then 
    if [[ $POST_1_7_2_GIT -gt 0 ]]; then 
     FLAGS+='--ignore-submodules=dirty' 
    fi 
    if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then 
     FLAGS+='--untracked-files=no' 
    fi 
    STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) 
    fi 

    if [[ -n $STATUS ]]; then 
    GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_DIRTY" 
    GIT_DIRTY_STAR="*" 
    else 
    GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_CLEAN" 
    unset GIT_DIRTY_STAR 
    fi 

    echo "$GIT_PROMPT_COLOR$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$GIT_DIRTY_STAR$ZSH_THEME_GIT_PROMPT_SUFFIX" 
} 

Den einzigen Unterschied aus der Bibliothek Die Funktion ordnet GIT_PROMPT_COLOR und GIT_DIRTY_STAR anstelle des Echos zu und verwendet diese dann im endgültigen Echo.

+0

Dies erreicht genau das, was ich wollte - vielen Dank! –