']
#
# If these options are not provided, the symbol defaults to "☁" with colors
# cyan and green.
#
# Screenshots:
# http://i.imgur.com/mJCZ8rE.png
#
# Note:
# This is a port of the oh-my-zsh cloud theme, originally written by Phillip
# Ridlen and Mark Drago
#
# Load dependencies.
pmodload 'helper'
function prompt_cloud_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
}
function prompt_cloud_help {
cat <] [] []
In ${ZDOTDIR:-$HOME}/.zpreztorc:
zstyle ':prezto:module:prompt' theme 'cloud' [''] [''] ['']
If these options are not provided, the symbol defaults to ☁ with colors cyan
and green.
EOT
}
function prompt_cloud_preview {
if (( $# > 0 )); then
prompt_preview_theme 'cloud' "$@"
else
prompt_preview_theme 'cloud'
print
prompt_preview_theme 'cloud' "✯"
print
prompt_preview_theme 'cloud' ">" "yellow" "red"
fi
}
function prompt_cloud_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Set the theme prefix to a cloud or to the user's given characters.
if [[ -n "$1" ]]; then
prefix="$1"
else
prefix='☁'
fi
# Assign colors.
if [[ -n "$2" ]]; then
primary_color="$2"
else
primary_color='cyan'
fi
if [[ -n "$3" ]]; then
secondary_color="$3"
else
secondary_color='green'
fi
# Load required functions.
autoload -Uz add-zsh-hook
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_cloud_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f"
zstyle ':prezto:module:git:info:clean' format "%B%F{$secondary_color}]%f%b"
zstyle ':prezto:module:git:info:branch' format "%%B%F{$secondary_color}[%f%%b%%B%F{$primary_color}%b%f%%b"
zstyle ':prezto:module:git:info:keys' format \
'prompt' '%b%C%D' \
'rprompt' ''
# Define prompts.
PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} '
RPROMPT=''
}
prompt_cloud_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_damoekri_setup
================================================
#
# A simple theme inspired by the Sorin and PeepCode themes.
#
# Authors:
# Daniel Møller Kristensen
#
# Screenshots:
# http://i.imgur.com/AX9HnPF.png
#
# Load dependencies.
pmodload 'helper'
prompt_damoekri_precmd() {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
_prompt_damoekri_pwd=$(prompt-pwd)
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Ruby version information.
if (( $+functions[ruby-info] )); then
ruby-info
fi
}
function prompt_damoekri_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
# Add hook for calling git-info and ruby-info before each command.
add-zsh-hook precmd prompt_damoekri_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format ':%F{magenta}%s%f'
zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f'
zstyle ':prezto:module:git:info:clean' format ' %F{green}✔%f'
zstyle ':prezto:module:git:info:dirty' format ' %F{red}✗%f'
zstyle ':prezto:module:git:info:commit' format '%F{blue}%.7c%f'
zstyle ':prezto:module:git:info:position' format '%F{blue}%p%f'
zstyle ':prezto:module:git:info:keys' format \
'rprompt' ' $(coalesce "%b" "%p" "%c")%s%C%D'
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f'
# Define prompts.
PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} '
RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}'
}
prompt_damoekri_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_giddie_setup
================================================
#
# A colorful, friendly, multiline theme with some handy features.
#
# Authors:
# Paul Gideon Dann
# Sorin Ionescu
#
# Features:
# - Simple VCS branch, staged, and unstaged indication.
# - Prompt character is different in a VCS repository.
# - Last command exit status is displayed when non-zero.
#
# Screenshots:
# http://i.imgur.com/rCo3S.png
#
function +vi-set_novcs_prompt_symbol {
_prompt_giddie_symbol=')'
}
function +vi-set_vcs_prompt_symbol {
_prompt_giddie_symbol='±'
}
function +vi-git_precmd {
# Check for untracked files, since vcs_info does not.
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
hook_com[unstaged]+='%F{green}?%f'
fi
}
function prompt_giddie_precmd {
# Replace '/home/' with '~'.
_prompt_giddie_pwd="${PWD/#$HOME/~}"
vcs_info
}
function prompt_giddie_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz vcs_info
autoload -Uz add-zsh-hook
# Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_giddie_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f'
# Set vcs_info parameters.
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u'
zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f'
zstyle ':vcs_info:*' stagedstr '%F{green}+%f'
zstyle ':vcs_info:*' unstagedstr '%F{green}!%f'
# Set vcs_info hooks.
# NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd
# function, and no 'no-vcs' hook.
zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol
zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd
zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol
# Define prompts.
PROMPT='%(?..%F{red}%B-> [%?]%b%f
)%F{magenta}%n%f@%F{yellow}%m%f|%F{green}${_prompt_giddie_pwd}%f${vcs_info_msg_0_}
%F{blue}${_prompt_giddie_symbol}%f '
RPROMPT='${editor_info[keymap]}'
SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? '
}
prompt_giddie_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_kylewest_setup
================================================
#
# A single line theme with Git information on the left and Ruby on the right.
#
# Authors:
# Kyle West
# Sorin Ionescu
#
# Features:
# - Indicates dirty Git repository.
# - Indicates the Ruby version.
# - Indicates vi modes.
#
# Screenshots:
# http://i.imgur.com/dCwhynn.png
#
function prompt_kylewest_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Ruby information.
if (( $+functions[ruby-info] )); then
ruby-info
fi
}
function prompt_kylewest_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_kylewest_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}❯%f%b"
zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}❮%f%b"
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'no'
zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f'
zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b'
zstyle ':prezto:module:git:info:indexed' format ' '
zstyle ':prezto:module:git:info:unindexed' format ' '
zstyle ':prezto:module:git:info:untracked' format ' '
zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D '
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f'
# Define prompts.
PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} '
RPROMPT='${ruby_info[version]}'
}
prompt_kylewest_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_minimal_setup
================================================
#
# A monochrome theme that displays basic information.
#
# Authors:
# Brian Tse
# Sorin Ionescu
#
# Screenshots:
# http://i.imgur.com/zLZNK.png
#
function +vi-git_status {
# Check for untracked files or updated submodules since vcs_info does not.
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
hook_com[unstaged]='%F{red}●%f'
fi
}
function prompt_minimal_precmd {
vcs_info
}
function prompt_minimal_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_minimal_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' stagedstr '%F{green}●%f'
zstyle ':vcs_info:*' unstagedstr '%F{yellow}●%f'
zstyle ':vcs_info:*' formats ' - [%b%c%u]'
zstyle ':vcs_info:*' actionformats " - [%b%c%u|%F{cyan}%a%f]"
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f'
zstyle ':vcs_info:git*+set-message:*' hooks git_status
# Define prompts.
PROMPT='%2~${vcs_info_msg_0_} » '
RPROMPT=''
}
function prompt_minimal_preview {
local +h PROMPT=''
local +h RPROMPT=''
local +h SPROMPT=''
editor-info 2> /dev/null
prompt_preview_theme 'minimal'
}
prompt_minimal_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_nicoulaj_setup
================================================
#
# A simple theme that displays only relevant information.
#
# Authors:
# Julien Nicoulaud
# Sorin Ionescu
#
# Features:
# - One line.
# - VCS information in the right prompt.
# - Only shows the path on the left prompt by default.
# - Crops the path to a defined length and only shows the path relative to
# the current VCS repository root.
# - Uses a different color depending on if the last command succeeded/failed.
# - Shows user@hostname if connected through SSH.
# - Shows if logged in as root or not.
#
# Screenshots:
# http://i.imgur.com/Xe1bu.png
#
function prompt_nicoulaj_precmd {
vcs_info
}
function prompt_nicoulaj_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_nicoulaj_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Customizable parameters.
local max_path_chars=30
local user_char='❯'
local root_char='❯❯❯'
local success_color='%F{071}'
local failure_color='%F{124}'
local vcs_info_color='%F{242}'
# Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' unstagedstr '!'
zstyle ':vcs_info:*' stagedstr '+'
zstyle ':vcs_info:*' actionformats "%S" "%r/%s/%b %u%c (%a)"
zstyle ':vcs_info:*' formats "%S" "%r/%s/%b %u%c"
zstyle ':vcs_info:*' nvcsformats "%~" ""
# Define prompts.
PROMPT="%(?.${success_color}.${failure_color})${SSH_TTY:+[%n@%m]}%B%${max_path_chars}<...<"'${vcs_info_msg_0_%%.}'"%<<%(!.${root_char}.${user_char})%b%f "
RPROMPT="${vcs_info_color}"'${vcs_info_msg_1_}'"%f"
}
prompt_nicoulaj_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_paradox_setup
================================================
#
# A two-line, Powerline-inspired theme that displays contextual information.
#
# This theme requires a patched Powerline font, get them from
# https://github.com/Lokaltog/powerline-fonts.
#
# Authors:
# Isaac Wolkerstorfer
# Jeff Sandberg
# Sorin Ionescu
# Patrick Bos
#
# Screenshots:
# http://i.imgur.com/0XIWX.png
#
# Load dependencies.
pmodload 'helper'
# Define variables.
_prompt_paradox_current_bg='NONE'
_prompt_paradox_segment_separator=''
_prompt_paradox_start_time=$SECONDS
function prompt_paradox_start_segment {
local bg fg
[[ -n "$1" ]] && bg="%K{$1}" || bg="%k"
[[ -n "$2" ]] && fg="%F{$2}" || fg="%f"
if [[ "$_prompt_paradox_current_bg" != 'NONE' && "$1" != "$_prompt_paradox_current_bg" ]]; then
print -n " $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg "
else
print -n "$bg$fg "
fi
_prompt_paradox_current_bg="$1"
[[ -n "$3" ]] && print -n "$3"
}
function prompt_paradox_end_segment {
if [[ -n "$_prompt_paradox_current_bg" ]]; then
print -n " %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator"
else
print -n "%k"
fi
print -n "%f"
_prompt_paradox_current_bg=''
}
function prompt_paradox_build_prompt {
prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f'
prompt_paradox_start_segment blue black '$_prompt_paradox_pwd'
if [[ -n "$git_info" ]]; then
prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}'
fi
if [[ -n "$python_info" ]]; then
prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}'
fi
prompt_paradox_end_segment
}
prompt_paradox_print_elapsed_time() {
local end_time=$(( SECONDS - _prompt_paradox_start_time ))
local hours minutes seconds remainder
if (( end_time >= 3600 )); then
hours=$(( end_time / 3600 ))
remainder=$(( end_time % 3600 ))
minutes=$(( remainder / 60 ))
seconds=$(( remainder % 60 ))
print -P "%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b"
elif (( end_time >= 60 )); then
minutes=$(( end_time / 60 ))
seconds=$(( end_time % 60 ))
print -P "%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b"
elif (( end_time > 10 )); then
print -P "%B%F{green}>>> elapsed time ${end_time}s%b"
fi
}
function prompt_paradox_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
_prompt_paradox_pwd=$(prompt-pwd)
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Python environment information.
if (( $+functions[python-info] )); then
python-info
fi
# Calculate and print the elapsed time.
prompt_paradox_print_elapsed_time
}
function prompt_paradox_preexec {
_prompt_paradox_start_time="$SECONDS"
}
function prompt_paradox_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
# Add hook for calling git-info before each command.
add-zsh-hook preexec prompt_paradox_preexec
add-zsh-hook precmd prompt_paradox_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b'
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format ' ⁝ %s'
zstyle ':prezto:module:git:info:added' format ' ✚'
zstyle ':prezto:module:git:info:ahead' format ' ⬆'
zstyle ':prezto:module:git:info:behind' format ' ⬇'
zstyle ':prezto:module:git:info:branch' format ' %b'
zstyle ':prezto:module:git:info:commit' format '➦ %.7c'
zstyle ':prezto:module:git:info:deleted' format ' ✖'
zstyle ':prezto:module:git:info:dirty' format ' ⁝'
zstyle ':prezto:module:git:info:modified' format ' ✱'
zstyle ':prezto:module:git:info:position' format '%p'
zstyle ':prezto:module:git:info:renamed' format ' ➙'
zstyle ':prezto:module:git:info:stashed' format ' S'
zstyle ':prezto:module:git:info:unmerged' format ' ═'
zstyle ':prezto:module:git:info:untracked' format ' ?'
zstyle ':prezto:module:git:info:keys' format \
'ref' '$(coalesce "%b" "%p" "%c")' \
'status' '%s%D%A%B%S%a%d%m%r%U%u'
# %v - virtualenv name.
zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'
# Define prompts.
PROMPT='
${(e)$(prompt_paradox_build_prompt)}
${editor_info[keymap]} '
RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f'
SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '
}
prompt_paradox_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_peepcode_setup
================================================
#
# A simple theme from PeepCode.
# http://peepcode.com/blog/2012/my-command-line-prompt
#
# Authors:
# Geoffrey Grosenbach
# Sorin Ionescu
#
# Screenshots:
# http://i.imgur.com/LhgmW.png
#
function prompt_peepcode_precmd {
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Ruby information.
if (( $+functions[ruby-info] )); then
ruby-info
fi
}
function prompt_peepcode_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
# Add a hook for calling info functions before each command.
add-zsh-hook precmd prompt_peepcode_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'no'
zstyle ':prezto:module:git:info:action' format ' +%s'
zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f'
zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f'
zstyle ':prezto:module:git:info:indexed' format ' '
zstyle ':prezto:module:git:info:unindexed' format ' '
zstyle ':prezto:module:git:info:untracked' format ' '
zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f'
zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D'
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format ' %F{white}%v%f'
# Define prompts.
PROMPT="
%~
%(?.%F{green}${1:-☻ }%f.%F{red}${1:-☻ }%f) "
RPROMPT='${ruby_info[version]}${git_info[rprompt]}'
}
function prompt_peepcode_help {
cat <]
If this option is not provided, the symbol defaults to ☻.
EOH
}
function prompt_peepcode_preview {
local +h PROMPT='%# '
local +h RPROMPT=''
local +h SPROMPT=''
if (( $# > 0 )); then
prompt_preview_theme 'peepcode' "$@"
else
prompt_preview_theme 'peepcode'
print
prompt_preview_theme 'peepcode' "❯"
print
prompt_preview_theme 'peepcode' "$"
fi
}
prompt_peepcode_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_skwp_setup
================================================
#
# A single line theme with Git information on the left and Ruby on the right.
#
# Authors:
# Steve Losh
# Bart Trojanowski
# Brian Carper
# steeef
# Sorin Ionescu
# Yan Pritzker
#
# Screenshots:
# http://i.imgur.com/gLgVp6Y.png
#
function prompt_skwp_precmd {
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Ruby information.
if (( $+functions[ruby-info] )); then
ruby-info
fi
}
function prompt_skwp_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
# Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_skwp_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Use extended color pallete if available.
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
_prompt_skwp_colors=(
"%F{81}" # Turquoise
"%F{166}" # Orange
"%F{135}" # Purple
"%F{161}" # Hotpink
"%F{118}" # Limegreen
)
else
_prompt_skwp_colors=(
"%F{cyan}"
"%F{yellow}"
"%F{magenta}"
"%F{red}"
"%F{green}"
)
fi
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:branch' format "${_prompt_skwp_colors[1]}%b%f"
zstyle ':prezto:module:git:info:added' format "${_prompt_skwp_colors[5]}●%f"
zstyle ':prezto:module:git:info:deleted' format "${_prompt_skwp_colors[2]}●%f"
zstyle ':prezto:module:git:info:modified' format "${_prompt_skwp_colors[4]}●%f"
zstyle ':prezto:module:git:info:untracked' format "${_prompt_skwp_colors[3]}●%f"
zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)'
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format '[%v]'
# Define prompts.
PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+${(e)git_info[prompt]}}'"$ "
RPROMPT='%F{blue}${ruby_info[version]}'
}
prompt_skwp_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_smiley_setup
================================================
#
# A simple theme that displays:
# - Python virtual environment.
# - Git branch.
# - Git state.
# - Last command exit state (smiley/X).
#
# Authors:
# Nadav Shatz
#
# Screenshots:
# http://i.imgur.com/ijycV6n.png
#
# Load dependencies.
pmodload 'helper'
function prompt_smiley_precmd {
unsetopt XTRACE KSH_ARRAYS
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Python environment information.
if (( $+functions[python-info] )); then
python-info
fi
# Get Ruby version information.
if (( $+functions[ruby-info] )); then
ruby-info
fi
}
function prompt_smiley_setup {
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_smiley_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
# Set python-info parameters.
zstyle ':prezto:module:python:info:virtualenv' format '%F{yellow}[%v]%f '
# Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format '%F{yellow}[%v]%f '
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f'
zstyle ':prezto:module:git:info:dirty' format '%%B%F{red} ±%f%%b'
zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)'
# Define prompts.
PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) '
RPROMPT='${editor_info[overwrite]}${VIM:+" %B%F{green}V%f%b"}'
SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '
}
prompt_smiley_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_sorin_setup
================================================
#
# A simple theme that displays relevant, contextual information.
#
# Authors:
# Sorin Ionescu
#
# Screenshots:
# http://i.imgur.com/nrGV6pg.png
#
#
# 16 Terminal Colors
# -- ---------------
# 0 black
# 1 red
# 2 green
# 3 yellow
# 4 blue
# 5 magenta
# 6 cyan
# 7 white
# 8 bright black
# 9 bright red
# 10 bright green
# 11 bright yellow
# 12 bright blue
# 13 bright magenta
# 14 bright cyan
# 15 bright white
#
# Load dependencies.
pmodload 'helper'
function prompt_sorin_async_callback {
case $1 in
prompt_sorin_async_git)
# We can safely split on ':' because it isn't allowed in ref names.
IFS=':' read _git_target _git_post_target <<<"$3"
# The target actually contains 3 space separated possibilities, so we need to
# make sure we grab the first one.
_git_target=$(coalesce ${(@)${(z)_git_target}})
if [[ -z "$_git_target" ]]; then
# No git target detected, flush the git fragment and redisplay the prompt.
if [[ -n "$_prompt_sorin_git" ]]; then
_prompt_sorin_git=''
zle && zle reset-prompt
fi
else
# Git target detected, update the git fragment and redisplay the prompt.
_prompt_sorin_git="${_git_target}${_git_post_target}"
zle && zle reset-prompt
fi
;;
"[async]")
# Code is 1 for corrupted worker output and 2 for dead worker.
if [[ $2 -eq 2 ]]; then
# Our worker died unexpectedly.
typeset -g prompt_prezto_async_init=0
fi
;;
esac
}
function prompt_sorin_async_git {
cd -q "$1"
if (( $+functions[git-info] )); then
git-info
print ${git_info[status]}
fi
}
function prompt_sorin_async_tasks {
# Initialize async worker. This needs to be done here and not in
# prompt_sorin_setup so the git formatting can be overridden by other prompts.
if (( !${prompt_prezto_async_init:-0} )); then
async_start_worker prompt_sorin -n
async_register_callback prompt_sorin prompt_sorin_async_callback
typeset -g prompt_prezto_async_init=1
fi
# Kill the old process of slow commands if it is still running.
async_flush_jobs prompt_sorin
# Compute slow commands in the background.
async_job prompt_sorin prompt_sorin_async_git "$PWD"
}
function prompt_sorin_precmd {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
_prompt_sorin_pwd=$(prompt-pwd)
# Handle updating git data. We also clear the git prompt data if we're in a
# different git root now.
if (( $+functions[git-dir] )); then
local new_git_root="$(git-dir 2> /dev/null)"
if [[ $new_git_root != $_sorin_cur_git_root ]]; then
_prompt_sorin_git=''
_sorin_cur_git_root=$new_git_root
fi
fi
# Run python info (this should be fast and not require any async)
if (( $+functions[python-info] )); then
python-info
fi
prompt_sorin_async_tasks
}
function prompt_sorin_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz async && async
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_sorin_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b'
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b'
zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b'
zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b'
zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b'
zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b'
zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b'
zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b'
zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b'
zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b'
zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b'
zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b'
zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b'
zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b'
zstyle ':prezto:module:git:info:keys' format \
'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u'
# Set python-info parameters.
zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} '
# Set up non-zero return value display
local show_return="✘ "
# Default is to show the return value
if zstyle -T ':prezto:module:prompt' show-return-val; then
show_return+='%? '
fi
# Get the async worker set up.
_sorin_cur_git_root=''
_prompt_sorin_git=''
_prompt_sorin_pwd=''
# Define prompts.
PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{4}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} '
RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}'
RPROMPT+=${show_return}
RPROMPT+='%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}'
SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? '
}
function prompt_sorin_preview {
local +h PROMPT=''
local +h RPROMPT=''
local +h SPROMPT=''
editor-info 2> /dev/null
prompt_preview_theme 'sorin'
}
prompt_sorin_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/functions/prompt_steeef_setup
================================================
#
# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration.
#
# Authors:
# Steve Losh
# Bart Trojanowski
# Brian Carper
# steeef
# Sorin Ionescu
#
# Screenshots:
# http://i.imgur.com/HyRvv.png
#
function prompt_steeef_precmd {
# Check for untracked files or updated submodules since vcs_info does not.
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c${_prompt_steeef_colors[4]}●%f)"
else
branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)"
fi
zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
vcs_info 'prompt'
if (( $+functions[python-info] )); then
python-info
fi
}
function prompt_steeef_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_steeef_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Use extended color pallete if available.
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
_prompt_steeef_colors=(
"%F{81}" # Turquoise
"%F{166}" # Orange
"%F{135}" # Purple
"%F{161}" # Hotpink
"%F{118}" # Limegreen
)
else
_prompt_steeef_colors=(
"%F{cyan}"
"%F{yellow}"
"%F{magenta}"
"%F{red}"
"%F{green}"
)
fi
# Formats:
# %b - branchname
# %u - unstagedstr (see below)
# %c - stagedstr (see below)
# %a - action (e.g. rebase-i)
# %R - repository path
# %S - path in the repository
local branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)"
local action_format="(${_prompt_steeef_colors[5]}%a%f)"
local unstaged_format="${_prompt_steeef_colors[2]}●%f"
local staged_format="${_prompt_steeef_colors[5]}●%f"
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:keymap:primary' format '$'
# Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*:prompt:*' check-for-changes true
zstyle ':vcs_info:*:prompt:*' unstagedstr "${unstaged_format}"
zstyle ':vcs_info:*:prompt:*' stagedstr "${staged_format}"
zstyle ':vcs_info:*:prompt:*' actionformats "${branch_format}${action_format}"
zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
zstyle ':vcs_info:*:prompt:*' nvcsformats ""
# Set python-info parameters.
zstyle ':prezto:module:python:info:virtualenv' format '(%v)'
# Define prompts.
PROMPT="
${_prompt_steeef_colors[3]}%n%f at ${_prompt_steeef_colors[2]}%m%f in ${_prompt_steeef_colors[5]}%~%f "'${vcs_info_msg_0_}'"
"'$python_info[virtualenv]${editor_info[keymap]} '
RPROMPT=''
}
function prompt_steeef_preview {
local +h PROMPT=''
local +h RPROMPT=''
local +h SPROMPT=''
editor-info 2> /dev/null
prompt_preview_theme 'steeef'
}
prompt_steeef_setup "$@"
# vim: ft=zsh
================================================
FILE: modules/prompt/init.zsh
================================================
#
# Loads prompt themes.
#
# Authors:
# Sorin Ionescu
#
# Load and execute the prompt theming system.
autoload -Uz promptinit && promptinit
# Load the prompt theme.
zstyle -a ':prezto:module:prompt' theme 'prompt_argv'
if [[ $TERM == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then
prompt 'off'
else
prompt "$prompt_argv[@]"
fi
unset prompt_argv
================================================
FILE: modules/python/README.md
================================================
# Python
Enables local Python and local Python package installation.
## Settings
This module supports virtual environments from conda and
[_virtualenvwrapper_][2]. By default, only _virtualenvwrapper_ is enabled. To
disable _virtualenvwrapper_, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:python:virtualenv' initialize 'no'
```
Conda support can be enabled by adding the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:python' conda-init 'on'
```
Caution: using conda and virtualenvwrapper at the same time may cause conflicts.
## Local Python Installation
[_pyenv_][4] builds and installs multiple Python versions locally in the home
directory.
This module prepends the _pyenv_ directory to the path variable to enable the
execution of `pyenv`.
### Usage
Install Python versions with `pyenv install` into _`~/.pyenv/versions`_.
This will be loaded automatically if pyenv is installed to `$PYENV_ROOT`,
_`~/.pyenv`_, or if the `pyenv` command is on the path. By default, `PYENV_ROOT`
is set to _`$HOME/.pyenv`_. You can set it to an alternate location and export
it in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6].
## Local Package Installation
Since version 2.6, Python supports per user package installation, as defined in
[PEP 370][1].
This module prepends per user site directories to the relevant path variables
to enable the execution of user installed scripts and the reading of
documentation.
### Usage
Install packages into the per user site directory with `pip install --user`.
## virtualenvwrapper
[_virtualenvwrapper_][2] is a frontend to the popular [_virtualenv_][3] utility.
`virtualenv` creates isolated Python environments and `virtualenvwrapper`
provides convenient shell functions to create, switch, and manage them.
### Usage
Install `virtualenvwrapper`.
Virtual environments are stored in _`~/.virtualenvs`_.
There are configuration variables that have to be set to enable certain
features. If you wish to use these features, export the variables in
[_`${ZDOTDIR:-$HOME}/.zshenv`_][6].
The variable `$PROJECT_HOME` tells `virtualenvwrapper` where to place project
working directories. It must be set and the directory created before `mkproject`
is used. Replace _Developer_ with your projects directory.
```sh
export PROJECT_HOME="$HOME/Developer"
```
The variable `VIRTUALENVWRAPPER_PYTHON` tells `virtualenvwrapper` to use the
specified full path of the `python` interpreter overriding the `$PATH` search.
```sh
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
```
The variable `VIRTUALENVWRAPPER_VIRTUALENV` tells `virtualenvwrapper` to use the
specified full path of `virtualenv` binary overriding the `$PATH` search.
```sh
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
```
The variable `$VIRTUALENVWRAPPER_VIRTUALENV_ARGS` tells `virtualenvwrapper` what
arguments to pass to `virtualenv`. For example, set the value to
`--system-site-packages` to ensure that all new environments have access to the
system site-packages directory.
```sh
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages'
```
### Additional Options
There is a hook to enable auto-switching to virtualenvs when switching into a
directory where the root of the project matches a virtualenv name.
This can be enabled with:
```sh
zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'
```
`virtualenvwrapper` is automatically initialized if pre-requisites are met
(`$VIRTUALENVWRAPPER_VIRTUALENV` is explicitly set or `virtualenv` is in
`$PATH`). This can be disabled with:
```sh
zstyle ':prezto:module:python:virtualenv' initialize 'no'
```
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:python:alias' skip 'yes'
```
- `py` is short for `python`.
- `py2` is short for `python2`.
- `py3` is short for `python3`.
## Functions
- `python-info` exposes information about the Python environment via the
`$python_info` associative array.
## Theming
To display the name of the current virtual environment in a prompt, define the
following style in the `prompt_name_setup` function.
```sh
# %v - virtualenv name.
zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'
```
Then add `$python_info[virtualenv]` to `$PROMPT` or `$RPROMPT` and call
`python-info` in the `prompt_name_preexec` hook function.
Similarly, you can use `:prezto:module:python:info:version:format` with `%v` for
the version and add `$python_info[version]` to your prompt for the current
python version.
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://www.python.org/dev/peps/pep-0370/
[2]: https://www.doughellmann.com/projects/virtualenvwrapper/
[3]: https://pypi.org/project/virtualenv/
[4]: https://github.com/yyuu/pyenv
[5]: https://github.com/sorin-ionescu/prezto/issues
[6]: ../../runcoms#zshenv
================================================
FILE: modules/python/functions/python-info
================================================
#
# Exposes information about the Python environment via the $python_info
# associative array.
#
# Authors:
# Sorin Ionescu
# Patrick Bos
#
# function python-info {
local virtualenv_format
local virtualenv_formatted
local version_format
local version_formatted
local version
# Clean up previous $python_info.
unset python_info
typeset -gA python_info
# Grab the styling we might have to do
zstyle -s ':prezto:module:python:info:virtualenv' format 'virtualenv_format'
zstyle -s ':prezto:module:python:info:version' format 'version_format'
# Format virtualenv.
if [[ -n "$virtualenv_format" ]]; then
if [[ -n "$VIRTUAL_ENV" ]]; then
zformat -f virtualenv_formatted "$virtualenv_format" "v:${VIRTUAL_ENV:t}"
python_info[virtualenv]="$virtualenv_formatted"
fi
# Do the same for Conda virtual environments
if [[ -n "$CONDA_DEFAULT_ENV" ]]; then
zformat -f virtualenv_formatted "$virtualenv_format" "v:${CONDA_DEFAULT_ENV:t}"
python_info[virtualenv]="$virtualenv_formatted"
fi
fi
if [[ -n "$version_format" ]]; then
if (( $+commands[pyenv] )); then
version="${"$(pyenv version)"%% *}"
elif (( $+commands[python] )); then
version="${$(python3 --version)#Python }"
fi
if [[ -n "$version" && "$version" != "system" ]]; then
zformat -f version_formatted "$version_format" "v:$version"
python_info[version]="$version_formatted"
fi
fi
# }
================================================
FILE: modules/python/init.zsh
================================================
#
# Enables local Python package installation.
#
# Authors:
# Sorin Ionescu
# Sebastian Wiesner
# Patrick Bos
# Indrajit Raychaudhuri
#
#
# Options
#
setopt EXTENDED_GLOB
# Load dependencies.
pmodload 'helper'
# Load manually installed or package manager installed pyenv into the shell
# session.
if [[ -s "${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}" ]] \
|| (( $+commands[pyenv] )); then
# Ensure manually installed pyenv is added to path when present.
[[ -s $local_pyenv ]] && path=($local_pyenv:h $path)
# Load pyenv into the shell session.
eval "$(pyenv init - zsh)"
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The
# path can be overridden using PYTHONUSERBASE.
else
if [[ -n "$PYTHONUSERBASE" ]]; then
path=($PYTHONUSERBASE/bin(N) $path)
elif is-darwin; then
path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
path=($HOME/.local/bin(N) $path)
fi
fi
unset local_pyenv
# Return if requirements are not found.
if (( ! $+commands[(i)python[0-9.]#] && ! $+functions[pyenv] && ! $+commands[conda] )); then
return 1
fi
function _python-workon-cwd {
# Check if this is a Git repo.
local GIT_REPO_ROOT="$(git rev-parse --show-toplevel 2> /dev/null)"
# Get absolute path, resolving symlinks.
local PROJECT_ROOT="$PWD:A"
while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \
&& ! -d "$PROJECT_ROOT/.git" && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do
PROJECT_ROOT="$PROJECT_ROOT:h"
done
if [[ $PROJECT_ROOT == "/" ]]; then
PROJECT_ROOT="."
fi
# Check for virtualenv name override.
local ENV_NAME=""
if [[ -f "$PROJECT_ROOT/.venv" ]]; then
ENV_NAME="$(<$PROJECT_ROOT/.venv)"
elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]]; then
ENV_NAME="$PROJECT_ROOT/.venv"
elif [[ $PROJECT_ROOT != "." ]]; then
ENV_NAME="$PROJECT_ROOT:t"
fi
if [[ -n $CD_VIRTUAL_ENV && "$ENV_NAME" != "$CD_VIRTUAL_ENV" ]]; then
# We've just left the repo, deactivate the environment.
# Note: this only happens if the virtualenv was activated automatically.
deactivate && unset CD_VIRTUAL_ENV
fi
if [[ $ENV_NAME != "" ]]; then
# Activate the environment only if it is not already active.
if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
if [[ -n "$WORKON_HOME" && -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
elif [[ -e "$ENV_NAME/bin/activate" ]]; then
source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME"
fi
fi
fi
}
# Load auto workon cwd hook.
if zstyle -t ':prezto:module:python:virtualenv' auto-switch; then
# Auto workon when changing directory.
autoload -Uz add-zsh-hook
add-zsh-hook chpwd _python-workon-cwd
fi
# Load virtualenvwrapper into the shell session, if pre-requisites are met
# and unless explicitly requested not to
if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) \
&& zstyle -T ':prezto:module:python:virtualenv' initialize ; then
# Set the directory where virtual environments are stored.
export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}"
# Disable the virtualenv prompt. Note that we use the magic value used by the
# pure prompt because there's some additional logic in that prompt which tries
# to figure out if a user set this variable and disable the python portion of
# that prompt based on it which is the exact opposite of what we want to do.
export VIRTUAL_ENV_DISABLE_PROMPT=12
# Create a sorted array of available virtualenv related 'pyenv' commands to
# look for plugins of interest. Scanning shell '$path' isn't enough as they
# can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead.
local -a pyenv_plugins
local pyenv_virtualenvwrapper_plugin_found
if (( $+commands[pyenv] )); then
pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2> /dev/null)"}:#virtualenv*})
# Optionally activate 'virtualenv-init' plugin when available.
if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then
eval "$(pyenv virtualenv-init - zsh)"
fi
# Optionally activate 'virtualenvwrapper' plugin when available.
if (( $pyenv_plugins[(i)virtualenvwrapper(_lazy|)] <= $#pyenv_plugins )); then
pyenv "$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]"
pyenv_virtualenvwrapper_plugin_found="true"
fi
unset pyenv_plugins
fi
if [[ $pyenv_virtualenvwrapper_plugin_found != "true" ]]; then
# Fallback to standard 'virtualenvwrapper' if 'python' is available in '$path'.
if (( ! $+VIRTUALENVWRAPPER_PYTHON )) && (( $+commands[(i)python[0-9.]#] )); then
VIRTUALENVWRAPPER_PYTHON=$commands[(i)python[0-9.]#]
fi
virtualenvwrapper_sources=(
${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]}
/usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN)
)
if (( $#virtualenvwrapper_sources )); then
source "$virtualenvwrapper_sources[1]"
fi
unset virtualenvwrapper_sources
fi
unset pyenv_virtualenvwrapper_plugin_found
fi
# Load conda into the shell session, if requested.
zstyle -T ':prezto:module:python' conda-init
if (( $? && $+commands[conda] )); then
if (( $(conda ..changeps1) )); then
echo "To make sure Conda doesn't change your prompt (should do that in the prompt module) run:\n conda config --set changeps1 false"
# TODO:
# We could just run this ourselves. In an exit hook
# (add zsh-hook zshexit [(anonymous) function]) we could then set it back
# to the way it was before we changed it. However, I'm not sure if this is
# exception safe, so left it like this for now.
fi
fi
#
# Aliases
#
if ! zstyle -t ':prezto:module:python:alias' skip; then
alias py='python'
alias py2='python2'
alias py3='python3'
fi
================================================
FILE: modules/rails/README.md
================================================
# Ruby on Rails
Defines [Ruby on Rails][1] aliases.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:rails:alias' skip 'yes'
```
- `ror` is short for `rails`.
- `rorc` starts the Rails console.
- `rordc` starts the Rails console connected to the database.
- `rordm` migrates the database.
- `rordM` migrates the database and recreates the test database.
- `rordr` rolls the database schema back to the previous version.
- `rorg` generates new code.
- `rorl` displays the log.
- `rorlc` truncates logs to zero bytes.
- `rorp` installs a plugin.
- `rorr` runs code in the application environment.
- `rors` starts the Rails server.
- `rorsd` starts the Rails server with the debugger.
- `rorx` destroys newly generated code.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Robby Russell](https://github.com/robbyrussell)
- [Jake Bell](https://github.com/theunraveler)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://rubyonrails.org
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/rails/init.zsh
================================================
#
# Defines Ruby on Rails aliases.
#
# Authors:
# Robby Russell
# Jake Bell
# Sorin Ionescu
#
# Load dependencies.
pmodload 'ruby'
# Return if requirements are not found.
if (( ! $+commands[bundle] )); then
return 1
fi
#
# Aliases
#
if ! zstyle -t ':prezto:module:rails:alias' skip; then
alias ror='bundle exec rails'
alias rorc='bundle exec rails console'
alias rordc='bundle exec rails dbconsole'
alias rordm='bundle exec rake db:migrate'
alias rordM='bundle exec rake db:migrate db:test:clone'
alias rordr='bundle exec rake db:rollback'
alias rorg='bundle exec rails generate'
alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
alias rorlc='bundle exec rake log:clear'
alias rorp='bundle exec rails plugin'
alias rorr='bundle exec rails runner'
alias rors='bundle exec rails server'
alias rorsd='bundle exec rails server --debugger'
alias rorx='bundle exec rails destroy'
fi
================================================
FILE: modules/rsync/README.md
================================================
# Rsync
Defines [rsync][1] aliases.
macOS users are encouraged to use _rsync_ from [Homebrew][2] or [MacPorts][3],
which has additional enhancements including patches from [Bombich][4].
## Aliases
- `rsync-copy` copies files and directories from _source_ to _destination_.
- `rsync-move` moves files and directories from _source_ to _destination_.
- `rsync-update` updates files and directories on _destination_.
- `rsync-synchronize` synchronizes files and directories between _source_ and
_destination_.
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://rsync.samba.org
[2]: https://github.com/Homebrew/homebrew-core
[3]: https://ports.macports.org/port/rsync
[4]: https://bombich.com/kb/ccc5/credits#rsync
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/rsync/init.zsh
================================================
#
# Defines Rsync aliases.
#
# Authors:
# Sorin Ionescu
#
# Return if requirements are not found.
if (( ! $+commands[rsync] )); then
return 1
fi
# Load dependencies.
pmodload 'helper'
#
# Aliases
#
_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive \
--hard-links --one-file-system'
autoload -Uz is-at-least
if is-at-least 3.1 ${"$(rsync --version 2>&1)"[(w)3]}; then
# ACL and extended attributes support
if grep -q 'xattrs' <(rsync --help 2>&1); then
_rsync_cmd="${_rsync_cmd} --acls --xattrs"
fi
# macOS Enhancements
# https://bombich.com/kb/ccc5/credits
if is-darwin && grep -q 'file-flags' <(rsync --help 2>&1); then
_rsync_cmd="${_rsync_cmd} --crtimes --fileflags --force-change"
fi
fi
alias rsync-copy="${_rsync_cmd}"
alias rsync-move="${_rsync_cmd} --remove-source-files"
alias rsync-update="${_rsync_cmd} --update"
alias rsync-synchronize="${_rsync_cmd} --update --delete"
unset _rsync_cmd
================================================
FILE: modules/ruby/README.md
================================================
# Ruby
Configures [Ruby][1] local gem installation, loads version managers, and defines
aliases.
## Local Gem Installation
When a Ruby version manager is not detected, local gems are installed in
_`~/.gem`_; otherwise, they are installed according to the manager.
## rbenv
An alternative RVM is to use [_rbenv_][2], which allows for switching between
multiple, isolated Ruby installations in the home directory.
While it is not as feature rich as RVM, it is not loaded into the shell and is
not known to cause conflicts with shell scripts.
This will be loaded automatically if _rbenv_ is installed to `$RBENV_ROOT`,
_`~/.rbenv`_, or if the `rbenv` command is on the path.
## rvm
An alternative to the above is to use [The Ruby Version Manager (_rvm_)][3],
which allows for managing multiple, isolated Ruby installations and gem sets in
the home directory.
Since RVM is loaded into the shell and is known to override shell commands, it
may conflict with shell scripts.
Load this module as late as possible when using RVM since RVM will complain if
it is not first in `$PATH`.
## chruby
Yet another alternative is [_chruby_][4], which is simpler than both _rvm_ and
_rbenv_.
### Settings
#### Auto-Switch
To enable auto switching the Ruby version on directory change based on the
`.ruby-version` file, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
```
## Bundler
Manage gems that are not meant to be used as commands, such as application
dependencies, with [Bundler][5].
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:ruby:alias' skip 'yes'
```
### General
- `rb` is short for `ruby`.
### Bundler
- `rbb` manages ruby dependencies (`bundle`).
- `rbbc` cleans up unused gems in your bundler directory.
- `rbbe` executes a script in the context of the current bundle.
- `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`.
- `rbbI` installs the following:
- gems specified in the `Gemfile` in `vendor/bundle`.
- packages the gems into `vendor/cache`.
- appends bundler directories to `.gitignore`.
- `rbbl` lists all gems in the current bundle.
- `rbbo` opens an installed gem in the editor.
- `rbbp` packages gem files into `vendor/cache`.
- `rbbu` updates gems to their latest version.
## Functions
- `ruby-app-root` displays the path to the Ruby application root directory.
- `ruby-info` exposes information about the Ruby environment via the
`$ruby_info` associative array.
## Theming
To display the name of the current Ruby version in a prompt, define the
following style in the `prompt_name_setup` function.
```sh
# %v - ruby version.
zstyle ':prezto:module:ruby:info:version' format 'version:%v'
```
Then add `$ruby_info[version]` to `$PROMPT` or `$RPROMPT` and call
`ruby-info` in the `prompt_name_preexec` hook function.
## Authors
_The authors of this module should be contacted via the [issue tracker][6]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.ruby-lang.org
[2]: https://github.com/rbenv/rbenv
[3]: https://rvm.io
[4]: https://github.com/postmodern/chruby
[5]: https://gembundler.com
[6]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/ruby/functions/ruby-app-root
================================================
#
# Displays the path to the Ruby application root directory.
#
# Authors:
# Sorin Ionescu
#
# function ruby-app-root {
local root_dir="$PWD"
while [[ "$root_dir" != '/' ]]; do
if [[ -f "$root_dir/Gemfile" ]]; then
print "$root_dir"
break
fi
root_dir="$root_dir:h"
done
return 1
# }
================================================
FILE: modules/ruby/functions/ruby-info
================================================
#
# Exposes information about the Ruby environment via the $ruby_info associative
# array.
#
# Authors:
# Sorin Ionescu
#
# function ruby-info {
local version
local version_format
local version_formatted
# Clean up previous $ruby_info.
unset ruby_info
typeset -gA ruby_info
# Grab formatting for anything we might have to do
zstyle -s ':prezto:module:ruby:info:version' format 'version_format'
if [[ -n "$version_format" ]]; then
if (( $+commands[rvm-prompt] )); then
version="$(rvm-prompt)"
elif (( $+commands[rbenv] )); then
version="$(rbenv version-name)"
elif (( $+commands[ruby] )); then
version="${${$(ruby --version)[(w)1,(w)2]}/ /-}"
fi
# Format version.
if [[ -n "$version" && "$version" != "system" ]]; then
zformat -f version_formatted "$version_format" "v:$version"
ruby_info[version]="$version_formatted"
fi
fi
# }
================================================
FILE: modules/ruby/init.zsh
================================================
#
# Configures Ruby local installation, loads version managers, and defines
# aliases.
#
# Authors:
# Sorin Ionescu
# Indrajit Raychaudhuri
#
# Possible lookup locations for manually installed rbenv and rvm.
local_rbenv_paths=({$RBENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}rbenv}/bin/rbenv(N))
local_rvm_paths=({$RVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}rvm}/scripts/rvm(N))
# Load manually installed or package manager installed rbenv into the shell
# session.
if (( $#local_rbenv_paths || $+commands[rbenv] )); then
# Ensure manually installed rbenv is added to path when present.
[[ -s $local_rbenv_paths[1] ]] && path=($local_rbenv_paths[1]:h $path)
eval "$(rbenv init - zsh)"
# Load manually installed rvm into the shell session.
elif (( $#local_rvm_paths )); then
# Unset AUTO_NAME_DIRS since auto adding variable-stored paths to ~ list
# conflicts with rvm.
unsetopt AUTO_NAME_DIRS
source "$local_rvm_paths[1]"
# Load package manager installed chruby into the shell session.
elif (( $+commands[chruby-exec] )); then
if (( ! $+functions[chruby] )); then
source "${commands[chruby-exec]:h:h}/share/chruby/chruby.sh"
fi
if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then
if (( ! $+functions[chruby_auto] )); then
source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh"
fi
# If a default ruby is set, switch to it.
chruby_auto
fi
# Prepend local gems bin directories to PATH.
else
path=($HOME/.gem/ruby/*/bin(N) $path)
fi
unset local_rbenv
# Return if requirements are not found.
if (( ! $+commands[ruby] && ! $#functions[(i)r(benv|vm)] )); then
return 1
fi
#
# Aliases
#
if ! zstyle -t ':prezto:module:ruby:alias' skip; then
# General
alias rb='ruby'
# Bundler
if (( $+commands[bundle] )); then
alias rbb='bundle'
alias rbbc='bundle clean'
alias rbbe='bundle exec'
alias rbbi='bundle install --path vendor/bundle'
alias rbbl='bundle list'
alias rbbo='bundle open'
alias rbbp='bundle package'
alias rbbu='bundle update'
alias rbbI='rbbi \
&& bundle package \
&& print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \
&& print vendor/cache >>! .gitignore'
fi
fi
================================================
FILE: modules/screen/README.md
================================================
# GNU Screen
Defines [GNU Screen][1] aliases and provides for auto launching it at start-up.
## Settings
### Auto-Start
Starts a GNU Screen session automatically when Zsh is launched.
To enable this feature when launching Zsh in a local terminal, add the following
line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:screen:auto-start' local 'yes'
```
To enable this feature when launching Zsh in a SSH connection, add the following
line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:screen:auto-start' remote 'yes'
```
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:screen:alias' skip 'yes'
```
- `scr` is short for `screen`.
- `scrl` lists sessions/socket directory.
- `scrn` starts a new session.
- `scrr` attaches to a session if one exists or start a new one.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Georges Discry](https://github.com/gdiscry)
[1]: https://www.gnu.org/software/screen/
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/screen/init.zsh
================================================
#
# Defines GNU Screen aliases and provides for auto launching it at start-up.
#
# Authors:
# Sorin Ionescu
# Georges Discry
#
# Return if requirements are not found.
if (( ! $+commands[screen] )); then
return 1
fi
#
# Auto Start
#
if [[ -z "$STY" && -z "$EMACS" && -z "$VIM" ]] && ( \
( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' remote ) ||
( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' local ) \
); then
session="$(
screen -list 2> /dev/null \
| sed '1d;$d' \
| awk '!/Dead/ {print $1}' \
| head -1)"
if [[ -n "$session" ]]; then
exec screen -x "$session"
else
exec screen -a -A -U -D -R -m "$SHELL" -l
fi
fi
#
# Aliases
#
if ! zstyle -t ':prezto:module:screen:alias' skip; then
alias scr='screen'
alias scrl='screen -list'
alias scrn='screen -U -S'
alias scrr='screen -a -A -U -D -R'
fi
================================================
FILE: modules/spectrum/README.md
================================================
# Spectrum
Provides for easier use of 256 colors and effects.
To learn more about text formatting, read [A Guide to 256 Color Codes][1].
## Variables
- `BG` provides background colors.
- `FG` provides foreground colors.
- `FX` provides effects.
### Background and Foreground
Terminals support 8, 16, 88, and 256 colors. Check if a terminal supports 256
colors with `tput colors` before use.
The following colors are supported.
- 0 to 255
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
### Effects
Though there are many effects, most terminals support at least bold formatting.
**Not all effects work on all terminals; use them sparingly.**
| Enable | Disable |
| ------------------------- | ---------------------------- |
| | none |
| | normal |
| bold | no-bold |
| faint | no-faint |
| standout | no-standout |
| underline | no-underline |
| blink | no-blink |
| fast-blink | no-fast-blink |
| reverse | no-reverse |
| conceal | no-conceal |
| strikethrough | no-strikethrough |
| gothic | no-gothic |
| double-underline | no-double-underline |
| proportional | no-proportional |
| overline | no-overline |
| | |
| | no-border |
| border-rectangle | no-border-rectangle |
| border-circle | no-border-circle |
| | |
| | no-ideogram-marking |
| underline-or-right | no-underline-or-right |
| double-underline-or-right | no-double-underline-or-right |
| overline-or-left | no-overline-or-left |
| double-overline-or-left | no-double-overline-or-left |
| stress | no-stress |
| | |
| | font-default |
| font-first | no-font-first |
| font-second | no-font-second |
| font-third | no-font-third |
| font-fourth | no-font-fourth |
| font-fifth | no-font-fifth |
| font-sixth | no-font-sixth |
| font-seventh | no-font-seventh |
| font-eighth | no-font-eighth |
| font-ninth | no-font-ninth |
### Plain Text
Use `$BG[none]`, `$FG[none]`, or `$FX[none]` to turn off formatting.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [P.C. Shyamshankar](https://github.com/sykora)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://lucentbeing.com/writing/archives/a-guide-to-256-color-codes/
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/spectrum/init.zsh
================================================
#
# Provides for easier use of 256 colors and effects.
#
# Authors:
# P.C. Shyamshankar
# Sorin Ionescu
#
# Return if requirements are not found.
if [[ $TERM == dumb ]]; then
return 1
fi
typeset -gA FX FG BG
FX=(
none "\e[00m"
normal "\e[22m"
bold "\e[01m" no-bold "\e[22m"
faint "\e[02m" no-faint "\e[22m"
standout "\e[03m" no-standout "\e[23m"
underline "\e[04m" no-underline "\e[24m"
blink "\e[05m" no-blink "\e[25m"
fast-blink "\e[06m" no-fast-blink "\e[25m"
reverse "\e[07m" no-reverse "\e[27m"
conceal "\e[08m" no-conceal "\e[28m"
strikethrough "\e[09m" no-strikethrough "\e[29m"
gothic "\e[20m" no-gothic "\e[22m"
double-underline "\e[21m" no-double-underline "\e[22m"
proportional "\e[26m" no-proportional "\e[50m"
overline "\e[53m" no-overline "\e[55m"
no-border "\e[54m"
border-rectangle "\e[51m" no-border-rectangle "\e[54m"
border-circle "\e[52m" no-border-circle "\e[54m"
no-ideogram-marking "\e[65m"
underline-or-right "\e[60m" no-underline-or-right "\e[65m"
double-underline-or-right "\e[61m" no-double-underline-or-right "\e[65m"
overline-or-left "\e[62m" no-overline-or-left "\e[65m"
double-overline-or-left "\e[63m" no-double-overline-or-left "\e[65m"
stress "\e[64m" no-stress "\e[65m"
font-default "\e[10m"
font-first "\e[11m" no-font-first "\e[10m"
font-second "\e[12m" no-font-second "\e[10m"
font-third "\e[13m" no-font-third "\e[10m"
font-fourth "\e[14m" no-font-fourth "\e[10m"
font-fifth "\e[15m" no-font-fifth "\e[10m"
font-sixth "\e[16m" no-font-sixth "\e[10m"
font-seventh "\e[17m" no-font-seventh "\e[10m"
font-eighth "\e[18m" no-font-eighth "\e[10m"
font-ninth "\e[19m" no-font-ninth "\e[10m"
)
FG[none]="$FX[none]"
BG[none]="$FX[none]"
colors=(black red green yellow blue magenta cyan white)
for color in {0..255}; do
if (( $color >= 0 )) && (( $color < $#colors )); then
index=$(( $color + 1 ))
FG[$colors[$index]]="\e[38;5;${color}m"
BG[$colors[$index]]="\e[48;5;${color}m"
fi
FG[$color]="\e[38;5;${color}m"
BG[$color]="\e[48;5;${color}m"
done
unset color{s,} index
================================================
FILE: modules/ssh/README.md
================================================
# SSH
Provides for an easier use of [SSH][1] by setting up [_ssh-agent_][2].
## Settings
### Identities
To load multiple identities, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github'
```
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._
[Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.openssh.com
[2]: https://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/ssh/init.zsh
================================================
#
# Provides for an easier use of SSH by setting up ssh-agent.
#
# Authors:
# Sorin Ionescu
#
# Return if requirements are not found.
if (( ! $+commands[ssh-agent] )); then
return 1
fi
# Set the path to the SSH directory.
_ssh_dir="$HOME/.ssh"
# Set the path to the environment file if not set by another module.
_ssh_agent_env="${_ssh_agent_env:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.env}"
# Set the path to the persistent authentication socket if not set by another module.
_ssh_agent_sock="${_ssh_agent_sock:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.sock}"
# Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
# Export environment variables.
source "$_ssh_agent_env" 2> /dev/null
# Start ssh-agent if not started.
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then
mkdir -p "$_ssh_agent_env:h"
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
fi
fi
# Create a persistent SSH authentication socket.
if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then
mkdir -p "$_ssh_agent_sock:h"
ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock"
export SSH_AUTH_SOCK="$_ssh_agent_sock"
fi
# Load identities.
if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then
zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities'
# ssh-add has strange requirements for running SSH_ASKPASS, so we duplicate
# them here. Essentially, if the other requirements are met, we redirect stdin
# from /dev/null in order to meet the final requirement.
#
# From ssh-add(1):
# If ssh-add needs a passphrase, it will read the passphrase from the current
# terminal if it was run from a terminal. If ssh-add does not have a terminal
# associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the
# program specified by SSH_ASKPASS and open an X11 window to read the
# passphrase.
if [[ -n "$DISPLAY" && -x "$SSH_ASKPASS" ]]; then
ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} < /dev/null 2> /dev/null
else
ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} 2> /dev/null
fi
fi
# Clean up.
unset _ssh_{dir,identities} _ssh_agent_{env,sock}
================================================
FILE: modules/syntax-highlighting/README.md
================================================
# Syntax Highlighting
Integrates [zsh-syntax-highlighting][1] into Prezto.
This module must be loaded _before_ the _`prompt`_ module.
If this module is used in conjunction with the [_`history-substring-search`_][2]
module, this module must be loaded _before_ the _`history-substring-search`_
module.
Additionally, if this module is used in conjunction with the
[_`autosuggestions`_][3] module, this module must be loaded _before_ the
_`autosuggestions`_ module as well.
To elaborate, the relative order of loading the modules would be
_`syntax-highlighting`_, _`history-substring-search`_, _`autosuggestions`_ and
_`prompt`_.
## Contributors
New features and bug fixes should be submitted to the
[zsh-syntax-highlighting][1] project according to its rules and regulations.
This module will be synchronized against it.
## Settings
### Highlighting
To enable highlighting for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:syntax-highlighting' color 'yes'
```
### Highlighters
Syntax highlighting is accomplished by pluggable [highlighters][4]. This module
only enables the _main_ highlighter by default.
To enable all highlighters, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:syntax-highlighting' highlighters \
'main' \
'brackets' \
'pattern' \
'line' \
'cursor' \
'root'
```
### Highlighting Styles
Each syntax highlighter defines styles used to highlight tokens.
To highlight, for example, builtins, commands, and functions in blue instead of
green, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:syntax-highlighting' styles \
'builtin' 'bg=blue' \
'command' 'bg=blue' \
'function' 'bg=blue'
```
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-syntax-highlighting
[2]: ../history-substring-search#readme
[3]: ../autosuggestions#readme
[4]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/syntax-highlighting/init.zsh
================================================
#
# Integrates zsh-syntax-highlighting into Prezto.
#
# Authors:
# Sorin Ionescu
#
# Return if requirements are not found.
if ! zstyle -t ':prezto:module:syntax-highlighting' color; then
return 1
fi
# Source module files.
source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1
# Set highlighters.
zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'
if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)
fi
# Set highlighting styles.
typeset -A syntax_highlighting_styles
zstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles'
for syntax_highlighting_style in "${(k)syntax_highlighting_styles[@]}"; do
ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]="$syntax_highlighting_styles[$syntax_highlighting_style]"
done
unset syntax_highlighting_style{s,}
# Set pattern highlighting styles.
typeset -A syntax_pattern_styles
zstyle -a ':prezto:module:syntax-highlighting' pattern 'syntax_pattern_styles'
for syntax_pattern_style in "${(k)syntax_pattern_styles[@]}"; do
ZSH_HIGHLIGHT_PATTERNS[$syntax_pattern_style]="$syntax_pattern_styles[$syntax_pattern_style]"
done
unset syntax_pattern_style{s,}
================================================
FILE: modules/terminal/README.md
================================================
# Terminal
Sets terminal window and tab titles.
## Settings
### Auto-Title
To auto set the terminal window and tab titles with the current command or
directory, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:terminal' auto-title 'yes'
```
Auto titling is disabled inside terminal multiplexers (except inside dvtm) since
it interferes with window names defined in configuration files and profile
managers. This can be overridden by setting it to `always`.
```sh
zstyle ':prezto:module:terminal' auto-title 'always'
```
### Title formats
To format terminal window and tab titles, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
zstyle ':prezto:module:terminal:tab-title' format '%m: %s'
zstyle ':prezto:module:terminal:multiplexer-title' format '%s'
```
`%s` will be replaced with the current working directory path or the currently
executing program name.
For a list of sequences, see [Expansion of Prompt Sequences][1].
## Functions
- `set-tab-title` sets the terminal tab title.
- `set-window-title` sets the terminal window title.
- `set-multiplexer-title` sets the terminal multiplexer title.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Olaf Conradi](https://github.com/oohlaf)
[1]: https://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/terminal/init.zsh
================================================
#
# Sets terminal window and tab titles.
#
# Authors:
# Sorin Ionescu
# Olaf Conradi
#
# Return if requirements are not found.
if [[ $TERM == (dumb|linux|*bsd*|eterm*) ]]; then
return 1
fi
# Sets the terminal window title.
function set-window-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"
printf '\e]2;%s\a' "${(V%)title_formatted}"
}
# Sets the terminal tab title.
function set-tab-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"
printf '\e]1;%s\a' "${(V%)title_formatted}"
}
# Sets the terminal multiplexer tab title.
function set-multiplexer-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:multiplexer-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"
printf '\ek%s\e\\' "${(V%)title_formatted}"
}
# Sets the tab and window titles with a given command.
function _terminal-set-titles-with-command {
emulate -L zsh
setopt EXTENDED_GLOB
# Get the command name that is under job control.
if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then
# Get the job name, and, if missing, set it to the default %+.
local job_name="${${2[(wr)%*(\;|)]}:-%+}"
# Make a local copy for use in the subshell.
local -A jobtexts_from_parent_shell
jobtexts_from_parent_shell=(${(kv)jobtexts})
jobs "$job_name" 2> /dev/null > >(
read index discarded
# The index is already surrounded by brackets: [1].
_terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
)
else
# Set the command name, or in the case of sudo or ssh, the next command.
local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}"
local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH
if [[ $TERM == screen* ]]; then
set-multiplexer-title "$truncated_cmd"
fi
set-tab-title "$truncated_cmd"
set-window-title "$cmd"
fi
}
# Sets the tab and window titles with a given path.
function _terminal-set-titles-with-path {
emulate -L zsh
setopt EXTENDED_GLOB
local absolute_path="${${1:a}:-$PWD}"
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
if [[ $TERM == screen* ]]; then
set-multiplexer-title "$truncated_path"
fi
set-tab-title "$truncated_path"
set-window-title "$abbreviated_path"
}
# Do not override precmd/preexec; append to the hook array.
autoload -Uz add-zsh-hook
# Set up the Apple Terminal.
if [[ $TERM_PROGRAM == Apple_Terminal ]] \
&& ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] )
then
# Sets the Terminal.app current working directory before the prompt is
# displayed.
function _terminal-set-terminal-app-proxy-icon {
printf '\e]7;%s\a' "file://${HOST}${PWD// /%20}"
}
add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon
# Unsets the Terminal.app current working directory when a terminal
# multiplexer or remote connection is started since it can no longer be
# updated, and it becomes confusing when the directory displayed in the title
# bar is no longer synchronized with real current working directory.
function _terminal-unset-terminal-app-proxy-icon {
if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then
print '\e]7;\a'
fi
}
add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon
# Do not set the tab and window titles in Terminal.app since it sets the tab
# title to the currently running process by default and the current working
# directory is set separately.
return
fi
# Set up non-Apple terminals.
if zstyle -t ':prezto:module:terminal' auto-title 'always' \
|| (zstyle -t ':prezto:module:terminal' auto-title \
&& ( ! [[ -n "$STY" || -n "$TMUX" ]] ))
then
# Sets titles before the prompt is displayed.
add-zsh-hook precmd _terminal-set-titles-with-path
# Sets titles before command execution.
add-zsh-hook preexec _terminal-set-titles-with-command
fi
================================================
FILE: modules/tmux/README.md
================================================
# Tmux
Defines [_tmux_][1] aliases and provides for auto launching it at start-up.
## Settings
### Auto-Start
Starts a tmux session automatically when Zsh is launched.
To enable this feature when launching Zsh in a local terminal, add the following
line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:auto-start' local 'yes'
```
To enable this feature when launching Zsh in a SSH connection, add the following
line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:auto-start' remote 'yes'
```
In both cases, it will create a background session named _prezto_ if the tmux
server is not started.
You can change the default session name with:
```sh
zstyle ':prezto:module:tmux:session' name ''
```
With `auto-start` enabled, you may want to control how multiple sessions are
managed. The `destroy-unattached` option of tmux controls if the unattached
sessions must be kept alive, making sessions available for later use, configured
in _tmux.conf_:
```conf
set-option -g destroy-unattached [on | off]
```
#### iTerm2 Integration
[iTerm2][6] offers significant integration with tmux. This can be enabled by
adding the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:iterm' integrate 'yes'
```
Read [iTerm2 and tmux Integration][7] for more information.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:tmux:alias' skip 'yes'
```
- `tmuxa` attaches or switches to a tmux session.
- `tmuxl` lists sessions managed by the tmux server.
## Caveats
On macOS, launching tmux can cause the error **launch_msg(...): Socket is not
connected** to be displayed, which can be fixed by installing
[reattach-to-user-namespace][3], available in [Homebrew][4], and adding the
following to _tmux.conf_:
```conf
set-option -g default-command "reattach-to-user-namespace -l $SHELL -l"
```
Furthermore, tmux is known to cause **kernel panics** on macOS. A discussion
about this and Prezto has already been [opened][2].
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Colin Hebert](https://github.com/ColinHebert)
- [Georges Discry](https://github.com/gdiscry)
- [Xavier Cambar](https://github.com/xcambar)
[1]: https://tmux.github.io/
[2]: https://github.com/sorin-ionescu/prezto/issues/62
[3]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
[4]: https://github.com/mxcl/homebrew
[5]: https://github.com/sorin-ionescu/prezto/issues
[6]: https://iterm2.com
[7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration
================================================
FILE: modules/tmux/init.zsh
================================================
#
# Defines tmux aliases and provides for auto launching it at start-up.
#
# Authors:
# Sorin Ionescu
# Colin Hebert
# Georges Discry
# Xavier Cambar
#
# Return if requirements are not found.
if (( ! $+commands[tmux] )); then
return 1
fi
#
# Auto Start
#
if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \
zstyle -t ':prezto:module:tmux:iterm' integrate \
); then
_tmux_iterm_integration='-CC'
fi
if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCODE_RESOLVING_ENVIRONMENT" && "$TERM_PROGRAM" != "vscode" && "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]] && ( \
( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) ||
( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \
); then
tmux start-server
# Create a 'prezto' session if no session has been defined in tmux.conf.
if ! tmux has-session 2> /dev/null; then
zstyle -s ':prezto:module:tmux:session' name tmux_session || tmux_session='prezto'
tmux \
new-session -d -s "$tmux_session" \; \
set-option -t "$tmux_session" destroy-unattached off &> /dev/null
fi
# Attach to the 'prezto' session or to the last session used. (detach first)
exec tmux $_tmux_iterm_integration attach-session -d
fi
#
# Aliases
#
if ! zstyle -t ':prezto:module:tmux:alias' skip; then
alias tmuxa="tmux $_tmux_iterm_integration new-session -A"
alias tmuxl='tmux list-sessions'
fi
================================================
FILE: modules/utility/README.md
================================================
# Utility
Defines general aliases and functions.
This module must be loaded _before_ the [_`completion`_][1] module so that the
provided completion definitions are loaded automatically by _`completion`_
module.
**Note:** Some of the utilities configured in this module might be provided via
GNU utilities with incompatible arguments on non-GNU systems. In such cases,
using [_`gnu-utility`_][2] module is recommended and it must be loaded
_before_ this module.
To elaborate, the relative order of loading the modules would be
_`gnu-utility`_, _`utility`_ and _`completion`_.
## Settings
### Highlighting
If you have enabled color globally in _`${ZDOTDIR:-$HOME}/.zpreztorc`_, you may
disable it selectively for certain commands.
To disable `ls` color, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_.
When coloring is disabled, type indicators (`\*`, `/`, `=>`, `@`, `=`, `|`, `%`)
will be appended to entries.
```sh
zstyle ':prezto:module:utility:ls' color 'no'
```
To disable GNU coreutils `ls` to list directories grouped first, add the
following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:ls' dirs-first 'no'
```
To disable `grep` highlighting, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:grep' color 'no'
```
To disable `diff` highlighting, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:diff' color 'no'
```
To disable `wdiff` highlighting, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:wdiff' color 'no'
```
To disable `make` highlighting, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:make' color 'no'
```
### Download Helper
To configure the download helper to be used with alias `get`, add the following
to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'curl'`,
`'wget'` or `'aria2c'`.
```sh
zstyle -s ':prezto:module:utility:download' helper ''
```
## Aliases
### Disabled Spelling Correction
- `ack`
- `cd`
- `cp`
- `ebuild`
- `gcc`
- `gist`
- `grep`
- `heroku`
- `ln`
- `man`
- `mkdir`
- `mv`
- `mysql`
- `rm`
To disable all spelling corrections, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility' correct 'no'
```
### Disabled File Globbing
- `bower`
- `fc`
- `find`
- `ftp`
- `history`
- `locate`
- `rake`
- `rsync` (selectively enabled for local files)
- `scp` (selectively enabled for local files)
- `sftp`
### General
- `_` executes a command as another user (`sudo`).
- `b` opens the default web browser.
- `diffu` shorthand for `diff --unified`.
- `e` opens the default editor.
- `mkdir` creates directories, including intermediary directories.
- `p` opens the default pager.
- `po` removes a directory from the stack and changes to it (`popd`).
- `pu` changes the directory and pushes the old directory onto the stack
(`pushd`).
- `sa` search aliases for a word.
- `type` displays all the attribute values of a shell parameter.
### Files and Directories
- `ls` lists with directories grouped first (GNU only).
- `l` lists in one column, hidden files.
- `ll` lists human readable sizes.
- `lr` lists human readable sizes, recursively.
- `la` lists human readable sizes, hidden files.
- `lm` lists human readable sizes, hidden files through pager.
- `lx` lists sorted by extension (GNU only).
- `lk` lists sorted by size, largest last.
- `lt` lists sorted by date, most recent last.
- `lc` lists sorted by date, most recent last, shows change time.
- `lu` lists sorted by date, most recent last, shows access time.
### macOS Everywhere
- `o` opens files and directories (`open` or `xdg-open`).
- `get` downloads files (`curl`, `wget` or `aria2c`).
- `pbcopy` copies to the pasteboard (`pbcopy`, `xclip` or `xsel`).
- `pbpaste` pastes from the pasteboard (`pbcopy`, `xclip` or `xsel`).
- `pbc` copies to the pasteboard (`pbcopy`).
- `pbp` pastes from the pasteboard (`pbpaste`).
### Resource Usage
- `df` displays free disk space using human readable units (aliases to `pydf`,
if installed).
- `du` displays disk usage using human readable units.
- `top` displays information about processes.
- `topc` displays information about processes sorted by CPU usage.
- `topm` displays information about processes sorted by RAM usage.
### Safe ops
By default, `cp`,`ln`, `mv` and `rm` are aliased to their interactive variants.
If this is not desired, it can be disabled by adding the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility' safe-ops 'no'.
```
In addition, the following aliases have been added:
- `cpi` copies files and directories interactively.
- `lni` links files and directories interactively.
- `mvi` moves files and directories interactively.
- `rmi` removes files and directories interactively.
### Miscellaneous
- `http-serve` serves a directory via HTTP.
## Functions
### General
- `slit` prints columns _1, 2, 3 ... n_.
### Files and Directories
- `cdls` changes to a directory and lists its contents.
- `dut` displays the grand total disk usage using human readable units.
- `find-exec` finds files and executes a command on them.
- `mkdcd` makes a directory and changes to it.
- `popdls` pops an entry off the directory stack and lists its contents.
- `pushdls` pushes an entry onto the directory stack and lists its contents.
- `noremoteglob` enable local path globbing but disable remote path globbing.
### Developer
- `diff` highlights diff output (requires `colordiff`).
- `make` highlights make output (requires `colormake`).
- `wdiff` highlights wdiff output (requires `wdiff` or `git`).
### Resource usage
- `psu` displays user owned processes status.
### Search and Replace
- `prep` provides a grep-like pattern search.
- `psub` provides a sed-like pattern substitution.
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._
- [Robby Russell](https://github.com/robbyrussell)
- [Suraj N. Kurapati](https://github.com/sunaku)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: ../completion#readme
[2]: ../gnu-utility#readme
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/utility/functions/_cdls_popdls_pushdls
================================================
#compdef cdls popdls pushdls
#autoload
#
# Completes cdls, popdls, and pushdls.
#
# Authors:
# Sorin Ionescu
#
_cd
================================================
FILE: modules/utility/functions/_dut
================================================
#compdef dut
#autoload
#
# Completes dut.
#
# Authors:
# Sorin Ionescu
#
_du
================================================
FILE: modules/utility/functions/_mkdcd
================================================
#compdef mkdcd
#autoload
#
# Completes mkdcd.
#
# Authors:
# Sorin Ionescu
#
local expl
_wanted directories expl 'directory' _path_files -/ || _message 'directory'
================================================
FILE: modules/utility/functions/_noremoteglob
================================================
#compdef noremoteglob
#autoload
#
# Completes noremoteglob.
#
# Authors:
# Indrajit Raychaudhuri
#
_precommand
================================================
FILE: modules/utility/functions/_prep
================================================
#compdef prep
#autoload
#
# Completes prep.
#
# Authors:
# Sorin Ionescu
#
_arguments \
'-i[ignore case]' \
'-m[^ and $ match the start and the end of a line]' \
'-s[. matches newline]' \
'-v[invert match]' \
'-x[ignore whitespace and comments]' \
'1::pattern:' \
'2::files:_files' && return 0
================================================
FILE: modules/utility/functions/_psub
================================================
#compdef psub
#autoload
#
# Completes psub.
#
# Authors:
# Sorin Ionescu
#
_arguments \
'-g[match globally]' \
'-i[ignore case]' \
'-m[^ and $ match the start and the end of a line]' \
'-s[. matches newline]' \
'-x[ignore whitespace and comments]' \
'1::pattern:' \
'2::replacement:' \
'3::files:_files' && return 0
================================================
FILE: modules/utility/functions/diff
================================================
#
# Highlights diff output.
#
# Authors:
# Sorin Ionescu
#
# function diff {
if zstyle -t ':prezto:module:utility:diff' color \
&& [[ -t 1 ]] \
&& (( $+commands[colordiff] )); then
command diff "$@" | colordiff
return "${pipestatus[1]}"
else
command diff "$@"
fi
# }
================================================
FILE: modules/utility/functions/dut
================================================
#
# Displays the grand total disk usage using human readable units.
#
# Authors:
# Suraj N. Kurapati
# Sorin Ionescu
#
# function dut {
(( $# == 0 )) && set -- *
if [[ ${(@M)${(f)"$(du --version 2>&1)"}:#*GNU *} ]]; then
du -khsc "$@" | sort -h -r
else
local line size name
local -a record
while IFS=$'\n' read line; do
record=(${(z)line})
size="$(($record[1] / 1024.0))"
name="$record[2,-1]"
printf "%9.1LfM %s\n" "$size" "$name"
done < <(du -kcs "$@") | sort -n -r
fi
# }
================================================
FILE: modules/utility/functions/make
================================================
#
# Highlights make output.
#
# Authors:
# Sorin Ionescu
#
# function make {
if zstyle -t ':prezto:module:utility:make' color \
&& (( $+commands[colormake] )); then
command colormake "$@"
else
command make "$@"
fi
# }
================================================
FILE: modules/utility/functions/prep
================================================
#
# Provides a grep-like pattern search.
#
# Authors:
# Sorin Ionescu
#
# function prep {
local usage pattern modifiers invert
usage="$(
cat <&2
print "$usage" >&2
return 1
;;
([?])
print "$0: unknown option: $OPTARG" >&2
print "$usage" >&2
return 1
;;
esac
done
shift $(( $OPTIND - 1 ))
if (( $# < 1 )); then
print "$usage" >&2
return 1
fi
pattern="$1"
shift
perl -n -l -e "print if ${invert:+not} m/${pattern//\//\\/}/${modifiers}" "$@"
# }
================================================
FILE: modules/utility/functions/psub
================================================
#
# Provides a sed-like pattern substitution.
#
# Authors:
# Sorin Ionescu
#
# function psub {
local usage pattern replacement modifiers
usage="$(
cat <&2
print "$usage" >&2
return 1
;;
([?])
print "$0: unknown option: $OPTARG" >&2
print "$usage" >&2
return 1
;;
esac
done
shift $(( $OPTIND - 1 ))
if (( $# < 2 )); then
print "$usage" >&2
return 1
fi
pattern="$1"
replacement="$2"
repeat 2 shift
perl -i'.orig' -n -l -e "s/${pattern//\//\\/}/${replacement//\//\\/}/${modifiers}; print" "$@"
# }
================================================
FILE: modules/utility/functions/wdiff
================================================
#
# Highlights wdiff output.
#
# Authors:
# Sorin Ionescu
# Indrajit Raychaudhuri
#
# function wdiff {
if zstyle -t ':prezto:module:utility:wdiff' color; then
if (( $+commands[wdiff] )); then
command wdiff \
--avoid-wraps \
--start-delete="$(print -n $FG[red])" \
--end-delete="$(print -n $FG[none])" \
--start-insert="$(print -n $FG[green])" \
--end-insert="$(print -n $FG[none])" \
"$@" \
| sed 's/^\(@@\( [+-][[:digit:]]*,[[:digit:]]*\)\{2\} @@\)$/;5;6m\10m/g'
elif (( $+commands[git] )); then
command git --no-pager diff --no-ext-diff --no-index --color=auto --color-words "$@"
else
command wdiff "$@"
fi
elif (( ! $+commands[wdiff] && $+commands[git] )); then
command git --no-pager diff --no-ext-diff --no-index --color=never "$@"
else
command wdiff "$@"
fi
# }
================================================
FILE: modules/utility/functions/zsh-help
================================================
#
# Provides a much easier way to search and access ZSH's manual. First checks for
# terms at the start of the manual, then checks if it's at start of a line allowing
# whitespace.
#
# Authors:
# Samantha McVey
#
# function zsh-help {
local usage="$(
cat <&2; fi
if man --pager='' ${i} | grep -E ${case} "${pattern}" > /dev/null; then
printf "%s" "${i}"; return 0;
fi
done
return 1
}
# By default search only things at start of line
local first_prefix='^'
local prefix='^\s*'
if [[ ${1} == '--zsh-help-debug' ]]; then
shift; debug=1
fi
if [[ ${1} == "--all" ]]; then
shift; first_prefix='' # We're searching everything, so remove the prefix
fi
if [[ $# < 1 || $1 == "--help" ]]; then
printf "%s\n" "${usage}"
unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope
return 1
fi
if [[ ${1} == "test" && $# == 1 ]]; then
case=''
pattern='^CONDITIONAL EXPRESSIONS$'
elif [[ ($1 == "-eq" || $1 == "-ne" || $1 == "-lt" || $1 == "-gt" || $1 == "-le" || $1 == "-ge") && $# == 1 ]]; then
case=''
pattern="${prefix}exp1\s+${1}\s+exp2"
elif [[ $1 == 'zstyle' ]]; then
pattern=$(_zsh-help-join '\s+' "$@")
section=ZSHMODULES
fi
# If it wasn't one of the special-cased things, check ZSHBUILTINS first. If
# not found there, we will search ZSHALL
if [[ ${pattern} == "" ]]; then
pattern="$(_zsh-help-join '\s+' "$@")"
# search for sections at the start of the man page first
section=$(_zsh-help-try-query "${case}" "${first_prefix}${pattern}")
# If it exists there, keep ZSHBUILTINS as the section
if (( $? == 0 )); then
pattern="${first_prefix}${pattern}"
elif [[ "${prefix}" ]]; then
# if not found, search for the term preceeded by whitetext
section=$(_zsh-help-try-query "${case}" "${prefix}${pattern}")
if (( $? == 0 )); then
pattern="${prefix}${pattern}"
else
pattern=""
fi
fi
if [[ ! ${pattern} ]]; then # Otherwise we use zshall
printf "Can't find term\n" 2>&1
unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope
return 1;
fi
fi
local command="man --pager=\"less ${case} -p '${pattern}'\" \"${section}\""
if [[ ${debug} ]]; then
printf "\nFinal search term is:\n"; printf "%s\n" "${command}";
else
eval $command
fi
local rtrn=$?
unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope
return $?
#}
================================================
FILE: modules/utility/init.zsh
================================================
#
# Defines general aliases and functions.
#
# Authors:
# Robby Russell
# Suraj N. Kurapati
# Sorin Ionescu
#
# Load dependencies.
pmodload 'helper' 'spectrum'
# Correct commands.
if zstyle -T ':prezto:module:utility' correct; then
setopt CORRECT
fi
# Load 'run-help' function.
autoload -Uz run-help-{ip,openssl,sudo}
#
# Aliases
#
# Disable correction.
alias ack='nocorrect ack'
alias cd='nocorrect cd'
alias cp='nocorrect cp'
alias ebuild='nocorrect ebuild'
alias gcc='nocorrect gcc'
alias gist='nocorrect gist'
alias grep='nocorrect grep'
alias heroku='nocorrect heroku'
alias ln='nocorrect ln'
alias man='nocorrect man'
alias mkdir='nocorrect mkdir'
alias mv='nocorrect mv'
alias mysql='nocorrect mysql'
alias rm='nocorrect rm'
# Disable globbing.
alias bower='noglob bower'
alias fc='noglob fc'
alias find='noglob find'
alias ftp='noglob ftp'
alias history='noglob history'
alias locate='noglob locate'
alias rake='noglob rake'
alias rsync='noglob rsync'
alias scp='noglob scp'
alias sftp='noglob sftp'
# Define general aliases.
alias _='sudo'
alias b='${(z)BROWSER}'
alias diffu="diff --unified"
alias e='${(z)VISUAL:-${(z)EDITOR}}'
alias mkdir="${aliases[mkdir]:-mkdir} -p"
alias p='${(z)PAGER}'
alias po='popd'
alias pu='pushd'
alias sa='alias | grep -i'
alias type='type -a'
# Safe ops. Ask the user before doing anything destructive.
alias cpi="${aliases[cp]:-cp} -i"
alias lni="${aliases[ln]:-ln} -i"
alias mvi="${aliases[mv]:-mv} -i"
alias rmi="${aliases[rm]:-rm} -i"
if zstyle -T ':prezto:module:utility' safe-ops; then
alias cp="${aliases[cp]:-cp} -i"
alias ln="${aliases[ln]:-ln} -i"
alias mv="${aliases[mv]:-mv} -i"
alias rm="${aliases[rm]:-rm} -i"
fi
# ls
if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd|uutils) *} ]]; then
# GNU Core Utilities
if zstyle -T ':prezto:module:utility:ls' dirs-first; then
alias ls="${aliases[ls]:-ls} --group-directories-first"
fi
if zstyle -t ':prezto:module:utility:ls' color; then
# Define colors for GNU ls if they're not already defined
if (( ! $+LS_COLORS )); then
# Try dircolors when available
if is-callable 'dircolors'; then
eval "$(dircolors --sh $HOME/.dir_colors(N))"
else
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'
fi
fi
alias ls="${aliases[ls]:-ls} --color=auto"
else
alias ls="${aliases[ls]:-ls} -F"
fi
else
# BSD Core Utilities
if zstyle -t ':prezto:module:utility:ls' color; then
# Define colors for BSD ls if they're not already defined
if (( ! $+LSCOLORS )); then
export LSCOLORS='exfxcxdxbxGxDxabagacad'
fi
alias ls="${aliases[ls]:-ls} -G"
else
alias ls="${aliases[ls]:-ls} -F"
fi
fi
alias l='ls -1A' # Lists in one column, hidden files.
alias ll='ls -lh' # Lists human readable sizes.
alias lr='ll -R' # Lists human readable sizes, recursively.
alias la='ll -A' # Lists human readable sizes, hidden files.
alias lm='la | "$PAGER"' # Lists human readable sizes, hidden files through pager.
alias lk='ll -Sr' # Lists sorted by size, largest last.
alias lt='ll -tr' # Lists sorted by date, most recent last.
alias lc='lt -c' # Lists sorted by date, most recent last, shows change time.
alias lu='lt -u' # Lists sorted by date, most recent last, shows access time.
if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*GNU *} ]]; then
alias lx='ll -XB' # Lists sorted by extension (GNU only).
fi
# Grep
if zstyle -t ':prezto:module:utility:grep' color; then
export GREP_COLOR=${GREP_COLOR:-'37;45'} # BSD.
export GREP_COLORS=${GREP_COLORS:-"mt=$GREP_COLOR"} # GNU.
alias grep="${aliases[grep]:-grep} --color=auto"
fi
# macOS Everywhere
if is-darwin; then
alias o='open'
elif is-cygwin; then
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
elif is-termux; then
alias o='termux-open'
alias pbcopy='termux-clipboard-set'
alias pbpaste='termux-clipboard-get'
else
alias o='xdg-open'
if (( $+commands[xclip] )); then
alias pbcopy='xclip -selection clipboard -in'
alias pbpaste='xclip -selection clipboard -out'
elif (( $+commands[xsel] )); then
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
fi
fi
alias pbc='pbcopy'
alias pbp='pbpaste'
# File Download
zstyle -s ':prezto:module:utility:download' helper '_download_helper' || _download_helper='curl'
typeset -A _download_helpers=(
aria2c 'aria2c --continue --remote-time --max-tries=0'
curl 'curl --continue-at - --location --progress-bar --remote-name --remote-time'
wget 'wget --continue --progress=bar --timestamping'
)
if (( $+commands[$_download_helper] && $+_download_helpers[$_download_helper] )); then
alias get="$_download_helpers[$_download_helper]"
elif (( $+commands[curl] )); then
alias get="$_download_helpers[curl]"
fi
unset _download_helper{,s}
# Resource Usage
alias df='df -kh'
alias du='du -kh'
if is-darwin || is-bsd; then
alias topc='top -o cpu'
alias topm='top -o vsize'
else
alias topc='top -o %CPU'
alias topm='top -o %MEM'
fi
# Miscellaneous
# Serves a directory via HTTP.
if (( $#commands[(i)python(|[23])] )); then
autoload -Uz is-at-least
if (( $+commands[python3] )); then
alias http-serve='python3 -m http.server'
elif (( $+commands[python2] )); then
alias http-serve='python2 -m SimpleHTTPServer'
elif is-at-least 3 ${"$(python --version 2>&1)"[(w)2]}; then
alias http-serve='python -m http.server'
else
alias http-serve='python -m SimpleHTTPServer'
fi
fi
#
# Functions
#
# Makes a directory and changes to it.
function mkdcd {
[[ -n "$1" ]] && mkdir -p "$1" && builtin cd "$1"
}
# Changes to a directory and lists its contents.
function cdls {
builtin cd "$argv[-1]" && ls "${(@)argv[1,-2]}"
}
# Pushes an entry onto the directory stack and lists its contents.
function pushdls {
builtin pushd "$argv[-1]" && ls "${(@)argv[1,-2]}"
}
# Pops an entry off the directory stack and lists its contents.
function popdls {
builtin popd "$argv[-1]" && ls "${(@)argv[1,-2]}"
}
# Prints columns 1 2 3 ... n.
function slit {
awk "{ print ${(j:,:):-\$${^@}} }"
}
# Finds files and executes a command on them.
function find-exec {
find . -type f -iname "*${1:-}*" -exec "${2:-file}" '{}' \;
}
# Displays user owned processes status.
function psu {
ps -U "${1:-$LOGNAME}" -o 'pid,%cpu,%mem,command' "${(@)argv[2,-1]}"
}
# Enables globbing selectively on path arguments.
# Globbing is enabled on local paths (starting in '/' and './') and disabled
# on remote paths (containing ':' but not starting in '/' and './'). This is
# useful for programs that have their own globbing for remote paths.
# Currently, this is used by default for 'rsync' and 'scp'.
# Example:
# - Local: '*.txt', './foo:2017*.txt', '/var/*:log.txt'
# - Remote: user@localhost:foo/
#
# NOTE: This function is buggy and is not used anywhere until we can make sure
# it's fixed. See https://github.com/sorin-ionescu/prezto/issues/1443 and
# https://github.com/sorin-ionescu/prezto/issues/1521 for more information.
function noremoteglob {
local -a argo
local cmd="$1"
for arg in ${argv:2}; do case $arg in
( ./* ) argo+=( ${~arg} ) ;; # local relative, glob
( /* ) argo+=( ${~arg} ) ;; # local absolute, glob
( *:* ) argo+=( ${arg} ) ;; # remote, noglob
( * ) argo+=( ${~arg} ) ;; # default, glob
esac; done
command $cmd "${(@)argo}"
}
================================================
FILE: modules/wakeonlan/README.md
================================================
# Wake-on-LAN
This module provides a wrapper around the [wakeonlan][1] tool.
## Usage
To use this wrapper, create the _`~/.wakeonlan`_ directory, and place in it one
file for each device you would like to be able to wake. Give the file a name
that describes the device, such as its hostname.
Each file should contain a line with the MAC address of the target device and
the network broadcast address. For instance, there might be a file
_`~/.wakeonlan/leto`_ with the following contents:
```conf
00:11:22:33:44:55:66 192.168.0.255
```
To wake that device, use the following command:
```console
wake leto
```
For more information on the configuration file format, read the
[wakeonlan man page][2].
## Authors
_The authors of this module should be contacted via [issue tracker][3]._
- [Paul Dann](https://github.com/giddie)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://gsd.di.uminho.pt/jpo/software/wakeonlan/
[2]: https://man.cx/wakeonlan
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/wakeonlan/functions/_wake
================================================
#compdef wake
#autoload
#
# Completes wake.
#
# Authors:
# Paul Gideon Dann
# Sorin Ionescu
#
_arguments "1:device to wake:_files -W '$HOME/.wakeonlan'" && return 0
================================================
FILE: modules/wakeonlan/functions/wake
================================================
#
# Wakes devices via wakeonlan.
#
# Authors:
# Paul Gideon Dann
# Sorin Ionescu
#
# function wake {
local config_file="$HOME/.wakeonlan/$1"
if [[ ! -s "$config_file" ]]; then
print "$0: invalid device file: $1" >&2
return 1
fi
if (( ! $+commands[wakeonlan] )); then
print "$0: command not found: wakeonlan" >&2
return 1
fi
wakeonlan -f "$config_file"
# }
================================================
FILE: modules/yum/README.md
================================================
# Yum
Defines [_yum_][1] aliases.
## Aliases
- `yumc` removes package(s) and leaves.
- `yumi` installs package(s).
- `yumh` displays history.
- `yuml` lists packages.
- `yumL` lists installed packages.
- `yumq` displays package information.
- `yumr` removes package(s).
- `yums` searches for a package.
- `yumu` updates packages.
- `yumU` upgrades packages.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://yum.baseurl.org
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/yum/init.zsh
================================================
#
# Defines yum aliases.
#
# Authors:
# Simon
# Sorin Ionescu
#
# Return if requirements are not found.
if (( ! $+commands[yum] )); then
return 1
fi
#
# Aliases
#
alias yumc='sudo yum clean all' # Cleans the cache.
alias yumh='yum history' # Displays history.
alias yumi='sudo yum install' # Installs package(s).
alias yuml='yum list' # Lists packages.
alias yumL='yum list installed' # Lists installed packages.
alias yumq='yum info' # Displays package information.
alias yumr='sudo yum remove' # Removes package(s).
alias yums='yum search' # Searches for a package.
alias yumu='sudo yum update' # Updates packages.
alias yumU='sudo yum upgrade' # Upgrades packages.
================================================
FILE: runcoms/README.md
================================================
# Configuration Files
Zsh has several system-wide and user-local configuration files.
Additionally, Prezto has one user-local configuration file.
System-wide configuration files are installation-dependent but are installed
in _`/etc`_ by default.
User-local configuration files have the same name as their global counterparts
but are prefixed with a dot (hidden). Zsh looks for these files in the path
stored in the `$ZDOTDIR` environment variable. However, if said variable is
not defined, Zsh will use the user's home directory.
## File Descriptions
The [configuration files][1] are read in the following order:
1. _`/etc/zshenv`_
2. _`${ZDOTDIR:-$HOME}/.zshenv`_
3. _`/etc/zprofile`_
4. _`${ZDOTDIR:-$HOME}/.zprofile`_
5. _`/etc/zshrc`_
6. _`${ZDOTDIR:-$HOME}/.zshrc`_
7. _`${ZDOTDIR:-$HOME}/.zpreztorc`_
8. _`/etc/zlogin`_
9. _`${ZDOTDIR:-$HOME}/.zlogin`_
10. _`${ZDOTDIR:-$HOME}/.zlogout`_
11. _`/etc/zlogout`_
### zshenv
This file is sourced by all instances of Zsh, and thus, it should be kept as
small as possible and should only define environment variables.
### zprofile
This file is similar to _zlogin_, but it is sourced before _zshrc_. It was added
for [KornShell][2] fans. See the description of _zlogin_ below for what it may
contain.
_zprofile_ and _zlogin_ are not meant to be used together but can be done so.
### zshrc
This file is sourced by interactive shells. It should define aliases, functions,
shell options, and key bindings.
### zpreztorc
This file configures Prezto.
### zlogin
This file is sourced by login shells after _zshrc_. Thus, it should contain
commands that need to execute at login. It is usually used for messages such as
[_`fortune`_][3], [_`msgs`_][4], or for the creation of files.
This is not the file to define aliases, functions, shell options, and key
bindings. It should not change the shell environment.
### zlogout
This file is sourced by login shells during logout. It should be used for
displaying messages and for deletion of files.
## Authors
_The authors of these files should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://zsh.sourceforge.net/Intro/intro_3.html#SEC3
[2]: https://www.kornshell.com
[3]: https://en.wikipedia.org/wiki/Fortune_(Unix)
[4]: https://www.manpagez.com/man/1/msgs
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: runcoms/zlogin
================================================
#
# Executes commands at login post-zshrc.
#
# Authors:
# Sorin Ionescu
#
# Execute code that does not affect the current session in the background.
{
# Compile the completion dump to increase startup speed.
zcompdump="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump"
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
if command mkdir "${zcompdump}.zwc.lock" 2>/dev/null; then
zcompile "$zcompdump"
command rmdir "${zcompdump}.zwc.lock" 2>/dev/null
fi
fi
} &!
# Execute code only if STDERR is bound to a TTY.
if [[ -o INTERACTIVE && -t 2 ]]; then
# Print a random, hopefully interesting, adage.
if (( $+commands[fortune] )); then
fortune -s
print
fi
fi >&2
================================================
FILE: runcoms/zlogout
================================================
#
# Executes commands at logout.
#
# Authors:
# Sorin Ionescu
#
# Execute code only if STDERR is bound to a TTY.
[[ -o INTERACTIVE && -t 2 ]] && {
SAYINGS=(
"So long and thanks for all the fish.\n -- Douglas Adams"
"Good morning! And in case I don't see ya, good afternoon, good evening and goodnight.\n --Truman Burbank"
)
# Print a randomly-chosen message:
echo $SAYINGS[$(($RANDOM % $#SAYINGS + 1))]
} >&2
================================================
FILE: runcoms/zpreztorc
================================================
#
# Sets Prezto options.
#
# Authors:
# Sorin Ionescu
#
#
# General
#
# Set case-sensitivity for completion, history lookup, etc.
# zstyle ':prezto:*:*' case-sensitive 'yes'
# Color output (auto set to 'no' on dumb terminals).
zstyle ':prezto:*:*' color 'yes'
# Add additional directories to load prezto modules from
# zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
# Allow module overrides when pmodule-dirs causes module name collisions
# zstyle ':prezto:load' pmodule-allow-overrides 'yes'
# Set the Zsh modules to load (man zshmodules).
# zstyle ':prezto:load' zmodule 'attr' 'stat'
# Set the Zsh functions to load (man zshcontrib).
# zstyle ':prezto:load' zfunction 'zargs' 'zmv'
# Set the Prezto modules to load (browse modules).
# The order matters.
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'history-substring-search' \
'prompt'
#
# Autosuggestions
#
# Set the query found color.
# zstyle ':prezto:module:autosuggestions:color' found ''
#
# Completions
#
# Set the entries to ignore in static '/etc/hosts' for host completion.
# zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
# '0.0.0.0' '127.0.0.1'
#
# Editor
#
# Set the characters that are considered to be part of a word.
# zstyle ':prezto:module:editor' wordchars '*?_-.[]~&;!#$%^(){}<>'
# Set the key mapping style to 'emacs' or 'vi'.
zstyle ':prezto:module:editor' key-bindings 'emacs'
# Auto convert .... to ../..
# zstyle ':prezto:module:editor' dot-expansion 'yes'
# Allow the zsh prompt context to be shown.
#zstyle ':prezto:module:editor' ps-context 'yes'
#
# Git
#
# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'.
# zstyle ':prezto:module:git:status:ignore' submodules 'all'
#
# GNU Utility
#
# Set the command prefix on non-GNU systems.
# zstyle ':prezto:module:gnu-utility' prefix 'g'
#
# History
#
# Set the file to save the history in when an interactive shell exits.
# zstyle ':prezto:module:history' histfile "${ZDOTDIR:-$HOME}/.zsh_history"
# Set the maximum number of events stored in the internal history list.
# zstyle ':prezto:module:history' histsize 10000
# Set the maximum number of history events to save in the history file.
# zstyle ':prezto:module:history' savehist 10000
#
# History Substring Search
#
# Set the query found color.
# zstyle ':prezto:module:history-substring-search:color' found ''
# Set the query not found color.
# zstyle ':prezto:module:history-substring-search:color' not-found ''
# Set the search globbing flags.
# zstyle ':prezto:module:history-substring-search' globbing-flags ''
# Enable search case-sensitivity.
# zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
# Enable search for fuzzy matches.
# zstyle ':prezto:module:history-substring-search' fuzzy 'yes'
# Enable search uniqueness.
# zstyle ':prezto:module:history-substring-search' unique 'yes'
# Enable prefixed search.
# zstyle ':prezto:module:history-substring-search' prefixed 'yes'
#
# macOS
#
# Set the keyword used by `mand` to open man pages in Dash.app
# zstyle ':prezto:module:osx:man' dash-keyword 'manpages'
#
# Pacman
#
# Set the Pacman frontend.
# zstyle ':prezto:module:pacman' frontend 'yaourt'
#
# Prompt
#
# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'sorin'
# Set the working directory prompt display length.
# By default, it is set to 'short'. Set it to 'long' (without '~' expansion)
# for longer or 'full' (with '~' expansion) for even longer prompt display.
# zstyle ':prezto:module:prompt' pwd-length 'short'
# Set the prompt to display the return code along with an indicator for non-zero
# return codes. This is not supported by all prompts.
# zstyle ':prezto:module:prompt' show-return-val 'yes'
#
# Python
#
# Auto switch the Python virtualenv on directory change.
# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'
# Automatically initialize virtualenvwrapper if pre-requisites are met.
# zstyle ':prezto:module:python:virtualenv' initialize 'yes'
#
# Ruby
#
# Auto switch the Ruby version on directory change.
# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
#
# Screen
#
# Auto start a session when Zsh is launched in a local terminal.
# zstyle ':prezto:module:screen:auto-start' local 'yes'
# Auto start a session when Zsh is launched in a SSH connection.
# zstyle ':prezto:module:screen:auto-start' remote 'yes'
#
# SSH
#
# Set the SSH identities to load into the agent.
# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github'
#
# Syntax Highlighting
#
# Set syntax highlighters.
# By default, only the main highlighter is enabled.
# zstyle ':prezto:module:syntax-highlighting' highlighters \
# 'main' \
# 'brackets' \
# 'pattern' \
# 'line' \
# 'cursor' \
# 'root'
#
# Set syntax highlighting styles.
# zstyle ':prezto:module:syntax-highlighting' styles \
# 'builtin' 'bg=blue' \
# 'command' 'bg=blue' \
# 'function' 'bg=blue'
#
# Set syntax pattern styles.
# zstyle ':prezto:module:syntax-highlighting' pattern \
# 'rm*-rf*' 'fg=white,bold,bg=red'
#
# Terminal
#
# Auto set the tab and window titles.
# zstyle ':prezto:module:terminal' auto-title 'yes'
# Set the window title format.
# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
# Set the tab title format.
# zstyle ':prezto:module:terminal:tab-title' format '%m: %s'
# Set the terminal multiplexer title format.
# zstyle ':prezto:module:terminal:multiplexer-title' format '%s'
#
# Tmux
#
# Auto start a session when Zsh is launched in a local terminal.
# zstyle ':prezto:module:tmux:auto-start' local 'yes'
# Auto start a session when Zsh is launched in a SSH connection.
# zstyle ':prezto:module:tmux:auto-start' remote 'yes'
# Integrate with iTerm2.
# zstyle ':prezto:module:tmux:iterm' integrate 'yes'
# Set the default session name:
# zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME'
#
# Utility
#
# Enabled safe options. This aliases cp, ln, mv and rm so that they prompt
# before deleting or overwriting files. Set to 'no' to disable this safer
# behavior.
# zstyle ':prezto:module:utility' safe-ops 'yes'
================================================
FILE: runcoms/zprofile
================================================
#
# Executes commands at login pre-zshrc.
#
# Authors:
# Sorin Ionescu
#
#
# Browser
#
if [[ -z "$BROWSER" && "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
if [[ -z "$EDITOR" ]]; then
export EDITOR='nano'
fi
if [[ -z "$VISUAL" ]]; then
export VISUAL='nano'
fi
if [[ -z "$PAGER" ]]; then
export PAGER='less'
fi
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Paths
#
# Ensure path arrays do not contain duplicates.
typeset -gU cdpath fpath mailpath path
# Set the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
$HOME/{,s}bin(N)
/opt/{homebrew,local}/{,s}bin(N)
/usr/local/{,s}bin(N)
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X to enable it.
if [[ -z "$LESS" ]]; then
export LESS='-g -i -M -R -S -w -X -z-4'
fi
# Set the Less input preprocessor.
# Try both `lesspipe` and `lesspipe.sh` as either might exist on a system.
if [[ -z "$LESSOPEN" ]] && (( $#commands[(i)lesspipe(|.sh)] )); then
export LESSOPEN="| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-"
fi
================================================
FILE: runcoms/zshenv
================================================
#
# Defines environment variables.
#
# Authors:
# Sorin Ionescu
#
# Ensure that a non-login, non-interactive shell has a defined environment.
if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
source "${ZDOTDIR:-$HOME}/.zprofile"
fi
================================================
FILE: runcoms/zshrc
================================================
#
# Executes commands at the start of an interactive session.
#
# Authors:
# Sorin Ionescu
#
# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
# Customize to your needs...