1
0
Fork 0

Merge pull request #3 from sorin-ionescu/master

Refresh master
pull/1537/head
H-Lo 7 years ago committed by GitHub
commit c7faca6939
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,9 @@
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
[{.gitattributes,.gitignore,.gitmodules}]
indent_style = tab

@ -0,0 +1,24 @@
<!-- Please check if a similar issue already exists or has been closed before before opening your issue. -->
### Description
<!-- Provide a general description of the bug or feature -->
### Expected behavior
<!-- What you expected to happen -->
### Actual behavior
<!-- What actually happened -->
### Steps to Reproduce
1. [First Step]
2. [Second Step]
3. [and so on...]
### Versions
- Prezto commit:
- ZSH version:
- OS information:

@ -0,0 +1,10 @@
Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md)
before submitting your pull request.
Fixes #
## Proposed Changes
-
-
-

1
.gitignore vendored

@ -1,3 +1,4 @@
*.zwc
*.zwc.old
modules/*/cache.zsh
contrib

15
.gitmodules vendored

@ -1,3 +1,6 @@
[submodule "modules/autosuggestions/external"]
path = modules/autosuggestions/external
url = https://github.com/zsh-users/zsh-autosuggestions.git
[submodule "modules/history-substring-search/external"]
path = modules/history-substring-search/external
url = https://github.com/zsh-users/zsh-history-substring-search.git
@ -16,6 +19,12 @@
[submodule "modules/prompt/functions/pure"]
path = modules/prompt/external/pure
url = https://github.com/sindresorhus/pure.git
[submodule "modules/autosuggestions/external"]
path = modules/autosuggestions/external
url = https://github.com/tarruda/zsh-autosuggestions
[submodule "modules/fasd/external"]
path = modules/fasd/external
url = https://github.com/clvv/fasd.git
[submodule "modules/prompt/external/async"]
path = modules/prompt/external/async
url = https://github.com/mafredri/zsh-async.git
[submodule "modules/prompt/external/powerlevel9k"]
path = modules/prompt/external/powerlevel9k
url = https://github.com/bhilburn/powerlevel9k.git

@ -23,6 +23,39 @@ improve its performance, do not hesitate to fork and send pull requests.
- Open a [pull request][4] that relates to but one subject with a clear
title and description in grammatically correct, complete sentences.
#### Code Style
This project follows the [Google Shell Style Guide][5] when possible. However,
there are a number of additional things to keep in mind.
- Local variables should be used whenever possible.
- Prefer `zstyle` over environment variables for configuration.
- Prefer (( ... )) over [[ ... ]] for arithmetic expression.
- Use the function keyword to define functions.
- The 80 character hard limit can be waved for readability.
#### Using an Alternative zprezto Directory
To work on zprezto without messing with your current configuration:
```sh
mkdir devel-zprezto
cd devel-zprezto
git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto
ZDOTDIR=$(pwd)
echo "Your development ZDOTDIR is $ZDOTDIR"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```
Then to start zsh in this development environment you will run:
```sh
ZDOTDIR=/path/to/devel-zprezto zsh
```
#### Modules
- A *README.md* must be present.
@ -32,10 +65,11 @@ improve its performance, do not hesitate to fork and send pull requests.
#### Themes
- A screenshots section must be present in the file header.
- The pull request description must have [embedded screenshots][5].
- The pull request description must have [embedded screenshots][6].
[1]: https://github.com/sorin-ionescu/prezto/contributors
[2]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[4]: https://help.github.com/articles/using-pull-requests
[5]: http://daringfireball.net/projects/markdown/syntax#img
[5]: https://google.github.io/styleguide/shell.xml
[6]: http://daringfireball.net/projects/markdown/syntax#img

@ -0,0 +1,20 @@
Copyright (c) 2009-2011 Robby Russell and contributors
Copyright (c) 2011-2017 Sorin Ionescu and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE

@ -9,27 +9,41 @@ Installation
------------
Prezto will work with any recent release of Zsh, but the minimum required
version is 4.3.17.
version is 4.3.11.
1. Launch Zsh:
```console
zsh
```
2. Clone the repository:
```console
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
```
3. Create a new Zsh configuration by copying the Zsh configuration files
provided:
```sh
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
```
Note: If you already have any of the given config files, ln will error. In
simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
the bottom of your `.zshrc` to load prezto but keep your config intact. For
more complicated setups, it is recommended that you back up your original
configs and replace them with the provided prezto runcoms.
4. Set Zsh as your default shell:
```console
chsh -s /bin/zsh
```
5. Open a new Zsh terminal window or tab.
@ -42,9 +56,18 @@ window or tab.
Updating
--------
Pull the latest changes and update submodules.
Run `zprezto-update` to automatically check if there is an update to zprezto.
If there are no file conflicts, zprezto and its submodules will be
automatically updated. If there are conflicts you will instructed to go into
the `$ZPREZTODIR` directory and resolve them yourself.
To pull the latest changes and update submodules manually:
git pull && git submodule update --init --recursive
```console
cd $ZPREZTODIR
git pull
git submodule update --init --recursive
```
Usage
-----
@ -67,6 +90,19 @@ accompanying README files to learn of what is available.
![sorin theme][2]
### External Modules
1. By default modules will be loaded from */modules* and */contrib*.
2. Additional module directories can be added to the
`:prezto:load:pmodule-dirs` setting in *~/.zpreztorc*.
Note that module names need to be unique or they will cause an error when
loading.
```console
zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
```
Customization
-------------
@ -83,29 +119,7 @@ The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.
License
-------
(The MIT License)
Copyright (c) 2009-2011 Robby Russell and contributors.
Copyright (c) 2011-2015 Sorin Ionescu and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This project is licensed under the MIT License.
[1]: http://www.zsh.org
[2]: http://i.imgur.com/nrGV6pg.png "sorin theme"

@ -10,13 +10,61 @@
#
# Check for the minimum supported version.
min_zsh_version='4.3.17'
min_zsh_version='4.3.11'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
printf "prezto: old shell detected, minimum required: %s\n" "$min_zsh_version" >&2
return 1
fi
unset min_zsh_version
# zprezto convenience updater
# The function is surrounded by ( ) instead of { } so it starts in a subshell
# and won't affect the environment of the calling shell
function zprezto-update {
(
function cannot-fast-forward {
local STATUS="$1"
[[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}"
printf "Unable to fast-forward the changes. You can fix this by "
printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}"
printf "to manually pull and possibly merge in changes\n"
}
cd -q -- "${ZPREZTODIR}" || return 7
local orig_branch="$(git symbolic-ref HEAD 2> /dev/null | cut -d '/' -f 3)"
if [[ "$orig_branch" == "master" ]]; then
git fetch || return "$?"
local UPSTREAM=$(git rev-parse '@{u}')
local LOCAL=$(git rev-parse HEAD)
local REMOTE=$(git rev-parse "$UPSTREAM")
local BASE=$(git merge-base HEAD "$UPSTREAM")
if [[ $LOCAL == $REMOTE ]]; then
printf "There are no updates.\n"
return 0
elif [[ $LOCAL == $BASE ]]; then
printf "There is an update available. Trying to pull.\n\n"
if git pull --ff-only; then
printf "Syncing submodules\n"
git submodule update --recursive
return $?
else
cannot-fast-forward
return 1
fi
elif [[ $REMOTE == $BASE ]]; then
cannot-fast-forward "Commits in master that aren't in upstream."
return 1
else
cannot-fast-forward "Upstream and local have diverged."
return 1
fi
else
printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}"
printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}"
return 1
fi
return 1
)
}
#
# Module Loader
#
@ -24,14 +72,44 @@ unset min_zsh_version
# Loads Prezto modules.
function pmodload {
local -a pmodules
local -a pmodule_dirs
local -a locations
local pmodule
local pfunction_glob='^([_.]*|prompt_*_setup|README*)(-.N:t)'
local pmodule_location
local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)'
# Load in any additional directories and warn if they don't exist
zstyle -a ':prezto:load' pmodule-dirs 'user_pmodule_dirs'
for user_dir in "$user_pmodule_dirs[@]"; do
if [[ ! -d "$user_dir" ]]; then
echo "$0: Missing user module dir: $user_dir"
fi
done
pmodule_dirs=("$ZPREZTODIR/modules" "$ZPREZTODIR/contrib" "$user_pmodule_dirs[@]")
# $argv is overridden in the anonymous function.
pmodules=("$argv[@]")
# Load Prezto modules.
for pmodule in "$pmodules[@]"; do
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
continue
else
locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)})
if (( ${#locations} > 1 )); then
print "$0: conflicting module locations: $locations"
continue
elif (( ${#locations} < 1 )); then
print "$0: no such module: $pmodule"
continue
fi
# Grab the full path to this module
pmodule_location=${locations[1]}
# Add functions to $fpath.
fpath=(${pmodules:+${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions(/FN)} $fpath)
fpath=(${pmodule_location}/functions(/FN) $fpath)
function {
local pfunction
@ -40,28 +118,22 @@ function pmodload {
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Load Prezto functions.
for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions/$~pfunction_glob; do
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
autoload -Uz "$pfunction"
done
}
# Load Prezto modules.
for pmodule in "$pmodules[@]"; do
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
continue
elif [[ ! -d "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule" ]]; then
print "$0: no such module: $pmodule" >&2
continue
else
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh"
if [[ -s "${pmodule_location}/init.zsh" ]]; then
source "${pmodule_location}/init.zsh"
elif [[ -s "${pmodule_location}/${pmodule}.plugin.zsh" ]]; then
source "${pmodule_location}/${pmodule}.plugin.zsh"
fi
if (( $? == 0 )); then
zstyle ":prezto:module:$pmodule" loaded 'yes'
else
# Remove the $fpath entry.
fpath[(r)${ZDOTDIR:-$HOME}/.zprezto/modules/${pmodule}/functions]=()
fpath[(r)${pmodule_location}/functions]=()
function {
local pfunction
@ -71,7 +143,7 @@ function pmodload {
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Unload Prezto functions.
for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/functions/$~pfunction_glob; do
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
unfunction "$pfunction"
done
}
@ -86,6 +158,12 @@ function pmodload {
# Prezto Initialization
#
# This finds the directory prezto is installed to so plugin managers don't need
# to rely on dirty hacks to force prezto into a directory. Additionally, it
# needs to be done here because inside the pmodload function ${0:h} evaluates to
# the current directory of the shell rather than the prezto dir.
ZPREZTODIR=${0:h}
# Source the Prezto configuration file.
if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then
source "${ZDOTDIR:-$HOME}/.zpreztorc"

@ -3,7 +3,9 @@ Modules
Load modules in *zpreztorc*. The order matters.
```sh
zstyle ':prezto:load' pmodule 'environment' 'terminal'
```
Archive
-------

@ -1,11 +1,12 @@
Archive
=======
Provides functions to list and extract archives.
Provides functions to create, list, and extract archives.
Functions
---------
- `archive` creates an archive based on the provided archive name.
- `lsarchive` lists the contents of one or more archives.
- `unarchive` extracts the contents of one or more archives.
@ -15,8 +16,8 @@ Supported Formats
The following archive formats are supported when the required utilities are
installed:
- *.tar.gz*, *.tgz* require `tar`.
- *.tar.bz2*, *.tbz* require `tar`.
- *.tar.gz*, *.tgz* require `tar` (optionally `pigz`).
- *.tar.bz2*, *.tbz* require `tar` (optionally `pbzip2`).
- *.tar.xz*, *.txz* require `tar` with *xz* support.
- *.tar.zma*, *.tlz* require `tar` with *lzma* support.
- *.tar* requires `tar`.
@ -25,16 +26,27 @@ installed:
- *.xz* requires `unxz`.
- *.lzma* requires `unlzma`.
- *.Z* requires `uncompress`.
- *.zip* requires `unzip`.
- *.rar* requires `unrar` or `rar`.
- *.zip*, *.jar* requires `unzip`.
- *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
- *.7z* requires `7za`.
- *.deb* requires `ar`, `tar`.
Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them over
their traditional counterparts, `gzip` and `bzip2` respectively, to take full advantage
of all available CPU cores for compression.
Alternatives
------------
Specifically on macOS, [The Unarchiver][1] provides a similar command line tool
which doesn't depend on a number of other programs being installed.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Matt Hamilton](https://github.com/Eriner)
[1]: https://github.com/sorin-ionescu/prezto/issues
[1]: https://theunarchiver.com/command-line

@ -10,4 +10,4 @@
_arguments \
'(-v --verbose)'{-v,--remove}'[verbose archive listing]' \
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z)(-.)'" && return 0
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z)(-.)'" && return 0

@ -10,4 +10,4 @@
_arguments \
'(-r --remove)'{-r,--remove}'[remove archive]' \
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z|deb)(-.)'" && return 0

@ -0,0 +1,71 @@
#!/usr/bin/env zsh
#
# Creates archive file
#
# Authors:
# Matt Hamilton <m@tthamilton.com>
#
# function archive {
local archive_name dir_to_archive _gzip_bin _bzip2_bin
if (( $# != 2 )); then
cat >&2 <<EOF
usage: $0 [archive_name.zip] [/path/to/include/into/archive]
Where 'archive.zip' uses any of the following extensions:
.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tar, .zip, .rar, .7z
There is no '-v' switch; all operations are verbose.
EOF
return 1
fi
# we are quitting (above) if there are not exactly 2 vars,
# so we don't need any argc check here.
# strip the path, just in case one is provided for some reason
archive_name="${1:t}"
# use absolute paths, and follow symlinks
dir_to_archive="${2}"
# if the directory doesn't exist, quit. Nothing to archive
if [[ ! -e "${dir_to_archive}" ]]; then
print "$0: file or directory not valid: ${dir_to_archive}" >&2
return 1
fi
# here, we check for dropin/multi-threaded replacements
# this should eventually be moved to modules/archive/init.zsh
# as a global alias
if (( $+commands[pigz] )); then
_gzip_bin='pigz'
else
_gzip_bin='gzip'
fi
if (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2'
else
_bzip2_bin='bzip2'
fi
case "${archive_name}" in
(*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${dir_to_archive}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${dir_to_archive}" ;;
(*.tar.xz|*.txz) tar -cvJf "${archive_name}" "${dir_to_archive}" ;;
(*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${dir_to_archive}" ;;
(*.tar) tar -cvf "${archive_name}" "${dir_to_archive}" ;;
(*.zip|*.jar) zip -r "${archive_name}" "${dir_to_archive}" ;;
(*.rar) rar a "${archive_name}" "${dir_to_archive}" ;;
(*.7z) 7za a "${archive_name}" "${dir_to_archive}" ;;
(*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;;
(*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;;
(*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;;
(*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;;
(*) print "\nunknown archive type for archive: ${archive_name}" ;;
esac
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function lsarchive {
local verbose
if (( $# == 0 )); then
@ -40,10 +42,12 @@ while (( $# > 0 )); do
&& tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip) unzip -l${verbose:+v} "$1" ;;
(*.rar) unrar &> /dev/null \
&& unrar ${${verbose:+v}:-l} "$1" \
|| rar ${${verbose:+v}:-l} "$1" ;;
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
(*.rar) ( (( $+commands[unrar] )) \
&& unrar ${${verbose:+v}:-l} "$1" ) \
|| ( (( $+commands[rar] )) \
&& rar ${${verbose:+v}:-l} "$1" ) \
|| lsar ${verbose:+-l} "$1" ;;
(*.7z) 7za l "$1" ;;
(*)
print "$0: cannot list: $1" >&2
@ -53,3 +57,5 @@ while (( $# > 0 )); do
shift
done
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function unarchive {
local remove_archive
local success
local file_name
@ -54,10 +56,12 @@ while (( $# > 0 )); do
(*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;;
(*.zip) unzip "$1" -d $extract_dir ;;
(*.rar) unrar &> /dev/null \
&& unrar x -ad "$1" \
|| rar x -ad "$1" ;;
(*.zip|*.jar) unzip "$1" -d $extract_dir ;;
(*.rar) ( (( $+commands[unrar] )) \
&& unrar x -ad "$1" ) \
|| ( (( $+commands[rar] )) \
&& rar x -ad "$1" ) \
|| unar -d "$1" ;;
(*.7z) 7za x "$1" ;;
(*.deb)
mkdir -p "$extract_dir/control"
@ -78,3 +82,5 @@ while (( $# > 0 )); do
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift
done
# }

@ -11,11 +11,12 @@ Integrates [zsh-autosuggestions][1] into Prezto, which implements the
of a previously entered command and Zsh suggests commands as you type based on
history and completions.
If this module is used in conjuncture with the *syntax-highlighting* module, it
must be loaded **after** it.
If this module is used in conjunction with the *syntax-highlighting* module,
this module must be loaded **after** the *syntax-highlighting* module.
If this module is used in conjuncture with the *history-substring-search*
module, it must be loaded **after** it.
If this module is used in conjunction with the *history-substring-search*
module, this module must be loaded **after** the *history-substring-search*
module.
Contributors
------------
@ -35,11 +36,15 @@ positive results.
To enable highlighting for this module only, add the following line to
*zpreztorc*:
```sh
zstyle ':prezto:module:autosuggestions' color 'yes'
```
To set the query found color, add the following line to *zpreztorc*:
```sh
zstyle ':prezto:module:autosuggestions:color' found ''
```
Authors
-------

@ -1 +1 @@
Subproject commit f0a745576ff69fa608421ee7214d4cd77b43e62f
Subproject commit 15931f04ffac91a2f9a1a044b6b3ee4050751064

@ -1,15 +1,23 @@
Command-Not-Found
=================
Displays installation information for not found commands by loading the
[command-not-found][1] tool on Debian-based and Arch Linux-based distributions.
When you try to use a command that is not available locally, searches
the package manager for a package offering that command and suggests
the proper install command.
Debian-based and Arch Linux-based distributions use the [`command-not-found`][1] tool.
macOS uses Homebrew's [`command-not-found` clone][2]. Note that you also need to [follow the instructions to tap the `command-not-found` homebrew repository][3].
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][4].*
- [Joseph Booker](https://github.com/sargas)
[1]: https://code.launchpad.net/command-not-found
[2]: https://github.com/sorin-ionescu/prezto/issues
[2]: https://github.com/Homebrew/homebrew-command-not-found
[3]: https://github.com/Homebrew/homebrew-command-not-found#install
[4]: https://github.com/sorin-ionescu/prezto/issues

@ -3,6 +3,7 @@
#
# Authors:
# Joseph Jon Booker <joe@neoturbine.net>
# Indrajit Raychaudhuri <irc+code@indrajit.com>
#
# Load command-not-found on Debian-based distributions.
@ -11,6 +12,9 @@ if [[ -s '/etc/zsh_command_not_found' ]]; then
# 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'
# Load command-not-found on Mac OS X when homebrew tap is configured.
elif (( $+commands[brew] )) && brew command command-not-found-init > /dev/null 2>&1; then
eval "$(brew command-not-found-init)"
# Return if requirements are not found.
else
return 1

@ -6,6 +6,23 @@ the [zsh-completions][1] project.
This module must be loaded **after** the *utility* module.
Settings
--------
### Ignore */etc/hosts* Entries
To ignore certain entries from static */etc/hosts* for host completion, add the
following lines in *zpreztorc* with the IP addresses of the hosts as they
appear in */etc/hosts*. Both IP address and the corresponding hostname will be
ignored during host completion. However, some of the entries ignored from
*/etc/hosts* still might appear during completion because of their presence in
*ssh* configuration or history).
```sh
zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
'0.0.0.0' '127.0.0.1'
```
Contributors
------------

@ -1 +1 @@
Subproject commit 3a2bb8781d32d05d1bf05deeeb476beb651e8272
Subproject commit 2a30b05a5cf724a2d1c4c140c302dbf93f6aa6f6

@ -14,9 +14,6 @@ fi
# Add zsh-completions to $fpath.
fpath=("${0:h}/external/src" $fpath)
# Load and initialize the completion system ignoring insecure directories.
autoload -Uz compinit && compinit -i
#
# Options
#
@ -27,9 +24,22 @@ setopt PATH_DIRS # Perform path search even on command names with slas
setopt AUTO_MENU # Show completion menu on a successive tab press.
setopt AUTO_LIST # Automatically list choices on ambiguous completion.
setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash.
setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
# Load and initialize the completion system ignoring insecure directories with a
# cache time of 20 hours, so it should almost always regenerate the first time a
# shell is opened each day.
autoload -Uz compinit
_comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20))
if (( $#_comp_files )); then
compinit -i -C
else
compinit -i
fi
unset _comp_files
#
# Styles
#
@ -66,8 +76,9 @@ zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
# Increase the number of errors based on the length of the typed word.
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
# Increase the number of errors based on the length of the typed word. But make
# sure to cap (at 7) the max-errors to avoid hanging.
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)'
# Don't complete unavailable commands.
zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
@ -91,10 +102,13 @@ zstyle ':completion:*:history-words' menu yes
# Environmental Variables
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
# Populate hostname completion.
# Populate hostname completion. But allow ignoring custom entries from static
# */etc/hosts* which might be uninteresting.
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'
zstyle -e ':completion:*:hosts' hosts 'reply=(
${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*}
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
)'
@ -139,9 +153,8 @@ if [[ -s "$HOME/.mutt/aliases" ]]; then
fi
# SSH/SCP/RSYNC
zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:(ssh|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:*:ssh:*' tag-order '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|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'

@ -0,0 +1,190 @@
# ZSH Docker Aliases
Defines [Docker][1] aliases and functions.
## Aliases
### Docker
- `dk` is short for `docker`
- `dka` Attach to a running container
- `dkb` Build an image from a Dockerfile
- `dkd` Inspect changes on a container's filesystem
- `dkdf` Show docker filesystem usage
- `dke` Run a command in a running container
- `dkE` Run an interactive command in a running container
- `dkh` Show the history of an image
- `dki` List images
- `dkin` Return low-level information on a container, image or task
- `dkk` Kill a running container
- `dkl` Fetch the logs of a container
- `dkli` Log in to a Docker registry
- `dklo` Log out from a Docker registry
- `dkls` is alias for `dkps`
- `dkp` Pause all processes within one or more containers<Paste>
- `dkP` Unpause all processes within one or more containers
- `dkpl` Pull an image or a repository from a registry
- `dkph` Push an image or a repository to a registry
- `dkps` List containers
- `dkpsa` List all containers (default lists just running)
- `dkr` Run a command in a new container
- `dkR` Run an interactive command in a new container and automatically remove the container when it exits
- `dkRe` like `dkR` and set entry point to `/bin/bash`
- `dkrm` Remove one or more containers
- `dkrmi` Remove one or more images
- `dkrmC` Clean up exited containers
- `dkrmI` Clean up dangling images
- `dkrmV` Clean up unused volumes ( Docker >= 1.9 )
- `dkrn` Rename a container
- `dks` Start one or more stopped containers
- `dkS` Restart a container
- `dkss` Display a live stream of container(s) resource usage statistics
- `dksv` Save one or more images to a tar archive (streamed to STDOUT by default)
- `dkt` Tag an image into a repository
- `dktop` Display the running processes of a container
- `dkup` Update configuration of one or more containers
- `dkV` Manage Docker volumes
- `dkv` Show the Docker version information
- `dkw` Block until a container stops, then print its exit code<Paste>
- `dkx` Stop a running container
#### container (C)
- `dkC` Manage containers
- `dkCa` Attach to a running container
- `dkCcp` Copy files/folders between a container and the local filesystem
- `dkCd` Inspect changes on a container's filesystem
- `dkCe` Run a command in a running container
- `dkCin` Display detailed information on one or more containers
- `dkCk` Kill one or more running containers
- `dkCl` Fetch the logs of a container
- `dkCls` List containers
- `dkCp` Pause all processes within one or more containers
- `dkCpr` Remove all stopped containers
- `dkCrn` Rename a container
- `dkCS` Restart one or more containers
- `dkCrm` Remove one or more containers
- `dkCr` Run a command in a new container
- `dkCR` Run an interactive command in a new container and automatically remove the container when it exits
- `dkCRe` like `dkCR` and set entry point to `/bin/bash`
- `dkCs` Start one or more stopped containers
- `dkCss` Display a live stream of container(s) resource usage statistics
- `dkCx` Stop one or more running containers
- `dkCtop` Display the running processes of a container
- `dkCP` Unpause all processes within one or more containers
- `dkCup` Update configuration of one or more containers
- `dkCw` Block until one or more containers stop, then print their exit codes
#### image (I)
- `dkI` Manage images
- `dkIb` Build an image from a Dockerfile
- `dkIh` Show the history of an image
- `dkIim` Import the contents from a tarball to create a filesystem image
- `dkIin` Display detailed information on one or more images
- `dkIls` List images
- `dkIpr` Remove unused images
- `dkIpl` Pull an image or a repository from a registry
- `dkIph` Push an image or a repository to a registry
- `dkIrm` Remove one or more images
- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by default)
- `dkIt` Tag an image into a repository
#### volume (V)
- `dkV` Manage volumes
- `dkVin` Display detailed information on one or more volumes
- `dkVls` List volumes
- `dkVpr` Remove all unused volumes
- `dkVrm` Remove one or more volumes
#### network (N)
- `dkN` Manage networks
- `dkNs` Connect a container to a network
- `dkNx` Disconnects a container from a network
- `dkNin` Displays detailed information on a network
- `dkNls` Lists all the networks created by the user
- `dkNpr` Remove all unused networks
- `dkNrm` Deletes one or more networks
#### system (Y)
- `dkY` Manage Docker
- `dkYdf` Show docker filesystem usage
- `dkYpr` Remove unused data
#### stack (K)
- `dkK` Manage Docker stacks
- `dkKls` List stacks
- `dkKps` List the tasks in the stack
- `dkKrm` Remove the stack
#### swarm (W)
- `dkW` Manage Docker Swarm
### Docker Machine
- `dkm` is short for `docker-machine`
- `dkma` Get or set the active machine
- `dkmcp` Copy files between machines
- `dkmd` Set up the default machine ; alowing you to use `dkme` without arguments
- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to toggle to staging)
- `dkmin` Inspect information about a machine
- `dkmip` Get the IP address of a machine
- `dkmk` Kill a machine
- `dkmls` List machines
- `dkmpr` Re-provision existing machines
- `dkmps` is alias for `dkmls`
- `dkmrg` Regenerate TLS Certificates for a machine
- `dkmrm` Remove a machine
- `dkms` Start a machine
- `dkmsh` Log into or run a command on a machine with SSH
- `dkmst` Get the status of a machine
- `dkmS` Restart a machine
- `dkmu` Get the URL of a machine
- `dkmup` Upgrade a machine to the latest version of Docker
- `dkmV` Show the Docker Machine version or a machine docker version
- `dkmx` Stop a machine
### Docker Compose
- `dkc` is short for `docker-compose`
- `dkcb` Build or rebuild services
- `dkcB` Build or rebuild services and do not use cache when building the image
- `dkcd` Stop and remove containers, networks, images, and volumes
- `dkce` Execute a command in a running container
- `dkck` Kill containers
- `dkcl` View output from containers
- `dkcls` is alias for `dkcps`
- `dkcp` Pause services
- `dkcP` Unpause services
- `dkcpl` Pull service images
- `dkcph` Push service images
- `dkcps` List containers
- `dkcr` Run a one-off command
- `dkcR` Run a one-off command and remove container after run.
- `dkcrm` Remove stopped containers
- `dkcs` Start services
- `dkcsc` Set number of containers for a service
- `dkcS` Restart services
- `dkcu` Create and start containers
- `dkcU` Create and start containers in detached mode:
Run containers in the background, print new container names
- `dkcV` Show the Docker-Compose version information
- `dkcx` Stop services
## Support
If you're having problems, use the [Prezto issue tracker][2].
## Acknowledgements
This module is a copy of [akarzim/zsh-docker-aliases][3] by [François Vantomme][4] (MIT License).
[1]: https://www.docker.com/
[2]: https://github.com/zsh-users/prezto/issues
[3]: https://github.com/akarzim/zsh-docker-aliases
[4]: https://github.com/akarzim

@ -0,0 +1,177 @@
#
# Defines Docker aliases.
#
# Author:
# François Vantomme <akarzim@gmail.com>
#
#
# Aliases
#
# Docker
alias dk='docker'
alias dka='docker attach'
alias dkb='docker build'
alias dkd='docker diff'
alias dkdf='docker system df'
alias dke='docker exec'
alias dkE='docker exec -it'
alias dkh='docker history'
alias dki='docker images'
alias dkin='docker inspect'
alias dkim='docker import'
alias dkk='docker kill'
alias dkl='docker logs'
alias dkli='docker login'
alias dklo='docker logout'
alias dkls='docker ps'
alias dkp='docker pause'
alias dkP='docker unpause'
alias dkpl='docker pull'
alias dkph='docker push'
alias dkps='docker ps'
alias dkpsa='docker ps -a'
alias dkr='docker run'
alias dkR='docker run -it --rm'
alias dkRe='docker run -it --rm --entrypoint /bin/bash'
alias dkRM='docker system prune'
alias dkrm='docker rm'
alias dkrmi='docker rmi'
alias dkrn='docker rename'
alias dks='docker start'
alias dkS='docker restart'
alias dkss='docker stats'
alias dksv='docker save'
alias dkt='docker tag'
alias dktop='docker top'
alias dkup='docker update'
alias dkV='docker volume'
alias dkv='docker version'
alias dkw='docker wait'
alias dkx='docker stop'
## Container (C)
alias dkC='docker container'
alias dkCa='docker container attach'
alias dkCcp='docker container cp'
alias dkCd='docker container diff'
alias dkCe='docker container exec'
alias dkCin='docker container inspect'
alias dkCk='docker container kill'
alias dkCl='docker container logs'
alias dkCls='docker container ls'
alias dkCp='docker container pause'
alias dkCpr='docker container prune'
alias dkCrn='docker container rename'
alias dkCS='docker container restart'
alias dkCrm='docker container rm'
alias dkCr='docker container run'
alias dkCR='docker container run -it --rm'
alias dkCRe='docker container run -it --rm --entrypoint /bin/bash'
alias dkCs='docker container start'
alias dkCss='docker container stats'
alias dkCx='docker container stop'
alias dkCtop='docker container top'
alias dkCP='docker container unpause'
alias dkCup='docker container update'
alias dkCw='docker container wait'
## Image (I)
alias dkI='docker image'
alias dkIb='docker image build'
alias dkIh='docker image history'
alias dkIim='docker image import'
alias dkIin='docker image inspect'
alias dkIls='docker image ls'
alias dkIpr='docker image prune'
alias dkIpl='docker image pull'
alias dkIph='docker image push'
alias dkIrm='docker image rm'
alias dkIsv='docker image save'
alias dkIt='docker image tag'
## Volume (V)
alias dkV='docker volume'
alias dkVin='docker volume inspect'
alias dkVls='docker volume ls'
alias dkVpr='docker volume prune'
alias dkVrm='docker volume rm'
## Network (N)
alias dkN='docker network'
alias dkNs='docker network connect'
alias dkNx='docker network disconnect'
alias dkNin='docker network inspect'
alias dkNls='docker network ls'
alias dkNpr='docker network prune'
alias dkNrm='docker network rm'
## System (Y)
alias dkY='docker system'
alias dkYdf='docker system df'
alias dkYpr='docker system prune'
## Stack (K)
alias dkK='docker stack'
alias dkKls='docker stack ls'
alias dkKps='docker stack ps'
alias dkKrm='docker stack rm'
## Swarm (W)
alias dkW='docker swarm'
## CleanUp (rm)
# Clean up exited containers (docker < 1.13)
alias dkrmC='docker rm $(docker ps -qaf status=exited)'
# Clean up dangling images (docker < 1.13)
alias dkrmI='docker rmi $(docker images -qf dangling=true)'
# Clean up dangling volumes (docker < 1.13)
alias dkrmV='docker volume rm $(docker volume ls -qf dangling=true)'
# Docker Machine (m)
alias dkm='docker-machine'
alias dkma='docker-machine active'
alias dkmcp='docker-machine scp'
alias dkmin='docker-machine inspect'
alias dkmip='docker-machine ip'
alias dkmk='docker-machine kill'
alias dkmls='docker-machine ls'
alias dkmpr='docker-machine provision'
alias dkmps='docker-machine ps'
alias dkmrg='docker-machine regenerate-certs'
alias dkmrm='docker-machine rm'
alias dkms='docker-machine start'
alias dkmsh='docker-machine ssh'
alias dkmst='docker-machine status'
alias dkmS='docker-machine restart'
alias dkmu='docker-machine url'
alias dkmup='docker-machine upgrade'
alias dkmv='docker-machine version'
alias dkmx='docker-machine stop'
# Docker Compose (c)
alias dkc='docker-compose'
alias dkcb='docker-compose build'
alias dkcB='docker-compose build --no-cache'
alias dkcd='docker-compose down'
alias dkce='docker-compose exec'
alias dkck='docker-compose kill'
alias dkcl='docker-compose logs'
alias dkcls='docker-compose ps'
alias dkcp='docker-compose pause'
alias dkcP='docker-compose unpause'
alias dkcpl='docker-compose pull'
alias dkcph='docker-compose push'
alias dkcps='docker-compose ps'
alias dkcr='docker-compose run'
alias dkcR='docker-compose run --rm'
alias dkcrm='docker-compose rm'
alias dkcs='docker-compose start'
alias dkcsc='docker-compose scale'
alias dkcS='docker-compose restart'
alias dkcu='docker-compose up'
alias dkcU='docker-compose up -d'
alias dkcv='docker-compose version'
alias dkcx='docker-compose stop'

@ -0,0 +1,57 @@
#
# Defines Docker aliases.
#
# Author:
# François Vantomme <akarzim@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[docker] )); then
return 1
fi
#
# Functions
#
# Set Docker Machine environment
function dkme {
if (( ! $+commands[docker-machine] )); then
return 1
fi
eval $(docker-machine env $1)
}
# Set Docker Machine default machine
function dkmd {
if (( ! $+commands[docker-machine] )); then
return 1
fi
pushd ~/.docker/machine/machines
if [[ ! -d $1 ]]; then
echo "Docker machine '$1' does not exists. Abort."
popd
return 1
fi
if [[ -L default ]]; then
eval $(rm -f default)
elif [[ -d default ]]; then
echo "A default machine already exists. Abort."
popd
return 1
elif [[ -e default ]]; then
echo "A file named 'default' already exists. Abort."
popd
return 1
fi
eval $(ln -s $1 default)
popd
}
# Source module files.
source "${0:h}/alias.zsh"

@ -6,6 +6,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function deb-clone {
local clone_script="${0}.sh"
local package_list=$(
perl \
@ -23,3 +25,5 @@ rm "$clone_script"
print '#!/bin/sh\n' > "$clone_script"
print "aptitude install ${package_list}\n" >> "$clone_script"
chmod +x "$clone_script"
# }

@ -7,6 +7,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function deb-history {
case "$1" in
(install)
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
@ -34,3 +36,5 @@ Commands:
EOF
;;
esac
# }

@ -6,9 +6,13 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function deb-kbuild {
make-kpkg clean
MAKEFLAGS='' time fakeroot make-kpkg \
--append-to-version '-custom' \
--revision "$(date +"%Y%m%d")" \
kernel_image \
kernel_headers
# }

@ -54,4 +54,4 @@ fi
alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc'
# Removes all kernel images and headers, except for the ones in use.
alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))"'
alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"'

@ -11,14 +11,27 @@ Settings
To enable key bindings, add the following to *zpreztorc*, and replace 'bindings'
with 'emacs' or 'vi'.
```sh
zstyle ':prezto:module:editor' key-bindings 'bindings'
```
### Dot Expansion
To enable the auto conversion of .... to ../.., add the following to
*zpreztorc*.
```sh
zstyle ':prezto:module:editor' dot-expansion 'yes'
```
### PS Context
To enable the prompt context to be set, add the following to your
*zpreztorc*.
```sh
zstyle ':prezto:module:editor' ps-context 'yes'
```
Theming
-------
@ -26,31 +39,56 @@ Theming
To indicate when the editor is in the primary keymap (emacs or viins), add
the following to your `theme_prompt_setup` function.
```sh
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.
```sh
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.
```sh
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.
```sh
zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<'
```
To indicate when the editor is completing, add the following to your
`theme_prompt_setup` function.
```sh
zstyle ':prezto:module:editor:info:completing' format '...'
```
Then add `$editor_info[context]`, where context is *keymap*, *insert*, or
*overwrite*, to `$PROMPT` or `$RPROMPT`.
Convenience Functions
---------------------
### bindkey-all
Provides a function `bindkey-all` which can be useful for checking how all of the
keys are bound. Normal `bindkey` command will only list the keys bound for one
keymap, which is not as useful if you want to grep through the output. The
keymap's names go to stderr so when you grep through bindkey-all's output you
will still see the headings and can tell which keymap each binding goes to.
It will also pass through arguments so you can use bindkey-all to set bindings
for all keymaps at once. If provided arguments it will *not* print out the
names of each of the keymaps, and just run the command for each keymap.
Authors
-------

@ -31,6 +31,8 @@ key_info=(
'Control' '\C-'
'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd'
'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc'
'ControlPageUp' '\e[5;5~'
'ControlPageDown' '\e[6;5~'
'Escape' '\e'
'Meta' '\M-'
'Backspace' "^?"
@ -78,7 +80,15 @@ zle -N edit-command-line
#
# Functions
#
# Runs bindkey but for all of the keymaps. Running it with no arguments will
# print out the mappings for all of the keymaps.
function bindkey-all {
local keymap=''
for keymap in $(bindkey -l); do
[[ "$#" -eq 0 ]] && printf "#### %s\n" "${keymap}" 1>&2
bindkey -M "${keymap}" "$@"
done
}
# Exposes information about the Zsh Line Editor via the $editor_info associative
# array.
function editor-info {
@ -103,11 +113,26 @@ function editor-info {
fi
unset REPLY
zle zle-reset-prompt
}
zle -N editor-info
# Reset the prompt based on the current context and
# the ps-context option.
function zle-reset-prompt {
if zstyle -t ':prezto:module:editor' ps-context; then
# If we aren't within one of the specified contexts, then we want to reset
# the prompt with the appropriate editor_info[keymap] if there is one.
if [[ $CONTEXT != (select|cont) ]]; then
zle reset-prompt
zle -R
fi
else
zle reset-prompt
zle -R
fi
}
zle -N editor-info
zle -N zle-reset-prompt
# Updates editor information when the keymap changes.
function zle-keymap-select {
@ -186,6 +211,14 @@ zle -N expand-dot-to-parent-directory-path
function expand-or-complete-with-indicator {
local indicator
zstyle -s ':prezto:module:editor:info:completing' format 'indicator'
# This is included to work around a bug in zsh which shows up when interacting
# with multi-line prompts.
if [[ -z "$indicator" ]]; then
zle expand-or-complete
return
fi
print -Pn "$indicator"
zle expand-or-complete
zle redisplay
@ -201,6 +234,14 @@ function prepend-sudo {
}
zle -N prepend-sudo
# Expand aliases
function glob-alias {
zle _expand_alias
zle expand-word
zle magic-space
}
zle -N glob-alias
# Reset to default key bindings.
bindkey -d
@ -240,8 +281,8 @@ fi
# Vi Key Bindings
#
# Edit command in an external editor.
bindkey -M vicmd "v" edit-command-line
# Edit command in an external editor emacs style (v is used for visual mode)
bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line
# Undo/Redo
bindkey -M vicmd "u" undo
@ -259,10 +300,54 @@ fi
# Emacs and Vi Key Bindings
#
for keymap in 'emacs' 'viins'; do
# Unbound keys in vicmd and viins mode will cause really odd things to happen
# such as the casing of all the characters you have typed changing or other
# undefined things. In emacs mode they just insert a tilde, but bind these keys
# in the main keymap to a noop op so if there is no keybind in the users mode
# it will fall back and do nothing.
function _prezto-zle-noop { ; }
zle -N _prezto-zle-noop
local -a unbound_keys
unbound_keys=(
"${key_info[F1]}"
"${key_info[F2]}"
"${key_info[F3]}"
"${key_info[F4]}"
"${key_info[F5]}"
"${key_info[F6]}"
"${key_info[F7]}"
"${key_info[F8]}"
"${key_info[F9]}"
"${key_info[F10]}"
"${key_info[F11]}"
"${key_info[F12]}"
"${key_info[PageUp]}"
"${key_info[PageDown]}"
"${key_info[ControlPageUp]}"
"${key_info[ControlPageDown]}"
)
for keymap in $unbound_keys; do
bindkey -M viins "${keymap}" _prezto-zle-noop
bindkey -M vicmd "${keymap}" _prezto-zle-noop
done
# Keybinds for all keymaps
for keymap in 'emacs' 'viins' 'vicmd'; do
bindkey -M "$keymap" "$key_info[Home]" beginning-of-line
bindkey -M "$keymap" "$key_info[End]" end-of-line
done
# Keybinds for all vi keymaps
for keymap in viins vicmd; do
# Ctrl + Left and Ctrl + Right bindings to forward/backward word
for key in "${(s: :)key_info[ControlLeft]}"
bindkey -M "$keymap" "$key" vi-backward-word
for key in "${(s: :)key_info[ControlRight]}"
bindkey -M "$keymap" "$key" vi-forward-word
done
# Keybinds for emacs and vi insert mode
for keymap in 'emacs' 'viins'; do
bindkey -M "$keymap" "$key_info[Insert]" overwrite-mode
bindkey -M "$keymap" "$key_info[Delete]" delete-char
bindkey -M "$keymap" "$key_info[Backspace]" backward-delete-char
@ -305,8 +390,14 @@ for keymap in 'emacs' 'viins'; do
# Insert 'sudo ' at the beginning of the line.
bindkey -M "$keymap" "$key_info[Control]X$key_info[Control]S" prepend-sudo
# control-space expands all aliases, including global
bindkey -M "$keymap" "$key_info[Control] " glob-alias
done
# Delete key deletes character in vimcmd cmd mode instead of weird default functionality
bindkey -M vicmd "$key_info[Delete]" delete-char
# Do not expand .... to ../.. during incremental search.
if zstyle -t ':prezto:module:editor' dot-expansion; then
bindkey -M isearch . self-insert 2> /dev/null
@ -326,4 +417,4 @@ else
print "prezto: editor: invalid key bindings: $key_bindings" >&2
fi
unset key{,map,bindings}
unset key{,map,_bindings}

@ -13,13 +13,14 @@ Contributors
This module **MUST NOT** rely on any command not built in Zsh.
Non-interactive environment variables should be defined in *zshenv*.
Non-interactive environment variables should be defined in [`zshenv`][1].
Authors
-------
*The authors of this module should be contacted via the [issue tracker][1].*
*The authors of this module should be contacted via the [issue tracker][2].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
[1]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv
[2]: https://github.com/sorin-ionescu/prezto/issues

@ -9,14 +9,29 @@
# Smart URLs
#
# This logic comes from an old version of zim. Essentially, bracketed-paste was
# added as a requirement of url-quote-magic in 5.1, but in 5.1.1 bracketed
# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic
# which is generally better than url-quote-magic so we load that when possible.
autoload -Uz is-at-least
if [[ ${ZSH_VERSION} != 5.1.1 ]]; then
if is-at-least 5.2; then
autoload -Uz bracketed-paste-url-magic
zle -N bracketed-paste bracketed-paste-url-magic
else
if is-at-least 5.1; then
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
fi
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
fi
#
# General
#
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'.

@ -12,6 +12,12 @@ module.
The Prezto Fasd configuration differs from the default. The default aliases have
been disabled.
Installation
------------
`fasd` is bundled with prezto as a git submodule. Alternatively, you can manually install `fasd`.
If a manual install is found, it will be used instead of the bundled version.
Aliases
-------

@ -0,0 +1 @@
Subproject commit 90b531a5daaa545c74c7d98974b54cbdb92659fc

@ -9,16 +9,17 @@
# Load dependencies.
pmodload 'editor'
# Return if requirements are not found.
# If the command doesn't exist externally, we need to fall back to the bundled
# submodule.
if (( ! $+commands[fasd] )); then
return 1
source "${0:h}/external/fasd" || return 1
fi
#
# Initialization
#
cache_file="${0:h}/cache.zsh"
cache_file="${TMPDIR:-/tmp}/prezto-fasd-cache.$UID.zsh"
if [[ "${commands[fasd]}" -nt "$cache_file" || ! -s "$cache_file" ]]; then
# Set the base init arguments.
init_args=(zsh-hook)

@ -15,20 +15,30 @@ 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
`--pretty=format:` switch.
```sh
zstyle ':prezto:module:git:log:context' format ''
```
### Status
Retrieving the status of a repository with submodules can take a long time.
Submodules may be ignored when they are *dirty*, *untracked*, *all*, or *none*.
```sh
zstyle ':prezto:module:git:status:ignore' submodules 'all'
```
This setting affects all aliases and functions that call `git-status`.
Aliases
-------
Aliases are enabled by default. You can disable them with:
```sh
zstyle ':prezto:module:git:alias' skip 'yes'
```
### Git
- `g` is short for `git`.
@ -37,15 +47,17 @@ Aliases
- `gb` lists, creates, renames, and deletes branches.
- `gbc` creates a new branch.
- `gbl` lists branches and their commits.
- `gbL` lists local and remote branches and their commits.
- `gbl` lists branches and their commits. (also `gbv`)
- `gbL` lists all local and remote branches and their commits.
- `gbr` renames a branch. (also `gbm`)
- `gbR` renames a branch even if the new branch name already exists. (also
`gbM`)
- `gbs` lists branches and their commits with ancestry graphs.
- `gbS` lists local and remote branches and their commits with ancestry
graphs.
- `gbx` deletes a branch.
- `gbX` deletes a branch irrespective of its merged status.
- `gbm` renames a branch.
- `gbM` renames a branch even if the new branch name already exists.
- `gbV` lists branches with more verbose information about their commits.
- `gbx` deletes a branch. (also `gbd`)
- `gbX` deletes a branch irrespective of its merged status. (also `gbD`)
### Commit
@ -53,11 +65,16 @@ Aliases
- `gc` records changes to the repository.
- `gca` stages all modified and deleted files.
- `gcm` records changes to the repository with the given message.
- `gcS` records changes to the repository. (Signed)
- `gcSa` stages all modified and deleted files. (Signed)
- `gcSm` records changes to the repository with the given message. (Signed) - `gco` checks out a branch or paths to work tree.
- `gcam` stages all modified and deleted files, and records changes to the repository with the given message.
- `gco` checks out a branch or paths to work tree.
- `gcO` checks out hunks from the index or the tree interactively.
- `gcf` amends the tip of the current branch using the same log message as
*HEAD*.
- `gcf` amends the tip of the current branch using the same log message as *HEAD*.
- `gcSf` amends the tip of the current branch using the same log message as *HEAD*. (Signed)
- `gcF` amends the tip of the current branch.
- `gcSF` amends the tip of the current branch. (Signed)
- `gcp` applies changes introduced by existing commits.
- `gcP` applies changes introduced by existing commits without committing.
- `gcr` reverts existing commits by reverting patches and recording new
@ -89,10 +106,86 @@ Aliases
### Fetch
- `gf` downloads objects and references from another repository.
- `gfa` downloads objects and references from all remote repositories.
- `gfc` clones a repository into a new directory.
- `gfcr` clones a repository into a new directory including all submodules.
- `gfm` fetches from and merges with another repository or local branch.
- `gfr` fetches from and rebases on another repository or local branch.
### Flow
- `gFi` is short for `git flow init`
#### Feature
- `gFf` is short for `git flow feature`
- `gFfl` is short for `git flow feature list`
- `gFfs` is short for `git flow feature start`
- `gFff` is short for `git flow feature finish`
- `gFfp` is short for `git flow feature publish`
- `gFft` is short for `git flow feature track`
- `gFfd` is short for `git flow feature diff`
- `gFfr` is short for `git flow feature rebase`
- `gFfc` is short for `git flow feature checkout`
- `gFfm` is short for `git flow feature pull`
- `gFfx` is short for `git flow feature delete`
#### Bugfix
- `gFb` is short for `git flow bugfix`
- `gFbl` is short for `git flow bugfix list`
- `gFbs` is short for `git flow bugfix start`
- `gFbf` is short for `git flow bugfix finish`
- `gFbp` is short for `git flow bugfix publish`
- `gFbt` is short for `git flow bugfix track`
- `gFbd` is short for `git flow bugfix diff`
- `gFbr` is short for `git flow bugfix rebase`
- `gFbc` is short for `git flow bugfix checkout`
- `gFbm` is short for `git flow bugfix pull`
- `gFbx` is short for `git flow bugfix delete`
#### Release
- `gFl` is short for `git flow release`
- `gFll` is short for `git flow release list`
- `gFls` is short for `git flow release start`
- `gFlf` is short for `git flow release finish`
- `gFlp` is short for `git flow release publish`
- `gFlt` is short for `git flow release track`
- `gFld` is short for `git flow release diff`
- `gFlr` is short for `git flow release rebase`
- `gFlc` is short for `git flow release checkout`
- `gFlm` is short for `git flow release pull`
- `gFlx` is short for `git flow release delete`
#### Hotfix
- `gFh` is short for `git flow hotfix`
- `gFhl` is short for `git flow hotfix list`
- `gFhs` is short for `git flow hotfix start`
- `gFhf` is short for `git flow hotfix finish`
- `gFhp` is short for `git flow hotfix publish`
- `gFht` is short for `git flow hotfix track`
- `gFhd` is short for `git flow hotfix diff`
- `gFhr` is short for `git flow hotfix rebase`
- `gFhc` is short for `git flow hotfix checkout`
- `gFhm` is short for `git flow hotfix pull`
- `gFhx` is short for `git flow hotfix delete`
#### Support
- `gFs` is short for `git flow support`
- `gFsl` is short for `git flow support list`
- `gFss` is short for `git flow support start`
- `gFsf` is short for `git flow support finish`
- `gFsp` is short for `git flow support publish`
- `gFst` is short for `git flow support track`
- `gFsd` is short for `git flow support diff`
- `gFsr` is short for `git flow support rebase`
- `gFsc` is short for `git flow support checkout`
- `gFsm` is short for `git flow support pull`
- `gFsx` is short for `git flow support delete`
### Grep
- `gg` displays lines matching a pattern.
@ -109,6 +202,8 @@ Aliases
- `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 (word diff).
- `gii` temporarily ignore differences in a given file.
- `giI` unignore differences in a given file.
- `gir` resets the current HEAD to the specified state.
- `giR` resets the current index interactively.
- `gix` removes files/directories from the index (recursively).
@ -214,6 +309,7 @@ The following aliases may shadow system commands:
- `gpt` shadows the [GUID partition table maintenance utility][4].
- `gs` shadows the [Ghostscript][5].
- `gb` shadows the [GB][9].
If you frequently use the above commands, you may wish to remove said aliases
from this module or to disable them at the bottom of the zshrc with `unalias`.
@ -228,7 +324,7 @@ Functions
- `git-commit-lost` lists lost commits.
- `git-dir` displays the path to the Git directory.
- `git-hub-browse` opens the [GitHub][3] repository in the default browser.
- `git-hub-shorten-url` shortens GitHub URLs.
- `git-hub-shorten-url` shortens [GitHub URLs][10].
- `git-info` exposes repository information via the `$git_info` associative
array.
- `git-root` displays the path to the working tree root.
@ -245,7 +341,9 @@ To display information about the current repository in a prompt, define the
following styles in the `prompt_name_setup` function, where the syntax for
setting a style is as follows.
```sh
zstyle ':prezto:module:git:info:context:subcontext' format 'string'
```
### Main Contexts
@ -272,7 +370,9 @@ setting a style is as follows.
The following contexts must be enabled with the following zstyle:
```sh
zstyle ':prezto:module:git:info' verbose 'yes'
```
### Verbose Contexts
@ -299,18 +399,24 @@ The following contexts must be enabled with the following zstyle:
| rebase | value | Rebasing
| rebase-interactive | value | Rebasing interactively
| rebase-merge | value | Rebasing merge
| revert | value | Reverting
| revert-sequence | value | Reverting sequence
First, format the repository state attributes. For example, to format the branch
and remote names, define the following styles.
```sh
zstyle ':prezto:module:git:info:branch' format 'branch:%b'
zstyle ':prezto:module:git:info:remote' format 'remote:%R'
```
Second, format how the above attributes are displayed in prompts.
```sh
zstyle ':prezto:module:git:info:keys' format \
'prompt' ' git(%b)' \
'rprompt' '[%R]'
```
Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook
@ -332,3 +438,5 @@ Authors
[6]: https://github.com/sorin-ionescu/prezto/issues
[7]: https://github.com/sorin-ionescu/prezto/issues/219
[8]: http://www.kernel.org/pub/software/scm/git/docs/git-log.html
[9]: https://getgb.io/
[10]: https://github.com/blog/985-git-io-github-url-shortener

@ -26,29 +26,43 @@ zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_subm
# Aliases
#
if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
# Git
alias g='git'
# Branch (b)
alias gb='git branch'
alias gba='git branch --all --verbose'
alias gbc='git checkout -b'
alias gbl='git branch -v'
alias gbL='git branch -av'
alias gbx='git branch -d'
alias gbX='git branch -D'
alias gbm='git branch -m'
alias gbM='git branch -M'
alias gbd='git branch --delete'
alias gbD='git branch --delete --force'
alias gbl='git branch --verbose'
alias gbL='git branch --all --verbose'
alias gbm='git branch --move'
alias gbM='git branch --move --force'
alias gbr='git branch --move'
alias gbR='git branch --move --force'
alias gbs='git show-branch'
alias gbS='git show-branch -a'
alias gbS='git show-branch --all'
alias gbv='git branch --verbose'
alias gbV='git branch --verbose --verbose'
alias gbx='git branch --delete'
alias gbX='git branch --delete --force'
# Commit (c)
alias gc='git commit --verbose'
alias gca='git commit --verbose --all'
alias gcm='git commit --message'
alias gcS='git commit -S --verbose'
alias gcSa='git commit -S --verbose --all'
alias gcSm='git commit -S --message'
alias gcam='git commit --all --message'
alias gco='git checkout'
alias gcO='git checkout --patch'
alias gcf='git commit --amend --reuse-message HEAD'
alias gcSf='git commit -S --amend --reuse-message HEAD'
alias gcF='git commit --verbose --amend'
alias gcSF='git commit -S --verbose --amend'
alias gcp='git cherry-pick --ff'
alias gcP='git cherry-pick --no-commit'
alias gcr='git revert'
@ -57,7 +71,7 @@ alias gcs='git show'
alias gcl='git-commit-lost'
# Conflict (C)
alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"'
alias gCl='git --no-pager diff --name-only --diff-filter=U'
alias gCa='git add $(gCl)'
alias gCe='git mergetool $(gCl)'
alias gCo='git checkout --ours --'
@ -76,10 +90,75 @@ alias gdi='git status --porcelain --short --ignored | sed -n "s/^!! //p"'
# Fetch (f)
alias gf='git fetch'
alias gfa='git fetch --all'
alias gfc='git clone'
alias gfcr='git clone --recurse-submodules'
alias gfm='git pull'
alias gfr='git pull --rebase'
# Flow (F)
alias gFi='git flow init'
alias gFf='git flow feature'
alias gFb='git flow bugfix'
alias gFl='git flow release'
alias gFh='git flow hotfix'
alias gFs='git flow support'
alias gFfl='git flow feature list'
alias gFfs='git flow feature start'
alias gFff='git flow feature finish'
alias gFfp='git flow feature publish'
alias gFft='git flow feature track'
alias gFfd='git flow feature diff'
alias gFfr='git flow feature rebase'
alias gFfc='git flow feature checkout'
alias gFfm='git flow feature pull'
alias gFfx='git flow feature delete'
alias gFbl='git flow bugfix list'
alias gFbs='git flow bugfix start'
alias gFbf='git flow bugfix finish'
alias gFbp='git flow bugfix publish'
alias gFbt='git flow bugfix track'
alias gFbd='git flow bugfix diff'
alias gFbr='git flow bugfix rebase'
alias gFbc='git flow bugfix checkout'
alias gFbm='git flow bugfix pull'
alias gFbx='git flow bugfix delete'
alias gFll='git flow release list'
alias gFls='git flow release start'
alias gFlf='git flow release finish'
alias gFlp='git flow release publish'
alias gFlt='git flow release track'
alias gFld='git flow release diff'
alias gFlr='git flow release rebase'
alias gFlc='git flow release checkout'
alias gFlm='git flow release pull'
alias gFlx='git flow release delete'
alias gFhl='git flow hotfix list'
alias gFhs='git flow hotfix start'
alias gFhf='git flow hotfix finish'
alias gFhp='git flow hotfix publish'
alias gFht='git flow hotfix track'
alias gFhd='git flow hotfix diff'
alias gFhr='git flow hotfix rebase'
alias gFhc='git flow hotfix checkout'
alias gFhm='git flow hotfix pull'
alias gFhx='git flow hotfix delete'
alias gFsl='git flow support list'
alias gFss='git flow support start'
alias gFsf='git flow support finish'
alias gFsp='git flow support publish'
alias gFst='git flow support track'
alias gFsd='git flow support diff'
alias gFsr='git flow support rebase'
alias gFsc='git flow support checkout'
alias gFsm='git flow support pull'
alias gFsx='git flow support delete'
# Grep (g)
alias gg='git grep'
alias ggi='git grep --ignore-case'
@ -94,6 +173,8 @@ alias giA='git add --patch'
alias giu='git add --update'
alias gid='git diff --no-ext-diff --cached'
alias giD='git diff --no-ext-diff --cached --word-diff'
alias gii='git update-index --assume-unchanged'
alias giI='git update-index --no-assume-unchanged'
alias gir='git reset'
alias giR='git reset --patch'
alias gix='git rm -r --cached'
@ -117,7 +198,8 @@ alias gmt='git mergetool'
# Push (p)
alias gp='git push'
alias gpf='git push --force'
alias gpf='git push --force-with-lease'
alias gpF='git push --force'
alias gpa='git push --all'
alias gpA='git push --all && git push --tags'
alias gpt='git push --tags'
@ -179,3 +261,4 @@ alias gwc='git clean -n'
alias gwC='git clean -f'
alias gwx='git rm -r'
alias gwX='git rm -rf'
fi

@ -8,4 +8,9 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
_arguments '1:url:' && return 0
local service="$service"
zstyle ":completion:*:${service}:*:prefixes" ignored-patterns '^http(|s)://'
zstyle ":completion:*:${service}:*:hosts" ignored-patterns '^*github.com'
_arguments '1::GitHub URL:_urls' '2::code:' && return 0

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-branch-current {
if ! git rev-parse 2> /dev/null; then
print "$0: not a repository: $PWD" >&2
return 1
@ -18,3 +20,5 @@ if [[ -n "$ref" ]]; then
else
return 1
fi
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-commit-lost {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -18,3 +20,5 @@ git fsck 2> /dev/null \
--no-walk \
--stdin \
--pretty=format:${_git_log_oneline_format}
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-dir {
local git_dir="${$(git rev-parse --git-dir):A}"
if [[ -n "$git_dir" ]]; then
@ -14,3 +16,5 @@ else
print "$0: not a repository: $PWD" >&2
return 1
fi
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-hub-browse {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -56,3 +58,5 @@ else
print "$0: not a Git repository or remote not set" >&2
return 1
fi
# }

@ -5,18 +5,24 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local url="$1"
# function git-hub-shorten-url {
local url="$1" code="$2"
if [[ "$url" == '-' ]]; then
read url <&0
fi
if [[ -z "$url" ]]; then
print "usage: $0 [ url | - ]" >&2
if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then
print "usage: $0 [ url | - ] [code] ; url must be a github.com URL" >&2
return 1
fi
if (( $+commands[curl] )); then
curl -s -i 'http://git.io' -F "url=$url" | grep 'Location:' | sed 's/Location: //'
curl -s -i 'https://git.io' -F "url=$url" ${(s: :)code:+ -F "code=$code"} | sed -n 's/^Location: //p'
else
print "$0: command not found: curl" >&2
return 1
fi
# }

@ -5,7 +5,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Gets the Git special action (am, bisect, cherry, merge, rebase).
# Gets the Git special action (am, bisect, cherry, merge, rebase, revert).
# Borrowed from vcs_info and edited.
function _git-action {
local action_dir
@ -18,6 +18,8 @@ function _git-action {
local rebase_formatted
local rebase_interactive_formatted
local rebase_merge_formatted
local revert_formatted
local revert_sequence_formatted
for action_dir in \
"${git_dir}/rebase-apply" \
@ -80,6 +82,18 @@ function _git-action {
return 0
fi
if [[ -f "${git_dir}/REVERT_HEAD" ]]; then
if [[ -d "${git_dir}/sequencer" ]] ; then
zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' || revert_sequence_formatted='revert-sequence'
print "$revert_sequence_formatted"
else
zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' || revert_formatted='revert'
print "$revert_formatted"
fi
return 0
fi
if [[ -f "${git_dir}/BISECT_LOG" ]]; then
zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' || bisect_formatted='bisect'
print "$bisect_formatted"

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-root {
local root="$(git rev-parse --show-toplevel 2> /dev/null)"
if [[ -n "$root" ]]; then
@ -14,3 +16,5 @@ else
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-clear-interactive {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -20,3 +22,5 @@ if [[ -f "$(git-dir)/refs/stash" ]]; then
fi
fi
fi
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-dropped {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -20,3 +22,5 @@ git fsck --unreachable 2> /dev/null \
--merges \
--no-walk \
--stdin
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-recover {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -16,3 +18,5 @@ for commit in "$@"; do
git update-ref \
-m "$(git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit"
done
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-submodule-move {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -30,3 +32,5 @@ git-submodule-remove "$src"
git submodule add "$url" "$dst"
return 0
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-submodule-remove {
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
@ -25,3 +27,5 @@ rm -rf "${1}"
rm -rf "$(git-dir)/modules/${1}"
return 0
# }

@ -20,7 +20,9 @@ Settings
To use a different prefix, add the following to *zpreztorc*, and replace 'g' with
the desired prefix:
```sh
zstyle ':prezto:module:gnu-utility' prefix 'g'
```
Authors
-------

@ -42,13 +42,13 @@ _gnu_utility_cmds=(
'libtool' 'libtoolize'
# Miscellaneous
'getopt' 'grep' 'indent' 'sed' 'tar' 'time' 'units' 'which'
'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'
)
# Wrap GNU utilities in functions.
for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do
_gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}"
if (( ${+commands[${_gnu_utility_pcmd}]} )); then
if (( ${+commands[${_gnu_utility_pcmd}]} && ! ${+builtins[${_gnu_utility_cmd}]} )); then
eval "
function ${_gnu_utility_cmd} {
'${commands[${_gnu_utility_pcmd}]}' \"\$@\"

@ -9,7 +9,9 @@ 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*:
```conf
enable-ssh-support
```
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
module for additional processing.

@ -12,13 +12,13 @@ fi
# Set the default paths to gpg-agent files.
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env"
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
# Start gpg-agent if not started.
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
# Export environment variables.
# Load environment variables from previous run
source "$_gpg_agent_env" 2> /dev/null
# Start gpg-agent if not started.
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
# Start gpg-agent if not started.
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
@ -29,7 +29,7 @@ fi
export GPG_TTY="$(tty)"
# Integrate with the SSH module.
if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
# Load required functions.
autoload -Uz add-zsh-hook

@ -12,7 +12,7 @@ function is-autoloadable {
# Checks if a name is a command, function, or alias.
function is-callable {
(( $+commands[$1] )) || (( $+functions[$1] )) || (( $+aliases[$1] ))
(( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] ))
}
# Checks a boolean variable for "true".

@ -6,8 +6,8 @@ the [Fish shell][2]'s history search feature, where the user can type in any
part of a previously entered command and press up and down to cycle through
matching commands.
If this module is used in conjuncture with the *syntax-highlighting* module, it
must be loaded **after** it.
If this module is used in conjunction with the *syntax-highlighting* module,
this module must be loaded **after** the *syntax-highlighting* module.
Contributors
------------
@ -24,7 +24,9 @@ Settings
To enable case-sensitivity for this module only, add the following line to
*zpreztorc*:
```sh
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
```
### Highlighting
@ -34,19 +36,27 @@ positive results.
To enable highlighting for this module only, add the following line to
*zpreztorc*:
```sh
zstyle ':prezto:module:history-substring-search' color 'yes'
```
To set the query found color, add the following line to *zpreztorc*:
```sh
zstyle ':prezto:module:history-substring-search:color' found ''
```
To set the query not found color, add the following line to *zpreztorc*:
```sh
zstyle ':prezto:module:history-substring-search:color' not-found ''
```
To set the search globbing flags, add the following line to *zpreztorc*:
```sh
zstyle ':prezto:module:history-substring-search' globbing-flags ''
```
Authors
-------

@ -1 +1 @@
Subproject commit 7a4b54b708ab88e0421097614f1acaa7a973c795
Subproject commit aae3388491c2312c4efb2e86bcb999927bb2900e

@ -54,4 +54,6 @@ if [[ -n "$key_info" ]]; then
bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up
bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down
done
unset keymap
fi

@ -12,8 +12,9 @@ Aliases
- `brewC` cleans outdated brews, including keg-only, and their cached archives.
- `brewi` installs a formula.
- `brewl` lists installed formulae.
- `brewo` lists brews which have an update available.
- `brews` searches for a formula.
- `brewu` updates Homebrew and formulae.
- `brewu` updates and upgrades Homebrew packages and formulae.
- `brewx` uninstalls a formula.
### Homebrew Cask
@ -23,6 +24,7 @@ Aliases
- `caskC` cleans up all cached downloads.
- `caski` installs a cask.
- `caskl` lists installed casks.
- `casko` lists casks which have an update available.
- `casks` searches for a cask.
- `caskx` uninstalls a cask.

@ -19,8 +19,9 @@ alias brewc='brew cleanup'
alias brewC='brew cleanup --force'
alias brewi='brew install'
alias brewl='brew list'
alias brewo='brew outdated'
alias brews='brew search'
alias brewu='brew update && brew upgrade --all'
alias brewu='brew update && brew upgrade'
alias brewx='brew remove'
# Homebrew Cask
@ -29,5 +30,6 @@ alias caskc='brew cask cleanup --outdated'
alias caskC='brew cask cleanup'
alias caski='brew cask install'
alias caskl='brew cask list'
alias casko='brew cask outdated'
alias casks='brew cask search'
alias caskx='brew cask uninstall'

@ -10,6 +10,13 @@ nvm
[nvm][5] allows for managing multiple, isolated Node.js installations in the
home directory.
nodenv
------
[nodenv][6] does one thing well. nodenv is concerned solely with switching
Node versions. It's simple and predictable, Just Works, and is rock solid in
production. nodenv is forked from the popular [rbenv][7].
Functions
---------
@ -24,8 +31,10 @@ Theming
To display the version number of the current Node.js version, define the
following style inside the `prompt_name_setup` function.
```sh
# %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.
@ -43,3 +52,5 @@ Authors
[3]: http://nodejs.org/api
[4]: https://github.com/sorin-ionescu/prezto/issues
[5]: https://github.com/creationix/nvm
[6]: https://github.com/nodenv/nodenv
[7]: https://github.com/sstephenson/rbenv

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function node-doc {
if [[ -z "$BROWSER" ]]; then
print "$0: no web browser defined" >&2
return 1
@ -12,3 +14,5 @@ fi
# TODO: Make the sections easier to use.
"$BROWSER" "http://nodejs.org/docs/$(node --version | sed 's/-.*//')/api/all.html#${1}"
# }

@ -6,6 +6,8 @@
# Zeh Rizzatti <zehrizzatti@gmail.com>
#
# function node-info {
local version
local version_format
local version_formatted
@ -15,6 +17,8 @@ typeset -gA node_info
if (( $+functions[nvm_version] )); then
version="${$(nvm_version)#v}"
elif (( $+commands[nodenv] )); then
version="${${$(nodenv version)#v}[(w)0]}"
fi
if [[ "$version" != (none|) ]]; then
@ -22,3 +26,5 @@ if [[ "$version" != (none|) ]]; then
zformat -f version_formatted "$version_format" "v:$version"
node_info[version]="$version_formatted"
fi
# }

@ -12,7 +12,16 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
# Load package manager installed NVM into the shell session.
elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2> /dev/null)" ]]; then
source $(brew --prefix nvm)/nvm.sh
source "$(brew --prefix nvm)/nvm.sh"
# Load manually installed nodenv into the shell session.
elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then
path=("$HOME/.nodenv/bin" $path)
eval "$(nodenv init - --no-rehash zsh)"
# Load package manager installed nodenv into the shell session.
elif (( $+commands[nodenv] )); then
eval "$(nodenv init - --no-rehash zsh)"
# Return if requirements are not found.
elif (( ! $+commands[node] )); then
@ -21,7 +30,7 @@ fi
# Load NPM completion.
if (( $+commands[npm] )); then
cache_file="${0:h}/cache.zsh"
cache_file="${TMPDIR:-/tmp}/prezto-node-cache.$UID.zsh"
if [[ "$commands[npm]" -nt "$cache_file" || ! -s "$cache_file" ]]; then
# npm is slow; cache its output.

@ -3,6 +3,19 @@ OSX
Defines [Mac OS X][1] aliases and functions.
Settings
--------
### Dash Keyword
To change the keyword used by `mand` to open man pages in [_Dash.app_][2] from
its default value of 'manpages', add the following line in *zpreztorc* and
replace the **keyword** with the one configured in [_Dash.app_][2].
```sh
zstyle ':prezto:module:osx:man' dash-keyword 'keyword'
```
Aliases
-------

@ -7,7 +7,8 @@
function mand {
if (( $# > 0 )); then
open "dash://manpages:$1" 2>/dev/null
zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages'
open "dash://$dashkw:$1" 2> /dev/null
if (( $? != 0 )); then
print "$0: Dash is not installed" >&2
break
@ -15,6 +16,8 @@ function mand {
else
print 'What manual page do you want?' >&2
fi
unset dashkw
}
mand "$@"

@ -5,9 +5,13 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function osx-ls-download-history {
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
# }

@ -5,7 +5,11 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function osx-rm-dir-metadata {
find "${@:-$PWD}" \( \
-type f -name '.DS_Store' -o \
-type d -name '__MACOSX' \
\) -print0 | xargs -0 rm -rf
# }

@ -5,9 +5,13 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function osx-rm-download-history {
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
# }

@ -5,8 +5,12 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pfd {
osascript 2> /dev/null <<EOF
tell application "Finder"
return POSIX path of (target of first window as text)
end tell
EOF
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pfs {
osascript 2>&1 <<EOF
tell application "Finder" to set the_selection to selection
if the_selection is not {}
@ -13,3 +15,5 @@ osascript 2>&1 <<EOF
end repeat
end if
EOF
# }

@ -5,6 +5,10 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function ql {
if (( $# > 0 )); then
qlmanage -p "$@" &> /dev/null
fi
# }

@ -5,6 +5,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function tab {
local command="cd \\\"$PWD\\\""
(( $# > 0 )) && command="${command}; $*"
@ -39,3 +41,16 @@ EOF
end tell
EOF
}
[[ "$the_app" == 'iTerm2' ]] && {
osascript 2> /dev/null <<EOF
tell application "iTerm2"
tell current window
create tab with default profile
tell current session to write text "${command}"
end tell
end tell
EOF
}
# }

@ -7,17 +7,25 @@ frontends.
Settings
--------
To enable a Pacman frontend, for example, [Yaourt][2], add the following line to
It is possible to use a Pacman frontend with the pacman aliases provided by this
package as long as that frontend supports the same command line options (Such as
[Pacaur][2] or [Yaourt][3]).
To enable a Pacman frontend, for example, [Pacaur][2], add the following line to
*zpreztorc*:
zstyle ':prezto:module:pacman' frontend 'yaourt'
```sh
zstyle ':prezto:module:pacman' frontend 'pacaur'
```
If you have enabled color globally in *zpreztorc*, you may disable it for certain
commands.
To disable `yaourt` highlighting, add the following line to *zpreztorc*:
```sh
zstyle ':prezto:module:pacman:yaourt' color 'no'
```
Aliases
-------
@ -44,6 +52,9 @@ Aliases
#### Yaourt
Note that there are currently potential security concerns relating to yaourt, so
other frontends are recommended.
- `pacc` manages *.pac\** files.
Functions
@ -55,11 +66,12 @@ Functions
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
*The authors of this module should be contacted via the [issue tracker][4].*
- [Benjamin Boudreau](https://github.com/dreur)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.archlinux.org/pacman/
[2]: http://archlinux.fr/yaourt-en
[3]: https://github.com/sorin-ionescu/prezto/issues
[2]: https://github.com/rmarquis/pacaur
[3]: http://archlinux.fr/yaourt-en
[4]: https://github.com/sorin-ionescu/prezto/issues

@ -6,6 +6,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pacman-list-disowned {
local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$"
local db="$tmp/db"
local fs="$tmp/fs"
@ -20,3 +22,5 @@ find /bin /etc /lib /sbin /usr \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"
# }

@ -6,6 +6,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pacman-list-explicit {
pacman --query --explicit --info \
| awk '
BEGIN {
@ -18,3 +20,5 @@ pacman --query --explicit --info \
print $2
}
'
# }

@ -70,9 +70,9 @@ alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --u
alias pacman-remove-orphans="${_pacman_sudo}${_pacman_frontend} --remove --recursive \$(${_pacman_frontend} --quiet --query --deps --unrequired)"
# Synchronizes the local package and Arch Build System databases against the
# repositories.
if (( $+commands[abs] )); then
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo abs"
# repositories using the asp tool.
if (( $+commands[asp] )); then
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo asp update"
else
alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh"
fi

@ -14,15 +14,19 @@ Mac OS X in *~/Library/Perl/5.12* by altering the environment.
For Perl versions older than 5.14, install *local::lib*.
```console
curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz
tar xvf local-lib-1.008004.tar.gz
cd local-lib-1.008004
perl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12
make && make test && make install
```
Install *cpanminus*:
```console
curl -L http://cpanmin.us | perl - --self-upgrade
```
Perlbrew
--------
@ -30,6 +34,14 @@ Perlbrew
An alternative to the above is to use [Perlbrew][2], which allows for the
management of multiple, isolated Perl installations in the home directory.
plenv
-----
Yet another alternative is [plenv][3]. This is inspired from rbenv and enables
switching between multiple binary installations.
The subcommands of plenv is similar with rbenv.
Aliases
-------
@ -51,13 +63,52 @@ Aliases
- `plbu` uninstalls a Perl version.
- `plbx` temporarily sets the Perl version to use.
### plenv
- `plv` manages Perl environments.
- `plvc` List all available plenv commands.
- `plvl` Set or show the local application-specific Perl version.
- `plvg` Set or show the global Perl version.
- `plvs` Set or show the shell-specific Perl version.
- `plvi` Install a Perl version using the perl-build plugin.
- `plvu` Uninstall a specific Perl version.
- `plvr` Rehash plenv shims (run this after installing executables).
- `plvv` Show the current Perl version and its origin.
- `plvV` List all Perl versions available to plenv.
- `plvw` Display the full path to an executable.
- `plvW` List all Perl versions that contain the given executable.
- `plvm` List cpan modules in current perl.
- `plvM` Migrate cpan modules from other version.
- `plvI` Install cpanm.
Functions
---------
- `perl-info` exposes information about the Perl environment via the
`$perl_info` associative array.
Theming
-------
To display the name of the current Perl version in a prompt, define the
following style in the `prompt_name_setup` function.
```sh
# %v - perl version.
zstyle ':prezto:module:perl:info:version' format 'version:%v'
```
Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call
`perl-info` in the `prompt_name_precmd` hook function.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
*The authors of this module should be contacted via the [issue tracker][4].*
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://www.perl.org
[2]: http://perlbrew.pl
[3]: https://github.com/sorin-ionescu/prezto/issues
[3]: https://github.com/tokuhirom/plenv
[4]: https://github.com/sorin-ionescu/prezto/issues

@ -0,0 +1,34 @@
#
# Exposes information about the Perl environment via the $perl_info associative
# array.
#
# Authors:
# JINNOUCHI Yasushi <delphinus@remora.cx>
#
# function perl-info {
local version
local version_format
local version_formatted
# Clean up previous $perl_info.
unset perl_info
typeset -gA perl_info
if (( $+commands[perlbrew] )); then
version="${PERLBREW_PERL##*perl-}"
elif (( $+commands[plenv] )); then
version=$(plenv version-name)
elif (( $+commands[perl] )); then
version=$(perl -e 'printf "%vd", $^V')
fi
# Format version.
if [[ -n "$version" ]]; then
zstyle -s ':prezto:module:perl:info:version' format 'version_format'
zformat -f version_formatted "$version_format" "v:$version"
perl_info[version]="$version_formatted"
fi
# }

@ -10,13 +10,36 @@ if (( ! $+commands[perl] )); then
return 1
fi
#
# Load Perlbrew or plenv
#
# Load Perlbrew into the shell session.
if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc" ]]; then
source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc"
# Load Perlbrew completion.
if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash" ]]; then
source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash"
fi
# Load manually installed plenv into the shell session.
elif [[ -s "$HOME/.plenv/bin/plenv" ]]; then
path=("$HOME/.plenv/bin" $path)
eval "$(plenv init - --no-rehash zsh)"
# Load package manager installed plenv into the shell session.
elif (( $+commands[plenv] )); then
eval "$(plenv init - --no-rehash zsh)"
fi
#
# Local Module Installation
#
if [[ "$OSTYPE" == darwin* ]]; then
# Perl is slow; cache its output.
cache_file="${0:h}/cache.zsh"
cache_file="${TMPDIR:-/tmp}/prezto-perl-cache.$UID.zsh"
perl_path="$HOME/Library/Perl/5.12"
if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then
@ -27,8 +50,7 @@ if [[ "$OSTYPE" == darwin* ]]; then
source "$cache_file"
fi
unset perl_path
unset cache_file
unset cache_file perl_path
fi
#
@ -41,6 +63,7 @@ alias pld='perldoc'
alias ple='perl -wlne'
# Perlbrew
if (( $+commands[perlbrew] )); then
alias plb='perlbrew'
alias plba='perlbrew available'
alias plbi='perlbrew install'
@ -50,3 +73,21 @@ alias plbO='perlbrew switch-off'
alias plbs='perlbrew switch'
alias plbu='perlbrew use'
alias plbx='perlbrew uninstall'
elif (( $+commands[plenv] )); then
alias plv='plenv'
alias plvc='plenv commands'
alias plvl='plenv local'
alias plvg='plenv global'
alias plvs='plenv shell'
alias plvi='plenv install'
alias plvu='plenv uninstall'
alias plvr='plenv rehash'
alias plvv='plenv version'
alias plvV='plenv versions'
alias plvw='plenv which'
alias plvW='plenv whence'
alias plvm='plenv list-modules'
alias plvM='plenv migrate-modules'
alias plvI='plenv install-cpanm'
fi

@ -6,11 +6,34 @@ Loads prompt [themes][1].
Settings
--------
### Prompt Theme
To select a prompt theme, add the following to *zpreztorc*, and replace **name**
with the name of the theme you wish to load. Setting it to **random** will load
a random theme.
```sh
zstyle ':prezto:module:prompt' theme 'name'
```
### Prompt Display Length
To change working directory prompt display length from 'short', set the
following to 'long' (without `~` expansion) or 'full' (with `~` expansion)
in *zpreztorc*.
```sh
zstyle ':prezto:module:prompt' pwd-length 'short'
```
### Display Return Value
Some prompts display the return value in the prompt. If a prompt has support,
this can be disabled with the following snippet.
```sh
zstyle ':prezto:module:prompt' show-return-val 'no'
```
Theming
-------
@ -26,7 +49,7 @@ There are three theme functions, a setup function, a help function, and
a preview function. The setup function **must** always be defined. The help
function and the preview functions are optional.
#### prompt_name_setup
#### `prompt_name_setup`
This function is called by the `prompt` function to install the theme. This
function may define other functions as necessary to maintain the prompt,
@ -36,18 +59,21 @@ including a function that displays help or a function used to preview it.
The most basic example of this function can be seen below.
```sh
function prompt_name_setup {
PROMPT='%m%# '
RPROMPT=''
}
```
#### prompt_name_help
#### `prompt_name_help`
If the `prompt_name_setup` function is customizable via parameters, a help
function **should** be defined. The user will access it via `prompt -h name`.
The most basic example of this function can be seen below.
```sh
function prompt_name_help {
cat <<EOH
This prompt is color-scheme-able. You can invoke it thus:
@ -57,14 +83,16 @@ The most basic example of this function can be seen below.
where the color is for the left-hand prompt.
EOH
}
```
#### prompt_name_preview
#### `prompt_name_preview`
If the `prompt_name_setup` function is customizable via parameters, a preview
function **should** be defined. The user will access it via `prompt -p name`.
The most basic example of this function can be seen below.
```sh
function prompt_name_preview {
if (( $# > 0 )); then
prompt_preview_theme theme "$@"
@ -74,13 +102,14 @@ The most basic example of this function can be seen below.
prompt_preview_theme theme yellow magenta black
fi
}
```
### Hook Functions
There are many Zsh [hook][2] functions, but mostly the *precmd* hook will be
used.
#### prompt_name_precmd
#### `prompt_name_precmd`
This hook is called before the prompt is displayed and is useful for getting
information to display in a prompt.
@ -93,11 +122,25 @@ a function before you calling it.
The most basic example of this function can be seen below.
```sh
function prompt_name_precmd {
if (( $+functions[git-info] )); then
git-info
fi
}
```
Troubleshooting
---------------
### Fonts aren't displaying properly.
On most systems, themes which use special characters need to have a patched font
installed and configured properly.
Powerline provides some information on [terminal support][4] and [how to install
patched fonts][5] which should fix most font issues.
Authors
-------
@ -109,3 +152,5 @@ Authors
[1]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes
[2]: http://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions
[3]: https://github.com/sorin-ionescu/prezto/issues
[4]: http://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements
[5]: http://powerline.readthedocs.io/en/latest/installation.html#fonts-installation

@ -1 +1 @@
Subproject commit 43cb371f361eecf62e9dac7afc73a1c16edf89c7
Subproject commit 3ad94b659910c775a6560c45b1524d23d8c83b09

@ -0,0 +1 @@
Subproject commit b001fa529a874fbe8bd22a9d4526153138645289

@ -0,0 +1 @@
Subproject commit 17c069d25ac7b24af6b5dc7ecb9597cef881f582

@ -1 +1 @@
Subproject commit 8e81152340c4beb2d941340d1feb2dc29bbcc309
Subproject commit c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc

@ -1 +1 @@
Subproject commit fb4c37dad3c5cbdebca61a8ff5545397c11d450f
Subproject commit a95d55cc7d3a73fc562ac11e23c26113ed6d58cf

@ -1 +1 @@
../external/pure/async.zsh
../external/async/async.zsh

@ -0,0 +1,30 @@
#
# Prompt setup function commonly used by prompt themes.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function prompt-pwd {
setopt localoptions extendedglob
local current_pwd="${PWD/#$HOME/~}"
local ret_directory
if [[ "$current_pwd" == (#m)[/~] ]]; then
ret_directory="$MATCH"
unset MATCH
elif zstyle -m ':prezto:module:prompt' pwd-length 'full'; then
ret_directory=${PWD}
elif zstyle -m ':prezto:module:prompt' pwd-length 'long'; then
ret_directory=${current_pwd}
else
ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}"
fi
unset current_pwd
print "$ret_directory"
# }

@ -76,7 +76,7 @@ function prompt_cloud_preview {
function prompt_cloud_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Set the theme prefix to a cloud or to the user's given characters.
if [[ -n "$1" ]]; then

@ -11,23 +11,12 @@
# Load dependencies.
pmodload 'helper'
function prompt_damoekri_pwd {
local pwd="${PWD/#$HOME/~}"
if [[ "$pwd" == (#m)[/~] ]]; then
_prompt_damoekri_pwd="$MATCH"
unset MATCH
else
_prompt_damoekri_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}"
fi
}
function prompt_damoekri_precmd {
prompt_damoekri_precmd() {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
prompt_damoekri_pwd
_prompt_damoekri_pwd=$(prompt-pwd)
# Get Git repository information.
if (( $+functions[git-info] )); then
@ -43,7 +32,7 @@ function prompt_damoekri_precmd {
function prompt_damoekri_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook

@ -38,7 +38,7 @@ function prompt_giddie_precmd {
function prompt_giddie_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz vcs_info

@ -32,7 +32,7 @@ function prompt_kylewest_precmd {
function prompt_kylewest_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook

@ -23,7 +23,7 @@ function prompt_minimal_precmd {
function prompt_minimal_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook

@ -26,7 +26,7 @@ function prompt_nicoulaj_precmd {
function prompt_nicoulaj_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook

@ -8,6 +8,7 @@
# Isaac Wolkerstorfer <i@agnoster.net>
# Jeff Sandberg <paradox460@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Patrick Bos <egpbos@gmail.com>
#
# Screenshots:
# http://i.imgur.com/0XIWX.png
@ -52,21 +53,14 @@ function prompt_paradox_build_prompt {
prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}'
fi
prompt_paradox_end_segment
}
function prompt_paradox_pwd {
local pwd="${PWD/#$HOME/~}"
if [[ "$pwd" == (#m)[/~] ]]; then
_prompt_paradox_pwd="$MATCH"
unset MATCH
else
_prompt_paradox_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}"
if [[ -n "$python_info" ]]; then
prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}'
fi
prompt_paradox_end_segment
}
function prompt_paradox_print_elapsed_time {
prompt_paradox_print_elapsed_time() {
local end_time=$(( SECONDS - _prompt_paradox_start_time ))
local hours minutes seconds remainder
@ -90,13 +84,18 @@ function prompt_paradox_precmd {
unsetopt XTRACE KSH_ARRAYS
# Format PWD.
prompt_paradox_pwd
_prompt_paradox_pwd=$(prompt-pwd)
# Get Git repository information.
if (( $+functions[git-info] )); then
git-info
fi
# Get Python environment information.
if (( $+functions[python-info] )); then
python-info
fi
# Calculate and print the elapsed time.
prompt_paradox_print_elapsed_time
}
@ -108,7 +107,7 @@ function prompt_paradox_preexec {
function prompt_paradox_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook
@ -143,6 +142,9 @@ function prompt_paradox_setup {
'ref' '$(coalesce "%b" "%p" "%c")' \
'status' '%s%D%A%B%S%a%d%m%r%U%u'
# %v - virtualenv name.
zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'
# Define prompts.
PROMPT='
${(e)$(prompt_paradox_build_prompt)}

@ -25,7 +25,7 @@ function prompt_peepcode_precmd {
function prompt_peepcode_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
prompt_opts=(cr percent sp subst)
# Load required functions.
autoload -Uz add-zsh-hook

@ -0,0 +1 @@
../external/powerlevel9k/powerlevel9k.zsh-theme

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save