Merge branch 'next' into ram_prompt

pull/22/head
Dominik Ritter 9 years ago
commit e8a53c253b

@ -195,8 +195,13 @@ a number of additional glyphs.
You then need to indicate that you wish to use the additional glyphs by defining You then need to indicate that you wish to use the additional glyphs by defining
the following in your `~/.zshrc`: the following in your `~/.zshrc`:
POWERLEVEL9K_MODE='awesome-fontconfig'
If you chose to use already patched fonts, use instead :
POWERLEVEL9K_MODE='awesome-patched' POWERLEVEL9K_MODE='awesome-patched'
If you choose to make use of this, your prompt will look something like this: If you choose to make use of this, your prompt will look something like this:
![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png) ![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png)
@ -233,7 +238,6 @@ currently available are:
* **aws** - The current AWS profile, if active (more info below) * **aws** - The current AWS profile, if active (more info below)
* **context** - Your username and host (more info below) * **context** - Your username and host (more info below)
* **vi_mode** - Vi editing mode (NORMAL|INSERT).
* **dir** - Your current working directory. * **dir** - Your current working directory.
* **history** - The command number for the current line. * **history** - The command number for the current line.
* **ip** - Shows the current IP address. * **ip** - Shows the current IP address.
@ -244,10 +248,10 @@ currently available are:
* **rbenv** - Ruby environment information (if one is active). * **rbenv** - Ruby environment information (if one is active).
* **rspec_stats** - Show a ratio of test classes vs code classes for RSpec. * **rspec_stats** - Show a ratio of test classes vs code classes for RSpec.
* **status** - The return code of the previous command, and status of background jobs. * **status** - The return code of the previous command, and status of background jobs.
* **longstatus** - Same as previous, except this creates a status segment for the *right* prompt.
* **symfony2_tests** - Show a ratio of test classes vs code classes for Symfony2. * **symfony2_tests** - Show a ratio of test classes vs code classes for Symfony2.
* **symfony2_version** - Show the current Symfony2 version, if you are in a Symfony2-Project dir. * **symfony2_version** - Show the current Symfony2 version, if you are in a Symfony2-Project dir.
* **time** - System time. * **time** - System time.
* **vi_mode** - Vi editing mode (NORMAL|INSERT).
* **virtualenv** - Your Python [VirtualEnv](https://virtualenv.pypa.io/en/latest/). * **virtualenv** - Your Python [VirtualEnv](https://virtualenv.pypa.io/en/latest/).
* **vcs** - Information about this `git` or `hg` repository (if you are in one). * **vcs** - Information about this `git` or `hg` repository (if you are in one).
@ -255,7 +259,7 @@ To specify which segments you want, just add the following variables to your
`~/.zshrc`. If you don't customize this, the below configuration is the default: `~/.zshrc`. If you don't customize this, the below configuration is the default:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs) POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(longstatus history time) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
#### The AWS Profile Segment #### The AWS Profile Segment
@ -321,6 +325,13 @@ segment, as well:
# Output time, date, and a symbol from the "Awesome Powerline Font" set # Output time, date, and a symbol from the "Awesome Powerline Font" set
POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}" POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}"
#### Showing Status
Usually we display always the status, and in case a command failed, the return
code of the last executed program. In case you want to display the status only
if something special happend, you can set `POWERLEVEL9K_STATUS_VERBOSE=false`
in your `~/.zshrc`.
#### Unit Test Ratios #### Unit Test Ratios
The `symfony2_tests` and `rspec_tests` segments both show a ratio of "real" The `symfony2_tests` and `rspec_tests` segments both show a ratio of "real"
@ -330,6 +341,26 @@ is count your source files and test files, and calculate the ratio between them.
Just enough to give you a quick overview about the test situation of the project Just enough to give you a quick overview about the test situation of the project
you are dealing with. you are dealing with.
#### VI-Mode Indicator
This Segment shows the current mode of your ZSH. If you want to use your ZSH in
VI-Mode, you need to configure it separatly in your `~/.zshrc`:
# VI-Mode
# general activation
bindkey -v
# set some nice hotkeys
bindkey '^P' up-history
bindkey '^N' down-history
bindkey '^?' backward-delete-char
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward
# make it more responsive
export KEYTIMEOUT=1
#### The 'vcs' Segment #### The 'vcs' Segment
By default, the `vcs` segment will provide quite a bit of information. If you By default, the `vcs` segment will provide quite a bit of information. If you

@ -5,9 +5,6 @@
# #
# This theme was inspired by agnoster's Theme: # This theme was inspired by agnoster's Theme:
# https://gist.github.com/3712874 # https://gist.github.com/3712874
#
# The `vcs_info` hooks in this file are from Tom Upton:
# https://github.com/tupton/dotfiles/blob/master/zsh/zshrc
################################################################ ################################################################
################################################################ ################################################################
@ -33,14 +30,16 @@
typeset -gAH icons typeset -gAH icons
case $POWERLEVEL9K_MODE in case $POWERLEVEL9K_MODE in
'flat'|'awesome-patched') 'flat'|'awesome-patched')
# Awesome-Patched Font required! # Awesome-Patched Font required! See:
# See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched # https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
local LC_ALL="" LC_CTYPE="en_US.UTF-8" # Set the right locale to protect special characters # Set the right locale to protect special characters
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
icons=( icons=(
LEFT_SEGMENT_SEPARATOR $'\UE0B0' #  LEFT_SEGMENT_SEPARATOR $'\UE0B0' # 
RIGHT_SEGMENT_SEPARATOR $'\UE0B2' #  RIGHT_SEGMENT_SEPARATOR $'\UE0B2' # 
LEFT_SUBSEGMENT_SEPARATOR $'\UE0B1' #  LEFT_SUBSEGMENT_SEPARATOR $'\UE0B1' # 
RIGHT_SUBSEGMENT_SEPARATOR $'\UE0B3' #  RIGHT_SUBSEGMENT_SEPARATOR $'\UE0B3' # 
CARRIAGE_RETURN_ICON $'\U21B5' # ↵
ROOT_ICON $'\UE801' #  ROOT_ICON $'\UE801' # 
RUBY_ICON $'\UE847' #  RUBY_ICON $'\UE847' # 
AWS_ICON $'\UE895' #  AWS_ICON $'\UE895' # 
@ -80,6 +79,49 @@ case $POWERLEVEL9K_MODE in
VCS_HG_ICON $'\UE1C3 ' #  VCS_HG_ICON $'\UE1C3 ' # 
) )
;; ;;
'awesome-fontconfig')
# fontconfig with awesome-font required! See
# https://github.com/gabrielelana/awesome-terminal-fonts
icons=(
LEFT_SEGMENT_SEPARATOR $'\UE0B0' # 
RIGHT_SEGMENT_SEPARATOR $'\UE0B2' # 
LEFT_SUBSEGMENT_SEPARATOR $'\UE0B1' # 
RIGHT_SUBSEGMENT_SEPARATOR $'\UE0B3' # 
CARRIAGE_RETURN_ICON $'\U21B5' # ↵
ROOT_ICON $'\uF201' # 
RUBY_ICON $'\UF247' # 
AWS_ICON $'\UF296' # 
BACKGROUND_JOBS_ICON $'\UF013 ' # 
TEST_ICON $'\UF291' # 
OK_ICON $'\UF23A' # 
FAIL_ICON $'\UF281' # 
SYMFONY_ICON 'SF'
NODE_ICON $'\U2B22' # ⬢
MULTILINE_FIRST_PROMPT_PREFIX $'\U256D'$'\U2500' # ╭─
MULTILINE_SECOND_PROMPT_PREFIX $'\U2570'$'\U2500 ' # ╰─
APPLE_ICON $'\UF179' # 
FREEBSD_ICON $'\U1F608 ' # 😈
LINUX_ICON $'\UF17C' # 
SUNOS_ICON $'\UF185 ' # 
HOME_ICON $'\UF015 ' # 
NETWORK_ICON $'\UF09E ' # 
LOAD_ICON $'\UF080 ' # 
RAM_ICON $'\UF0E4' # 
VCS_UNTRACKED_ICON $'\UF059' # 
VCS_UNSTAGED_ICON $'\UF06A' # 
VCS_STAGED_ICON $'\UF055' # 
VCS_STASH_ICON $'\UF01C ' # 
VCS_INCOMING_CHANGES_ICON $'\UF01A ' # 
VCS_OUTGOING_CHANGES_ICON $'\UF01B ' # 
VCS_TAG_ICON $'\UF217 ' # 
VCS_BOOKMARK_ICON $'\UF27B' # 
VCS_COMMIT_ICON $'\UF221 ' # 
VCS_BRANCH_ICON $'\UF126' # 
VCS_REMOTE_BRANCH_ICON ' '$'\UF204 ' # 
VCS_GIT_ICON $'\UF113 ' # 
VCS_HG_ICON $'\UF0C3 ' # 
)
;;
*) *)
# Powerline-Patched Font required! # Powerline-Patched Font required!
# See https://github.com/Lokaltog/powerline-fonts # See https://github.com/Lokaltog/powerline-fonts
@ -88,6 +130,7 @@ case $POWERLEVEL9K_MODE in
RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #  RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # 
LEFT_SUBSEGMENT_SEPARATOR $'\UE0B1' #  LEFT_SUBSEGMENT_SEPARATOR $'\UE0B1' # 
RIGHT_SUBSEGMENT_SEPARATOR $'\UE0B3' #  RIGHT_SUBSEGMENT_SEPARATOR $'\UE0B3' # 
CARRIAGE_RETURN_ICON $'\U21B5' # ↵
ROOT_ICON $'\u26A1' # ⚡ ROOT_ICON $'\u26A1' # ⚡
RUBY_ICON '' RUBY_ICON ''
AWS_ICON 'AWS:' AWS_ICON 'AWS:'
@ -129,9 +172,12 @@ case $POWERLEVEL9K_MODE in
'flat') 'flat')
icons[LEFT_SEGMENT_SEPARATOR]='' icons[LEFT_SEGMENT_SEPARATOR]=''
icons[RIGHT_SEGMENT_SEPARATOR]='' icons[RIGHT_SEGMENT_SEPARATOR]=''
icons[LEFT_SUBSEGMENT_SEPARATOR]='|'
icons[RIGHT_SUBSEGMENT_SEPARATOR]='|'
;; ;;
'compatible') 'compatible')
local LC_ALL="" LC_CTYPE="en_US.UTF-8" # Set the right locale to protect special characters # Set the right locale to protect special characters
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
icons[LEFT_SEGMENT_SEPARATOR]=$'\u2B80' # ⮀ icons[LEFT_SEGMENT_SEPARATOR]=$'\u2B80' # ⮀
icons[RIGHT_SEGMENT_SEPARATOR]=$'\u2B82' # ⮂ icons[RIGHT_SEGMENT_SEPARATOR]=$'\u2B82' # ⮂
icons[VCS_BRANCH_ICON]='@' icons[VCS_BRANCH_ICON]='@'
@ -179,6 +225,7 @@ function print_icon() {
fi fi
} }
# Converts large memory values into a human-readable unit (e.g., bytes --> GB)
printSizeHumanReadable() { printSizeHumanReadable() {
typeset -F 2 size typeset -F 2 size
size="$1"+0.00001 size="$1"+0.00001
@ -577,16 +624,6 @@ prompt_context() {
fi fi
} }
# Vi Mode: show editing mode (NORMAL|INSERT)
prompt_vi_mode() {
local mode="${${KEYMAP/vicmd/NORMAL}/(main|viins)/INSERT}"
if [[ "$mode" == "NORMAL" ]]; then
$1_prompt_segment "$0_NORMAL" "$DEFAULT_COLOR" "default" "$mode"
else
$1_prompt_segment "$0_INSERT" "$DEFAULT_COLOR" "blue" "$mode"
fi
}
# Dir: current working directory # Dir: current working directory
prompt_dir() { prompt_dir() {
local current_path='%~' local current_path='%~'
@ -721,27 +758,6 @@ prompt_ram() {
"$1_prompt_segment" "$0" "yellow" "$DEFAULT_COLOR" "${rendition% }" "$1_prompt_segment" "$0" "yellow" "$DEFAULT_COLOR" "${rendition% }"
} }
# Right Status: (return code, root status, background jobs)
# This creates a status segment for the *right* prompt. Exact same thing as
# above - just other side.
prompt_longstatus() {
local symbols bg
symbols=()
if [[ "$RETVAL" -ne 0 ]]; then
symbols+="%F{226}$RETVAL ↵%f"
bg="009"
else
symbols+="%F{046}$(print_icon 'OK_ICON')%f"
bg="008"
fi
[[ "$UID" -eq 0 ]] && symbols+="%F{yellow} $(print_icon 'ROOT_ICON')%f"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%F{cyan}$(print_icon 'BACKGROUND_JOBS_ICON')%f"
[[ -n "$symbols" ]] && "$1_prompt_segment" "$0" "$bg" "white" "$symbols"
}
# Node version # Node version
prompt_node_version() { prompt_node_version() {
local nvm_prompt local nvm_prompt
@ -753,7 +769,7 @@ prompt_node_version() {
# print a little OS icon # print a little OS icon
prompt_os_icon() { prompt_os_icon() {
"$1_prompt_segment" "$0" "008" "255" "$OS_ICON" "$1_prompt_segment" "$0" "black" "255" "$OS_ICON"
} }
# print PHP version number # print PHP version number
@ -793,16 +809,29 @@ prompt_rvm() {
fi fi
} }
# Left Status: (return code, root status, background jobs) # Status: (return code, root status, background jobs)
# This creates a status segment for the *left* prompt set_default POWERLEVEL9K_STATUS_VERBOSE true
prompt_status() { prompt_status() {
local symbols local symbols bg
symbols=() symbols=()
[[ "$RETVAL" -ne 0 ]] && symbols+="%{%F{red}%}$(print_icon 'FAIL_ICON')"
[[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $(print_icon 'ROOT_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" if [[ "$POWERLEVEL9K_STATUS_VERBOSE" == true ]]; then
if [[ "$RETVAL" -ne 0 ]]; then
symbols+="%F{226}$RETVAL $(print_icon 'CARRIAGE_RETURN_ICON')%f"
bg="red"
else
symbols+="%F{046}$(print_icon 'OK_ICON')%f"
bg="black"
fi
else
[[ "$RETVAL" -ne 0 ]] && symbols+="%{%F{red}%}$(print_icon 'FAIL_ICON')%f"
bg="$DEFAULT_COLOR"
fi
[[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $(print_icon 'ROOT_ICON')%f"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$(print_icon 'BACKGROUND_JOBS_ICON')%f"
[[ -n "$symbols" ]] && "$1_prompt_segment" "$0" "$bg" "white" "$symbols"
} }
# Symfony2-PHPUnit test ratio # Symfony2-PHPUnit test ratio
@ -850,6 +879,18 @@ prompt_time() {
"$1_prompt_segment" "$0" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format" "$1_prompt_segment" "$0" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format"
} }
# Vi Mode: show editing mode (NORMAL|INSERT)
prompt_vi_mode() {
case ${KEYMAP} in
main|viins)
"$1_prompt_segment" "$0_INSERT" "$DEFAULT_COLOR" "blue" "INSERT"
;;
vicmd)
"$1_prompt_segment" "$0_NORMAL" "$DEFAULT_COLOR" "default" "NORMAL"
;;
esac
}
# Virtualenv: current working virtualenv # Virtualenv: current working virtualenv
# More information on virtualenv (Python): # More information on virtualenv (Python):
# https://virtualenv.pypa.io/en/latest/ # https://virtualenv.pypa.io/en/latest/
@ -877,7 +918,7 @@ build_left_prompt() {
# Right prompt # Right prompt
build_right_prompt() { build_right_prompt() {
defined POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS || POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(longstatus history time) defined POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS || POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
for element in "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[@]}"; do for element in "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[@]}"; do
"prompt_$element" "right" "prompt_$element" "right"
@ -909,6 +950,16 @@ $(print_icon 'MULTILINE_SECOND_PROMPT_PREFIX')"
fi fi
} }
function zle-line-init {
powerlevel9k_prepare_prompts
zle reset-prompt
}
function zle-keymap-select {
powerlevel9k_prepare_prompts
zle reset-prompt
}
powerlevel9k_init() { powerlevel9k_init() {
# Display a warning if the terminal does not support 256 colors # Display a warning if the terminal does not support 256 colors
local term_colors local term_colors
@ -931,6 +982,9 @@ powerlevel9k_init() {
# prepare prompts # prepare prompts
add-zsh-hook precmd powerlevel9k_prepare_prompts add-zsh-hook precmd powerlevel9k_prepare_prompts
zle -N zle-line-init
zle -N zle-keymap-select
} }
powerlevel9k_init "$@" powerlevel9k_init "$@"

Loading…
Cancel
Save