X
mkdir ~/.zpresto-contrib
git clone https://github.com/mroth/evalcache.git ~/.zpresto-contrib/evalcache
git clone https://github.com/prezto-contributions/prezto-kubectl.git ~/.zpresto-contrib/prezto-kubectl
Apply this patch to zpresto:
diff --git a/modules/python/init.zsh b/modules/python/init.zsh
index 91aa6d0..bb78748 100644
--- a/modules/python/init.zsh
+++ b/modules/python/init.zsh
@@ -20,12 +20,12 @@ if [[ -s "${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}" ]] \
[[ -s $local_pyenv ]] && path=($local_pyenv:h $path)
# pyenv 2+ requires shims to be added to path before being initialized.
- autoload -Uz is-at-least
- if is-at-least 2 ${"$(pyenv --version 2>&1)"[(w)2]}; then
+# autoload -Uz is-at-least
+# if is-at-least 2 ${"$(pyenv --version 2>&1)"[(w)2]}; then
eval "$(pyenv init --path zsh)"
- fi
+# fi
- eval "$(pyenv init - zsh)"
+ eval "$(pyenv init --no-rehash - zsh)"
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The
@@ -48,46 +48,46 @@ if (( ! $#commands[(i)python[23]#] && ! $+functions[pyenv] && ! $+commands[conda
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"
+# Load auto workon cwd hook.
+if zstyle -t ':prezto:module:python:virtualenv' auto-switch; then
+ 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
- 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
diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc
index cc6ebb4..21377e0 100644
--- a/runcoms/zpreztorc
+++ b/runcoms/zpreztorc
@@ -16,7 +16,7 @@
zstyle ':prezto:*:*' color 'yes'
# Add additional directories to load prezto modules from
-# zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
+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'
@@ -29,17 +29,50 @@ zstyle ':prezto:*:*' color 'yes'
# 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' \
+MY_MODULES=(
+ 'environment'
+ 'terminal'
+ 'editor'
+ 'history'
+ 'directory'
+ 'spectrum'
+ 'utility'
+
+
+# Slow - but still faster than "vanilla" pyenv
+ 'python'
+
+ 'completion'
+ 'syntax-highlighting'
+ 'history-substring-search'
'prompt'
+ 'git'
+
+# Maybe has useful aliases?
+# 'kubectl'
+
+# Speed up nvm, jenv etc. (in tandem with .zutils.zsh)
+ 'evalcache'
+
+# Not really useful
+# 'osx'
+# 'homebrew'
+# 'archive'
+
+# Needs some more config
+# 'tmux'
+
+# Needs a patched rsync (from homebrew?)
+# 'rsync'
+
+# Very slow
+# 'node'
+
+# Not installed
+# 'helm'
+
+)
+zstyle ':prezto:load' pmodule "${MY_MODULES[@]}";
#
# Autosuggestions
@@ -117,7 +150,7 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# 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'
+zstyle ':prezto:module:prompt' theme 'agnoster'
# Set the working directory prompt display length.
# By default, it is set to 'short'. Set it to 'long' (without '~' expansion)
@@ -133,10 +166,13 @@ zstyle ':prezto:module:prompt' theme 'sorin'
#
# Auto switch the Python virtualenv on directory change.
-# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'
+zstyle ':prezto:module:python:virtualenv' auto-switch 'no'
+
+# Automatically initialize virtualenvwrapper if pre-requisites are met.
+zstyle ':prezto:module:python:virtualenv' initialize 'yes'
# Automatically initialize virtualenvwrapper if pre-requisites are met.
-# zstyle ':prezto:module:python:virtualenv' initialize 'yes'
+zstyle ':prezto:module:python' skip-virtualenvwrapper-init 'on'
#
# Ruby
diff --git a/runcoms/zprofile b/runcoms/zprofile
index 1cf48bf..4dc4656 100644
--- a/runcoms/zprofile
+++ b/runcoms/zprofile
@@ -44,9 +44,14 @@ typeset -gU cdpath fpath mailpath path
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
+ "$HOME/.poetry-home/bin"
$path
)
+export POETRY_HOME="$HOME/.poetry-home"
+
+eval "$(pyenv init --path)"
+
#
# Less
#
@@ -54,7 +59,7 @@ path=(
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X to enable it.
-export LESS='-g -i -M -R -S -w -X -z-4'
+export LESS='-g -i -M -R -S -w -X -z-4 -F'
# Set the Less input preprocessor.
# Try both `lesspipe` and `lesspipe.sh` as either might exist on a system.