Merge remote-tracking branch 'upstream/master'
(2013) Week 21 | Wed, May 22 @ 05:11:28 PM Simply pulling in newest changes...
This commit is contained in:
commit
187f82c339
17 changed files with 418 additions and 303 deletions
|
@ -26,7 +26,7 @@ installed:
|
|||
- *.lzma* requires `unlzma`.
|
||||
- *.Z* requires `uncompress`.
|
||||
- *.zip* requires `unzip`.
|
||||
- *.rar* requires `unrar`.
|
||||
- *.rar* requires `unrar` or `rar`.
|
||||
- *.7z* requires `7za`.
|
||||
- *.deb* requires `ar`, `tar`.
|
||||
|
||||
|
|
|
@ -53,7 +53,9 @@ while (( $# > 0 )); do
|
|||
(*.lzma) unlzma "$1" ;;
|
||||
(*.Z) uncompress "$1" ;;
|
||||
(*.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" ;;
|
||||
(*.deb)
|
||||
mkdir -p "$extract_dir/control"
|
||||
|
|
|
@ -41,7 +41,9 @@ while (( $# > 0 )); do
|
|||
|| lzcat "$1" | tar x${verbose:+v}f - ;;
|
||||
(*.tar) tar t${verbose:+v}f "$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" ;;
|
||||
(*)
|
||||
print "$0: cannot list: $1" >&2
|
||||
|
|
63
modules/editor/README.md
Normal file
63
modules/editor/README.md
Normal file
|
@ -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:
|
||||
# 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.
|
||||
if [[ "$TERM" == 'dumb' ]]; then
|
||||
|
|
|
@ -4,12 +4,22 @@
|
|||
# Authors: Sebastian Wiesner <lunaryorn@gmail.com>
|
||||
#
|
||||
|
||||
# Enable Carton
|
||||
if [[ -d "$HOME/.carton" ]]; then
|
||||
path=($HOME/.carton/bin $path)
|
||||
|
||||
alias cai='carton install'
|
||||
alias cau='carton update'
|
||||
alias caI='carton init'
|
||||
alias cae='carton exec'
|
||||
# Return if requirements are not found.
|
||||
if [[ ! -d "$HOME/.carton" ]]; then
|
||||
return 1
|
||||
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.
|
||||
- `gcR` removes the *HEAD* commit.
|
||||
- `gcs` displays various types of objects.
|
||||
- `gcl` displays lost commits.
|
||||
- `gcl` lists lost commits.
|
||||
|
||||
### Conflict
|
||||
|
||||
|
@ -97,8 +97,8 @@ Aliases
|
|||
|
||||
- `gg` displays lines matching a pattern.
|
||||
- `ggi` displays lines matching a pattern ignoring case.
|
||||
- `ggl` displays files matching a pattern.
|
||||
- `ggL` displays files are not matching a pattern.
|
||||
- `ggl` lists files matching a pattern.
|
||||
- `ggL` lists files that are not matching a pattern.
|
||||
- `ggv` displays lines not matching a pattern.
|
||||
- `ggw` displays lines matching a pattern at word boundary.
|
||||
|
||||
|
@ -155,12 +155,12 @@ Aliases
|
|||
### Remote
|
||||
|
||||
- `gR` manages tracked repositories.
|
||||
- `gRl` displays remote names and URLs.
|
||||
- `gRl` lists remote names and their URLs.
|
||||
- `gRa` adds a new remote.
|
||||
- `gRx` removes a remote.
|
||||
- `gRm` renames a remote.
|
||||
- `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.
|
||||
- `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.
|
||||
- `gsx` drops a stashed state.
|
||||
- `gsX` drops all the stashed states.
|
||||
- `gsd` lists dropped stashed states.
|
||||
- `gsl` lists stashed states.
|
||||
- `gsL` displays the changes recorded in the stash as a diff between the
|
||||
stashed state and its original parent.
|
||||
- `gsL` lists dropped stashed states.
|
||||
- `gsd` displays changes between the stash and its original parent.
|
||||
- `gsp` removes and applies a single stashed state from the stash list.
|
||||
- `gsr` recovers a given stashed state.
|
||||
- `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
|
||||
| --------- | :---------: | ---------------------------------------------------
|
||||
| action | %s | Special action name
|
||||
| added | %a | Added files count
|
||||
| ahead | %A | Commits ahead of remote count
|
||||
| behind | %B | Commits behind of remote count
|
||||
| branch | %b | Branch name
|
||||
| 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
|
||||
| deleted | %d | Deleted files count
|
||||
| dirty | %D | Dirty files count
|
||||
| modified | %m | Modified files count
|
||||
| position | %p | Commits from the nearest tag count
|
||||
| remote | %R | Remote name
|
||||
| renamed | %r | Renamed files count
|
||||
| stashed | %S | Stashed states count
|
||||
| unmerged | %U | Unmerged files count
|
||||
| untracked | %u | Untracked files count
|
||||
|
||||
|
|
|
@ -138,7 +138,7 @@ alias gRa='git remote add'
|
|||
alias gRx='git remote rm'
|
||||
alias gRm='git remote rename'
|
||||
alias gRu='git remote update'
|
||||
alias gRc='git remote prune'
|
||||
alias gRp='git remote prune'
|
||||
alias gRs='git remote show'
|
||||
alias gRb='git-hub-browse'
|
||||
|
||||
|
@ -147,9 +147,9 @@ alias gs='git stash'
|
|||
alias gsa='git stash apply'
|
||||
alias gsx='git stash drop'
|
||||
alias gsX='git-stash-clear-interactive'
|
||||
alias gsd='git-stash-dropped'
|
||||
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 gsr='git-stash-recover'
|
||||
alias gss='git stash save --include-untracked'
|
||||
|
|
|
@ -89,31 +89,6 @@ function _git-action {
|
|||
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.
|
||||
function git-info {
|
||||
# Extended globbing is needed to parse repository status.
|
||||
|
@ -126,13 +101,13 @@ function git-info {
|
|||
local added=0
|
||||
local added_format
|
||||
local added_formatted
|
||||
local ahead
|
||||
local ahead=0
|
||||
local ahead_and_behind
|
||||
local ahead_and_behind_cmd
|
||||
local ahead_format
|
||||
local ahead_formatted
|
||||
local ahead_or_behind
|
||||
local behind
|
||||
local behind=0
|
||||
local behind_format
|
||||
local behind_formatted
|
||||
local branch
|
||||
|
@ -151,9 +126,11 @@ function git-info {
|
|||
local dirty_format
|
||||
local dirty_formatted
|
||||
local ignore_submodules
|
||||
local indexed=0
|
||||
local indexed_format
|
||||
local indexed_formatted
|
||||
local -A info_formats
|
||||
local info_format
|
||||
local line_number=0
|
||||
local modified=0
|
||||
local modified_format
|
||||
local modified_formatted
|
||||
|
@ -171,6 +148,10 @@ function git-info {
|
|||
local stashed_format
|
||||
local stashed_formatted
|
||||
local status_cmd
|
||||
local status_mode
|
||||
local unindexed=0
|
||||
local unindexed_format
|
||||
local unindexed_formatted
|
||||
local unmerged=0
|
||||
local unmerged_format
|
||||
local unmerged_formatted
|
||||
|
@ -203,135 +184,206 @@ function git-info {
|
|||
return 1
|
||||
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.
|
||||
zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules'
|
||||
if [[ -n "$ignore_submodules" ]]; then
|
||||
status_cmd+=" --ignore-submodules=${ignore_submodules}"
|
||||
fi
|
||||
|
||||
# Format commit.
|
||||
commit="$(git rev-parse HEAD 2> /dev/null)"
|
||||
if [[ -n "$commit" ]]; then
|
||||
zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
|
||||
zformat -f commit_formatted "$commit_format" "c:$commit"
|
||||
zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
|
||||
if [[ -n "$commit_format" ]]; then
|
||||
commit="$(git rev-parse HEAD 2> /dev/null)"
|
||||
if [[ -n "$commit" ]]; then
|
||||
zformat -f commit_formatted "$commit_format" "c:$commit"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Format stashed.
|
||||
if [[ -f "$(git-dir)/refs/stash" ]]; then
|
||||
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}')"
|
||||
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
|
||||
zformat -f stashed_formatted "$stashed_format" "S:$stashed"
|
||||
if [[ -n "$stashed" ]]; then
|
||||
zformat -f stashed_formatted "$stashed_format" "S:$stashed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Format action.
|
||||
action="$(_git-action)"
|
||||
if [[ -n "$action" ]]; then
|
||||
zstyle -s ':prezto:module:git:info:action' format 'action_format'
|
||||
zformat -f action_formatted "$action_format" "s:$action"
|
||||
zstyle -s ':prezto:module:git:info:action' format 'action_format'
|
||||
if [[ -n "$action_format" ]]; then
|
||||
action="$(_git-action)"
|
||||
if [[ -n "$action" ]]; then
|
||||
zformat -f action_formatted "$action_format" "s:$action"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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)
|
||||
# Get the branch.
|
||||
branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}"
|
||||
|
||||
# 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"
|
||||
fi
|
||||
|
||||
# Format remote.
|
||||
remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
|
||||
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.
|
||||
# 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
|
||||
zstyle -s ':prezto:module:git:info:position' format 'position_format'
|
||||
zformat -f position_formatted "$position_format" "p:$position"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Format added.
|
||||
if (( $added > 0 )); then
|
||||
zstyle -s ':prezto:module:git:info:added' format 'added_format'
|
||||
zformat -f added_formatted "$added_format" "a:$added_format"
|
||||
# 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/}"
|
||||
if [[ -n "$remote" ]]; then
|
||||
zformat -f remote_formatted "$remote_format" "R:$remote"
|
||||
fi
|
||||
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_format"
|
||||
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.
|
||||
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
|
||||
|
||||
# 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
|
||||
# Get status type.
|
||||
if ! zstyle -t ':prezto:module:git:info' verbose; then
|
||||
# Format indexed.
|
||||
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 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 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 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
|
||||
# Format untracked.
|
||||
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
|
||||
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
|
||||
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
|
||||
|
||||
(( 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_format"
|
||||
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_format"
|
||||
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
|
||||
|
||||
# Format dirty and clean.
|
||||
if (( $dirty > 0 )); then
|
||||
if (( dirty > 0 )); then
|
||||
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
|
||||
zformat -f dirty_formatted "$dirty_format" "D:$dirty"
|
||||
else
|
||||
|
@ -342,27 +394,28 @@ function git-info {
|
|||
zstyle -a ':prezto:module:git:info:keys' format 'info_formats'
|
||||
for info_format in ${(k)info_formats}; do
|
||||
zformat -f REPLY "$info_formats[$info_format]" \
|
||||
"a:$added_formatted" \
|
||||
"A:$ahead_formatted" \
|
||||
"B:$behind_formatted" \
|
||||
"D:$dirty_formatted" \
|
||||
"R:$remote_formatted" \
|
||||
"S:$stashed_formatted" \
|
||||
"U:$unmerged_formatted" \
|
||||
"a:$added_formatted" \
|
||||
"b:$branch_formatted" \
|
||||
"C:$clean_formatted" \
|
||||
"c:$commit_formatted" \
|
||||
"d:$deleted_formatted" \
|
||||
"D:$dirty_formatted" \
|
||||
"i:$indexed_formatted" \
|
||||
"I:$unindexed_formatted" \
|
||||
"m:$modified_formatted" \
|
||||
"p:$position_formatted" \
|
||||
"R:$remote_formatted" \
|
||||
"r:$renamed_formatted" \
|
||||
"s:$action_formatted" \
|
||||
"S:$stashed_formatted" \
|
||||
"U:$unmerged_formatted" \
|
||||
"u:$untracked_formatted"
|
||||
git_info[$info_format]="$REPLY"
|
||||
done
|
||||
|
||||
unset REPLY
|
||||
unset _git_info_executing
|
||||
|
||||
return 0
|
||||
}
|
||||
|
|
|
@ -3,6 +3,17 @@ 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
|
||||
-------
|
||||
|
||||
|
|
|
@ -10,19 +10,32 @@ if (( ! $+commands[gpg-agent] )); then
|
|||
return 1
|
||||
fi
|
||||
|
||||
# Set the default path to the gpg-agent-info file.
|
||||
_gpg_agent_info="$HOME/.gpg-agent-info"
|
||||
# Set the default paths to gpg-agent files.
|
||||
_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
|
||||
_gpg_agent_env="$TMPDIR/gpg-agent.env"
|
||||
|
||||
# Start gpg-agent if not started.
|
||||
ps -U "$USER" -o ucomm | grep -q gpg-agent \
|
||||
|| gpg-agent --daemon >! "$_gpg_agent_info"
|
||||
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
|
||||
|
||||
# Export environment variables.
|
||||
# Inform gpg-agent of the current TTY for user prompts.
|
||||
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.
|
||||
unset _gpg_agent_info
|
||||
unset _gpg_agent_{conf,env}
|
||||
|
||||
# Disable GUI prompts inside SSH.
|
||||
if [[ -n "$SSH_CONNECTION" ]]; then
|
||||
|
|
|
@ -46,10 +46,14 @@ function prompt_sorin_setup {
|
|||
# Add hook for calling git-info before each command.
|
||||
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: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: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:added' format ' %%B%F{green}✚%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}
|
||||
|
28
modules/ssh/README.md
Normal file
28
modules/ssh/README.md
Normal file
|
@ -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
|
||||
|
48
modules/ssh/init.zsh
Normal file
48
modules/ssh/init.zsh
Normal file
|
@ -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'
|
||||
|
||||
#
|
||||
# SSH-Agent
|
||||
# SSH
|
||||
#
|
||||
|
||||
# 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'
|
||||
# Set the SSH identities to load into the agent.
|
||||
# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github'
|
||||
|
||||
#
|
||||
# Syntax Highlighting
|
||||
|
|
Loading…
Add table
Reference in a new issue