1
0
Fork 0

Merge remote-tracking branch 'upstream/master'

(2013) Week 21 | Wed, May 22 @ 05:11:28 PM
Simply pulling in newest changes...
pull/666/head
vrtcl1dvoshun 12 years ago
commit 187f82c339

@ -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`. - *.rar* requires `unrar` or `rar`.
- *.7z* requires `7za`. - *.7z* requires `7za`.
- *.deb* requires `ar`, `tar`. - *.deb* requires `ar`, `tar`.

@ -53,7 +53,9 @@ 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 e -ad "$1" ;; (*.rar) unrar &> /dev/null \
&& 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"

@ -41,7 +41,9 @@ 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 ${${verbose:+v}:-l} "$1" ;; (*.rar) unrar &> /dev/null \
&& 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

@ -0,0 +1,63 @@
Editor
======
Sets key bindings.
Settings
--------
### Key bindings
To enable key bindings, add the following to *zpreztorc*, and replace 'map' with
'emacs' or 'vi'.
zstyle ':prezto:module:editor' keymap 'map'
### 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

@ -4,42 +4,6 @@
# 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

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

@ -64,7 +64,7 @@ Aliases
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` displays lost commits. - `gcl` lists lost commits.
### Conflict ### Conflict
@ -97,8 +97,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` displays files matching a pattern. - `ggl` lists files matching a pattern.
- `ggL` displays files are not matching a pattern. - `ggL` lists files that 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.
@ -155,12 +155,12 @@ Aliases
### Remote ### Remote
- `gR` manages tracked repositories. - `gR` manages tracked repositories.
- `gRl` displays remote names and URLs. - `gRl` lists remote names and their 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.
- `gRc` deletes all stale remote tracking branches. - `gRp` prunes 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,10 +170,9 @@ 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` displays the changes recorded in the stash as a diff between the - `gsL` lists dropped stashed states.
stashed state and its original parent. - `gsd` displays changes between the stash 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.
@ -253,19 +252,38 @@ setting a style is as follows.
| 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

@ -138,7 +138,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 gRc='git remote prune' alias gRp='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 +147,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 show --patch --stat' alias gsL='git-stash-dropped'
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'

@ -89,31 +89,6 @@ 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.
@ -126,13 +101,13 @@ function git-info {
local added=0 local added=0
local added_format local added_format
local added_formatted local added_formatted
local ahead local ahead=0
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 local behind=0
local behind_format local behind_format
local behind_formatted local behind_formatted
local branch local branch
@ -151,9 +126,11 @@ 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
@ -171,6 +148,10 @@ 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
@ -203,135 +184,206 @@ 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'
if [[ -n "$commit_format" ]]; then
commit="$(git rev-parse HEAD 2> /dev/null)" commit="$(git rev-parse HEAD 2> /dev/null)"
if [[ -n "$commit" ]]; then if [[ -n "$commit" ]]; then
zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
zformat -f commit_formatted "$commit_format" "c:$commit" zformat -f commit_formatted "$commit_format" "c:$commit"
fi fi
fi
# Format stashed. # Format stashed.
if [[ -f "$(git-dir)/refs/stash" ]]; then
stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')"
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
if [[ -n "$stashed_format" && -f "$(git-dir)/refs/stash" ]]; then
stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')"
if [[ -n "$stashed" ]]; then
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'
if [[ -n "$action_format" ]]; then
action="$(_git-action)" action="$(_git-action)"
if [[ -n "$action" ]]; then if [[ -n "$action" ]]; then
zstyle -s ':prezto:module:git:info:action' format 'action_format'
zformat -f action_formatted "$action_format" "s:$action" zformat -f action_formatted "$action_format" "s:$action"
fi fi
fi
# Get current status. # Get the branch.
while IFS=$'\n' read line; do branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}"
# 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.
branch="${$(git symbolic-ref -q HEAD)##refs/heads/}"
if [[ -n "$branch" ]]; then
zstyle -s ':prezto:module:git:info:branch' format 'branch_format' zstyle -s ':prezto:module:git:info:branch' format 'branch_format'
if [[ -n "$branch" && -n "$branch_format" ]]; then
zformat -f branch_formatted "$branch_format" "b:$branch" zformat -f branch_formatted "$branch_format" "b:$branch"
fi
# Format position.
zstyle -s ':prezto:module:git:info:position' format 'position_format'
if [[ -z "$branch" && -n "$position_format" ]]; then
position="$(git describe --contains --all HEAD 2> /dev/null)"
if [[ -n "$position" ]]; then
zformat -f position_formatted "$position_format" "p:$position"
fi
fi
# Format remote. # Format remote.
zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
if [[ -n "$branch" && -n "$remote_format" ]]; then
# Gets the remote name.
remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
if [[ -n "$remote" ]]; then if [[ -n "$remote" ]]; then
zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
zformat -f remote_formatted "$remote_format" "R:$remote" zformat -f remote_formatted "$remote_format" "R:$remote"
fi
fi
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'
zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then
# Gets the commit difference counts between local and remote.
ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}'
# Get ahead and behind counts. # Get ahead and behind counts.
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
# Format ahead. # Format ahead.
if [[ -n "$ahead_format" ]]; then
ahead="$ahead_and_behind[(w)1]" ahead="$ahead_and_behind[(w)1]"
if (( $ahead > 0 )); then if (( ahead > 0 )); then
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'
zformat -f ahead_formatted "$ahead_format" "A:$ahead" zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi fi
fi
# Format behind. # Format behind.
if [[ -n "$behind_format" ]]; then
behind="$ahead_and_behind[(w)2]" behind="$ahead_and_behind[(w)2]"
if (( $behind > 0 )); then if (( behind > 0 )); then
zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
zformat -f behind_formatted "$behind_format" "B:$behind" zformat -f behind_formatted "$behind_format" "B:$behind"
fi fi
fi fi
else fi
# Format position.
position="$(git describe --contains --all HEAD 2> /dev/null)" # Get status type.
if [[ -n "$position" ]]; then if ! zstyle -t ':prezto:module:git:info' verbose; then
zstyle -s ':prezto:module:git:info:position' format 'position_format' # Format indexed.
zformat -f position_formatted "$position_format" "p:$position" zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format'
if [[ -n "$indexed_format" ]]; then
((
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.
zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format'
if [[ -n "$unindexed_format" ]]; then
((
unindexed+=$(
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.
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
if [[ -n "$untracked_format" ]]; then
((
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
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. # Format added.
if (( $added > 0 )); then if (( added > 0 )); then
zstyle -s ':prezto:module:git:info:added' format 'added_format' zstyle -s ':prezto:module:git:info:added' format 'added_format'
zformat -f added_formatted "$added_format" "a:$added_format" zformat -f added_formatted "$added_format" "a:$added_format"
fi fi
# Format deleted. # Format deleted.
if (( $deleted > 0 )); then if (( deleted > 0 )); then
zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'
zformat -f deleted_formatted "$deleted_format" "d:$deleted_format" zformat -f deleted_formatted "$deleted_format" "d:$deleted_format"
fi fi
# Format modified. # Format modified.
if (( $modified > 0 )); then if (( modified > 0 )); then
zstyle -s ':prezto:module:git:info:modified' format 'modified_format' zstyle -s ':prezto:module:git:info:modified' format 'modified_format'
zformat -f modified_formatted "$modified_format" "m:$modified" zformat -f modified_formatted "$modified_format" "m:$modified"
fi fi
# Format renamed. # Format renamed.
if (( $renamed > 0 )); then if (( renamed > 0 )); then
zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'
zformat -f renamed_formatted "$renamed_format" "r:$renamed" zformat -f renamed_formatted "$renamed_format" "r:$renamed"
fi fi
# Format unmerged. # Format unmerged.
if (( $unmerged > 0 )); then if (( unmerged > 0 )); then
zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'
zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged"
fi fi
# Format untracked. # Format untracked.
if (( $untracked > 0 )); then if (( untracked > 0 )); then
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
zformat -f untracked_formatted "$untracked_format" "u:$untracked" 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
@ -342,27 +394,28 @@ 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
} }

@ -3,6 +3,17 @@ GPG
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. 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 Authors
------- -------

@ -10,19 +10,32 @@ if (( ! $+commands[gpg-agent] )); then
return 1 return 1
fi fi
# Set the default path to the gpg-agent-info file. # Set the default paths to gpg-agent files.
_gpg_agent_info="$HOME/.gpg-agent-info" _gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
_gpg_agent_env="$TMPDIR/gpg-agent.env"
# Start gpg-agent if not started. # Start gpg-agent if not started.
ps -U "$USER" -o ucomm | grep -q gpg-agent \ if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
|| gpg-agent --daemon >! "$_gpg_agent_info" eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
else
# Export environment variables.
source "$_gpg_agent_env" 2> /dev/null
fi
# Export environment variables. # Inform gpg-agent of the current TTY for user prompts.
export GPG_TTY="$(tty)" export GPG_TTY="$(tty)"
source "$_gpg_agent_info"
# 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. # Clean up.
unset _gpg_agent_info unset _gpg_agent_{conf,env}
# Disable GUI prompts inside SSH. # Disable GUI prompts inside SSH.
if [[ -n "$SSH_CONNECTION" ]]; then if [[ -n "$SSH_CONNECTION" ]]; then

@ -46,10 +46,14 @@ 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'

@ -1,36 +0,0 @@
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

@ -1,62 +0,0 @@
#
# 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}

@ -0,0 +1,28 @@
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

@ -0,0 +1,48 @@
#
# 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/ssh-agent.env}"
# Set the path to the persistent authentication socket.
_ssh_agent_sock="$TMPDIR/ssh-agent.sock"
# Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
else
# Export environment variables.
source "$_ssh_agent_env" 2> /dev/null
fi
# Load identities.
if ssh-add -l 2>&1 | grep 'The agent has no identities'; then
zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities'
if (( ${#identities} > 0 )); then
ssh-add "$_ssh_dir/${^_ssh_identities[@]}"
else
ssh-add
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
# Clean up.
unset _ssh_{dir,identities} _ssh_agent_{env,sock}

@ -95,14 +95,11 @@ zstyle ':prezto:module:prompt' theme 'sorin'
# zstyle ':prezto:module:screen' auto-start 'yes' # zstyle ':prezto:module:screen' auto-start 'yes'
# #
# SSH-Agent # SSH
# #
# Enable ssh-agent forwarding. # Set the SSH identities to load into the agent.
# zstyle ':prezto:module:ssh-agent' forwarding 'yes' # zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github'
# Set ssh-agent identities to load.
# zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github'
# #
# Syntax Highlighting # Syntax Highlighting

Loading…
Cancel
Save