Resolving conflicts from PR #86

pull/22/head
Ben Hilburn 9 years ago
commit 8ce144423b

@ -1,7 +1,7 @@
## powerlevel9k Theme for ZSH ## powerlevel9k Theme for ZSH
Powerlevel9k is a theme for ZSH which uses [Powerline Powerlevel9k is a theme for ZSH which uses [Powerline
Fonts](https://github.com/Lokaltog/powerline-fonts). It can be used with vanilla Fonts](https://github.com/powerline/fonts). It can be used with vanilla
ZSH, [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh), or ZSH, [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh), or
[Prezto](https://github.com/sorin-ionescu/prezto), and can also be installed [Prezto](https://github.com/sorin-ionescu/prezto), and can also be installed
using [antigen](https://github.com/zsh-users/antigen). using [antigen](https://github.com/zsh-users/antigen).
@ -49,11 +49,13 @@ this theme focus on four primary goals:
- [Double-Lined Prompt](#double-lined-prompt) - [Double-Lined Prompt](#double-lined-prompt)
- [Disable Right Prompt](#disable-right-prompt) - [Disable Right Prompt](#disable-right-prompt)
- [Light Color Theme](#light-color-theme) - [Light Color Theme](#light-color-theme)
- [Icon Customization](#icon-customization)
- [Segment Color Customization](#segment-color-customization) - [Segment Color Customization](#segment-color-customization)
- [Special Segment Colors](#special-segment-colors) - [Special Segment Colors](#special-segment-colors)
- [Troubleshooting](#troubleshooting) - [Troubleshooting](#troubleshooting)
- [Gaps Between Segments](#gaps-between-segments) - [Gaps Between Segments](#gaps-between-segments)
- [Segment Colors are Wrong](#segment-colors-are-wrong) - [Segment Colors are Wrong](#segment-colors-are-wrong)
- [Strange Characters in prompt](#strange-characters-in-prompt)
- [Meta](#meta) - [Meta](#meta)
- [Kudos](#kudos) - [Kudos](#kudos)
- [Developing](#developing) - [Developing](#developing)
@ -277,6 +279,18 @@ to a certain length:
# Limit to the last two folders # Limit to the last two folders
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2 POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
To change the way how the current working directory is truncated, just set:
# truncate the middle part
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_middle"
# truncate from right, leaving the first X characters untouched
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
# default behaviour is to truncate whole directories
In each case you have to specify the length you want to shorten the directory
to. So in some cases `POWERLEVEL9K_SHORTEN_DIR_LENGTH` means characters, in
others whole directories.
#### The 'time' segment #### The 'time' segment
By default the time is show in 'H:M:S' format. If you want to change it, By default the time is show in 'H:M:S' format. If you want to change it,
@ -382,6 +396,24 @@ Light'](https://github.com/altercation/solarized) users. Check it out:
![](http://bhilburn.org/content/images/2015/03/solarized-light.png) ![](http://bhilburn.org/content/images/2015/03/solarized-light.png)
#### Icon Customization
Each icon used can be customized too by specifying a variable named like
the icon and prefixed with 'POWERLEVEL9K'. If you want to use another icon
as segment separators, you can easily do that:
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\uE0B1'
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\uE0B3'
You could get a list of all icons defined in random colors, by adding the
special segment `icons_test` to your prompt:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(icons_test)
This special prompt does not work on the right side, as it would be too long,
and ZSH hides it automatically. Also have in mind, that the output depends on
your `POWERLEVEL9K_MODE` settings.
#### Segment Color Customization #### Segment Color Customization
For each segment in your prompt, you can specify a foreground and background For each segment in your prompt, you can specify a foreground and background
@ -462,12 +494,21 @@ terminal, which should yield `256`. If you see something different, try setting
TERM=xterm-256color TERM=xterm-256color
#### Strange Characters in prompt
If your prompt shows strange character like this:
![](https://cloud.githubusercontent.com/assets/1544760/9156161/e0e584e6-3ed0-11e5-897a-2318a8e32d35.png)
it is most likely that you set `POWERLEVEL9K_MODE="awesome-patched"`, but
did not install an [awesome-font](https://github.com/gabrielelana/awesome-terminal-fonts). For most other modes, you need a [powerline-patched](https://github.com/powerline/fonts) font.
### Meta ### Meta
#### Kudos #### Kudos
This theme wouldn't have happened without inspiration from the original This theme wouldn't have happened without inspiration from the original
[agnoster](https://gist.github.com/agnoster/3712874) Oh-My-ZSH theme. [agnoster](https://github.com/agnoster/agnoster-zsh-theme) ZSH theme.
Before creating this theme, I also tried [jeremyFreeAgent's Before creating this theme, I also tried [jeremyFreeAgent's
theme](https://github.com/jeremyFreeAgent/oh-my-zsh-powerline-theme) and theme](https://github.com/jeremyFreeAgent/oh-my-zsh-powerline-theme) and

@ -12,197 +12,205 @@
################################################################ ################################################################
# Please see the README file located in the source repository for full docs. # Please see the README file located in the source repository for full docs.
# What follows is a brief list of the settings variables used by this theme. # There are a lot of easy ways you can customize your prompt segments and
# You should define these variables in your `~/.zshrc`. # theming with simple variables defined in your `~/.zshrc`.
#
# Customize which segments appear in which prompts (below is also the default):
# POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
# POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
#
# Set your Amazon Web Services profile for the `aws` segment:
# export AWS_DEFAULT_PROFILE=<profile_name>
#
# Set your username for the `context` segment:
# export DEFAULT_USER=<your username>
#
# Customize the format of the time segment. Example of reverse format:
# POWERLEVEL9K_TIME_FORMAT='%D{%S:%M:%H}'
#
# Show the hash/changeset string in the `vcs` segment:
# POWERLEVEL9K_SHOW_CHANGESET=true
# Set the length of the hash/changeset if enabled in the `vcs` segment:
# POWERLEVEL9K_CHANGESET_HASH_LENGTH=6
#
# Make powerlevel9k a double-lined prompt:
# POWERLEVEL9K_PROMPT_ON_NEWLINE=true
#
# Set the colorscheme:
# POWERLEVEL9K_COLOR_SCHEME='light'
################################################################ ################################################################
## Debugging ## Turn on for Debugging
#zstyle ':vcs_info:*+*:*' debug true #zstyle ':vcs_info:*+*:*' debug true
#set -o xtrace #set -o xtrace
# The `CURRENT_BG` variable is used to remember what the last BG color used was ################################################################
# when building the left-hand prompt. Because the RPROMPT is created from # Utility functions
# right-left but reads the opposite, this isn't necessary for the other side. ################################################################
CURRENT_BG='NONE'
# These characters require the Powerline fonts to work properly. If see boxes or # Exits with 0 if a variable has been previously defined (even if empty)
# bizarre characters below, your fonts are not correctly installed. If you # Takes the name of a variable that should be checked.
# do not want to install a special font, you can set `POWERLEVEL9K_MODE` to function defined() {
local varname="$1"
typeset -p "$varname" > /dev/null 2>&1
}
# Safety function for printing icons
# Prints the named icon, or if that icon is undefined, the string name.
function print_icon() {
local icon_name=$1
local ICON_USER_VARIABLE=POWERLEVEL9K_${icon_name}
local USER_ICON=${(P)ICON_USER_VARIABLE}
if defined "$ICON_USER_VARIABLE"; then
echo -n $USER_ICON
else
echo -n ${icons[$icon_name]}
fi
}
# Given the name of a variable and a default value, sets the variable
# value to the default only if it has not been defined.
#
# Typeset cannot set the value for an array, so this will only work
# for scalar values.
function set_default() {
local varname="$1"
local default_value="$2"
defined "$varname" || typeset -g "$varname"="$default_value"
}
################################################################
# Icons
################################################################
# These characters require the Powerline fonts to work properly. If you see
# boxes or bizarre characters below, your fonts are not correctly installed. If
# you do not want to install a special font, you can set `POWERLEVEL9K_MODE` to
# `compatible`. This shows all icons in regular symbols. # `compatible`. This shows all icons in regular symbols.
# Initialize the icon list according to the user's `POWERLEVEL9K_MODE`.
typeset -gAH icons
case $POWERLEVEL9K_MODE in case $POWERLEVEL9K_MODE in
'flat') 'flat'|'awesome-patched')
# Awesome-Patched Font required!
# See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
LEFT_SEGMENT_SEPARATOR=''
RIGHT_SEGMENT_SEPARATOR=''
ROOT_ICON="\UE801" # 
RUBY_ICON="\UE847" # 
AWS_ICON="\UE895" # 
BACKGROUND_JOBS_ICON="\UE82F " # 
TEST_ICON="\UE891" # 
OK_ICON="\U2713" # ✓
FAIL_ICON="\U2718" # ✘
SYMFONY_ICON="SF"
APPLE_ICON=$'\UF8FF' # 
FREEBSD_ICON=$'\U1F608 ' # 😈
LINUX_ICON=$'\U1F427 ' # 🐧
SUNOS_ICON=$'\U1F31E ' # 🌞
VCS_UNTRACKED_ICON="\UE16C" # 
VCS_UNSTAGED_ICON="\UE17C" # 
VCS_STAGED_ICON="\UE168" # 
VCS_STASH_ICON="\UE133 " # 
#VCS_INCOMING_CHANGES="\UE1EB " # 
#VCS_INCOMING_CHANGES="\UE80D " # 
VCS_INCOMING_CHANGES="\UE131 " # 
#VCS_OUTGOING_CHANGES="\UE1EC " # 
#VCS_OUTGOING_CHANGES="\UE80E " # 
VCS_OUTGOING_CHANGES="\UE132 " # 
VCS_TAG_ICON="\UE817 " # 
VCS_BOOKMARK_ICON="\UE87B" # 
VCS_COMMIT_ICON="\UE821 " # 
VCS_BRANCH_ICON=$'\UE220' # 
VCS_REMOTE_BRANCH_ICON=" \UE804 " # 
VCS_GIT_ICON="\UE20E " # 
VCS_HG_ICON="\UE1C3 " # 
;;
'compatible')
LEFT_SEGMENT_SEPARATOR="\U2B80" # ⮀
RIGHT_SEGMENT_SEPARATOR="\U2B82" # ⮂
ROOT_ICON="\U26A1" # ⚡
RUBY_ICON=''
AWS_ICON="AWS:"
BACKGROUND_JOBS_ICON="\U2699" # ⚙
TEST_ICON=''
OK_ICON="\U2713" # ✓
FAIL_ICON="\U2718" # ✘
SYMFONY_ICON="SF"
APPLE_ICON='OSX'
FREEBSD_ICON='BSD'
LINUX_ICON='Lx'
SUNOS_ICON='Sun'
VCS_UNTRACKED_ICON='?'
VCS_UNSTAGED_ICON="\U25CF" # ●
VCS_STAGED_ICON="\U271A" # ✚
VCS_STASH_ICON="\U235F" # ⍟
VCS_INCOMING_CHANGES="\U2193" # ↓
VCS_OUTGOING_CHANGES="\U2191" # ↑
VCS_TAG_ICON=''
VCS_BOOKMARK_ICON="\U263F" # ☿
VCS_COMMIT_ICON=''
VCS_BRANCH_ICON='@'
VCS_REMOTE_BRANCH_ICON="\U2192" # →
VCS_GIT_ICON='Git'
VCS_HG_ICON='HG'
;;
'awesome-patched')
# Awesome-Patched Font required! # Awesome-Patched Font required!
# See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched # See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
LEFT_SEGMENT_SEPARATOR="\UE0B0" #  icons=(
RIGHT_SEGMENT_SEPARATOR="\UE0B2" #  LEFT_SEGMENT_SEPARATOR "\UE0B0" # 
ROOT_ICON="\U26A1" # ⚡ RIGHT_SEGMENT_SEPARATOR "\UE0B2" # 
RUBY_ICON="\UE847" #  ROOT_ICON "\UE801" # 
AWS_ICON="\UE895" #  RUBY_ICON "\UE847" # 
BACKGROUND_JOBS_ICON="\UE82F " #  AWS_ICON "\UE895" # 
TEST_ICON="\UE891" #  BACKGROUND_JOBS_ICON "\UE82F " # 
OK_ICON="\U2713" # ✓ TEST_ICON "\UE891" # 
FAIL_ICON="\U2718" # ✘ OK_ICON "\U2713" # ✓
SYMFONY_ICON="SF" FAIL_ICON "\U2718" # ✘
APPLE_ICON=$'\UF8FF' #  SYMFONY_ICON "SF"
FREEBSD_ICON=$'\U1F608 ' # 😈 NODE_ICON $'\U2B22' # ⬢
LINUX_ICON=$'\U1F427 ' # 🐧 MULTILINE_FIRST_PROMPT_PREFIX $'\U256D'$'\U2500'
SUNOS_ICON=$'\U1F31E ' # 🌞 MULTILINE_SECOND_PROMPT_PREFIX $'\U2570'$'\U2500 '
VCS_UNTRACKED_ICON="\UE16C" #  APPLE_ICON $'\UF8FF' # 
VCS_UNSTAGED_ICON="\UE17C" #  FREEBSD_ICON $'\U1F608 ' # 😈
VCS_STAGED_ICON="\UE168" #  LINUX_ICON $'\U1F427 ' # 🐧
VCS_STASH_ICON="\UE133 " #  SUNOS_ICON $'\U1F31E ' # 🌞
#VCS_INCOMING_CHANGES="\UE1EB " #  HOME_ICON $'\UE12C' # 
#VCS_INCOMING_CHANGES="\UE80D " #  VCS_UNTRACKED_ICON "\UE16C" # 
VCS_INCOMING_CHANGES="\UE131 " #  VCS_UNSTAGED_ICON "\UE17C" # 
#VCS_OUTGOING_CHANGES="\UE1EC " #  VCS_STAGED_ICON "\UE168" # 
#VCS_OUTGOING_CHANGES="\UE80E " #  VCS_STASH_ICON "\UE133 " # 
VCS_OUTGOING_CHANGES="\UE132 " #  #VCS_INCOMING_CHANGES_ICON "\UE1EB " # 
VCS_TAG_ICON="\UE817 " #  #VCS_INCOMING_CHANGES_ICON "\UE80D " # 
VCS_BOOKMARK_ICON="\UE87B" #  VCS_INCOMING_CHANGES_ICON "\UE131 " # 
VCS_COMMIT_ICON="\UE821 " #  #VCS_OUTGOING_CHANGES_ICON "\UE1EC " # 
VCS_BRANCH_ICON=$'\UE220' #  #VCS_OUTGOING_CHANGES_ICON "\UE80E " # 
VCS_REMOTE_BRANCH_ICON=" \UE804 " #  VCS_OUTGOING_CHANGES_ICON "\UE132 " # 
VCS_GIT_ICON="\UE20E " #  VCS_TAG_ICON "\UE817 " # 
VCS_HG_ICON="\UE1C3 " #  VCS_BOOKMARK_ICON "\UE87B" # 
VCS_COMMIT_ICON "\UE821 " # 
VCS_BRANCH_ICON $'\UE220' # 
VCS_REMOTE_BRANCH_ICON " \UE804 " # 
VCS_GIT_ICON "\UE20E " # 
VCS_HG_ICON "\UE1C3 " # 
)
;; ;;
*) *)
# Powerline-Patched Font required! # Powerline-Patched Font required!
# See https://github.com/Lokaltog/powerline-fonts # See https://github.com/Lokaltog/powerline-fonts
LEFT_SEGMENT_SEPARATOR="\UE0B0" #  icons=(
RIGHT_SEGMENT_SEPARATOR="\UE0B2" #  LEFT_SEGMENT_SEPARATOR "\uE0B0" # 
ROOT_ICON="\U26A1" # ⚡ RIGHT_SEGMENT_SEPARATOR "\uE0B2" # 
RUBY_ICON='' ROOT_ICON "\u26A1" # ⚡
AWS_ICON="AWS:" RUBY_ICON ''
BACKGROUND_JOBS_ICON="\U2699" # ⚙ AWS_ICON "AWS:"
TEST_ICON='' BACKGROUND_JOBS_ICON "\u2699" # ⚙
OK_ICON="\U2713" # ✓ TEST_ICON ''
FAIL_ICON="\U2718" # ✘ OK_ICON "\u2713" # ✓
SYMFONY_ICON="SF" FAIL_ICON "\u2718" # ✘
APPLE_ICON='OSX' SYMFONY_ICON "SF"
FREEBSD_ICON='BSD' NODE_ICON $'\u2B22' # ⬢
LINUX_ICON='Lx' MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\u2500'
SUNOS_ICON='Sun' MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\u2500 '
VCS_UNTRACKED_ICON='?' APPLE_ICON 'OSX'
VCS_UNSTAGED_ICON="\U25CF" # ● FREEBSD_ICON 'BSD'
VCS_STAGED_ICON="\U271A" # ✚ LINUX_ICON 'Lx'
VCS_STASH_ICON="\U235F" # ⍟ SUNOS_ICON 'Sun'
VCS_INCOMING_CHANGES="\U2193" # ↓ HOME_ICON ''
VCS_OUTGOING_CHANGES="\U2191" # ↑ VCS_UNTRACKED_ICON '?'
VCS_TAG_ICON='' VCS_UNSTAGED_ICON "\u25CF" # ●
VCS_BOOKMARK_ICON="\U263F" # ☿ VCS_STAGED_ICON "\u271A" # ✚
VCS_COMMIT_ICON='' VCS_STASH_ICON "\u235F" # ⍟
VCS_BRANCH_ICON="\UE0A0 " #  VCS_INCOMING_CHANGES_ICON "\u2193" # ↓
VCS_REMOTE_BRANCH_ICON="\U2192" # → VCS_OUTGOING_CHANGES_ICON "\u2191" # ↑
VCS_GIT_ICON="" VCS_TAG_ICON ''
VCS_HG_ICON="" VCS_BOOKMARK_ICON "\u263F" # ☿
VCS_COMMIT_ICON ''
VCS_BRANCH_ICON "\uE0A0 " # 
VCS_REMOTE_BRANCH_ICON "\u2192" # →
VCS_GIT_ICON ""
VCS_HG_ICON ""
)
;; ;;
esac esac
# Override the above icon settings with any user-defined variables.
case $POWERLEVEL9K_MODE in
'flat')
icons[LEFT_SEGMENT_SEPARATOR]=''
icons[RIGHT_SEGMENT_SEPARATOR]=''
;;
'compatible')
icons[LEFT_SEGMENT_SEPARATOR]="\u2B80" # ⮀
icons[RIGHT_SEGMENT_SEPARATOR]="\u2B82" # ⮂
icons[VCS_BRANCH_ICON]='@'
;;
esac
if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then
icons[VCS_BRANCH_ICON]=''
fi
# OS detection for the `os_icon` segment # OS detection for the `os_icon` segment
case $(uname) in case $(uname) in
Darwin) OS_ICON=$APPLE_ICON ;; Darwin)
FreeBSD) OS_ICON=$FREEBSD_ICON ;; OS='OSX'
OpenBSD) OS_ICON=$FREEBSD_ICON ;; OS_ICON=$(print_icon 'APPLE_ICON')
DragonFly) OS_ICON=$FREEBSD_ICON ;; ;;
Linux) OS_ICON=$LINUX_ICON ;; FreeBSD)
SunOS) OS_ICON=$SUNOS_ICON ;; OS='BSD'
*) OS_ICON='' ;; OS_ICON=$(print_icon 'FREEBSD_ICON')
;;
OpenBSD)
OS='BSD'
OS_ICON=$(print_icon 'FREEBSD_ICON')
;;
DragonFly)
OS='BSD'
OS_ICON=$(print_icon 'FREEBSD_ICON')
;;
Linux)
OS='Linux'
OS_ICON=$(print_icon 'LINUX_ICON')
;;
SunOS)
OS='Solaris'
OS_ICON=$(print_icon 'SUNOS_ICON')
;;
*)
OS=''
OS_ICON=''
;;
esac esac
if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then # Determine the correct sed parameter.
VCS_BRANCH_ICON='' #
# `sed` is unfortunately not consistent across OSes when it comes to flags.
SED_EXTENDED_REGEX_PARAMETER="-r"
if [[ "$OS" == 'OSX' ]]; then
local IS_BSD_SED=$(sed --version &>> /dev/null || echo "BSD sed")
if [[ -n "$IS_BSD_SED" ]]; then
SED_EXTENDED_REGEX_PARAMETER="-E"
fi
fi fi
################################################################ ################################################################
# color scheme # Color Scheme
################################################################ ################################################################
if [[ "$POWERLEVEL9K_COLOR_SCHEME" == "light" ]]; then if [[ "$POWERLEVEL9K_COLOR_SCHEME" == "light" ]]; then
@ -215,16 +223,8 @@ else
DEFAULT_COLOR_DARK="236" DEFAULT_COLOR_DARK="236"
fi fi
VCS_FOREGROUND_COLOR=$DEFAULT_COLOR set_default POWERLEVEL9K_VCS_FOREGROUND "$DEFAULT_COLOR"
VCS_FOREGROUND_COLOR_DARK=$DEFAULT_COLOR_DARK set_default POWERLEVEL9K_VCS_DARK_FOREGROUND "$DEFAULT_COLOR_DARK"
# If user has defined custom colors for the `vcs` segment, override the defaults
if [[ -n $POWERLEVEL9K_VCS_FOREGROUND ]]; then
VCS_FOREGROUND_COLOR=$POWERLEVEL9K_VCS_FOREGROUND
fi
if [[ -n $POWERLEVEL9K_VCS_DARK_FOREGROUND ]]; then
VCS_FOREGROUND_COLOR_DARK=$POWERLEVEL9K_VCS_DARK_FOREGROUND
fi
################################################################ ################################################################
# VCS Information Settings # VCS Information Settings
@ -242,26 +242,26 @@ if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then
VCS_CHANGESET_HASH_LENGTH="$POWERLEVEL9K_CHANGESET_HASH_LENGTH" VCS_CHANGESET_HASH_LENGTH="$POWERLEVEL9K_CHANGESET_HASH_LENGTH"
fi fi
VCS_CHANGESET_PREFIX="%F{$VCS_FOREGROUND_COLOR_DARK}$VCS_COMMIT_ICON%0.$VCS_CHANGESET_HASH_LENGTH""i%f " VCS_CHANGESET_PREFIX="%F{$POWERLEVEL9K_VCS_DARK_FOREGROUND}$(print_icon 'VCS_COMMIT_ICON')%0.$VCS_CHANGESET_HASH_LENGTH""i%f "
fi fi
zstyle ':vcs_info:*' enable git hg zstyle ':vcs_info:*' enable git hg
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%F{$VCS_FOREGROUND_COLOR}%b%c%u%m%f" VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%F{$POWERLEVEL9K_VCS_FOREGROUND}%b%c%u%m%f"
zstyle ':vcs_info:git*:*' formats "%F{$VCS_FOREGROUND_COLOR}$VCS_GIT_ICON%f$VCS_DEFAULT_FORMAT" zstyle ':vcs_info:git*:*' formats "%F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_GIT_ICON')%f$VCS_DEFAULT_FORMAT"
zstyle ':vcs_info:hg*:*' formats "%F{$VCS_FOREGROUND_COLOR}$VCS_HG_ICON%f$VCS_DEFAULT_FORMAT" zstyle ':vcs_info:hg*:*' formats "%F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_HG_ICON')%f$VCS_DEFAULT_FORMAT"
zstyle ':vcs_info:*' actionformats "%b %F{red}| %a%f" zstyle ':vcs_info:*' actionformats "%b %F{red}| %a%f"
zstyle ':vcs_info:*' stagedstr " %F{$VCS_FOREGROUND_COLOR}$VCS_STAGED_ICON%f" zstyle ':vcs_info:*' stagedstr " %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_STAGED_ICON')%f"
zstyle ':vcs_info:*' unstagedstr " %F{$VCS_FOREGROUND_COLOR}$VCS_UNSTAGED_ICON%f" zstyle ':vcs_info:*' unstagedstr " %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_UNSTAGED_ICON')%f"
zstyle ':vcs_info:git*+set-message:*' hooks vcs-detect-changes git-untracked git-aheadbehind git-stash git-remotebranch git-tagname zstyle ':vcs_info:git*+set-message:*' hooks vcs-detect-changes git-untracked git-aheadbehind git-stash git-remotebranch git-tagname
zstyle ':vcs_info:hg*+set-message:*' hooks vcs-detect-changes zstyle ':vcs_info:hg*+set-message:*' hooks vcs-detect-changes
# For Hg, only show the branch name # For Hg, only show the branch name
zstyle ':vcs_info:hg*:*' branchformat "$VCS_BRANCH_ICON%b" zstyle ':vcs_info:hg*:*' branchformat "$(print_icon 'VCS_BRANCH_ICON')%b"
# The `get-revision` function must be turned on for dirty-check to work for Hg # The `get-revision` function must be turned on for dirty-check to work for Hg
zstyle ':vcs_info:hg*:*' get-revision true zstyle ':vcs_info:hg*:*' get-revision true
zstyle ':vcs_info:hg*:*' get-bookmarks true zstyle ':vcs_info:hg*:*' get-bookmarks true
@ -273,8 +273,21 @@ fi
################################################################ ################################################################
# Prompt Segment Constructors # Prompt Segment Constructors
#
# Methodology behind user-defined variables overwriting colors:
# The first parameter to the segment constructors is the calling function's
# name. From this function name, we strip the "prompt_"-prefix and
# uppercase it. This is then prefixed with "POWERLEVEL9K_" and suffixed
# with either "_BACKGROUND" or "_FOREGROUND", thus giving us the variable
# name. So each new segment is user-overwritable by a variable following
# this naming convention.
################################################################ ################################################################
# The `CURRENT_BG` variable is used to remember what the last BG color used was
# when building the left-hand prompt. Because the RPROMPT is created from
# right-left but reads the opposite, this isn't necessary for the other side.
CURRENT_BG='NONE'
# Begin a left prompt segment # Begin a left prompt segment
# Takes four arguments: # Takes four arguments:
# * $1: Name of the function that was orginally invoked (mandatory). # * $1: Name of the function that was orginally invoked (mandatory).
@ -285,11 +298,6 @@ fi
# The latter three can be omitted, # The latter three can be omitted,
left_prompt_segment() { left_prompt_segment() {
# Overwrite given background-color by user defined variable for this segment. # Overwrite given background-color by user defined variable for this segment.
# We get as first Parameter the function name, which called this function.
# From the given function name, we strip the "prompt_"-prefix and uppercase it.
# This is, prefixed with "POWERLEVEL9K_" and suffixed with either "_BACKGROUND"
# of "_FOREGROUND", our variable name. So each new Segment should automatically
# be overwritable by a variable following this naming convention.
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND
local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE} local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE}
[[ -n $BG_COLOR_MODIFIER ]] && 2=$BG_COLOR_MODIFIER [[ -n $BG_COLOR_MODIFIER ]] && 2=$BG_COLOR_MODIFIER
@ -304,7 +312,7 @@ left_prompt_segment() {
[[ -n $3 ]] && fg="%F{$3}" || fg="%f" [[ -n $3 ]] && fg="%F{$3}" || fg="%f"
if [[ $CURRENT_BG != 'NONE' && $2 != $CURRENT_BG ]]; then if [[ $CURRENT_BG != 'NONE' && $2 != $CURRENT_BG ]]; then
# Middle segment # Middle segment
echo -n "%{$bg%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR%{$fg%} " echo -n "%{$bg%F{$CURRENT_BG}%}$(print_icon 'LEFT_SEGMENT_SEPARATOR')%{$fg%} "
else else
# First segment # First segment
echo -n "%{$bg%}%{$fg%} " echo -n "%{$bg%}%{$fg%} "
@ -313,10 +321,10 @@ left_prompt_segment() {
[[ -n $4 ]] && echo -n "$4 " [[ -n $4 ]] && echo -n "$4 "
} }
# End the left prompt, closing any open segments # End the left prompt, closes the final segment.
left_prompt_end() { left_prompt_end() {
if [[ -n $CURRENT_BG ]]; then if [[ -n $CURRENT_BG ]]; then
echo -n "%{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR" echo -n "%{%k%F{$CURRENT_BG}%}$(print_icon 'LEFT_SEGMENT_SEPARATOR')"
else else
echo -n "%{%k%}" echo -n "%{%k%}"
fi fi
@ -346,12 +354,12 @@ right_prompt_segment() {
local bg fg local bg fg
[[ -n $2 ]] && bg="%K{$2}" || bg="%k" [[ -n $2 ]] && bg="%K{$2}" || bg="%k"
[[ -n $3 ]] && fg="%F{$3}" || fg="%f" [[ -n $3 ]] && fg="%F{$3}" || fg="%f"
echo -n "%f%F{$2}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} " echo -n "%f%F{$2}$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f%{$bg%}%{$fg%} "
[[ -n $4 ]] && echo -n "$4 " [[ -n $4 ]] && echo -n "$4 "
} }
################################################################ ################################################################
# The 'vcs' Segment and VCS_INFO hooks / helper functions # The `vcs` Segment and VCS_INFO hooks / helper functions
################################################################ ################################################################
prompt_vcs() { prompt_vcs() {
local vcs_prompt="${vcs_info_msg_0_}" local vcs_prompt="${vcs_info_msg_0_}"
@ -370,7 +378,7 @@ prompt_vcs() {
function +vi-git-untracked() { function +vi-git-untracked() {
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \ if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \
-n $(git ls-files --others --exclude-standard | sed q) ]]; then -n $(git ls-files --others --exclude-standard | sed q) ]]; then
hook_com[unstaged]+=" %F{$VCS_FOREGROUND_COLOR}$VCS_UNTRACKED_ICON%f" hook_com[unstaged]+=" %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_UNTRACKED_ICON')%f"
fi fi
} }
@ -383,12 +391,12 @@ function +vi-git-aheadbehind() {
# for git prior to 1.7 # for git prior to 1.7
# ahead=$(git rev-list origin/${branch_name}..HEAD | wc -l) # ahead=$(git rev-list origin/${branch_name}..HEAD | wc -l)
ahead=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l) ahead=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l)
(( $ahead )) && gitstatus+=( " %F{$VCS_FOREGROUND_COLOR}$VCS_OUTGOING_CHANGES${ahead// /}%f" ) (( $ahead )) && gitstatus+=( " %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_OUTGOING_CHANGES_ICON')${ahead// /}%f" )
# for git prior to 1.7 # for git prior to 1.7
# behind=$(git rev-list HEAD..origin/${branch_name} | wc -l) # behind=$(git rev-list HEAD..origin/${branch_name} | wc -l)
behind=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l) behind=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l)
(( $behind )) && gitstatus+=( " %F{$VCS_FOREGROUND_COLOR}$VCS_INCOMING_CHANGES${behind// /}%f" ) (( $behind )) && gitstatus+=( " %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_INCOMING_CHANGES_ICON')${behind// /}%f" )
hook_com[misc]+=${(j::)gitstatus} hook_com[misc]+=${(j::)gitstatus}
} }
@ -400,12 +408,12 @@ function +vi-git-remotebranch() {
remote=${$(git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/} remote=${$(git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/}
branch_name=${$(git symbolic-ref --short HEAD 2>/dev/null)} branch_name=${$(git symbolic-ref --short HEAD 2>/dev/null)}
hook_com[branch]="%F{$VCS_FOREGROUND_COLOR}$VCS_BRANCH_ICON${hook_com[branch]}%f" hook_com[branch]="%F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_BRANCH_ICON')${hook_com[branch]}%f"
# Always show the remote # Always show the remote
#if [[ -n ${remote} ]] ; then #if [[ -n ${remote} ]] ; then
# Only show the remote if it differs from the local # Only show the remote if it differs from the local
if [[ -n ${remote} && ${remote#*/} != ${branch_name} ]] ; then if [[ -n ${remote} && ${remote#*/} != ${branch_name} ]] ; then
hook_com[branch]+="%F{$VCS_FOREGROUND_COLOR}$VCS_REMOTE_BRANCH_ICON%f%F{$VCS_FOREGROUND_COLOR}${remote// /}%f" hook_com[branch]+="%F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_REMOTE_BRANCH_ICON')%f%F{$POWERLEVEL9K_VCS_FOREGROUND}${remote// /}%f"
fi fi
} }
@ -413,7 +421,7 @@ function +vi-git-tagname() {
local tag local tag
tag=$(git describe --tags --exact-match HEAD 2>/dev/null) tag=$(git describe --tags --exact-match HEAD 2>/dev/null)
[[ -n "${tag}" ]] && hook_com[branch]=" %F{$VCS_FOREGROUND_COLOR}$VCS_TAG_ICON${tag}%f" [[ -n "${tag}" ]] && hook_com[branch]=" %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_TAG_ICON')${tag}%f"
} }
# Show count of stashed changes # Show count of stashed changes
@ -423,17 +431,16 @@ function +vi-git-stash() {
if [[ -s $(git rev-parse --git-dir)/refs/stash ]] ; then if [[ -s $(git rev-parse --git-dir)/refs/stash ]] ; then
stashes=$(git stash list 2>/dev/null | wc -l) stashes=$(git stash list 2>/dev/null | wc -l)
hook_com[misc]+=" %F{$VCS_FOREGROUND_COLOR}$VCS_STASH_ICON${stashes// /}%f" hook_com[misc]+=" %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_STASH_ICON')${stashes// /}%f"
fi fi
} }
function +vi-hg-bookmarks() { function +vi-hg-bookmarks() {
if [[ -n "${hgbmarks[@]}" ]]; then if [[ -n "${hgbmarks[@]}" ]]; then
hook_com[hg-bookmark-string]=" %F{$VCS_FOREGROUND_COLOR}$VCS_BOOKMARK_ICON${hgbmarks[@]}%f" hook_com[hg-bookmark-string]=" %F{$POWERLEVEL9K_VCS_FOREGROUND}$(print_icon 'VCS_BOOKMARK_ICON')${hgbmarks[@]}%f"
# And to signal, that we want to use the sting we just generated, # To signal that we want to use the sting we just generated, set the special
# set the special variable `ret' to something other than the default # variable `ret' to something other than the default zero:
# zero:
ret=1 ret=1
return 0 return 0
fi fi
@ -448,7 +455,7 @@ function +vi-vcs-detect-changes() {
} }
################################################################ ################################################################
# Prompt Segments # Prompt Segment Definitions
################################################################ ################################################################
# The `CURRENT_BG` variable is used to remember what the last BG color used was # The `CURRENT_BG` variable is used to remember what the last BG color used was
@ -461,7 +468,7 @@ prompt_aws() {
local aws_profile="$AWS_DEFAULT_PROFILE" local aws_profile="$AWS_DEFAULT_PROFILE"
if [[ -n "$aws_profile" ]]; if [[ -n "$aws_profile" ]];
then then
$1_prompt_segment "$0" red white "$AWS_ICON $aws_profile" $1_prompt_segment "$0" red white "$(print_icon 'AWS_ICON') $aws_profile"
fi fi
} }
@ -482,11 +489,22 @@ prompt_context() {
prompt_dir() { prompt_dir() {
local current_path='%~' local current_path='%~'
if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then
# shorten path to $POWERLEVEL9K_SHORTEN_DIR_LENGTH
current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:.../:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c" case "$POWERLEVEL9K_SHORTEN_STRATEGY" in
truncate_middle)
current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1\.\.\2\//g")
;;
truncate_from_right)
current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+\//\1..\//g")
;;
*)
current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:.../:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c"
;;
esac
fi fi
$1_prompt_segment "$0" "blue" "$DEFAULT_COLOR" "$current_path" $1_prompt_segment "$0" "blue" "$DEFAULT_COLOR" "$(print_icon 'HOME_ICON') $current_path"
} }
# Command number (in local history) # Command number (in local history)
@ -494,6 +512,16 @@ prompt_history() {
$1_prompt_segment "$0" "244" "$DEFAULT_COLOR" '%h' $1_prompt_segment "$0" "244" "$DEFAULT_COLOR" '%h'
} }
prompt_icons_test() {
for key in "${(@k)icons}"; do
# The lower color spectrum in ZSH makes big steps. Choosing
# the next color has enough contrast to read.
local random_color=$((RANDOM % 8))
local next_color=$((random_color+1))
$1_prompt_segment "$0" "$random_color" "$next_color" "$key: ${icons[$key]}"
done
}
# Right Status: (return code, root status, background jobs) # Right Status: (return code, root status, background jobs)
# This creates a status segment for the *right* prompt. Exact same thing as # This creates a status segment for the *right* prompt. Exact same thing as
# above - just other side. # above - just other side.
@ -505,12 +533,12 @@ prompt_longstatus() {
symbols+="%F{226}%? ↵" symbols+="%F{226}%? ↵"
bg="009" bg="009"
else else
symbols+="%{%F{"046"}%}$OK_ICON" symbols+="%{%F{"046"}%}$(print_icon 'OK_ICON')"
bg="008" bg="008"
fi fi
[[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $ROOT_ICON" [[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $(print_icon 'ROOT_ICON')"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$BACKGROUND_JOBS_ICON" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$(print_icon 'BACKGROUND_JOBS_ICON')"
[[ -n "$symbols" ]] && $1_prompt_segment "$0" "$bg" "$DEFAULT_COLOR" "$symbols" [[ -n "$symbols" ]] && $1_prompt_segment "$0" "$bg" "$DEFAULT_COLOR" "$symbols"
} }
@ -519,9 +547,8 @@ prompt_longstatus() {
prompt_node_version() { prompt_node_version() {
local nvm_prompt=$(node -v 2>/dev/null) local nvm_prompt=$(node -v 2>/dev/null)
[[ -z "${nvm_prompt}" ]] && return [[ -z "${nvm_prompt}" ]] && return
NODE_ICON=$'\U2B22' # ⬢
$1_prompt_segment "$0" "green" "white" "${nvm_prompt:1} $NODE_ICON" $1_prompt_segment "$0" "green" "white" "${nvm_prompt:1} $(print_icon 'NODE_ICON')"
} }
# print a little OS icon # print a little OS icon
@ -542,7 +569,7 @@ prompt_rspec_stats() {
local code_amount=$(ls -1 app/**/*.rb | wc -l) local code_amount=$(ls -1 app/**/*.rb | wc -l)
local tests_amount=$(ls -1 spec/**/*.rb | wc -l) local tests_amount=$(ls -1 spec/**/*.rb | wc -l)
build_test_stats "$1" $0 "$code_amount" $tests_amount "RSpec $TEST_ICON" build_test_stats "$1" $0 "$code_amount" $tests_amount "RSpec $(print_icon 'TEST_ICON')"
fi fi
} }
@ -551,7 +578,7 @@ prompt_rvm() {
local rvm_prompt local rvm_prompt
rvm_prompt=`rvm-prompt` rvm_prompt=`rvm-prompt`
if [ "$rvm_prompt" != "" ]; then if [ "$rvm_prompt" != "" ]; then
$1_prompt_segment "$0" "240" "$DEFAULT_COLOR" "$rvm_prompt $RUBY_ICON " $1_prompt_segment "$0" "240" "$DEFAULT_COLOR" "$rvm_prompt $(print_icon 'RUBY_ICON') "
fi fi
} }
@ -560,9 +587,9 @@ prompt_rvm() {
prompt_status() { prompt_status() {
local symbols local symbols
symbols=() symbols=()
[[ "$RETVAL" -ne 0 ]] && symbols+="%{%F{red}%}$FAIL_ICON" [[ "$RETVAL" -ne 0 ]] && symbols+="%{%F{red}%}$(print_icon 'FAIL_ICON')"
[[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $ROOT_ICON" [[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $(print_icon 'ROOT_ICON')"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$BACKGROUND_JOBS_ICON" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$(print_icon 'BACKGROUND_JOBS_ICON')"
[[ -n "$symbols" ]] && $1_prompt_segment "$0" "$DEFAULT_COLOR" "default" "$symbols" [[ -n "$symbols" ]] && $1_prompt_segment "$0" "$DEFAULT_COLOR" "default" "$symbols"
} }
@ -573,7 +600,7 @@ prompt_symfony2_tests() {
local code_amount=$(ls -1 src/**/*.php | grep -v Tests | wc -l) local code_amount=$(ls -1 src/**/*.php | grep -v Tests | wc -l)
local tests_amount=$(ls -1 src/**/*.php | grep Tests | wc -l) local tests_amount=$(ls -1 src/**/*.php | grep Tests | wc -l)
build_test_stats "$1" "$0" "$code_amount" "$tests_amount" "SF2 $TEST_ICON" build_test_stats "$1" "$0" "$code_amount" "$tests_amount" "SF2 $(print_icon 'TEST_ICON')"
fi fi
} }
@ -581,7 +608,7 @@ prompt_symfony2_tests() {
prompt_symfony2_version() { prompt_symfony2_version() {
if [[ -f app/bootstrap.php.cache ]]; then if [[ -f app/bootstrap.php.cache ]]; then
local symfony2_version=$(grep " VERSION " app/bootstrap.php.cache | sed -e 's/[^.0-9]*//g') local symfony2_version=$(grep " VERSION " app/bootstrap.php.cache | sed -e 's/[^.0-9]*//g')
$1_prompt_segment "$0" "240" "$DEFAULT_COLOR" "$SYMFONY_ICON $symfony2_version" $1_prompt_segment "$0" "240" "$DEFAULT_COLOR" "$(print_icon 'SYMFONY_ICON') $symfony2_version"
fi fi
} }
@ -628,9 +655,7 @@ prompt_virtualenv() {
build_left_prompt() { build_left_prompt() {
RETVAL=$? RETVAL=$?
if [[ "${#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS}" == 0 ]]; then defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
fi
for element in $POWERLEVEL9K_LEFT_PROMPT_ELEMENTS; do for element in $POWERLEVEL9K_LEFT_PROMPT_ELEMENTS; do
prompt_$element "left" prompt_$element "left"
@ -643,9 +668,7 @@ build_left_prompt() {
build_right_prompt() { build_right_prompt() {
RETVAL=$? RETVAL=$?
if [[ "${#POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS}" == 0 ]]; then defined POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS || POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(longstatus history time)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(longstatus history time)
fi
for element in $POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS; do for element in $POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS; do
prompt_$element "right" prompt_$element "right"
@ -653,6 +676,14 @@ build_right_prompt() {
} }
powerlevel9k_init() { powerlevel9k_init() {
# Display a warning if the terminal does not support 256 colors
local term_colors
term_colors=$(tput colors)
if (( $term_colors < 256 )); then
print -P "%F{red}WARNING!%f Your terminal supports less than 256 colors!"
print "You should set TERM=xterm-256colors in your ~/.zshrc"
fi
setopt LOCAL_OPTIONS setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst) prompt_opts=(cr percent subst)
@ -666,11 +697,8 @@ powerlevel9k_init() {
add-zsh-hook precmd vcs_info add-zsh-hook precmd vcs_info
if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then
[[ -n $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX ]] || POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="╭─" PROMPT="$(print_icon 'MULTILINE_FIRST_PROMPT_PREFIX')%{%f%b%k%}"'$(build_left_prompt)'"
[[ -n $POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX ]] || POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="╰─ " $(print_icon 'MULTILINE_SECOND_PROMPT_PREFIX')"
PROMPT="$POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX%{%f%b%k%}"'$(build_left_prompt)'"
$POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX"
# The right prompt should be on the same line as the first line of the left # The right prompt should be on the same line as the first line of the left
# prompt. To do so, there is just a quite ugly workaround: Before zsh draws # prompt. To do so, there is just a quite ugly workaround: Before zsh draws
# the RPROMPT, we advise it, to go one line up. At the end of RPROMPT, we # the RPROMPT, we advise it, to go one line up. At the end of RPROMPT, we

Loading…
Cancel
Save