From cc536c39cce3086f7a2227b87df30efc5b2b7162 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 19 Dec 2013 17:01:42 +0100 Subject: [PATCH] WIP: moving prompt segments out of zsh --- bash/prompt | 2 + bash/prompt_segments | 61 ++++++++++++++++++++++ shell/prompt_segments | 48 +++++++++++++++++ zsh/prompt | 117 +----------------------------------------- zsh/prompt_segments | 66 ++++++++++++++++++++++++ 5 files changed, 179 insertions(+), 115 deletions(-) create mode 100644 bash/prompt_segments create mode 100644 shell/prompt_segments create mode 100644 zsh/prompt_segments diff --git a/bash/prompt b/bash/prompt index 1b99bac..cd0ee6a 100644 --- a/bash/prompt +++ b/bash/prompt @@ -1,3 +1,5 @@ +source "$DOTFILES_SHELL_DIR/prompt_segments" +source "$DOTFILES_BASH_DIR/prompt_segments" source "$DOTFILES_SHELL_DIR/prompt_utils" # git prompt info diff --git a/bash/prompt_segments b/bash/prompt_segments new file mode 100644 index 0000000..5750687 --- /dev/null +++ b/bash/prompt_segments @@ -0,0 +1,61 @@ +lprompt_segment() { + local bg fg fake_bg + + [[ -n $1 ]] && bg="$1" || bg='default' + [[ -n $2 ]] && fg="$2" || fg='default' + + if [[ $CURRENT_BG == 'default' ]]; then + fake_bg=$SEGMENT_DEFAULT_BG + else + fake_bg=$CURRENT_BG + fi + + if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then + echo -n " %{%K{$bg}%F{$fake_bg}%}$SEGMENT_SEPARATOR%{%F{$fg}%} " + else + echo -n "%{%K{$bg}%}%{%F{$fg}%} " + fi + + CURRENT_BG=$1 + [[ -n $3 ]] && print -Pn $3 +} + +# End the prompt, closing any open segments +prompt_end() { + if [[ -n $CURRENT_BG ]]; then + echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" + else + echo -n "%{%k%}" + fi + echo -n "%{%f%}" + CURRENT_BG='' +} + +rprompt_segment() { + local bg fg fake_bg prev_bg + + [[ -n $1 ]] && bg="$1" || bg='default' + [[ -n $2 ]] && fg="$2" || fg='default' + + if [[ $bg == 'default' ]]; then + fake_bg=$SEGMENT_DEFAULT_BG + else + fake_bg=$bg + fi + prev_bg=$CURRENT_BG + + if [[ $1 != $CURRENT_BG ]]; then + echo -n " %{%K{$prev_bg}%F{$fake_bg}%}$RSEGMENT_SEPARATOR%{%K{$bg}%F{$fg}%} " + else + echo -n "%{%K{$bg}%}%{%F{$fg}%} " + fi + + CURRENT_BG=$1 + [[ -n $3 ]] && print -Pn $3 +} + +rprompt_end() { + echo -n ' ' + echo -n "%{%k%f%}" + CURRENT_BG='' +} diff --git a/shell/prompt_segments b/shell/prompt_segments new file mode 100644 index 0000000..abceff4 --- /dev/null +++ b/shell/prompt_segments @@ -0,0 +1,48 @@ +#POWERLINE_TRI_LEFT_FULL='' +#POWERLINE_TRI_LEFT_EMPTY='' +#POWERLINE_TRI_RIGHT_FULL='' +#POWERLINE_TRI_RIGHT_EMPTY='' +#POWERLINE_BRANCH='' +#POWERLINE_LN='' +#POWERLINE_LOCK='' +#POWERLINE_ASIDE='➦' + +POWERLINE_TRI_LEFT_FULL='⮂' +POWERLINE_TRI_LEFT_EMPTY='⮃' +POWERLINE_TRI_RIGHT_FULL='⮀' +POWERLINE_TRI_RIGHT_EMPTY='⮁' +POWERLINE_BRANCH='' +POWERLINE_LN='⭡' +POWERLINE_LOCK='⭤' +POWERLINE_ASIDE='➦' + +UNICODE_BOX_VERTICAL_BAR='│' + +prompt_is_fancy() { + [[ $PROMPT_FANCY -eq 1 ]] +} + +prompt_setup_segments() { + if prompt_is_fancy; then + SEGMENT_SEPARATOR=$POWERLINE_TRI_RIGHT_FULL + RSEGMENT_SEPARATOR=$POWERLINE_TRI_LEFT_FULL + SUBSEGMENT_SEPARATOR=$POWERLINE_TRI_RIGHT_EMPTY + RSUBSEGMENT_SEPARATOR=$POWERLINE_TRI_LEFT_EMPTY + else + SEGMENT_SEPARATOR='' + RSEGMENT_SEPARATOR='' + SUBSEGMENT_SEPARATOR=$UNICODE_BOX_VERTICAL_BAR + RSUBSEGMENT_SEPARATOR=$SUBSEGMENT_SEPARATOR + fi +} + +prompt_segment() { + [[ -z $RPROMPT_SEGMENT ]] && lprompt_segment $@ || rprompt_segment $@ +} + +prompt_subsegment() { + local sep + [[ -z $RPROMPT_SEGMENT ]] && sep=$SUBSEGMENT_SEPARATOR || sep=$RSUBSEGMENT_SEPARATOR + echo -n " $sep " + [[ -n $1 ]] && print -Pn $1 +} diff --git a/zsh/prompt b/zsh/prompt index 1562ee3..7c08c9c 100644 --- a/zsh/prompt +++ b/zsh/prompt @@ -1,118 +1,5 @@ -#source $DOTFILES_ZSH_DIR/prompt_vcs - -#POWERLINE_TRI_LEFT_FULL='' -#POWERLINE_TRI_LEFT_EMPTY='' -#POWERLINE_TRI_RIGHT_FULL='' -#POWERLINE_TRI_RIGHT_EMPTY='' -#POWERLINE_BRANCH='' -#POWERLINE_LN='' -#POWERLINE_LOCK='' -#POWERLINE_ASIDE='➦' - -POWERLINE_TRI_LEFT_FULL='⮂' -POWERLINE_TRI_LEFT_EMPTY='⮃' -POWERLINE_TRI_RIGHT_FULL='⮀' -POWERLINE_TRI_RIGHT_EMPTY='⮁' -POWERLINE_BRANCH='' -POWERLINE_LN='⭡' -POWERLINE_LOCK='⭤' -POWERLINE_ASIDE='➦' - -UNICODE_BOX_VERTICAL_BAR='│' - -prompt_is_fancy() { - [[ $PROMPT_FANCY -eq 1 ]] -} - -prompt_setup_segments() { - if prompt_is_fancy; then - SEGMENT_SEPARATOR=$POWERLINE_TRI_RIGHT_FULL - RSEGMENT_SEPARATOR=$POWERLINE_TRI_LEFT_FULL - SUBSEGMENT_SEPARATOR=$POWERLINE_TRI_RIGHT_EMPTY - RSUBSEGMENT_SEPARATOR=$POWERLINE_TRI_LEFT_EMPTY - else - SEGMENT_SEPARATOR='' - RSEGMENT_SEPARATOR='' - SUBSEGMENT_SEPARATOR=$UNICODE_BOX_VERTICAL_BAR - RSUBSEGMENT_SEPARATOR=$SUBSEGMENT_SEPARATOR - fi -} - -SEGMENT_DEFAULT_BG=15 -#SEGMENT_DEFAULT_BG=0 -SEGMENT_DEFAULT_FG=14 - -prompt_segment() { - [[ -z $RPROMPT_SEGMENT ]] && lprompt_segment $@ || rprompt_segment $@ -} - -lprompt_segment() { - local bg fg fake_bg - - [[ -n $1 ]] && bg="$1" || bg='default' - [[ -n $2 ]] && fg="$2" || fg='default' - - if [[ $CURRENT_BG == 'default' ]]; then - fake_bg=$SEGMENT_DEFAULT_BG - else - fake_bg=$CURRENT_BG - fi - - if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then - echo -n " %{%K{$bg}%F{$fake_bg}%}$SEGMENT_SEPARATOR%{%F{$fg}%} " - else - echo -n "%{%K{$bg}%}%{%F{$fg}%} " - fi - - CURRENT_BG=$1 - [[ -n $3 ]] && print -Pn $3 -} - -prompt_subsegment() { - echo -n " $SUBSEGMENT_SEPARATOR " - [[ -n $1 ]] && print -Pn $1 -} - -# End the prompt, closing any open segments -prompt_end() { - if [[ -n $CURRENT_BG ]]; then - echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" - else - echo -n "%{%k%}" - fi - echo -n "%{%f%}" - CURRENT_BG='' -} - -rprompt_segment() { - local bg fg fake_bg prev_bg - - [[ -n $1 ]] && bg="$1" || bg='default' - [[ -n $2 ]] && fg="$2" || fg='default' - - if [[ $bg == 'default' ]]; then - fake_bg=$SEGMENT_DEFAULT_BG - else - fake_bg=$bg - fi - prev_bg=$CURRENT_BG - - if [[ $1 != $CURRENT_BG ]]; then - echo -n " %{%K{$prev_bg}%F{$fake_bg}%}$RSEGMENT_SEPARATOR%{%K{$bg}%F{$fg}%} " - else - echo -n "%{%K{$bg}%}%{%F{$fg}%} " - fi - - CURRENT_BG=$1 - [[ -n $3 ]] && print -Pn $3 -} - -rprompt_end() { - echo -n ' ' - echo -n "%{%k%f%}" - CURRENT_BG='' -} - +source "$DOTFILES_SHELL_DIR/prompt_segments" +source "$DOTFILES_ZSH_DIR/prompt_segments" prompt_host() { if [[ $UID -eq 0 ]]; then diff --git a/zsh/prompt_segments b/zsh/prompt_segments new file mode 100644 index 0000000..dea87f3 --- /dev/null +++ b/zsh/prompt_segments @@ -0,0 +1,66 @@ +SEGMENT_DEFAULT_BG=15 +#SEGMENT_DEFAULT_BG=0 +SEGMENT_DEFAULT_FG=14 + +lprompt_segment() { + local bg fg fake_bg + + [[ -n $1 ]] && bg="$1" || bg='default' + [[ -n $2 ]] && fg="$2" || fg='default' + + if [[ $CURRENT_BG == 'default' ]]; then + fake_bg=$SEGMENT_DEFAULT_BG + else + fake_bg=$CURRENT_BG + fi + + if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then + echo -n " %{%K{$bg}%F{$fake_bg}%}$SEGMENT_SEPARATOR%{%F{$fg}%} " + else + echo -n "%{%K{$bg}%}%{%F{$fg}%} " + fi + + CURRENT_BG=$1 + [[ -n $3 ]] && print -Pn $3 +} + +# End the prompt, closing any open segments +prompt_end() { + if [[ -n $CURRENT_BG ]]; then + echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" + else + echo -n "%{%k%}" + fi + echo -n "%{%f%}" + CURRENT_BG='' +} + +rprompt_segment() { + local bg fg fake_bg prev_bg + + [[ -n $1 ]] && bg="$1" || bg='default' + [[ -n $2 ]] && fg="$2" || fg='default' + + if [[ $bg == 'default' ]]; then + fake_bg=$SEGMENT_DEFAULT_BG + else + fake_bg=$bg + fi + prev_bg=$CURRENT_BG + + if [[ $1 != $CURRENT_BG ]]; then + echo -n " %{%K{$prev_bg}%F{$fake_bg}%}$RSEGMENT_SEPARATOR%{%K{$bg}%F{$fg}%} " + else + echo -n "%{%K{$bg}%}%{%F{$fg}%} " + fi + + CURRENT_BG=$1 + [[ -n $3 ]] && print -Pn $3 +} + +rprompt_end() { + echo -n ' ' + echo -n "%{%k%f%}" + CURRENT_BG='' +} +