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

Compare commits

..

3 Commits

Author SHA1 Message Date
113f6763c2 Add a function to define a style if not defined 2012-10-04 20:57:45 -04:00
59f448d6ed Clean up the borra theme 2012-10-03 19:17:42 -04:00
3456166ab0 Add prompt borra 2012-10-03 02:00:57 +02:00
89 changed files with 1174 additions and 1370 deletions

View File

@ -9,7 +9,7 @@ Installation
------------ ------------
Prezto will work with any recent release of Zsh, but the minimum recommended Prezto will work with any recent release of Zsh, but the minimum recommended
version is 4.3.11. version is 4.3.10.
1. Launch Zsh: 1. Launch Zsh:
@ -33,19 +33,31 @@ version is 4.3.11.
5. Open a new Zsh terminal window or tab. 5. Open a new Zsh terminal window or tab.
### Mac OS X
If you have administrator privileges, you must fix an Apple-introduced problem
in Mac OS X 10.5 Leopard by executing the following command, or BASH and Zsh
will have the wrong `PATH` when executed non-interactively.
sudo chmod ugo-x /usr/libexec/path_helper
`path_helper` is intended to make it easier for installers to add new paths to
the environment without having to edit shell configuration files by adding
a file with a path to the */etc/paths.d* directory.
Unfortunately, `path_helper` always reads paths from */etc/paths* set by Apple
then paths from */etc/paths.d* set by third party installers, and lastly paths
from the `PATH` environment variable set by the parent process, which
ultimately is set by the user with `export PATH=...` Thus, it reorders path
priorities, and user */bin* directories meant to override system */bin*
directories end up at the tail of the array.
### Troubleshooting ### Troubleshooting
If you are not able to find certain commands after switching to *Prezto*, 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. window or tab.
Updating
--------
Pull the latest changes and update submodules.
git pull && git submodule update --init --recursive
Usage Usage
----- -----
@ -70,10 +82,9 @@ accompanying README files to learn of what is available.
Customization Customization
------------- -------------
The project is managed via [Git][3]. It is highly recommended that you fork this The project is managed via [Git][3]. It is highly recommend that you commit
project; so, that you can commit your changes and push them to [GitHub][4] to your changes and push them to [GitHub][4] to not lose them. If you do not know
not lose them. If you do not know how to use Git, follow this [tutorial][5] and how to use Git, follow this [tutorial][5] and bookmark this [reference][6].
bookmark this [reference][6].
Resources Resources
--------- ---------
@ -85,8 +96,7 @@ License
(The MIT License) (The MIT License)
Copyright (c) 2009-2011 Robby Russell and contributors. Copyright (c) 2009-2012 Robby Russell, Sorin Ionescu, and contributors.
Copyright (c) 2011-2014 Sorin Ionescu and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of 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 this software and associated documentation files (the "Software"), to deal in

View File

@ -10,7 +10,7 @@
# #
# Check for the minimum supported version. # Check for the minimum supported version.
min_zsh_version='4.3.11' min_zsh_version='4.3.10'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2 print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
return 1 return 1
@ -25,7 +25,7 @@ unset min_zsh_version
function pmodload { function pmodload {
local -a pmodules local -a pmodules
local pmodule 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. # $argv is overridden in the anonymous function.
pmodules=("$argv[@]") pmodules=("$argv[@]")

View File

@ -8,7 +8,7 @@ Load modules in *zpreztorc*. The order matters.
Archive Archive
------- -------
Provides functions to list and extract archives. Provides functions to extract and list popular archive formats.
Command-Not-Found Command-Not-Found
----------------- -----------------
@ -31,41 +31,20 @@ Dpkg
Defines dpkg aliases and functions. Defines dpkg aliases and functions.
Editor
------
Sets key bindings.
Emacs
-----
Enables Emacs dependency management.
Environment Environment
----------- -----------
Sets general shell options and defines environment variables. Sets general shell options and defines environment variables.
Fasd
----
Maintains a frequently used file and directory list for fast access.
Git
---
Enhances the Git distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
GNU Utility GNU Utility
----------- -----------
Provides for the interactive use of GNU utilities on non-GNU systems. Provides for the interactive use of GNU utilities on non-GNU systems.
GPG GPG-Agent
--- ---------
Provides for an easier use of GPG by setting up gpg-agent. Provides for an easier use of gpg-agent.
Haskell Haskell
------- -------
@ -77,20 +56,15 @@ Helper
Provides helper functions for developing modules. Provides helper functions for developing modules.
History
-------
Sets history options and defines history aliases.
History Substring Search History Substring Search
------------------------ ------------------------
Integrates zsh-history-substring-search into Prezto. Integrates zsh-history-substring-search into Prezto.
Homebrew History
-------- -------
Defines Homebrew aliases. Sets history options and defines history aliases.
Macports Macports
-------- --------
@ -102,11 +76,6 @@ Node.js
Provides utility functions for Node.js and loads npm completion. Provides utility functions for Node.js and loads npm completion.
Ocaml
-----
Initializes Ocaml package management.
OSX OSX
--- ---
@ -158,10 +127,10 @@ Spectrum
Provides for easier use of 256 colors and effects. Provides for easier use of 256 colors and effects.
SSH SSH-Agent
--- ---------
Provides for an easier use of SSH by setting up ssh-agent. Provides for an easier use of ssh-agent.
Syntax Highlighting Syntax Highlighting
------------------- -------------------
@ -193,3 +162,9 @@ Yum
Defines yum aliases. Defines yum aliases.
Z
-
Integrates z into Prezto, which maintains a frequently used directory list for
fast directory changes.

View File

@ -1,13 +1,13 @@
Archive Archive
======= =======
Provides functions to list and extract archives. Provides functions to extract and list popular archive formats.
Functions Functions
--------- ---------
- `lsarchive` lists the contents of one or more archives. - `extract` extracts the contents of one or more archives.
- `unarchive` extracts the contents of one or more archives. - `ls-archive` lists the contents of one or more archives.
Supported Formats Supported Formats
----------------- -----------------
@ -26,7 +26,7 @@ installed:
- *.lzma* requires `unlzma`. - *.lzma* requires `unlzma`.
- *.Z* requires `uncompress`. - *.Z* requires `uncompress`.
- *.zip* requires `unzip`. - *.zip* requires `unzip`.
- *.rar* requires `unrar` or `rar`. - *.rar* requires `unrar`.
- *.7z* requires `7za`. - *.7z* requires `7za`.
- *.deb* requires `ar`, `tar`. - *.deb* requires `ar`, `tar`.

View File

@ -1,8 +1,8 @@
#compdef unarchive #compdef extract
#autoload #autoload
# #
# Completes unarchive. # Completes extract.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -1,8 +1,8 @@
#compdef lsarchive #compdef ls-archive
#autoload #autoload
# #
# Completes lsarchive. # Completes ls-archive.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -1,5 +1,5 @@
# #
# Extracts the contents of archives. # Extracts the contents of popular archive formats.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
@ -53,9 +53,7 @@ while (( $# > 0 )); do
(*.lzma) unlzma "$1" ;; (*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;; (*.Z) uncompress "$1" ;;
(*.zip) unzip "$1" -d $extract_dir ;; (*.zip) unzip "$1" -d $extract_dir ;;
(*.rar) unrar &> /dev/null \ (*.rar) unrar e -ad "$1" ;;
&& unrar e -ad "$1" \
|| rar e -ad "$1" ;;
(*.7z) 7za x "$1" ;; (*.7z) 7za x "$1" ;;
(*.deb) (*.deb)
mkdir -p "$extract_dir/control" mkdir -p "$extract_dir/control"

View File

@ -1,5 +1,5 @@
# #
# Lists the contents of archives. # Lists the contents of popular archive formats.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
@ -41,9 +41,7 @@ while (( $# > 0 )); do
|| lzcat "$1" | tar x${verbose:+v}f - ;; || lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar) tar t${verbose:+v}f "$1" ;; (*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip) unzip -l${verbose:+v} "$1" ;; (*.zip) unzip -l${verbose:+v} "$1" ;;
(*.rar) unrar &> /dev/null \ (*.rar) unrar ${${verbose:+v}:-l} "$1" ;;
&& unrar ${${verbose:+v}:-l} "$1" \
|| rar ${${verbose:+v}:-l} "$1" ;;
(*.7z) 7za l "$1" ;; (*.7z) 7za l "$1" ;;
(*) (*)
print "$0: cannot list: $1" >&2 print "$0: cannot list: $1" >&2

View File

@ -1,8 +1,7 @@
Command-Not-Found Command-Not-Found
================= =================
Displays installation information for not found commands by loading the Loads the [command-not-found][1] tool on Debian-based distributions.
[command-not-found][1] tool on Debian-based and Arch Linux-based distributions.
Authors Authors
------- -------

View File

@ -5,14 +5,10 @@
# Joseph Jon Booker <joe@neoturbine.net> # Joseph Jon Booker <joe@neoturbine.net>
# #
# Load command-not-found on Debian-based distributions.
if [[ -s '/etc/zsh_command_not_found' ]]; then
source '/etc/zsh_command_not_found'
# Load command-not-found on Arch Linux-based distributions.
elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then
source '/usr/share/doc/pkgfile/command-not-found.zsh'
# Return if requirements are not found. # Return if requirements are not found.
else if [[ ! -s '/etc/zsh_command_not_found' ]]; then
return 1 return 1
fi fi
source '/etc/zsh_command_not_found'

View File

@ -30,6 +30,9 @@ setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a traili
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
# Treat these characters as part of a word.
WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
# #
# Styles # Styles
# #
@ -93,7 +96,7 @@ zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-va
# Populate hostname completion. # Populate hostname completion.
zstyle -e ':completion:*:hosts' hosts 'reply=( zstyle -e ':completion:*:hosts' hosts 'reply=(
${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } ${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//,/ }
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
)' )'
@ -141,8 +144,8 @@ fi
# SSH/SCP/RSYNC # SSH/SCP/RSYNC
zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
zstyle ':completion:*:ssh:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' zstyle ':completion:*:ssh:*' tag-order users 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr zstyle ':completion:*:ssh:*' group-order hosts-domain hosts-host users hosts-ipaddr
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*' zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*' zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'

View File

@ -7,16 +7,16 @@ Aliases
------- -------
- `debc` cleans the cache. - `debc` cleans the cache.
- `debf` displays a file's package. - `debf` displays a file's packake.
- `debi` installs packages from repositories. - `debi` installs packages from repositories.
- `debI` installs packages from files. - `debI` installs packages from files.
- `debq` displays package information. - `debq` displays package information.
- `debu` updates the package lists. - `debu` updates the packages lists.
- `debU` upgrades outdated packages. - `debU` upgrades outdated packages.
- `debx` removes packages. - `debx` removes packages.
- `debX` removes packages, their configuration, and unneeded dependencies. - `debX` removes packages, their configuration, and unneeded dependencies.
- `debs` searches for packages. - `debs` searches for packages.
- `deb-build` creates a basic deb package. - `deb-build` creates a basic .deb package.
- `deb-kclean` removes all kernel images and headers, except for the ones in - `deb-kclean` removes all kernel images and headers, except for the ones in
use. use.

View File

@ -19,7 +19,7 @@ fi
# Cleans the cache. # Cleans the cache.
alias debc='sudo apt-get clean && sudo apt-get autoclean' alias debc='sudo apt-get clean && sudo apt-get autoclean'
# Displays a file's package. # Displays a file's packake.
alias debf='apt-file search --regexp' alias debf='apt-file search --regexp'
# Installs packages from repositories. # Installs packages from repositories.
@ -31,7 +31,7 @@ alias debI='sudo dpkg -i'
# Displays package information. # Displays package information.
alias debq='apt-cache show' alias debq='apt-cache show'
# Updates the package lists. # Updates the packages lists.
alias debu='sudo apt-get update' alias debu='sudo apt-get update'
# Upgrades outdated packages. # Upgrades outdated packages.
@ -50,7 +50,7 @@ else
alias debs='apt-cache search' alias debs='apt-cache search'
fi fi
# Creates a basic deb package. # Creates a basic .deb package.
alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc' alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc'
# Removes all kernel images and headers, except for the ones in use. # Removes all kernel images and headers, except for the ones in use.

View File

@ -1,63 +0,0 @@
Editor
======
Sets key bindings.
Settings
--------
### Key bindings
To enable key bindings, add the following to *zpreztorc*, and replace 'bindings'
with 'emacs' or 'vi'.
zstyle ':prezto:module:editor' key-bindings 'bindings'
### Dot Expansion
To enable the auto conversion of .... to ../.., add the following to
*zpreztorc*.
zstyle ':prezto:module:editor' dot-expansion 'yes'
Theming
-------
To indicate when the editor is in the primary keymap (emacs or viins), add
the following to your `theme_prompt_setup` function.
zstyle ':prezto:module:editor:info:keymap:primary' format '>>>'
To indicate when the editor is in the primary keymap (emacs or viins) insert
mode, add the following to your `theme_prompt_setup` function.
zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I'
To indicate when the editor is in the primary keymap (emacs or viins) overwrite
mode, add the following to your `theme_prompt_setup` function.
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O'
To indicate when the editor is in the alternate keymap (vicmd), add the
following to your `theme_prompt_setup` function.
zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<'
To indicate when the editor is completing, add the following to your
`theme_prompt_setup` function.
zstyle ':prezto:module:editor:info:completing' format '...'
Then add `$editor_info[context]`, where context is *keymap*, *insert*, or
*overwrite*, to `$PROMPT` or `$RPROMPT` and call `editor-info` in the
`prompt_name_preexec` hook function.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/oh-my-zsh/issues

View File

@ -4,6 +4,42 @@
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Usage:
# To enable key bindings, add the following to zpreztorc, and replace 'map'
# with 'emacs' or 'vi.
#
# zstyle ':prezto:module:editor' keymap 'map'
#
# To enable the auto conversion of .... to ../.., add the following to
# zpreztorc.
#
# zstyle ':prezto:module:editor' dot-expansion 'yes'
#
# To indicate when the editor is in the primary keymap (emacs or viins), add
# the following to your theme prompt setup function.
#
# zstyle ':prezto:module:editor:info:keymap:primary' format '>>>'
#
# To indicate when the editor is in the primary keymap (emacs or viins) insert
# mode, add the following to your theme prompt setup function.
#
# zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I'
#
# To indicate when the editor is in the primary keymap (emacs or viins)
# overwrite mode, add the following to your theme prompt setup function.
#
# zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O'
#
# To indicate when the editor is in the alternate keymap (vicmd), add the
# following to your theme prompt setup function.
#
# zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<'
#
# To indicate when the editor is completing, add the following to your theme
# prompt setup function.
#
# zstyle ':prezto:module:editor:info:completing' format '...'
#
# Return if requirements are not found. # Return if requirements are not found.
if [[ "$TERM" == 'dumb' ]]; then if [[ "$TERM" == 'dumb' ]]; then
@ -21,9 +57,6 @@ setopt BEEP
# Variables # Variables
# #
# Treat these characters as part of a word.
WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
# Use human-friendly identifiers. # Use human-friendly identifiers.
zmodload zsh/terminfo zmodload zsh/terminfo
typeset -gA key_info typeset -gA key_info
@ -57,11 +90,12 @@ key_info=(
'BackTab' "$terminfo[kcbt]" 'BackTab' "$terminfo[kcbt]"
) )
# Set empty $key_info values to an invalid UTF-8 sequence to induce silent # Do not bind any keys if there are empty values in $key_info.
# bindkey failure.
for key in "${(k)key_info[@]}"; do for key in "${(k)key_info[@]}"; do
if [[ -z "$key_info[$key]" ]]; then if [[ -z "$key_info[$key]" ]]; then
key_info["$key"]='<27>' print "prezto: one or more keys are non-bindable" >&2
unset key{,_info}
return 1
fi fi
done done
@ -108,38 +142,12 @@ function editor-info {
zle -N editor-info zle -N editor-info
# Updates editor information when the keymap changes. # Updates editor information when the keymap changes.
function zle-keymap-select { function zle-keymap-select zle-line-init zle-line-finish {
zle editor-info zle editor-info
} }
zle -N zle-keymap-select 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-finish
zle -N zle-line-init
# Toggles emacs overwrite mode and updates editor information. # Toggles emacs overwrite mode and updates editor information.
function overwrite-mode { function overwrite-mode {
@ -245,6 +253,10 @@ bindkey -M vicmd "v" edit-command-line
bindkey -M vicmd "u" undo bindkey -M vicmd "u" undo
bindkey -M vicmd "$key_info[Control]R" redo bindkey -M vicmd "$key_info[Control]R" redo
# Switch to command mode.
bindkey -M viins "jk" vi-cmd-mode
bindkey -M viins "kj" vi-cmd-mode
if (( $+widgets[history-incremental-pattern-search-backward] )); then if (( $+widgets[history-incremental-pattern-search-backward] )); then
bindkey -M vicmd "?" history-incremental-pattern-search-backward bindkey -M vicmd "?" history-incremental-pattern-search-backward
bindkey -M vicmd "/" history-incremental-pattern-search-forward bindkey -M vicmd "/" history-incremental-pattern-search-forward
@ -315,14 +327,14 @@ fi
# #
# Set the key layout. # Set the key layout.
zstyle -s ':prezto:module:editor' key-bindings 'key_bindings' zstyle -s ':prezto:module:editor' keymap 'keymap'
if [[ "$key_bindings" == (emacs|) ]]; then if [[ "$keymap" == (emacs|) ]]; then
bindkey -e bindkey -e
elif [[ "$key_bindings" == vi ]]; then elif [[ "$keymap" == vi ]]; then
bindkey -v bindkey -v
else else
print "prezto: editor: invalid key bindings: $key_bindings" >&2 print "prezto: invalid keymap: $keymap" >&2
fi fi
unset key{,map,bindings} unset key{map,}

View File

@ -1,33 +0,0 @@
Emacs
=====
Enables Emacs dependency management.
Dependency management
---------------------
[Carton][1] installs and manages Emacs packages for Emacs package development
and Emacs configuration.
This module prepends the Carton directory to the path variable to enable the
execution of `carton`.
Aliases
-------
### Carton
- `cai` installs dependencies.
- `cau` updates dependencies.
- `caI` initializes the current directory for dependency management.
- `cae` executes a command which correct dependencies.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][2].*
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://github.com/rejeep/carton
[2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,25 +0,0 @@
#
# Configures Emacs dependency management.
#
# Authors: Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if [[ ! -d "$HOME/.cask" ]]; then
return 1
fi
# Prepend Cask bin directory.
path=($HOME/.cask/bin $path)
# Load Carton completion
source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null
#
# Aliases
#
alias cai='cask install'
alias cau='cask update'
alias caI='cask init'
alias cae='cask exec'

View File

@ -17,8 +17,6 @@ zle -N self-insert url-quote-magic
# #
setopt BRACE_CCL # Allow brace character class list expansion. setopt BRACE_CCL # Allow brace character class list expansion.
setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents)
# with the base character.
setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed. unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed.

View File

@ -1,8 +1,7 @@
Git Git
=== ===
Enhances the [Git][1] distributed version control system by providing aliases, Enhances the [Git][1] distributed version control system by providing aliases, functions and by exposing repository status information to prompts.
functions and by exposing repository status information to prompts.
Git **1.7.2** is the [minimum required version][7]. Git **1.7.2** is the [minimum required version][7].
@ -13,7 +12,7 @@ Settings
The format of the [git-log][8] output is configurable via the following style, The format of the [git-log][8] output is configurable via the following style,
where context is *brief*, *oneline*, and *medium*, which will be passed to the where context is *brief*, *oneline*, and *medium*, which will be passed to the
`--pretty=format:` switch. `--prety=format:` switch.
zstyle ':prezto:module:git:log:context' format '' zstyle ':prezto:module:git:log:context' format ''
@ -39,8 +38,8 @@ Aliases
- `gbc` creates a new branch. - `gbc` creates a new branch.
- `gbl` lists branches and their commits. - `gbl` lists branches and their commits.
- `gbL` lists local and remote branches and their commits. - `gbL` lists local and remote branches and their commits.
- `gbs` lists branches and their commits with ancestry graphs. - `gbs` lists branches and their commits with ancestery graphs.
- `gbS` lists local and remote branches and their commits with ancestry - `gbS` lists local and remote branches and their commits with ancestery
graphs. graphs.
- `gbx` deletes a branch. - `gbx` deletes a branch.
- `gbX` deletes a branch irrespective of its merged status. - `gbX` deletes a branch irrespective of its merged status.
@ -54,27 +53,16 @@ Aliases
- `gca` stages all modified and deleted files. - `gca` stages all modified and deleted files.
- `gcm` records changes to the repository with the given message. - `gcm` records changes to the repository with the given message.
- `gco` checks out a branch or paths to work tree. - `gco` checks out a branch or paths to work tree.
- `gcO` checks out hunks from the index or the tree interactively. - `gcO` checks out paths to work tree using the *HEAD* commit.
- `gcf` amends the tip of the current branch using the same log message as - `gcf` amends the tip of the current branch using the same log message as
*HEAD*. *HEAD*.
- `gcF` amends the tip of the current branch.
- `gcp` applies changes introduced by existing commits. - `gcp` applies changes introduced by existing commits.
- `gcP` applies changes introduced by existing commits without committing. - `gcP` applies changes introduced by existing commits without committing.
- `gcr` reverts existing commits by reverting patches and recording new - `gcr` reverts existing commits by reverting patches and recording new
commits. commits.
- `gcR` removes the *HEAD* commit. - `gcR` removes the *HEAD* commit.
- `gcs` displays various types of objects. - `gcs` displays various types of objects.
- `gcl` lists lost commits. - `gcl` displays lost commits.
### Conflict
- `gCl` lists unmerged files.
- `gCa` adds unmerged file contents to the index.
- `gCe` executes merge-tool on all unmerged file.
- `gCo` checks out our changes for unmerged paths.
- `gCO` checks out our changes for all unmerged paths.
- `gCt` checks out their changes for unmerged paths.
- `gCT` checks out their changes for all unmerged paths.
### Data ### Data
@ -97,8 +85,8 @@ Aliases
- `gg` displays lines matching a pattern. - `gg` displays lines matching a pattern.
- `ggi` displays lines matching a pattern ignoring case. - `ggi` displays lines matching a pattern ignoring case.
- `ggl` lists files matching a pattern. - `ggl` displays files matching a pattern.
- `ggL` lists files that are not matching a pattern. - `ggL` displays files are not matching a pattern.
- `ggv` displays lines not matching a pattern. - `ggv` displays lines not matching a pattern.
- `ggw` displays lines matching a pattern at word boundary. - `ggw` displays lines matching a pattern at word boundary.
@ -109,11 +97,21 @@ Aliases
- `giu` adds file contents to the index (updates only known files). - `giu` adds file contents to the index (updates only known files).
- `gid` displays changes between the index and a named commit (diff). - `gid` displays changes between the index and a named commit (diff).
- `giD` displays changes between the index and a named commit (word diff). - `giD` displays changes between the index and a named commit (word diff).
- `gir` resets the current HEAD to the specified state. - `gir` resets current HEAD to the specified state.
- `giR` resets the current index interactively. - `giR` resets current index to the specified state.
- `gix` removes files/directories from the index (recursively). - `gix` removes files/directories from the index (recursively).
- `giX` removes files/directories from the index (recursively and forced). - `giX` removes files/directories from the index (recursively and forced).
### Conflict
- `gCl` lists unmerged files.
- `gCa` adds unmerged file contents to the index.
- `gCe` executes merge-tool on all unmerged file.
- `gCo` checks out our changes for unmerged paths.
- `gCO` checks out our changes for all unmerged paths.
- `gCt` checks out their changes for unmerged paths.
- `gCT` checks out their changes for all unmerged paths.
### Log ### Log
- `gl` displays the log. - `gl` displays the log.
@ -155,12 +153,12 @@ Aliases
### Remote ### Remote
- `gR` manages tracked repositories. - `gR` manages tracked repositories.
- `gRl` lists remote names and their URLs. - `gRl` displays remote names and URLs.
- `gRa` adds a new remote. - `gRa` adds a new remote.
- `gRx` removes a remote. - `gRx` removes a remote.
- `gRm` renames a remote. - `gRm` renames a remote.
- `gRu` fetches remotes updates. - `gRu` fetches remotes updates.
- `gRp` prunes all stale remote tracking branches. - `gRc` deletes all stale remote tracking branches.
- `gRs` displays information about a given remote. - `gRs` displays information about a given remote.
- `gRb` opens a remote on [GitHub][3] in the default browser. - `gRb` opens a remote on [GitHub][3] in the default browser.
@ -170,9 +168,10 @@ Aliases
- `gsa` applies the changes recorded in a stash to the working directory. - `gsa` applies the changes recorded in a stash to the working directory.
- `gsx` drops a stashed state. - `gsx` drops a stashed state.
- `gsX` drops all the stashed states. - `gsX` drops all the stashed states.
- `gsd` lists dropped stashed states.
- `gsl` lists stashed states. - `gsl` lists stashed states.
- `gsL` lists dropped stashed states. - `gsL` displays the changes recorded in the stash as a diff between the
- `gsd` displays changes between the stash and its original parent. stashed state and its original parent.
- `gsp` removes and applies a single stashed state from the stash list. - `gsp` removes and applies a single stashed state from the stash list.
- `gsr` recovers a given stashed state. - `gsr` recovers a given stashed state.
- `gss` stashes the changes of the dirty working directory, including untracked. - `gss` stashes the changes of the dirty working directory, including untracked.
@ -247,47 +246,25 @@ setting a style is as follows.
zstyle ':prezto:module:git:info:context:subcontext' format 'string' zstyle ':prezto:module:git:info:context:subcontext' format 'string'
### Main Contexts
| Name | Format Code | Description | Name | Format Code | Description
| --------- | :---------: | --------------------------------------------------- | --------- | :---------: | ---------------------------------------------------
| action | %s | Special action name | action | %s | Special action name
| added | %a | Added files count
| ahead | %A | Commits ahead of remote count | ahead | %A | Commits ahead of remote count
| behind | %B | Commits behind of remote count | behind | %B | Commits behind of remote count
| branch | %b | Branch name | branch | %b | Branch name
| commit | %c | Commit hash | commit | %c | Commit hash
| position | %p | Commits from the nearest tag count
| remote | %R | Remote name
| stashed | %S | Stashed states count
### Concise Contexts
| Name | Format Code | Description
| --------- | :---------: | ---------------------------------------------------
| clean | %C | Clean state
| dirty | %D | Dirty files count
| indexed | %i | Indexed files count
| unindexed | %I | Unindexed files count
| untracked | %u | Untracked files count
The following contexts must be enabled with the following zstyle:
zstyle ':prezto:module:git:info' verbose 'yes'
### Verbose Contexts
| Name | Format Code | Description
| --------- | :---------: | ---------------------------------------------------
| added | %a | Added files count
| clean | %C | Clean state | clean | %C | Clean state
| deleted | %d | Deleted files count | deleted | %d | Deleted files count
| dirty | %D | Dirty files count | dirty | %D | Dirty files count
| modified | %m | Modified files count | modified | %m | Modified files count
| position | %p | Commits from the nearest tag count
| remote | %R | Remote name
| renamed | %r | Renamed files count | renamed | %r | Renamed files count
| stashed | %S | Stashed states count
| unmerged | %U | Unmerged files count | unmerged | %U | Unmerged files count
| untracked | %u | Untracked files count | untracked | %u | Untracked files count
[**Main Contexts**]
### Special Action Contexts
| Name | Format | Description | Name | Format | Description
| -------------------- | :---------: | ----------------------------------------- | -------------------- | :---------: | -----------------------------------------
@ -299,6 +276,7 @@ The following contexts must be enabled with the following zstyle:
| rebase | value | Rebasing | rebase | value | Rebasing
| rebase-interactive | value | Rebasing interactively | rebase-interactive | value | Rebasing interactively
| rebase-merge | value | Rebasing merge | rebase-merge | value | Rebasing merge
[**Special Action Contexts**]
First, format the repository state attributes. For example, to format the branch First, format the repository state attributes. For example, to format the branch
and remote names, define the following styles. and remote names, define the following styles.
@ -312,7 +290,7 @@ Second, format how the above attributes are displayed in prompts.
'prompt' ' git(%b)' \ 'prompt' ' git(%b)' \
'rprompt' '[%R]' 'rprompt' '[%R]'
Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[prompt]` to
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook `$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook
function. function.

View File

@ -42,13 +42,12 @@ alias gbs='git show-branch'
alias gbS='git show-branch -a' alias gbS='git show-branch -a'
# Commit (c) # Commit (c)
alias gc='git commit --verbose' alias gc='git commit'
alias gca='git commit --verbose --all' alias gca='git commit --all'
alias gcm='git commit --message' alias gcm='git commit --message'
alias gco='git checkout' alias gco='git checkout'
alias gcO='git checkout --patch' alias gcO='git checkout HEAD --'
alias gcf='git commit --amend --reuse-message HEAD' alias gcf='git commit --amend --reuse-message HEAD'
alias gcF='git commit --verbose --amend'
alias gcp='git cherry-pick --ff' alias gcp='git cherry-pick --ff'
alias gcP='git cherry-pick --no-commit' alias gcP='git cherry-pick --no-commit'
alias gcr='git revert' alias gcr='git revert'
@ -56,15 +55,6 @@ alias gcR='git reset "HEAD^"'
alias gcs='git show' alias gcs='git show'
alias gcl='git-commit-lost' alias gcl='git-commit-lost'
# Conflict (C)
alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"'
alias gCa='git add $(gCl)'
alias gCe='git mergetool $(gCl)'
alias gCo='git checkout --ours --'
alias gCO='gCo $(gCl)'
alias gCt='git checkout --theirs --'
alias gCT='gCt $(gCl)'
# Data (d) # Data (d)
alias gd='git ls-files' alias gd='git ls-files'
alias gdc='git ls-files --cached' alias gdc='git ls-files --cached'
@ -95,10 +85,19 @@ alias giu='git add --update'
alias gid='git diff --no-ext-diff --cached' alias gid='git diff --no-ext-diff --cached'
alias giD='git diff --no-ext-diff --cached --word-diff' alias giD='git diff --no-ext-diff --cached --word-diff'
alias gir='git reset' alias gir='git reset'
alias giR='git reset --patch' alias giR='git reset --keep'
alias gix='git rm -r --cached' alias gix='git rm -r --cached'
alias giX='git rm -rf --cached' alias giX='git rm -rf --cached'
# Conflict (C)
alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"'
alias gCa='git add $(gCl)'
alias gCe='git mergetool $(gCl)'
alias gCo='git checkout --ours --'
alias gCO='gCo $(gCl)'
alias gCt='git checkout --theirs --'
alias gCT='gCt $(gCl)'
# Log (l) # Log (l)
alias gl='git log --topo-order --pretty=format:${_git_log_medium_format}' alias gl='git log --topo-order --pretty=format:${_git_log_medium_format}'
alias gls='git log --topo-order --stat --pretty=format:${_git_log_medium_format}' alias gls='git log --topo-order --stat --pretty=format:${_git_log_medium_format}'
@ -138,7 +137,7 @@ alias gRa='git remote add'
alias gRx='git remote rm' alias gRx='git remote rm'
alias gRm='git remote rename' alias gRm='git remote rename'
alias gRu='git remote update' alias gRu='git remote update'
alias gRp='git remote prune' alias gRc='git remote prune'
alias gRs='git remote show' alias gRs='git remote show'
alias gRb='git-hub-browse' alias gRb='git-hub-browse'
@ -147,9 +146,9 @@ alias gs='git stash'
alias gsa='git stash apply' alias gsa='git stash apply'
alias gsx='git stash drop' alias gsx='git stash drop'
alias gsX='git-stash-clear-interactive' alias gsX='git-stash-clear-interactive'
alias gsd='git-stash-dropped'
alias gsl='git stash list' alias gsl='git stash list'
alias gsL='git-stash-dropped' alias gsL='git stash show --patch --stat'
alias gsd='git stash show --patch --stat'
alias gsp='git stash pop' alias gsp='git stash pop'
alias gsr='git-stash-recover' alias gsr='git-stash-recover'
alias gss='git stash save --include-untracked' alias gss='git stash save --include-untracked'

View File

@ -89,6 +89,31 @@ function _git-action {
return 1 return 1
} }
# Turns off git-info for the current repository.
function _git-info-abort {
if ! is-true "$_git_info_executing"; then
return 1
fi
cat >&2 <<EOF
Gathering status for certain repositories is time intensive.
By pressing CTRL + C, you have turned off prompt Git status
for this repository.
To revert, execute:
git-info on
EOF
unset _git_info_executing
git config --bool prompt.showinfo false
git-info
return 0
}
add-zsh-trap INT _git-info-abort
# Gets the Git status information. # Gets the Git status information.
function git-info { function git-info {
# Extended globbing is needed to parse repository status. # Extended globbing is needed to parse repository status.
@ -101,13 +126,13 @@ function git-info {
local added=0 local added=0
local added_format local added_format
local added_formatted local added_formatted
local ahead=0 local ahead
local ahead_and_behind local ahead_and_behind
local ahead_and_behind_cmd local ahead_and_behind_cmd
local ahead_format local ahead_format
local ahead_formatted local ahead_formatted
local ahead_or_behind local ahead_or_behind
local behind=0 local behind
local behind_format local behind_format
local behind_formatted local behind_formatted
local branch local branch
@ -126,11 +151,9 @@ function git-info {
local dirty_format local dirty_format
local dirty_formatted local dirty_formatted
local ignore_submodules local ignore_submodules
local indexed=0
local indexed_format
local indexed_formatted
local -A info_formats local -A info_formats
local info_format local info_format
local line_number=0
local modified=0 local modified=0
local modified_format local modified_format
local modified_formatted local modified_formatted
@ -148,10 +171,6 @@ function git-info {
local stashed_format local stashed_format
local stashed_formatted local stashed_formatted
local status_cmd local status_cmd
local status_mode
local unindexed=0
local unindexed_format
local unindexed_formatted
local unmerged=0 local unmerged=0
local unmerged_format local unmerged_format
local unmerged_formatted local unmerged_formatted
@ -184,206 +203,135 @@ function git-info {
return 1 return 1
fi fi
# Used to abort and turn git-info off on SIGINT.
_git_info_executing=true
# Use porcelain status for easy parsing.
status_cmd='git status --porcelain'
# Gets the remote name.
remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
# Gets the commit difference counts between local and remote.
ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}'
# Ignore submodule status. # Ignore submodule status.
zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules' zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules'
if [[ -n "$ignore_submodules" ]]; then
status_cmd+=" --ignore-submodules=${ignore_submodules}"
fi
# Format commit. # Format commit.
zstyle -s ':prezto:module:git:info:commit' format 'commit_format' commit="$(git rev-parse HEAD 2> /dev/null)"
if [[ -n "$commit_format" ]]; then if [[ -n "$commit" ]]; then
commit="$(git rev-parse HEAD 2> /dev/null)" zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
if [[ -n "$commit" ]]; then zformat -f commit_formatted "$commit_format" "c:$commit"
zformat -f commit_formatted "$commit_format" "c:$commit"
fi
fi fi
# Format stashed. # Format stashed.
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' if [[ -f "$(git-dir)/refs/stash" ]]; then
if [[ -n "$stashed_format" && -f "$(git-dir)/refs/stash" ]]; then
stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')" stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')"
if [[ -n "$stashed" ]]; then zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
zformat -f stashed_formatted "$stashed_format" "S:$stashed" zformat -f stashed_formatted "$stashed_format" "S:$stashed"
fi
fi fi
# Format action. # Format action.
zstyle -s ':prezto:module:git:info:action' format 'action_format' action="$(_git-action)"
if [[ -n "$action_format" ]]; then if [[ -n "$action" ]]; then
action="$(_git-action)" zstyle -s ':prezto:module:git:info:action' format 'action_format'
if [[ -n "$action" ]]; then zformat -f action_formatted "$action_format" "s:$action"
zformat -f action_formatted "$action_format" "s:$action"
fi
fi fi
# Get the branch. # Get current status.
branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" while IFS=$'\n' read line; do
# Count added, deleted, modified, renamed, unmerged, untracked, dirty.
# T (type change) is undocumented, see http://git.io/FnpMGw.
# For a table of scenarii, see http://i.imgur.com/2YLu1.png.
[[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ ))
[[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ ))
[[ "$line" == ?[MT]\ * ]] && (( modified++ ))
[[ "$line" == R?\ * ]] && (( renamed++ ))
[[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ ))
[[ "$line" == \?\?\ * ]] && (( untracked++ ))
(( dirty++ ))
done < <(${(z)status_cmd} 2> /dev/null)
# Format branch. # Format branch.
zstyle -s ':prezto:module:git:info:branch' format 'branch_format' branch="${$(git symbolic-ref -q HEAD)##refs/heads/}"
if [[ -n "$branch" && -n "$branch_format" ]]; then if [[ -n "$branch" ]]; then
zstyle -s ':prezto:module:git:info:branch' format 'branch_format'
zformat -f branch_formatted "$branch_format" "b:$branch" zformat -f branch_formatted "$branch_format" "b:$branch"
fi
# Format position. # Format remote.
zstyle -s ':prezto:module:git:info:position' format 'position_format' remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
if [[ -z "$branch" && -n "$position_format" ]]; then if [[ -n "$remote" ]]; then
zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
zformat -f remote_formatted "$remote_format" "R:$remote"
# Get ahead and behind counts.
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
# Format ahead.
ahead="$ahead_and_behind[(w)1]"
if (( $ahead > 0 )); then
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'
zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi
# Format behind.
behind="$ahead_and_behind[(w)2]"
if (( $behind > 0 )); then
zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
zformat -f behind_formatted "$behind_format" "B:$behind"
fi
fi
else
# Format position.
position="$(git describe --contains --all HEAD 2> /dev/null)" position="$(git describe --contains --all HEAD 2> /dev/null)"
if [[ -n "$position" ]]; then if [[ -n "$position" ]]; then
zstyle -s ':prezto:module:git:info:position' format 'position_format'
zformat -f position_formatted "$position_format" "p:$position" zformat -f position_formatted "$position_format" "p:$position"
fi fi
fi fi
# Format remote. # Format added.
zstyle -s ':prezto:module:git:info:remote' format 'remote_format' if (( $added > 0 )); then
if [[ -n "$branch" && -n "$remote_format" ]]; then zstyle -s ':prezto:module:git:info:added' format 'added_format'
# Gets the remote name. zformat -f added_formatted "$added_format" "a:$added_format"
remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
if [[ -n "$remote" ]]; then
zformat -f remote_formatted "$remote_format" "R:$remote"
fi
fi fi
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format' # Format deleted.
zstyle -s ':prezto:module:git:info:behind' format 'behind_format' if (( $deleted > 0 )); then
if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'
# Gets the commit difference counts between local and remote. zformat -f deleted_formatted "$deleted_format" "d:$deleted_format"
ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}'
# Get ahead and behind counts.
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
# Format ahead.
if [[ -n "$ahead_format" ]]; then
ahead="$ahead_and_behind[(w)1]"
if (( ahead > 0 )); then
zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi
fi
# Format behind.
if [[ -n "$behind_format" ]]; then
behind="$ahead_and_behind[(w)2]"
if (( behind > 0 )); then
zformat -f behind_formatted "$behind_format" "B:$behind"
fi
fi
fi fi
# Get status type. # Format modified.
if ! zstyle -t ':prezto:module:git:info' verbose; then if (( $modified > 0 )); then
# Format indexed. zstyle -s ':prezto:module:git:info:modified' format 'modified_format'
zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format' zformat -f modified_formatted "$modified_format" "m:$modified"
if [[ -n "$indexed_format" ]]; then fi
((
indexed+=$(
git diff-index \
--no-ext-diff \
--name-only \
--cached \
--ignore-submodules=${ignore_submodules:-none} \
HEAD \
2> /dev/null \
| wc -l
)
))
if (( indexed > 0 )); then
zformat -f indexed_formatted "$indexed_format" "i:$indexed"
fi
fi
# Format unindexed. # Format renamed.
zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format' if (( $renamed > 0 )); then
if [[ -n "$unindexed_format" ]]; then zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'
(( zformat -f renamed_formatted "$renamed_format" "r:$renamed"
unindexed+=$( fi
git diff-files \
--no-ext-diff \
--name-only \
--ignore-submodules=${ignore_submodules:-none} \
2> /dev/null \
| wc -l
)
))
if (( unindexed > 0 )); then
zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed"
fi
fi
# Format untracked. # Format unmerged.
if (( $unmerged > 0 )); then
zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'
zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged"
fi
# Format untracked.
if (( $untracked > 0 )); then
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
if [[ -n "$untracked_format" ]]; then zformat -f untracked_formatted "$untracked_format" "u:$untracked"
((
untracked+=$(
git ls-files \
--other \
--exclude-standard \
2> /dev/null \
| wc -l
)
))
if (( untracked > 0 )); then
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
fi
fi
(( dirty = indexed + unindexed + untracked ))
else
# Use porcelain status for easy parsing.
status_cmd="git status --porcelain --ignore-submodules=${ignore_submodules:-none}"
# Get current status.
while IFS=$'\n' read line; do
# Count added, deleted, modified, renamed, unmerged, untracked, dirty.
# T (type change) is undocumented, see http://git.io/FnpMGw.
# For a table of scenarii, see http://i.imgur.com/2YLu1.png.
[[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ ))
[[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ ))
[[ "$line" == ?[MT]\ * ]] && (( modified++ ))
[[ "$line" == R?\ * ]] && (( renamed++ ))
[[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ ))
[[ "$line" == \?\?\ * ]] && (( untracked++ ))
(( dirty++ ))
done < <(${(z)status_cmd} 2> /dev/null)
# Format added.
if (( added > 0 )); then
zstyle -s ':prezto:module:git:info:added' format 'added_format'
zformat -f added_formatted "$added_format" "a:$added"
fi
# Format deleted.
if (( deleted > 0 )); then
zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'
zformat -f deleted_formatted "$deleted_format" "d:$deleted"
fi
# Format modified.
if (( modified > 0 )); then
zstyle -s ':prezto:module:git:info:modified' format 'modified_format'
zformat -f modified_formatted "$modified_format" "m:$modified"
fi
# Format renamed.
if (( renamed > 0 )); then
zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'
zformat -f renamed_formatted "$renamed_format" "r:$renamed"
fi
# Format unmerged.
if (( unmerged > 0 )); then
zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'
zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged"
fi
# Format untracked.
if (( untracked > 0 )); then
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
fi
fi fi
# Format dirty and clean. # Format dirty and clean.
if (( dirty > 0 )); then if (( $dirty > 0 )); then
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format' zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
zformat -f dirty_formatted "$dirty_format" "D:$dirty" zformat -f dirty_formatted "$dirty_format" "D:$dirty"
else else
@ -394,28 +342,27 @@ function git-info {
zstyle -a ':prezto:module:git:info:keys' format 'info_formats' zstyle -a ':prezto:module:git:info:keys' format 'info_formats'
for info_format in ${(k)info_formats}; do for info_format in ${(k)info_formats}; do
zformat -f REPLY "$info_formats[$info_format]" \ zformat -f REPLY "$info_formats[$info_format]" \
"a:$added_formatted" \
"A:$ahead_formatted" \ "A:$ahead_formatted" \
"B:$behind_formatted" \ "B:$behind_formatted" \
"D:$dirty_formatted" \
"R:$remote_formatted" \
"S:$stashed_formatted" \
"U:$unmerged_formatted" \
"a:$added_formatted" \
"b:$branch_formatted" \ "b:$branch_formatted" \
"C:$clean_formatted" \ "C:$clean_formatted" \
"c:$commit_formatted" \ "c:$commit_formatted" \
"d:$deleted_formatted" \ "d:$deleted_formatted" \
"D:$dirty_formatted" \
"i:$indexed_formatted" \
"I:$unindexed_formatted" \
"m:$modified_formatted" \ "m:$modified_formatted" \
"p:$position_formatted" \ "p:$position_formatted" \
"R:$remote_formatted" \
"r:$renamed_formatted" \ "r:$renamed_formatted" \
"s:$action_formatted" \ "s:$action_formatted" \
"S:$stashed_formatted" \
"U:$unmerged_formatted" \
"u:$untracked_formatted" "u:$untracked_formatted"
git_info[$info_format]="$REPLY" git_info[$info_format]="$REPLY"
done done
unset REPLY unset REPLY
unset _git_info_executing
return 0 return 0
} }

View File

@ -7,8 +7,8 @@ Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.
`ls` instead of `gls`, is not recommended since scripts that target other `ls` instead of `gls`, is not recommended since scripts that target other
utilities will be broken. utilities will be broken.
This module wraps GNU utilities in functions without a prefix for interactive However, for interactive use, prefixed commands can be wrapped in their
use. non-prefixed counterparts.
This module must be loaded **before** the *utility* module. This module must be loaded **before** the *utility* module.

View File

@ -0,0 +1,25 @@
GPG-Agent
=========
Provides for an easier use of [gpg-agent][1].
Settings
--------
### SSH-Agent Protocol Emulation
To enable SSH-Agent protocol emulation, add the following line to *zpreztorc*:
zstyle ':prezto:module:gpg-agent' ssh-support 'yes'
Authors
-------
*The authors of this module should be contacted via the [issue tracker][2].*
- [Florian Walch](https://github.com/fwalch)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://linux.die.net/man/1/gpg-agent
[2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -0,0 +1,44 @@
#
# Provides for an easier use of gpg-agent.
#
# Authors:
# Florian Walch <florian.walch@gmx.at>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[gpg-agent] )); then
return 1
fi
_gpg_env="$HOME/.gnupg/gpg-agent.env"
function _gpg-agent-start {
local ssh_support
zstyle -b ':prezto:module:gpg-agent' ssh-support 'ssh_support' \
|| ssh_support=''
gpg-agent \
--daemon ${ssh_support:+'--enable-ssh-support'}
--write-env-file "${_gpg_env}" > /dev/null
chmod 600 "${_gpg_env}"
source "${_gpg_env}" > /dev/null
}
# Source GPG agent settings, if applicable.
if [[ -s "${_gpg_env}" ]]; then
source "${_gpg_env}" > /dev/null
ps -ef | grep "${SSH_AGENT_PID}" | grep -q 'gpg-agent' || {
_gpg-agent-start
}
else
_gpg-agent-start
fi
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
export GPG_TTY="$(tty)"

View File

@ -1,27 +0,0 @@
GPG
===
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
### SSH
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
replacement for `ssh-agent`, add the following line to
*~/.gnupg/gpg-agent.conf*:
enable-ssh-support
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
module for additional processing.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.gnupg.org
[2]: http://linux.die.net/man/1/gpg-agent
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,44 +0,0 @@
#
# Provides for an easier use of GPG by setting up gpg-agent.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[gpg-agent] )); then
return 1
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"
# Start gpg-agent if not started.
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
else
# Export environment variables.
source "$_gpg_agent_env" 2> /dev/null
fi
# Inform gpg-agent of the current TTY for user prompts.
export GPG_TTY="$(tty)"
# Integrate with the SSH module.
if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
# Override the ssh-agent environment file default path.
_ssh_agent_env="$_gpg_agent_env"
# Load the SSH module for additional processing.
pmodload 'ssh'
fi
# Clean up.
unset _gpg_agent_{conf,env}
# Disable GUI prompts inside SSH.
if [[ -n "$SSH_CONNECTION" ]]; then
export PINENTRY_USER_DATA='USE_CURSES=1'
fi

View File

@ -10,9 +10,12 @@ if (( ! $+commands[ghc] )); then
return 1 return 1
fi fi
# Prepend Cabal per user directories to PATH. # Prepend Cabal per user directories to PATH/MANPATH.
if [[ "$OSTYPE" == darwin* && -d $HOME/Library/Haskell ]]; then if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Haskell/bin(/N) $path) path=($HOME/Library/Haskell/bin(/N) $path)
manpath=($HOME/Library/Haskell/man(/N) $manpath)
else else
path=($HOME/.cabal/bin(/N) $path) path=($HOME/.cabal/bin(/N) $path)
manpath=($HOME/.cabal/man(/N) $manpath)
fi fi

View File

@ -13,6 +13,7 @@ Functions
- `is-callable` checks if a name is a command, function, or alias. - `is-callable` checks if a name is a command, function, or alias.
- `is-true` checks a boolean variable for "true". - `is-true` checks a boolean variable for "true".
- `coalesce` prints the first non-empty string in the arguments array. - `coalesce` prints the first non-empty string in the arguments array.
- `zstyle-` defines a style if it is already not defined.
Authors Authors
------- -------

View File

@ -6,6 +6,14 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Trap signals were generated with 'kill -l'.
# DEBUG, EXIT, and ZERR are Zsh signals.
_trap_signals=(
ABRT ALRM BUS CHLD CONT EMT FPE HUP ILL INFO INT IO KILL PIPE PROF QUIT
SEGV STOP SYS TERM TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ
DEBUG EXIT ZERR
)
# Adds a function name to a list to be called when a trap is triggered. # Adds a function name to a list to be called when a trap is triggered.
function add-zsh-trap { function add-zsh-trap {
if (( $# < 2 )); then if (( $# < 2 )); then
@ -13,7 +21,7 @@ function add-zsh-trap {
return 1 return 1
fi fi
if [[ -z "$signals[(r)$1]" ]]; then if [[ -z "$_trap_signals[(r)$1]" ]]; then
print "$0: unknown signal: $1" >&2 print "$0: unknown signal: $1" >&2
return 1 return 1
fi fi

View File

@ -30,3 +30,7 @@ function coalesce {
return 1 return 1
} }
# Defines a style if it is already not defined.
function zstyle- {
zstyle -T "$1" "$2" && zstyle "$@"
}

View File

@ -36,18 +36,6 @@ To enable highlighting for this module only, add the following line to
zstyle ':prezto:module:history-substring-search' color 'yes' zstyle ':prezto:module:history-substring-search' color 'yes'
To set the query found color, add the following line to *zpreztorc*:
zstyle ':prezto:module:history-substring-search:color' found ''
To set the query not found color, add the following line to *zpreztorc*:
zstyle ':prezto:module:history-substring-search:color' not-found ''
To set the search globbing flags, add the following line to *zpreztorc*:
zstyle ':prezto:module:history-substring-search' globbing-flags ''
Authors Authors
------- -------

View File

@ -10,26 +10,14 @@
pmodload 'editor' pmodload 'editor'
# Source module files. # Source module files.
source "${0:h}/external/zsh-history-substring-search.zsh" || return 1 source "${0:h}/external/zsh-history-substring-search.zsh"
# #
# Search # Styles
# #
zstyle -s ':prezto:module:history-substring-search:color' found \
'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \
|| HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'
zstyle -s ':prezto:module:history-substring-search:color' not-found \
'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \
|| HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'
zstyle -s ':prezto:module:history-substring-search' globbing-flags \
'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \
|| HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'
if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then
HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS="${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" unset HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS
fi fi
if ! zstyle -t ':prezto:module:history-substring-search' color; then if ! zstyle -t ':prezto:module:history-substring-search' color; then
@ -40,7 +28,7 @@ fi
# Key Bindings # Key Bindings
# #
if [[ -n "$key_info" ]]; then if [[ -n $key_info ]]; then
# Emacs # Emacs
bindkey -M emacs "$key_info[Control]P" history-substring-search-up bindkey -M emacs "$key_info[Control]P" history-substring-search-up
bindkey -M emacs "$key_info[Control]N" history-substring-search-down bindkey -M emacs "$key_info[Control]N" history-substring-search-down

View File

@ -1,26 +0,0 @@
Homebrew
========
Defines Homebrew aliases.
Aliases
-------
- `brewc` cleans outdated brews and their cached archives.
- `brewC` cleans outdated brews, including keg-only, and their cached archives.
- `brewi` installs a formula.
- `brewl` lists installed formulae.
- `brews` searches for a formula.
- `brewU` upgrades Homebrew and outdated brews.
- `brewu` upgrades Homebrew.
- `brewx` uninstalls a formula.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,25 +0,0 @@
#
# Defines Homebrew aliases.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if [[ "$OSTYPE" != darwin* ]]; then
return 1
fi
#
# Aliases
#
alias brewc='brew cleanup'
alias brewC='brew cleanup --force'
alias brewi='brew install'
alias brewl='brew list'
alias brews='brew search'
alias brewu='brew upgrade'
alias brewU='brew update && brew upgrade'
alias brewx='brew remove'

View File

@ -15,6 +15,18 @@ fi
# Paths # Paths
# #
# Set the list of directories that info searches for manuals.
infopath=(
/opt/local/share/info
$infopath
)
# Set the list of directories that man searches for manuals.
manpath=(
/opt/local/share/man
$manpath
)
# Set the list of directories that Zsh searches for programs. # Set the list of directories that Zsh searches for programs.
path=( path=(
/opt/local/{bin,sbin} /opt/local/{bin,sbin}

View File

@ -1,34 +1,13 @@
Node.js Node.js
======= =======
Provides utility functions for [Node.js][1], loads the Node Version Manager, and Provides utility functions for [Node.js][1] and loads [npm][2] completion.
enables [npm][2] completion.
nvm
---
[nvm][5] allows for managing multiple, isolated Node.js installations in the
home directory.
Functions Functions
--------- ---------
- `node-doc` opens the Node.js online [API documentation][3] in the default - `node-doc` opens the Node.js online [API documentation][3] in the default
browser. browser.
- `node-info` exposes information about the Node.js environment via the
`$node_info` associative array.
Theming
-------
To display the version number of the current Node.js version, define the
following style inside the `prompt_name_setup` function.
# %v - Node.js version.
zstyle ':prezto:module:node:info:version' format 'version:%v'
Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call
`node-info` in `prompt_name_preexec` hook function.
Authors Authors
------- -------
@ -36,11 +15,9 @@ Authors
*The authors of this module should be contacted via the [issue tracker][4].* *The authors of this module should be contacted via the [issue tracker][4].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Zeh Rizzatti](https://github.com/zehrizzatti)
[1]: http://nodejs.org [1]: http://nodejs.org
[2]: http://npmjs.org [2]: http://npmjs.org
[3]: http://nodejs.org/api [3]: http://nodejs.org/api
[4]: https://github.com/sorin-ionescu/prezto/issues [4]: https://github.com/sorin-ionescu/prezto/issues
[5]: https://github.com/creationix/nvm

View File

@ -1,25 +0,0 @@
#
# Exposes information about the Node.js environment via the $node_info
# associative array.
#
# Authors:
# Zeh Rizzatti <zehrizzatti@gmail.com>
#
local version
local version_format
local version_formatted
unset node_info
typeset -gA node_info
if (( $+functions[nvm_version] )); then
version="${$(nvm_version)#v}"
fi
if [[ -n "$version" ]]; then
zstyle -s ':prezto:module:node:info:version' format 'version_format'
zformat -f version_formatted "$version_format" "v:$version"
node_info[version]="$version_formatted"
fi

View File

@ -1,16 +1,10 @@
# #
# Loads the Node Version Manager and enables npm completion. # Completes npm.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# Zeh Rizzatti <zehrizzatti@gmail.com>
# #
# Load NVM into the shell session.
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
source "$HOME/.nvm/nvm.sh"
fi
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $+commands[node] )); then if (( ! $+commands[node] )); then
return 1 return 1

View File

@ -1,28 +0,0 @@
Ocaml
=====
Initializes [Ocaml][1] package management.
OPAM
----
[OPAM][2] is a package manager for Ocaml.
This module enables local package installation with OPAM by extending the
relevant path and Ocaml variables.
### Usage
Install packages to your local package directory with `opam install`.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: http://ocaml.org/
[2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,15 +0,0 @@
#
# Initializes Ocaml package management.
#
# Authors:
# Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[opam] )); then
return 1
fi
# Initialize OPAM.
eval "$(opam config env)"

View File

@ -9,20 +9,18 @@ Aliases
- `cdf` changes the current working director to the current _Finder_ - `cdf` changes the current working director to the current _Finder_
directory. directory.
- `pushdf` pushes the current working directory onto the directory queue and - `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 Functions
--------- ---------
- `mand` opens _man_ pages in [_Dash.app_][2]. - `manb` opens _man_ pages in [_Bwana.app_][2].
- `manp` opens _man_ pages in _Preview.app_. - `manp` opens _man_ pages in _Preview.app_.
- `pfd` prints the current _Finder_ directory. - `pfd` prints the current _Finder_ directory.
- `pfs` prints the current _Finder_ selection. - `pfs` prints the current _Finder_ selection.
- `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]). - `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]).
- `ql` previews files in Quick Look. - `trash` moves files and folders to _Trash_.
- `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 Authors
------- -------
@ -32,6 +30,7 @@ Authors
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.apple.com/macosx/ [1]: http://www.apple.com/macosx/
[2]: http://kapeli.com/dash [2]: http://bruji.com/bwana/
[3]: http://www.iterm2.com/ [3]: http://www.iterm2.com/
[4]: https://github.com/sorin-ionescu/prezto/issues [4]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,8 +1,8 @@
#compdef mand manp #compdef manb manp
#autoload #autoload
# #
# Completes mand and manp. # Completes manb and manp.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # 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 osascript 2>/dev/null <<EOF
tell application "Finder" 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 end tell
EOF EOF

View File

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

@ -0,0 +1,27 @@
#
# Moves directories and files to Trash.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
print -N "${@:a}" | xargs -0 osascript -e '
on run theFilePaths
tell application "Finder"
set thePOSIXFiles to {}
repeat with aFilePath in theFilePaths
set aPOSIXFile to aFilePath as POSIX file
if exists aPOSIXFile
set end of thePOSIXFiles to aPOSIXFile
end if
end repeat
move every item of thePOSIXFiles to trash
end tell
end run
' &>/dev/null
if (( $? != 0)); then
print "$0: failed to move one or more items" >&2
return 1
fi

View File

@ -14,8 +14,26 @@ fi
# Aliases # Aliases
# #
# Changes directory to the current Finder directory. # Change directory to the current Finder directory.
alias cdf='cd "$(pfd)"' alias cdf='cd "$(pfd)"'
# Pushes directory to the current Finder directory. # Push directory to the current Finder directory.
alias pushdf='pushd "$(pfd)"' 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

@ -27,9 +27,6 @@ if (( $+commands[$_pacman_frontend] )); then
if [[ -s "${0:h}/${_pacman_frontend}.zsh" ]]; then if [[ -s "${0:h}/${_pacman_frontend}.zsh" ]]; then
source "${0:h}/${_pacman_frontend}.zsh" source "${0:h}/${_pacman_frontend}.zsh"
fi fi
else
_pacman_frontend='pacman'
_pacman_sudo='sudo '
fi fi
# #
@ -37,49 +34,49 @@ fi
# #
# Pacman. # Pacman.
alias pac="${_pacman_frontend}" alias pac='pacman'
# Installs packages from repositories. # Installs packages from repositories.
alias paci="${_pacman_sudo}${_pacman_frontend} --sync" alias paci='sudo pacman --sync'
# Installs packages from files. # Installs packages from files.
alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade" alias pacI='sudo pacman --upgrade'
# Removes packages and unneeded dependencies. # Removes packages and unneeded dependencies.
alias pacx="${_pacman_sudo}${_pacman_frontend} --remove" alias pacx='sudo pacman --remove'
# Removes packages, their configuration, and unneeded dependencies. # 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. # 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. # 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. # Searches for packages in the repositories.
alias pacs="${_pacman_frontend} --sync --search" alias pacs='pacman --sync --recursive'
# Searches for packages in the local database. # Searches for packages in the local database.
alias pacS="${_pacman_frontend} --query --search" alias pacS='pacman --query --recursive'
# Lists orphan packages. # 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. # 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 # Synchronizes the local package and Arch Build System databases against the
# repositories. # repositories.
if (( $+commands[abs] )); then if (( $+commands[abs] )); then
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && ${_pacman_sudo}abs" alias pacu='sudo pacman --sync --refresh && sudo abs'
else else
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh" alias pacu='sudo pacman --sync --refresh'
fi fi
# Synchronizes the local package database against the repositories then # Synchronizes the local package database against the repositories then
# upgrades outdated packages. # 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. # Disable color.
if ! zstyle -t ':prezto:module:pacman:yaourt' color; then if ! zstyle -t ':prezto:module:pacman:yaourt' color; then
alias pacman='yaourt --nocolor' alias pacman='pacman --nocolor'
fi fi
# Manages .pac* files. # Manages .pac* files.
alias pacc='yaourt -C' alias pacc='pacman -C'

View File

@ -20,6 +20,8 @@ if [[ "$OSTYPE" == darwin* ]]; then
perl_path="$HOME/Library/Perl/5.12" perl_path="$HOME/Library/Perl/5.12"
if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then
manpath=("$perl_path/man" $manpath)
if [[ ! -s "$cache_file" ]]; then if [[ ! -s "$cache_file" ]]; then
perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file" perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file"
fi fi
@ -29,6 +31,12 @@ if [[ "$OSTYPE" == darwin* ]]; then
unset perl_path unset perl_path
unset cache_file unset cache_file
# Set environment variables for launchd processes.
for env_var in PERL_LOCAL_LIB_ROOT PERL_MB_OPT PERL_MM_OPT PERL5LIB; do
launchctl setenv "$env_var" "${(P)env_var}" &!
done
unset env_var
fi fi
# #

View File

@ -34,7 +34,7 @@ including a function that displays help or a function used to preview it.
**Do not call this function directly.** **Do not call this function directly.**
The most basic example of this function can be seen below. The most basic example of this function can be seen bellow.
function prompt_name_setup { function prompt_name_setup {
PROMPT='%m%# ' PROMPT='%m%# '

View File

@ -0,0 +1,223 @@
#
# A two line customizable theme (colored in blue and white by default).
#
# Author:
# shura <shura1991@gmail.com>
#
# Features:
# - Two lines.
# - VCS integration.
# - Customizable.
#
# Settings (:prezto:module:prompt:theme:borra):
# - plugins: list of plugins (array)
# - prefix: right-side of plugin wrapper (string)
# - separator: plugin separator (string)
# - suffix: left-side of plugin wrapper (string)
# - top: beginning of first line (string)
# - bottom: beginning of second line (string)
# - prompt: right-side of second line (string)
# - rprompt: right prompt enable or disable (bool)
#
# Plugins settings (:prezto:module:prompt:theme:borra:plugin:$plugin):
# Version Control Systems:
# - enable: vcs enable backends (array)
# - format: vcs backends format (string):
# * %b: backend name (to write a bold-end, escape it using %%b)
# * %i: formatted text according to zstyle ':vcs_info:*' formats (or actionformats)
# User and Host:
# - format: username and hostname format (string):
# * %u: username
# * %h: hostname
# Example:
# zstyle ':prezto:module:prompt:theme:borra' separator ' '
#
# Screenshots:
# http://i.imgur.com/rEgWv.png
# http://ascii.io/a/1310
#
function +borra-pts {
print -n '/dev/%y'
}
function +borra-rvm-info {
if (( ! $+functions[rvm] )); then
return 1
fi
local rb="$(rvm-prompt s)"
if [[ -z "${rb}" ]]; then
print "$(rvm-prompt i v p r)" || print "${rb}"
fi
}
function +borra-userhost {
local format
local res
zstyle -s ':prezto:module:prompt:theme:borra:plugin:userhost' format 'format'
zformat -f res "$format" u:'%(!.%SROOT%s.%n)' h:'%m'
print -n "$res"
}
function +borra-vcs-info {
local res=""
local sep="$1"
local backend
local enabled
local format
local s
vcs_info # need VCS_INFO_backends
zstyle -a ':prezto:module:prompt:theme:borra:plugin:vcs' enable 'enabled'
zstyle -s ':prezto:module:prompt:theme:borra:plugin:vcs' format 'format'
for backend in ${VCS_INFO_backends[@]}; do
if (( $+enabled[$backend] )); then
continue
fi
zstyle ':vcs_info:*' enable "$backend"
vcs_info || continue
if [[ -z "${vcs_info_msg_0_}" ]]; then
continue
fi
zformat -f s "$format" "b:$backend" "i:$vcs_info_msg_0_"
res+="$(prompt_borra_wrap_plugin "$s" "$sep")"
if [[ -z "$sep" && ! -z "$res" ]]; then
zstyle -s ':prezto:module:prompt:theme:borra' separator 'sep'
fi
done
print -n -- "$res"
return 23
}
function +vi-git-status-untracked {
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
hook_com[unstaged]=' %F{red}⚑%f'
fi
}
function prompt_borra_set_zstyle_if_not_set {
zstyle -T "$1" "$2" && zstyle "$@"
}
function prompt_borra_wrap_plugin {
local prefix
local suffix
zstyle -s ':prezto:module:prompt:theme:borra' prefix 'prefix'
zstyle -s ':prezto:module:prompt:theme:borra' suffix 'suffix'
print -n -- "${2}${prefix}${1}${suffix}"
}
function prompt_borra_render_item {
local res
res="$($1 "$2" 2>/dev/null)"
case "$?" in
(0)
prompt_borra_wrap_plugin "$res" "$2"
;;
(23)
print -n "$res"
;;
(*)
return 1
;;
esac
}
function prompt_borra_render_plugins {
local res=""
local plugin
local -a plugins
local sep
zstyle -a ':prezto:module:prompt:theme:borra' plugins 'plugins'
for plugin in "$plugins[@]"; do
res+="$(prompt_borra_render_item "+borra-$plugin" "$sep")"
if [[ -z "$sep" && ! -z "$res" ]]; then
zstyle -s ':prezto:module:prompt:theme:borra' separator 'sep'
fi
done
print -n "$res"
}
function prompt_borra_create_prompt {
local plugins="$(prompt_borra_render_plugins)"
local res=""
local top
local bottom
local prompt
if [[ ! -z "$plugins" ]]; then
zstyle -s ':prezto:module:prompt:theme:borra' top 'top'
zstyle -s ':prezto:module:prompt:theme:borra' bottom 'bottom'
res="
${top}${plugins}
${bottom}"
fi
zstyle -s ':prezto:module:prompt:theme:borra' prompt 'prompt'
print -n "${res}${prompt}"
}
function prompt_borra_precmd {
local rprompt
PROMPT="$(prompt_borra_create_prompt)"
zstyle -b ':prezto:module:prompt:theme:borra' rprompt 'rprompt'
if [[ "$rprompt" = yes ]]; then
RPROMPT='%(?..%F{red}%? ↵%f)'
else
RPROMPT=''
fi
}
function prompt_borra_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
# Load required functions.
autoload -Uz add-zsh-hook
autoload -Uz vcs_info
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_borra_precmd
# Call vcs_info to populate $VCS_INFO_backends.
vcs_info
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' plugins 'userhost' 'pts' 'rvm-info' 'vcs-info'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' prefix '%F{blue}(%f'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' separator '%F{blue}-%f'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' suffix '%F{blue}%)%f'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' top '%F{blue}╭-%f'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' bottom '%F{blue}╰─%f'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' prompt '%F{blue}(%f%B%$((COLUMNS / 2))<...<%~%<<%b%F{blue})%F{yellow}>%f '
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra' rprompt 'yes'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra:plugin:vcs' enable "$VCS_INFO_backends[@]"
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra:plugin:vcs' format '%b: %i'
prompt_borra_set_zstyle_if_not_set ':prezto:module:prompt:theme:borra:plugin:userhost' format '%u%F{blue}@%f%h'
# Set vcs_info parameters.
zstyle ':vcs_info:*' check-for-changes 'true'
zstyle ':vcs_info:*' unstagedstr ' %F{yellow}⚑%f'
zstyle ':vcs_info:*' stagedstr ' %F{green}⚑%f'
zstyle ':vcs_info:*' actionformats '%b%u%c [%a]'
zstyle ':vcs_info:*' formats '%b%u%c'
zstyle ':vcs_info:*+set-message:*' hooks 'git-status-untracked'
}
prompt_borra_setup "$@"

View File

@ -46,14 +46,10 @@ function prompt_sorin_setup {
# Add hook for calling git-info before each command. # Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_sorin_precmd add-zsh-hook precmd prompt_sorin_precmd
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{red}%F{yellow}%F{green}%f%b' zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{red}%F{yellow}%F{green}%f%b'
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{red}♺%f' zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{red}♺%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{green}%F{yellow}%F{red}%f%b' zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{green}%F{yellow}%F{red}%f%b'
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:action' format ':%%B%F{yellow}%s%f%%b' zstyle ':prezto:module:git:info:action' format ':%%B%F{yellow}%s%f%%b'
zstyle ':prezto:module:git:info:added' format ' %%B%F{green}✚%f%%b' zstyle ':prezto:module:git:info:added' format ' %%B%F{green}✚%f%%b'
zstyle ':prezto:module:git:info:ahead' format ' %%B%F{yellow}⬆%f%%b' zstyle ':prezto:module:git:info:ahead' format ' %%B%F{yellow}⬆%f%%b'
@ -62,7 +58,7 @@ function prompt_sorin_setup {
zstyle ':prezto:module:git:info:commit' format ':%F{green}%.7c%f' zstyle ':prezto:module:git:info:commit' format ':%F{green}%.7c%f'
zstyle ':prezto:module:git:info:deleted' format ' %%B%F{red}✖%f%%b' zstyle ':prezto:module:git:info:deleted' format ' %%B%F{red}✖%f%%b'
zstyle ':prezto:module:git:info:modified' format ' %%B%F{blue}✱%f%%b' zstyle ':prezto:module:git:info:modified' format ' %%B%F{blue}✱%f%%b'
zstyle ':prezto:module:git:info:position' format ':%F{red}%p%f' zstyle ':prezto:module:git:info:position' format ':%F{green}%p%f'
zstyle ':prezto:module:git:info:renamed' format ' %%B%F{magenta}➜%f%%b' zstyle ':prezto:module:git:info:renamed' format ' %%B%F{magenta}➜%f%%b'
zstyle ':prezto:module:git:info:stashed' format ' %%B%F{cyan}✭%f%%b' zstyle ':prezto:module:git:info:stashed' format ' %%B%F{cyan}✭%f%%b'
zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{yellow}═%f%%b' zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{yellow}═%f%%b'

View File

@ -6,15 +6,15 @@ Enables local Python and local Python package installation.
Local Python Installation Local Python Installation
------------------------- -------------------------
[pyenv][4] builds and installs multiple Python versions locally in the home [pythonz][4] builds and installs multiple Python versions locally in the home
directory. directory.
This module prepends the pyenv directory to the path variable to enable the This module prepends the pythonz directory to the path variable to enable the
execution of `pyenv`. execution of `pythonz`.
### Usage ### Usage
Install Python versions with `pyenv install` into *~/.pyenv/versions*. Install Python versions with `pythonz install` into *~/.pythonz/pythons*.
Local Package Installation Local Package Installation
-------------------------- --------------------------
@ -66,6 +66,16 @@ Aliases
- `py` is short for `python`. - `py` is short for `python`.
### Pythonz
- `pyz` is short for `pythonz`.
- `pyzc` removes stale source folders and archives.
- `pyzi` installs Python versions.
- `pyzl` lists installed Python versions.
- `pyzL` lists available Python versions.
- `pyzu` updates itself to the latest version.
- `pyzx` uninstalls Python versions.
Functions Functions
--------- ---------
@ -95,6 +105,6 @@ Authors
[1]: http://www.python.org/dev/peps/pep-0370/ [1]: http://www.python.org/dev/peps/pep-0370/
[2]: http://www.doughellmann.com/projects/virtualenvwrapper/ [2]: http://www.doughellmann.com/projects/virtualenvwrapper/
[3]: http://pypi.python.org/pypi/virtualenv [3]: http://pypi.python.org/pypi/virtualenv
[4]: https://github.com/yyuu/pyenv [4]: http://saghul.github.com/pythonz/
[5]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -6,38 +6,31 @@
# Sebastian Wiesner <lunaryorn@googlemail.com> # Sebastian Wiesner <lunaryorn@googlemail.com>
# #
# Load manually installed pyenv into the shell session. # Load pythonz into the shell session.
if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then if [[ -s $HOME/.pythonz/bin/pythonz ]]; then
path=("$HOME/.pyenv/bin" $path) path=($HOME/.pythonz/bin $path)
eval "$(pyenv init -)"
# Load package manager installed pyenv into the shell session.
elif (( $+commands[pyenv] )); then
eval "$(pyenv init -)"
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH. The
# path can be overridden using PYTHONUSERBASE.
else
if [[ -n "$PYTHONUSERBASE" ]]; then
path=($PYTHONUSERBASE/bin $path)
elif [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
path=($HOME/.local/bin $path)
fi
fi fi
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $+commands[python] && ! $+commands[pyenv] )); then if (( ! $+commands[python] && ! $+commands[pythonz] )); then
return 1 return 1
fi fi
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH/MANPATH.
if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Python/*/bin(N) $path)
manpath=($HOME/Library/Python/*/{,share/}man(N) $manpath)
else
# This is subject to change.
path=($HOME/.local/bin $path)
manpath=($HOME/.local/{,share/}man(N) $manpath)
fi
# Load virtualenvwrapper into the shell session. # Load virtualenvwrapper into the shell session.
if (( $+commands[virtualenvwrapper_lazy.sh] )); then if (( $+commands[virtualenvwrapper_lazy.sh] )); then
# Set the directory where virtual environments are stored. # Set the directory where virtual environments are stored.
export WORKON_HOME="$HOME/.virtualenvs" export WORKON_HOME=$HOME/.virtualenvs
# Disable the virtualenv prompt. # Disable the virtualenv prompt.
VIRTUAL_ENV_DISABLE_PROMPT=1 VIRTUAL_ENV_DISABLE_PROMPT=1
@ -51,3 +44,14 @@ fi
alias py='python' alias py='python'
# pythonz
if (( $+commands[pythonz] )); then
alias pyz='pythonz'
alias pyzc='pythonz cleanup'
alias pyzi='pythonz install'
alias pyzl='pythonz list'
alias pyzL='pythonz list -a'
alias pyzu='pythonz update'
alias pyzx='pythonz uninstall'
fi

View File

@ -7,30 +7,39 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Load dependencies.
pmodload 'ruby'
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $+commands[bundle] )); then if (( ! $+commands[rails] )); then
return 1 return 1
fi fi
# #
# Aliases # Aliases (Compatible with Rails 2)
# #
alias ror='bundle exec rails' alias ror='rails'
alias rorc='bundle exec rails console' alias rorc='_rails-command console'
alias rordc='bundle exec rails dbconsole' alias rordc='_rails-command dbconsole'
alias rordm='bundle exec rake db:migrate' alias rordm='rake db:migrate'
alias rordM='bundle exec rake db:migrate db:test:clone' alias rordM='rake db:migrate db:test:clone'
alias rordr='bundle exec rake db:rollback' alias rordr='rake db:rollback'
alias rorg='bundle exec rails generate' alias rorg='_rails-command generate'
alias rorl='tail -f "$(ruby-app-root)/log/development.log"' alias rorl='tail -f log/development.log'
alias rorlc='bundle exec rake log:clear' alias rorlc='rake log:clear'
alias rorp='bundle exec rails plugin' alias rorp='_rails-command plugin'
alias rorr='bundle exec rails runner' alias rorr='_rails-command runner'
alias rors='bundle exec rails server' alias rors='_rails-command server'
alias rorsd='bundle exec rails server --debugger' alias rorsd='_rails-command server --debugger'
alias rorx='bundle exec rails destroy' alias rorx='_rails-command destroy'
#
# Functions
#
function _rails-command {
if [[ -e "script/server" ]]; then
ruby script/"$@"
else
ruby script/rails "$@"
fi
}

View File

@ -23,6 +23,6 @@ Authors
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://rsync.samba.org [1]: http://rsync.samba.org
[2]: http://help.bombich.com/kb/overview/credits#opensource [2]: http://www.bombich.com/rsync.html
[3]: https://github.com/sorin-ionescu/prezto/issues [3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -17,7 +17,7 @@ fi
_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive --hard-links --one-file-system' _rsync_cmd='rsync --verbose --progress --human-readable --compress --archive --hard-links --one-file-system'
# Mac OS X and HFS+ Enhancements # Mac OS X and HFS+ Enhancements
# http://help.bombich.com/kb/overview/credits#opensource # http://www.bombich.com/rsync.html
if [[ "$OSTYPE" == darwin* ]] && grep -q 'file-flags' <(rsync --help 2>&1); then if [[ "$OSTYPE" == darwin* ]] && grep -q 'file-flags' <(rsync --help 2>&1); then
_rsync_cmd="${_rsync_cmd} --crtimes --acls --xattrs --fileflags --protect-decmpfs --force-change" _rsync_cmd="${_rsync_cmd} --crtimes --acls --xattrs --fileflags --protect-decmpfs --force-change"
fi fi

View File

@ -8,7 +8,7 @@ Local Gem Installation
---------------------- ----------------------
When a Ruby version manager is not detected, local gems are installed in 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 RVM
--- ---
@ -20,33 +20,15 @@ home directory.
Since RVM is loaded into the shell and is known to override shell commands, it Since RVM is loaded into the shell and is known to override shell commands, it
may conflict with shell scripts. 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`.
rbenv rbenv
----- -----
An alternative RVM is to use [rbenv][3], which allows for switching between An alternative RVM is to use [rbenv][3], which allows for switching between multiple,
multiple, isolated Ruby installations in the home directory. 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 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. 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 Bundler
------- -------
@ -77,7 +59,6 @@ Aliases
Functions 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` exposes information about the Ruby environment via the
`$ruby_info` associative array. `$ruby_info` associative array.
@ -105,4 +86,4 @@ Authors
[3]: https://github.com/sstephenson/rbenv [3]: https://github.com/sstephenson/rbenv
[4]: http://gembundler.com [4]: http://gembundler.com
[5]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/sorin-ionescu/prezto/issues
[6]: https://github.com/postmodern/chruby

View File

@ -1,19 +0,0 @@
#
# Displays the path to the Ruby application root directory.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
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

View File

@ -18,8 +18,6 @@ if (( $+commands[rvm-prompt] )); then
version="$(rvm-prompt)" version="$(rvm-prompt)"
elif (( $+commands[rbenv] )); then elif (( $+commands[rbenv] )); then
version="$(rbenv version-name)" version="$(rbenv version-name)"
elif (( $+commands[ruby] )); then
version="${${$(ruby --version)[(w)1,(w)2]}/ /-}"
fi fi
# Format version. # Format version.

View File

@ -17,22 +17,18 @@ if [[ -s "$HOME/.rvm/scripts/rvm" ]]; then
# Load manually installed rbenv into the shell session. # Load manually installed rbenv into the shell session.
elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
path=("$HOME/.rbenv/bin" $path) path=("$HOME/.rbenv/bin" $path)
eval "$(rbenv init - --no-rehash zsh)" eval "$(rbenv init - zsh)"
# Load package manager installed rbenv into the shell session. # Load package manager installed rbenv into the shell session.
elif (( $+commands[rbenv] )); then elif (( $+commands[rbenv] )); then
eval "$(rbenv init - --no-rehash zsh)" eval "$(rbenv init - zsh)"
# Load package manager installed chruby into the shell session. # Install local gems according to operating system conventions.
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 else
path=($HOME/.gem/ruby/*/bin(N) $path) if [[ "$OSTYPE" == darwin* ]]; then
export GEM_HOME="$HOME/Library/Ruby/Gems/1.8"
path=("$GEM_HOME/bin" $path)
fi
fi fi
# Return if requirements are not found. # Return if requirements are not found.
@ -50,16 +46,15 @@ alias rb='ruby'
# Bundler # Bundler
if (( $+commands[bundle] )); then if (( $+commands[bundle] )); then
alias rbb='bundle' alias rbb='bundle'
alias rbbe='bundle exec' alias rbbe='rbb exec'
alias rbbi='bundle install --path vendor/bundle' alias rbbi='rbb install --path vendor/bundle'
alias rbbl='bundle list' alias rbbl='rbb list'
alias rbbo='bundle open' alias rbbo='rbb open'
alias rbbp='bundle package' alias rbbp='rbb package'
alias rbbu='bundle update' alias rbbu='rbb update'
alias rbbI='rbbi \ alias rbbI='rbbi \
&& bundle package \ && rbb package \
&& print .bundle >>! .gitignore \ && print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \ && print vendor/bundle >>! .gitignore \
&& print vendor/cache >>! .gitignore' && print vendor/cache >>! .gitignore'
fi fi

View File

@ -10,15 +10,9 @@ Settings
Starts a GNU Screen session automatically when Zsh is launched. Starts a GNU Screen session automatically when Zsh is launched.
To enable this feature when launching Zsh in a local terminal, add the To enable this feature, add the following line to *zpreztorc*:
following line to *zpreztorc*:
zstyle ':prezto:module:screen:auto-start' local 'yes' zstyle ':prezto:module:screen' auto-start 'yes'
To enable this feature when launching Zsh in a SSH connection, add the
following line to *zpreztorc*:
zstyle ':prezto:module:screen:auto-start' remote 'yes'
Aliases Aliases
------- -------
@ -34,7 +28,6 @@ Authors
*The authors of this module should be contacted via the [issue tracker][2].* *The authors of this module should be contacted via the [issue tracker][2].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Georges Discry](https://github.com/gdiscry)
[1]: http://www.gnu.org/software/screen/ [1]: http://www.gnu.org/software/screen/
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -3,7 +3,6 @@
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# Georges Discry <georges@discry.be>
# #
# Return if requirements are not found. # Return if requirements are not found.
@ -15,10 +14,7 @@ fi
# Auto Start # Auto Start
# #
if [[ -z "$STY" && -z "$EMACS" && -z "$VIM" ]] && ( \ if [[ -z "$STY" ]] && zstyle -t ':prezto:module:screen' auto-start; then
( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' remote ) ||
( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' local ) \
); then
session="$( session="$(
screen -list 2> /dev/null \ screen -list 2> /dev/null \
| sed '1d;$d' \ | sed '1d;$d' \

View File

@ -0,0 +1,36 @@
SSH-Agent
=========
Provides for an easier use of [ssh-agent][1].
Settings
--------
### Agent Forwarding
To enable SSH-Agent forwarding, add the following line to *zpreztorc*:
zstyle ':prezto:module:ssh-agent' forwarding 'yes'
### Identities
To load multiple identities, add the following line to *zpreztorc*:
zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github'
Authors
-------
*The authors of this module should be contacted via the [issue tracker][2].*
- [Robby Russell](https://github.com/robbyrussell)
- [Theodore Robert Campbell Jr](https://github.com/trcjr)
- [Joseph M. Reagle Jr.](https://github.com/reagle)
- [Florent Thoumie](https://github.com/flz)
- [Jonas Pfenniger](https://github.com/zimbatm)
- [Gareth Owen](https://github.com/gwjo)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1
[2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -0,0 +1,62 @@
#
# Provides for an easier use of ssh-agent.
#
# Authors:
# Robby Russell <robby@planetargon.com>
# Theodore Robert Campbell Jr <trcjr@stupidfoot.com>
# Joseph M. Reagle Jr. <reagle@mit.edu>
# Florent Thoumie <flz@xbsd.org>
# Jonas Pfenniger <jonas@pfenniger.name>
# gwjo <gowen72@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[ssh-agent] )); then
return 1
fi
# Load dependencies.
pmodload 'helper'
_ssh_agent_env="${HOME}/.ssh/environment-${HOST}"
_ssh_agent_forwarding=
function _ssh-agent-start {
local -a identities
# Start ssh-agent and setup the environment.
rm -f "${_ssh_agent_env}"
ssh-agent > "${_ssh_agent_env}"
chmod 600 "${_ssh_agent_env}"
source "${_ssh_agent_env}" > /dev/null
# Load identities.
zstyle -a ':prezto:module:ssh-agent' identities 'identities'
if (( ${#identities} > 0 )); then
ssh-add "${HOME}/.ssh/${^identities[@]}"
else
ssh-add
fi
}
# Test if agent-forwarding is enabled.
zstyle -b ':prezto:module:ssh-agent' forwarding '_ssh_agent_forwarding'
if is-true "${_ssh_agent_forwarding}" && [[ -n "$SSH_AUTH_SOCK" ]]; then
# Add a nifty symlink for screen/tmux if agent forwarding.
[[ -L "$SSH_AUTH_SOCK" ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen
elif [[ -s "${_ssh_agent_env}" ]]; then
# Source SSH settings, if applicable.
source "${_ssh_agent_env}" > /dev/null
ps -ef | grep "${SSH_AGENT_PID}" | grep -q 'ssh-agent$' || {
_ssh-agent-start;
}
else
_ssh-agent-start;
fi
# Tidy up after ourselves.
unfunction _ssh-agent-start
unset _ssh_agent_{env,forwarding}

View File

@ -1,28 +0,0 @@
SSH
===
Provides for an easier use of [SSH][1] by setting up [ssh-agent][2].
This module is disabled on Mac OS X due to custom Apple SSH support rendering it
unnecessary.
Settings
--------
### Identities
To load multiple identities, add the following line to *zpreztorc*:
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]: http://www.openssh.com
[2]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,51 +0,0 @@
#
# Provides for an easier use of SSH by setting up ssh-agent.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if [[ "$OSTYPE" == darwin* ]] || (( ! $+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:-${TMPDIR:-/tmp}/ssh-agent.env}"
# Set the path to the persistent authentication socket.
_ssh_agent_sock="${TMPDIR:-/tmp}/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 "$USER" -o pid,ucomm | grep -q "${SSH_AGENT_PID} ssh-agent"; then
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
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'
if (( ${#_ssh_identities} > 0 )); then
ssh-add "$_ssh_dir/${^_ssh_identities[@]}" 2> /dev/null
else
ssh-add 2> /dev/null
fi
fi
# Clean up.
unset _ssh_{dir,identities} _ssh_agent_{env,sock}

View File

@ -38,18 +38,6 @@ To enable all highlighters, add the following to *zpreztorc*:
'cursor' \ 'cursor' \
'root' '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 *zpreztorc*:
zstyle ':prezto:module:syntax-highlighting' styles \
'builtin' 'bg=blue' \
'command' 'bg=blue' \
'function' 'bg=blue'
Authors Authors
------- -------

View File

@ -11,19 +11,11 @@ if ! zstyle -t ':prezto:module:syntax-highlighting' color; then
fi fi
# Source module files. # Source module files.
source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1 source "${0:h}/external/zsh-syntax-highlighting.zsh"
# Set highlighters. # Set the highlighters.
zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'
if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets cursor)
fi 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,}

View File

@ -13,33 +13,23 @@ directory, add the following to *zpreztorc*:
zstyle ':prezto:module:terminal' auto-title 'yes' 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.
To format terminal window and tab titles, add the following to *zpreztorc*:
zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
zstyle ':prezto:module:terminal:tab-title' format '%m: %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 Functions
--------- ---------
- `set-tab-title` sets the terminal tab title. - `set-screen-window-title` sets the screen title.
- `set-window-title` sets the terminal or terminal multiplexer window title. - `set-terminal-tab-title` sets the terminal tab title.
- `set-terminal-window-title` sets the terminal window title.
- `set-titles-with-command` sets the screen and terminal titles with
a given command.
- `set-titles-with-path` sets the screen and terminal titles with a given path.
Authors Authors
------- -------
*The authors of this module should be contacted via the [issue tracker][2].* *The authors of this module should be contacted via the [issue tracker][1].*
- [James Cox](https://github.com/imajes)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences [1]: https://github.com/sorin-ionescu/prezto/issues
[2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -2,123 +2,122 @@
# Sets terminal window and tab titles. # Sets terminal window and tab titles.
# #
# Authors: # Authors:
# James Cox <james@imaj.es>
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Return if requirements are not found. # Return if requirements are not found.
if [[ "$TERM" == (dumb|linux|*bsd*) ]]; then if [[ "$TERM" == 'dumb' ]]; then
return 1 return 1
fi fi
# Sets the terminal or terminal multiplexer window title. # Set the GNU Screen window number.
function set-window-title { if [[ -n "$WINDOW" ]]; then
local title_format{,ted} export SCREEN_NO="%B${WINDOW}%b "
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s" else
zformat -f title_formatted "$title_format" "s:$argv" export SCREEN_NO=""
fi
# Sets the GNU Screen title.
function set-screen-window-title {
if [[ "$TERM" == screen* ]]; then if [[ "$TERM" == screen* ]]; then
title_format="\ek%s\e\\" printf "\ek%s\e\\" ${(V)argv}
else
title_format="\e]2;%s\a"
fi fi
}
printf "$title_format" "${(V%)title_formatted}" # Sets the terminal window title.
function set-terminal-window-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]2;%s\a" ${(V)argv}
fi
} }
# Sets the terminal tab title. # Sets the terminal tab title.
function set-tab-title { function set-terminal-tab-title {
local title_format{,ted} if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s" printf "\e]1;%s\a" ${(V)argv}
zformat -f title_formatted "$title_format" "s:$argv" fi
printf "\e]1;%s\a" ${(V%)title_formatted}
} }
# Sets the tab and window titles with a given command. # Sets the tab and window titles with a given command.
function _terminal-set-titles-with-command { function set-titles-with-command {
# Do not set the window and tab titles in Terminal.app because they are not
# reset upon command termination.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
return 1
fi
emulate -L zsh emulate -L zsh
setopt EXTENDED_GLOB setopt EXTENDED_GLOB
# Get the command name that is under job control. # Get the command name that is under job control.
if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then if [[ "${1[(w)1]}" == (fg|%*)(\;|) ]]; then
# Get the job name, and, if missing, set it to the default %+. # Get the job name, and, if missing, set it to the default %+.
local job_name="${${2[(wr)%*(\;|)]}:-%+}" local job_name="${${1[(wr)%*(\;|)]}:-%+}"
# Make a local copy for use in the subshell. # Make a local copy for use in the subshell.
local -A jobtexts_from_parent_shell local -A jobtexts_from_parent_shell
jobtexts_from_parent_shell=(${(kv)jobtexts}) jobtexts_from_parent_shell=(${(kv)jobtexts})
jobs "$job_name" 2>/dev/null > >( jobs $job_name 2>/dev/null > >(
read index discarded read index discarded
# The index is already surrounded by brackets: [1]. # The index is already surrounded by brackets: [1].
_terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}" set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
) )
else else
# Set the command name, or in the case of sudo or ssh, the next command. # Set the command name, or in the case of sudo or ssh, the next command.
local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}" local cmd=${${1[(wr)^(*=*|sudo|ssh|-*)]}:t}
local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}" local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH unset MATCH
set-window-title "$cmd" if [[ "$TERM" == screen* ]]; then
set-tab-title "$truncated_cmd" set-screen-window-title "$truncated_cmd"
else
set-terminal-window-title "$cmd"
set-terminal-tab-title "$truncated_cmd"
fi
fi fi
} }
# Sets the tab and window titles with a given path. # Sets the tab and window titles with a given path.
function _terminal-set-titles-with-path { function set-titles-with-path {
emulate -L zsh emulate -L zsh
setopt EXTENDED_GLOB setopt EXTENDED_GLOB
local absolute_path="${${1:a}:-$PWD}" local absolute_path="${${1:a}:-$PWD}"
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
set-window-title "$abbreviated_path" if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
set-tab-title "$truncated_path" printf '\e]7;%s\a' "file://$HOST${absolute_path// /%20}"
else
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
if [[ "$TERM" == screen* ]]; then
set-screen-window-title "$truncated_path"
else
set-terminal-window-title "$abbreviated_path"
set-terminal-tab-title "$truncated_path"
fi
fi
} }
# Sets the Terminal.app proxy icon. # Don't override precmd/preexec; append to hook array.
function _terminal-set-terminal-app-proxy-icon {
printf '\e]7;%s\a' "file://$HOST${${1:-$PWD}// /%20}"
}
# Do not override precmd/preexec; append to the hook array.
autoload -Uz add-zsh-hook autoload -Uz add-zsh-hook
# Set up the Apple Terminal. # Sets the tab and window titles before the prompt is displayed.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \ function set-titles-precmd {
&& ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] ) if zstyle -t ':prezto:module:terminal' auto-title; then
then set-titles-with-path
# Sets the Terminal.app current working directory before the prompt is fi
# displayed. }
add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon add-zsh-hook precmd set-titles-precmd
# Unsets the Terminal.app current working directory when a terminal # Sets the tab and window titles before command execution.
# multiplexer or remote connection is started since it can no longer be function set-titles-preexec {
# updated, and it becomes confusing when the directory displayed in the title if zstyle -t ':prezto:module:terminal' auto-title; then
# bar is no longer synchronized with real current working directory. set-titles-with-command "$2"
function _terminal-unset-terminal-app-proxy-icon { fi
if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then }
_terminal-set-terminal-app-proxy-icon ' ' add-zsh-hook preexec set-titles-preexec
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 \
&& ( ! [[ -n "$STY" || -n "$TMUX" ]] )
then
# Sets the tab and window titles before the prompt is displayed.
add-zsh-hook precmd _terminal-set-titles-with-path
# Sets the tab and window titles before command execution.
add-zsh-hook preexec _terminal-set-titles-with-command
fi

View File

@ -10,29 +10,16 @@ Settings
Starts a tmux session automatically when Zsh is launched. Starts a tmux session automatically when Zsh is launched.
To enable this feature when launching Zsh in a local terminal, add the To enable this feature, add the following line to *zpreztorc*:
following line to *zpreztorc*:
zstyle ':prezto:module:tmux:auto-start' local 'yes' zstyle ':prezto:module:tmux' auto-start 'yes'
To enable this feature when launching Zsh in a SSH connection, add the It will create a background session named _#Prezto_ and attach every new shell
following line to *zpreztorc*: to it.
zstyle ':prezto:module:tmux:auto-start' remote 'yes' To avoid keeping open sessions, this module sets `destroy-unattached off` on
the background session and `destroy-unattached on` on every other session
In both cases, it will create a background session named _prezto_ if the tmux (global setting).
server is not started.
You can change the default session name with:
zstyle ':prezto:module:tmux' session 'YOUR DEFAULT 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*:
set-option -g destroy-unattached [on | off]
Aliases Aliases
------- -------
@ -48,7 +35,7 @@ connected** to be displayed, which can be fixed by installing
[reattach-to-user-namespace][3], available in [Homebrew][4], and adding the [reattach-to-user-namespace][3], available in [Homebrew][4], and adding the
following to *tmux.conf*: following to *tmux.conf*:
set-option -g default-command "reattach-to-user-namespace -l $SHELL -l" set-option -g default-command "reattach-to-user-namespace -l $SHELL -l"
Furthermore, tmux is known to cause **kernel panics** on Mac OS X. A discussion Furthermore, tmux is known to cause **kernel panics** on Mac OS X. A discussion
about this and Prezto has already been [opened][2]. about this and Prezto has already been [opened][2].
@ -60,8 +47,6 @@ Authors
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Colin Hebert](https://github.com/ColinHebert) - [Colin Hebert](https://github.com/ColinHebert)
- [Georges Discry](https://github.com/gdiscry)
- [Xavier Cambar](https://github.com/xcambar)
[1]: http://tmux.sourceforge.net [1]: http://tmux.sourceforge.net
[2]: https://github.com/sorin-ionescu/prezto/issues/62 [2]: https://github.com/sorin-ionescu/prezto/issues/62

View File

@ -4,8 +4,6 @@
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# Colin Hebert <hebert.colin@gmail.com> # Colin Hebert <hebert.colin@gmail.com>
# Georges Discry <georges@discry.be>
# Xavier Cambar <xcambar@gmail.com>
# #
# Return if requirements are not found. # Return if requirements are not found.
@ -17,22 +15,25 @@ fi
# Auto Start # Auto Start
# #
if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ if [[ -z "$TMUX" ]] && zstyle -t ':prezto:module:tmux' auto-start; then
( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) || tmux_session='#Prezto'
( [[ -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 -t "$tmux_session" 2> /dev/null; then
if ! tmux has-session 2> /dev/null; then # Disable the destruction of unattached sessions globally.
zstyle -s ':prezto:module:tmux' session 'session' || session='prezto' tmux set-option -g destroy-unattached off &> /dev/null
tmux \
new-session -d -s "$session" \; \ # Create a new session.
set-option -t "$session" destroy-unattached off &> /dev/null tmux new-session -d -s "$tmux_session"
# Disable the destruction of the new, unattached session.
tmux set-option -t "$tmux_session" destroy-unattached off &> /dev/null
# Enable the destruction of unattached sessions globally to prevent
# an abundance of open, detached sessions.
tmux set-option -g destroy-unattached on &> /dev/null
fi fi
# Attach to the 'prezto' session or to the last session used. exec tmux new-session -t "$tmux_session"
exec tmux attach-session
fi fi
# #

View File

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

View File

@ -34,7 +34,6 @@ alias mysql='nocorrect mysql'
alias rm='nocorrect rm' alias rm='nocorrect rm'
# Disable globbing. # Disable globbing.
alias bower='noglob bower'
alias fc='noglob fc' alias fc='noglob fc'
alias find='noglob find' alias find='noglob find'
alias ftp='noglob ftp' alias ftp='noglob ftp'
@ -105,17 +104,17 @@ alias sl='ls' # I often screw this up.
# Mac OS X Everywhere # Mac OS X Everywhere
if [[ "$OSTYPE" == darwin* ]]; then if [[ "$OSTYPE" == darwin* ]]; then
alias o='open' alias o='open'
elif [[ "$OSTYPE" == cygwin* ]]; then alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
else else
alias o='xdg-open' alias o='xdg-open'
alias get='wget --continue --progress=bar --timestamping'
if (( $+commands[xclip] )); then if (( $+commands[xclip] )); then
alias pbcopy='xclip -selection clipboard -in' alias pbcopy='xclip -selection clipboard -in'
alias pbpaste='xclip -selection clipboard -out' alias pbpaste='xclip -selection clipboard -out'
elif (( $+commands[xsel] )); then fi
if (( $+commands[xsel] )); then
alias pbcopy='xsel --clipboard --input' alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output' alias pbpaste='xsel --clipboard --output'
fi fi
@ -124,13 +123,6 @@ fi
alias pbc='pbcopy' alias pbc='pbcopy'
alias pbp='pbpaste' alias pbp='pbpaste'
# File Download
if (( $+commands[curl] )); then
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
elif (( $+commands[wget] )); then
alias get='wget --continue --progress=bar --timestamping'
fi
# Resource Usage # Resource Usage
alias df='df -kh' alias df='df -kh'
alias du='du -kh' alias du='du -kh'

View File

@ -38,7 +38,7 @@ small as possible and should only define environment variables.
### zprofile ### zprofile
This file is similar to zlogin, but it is sourced before zshrc. It was added This file is similar to zlogin, but it is sourced before zshrc. It was added
for [KornShell][1] fans. See the description of zlogin below for what it may for [KornShell][1] fans. See the description of zlogin bellow for what it may
contain. contain.
zprofile and zlogin are not meant to be used concurrently but can be done so. zprofile and zlogin are not meant to be used concurrently but can be done so.
@ -48,7 +48,7 @@ zprofile and zlogin are not meant to be used concurrently but can be done so.
This file is sourced by interactive shells. It should define aliases, This file is sourced by interactive shells. It should define aliases,
functions, shell options, and key bindings. functions, shell options, and key bindings.
### zpreztorc ## zpreztorc
This file configures Prezto. This file configures Prezto.

View File

@ -9,9 +9,16 @@
{ {
# Compile the completion dump to increase startup speed. # Compile the completion dump to increase startup speed.
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump" zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then if [[ "$zcompdump" -nt "${zcompdump}.zwc" || ! -s "${zcompdump}.zwc" ]]; then
zcompile "$zcompdump" zcompile "$zcompdump"
fi fi
# Set environment variables for launchd processes.
if [[ "$OSTYPE" == darwin* ]]; then
for env_var in PATH MANPATH; do
launchctl setenv "$env_var" "${(P)env_var}"
done
fi
} &! } &!
# Print a random, hopefully interesting, adage. # Print a random, hopefully interesting, adage.

View File

@ -10,7 +10,7 @@
# #
# Set case-sensitivity for completion, history lookup, etc. # Set case-sensitivity for completion, history lookup, etc.
# zstyle ':prezto:*:*' case-sensitive 'yes' zstyle ':prezto:*:*' case-sensitive 'no'
# Color output (auto set to 'no' on dumb terminals). # Color output (auto set to 'no' on dumb terminals).
zstyle ':prezto:*:*' color 'yes' zstyle ':prezto:*:*' color 'yes'
@ -39,7 +39,7 @@ zstyle ':prezto:load' pmodule \
# #
# Set the key mapping style to 'emacs' or 'vi'. # Set the key mapping style to 'emacs' or 'vi'.
zstyle ':prezto:module:editor' key-bindings 'emacs' zstyle ':prezto:module:editor' keymap 'emacs'
# Auto convert .... to ../.. # Auto convert .... to ../..
# zstyle ':prezto:module:editor' dot-expansion 'yes' # zstyle ':prezto:module:editor' dot-expansion 'yes'
@ -58,19 +58,6 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# Set the command prefix on non-GNU systems. # Set the command prefix on non-GNU systems.
# zstyle ':prezto:module:gnu-utility' prefix 'g' # zstyle ':prezto:module:gnu-utility' prefix 'g'
#
# 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 ''
# #
# Pacman # Pacman
# #
@ -87,68 +74,54 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# Auto set to 'off' on dumb terminals. # Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'sorin' zstyle ':prezto:module:prompt' theme 'sorin'
#
# Ruby
#
# Auto switch the Ruby version on directory change.
# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
# #
# Screen # Screen
# #
# Auto start a session when Zsh is launched in a local terminal. # Auto start a session when Zsh is launched.
# zstyle ':prezto:module:screen:auto-start' local 'yes' # zstyle ':prezto:module:screen' auto-start 'yes'
# Auto start a session when Zsh is launched in a SSH connection.
# zstyle ':prezto:module:screen:auto-start' remote 'yes'
# #
# SSH # GPG-Agent
# #
# Set the SSH identities to load into the agent. # Enable SSH-Agent protocol emulation.
# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github' # zstyle ':prezto:module:gpg-agent' ssh-support 'yes'
#
# SSH-Agent
#
# Enable ssh-agent forwarding.
# zstyle ':prezto:module:ssh-agent' forwarding 'yes'
# Set ssh-agent identities to load.
# zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github'
# #
# Syntax Highlighting # Syntax Highlighting
# #
# Set syntax highlighters. # Set syntax highlighters.
# By default, only the main highlighter is enabled. # By default main, brackets, and cursor are enabled.
# zstyle ':prezto:module:syntax-highlighting' highlighters \ # zstyle ':prezto:module:syntax-highlighting' highlighters \
# 'main' \ # 'main' \
# 'brackets' \ # 'brackets' \
# 'pattern' \ # 'pattern' \
# 'cursor' \ # 'cursor' \
# 'root' # 'root'
#
# Set syntax highlighting styles.
# zstyle ':prezto:module:syntax-highlighting' styles \
# 'builtin' 'bg=blue' \
# 'command' 'bg=blue' \
# 'function' 'bg=blue'
# #
# Terminal # Terminal
# #
# Auto set the tab and window titles. # Auto set the tab and window titles.
# zstyle ':prezto:module:terminal' auto-title 'yes' 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'
# #
# Tmux # Tmux
# #
# Auto start a session when Zsh is launched in a local terminal. # Auto start a session when Zsh is launched.
# zstyle ':prezto:module:tmux:auto-start' local 'yes' # zstyle ':prezto:module:tmux' auto-start 'yes'
# Auto start a session when Zsh is launched in a SSH connection.
# zstyle ':prezto:module:tmux:auto-start' remote 'yes'

View File

@ -5,73 +5,3 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
#
# Browser
#
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# 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 the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
fi
TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi

View File

@ -5,8 +5,96 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Ensure that a non-login, non-interactive shell has a defined environment. #
if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then # Browser
source "${ZDOTDIR:-$HOME}/.zprofile" #
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
eval "$(locale)"
fi
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Paths
#
typeset -gU cdpath fpath mailpath manpath path
typeset -gUT INFOPATH infopath
# Set the the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that info searches for manuals.
infopath=(
/usr/local/share/info
/usr/share/info
$infopath
)
# Set the list of directories that man searches for manuals.
manpath=(
/usr/local/share/man
/usr/share/man
$manpath
)
for path_file in /etc/manpaths.d/*(.N); do
manpath+=($(<$path_file))
done
unset path_file
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
/usr/{bin,sbin}
/{bin,sbin}
$path
)
for path_file in /etc/paths.d/*(.N); do
path+=($(<$path_file))
done
unset path_file
#
# Temporary Files
#
if [[ -d "$TMPDIR" ]]; then
export TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi
fi fi