1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2025-07-01 09:19:25 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
e3696d2c28 Automatic virtualenv activaiion and deactivation, virtualenv non lazy
mode
2013-12-20 04:09:45 -05:00
30 changed files with 198 additions and 198 deletions

View File

@ -9,7 +9,8 @@ Installation
------------
Prezto will work with any recent release of Zsh, but the minimum recommended
version is 4.3.11.
version is 4.3.11. Unfortunately, [Cygwin][9] is not supported due to
non-standard core utilities.
1. Launch Zsh:
@ -36,7 +37,7 @@ version is 4.3.11.
### Troubleshooting
If you are not able to find certain commands after switching to *Prezto*,
modify the `PATH` variable in *~/.zprofile* then open a new Zsh terminal
modify the `PATH` variable in *~/.zshenv* then open a new Zsh terminal
window or tab.
Updating
@ -85,8 +86,7 @@ License
(The MIT License)
Copyright (c) 2009-2011 Robby Russell and contributors.
Copyright (c) 2011-2014 Sorin Ionescu and contributors.
Copyright (c) 2009-2014 Sorin Ionescu and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@ -114,4 +114,5 @@ SOFTWARE.
[6]: http://gitref.org
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[8]: http://grml.org/zsh/zsh-lovers.html
[9]: http://www.cygwin.com

View File

@ -25,7 +25,7 @@ unset min_zsh_version
function pmodload {
local -a pmodules
local pmodule
local pfunction_glob='^([_.]*|prompt_*_setup|README*)(-.N:t)'
local pfunction_glob='^([_.]*|prompt_*_setup|README*)(.N:t)'
# $argv is overridden in the anonymous function.
pmodules=("$argv[@]")

View File

@ -107,39 +107,30 @@ function editor-info {
}
zle -N editor-info
# Updates editor information when the keymap changes.
function zle-keymap-select {
# Ensures that $terminfo values are valid and updates editor information when
# the keymap changes.
function zle-keymap-select zle-line-init zle-line-finish {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[smkx] && $+terminfo[rmkx] )); then
case "$0" in
(zle-line-init)
# Enable terminal application mode.
echoti smkx
;;
(zle-line-finish)
# Disable terminal application mode.
echoti rmkx
;;
esac
fi
# Update editor information.
zle editor-info
}
zle -N zle-keymap-select
# Enables terminal application mode and updates editor information.
function zle-line-init {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[smkx] )); then
# Enable terminal application mode.
echoti smkx
fi
# Update editor information.
zle editor-info
}
zle -N zle-line-init
# Disables terminal application mode and updates editor information.
function zle-line-finish {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[rmkx] )); then
# Disable terminal application mode.
echoti rmkx
fi
# Update editor information.
zle editor-info
}
zle -N zle-line-finish
zle -N zle-line-init
# Toggles emacs overwrite mode and updates editor information.
function overwrite-mode {

View File

@ -32,8 +32,8 @@ alias g='git'
# Branch (b)
alias gb='git branch'
alias gbc='git checkout -b'
alias gbl='git branch -vv'
alias gbL='git branch -avv'
alias gbl='git branch -v'
alias gbL='git branch -av'
alias gbx='git branch -d'
alias gbX='git branch -D'
alias gbm='git branch -m'

View File

@ -12,7 +12,7 @@ fi
# Set the default paths to gpg-agent files.
_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env"
_gpg_agent_env="$TMPDIR/gpg-agent.env"
# Start gpg-agent if not started.
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then

View File

@ -9,20 +9,17 @@ Aliases
- `cdf` changes the current working director to the current _Finder_
directory.
- `pushdf` pushes the current working directory onto the directory queue and
changes the current working director to the current _Finder_ directory.
- `ql` quick looks at files.
- `rm-osx-cruft` deletes .DS\_Store, \_\_MACOSX cruft.
Functions
---------
- `mand` opens _man_ pages in [_Dash.app_][2].
- `manb` opens _man_ pages in [_Bwana.app_][2].
- `manp` opens _man_ pages in _Preview.app_.
- `pfd` prints the current _Finder_ directory.
- `pfs` prints the current _Finder_ selection.
- `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]).
- `ql` previews files in Quick Look.
- `osx-rm-dir-metadata` deletes .DS\_Store, \_\_MACOSX cruft.
- `osx-ls-download-history` displays the Mac OS X download history.
- `osx-rm-download-history` deletes the Mac OS X download history.
Authors
-------
@ -32,6 +29,7 @@ Authors
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.apple.com/macosx/
[2]: http://kapeli.com/dash
[2]: http://bruji.com/bwana/
[3]: http://www.iterm2.com/
[4]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,8 +1,8 @@
#compdef mand manp
#compdef manb manp
#autoload
#
# Completes mand and manp.
# Completes manb and manp.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -0,0 +1,24 @@
#
# Opens man pages in Bwana.app.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
function manb {
local page
if (( $# > 0 )); then
for page in "$@"; do
open "man:$page" 2>/dev/null
if (( $? != 0 )); then
print "$0: Bwana is not installed" >&2
break
fi
done
else
print 'What manual page do you want?' >&2
fi
}
manb "$@"

View File

@ -1,21 +0,0 @@
#
# Opens man pages in Dash.app.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
function mand {
if (( $# > 0 )); then
open "dash://manpages:$1" 2>/dev/null
if (( $? != 0 )); then
print "$0: Dash is not installed" >&2
break
fi
else
print 'What manual page do you want?' >&2
fi
}
mand "$@"

View File

@ -1,13 +0,0 @@
#
# Displays the Mac OS X download history.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local db
for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do
if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then
sqlite3 "$db" 'SELECT LSQuarantineDataURLString FROM LSQuarantineEvent'
fi
done

View File

@ -1,11 +0,0 @@
#
# Deletes .DS_Store and __MACOSX directories.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
find "${@:-$PWD}" \( \
-type f -name '.DS_Store' -o \
-type d -name '__MACOSX' \
\) -print0 | xargs -0 rm -rf

View File

@ -1,13 +0,0 @@
#
# Deletes the Mac OS X download history.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local db
for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do
if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then
sqlite3 "$db" 'DELETE FROM LSQuarantineEvent; VACUUM'
fi
done

View File

@ -7,6 +7,7 @@
osascript 2>/dev/null <<EOF
tell application "Finder"
return POSIX path of (target of first window as text)
return POSIX path of (target of window 1 as alias)
end tell
EOF

View File

@ -5,11 +5,14 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
osascript 2>&1 <<EOF
osascript 2>/dev/null <<EOF
set output to ""
tell application "Finder" to set the_selection to selection
if the_selection is not {}
repeat with an_item in the_selection
log POSIX path of (an_item as text)
end repeat
end if
set item_count to count the_selection
repeat with item_index from 1 to count the_selection
if item_index is less than item_count then set the_delimiter to "\n"
if item_index is item_count then set the_delimiter to ""
set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
end repeat
EOF

View File

@ -1,10 +0,0 @@
#
# Previews files in Quick Look.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if (( $# > 0 )); then
qlmanage -p "$@" &> /dev/null
fi

View File

@ -14,8 +14,26 @@ fi
# Aliases
#
# Changes directory to the current Finder directory.
# Change directory to the current Finder directory.
alias cdf='cd "$(pfd)"'
# Pushes directory to the current Finder directory.
# Push directory to the current Finder directory.
alias pushdf='pushd "$(pfd)"'
#
# Functions
#
# Open files in Quick Look.
function ql {
(( $# > 0 )) && qlmanage -p "$@" &> /dev/null
}
# Delete .DS_Store and __MACOSX directories.
function rm-osx-cruft {
find "${@:-$PWD}" \( \
-type f -name '.DS_Store' -o \
-type d -name '__MACOSX' \
\) -print0 | xargs -0 rm -rf
}

View File

@ -6,7 +6,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$"
local tmp="$TMPDIR/pacman-disowned-$UID-$$"
local db="$tmp/db"
local fs="$tmp/fs"

View File

@ -27,9 +27,6 @@ if (( $+commands[$_pacman_frontend] )); then
if [[ -s "${0:h}/${_pacman_frontend}.zsh" ]]; then
source "${0:h}/${_pacman_frontend}.zsh"
fi
else
_pacman_frontend='pacman'
_pacman_sudo='sudo '
fi
#
@ -37,49 +34,49 @@ fi
#
# Pacman.
alias pac="${_pacman_frontend}"
alias pac='pacman'
# Installs packages from repositories.
alias paci="${_pacman_sudo}${_pacman_frontend} --sync"
alias paci='sudo pacman --sync'
# Installs packages from files.
alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade"
alias pacI='sudo pacman --upgrade'
# Removes packages and unneeded dependencies.
alias pacx="${_pacman_sudo}${_pacman_frontend} --remove"
alias pacx='sudo pacman --remove'
# Removes packages, their configuration, and unneeded dependencies.
alias pacX="${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive"
alias pacX='sudo pacman --remove --nosave --recursive'
# Displays information about a package from the repositories.
alias pacq="${_pacman_frontend} --sync --info"
alias pacq='pacman --sync --info'
# Displays information about a package from the local database.
alias pacQ="${_pacman_frontend} --query --info"
alias pacQ='pacman --query --info'
# Searches for packages in the repositories.
alias pacs="${_pacman_frontend} --sync --search"
alias pacs='pacman --sync --search'
# Searches for packages in the local database.
alias pacS="${_pacman_frontend} --query --search"
alias pacS='pacman --query --search'
# Lists orphan packages.
alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired"
alias pacman-list-orphans='sudo pacman --query --deps --unrequired'
# Removes orphan packages.
alias pacman-remove-orphans="${_pacman_sudo}${_pacman_frontend} --remove --recursive \$(${_pacman_frontend} --quiet --query --deps --unrequired)"
alias pacman-remove-orphans='sudo pacman --remove --recursive $(pacman --quiet --query --deps --unrequired)'
# Synchronizes the local package and Arch Build System databases against the
# repositories.
if (( $+commands[abs] )); then
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && ${_pacman_sudo}abs"
alias pacu='sudo pacman --sync --refresh && sudo abs'
else
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh"
alias pacu='sudo pacman --sync --refresh'
fi
# Synchronizes the local package database against the repositories then
# upgrades outdated packages.
alias pacU="${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade"
alias pacU='sudo pacman --sync --refresh --sysupgrade'
unset _pacman_{frontend,sudo}
unset _pacman_frontend

View File

@ -11,9 +11,9 @@
# Disable color.
if ! zstyle -t ':prezto:module:pacman:yaourt' color; then
alias pacman='yaourt --nocolor'
alias pacman='pacman --nocolor'
fi
# Manages .pac* files.
alias pacc='yaourt -C'
alias pacc='pacman -C'

View File

@ -61,6 +61,29 @@ system site-packages directory.
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
### Settings
#### Lazy loading
By default, virtualenvwrapper is loaded in lazy mode. This behaviour can be disabled adding the following line to *~/.zpreztorc*:
zstyle ':prezto:module:python' lazy_venv 'no'
#### Automatic virtualenv initialization
To enable autoenv, add the following line to *~/.zpreztorc*:
zstyle ':prezto:module:python' autoenv 'yes'
If a virtualenv is active, and was not activated by autoenv, then autoenv does nothing.
Otherwise, autoenv activated or deactivates a virtual environment whenever a directory is changed; based on the following priority:
1. Name specified in a file named *.venv* in the cwd.
2. *.venv* file in git root. If folder is inside git repository.
3. Name of git root folder.
4. No virtualenv.
Aliases
-------

View File

@ -31,17 +31,66 @@ if (( ! $+commands[python] && ! $+commands[pyenv] )); then
return 1
fi
local venv_script=virtualenvwrapper
if zstyle -T ':prezto:module:python' lazy_venv; then
venv_script+=_lazy
fi
# Load virtualenvwrapper into the shell session.
if (( $+commands[virtualenvwrapper_lazy.sh] )); then
if (( $+commands[$venv_script.sh] )); then
# Set the directory where virtual environments are stored.
export WORKON_HOME="$HOME/.virtualenvs"
# Disable the virtualenv prompt.
VIRTUAL_ENV_DISABLE_PROMPT=1
source "$commands[virtualenvwrapper_lazy.sh]"
source "$commands[$venv_script.sh]"
fi
function autoenv {
#Don't run in shell scripts etc.
if [[ $ZSH_SUBSHELL -ne 0 ]]; then
return
fi
#Don't run if currently in virtual env not set by autoenv
if (( ($+VIRTUAL_ENV) && !($+AUTOENV) )); then
return
fi
local name=""
if [[ -f .venv ]]; then
#.venv file in current dir gets highest priority
name=$(<.venv)
elif is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
local gitroot="$(git rev-parse --show-toplevel 2> /dev/null)"
if [ -f "$gitroot/.venv" ]; then
#If there is a .venv file in gitroot
name=$(<$gitroot/.venv)
else
#Else use the name of the folder as venv name
name=$gitroot:t
fi
fi
local venv_name="$VIRTUAL_ENV:t"
if [[ $name != $venv_name ]]; then
if [[ -z $name ]]; then
deactivate && unset AUTOENV
return
fi
if [[ -d "$WORKON_HOME/$name" ]]; then
workon $name && export AUTOENV=1
return
fi
fi
}
if zstyle -T ':prezto:module:python' autoenv; then
add-zsh-hook chpwd autoenv
fi
#
# Aliases
#

View File

@ -8,7 +8,7 @@ Local Gem Installation
----------------------
When a Ruby version manager is not detected, local gems are installed in
*~/.gems*; otherwise, they are installed according to the manager.
*~/Library/Ruby/Gems/1.8* on Mac OS X.
RVM
---
@ -23,27 +23,12 @@ may conflict with shell scripts.
rbenv
-----
An alternative RVM is to use [rbenv][3], which allows for switching between
multiple, isolated Ruby installations in the home directory.
An alternative RVM is to use [rbenv][3], 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.
chruby
------
Yet another alternative is [chruby][6], 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 *zpreztorc*:
zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
Bundler
-------
@ -102,4 +87,4 @@ Authors
[3]: https://github.com/sstephenson/rbenv
[4]: http://gembundler.com
[5]: https://github.com/sorin-ionescu/prezto/issues
[6]: https://github.com/postmodern/chruby

View File

@ -18,8 +18,6 @@ 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.

View File

@ -23,13 +23,6 @@ elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
elif (( $+commands[rbenv] )); then
eval "$(rbenv init - --no-rehash zsh)"
# Load package manager installed chruby into the shell session.
elif (( $+commands[chruby-exec] )); then
source "${commands[chruby-exec]:h:h}/share/chruby/chruby.sh"
if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then
source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh"
fi
# Prepend local gems bin directories to PATH.
else
path=($HOME/.gem/ruby/*/bin(N) $path)
@ -50,14 +43,14 @@ alias rb='ruby'
# Bundler
if (( $+commands[bundle] )); then
alias rbb='bundle'
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 rbbe='rbb exec'
alias rbbi='rbb install'
alias rbbl='rbb list'
alias rbbo='rbb open'
alias rbbp='rbb package'
alias rbbu='rbb update'
alias rbbI='rbbi \
&& bundle package \
&& rbb package \
&& print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \

View File

@ -14,10 +14,10 @@ fi
_ssh_dir="$HOME/.ssh"
# Set the path to the environment file if not set by another module.
_ssh_agent_env="${_ssh_agent_env:-${TMPDIR:-/tmp}/ssh-agent.env}"
_ssh_agent_env="${_ssh_agent_env:-$TMPDIR/ssh-agent.env}"
# Set the path to the persistent authentication socket.
_ssh_agent_sock="${TMPDIR:-/tmp}/ssh-agent.sock"
_ssh_agent_sock="$TMPDIR/ssh-agent.sock"
# Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then

View File

@ -6,7 +6,7 @@
#
# Return if requirements are not found.
if [[ "$TERM" == (dumb|linux|*bsd*) ]]; then
if [[ "$TERM" == 'dumb' ]]; then
return 1
fi

View File

@ -50,7 +50,6 @@ Aliases
### Disabled File Globbing
- `bower`
- `fc`
- `find`
- `ftp`

View File

@ -34,7 +34,6 @@ 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'
@ -105,10 +104,6 @@ alias sl='ls' # I often screw this up.
# Mac OS X Everywhere
if [[ "$OSTYPE" == darwin* ]]; then
alias o='open'
elif [[ "$OSTYPE" == cygwin* ]]; then
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
else
alias o='xdg-open'

View File

@ -87,13 +87,6 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'sorin'
#
# Ruby
#
# Auto switch the Ruby version on directory change.
# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
#
# Screen
#

View File

@ -6,7 +6,7 @@
#
# Ensure that a non-login, non-interactive shell has a defined environment.
if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
if [[ "$SHLVL" -eq 1 && ! -o LOGIN ]]; then
source "${ZDOTDIR:-$HOME}/.zprofile"
fi