Showing preview only (344K chars total). Download the full file or copy to clipboard to get everything.
Repository: sorin-ionescu/prezto
Branch: master
Commit: 6225b191463d
Files: 172
Total size: 307.8 KB
Directory structure:
gitextract_da2eg8c5/
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE.md
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .gitmodules
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── init.zsh
├── modules/
│ ├── README.md
│ ├── archive/
│ │ ├── README.md
│ │ └── functions/
│ │ ├── _lsarchive
│ │ ├── _unarchive
│ │ ├── archive
│ │ ├── lsarchive
│ │ └── unarchive
│ ├── autosuggestions/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── command-not-found/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── completion/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── directory/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── dnf/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── docker/
│ │ ├── README.md
│ │ ├── alias.zsh
│ │ └── init.zsh
│ ├── dpkg/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── deb-clone
│ │ │ ├── deb-history
│ │ │ └── deb-kbuild
│ │ └── init.zsh
│ ├── editor/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── emacs/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── environment/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── fasd/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── git/
│ │ ├── README.md
│ │ ├── alias.zsh
│ │ ├── functions/
│ │ │ ├── _git-hub-browse
│ │ │ ├── _git-hub-shorten-url
│ │ │ ├── _git-info
│ │ │ ├── _git-submodule-move
│ │ │ ├── _git-submodule-remove
│ │ │ ├── git-branch-current
│ │ │ ├── git-commit-lost
│ │ │ ├── git-dir
│ │ │ ├── git-hub-browse
│ │ │ ├── git-hub-shorten-url
│ │ │ ├── git-info
│ │ │ ├── git-root
│ │ │ ├── git-stash-clear-interactive
│ │ │ ├── git-stash-dropped
│ │ │ ├── git-stash-recover
│ │ │ ├── git-submodule-move
│ │ │ └── git-submodule-remove
│ │ └── init.zsh
│ ├── gnu-utility/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── gpg/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── haskell/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── helper/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── add-zsh-trap
│ │ └── init.zsh
│ ├── history/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── history-substring-search/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── homebrew/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── macports/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── node/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _grunt
│ │ │ ├── _gulp
│ │ │ ├── node-doc
│ │ │ └── node-info
│ │ └── init.zsh
│ ├── ocaml/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── osx/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _mand_manp
│ │ │ ├── mand
│ │ │ ├── manp
│ │ │ ├── osx-ls-download-history
│ │ │ ├── osx-rm-dir-metadata
│ │ │ ├── osx-rm-download-history
│ │ │ ├── pfd
│ │ │ ├── pfs
│ │ │ ├── ql
│ │ │ ├── tab
│ │ │ └── trash
│ │ └── init.zsh
│ ├── pacman/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── pacman-list-disowned
│ │ │ └── pacman-list-explicit
│ │ └── init.zsh
│ ├── perl/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── perl-info
│ │ └── init.zsh
│ ├── prompt/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── prompt-pwd
│ │ │ ├── prompt_cloud_setup
│ │ │ ├── prompt_damoekri_setup
│ │ │ ├── prompt_giddie_setup
│ │ │ ├── prompt_kylewest_setup
│ │ │ ├── prompt_minimal_setup
│ │ │ ├── prompt_nicoulaj_setup
│ │ │ ├── prompt_paradox_setup
│ │ │ ├── prompt_peepcode_setup
│ │ │ ├── prompt_skwp_setup
│ │ │ ├── prompt_smiley_setup
│ │ │ ├── prompt_sorin_setup
│ │ │ └── prompt_steeef_setup
│ │ └── init.zsh
│ ├── python/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── python-info
│ │ └── init.zsh
│ ├── rails/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── rsync/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── ruby/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── ruby-app-root
│ │ │ └── ruby-info
│ │ └── init.zsh
│ ├── screen/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── spectrum/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── ssh/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── syntax-highlighting/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── terminal/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── tmux/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── utility/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _cdls_popdls_pushdls
│ │ │ ├── _dut
│ │ │ ├── _mkdcd
│ │ │ ├── _noremoteglob
│ │ │ ├── _prep
│ │ │ ├── _psub
│ │ │ ├── diff
│ │ │ ├── dut
│ │ │ ├── make
│ │ │ ├── prep
│ │ │ ├── psub
│ │ │ ├── wdiff
│ │ │ └── zsh-help
│ │ └── init.zsh
│ ├── wakeonlan/
│ │ ├── README.md
│ │ └── functions/
│ │ ├── _wake
│ │ └── wake
│ └── yum/
│ ├── README.md
│ └── init.zsh
└── runcoms/
├── README.md
├── zlogin
├── zlogout
├── zpreztorc
├── zprofile
├── zshenv
└── zshrc
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
[{.gitattributes,.gitignore,.gitmodules}]
indent_style = tab
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!-- 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:
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
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
-
-
-
================================================
FILE: .gitignore
================================================
*.zwc
*.zwc.old
modules/*/cache.zsh
contrib
================================================
FILE: .gitmodules
================================================
[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
[submodule "modules/syntax-highlighting/external"]
path = modules/syntax-highlighting/external
url = https://github.com/zsh-users/zsh-syntax-highlighting.git
[submodule "modules/completion/external"]
path = modules/completion/external
url = https://github.com/zsh-users/zsh-completions.git
[submodule "modules/prompt/external/powerline"]
path = modules/prompt/external/powerline
url = https://github.com/davidjrice/prezto_powerline.git
[submodule "modules/prompt/external/agnoster"]
path = modules/prompt/external/agnoster
url = https://github.com/agnoster/agnoster-zsh-theme.git
[submodule "modules/prompt/external/pure"]
path = modules/prompt/external/pure
url = https://github.com/sindresorhus/pure.git
[submodule "modules/fasd/external"]
path = modules/fasd/external
url = https://github.com/whjvenyl/fasd.git
[submodule "modules/prompt/external/async"]
path = modules/prompt/external/async
url = https://github.com/mafredri/zsh-async.git
[submodule "modules/prompt/external/powerlevel10k"]
path = modules/prompt/external/powerlevel10k
url = https://github.com/romkatv/powerlevel10k.git
shallow = true
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
This project would not exist without all of its users and [contributors][1].
If you have ideas on how to make the configuration easier to maintain or
improve its performance, do not hesitate to fork and send pull requests.
## Issue Reporting
- Check that the issue has not already been reported.
- Check that the issue has not already been fixed in the latest code.
- Open an issue with a clear title and description in grammatically correct,
complete sentences.
## Pull Request
- Read [how to properly contribute to open source projects on GitHub][2].
- Use a topic branch to easily amend a pull request later, if necessary.
- Write [good commit messages][3].
- Squash commits on the topic branch before opening a pull request.
- Use the same coding style and spacing.
- 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 waived for readability.
### Using an Alternative *zprezto* Directory
To work on Prezto without affecting 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:
```console
ZDOTDIR=/path/to/devel-zprezto zsh
```
### Modules
- A *README.md* must be present.
- Large functions must be placed in a *functions* directory.
- Functions that take arguments must have completion.
### Themes
- A screenshots section must be present in the file header.
- The pull request description must have [embedded screenshots][6].
[1]: https://github.com/sorin-ionescu/prezto/contributors
[2]: https://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]: https://google.github.io/styleguide/shell.xml
[6]: https://github.github.com/gfm/#images
================================================
FILE: LICENSE
================================================
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
================================================
FILE: README.md
================================================
# Prezto — Instantly Awesome Zsh
Prezto is the configuration framework for [Zsh][1]; it enriches the command line
interface environment with sane defaults, aliases, functions, auto completion,
and prompt themes.
## Installation
### Manual
Prezto will work with any recent release of Zsh, but the minimum required
version is **4.3.11**.
01. Launch Zsh:
```console
zsh
```
02. Clone the repository:
```console
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
```
<details>
<summary><em>Optional: Installing in <code>$XDG_CONFIG_HOME</code></em></summary>
Optionally, if you already have `$XDG_CONFIG_HOME` configured (usually as
_`$HOME/.config`_ by default) and intend to install Prezto under
_`$XDG_CONFIG_HOME/zsh`_ instead, you can clone the repository there and
configure `$ZDOTDIR` separately if not already configured.
- Clone the repository:
```console
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto"
```
- Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`$HOME/.zshenv`_:
```sh
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}"
[[ -d $XDG_CONFIG_HOME/zsh ]] && export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
source "$ZDOTDIR/.zshenv"
```
</details>
03. Create a new Zsh configuration by copying/linking the Zsh configuration
files provided:
```console
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 configuration files, `ln` in
the above operation will cause an error. In simple cases, you can load
Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your
Zsh configuration intact. For more complicated setups, we recommend that you
back up your original configs and replace them with the provided Prezto
[_`runcoms`_][10].
04. Set Zsh as your default shell:
```console
chsh -s /bin/zsh
```
05. Open a new Zsh terminal window or tab.
### Troubleshooting
If you are not able to find certain commands after switching to Prezto, modify
the `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh
terminal window or tab.
## Updating
Run `zprezto-update` to automatically check if there is an update to Prezto.
If there are no file conflicts, Prezto and its submodules will be automatically
updated. If there are conflicts you will be instructed to go into the
`$ZPREZTODIR` directory and resolve them yourself.
To pull the latest changes and update submodules manually:
```console
cd $ZPREZTODIR
git pull
git submodule sync --recursive
git submodule update --init --recursive
```
## Usage
Prezto has many features disabled by default. Read the source code and the
accompanying README files to learn about what is available.
### Modules
01. Browse [_`modules`_][9] to see what is available.
02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open
a new Zsh terminal window or tab.
### Themes
01. For a list of themes, type `prompt -l`.
02. To preview a theme, type `prompt -p name`.
03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then
open a new Zsh terminal window or tab.
![sorin theme][2]
Note that the [_`git`_][11] module may be required for special symbols to
appear, such as those on the right of the above image. Add `'git'` to the
`pmodule` list (under `zstyle ':prezto:load' pmodule \` in your
_`${ZDOTDIR:-$HOME}/.zpreztorc`_) to enable this module.
### External Modules
01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_.
02. Additional module directories can be added to the
`:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_.
Note that module names need to be unique or they will cause an error when
loading.
```sh
zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
```
## Customization
The project is managed via [Git][3]. We highly recommend that you fork this
project so that you can commit your changes and push them to your fork on
[GitHub][4] to preserve them. If you do not know how to use Git, follow this
[tutorial][5] and bookmark this [reference][6].
## Resources
The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.
## License
This project is licensed under the MIT License.
[1]: https://www.zsh.org
[2]: https://i.imgur.com/nrGV6pg.png "sorin theme"
[3]: https://git-scm.com
[4]: https://github.com
[5]: https://gitimmersion.com
[6]: https://git.github.io/git-reference/
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[8]: https://grml.org/zsh/zsh-lovers.html
[9]: modules#readme
[10]: runcoms#readme
[11]: modules/git#readme
================================================
FILE: init.zsh
================================================
#
# Initializes Prezto.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# Version Check
#
# Check for the minimum supported version.
min_zsh_version='4.3.11'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
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"
}
builtin 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 sync --recursive
git submodule update --init --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
#
# Loads Prezto modules.
function pmodload {
local -a pmodules
local -a pmodule_dirs
local -a locations
local pmodule
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
if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then
print "$0: conflicting module locations: $locations"
continue
fi
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=(${pmodule_location}/functions(-/FN) $fpath)
function {
local pfunction
# Extended globbing is needed for listing autoloadable function directories.
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Load Prezto functions.
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
autoload -Uz "$pfunction"
done
}
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)${pmodule_location}/functions]=()
function {
local pfunction
# Extended globbing is needed for listing autoloadable function
# directories.
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Unload Prezto functions.
for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do
unfunction "$pfunction"
done
}
zstyle ":prezto:module:$pmodule" loaded 'no'
fi
fi
done
}
#
# 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"
fi
# Disable color and theme in dumb terminals.
if [[ $TERM == dumb ]]; then
zstyle ':prezto:*:*' color 'no'
zstyle ':prezto:module:prompt' theme 'off'
fi
# Load Zsh modules.
zstyle -a ':prezto:load' zmodule 'zmodules'
for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}"
unset zmodule{s,}
# Load more specific 'run-help' function from $fpath.
(( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help
# Autoload Zsh functions.
zstyle -a ':prezto:load' zfunction 'zfunctions'
for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction"
unset zfunction{s,}
# Load Prezto modules.
zstyle -a ':prezto:load' pmodule 'pmodules'
pmodload "$pmodules[@]"
unset pmodules
================================================
FILE: modules/README.md
================================================
# Modules
Load modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters.
```sh
zstyle ':prezto:load' pmodule 'environment' 'terminal'
```
## Archive
Provides functions to list and extract archives.
## Autosuggestions
Integrates zsh-autosuggestions into Prezto.
## Command-Not-Found
Loads the command-not-found tool on macOS or Debian-based distributions.
## Completion
Loads and configures <kbd>TAB</kbd> completion and provides additional
completions from the zsh-completions project.
## Directory
Sets directory options and defines directory aliases.
## DNF
Defines _dnf_ aliases.
## Dpkg
Defines _dpkg_ aliases and functions.
## Editor
Sets key bindings.
## Emacs
Enables Emacs dependency management.
## Environment
Sets general shell options and defines environment variables.
## Fasd
Maintains a frequently used file and directory list for fast access.
## Git
Enhances the Git distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
## GNU Utility
Provides for the interactive use of GNU utilities on non-GNU systems.
## GPG
Provides for an easier use of GPG by setting up gpg-agent.
## Haskell
Enables local Haskell package installation.
## Helper
Provides helper functions for developing modules.
## History
Sets history options and defines history aliases.
## History Substring Search
Integrates zsh-history-substring-search into Prezto.
## Homebrew
Defines Homebrew aliases.
## MacPorts
Defines MacPorts aliases and adds MacPorts directories to path variables.
## Node.js
Provides utility functions for Node.js and loads npm completion.
## OCaml
Initializes OCaml package management.
## OSX
Defines macOS aliases and functions.
## Pacman
Provides aliases and functions for the Pacman package manager and frontends.
## Perl
Enables local Perl module installation on macOS and defines alises.
## Prompt
Loads prompt themes.
## Python
Enables local Python and local Python package installation.
## Ruby on Rails
Defines Ruby on Rails aliases.
## Rsync
Defines rsync aliases.
## Ruby
Configures Ruby local gem installation, loads version managers, and defines
aliases.
## GNU Screen
Defines GNU Screen aliases and provides for auto launching it at start-up.
## Spectrum
Provides for easier use of 256 colors and effects.
## SSH
Provides for an easier use of SSH by setting up ssh-agent.
## Syntax Highlighting
Integrates zsh-syntax-highlighting into Prezto.
## Terminal
Sets terminal window and tab titles.
## Tmux
Defines tmux aliases and provides for auto launching it at start-up.
## Utility
Defines general aliases and functions.
## Wake-on-LAN
This module provides a wrapper around the wakeonlan tool.
## Yum
Defines yum aliases.
================================================
FILE: modules/archive/README.md
================================================
# Archive
Provides functions to create, list, and extract archives.
This module must be loaded _before_ the [_`completion`_][1] module so that the
provided completion definitions are loaded automatically by _`completion`_
module.
## 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.
## Supported Formats
The following archive formats are supported when the required utilities are
installed:
- _.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`.
- _.gz_ requires `gunzip`.
- _.bz2_ requires `bunzip2`.
- _.xz_ requires `unxz`.
- _.lzma_ requires `unlzma`.
- _.Z_ requires `uncompress`.
- _.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][2] 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][3]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Matt Hamilton](https://github.com/Eriner)
[1]: ../completion#readme
[2]: https://theunarchiver.com/command-line
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/archive/functions/_lsarchive
================================================
#compdef lsarchive
#autoload
#
# Completes lsarchive.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
_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|zst|jar|rar|7z)(-.)'" && return 0
================================================
FILE: modules/archive/functions/_unarchive
================================================
#compdef unarchive
#autoload
#
# Completes unarchive.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
_arguments \
'(-r --remove)'{-r,--remove}'[remove archive]' \
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z|deb)(-.)'" && return 0
================================================
FILE: modules/archive/functions/archive
================================================
#
# Creates archive file
#
# Authors:
# Matt Hamilton <m@tthamilton.com>
#
# function archive {
local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_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.zst, .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}"
# let paths be handled by actual archive helper
path_to_archive="${@:2}"
# 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[pixz] )); then
_xz_bin='pixz'
else
_xz_bin='xz'
fi
if (( $+commands[lbzip2] )); then
_bzip2_bin='lbzip2'
elif (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2'
else
_bzip2_bin='bzip2'
fi
_zstd_bin='zstd'
case "${archive_name}" in
(*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;;
(*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;;
(*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;;
(*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;;
(*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;;
(*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;;
(*.rar) rar a "${archive_name}" "${=path_to_archive}" ;;
(*.7z) 7za a "${archive_name}" "${=path_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
# }
================================================
FILE: modules/archive/functions/lsarchive
================================================
#
# Lists the contents of archives.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function lsarchive {
local verbose
if (( $# == 0 )); then
cat >&2 <<EOF
usage: $0 [-option] [file ...]
options:
-v, --verbose verbose archive listing
Report bugs to <sorin.ionescu@gmail.com>.
EOF
fi
if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then
verbose=0
shift
fi
while (( $# > 0 )); do
if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2
shift
continue
fi
case "$1:l" in
(*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -t${verbose:+v}f "$1" \
|| xzcat "$1" | tar t${verbose:+v}f - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;;
(*.tar) tar t${verbose:+v}f "$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
success=1
;;
esac
shift
done
# }
================================================
FILE: modules/archive/functions/unarchive
================================================
#
# Extracts the contents of archives.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function unarchive {
local remove_archive
local success
local file_name
local file_path
local extract_dir
local _gzip_bin _bzip2_bin _xz_bin _zstd_bin
if (( $# == 0 )); then
cat >&2 <<EOF
usage: $0 [-option] [file ...]
options:
-r, --remove remove archive
Report bugs to <sorin.ionescu@gmail.com>.
EOF
fi
remove_archive=1
if [[ "$1" == "-r" || "$1" == "--remove" ]]; then
remove_archive=0
shift
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[unpigz] )); then
_gzip_bin='unpigz'
else
_gzip_bin='gunzip'
fi
if (( $+commands[pixz] )); then
_xz_bin='pixz -d'
else
_xz_bin='xz'
fi
if (( $+commands[lbunzip2] )); then
_bzip2_bin='lbunzip2'
elif (( $+commands[pbunzip2] )); then
_bzip2_bin='pbunzip2'
else
_bzip2_bin='bunzip2'
fi
_zstd_bin='zstd'
while (( $# > 0 )); do
if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2
shift
continue
fi
success=0
file_name="${1:t}"
file_path="${1:A}"
extract_dir="${file_name:r}"
case "$1:l" in
(*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;;
(*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \
|| lzcat "$1" | tar -xvf - ;;
(*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;;
(*.tar) tar -xvf "$1" ;;
(*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$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"
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "${file_path}" > /dev/null
cd control; tar xvf ../control.tar.*
cd ../data; tar xvf ../data.tar.*
cd ..; rm control.tar.* data.tar.* debian-binary
cd ..
;;
(*)
print "$0: cannot extract: $1" >&2
success=1
;;
esac
(( success = $success > 0 ? $success : $? ))
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift
done
# }
================================================
FILE: modules/autosuggestions/README.md
================================================
# Autosuggestions
Integrates [zsh-autosuggestions][1] into Prezto, which implements the
[Fish shell][2]'s autosuggestions feature, where the user can type in any part
of a previously entered command and Zsh suggests commands as you type based on
history and completions.
If this module is used in conjunction with the [_`syntax-highlighting`_][3]
module, this module must be loaded _after_ the _`syntax-highlighting`_ module.
Additionally, if this module is used in conjunction with the
[_`history-substring-search`_][4] module, this module must be loaded _after_ the
_`history-substring-search`_ module as well.
To elaborate, the relative order of loading the modules would be
_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.
## Contributors
New features and bug fixes should be submitted to the [zsh-autosuggestions][1]
project according to its rules and regulations. This module will be synchronized
against it.
## Settings
### Highlighting
If colors are enabled, _autosuggestions_ will automatically highlight
positive results.
To enable highlighting for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:autosuggestions' color 'yes'
```
To set the query found color, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:autosuggestions:color' found ''
```
## Troubleshooting
### Autosuggestions from previous sessions don't show up
For autosuggestions from previous shell sessions to work, please make sure you
also have the `history` module enabled.
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/tarruda/zsh-autosuggestions
[2]: https://fishshell.com
[3]: ../syntax-highlighting#readme
[4]: ../history-substring-search#readme
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/autosuggestions/init.zsh
================================================
#
# Integrates zsh-autosuggestions into Prezto.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'editor'
# Source module files.
source "${0:h}/external/zsh-autosuggestions.zsh" || return 1
#
# Highlighting
#
# Set highlight color, default 'fg=8'.
zstyle -s ':prezto:module:autosuggestions:color' found \
'ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE' || ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
# Disable highlighting.
if ! zstyle -t ':prezto:module:autosuggestions' color; then
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=''
fi
#
# Key Bindings
#
if [[ -n "$key_info" ]]; then
# vi
bindkey -M viins "$key_info[Control]F" vi-forward-word
bindkey -M viins "$key_info[Control]E" vi-add-eol
fi
================================================
FILE: modules/command-not-found/README.md
================================================
# Command-Not-Found
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 and Arch Linux based distributions use the [`command-not-found`][1] tool.
macOS uses Homebrew's [`command-not-found` clone][2]. This module will
automatically load it without needing to manually source `handler.sh` from
`.zshrc` per the [instructions][3].
Note: Prior to [Homebrew 4.6.12][4], you may have also needed to tap the
[`command-not-found` Homebrew repository][5]. This will still work as a
fallback when the `command-not-found` handler can't be detected in Homebrew
core, but the repository has been deprecated and may print a warning. After
upgrading Homebrew, it can be untapped.
## Authors
_The authors of this module should be contacted via the [issue tracker][6]._
- [Joseph Booker](https://github.com/sargas)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: https://code.launchpad.net/command-not-found
[2]: https://docs.brew.sh/Command-Not-Found
[3]: https://docs.brew.sh/Command-Not-Found#install
[4]: https://github.com/Homebrew/brew/releases/tag/4.6.12
[5]: https://github.com/Homebrew/homebrew-command-not-found
[6]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/command-not-found/init.zsh
================================================
#
# Displays installation information for not found commands.
#
# Authors:
# Joseph Jon Booker <joe@neoturbine.net>
# Indrajit Raychaudhuri <irc+code@indrajit.com>
#
# Load command-not-found on Debian-based distributions.
if [[ -s /etc/zsh_command_not_found ]]; then
source /etc/zsh_command_not_found
# Load command-not-found on Arch Linux-based distributions.
elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
source /usr/share/doc/pkgfile/command-not-found.zsh
# Load command-not-found on macOS when Homebrew is present. Check explicitly
# for MacOS, since homebrew can be installed on Linux as a supplementary PM
elif [[ "$OSTYPE" =~ ^darwin ]] && (( $+commands[brew] )); then
homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h/Library}
# Look for handler in Homebrew core (as of >=4.6.12), then in Taps (< 4.6.12)
for hb_cnf_handler in "$homebrew_repo"/{Homebrew/command-not-found/handler.sh,Taps/homebrew/homebrew-command-not-found/handler.sh}; do
if [ -f "$hb_cnf_handler" ]; then
source "$hb_cnf_handler"
unset hb_cnf_handler homebrew_repo
break
fi
done
if [ -n "$hb_cnf_handler" ]; then
unset hb_cnf_handler homebrew_repo
return 1
fi
# Return if requirements are not found.
else
return 1
fi
================================================
FILE: modules/completion/README.md
================================================
# Completion
Loads and configures <kbd>TAB</kbd> completion and provides additional
completions from the [zsh-completions][1] project.
This module must be loaded late _after_ the _`utility`_ module and all other
modules that provide completion definitions.
## Options
- `COMPLETE_IN_WORD` complete from both ends of a word.
- `ALWAYS_TO_END` move cursor to the end of a completed word.
- `PATH_DIRS` perform path search even on command names with slashes.
- `AUTO_MENU` show completion menu on a successive <kbd>TAB</kbd> press.
- `AUTO_LIST` automatically list choices on ambiguous completion.
- `AUTO_PARAM_SLASH` if completed parameter is a directory, add a trailing
slash (`/`).
- `EXTENDED_GLOB` needed for file modification glob modifiers with _compinit_.
- `MENU_COMPLETE` do not autoselect the first completion entry.
- `FLOW_CONTROL` disable start/stop characters in shell editor.
## Variables
- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'.
## Settings
### Ignore _`/etc/hosts`_ Entries
To ignore certain entries from static _`/etc/hosts`_ for host completion, add
the following lines in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ with the IP addresses of
the hosts as they appear in _`/etc/hosts`_. Both IP address and the associated
hostname(s) 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
Completions should be submitted to the [zsh-completions][1] project according to
its rules and regulations. This module will be synchronized against it.
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-completions
[2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/completion/init.zsh
================================================
#
# Sets completion options.
#
# Authors:
# Robby Russell <robby@planetargon.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if [[ $TERM == dumb ]]; then
return 1
fi
# Add zsh-completions to $fpath.
fpath=(${0:h}/external/src $fpath)
# Add completion for keg-only brewed curl on macOS when available.
if (( $+commands[brew] )); then
brew_prefix=${HOMEBREW_PREFIX:-${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}}
# $HOMEBREW_PREFIX defaults to $HOMEBREW_REPOSITORY but is explicitly set to
# /usr/local when $HOMEBREW_REPOSITORY is /usr/local/Homebrew.
# https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L66-L69
[[ $brew_prefix == '/usr/local/Homebrew' ]] && brew_prefix=$brew_prefix:h
fpath=($brew_prefix/opt/curl/share/zsh/site-functions(/N) $fpath)
unset brew_prefix
fi
#
# Options
#
setopt COMPLETE_IN_WORD # Complete from both ends of a word.
setopt ALWAYS_TO_END # Move cursor to the end of a completed word.
setopt PATH_DIRS # Perform path search even on command names with slashes.
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.
#
# Variables
#
# Standard style used by default for 'list-colors'
LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'}
#
# Initialization
#
# 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_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump"
# #q expands globs in conditional expressions
if [[ $_comp_path(#qNmh-20) ]]; then
# -C (skip function check) implies -i (skip security check).
compinit -C -d "$_comp_path"
else
mkdir -p "$_comp_path:h"
compinit -i -d "$_comp_path"
# Keep $_comp_path younger than cache time even if it isn't regenerated.
touch "$_comp_path"
fi
unset _comp_path
#
# Styles
#
# Defaults.
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
# Use caching to make completion for commands such as dpkg and apt usable.
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache"
# Case-insensitive (all), partial-word, and then substring completion.
if zstyle -t ':prezto:module:completion:*' case-sensitive; then
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
setopt CASE_GLOB
else
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'm:{[:upper:]}={[:lower:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
unsetopt CASE_GLOB
fi
# Group matches and describe.
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:options' auto-description '%d'
zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' verbose yes
# Fuzzy match mistyped completions.
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. 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))'
# Array completion element sorting.
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Directories
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
zstyle ':completion:*' squeeze-slashes true
# History
zstyle ':completion:*:history-words' stop yes
zstyle ':completion:*:history-words' remove-all-dups yes
zstyle ':completion:*:history-words' list false
zstyle ':completion:*:history-words' menu yes
# Environment Variables
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
# 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_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
${=${(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 }:#*\**}:#*\?*}}
)'
# Don't complete uninteresting users...
zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
mailman mailnull mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
# ... unless we really want to.
zstyle '*' single-ignored show
# Ignore multiple entries.
zstyle ':completion:*:(rm|kill|diff):*' ignore-line other
zstyle ':completion:*:rm:*' file-patterns '*:all-files'
# Kill
zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*' insert-ids single
# Man
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*:manuals.(^1*)' insert-sections true
# Media Players
zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories'
zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories'
# Mutt
if [[ -s "$HOME/.mutt/aliases" ]]; then
zstyle ':completion:*:*:mutt:*' menu yes select
zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*}
fi
# SSH/SCP/RSYNC
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:*' 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:]]##)##' '*@*'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
================================================
FILE: modules/directory/README.md
================================================
# Directory
Sets directory options and defines directory aliases.
## Options
- `AUTO_CD` auto changes to a directory without typing `cd`.
- `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.
- `PUSHD_IGNORE_DUPS` does not store duplicates in the stack.
- `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`.
- `PUSHD_TO_HOME` pushes to the home directory when no argument is given.
- `CDABLE_VARS` changes directory to a path stored in a variable.
- `MULTIOS` writes to multiple descriptors.
- `EXTENDED_GLOB` uses extended globbing syntax.
- `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and
`>>!` to bypass.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:directory:alias' skip 'yes'
```
- `d` prints the contents of the directory stack.
- `1 ... 9` changes the directory to the **n** previous one.
## Authors
_The authors of this module should be contacted via the [issue tracker][1]._
- [James Cox](https://github.com/imajes)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/directory/init.zsh
================================================
#
# Sets directory options and defines directory aliases.
#
# Authors:
# James Cox <james@imaj.es>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# Options
#
setopt AUTO_CD # Auto changes to a directory without typing cd.
setopt AUTO_PUSHD # Push the old directory onto the stack on cd.
setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack.
setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd.
setopt PUSHD_TO_HOME # Push to home directory when no argument is given.
setopt CDABLE_VARS # Change directory to a path stored in a variable.
setopt MULTIOS # Write to multiple descriptors.
setopt EXTENDED_GLOB # Use extended globbing syntax.
unsetopt CLOBBER # Do not overwrite existing files with > and >>.
# Use >! and >>! to bypass.
#
# Aliases
#
if ! zstyle -t ':prezto:module:directory:alias' skip; then
alias -- -='cd -'
alias d='dirs -v'
for index ({1..9}) alias "$index"="cd +${index}"; unset index
fi
================================================
FILE: modules/dnf/README.md
================================================
# DNF
Defines [dnf][1] aliases.
## Aliases
- `dnfc` removes package(s) and leaves.
- `dnfi` installs package(s).
- `dnfh` displays history.
- `dnfl` lists packages.
- `dnfL` lists installed packages.
- `dnfq` displays package information.
- `dnfr` removes package(s).
- `dnfs` searches for a package.
- `dnfu` updates packages.
- `dnfU` upgrades packages.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://fedoraproject.org/wiki/Features/DNF
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/dnf/init.zsh
================================================
#
# Defines dnf aliases.
#
# Authors:
# FireWave <firewave@free.fr>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[dnf] )); then
return 1
fi
#
# Aliases
#
alias dnfc='sudo dnf clean all' # Cleans the cache.
alias dnfh='dnf history' # Displays history.
alias dnfi='sudo dnf install' # Installs package(s).
alias dnfl='dnf list' # Lists packages.
alias dnfL='dnf list installed' # Lists installed packages.
alias dnfq='dnf info' # Displays package information.
alias dnfr='sudo dnf remove' # Removes package(s).
alias dnfs='dnf search' # Searches for a package.
alias dnfu='sudo dnf update' # Updates packages.
alias dnfU='sudo dnf upgrade' # Upgrades packages.
================================================
FILE: modules/docker/README.md
================================================
# Docker
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
- `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
- `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
================================================
FILE: modules/docker/alias.zsh
================================================
#
# 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'
================================================
FILE: modules/docker/init.zsh
================================================
#
# 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"
================================================
FILE: modules/dpkg/README.md
================================================
# Dpkg
Defines [_dpkg_][1] aliases and functions.
## Aliases
- `debc` cleans the cache.
- `debf` displays a file's package.
- `debi` installs packages from repositories.
- `debI` installs packages from files.
- `debq` displays package information.
- `debu` updates the package lists.
- `debU` upgrades outdated packages.
- `debx` removes packages.
- `debX` removes packages, their configuration, and unneeded dependencies.
- `debs` searches for packages.
- `deb-build` creates a basic deb package.
- `deb-kclean` removes all kernel images and headers, except for the ones in
use.
## Functions
- `deb-clone` generates a script that can be used to duplicate a `dpkg`-based
system.
- `deb-history` displays `dpkg` history.
- `deb-kbuild` makes a `dpkg` Linux kernel package.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Daniel Bolton](https://github.com/dbb)
- [Benjamin Boudreau](https://github.com/dreur)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://wiki.debian.org/Teams/Dpkg
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/dpkg/functions/deb-clone
================================================
#
# Generates a script that can be used to duplicate a dpkg-based system.
#
# Authors:
# Daniel Bolton <danielbarrettbolton@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function deb-clone {
local clone_script="${0}.sh"
local package_list=$(
perl \
-m 'AptPkg::Cache' \
-e '
$c=AptPkg::Cache->new;
for (keys %$c) {
push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';
}
print "$_ " for sort @a;
'
)
rm "$clone_script"
print '#!/bin/sh\n' > "$clone_script"
print "aptitude install ${package_list}\n" >> "$clone_script"
chmod +x "$clone_script"
# }
================================================
FILE: modules/dpkg/functions/deb-history
================================================
#
# Displays dpkg history.
#
# Authors:
# Peter Leung <commandolinux@gmail.com>
# Benjamin Boudreau <boudreau.benjamin@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function deb-history {
case "$1" in
(install)
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
;;
(upgrade|remove)
zgrep --no-filename "$1" $(ls -rt /var/log/dpkg*)
;;
(rollback)
zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) \
| grep "$2" -A10000000 \
| grep "$3" -B10000000 \
| awk '{print $4"="$5}'
;;
(list)
zcat $(ls -rt /var/log/dpkg*)
;;
(*)
cat >&2 <<EOF
Commands:
install - List installed packages
upgrade - List upgraded packages
remove - List removed packages
rollback - List rollback information
list - Display contents of dpkg logs
EOF
;;
esac
# }
================================================
FILE: modules/dpkg/functions/deb-kbuild
================================================
#
# Makes a dpkg Linux kernel package.
#
# Authors:
# Daniel Bolton <dbb@9y.com>
# 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
# }
================================================
FILE: modules/dpkg/init.zsh
================================================
#
# Defines dpkg aliases.
#
# Authors:
# Daniel Bolton <dbb@9y.com>
# Benjamin Boudreau <boudreau.benjamin@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[dpkg] && ! $+commands[apt-get] )); then
return 1
fi
#
# Aliases
#
# Cleans the cache.
alias debc='sudo apt-get clean && sudo apt-get autoclean'
# Displays a file's package.
alias debf='apt-file search --regexp'
# Installs packages from repositories.
alias debi='sudo apt-get install'
# Installs packages from files.
alias debI='sudo dpkg -i'
# Displays package information.
alias debq='apt-cache show'
# Updates the package lists.
alias debu='sudo apt-get update'
# Upgrades outdated packages.
alias debU='sudo apt-get update && sudo apt-get dist-upgrade'
# Removes packages.
alias debx='sudo apt-get remove'
# Removes packages, their configuration, and unneeded dependencies.
alias debX='sudo apt-get remove --purge && sudo apt-get autoremove --purge'
# Searches for packages.
if (( $+commands[aptitude] )); then
alias debs='aptitude -F "* %p -> %d \n(%v/%V)" --no-gui --disable-columns search'
else
alias debs='apt-cache search'
fi
# Creates a basic deb package.
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)))"'
================================================
FILE: modules/editor/README.md
================================================
# Editor
Sets editor specific key bindings options and variables.
## Options
- `BEEP` beep on error in line editor.
## Variables
- `WORDCHARS` treat a given set of characters as part of a word.
## Settings
### Wordchars
To change what characters are considered part of a word, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:editor' wordchars <chars>
```
Defaults to `*?_-.[]~&;!#$%^(){}<>`.
### Key bindings
To enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.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
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:editor' dot-expansion 'yes'
```
### PS Context
To enable the prompt context to be set, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:editor' ps-context 'yes'
```
## 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
_The authors of this module should be contacted via the [issue tracker][1]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/editor/init.zsh
================================================
#
# Sets key bindings.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if [[ "$TERM" == 'dumb' ]]; then
return 1
fi
#
# Options
#
setopt BEEP # Beep on error in line editor.
#
# Variables
#
# Treat these characters as part of a word.
zstyle -s ':prezto:module:editor' wordchars 'WORDCHARS' \
|| WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
# Use human-friendly identifiers.
zmodload zsh/terminfo
typeset -gA key_info
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' "^?"
'Delete' "^[[3~"
'F1' "$terminfo[kf1]"
'F2' "$terminfo[kf2]"
'F3' "$terminfo[kf3]"
'F4' "$terminfo[kf4]"
'F5' "$terminfo[kf5]"
'F6' "$terminfo[kf6]"
'F7' "$terminfo[kf7]"
'F8' "$terminfo[kf8]"
'F9' "$terminfo[kf9]"
'F10' "$terminfo[kf10]"
'F11' "$terminfo[kf11]"
'F12' "$terminfo[kf12]"
'Insert' "$terminfo[kich1]"
'Home' "$terminfo[khome]"
'PageUp' "$terminfo[kpp]"
'End' "$terminfo[kend]"
'PageDown' "$terminfo[knp]"
'Up' "$terminfo[kcuu1]"
'Left' "$terminfo[kcub1]"
'Down' "$terminfo[kcud1]"
'Right' "$terminfo[kcuf1]"
'BackTab' "$terminfo[kcbt]"
)
# Set empty $key_info values to an invalid UTF-8 sequence to induce silent
# bindkey failure.
for key in "${(k)key_info[@]}"; do
if [[ -z "$key_info[$key]" ]]; then
key_info[$key]='�'
fi
done
#
# External Editor
#
# Allow command line editing in an external editor.
autoload -Uz edit-command-line
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 {
# Ensure that we're going to set the editor-info for prompts that
# are prezto managed and/or compatible.
if zstyle -t ':prezto:module:prompt' managed; then
# Clean up previous $editor_info.
unset editor_info
typeset -gA editor_info
if [[ "$KEYMAP" == 'vicmd' ]]; then
zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY'
editor_info[keymap]="$REPLY"
else
zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY'
editor_info[keymap]="$REPLY"
if [[ "$ZLE_STATE" == *overwrite* ]]; then
zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY'
editor_info[overwrite]="$REPLY"
else
zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY'
editor_info[overwrite]="$REPLY"
fi
fi
unset REPLY
zle zle-reset-prompt
fi
}
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 zle-reset-prompt
# Updates editor information when the keymap changes.
function zle-keymap-select {
zle editor-info
}
zle -N zle-keymap-select
# Enables terminal application mode and updates editor information.
function zle-line-init {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[smkx] )); then
# Enable terminal application mode.
echoti smkx
fi
# Update editor information.
zle editor-info
}
zle -N zle-line-init
# Disables terminal application mode and updates editor information.
function zle-line-finish {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( $+terminfo[rmkx] )); then
# Disable terminal application mode.
echoti rmkx
fi
# Update editor information.
zle editor-info
}
zle -N zle-line-finish
# Toggles emacs overwrite mode and updates editor information.
function overwrite-mode {
zle .overwrite-mode
zle editor-info
}
zle -N overwrite-mode
# Enters vi insert mode and updates editor information.
function vi-insert {
zle .vi-insert
zle editor-info
}
zle -N vi-insert
# Moves to the first non-blank character then enters vi insert mode and updates
# editor information.
function vi-insert-bol {
zle .vi-insert-bol
zle editor-info
}
zle -N vi-insert-bol
# Enters vi replace mode and updates editor information.
function vi-replace {
zle .vi-replace
zle editor-info
}
zle -N vi-replace
# Expands .... to ../..
function expand-dot-to-parent-directory-path {
if [[ $LBUFFER = *.. ]]; then
LBUFFER+='/..'
else
LBUFFER+='.'
fi
}
zle -N expand-dot-to-parent-directory-path
# Displays an indicator when completing.
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
}
zle -N expand-or-complete-with-indicator
# Inserts 'sudo ' at the beginning of the line.
function prepend-sudo {
if [[ "$BUFFER" != su(do|)\ * ]]; then
BUFFER="sudo $BUFFER"
(( CURSOR += 5 ))
fi
}
zle -N prepend-sudo
# Expand aliases
function glob-alias {
zle _expand_alias
zle expand-word
zle magic-space
}
zle -N glob-alias
# Toggle the comment character at the start of the line. This is meant to work
# around a buggy implementation of pound-insert in zsh.
#
# This is currently only used for the emacs keys because vi-pound-insert has
# been reported to work properly.
function pound-toggle {
if [[ "$BUFFER" = '#'* ]]; then
# Because of an oddity in how zsh handles the cursor when the buffer size
# changes, we need to make this check before we modify the buffer and let
# zsh handle moving the cursor back if it's past the end of the line.
if [[ $CURSOR != $#BUFFER ]]; then
(( CURSOR -= 1 ))
fi
BUFFER="${BUFFER:1}"
else
BUFFER="#$BUFFER"
(( CURSOR += 1 ))
fi
}
zle -N pound-toggle
# Reset to default key bindings.
bindkey -d
#
# Emacs Key Bindings
#
for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}" \
"${key_info[Escape]}${key_info[Left]}"
bindkey -M emacs "$key" emacs-backward-word
for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}" \
"${key_info[Escape]}${key_info[Right]}"
bindkey -M emacs "$key" emacs-forward-word
# Kill to the beginning of the line.
for key in "$key_info[Escape]"{K,k}
bindkey -M emacs "$key" backward-kill-line
# Redo.
bindkey -M emacs "$key_info[Escape]_" redo
# Search previous character.
bindkey -M emacs "$key_info[Control]X$key_info[Control]B" vi-find-prev-char
# Match bracket.
bindkey -M emacs "$key_info[Control]X$key_info[Control]]" vi-match-bracket
# Edit command in an external editor.
bindkey -M emacs "$key_info[Control]X$key_info[Control]E" edit-command-line
if (( $+widgets[history-incremental-pattern-search-backward] )); then
bindkey -M emacs "$key_info[Control]R" \
history-incremental-pattern-search-backward
bindkey -M emacs "$key_info[Control]S" \
history-incremental-pattern-search-forward
fi
# Toggle comment at the start of the line. Note that we use pound-toggle which
# is similar to pount insert, but meant to work around some issues that were
# being seen in iTerm.
bindkey -M emacs "$key_info[Escape];" pound-toggle
#
# Vi Key Bindings
#
# 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
bindkey -M viins "$key_info[Control]_" undo
bindkey -M vicmd "$key_info[Control]R" redo
if (( $+widgets[history-incremental-pattern-search-backward] )); then
bindkey -M vicmd "?" history-incremental-pattern-search-backward
bindkey -M vicmd "/" history-incremental-pattern-search-forward
else
bindkey -M vicmd "?" history-incremental-search-backward
bindkey -M vicmd "/" history-incremental-search-forward
fi
# Toggle comment at the start of the line.
bindkey -M vicmd "#" vi-pound-insert
#
# Emacs and Vi Key Bindings
#
# 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
bindkey -M "$keymap" "$key_info[Left]" backward-char
bindkey -M "$keymap" "$key_info[Right]" forward-char
# Expand history on space.
bindkey -M "$keymap" ' ' magic-space
# Clear screen.
bindkey -M "$keymap" "$key_info[Control]L" clear-screen
# Expand command name to full path.
for key in "$key_info[Escape]"{E,e}
bindkey -M "$keymap" "$key" expand-cmd-path
# Duplicate the previous word.
for key in "$key_info[Escape]"{M,m}
bindkey -M "$keymap" "$key" copy-prev-shell-word
# Use a more flexible push-line.
for key in "$key_info[Control]Q" "$key_info[Escape]"{q,Q}
bindkey -M "$keymap" "$key" push-line-or-edit
# Bind Shift + Tab to go to the previous menu item.
bindkey -M "$keymap" "$key_info[BackTab]" reverse-menu-complete
# Complete in the middle of word.
bindkey -M "$keymap" "$key_info[Control]I" expand-or-complete
# Expand .... to ../..
if zstyle -t ':prezto:module:editor' dot-expansion; then
bindkey -M "$keymap" "." expand-dot-to-parent-directory-path
fi
# Display an indicator when completing.
bindkey -M "$keymap" "$key_info[Control]I" \
expand-or-complete-with-indicator
# 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
fi
#
# Layout
#
# Set the key layout.
zstyle -s ':prezto:module:editor' key-bindings 'key_bindings'
if [[ "$key_bindings" == (emacs|) ]]; then
bindkey -e
elif [[ "$key_bindings" == vi ]]; then
bindkey -v
else
print "prezto: editor: invalid key bindings: $key_bindings" >&2
fi
unset key{,map,_bindings}
================================================
FILE: modules/emacs/README.md
================================================
# Emacs
Enables Emacs dependency management.
## Dependency management
[Carton][1] installs and manages Emacs packages for Emacs package development
and Emacs configuration.
This module prepends the Carton directory to the path variable to enable the
execution of `carton`.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:emacs:alias' skip 'yes'
```
### Carton
- `cai` installs dependencies.
- `cau` updates dependencies.
- `caI` initializes the current directory for dependency management.
- `cae` executes a command which correct dependencies.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://github.com/rejeep/carton
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/emacs/init.zsh
================================================
#
# Configures Emacs dependency management.
#
# Authors: Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if [[ ! -d "$HOME/.cask" ]]; then
return 1
fi
# Prepend Cask bin directory.
path=($HOME/.cask/bin $path)
# Load Carton completion
source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null
#
# Aliases
#
if ! zstyle -t ':prezto:module:emacs:alias' skip; then
alias cai='cask install'
alias cau='cask update'
alias caI='cask init'
alias cae='cask exec'
fi
================================================
FILE: modules/environment/README.md
================================================
# Environment
Sets general shell options and defines environment variables.
This module must be loaded first.
## Contributors
This module **MUST NOT** rely on any command that is not built in Zsh.
Non-interactive environment variables should be defined in
[_`${ZDOTDIR:-$HOME}/.zshenv`_][1].
## Options
### General
- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with
the base character.
- `INTERACTIVE_COMMENTS` enable comments in interactive shell.
- `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
- `MAIL_WARNING` don't print a warning message if a mail file has been accessed.
### Jobs
- `LONG_LIST_JOBS` list jobs in the long format by default.
- `AUTO_RESUME` attempt to resume existing job before creating a new process.
- `NOTIFY` report status of background jobs immediately.
- `BG_NICE` don't run all background jobs at a lower priority.
- `HUP` don't kill jobs on shell exit.
- `CHECK_JOBS` don't report on jobs when shell exit.
## Variables
### Termcap
- `LESS_TERMCAP_mb` begins blinking.
- `LESS_TERMCAP_md` begins bold.
- `LESS_TERMCAP_me` ends mode.
- `LESS_TERMCAP_se` ends standout-mode.
- `LESS_TERMCAP_so` begins standout-mode.
- `LESS_TERMCAP_ue` ends underline.
- `LESS_TERMCAP_us` begins underline.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: ../../runcoms#zshenv
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/environment/init.zsh
================================================
#
# Sets general shell options and defines environment variables.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# 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 && $TERM != dumb ]]; then
if is-at-least 5.2; then
autoload -Uz bracketed-paste-url-magic
zle -N bracketed-paste bracketed-paste-url-magic
elif is-at-least 5.1; then
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
fi
#
# General
#
setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents)
# with the base character.
setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell.
setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
unsetopt MAIL_WARNING # Don't print a warning message if a mail file has
# been accessed.
# Allow mapping Ctrl+S and Ctrl+Q shortcuts
[[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY
#
# Jobs
#
setopt LONG_LIST_JOBS # List jobs in the long format by default.
setopt AUTO_RESUME # Attempt to resume existing job before creating a new process.
setopt NOTIFY # Report status of background jobs immediately.
unsetopt BG_NICE # Don't run all background jobs at a lower priority.
unsetopt HUP # Don't kill jobs on shell exit.
unsetopt CHECK_JOBS # Don't report on jobs when shell exit.
#
# Termcap
#
if zstyle -t ':prezto:environment:termcap' color; then
export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking.
export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold.
export LESS_TERMCAP_me=$'\E[0m' # Ends mode.
export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode.
export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode.
export LESS_TERMCAP_ue=$'\E[0m' # Ends underline.
export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline.
fi
================================================
FILE: modules/fasd/README.md
================================================
# Fasd
[Fasd][1] is a command-line productivity booster, inspired by tools like
[autojump][2], [z][3] and [v][4], it offers quick access to files and
directories by keeping track of files and directories that were previously
accessed.
For shell completion to work, this module must be loaded _after_ the
[_`completion`_][5] 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 installation is found, it will be used
instead of the bundled version.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:fasd:alias' skip 'yes'
```
- `j` changes the current working directory interactively.
## Completion
Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`,
`,,d` at the end of a comma-separated query then hit <kbd>TAB</kbd>.
## Authors
_The authors of this module should be contacted via the [issue tracker][6]._
- [Wei Dai](https://github.com/clvv)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/whjvenyl/fasd
[2]: https://github.com/joelthelion/autojump
[3]: https://github.com/rupa/z
[4]: https://github.com/rupa/v
[5]: ../completion#readme
[6]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/fasd/init.zsh
================================================
#
# Maintains a frequently used file and directory list for fast access.
#
# Authors:
# Wei Dai <x@wei23.net>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'editor'
# If the command doesn't exist externally, we need to fall back to the bundled
# submodule.
if (( ! $+commands[fasd] )); then
source "${0:h}/external/fasd" || return 1
fi
#
# Initialization
#
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh"
if [[ "${commands[fasd]}" -nt "$cache_file" \
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|| ! -s "$cache_file" ]]; then
# Set the base init arguments.
init_args=(zsh-hook)
# Set fasd completion init arguments, if applicable.
if zstyle -t ':prezto:module:completion' loaded; then
init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)
fi
mkdir -p "$cache_file:h"
# Cache init code.
fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null
fi
source "$cache_file"
unset cache_file init_args
function fasd_cd {
local fasd_ret="$(fasd -d "$@")"
if [[ -d "$fasd_ret" ]]; then
cd "$fasd_ret"
else
print "$fasd_ret"
fi
}
#
# Aliases
#
if ! zstyle -t ':prezto:module:fasd:alias' skip; then
# Changes the current working directory interactively.
alias j='fasd_cd -i'
fi
================================================
FILE: modules/git/README.md
================================================
# Git
Enhances the [Git][1] distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
This module must be loaded _before_ the [_`completion`_][13] module so that the
provided completion definitions are loaded automatically by _`completion`_
module.
**Note:** Git **2.11** is the minimum required version for better
[git-rev-list][7] and [git-submodule][14] support.
## Settings
### Log
To configure the format of the [git-log][8] output, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<context>'` with `'brief'`,
`'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:`
switch.
```sh
zstyle ':prezto:module:git:log:context' format '<context>'
```
### Status
Retrieving the status of a repository with [git-submodule][9] can take a long
time. To configure the submodules to ignore, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<state>'` with `'dirty'`,
`'untracked'`, `'all'`, or `'none'`.
```sh
zstyle ':prezto:module:git:status:ignore' submodules '<state>'
```
This setting affects all aliases and functions that call `git-status`.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:git:alias' skip 'yes'
```
### Git
- `g` is short for `git`.
### Branch (b)
- `gb` lists, creates, renames, and deletes branches.
- `gbc` creates a new branch.
- `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.
- `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 (c)
- `gc` records changes to the repository.
- `gcS` records changes to the repository. (Signed)
- `gca` stages all modified and deleted files.
- `gcaS` stages all modified and deleted files. (Signed)
- `gcm` records changes to the repository with the given message.
- `gcmS` records changes to the repository with the given message. (Signed)
- `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_.
- `gcfS` amends the tip of the current branch using the same log message as
_HEAD_. (Signed)
- `gcF` amends the tip of the current branch.
- `gcFS` 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 commits.
- `gcR` removes the _HEAD_ commit.
- `gcs` displays commits with various objects.
- `gcsS` displays commits with GPG signature.
- `gcl` lists lost commits.
- `gcy` displays commits yet to be applied to upstream in the short format.
- `gcY` displays commits yet to be applied to upstream.
### Conflict (C)
- `gCl` lists unmerged files.
- `gCa` adds unmerged file contents to the index.
- `gCe` executes merge-tool on all unmerged file.
- `gCo` checks out our changes for unmerged paths.
- `gCO` checks out our changes for all unmerged paths.
- `gCt` checks out their changes for unmerged paths.
- `gCT` checks out their changes for all unmerged paths.
### Data (d)
- `gd` displays information about files in the index and the work tree.
- `gdc` lists cached files.
- `gdx` lists deleted files.
- `gdm` lists modified files.
- `gdu` lists untracked files.
- `gdk` lists killed files.
- `gdi` lists ignored files.
### Fetch (f)
- `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 (F)
- `gFi` is short for `git flow init`
#### Feature (Ff)
- `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 (Fb)
- `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 (Fl)
- `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 (Fh)
- `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 (Fs)
- `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 (g)
- `gg` displays lines matching a pattern.
- `ggi` displays lines matching a pattern ignoring case.
- `ggl` lists files matching a pattern.
- `ggL` lists files that are not matching a pattern.
- `ggv` displays lines not matching a pattern.
- `ggw` displays lines matching a pattern at word boundary.
### Index (i)
- `gia` adds file contents to the index.
- `giA` adds file contents to the index interactively.
- `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).
- `giX` removes files/directories from the index (recursively and forced).
### Log (l)
- `gl` displays the log.
- `gls` displays the stats log.
- `gld` displays the diff log.
- `glo` displays the one line log.
- `glg` displays the graph log.
- `glb` displays the brief commit log.
- `glc` displays the commit count for each contributor in descending order.
- `glS` displays the log and checks the validity of signed commits.
### Merge (m)
- `gm` joins two or more development histories together.
- `gmC` joins two or more development histories together but does not commit.
- `gmF` joins two or more development histories together but does not commit
generating a merge commit even if the merge resolved as a fast-forward.
- `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
- `gmt` runs the merge conflict resolution tools to resolve conflicts.
### Push (p)
- `gp` updates remote refs along with associated objects.
- `gpf` forcefully updates remote refs along with associated objects using the
safer `--force-with-lease` option.
- `gpF` forcefully updates remote refs along with associated objects using the
riskier `--force` option.
- `gpa` updates remote branches along with associated objects.
- `gpA` updates remote branches and tags along with associated objects.
- `gpt` updates remote tags along with associated objects.
- `gpc` updates remote refs along with associated objects and adds _origin_ as
an upstream reference for the current branch.
- `gpp` pulls and pushes from origin to origin.
### Rebase (r)
- `gr` forward-ports local commits to the updated upstream _HEAD_.
- `gra` aborts the rebase.
- `grc` continues the rebase after merge conflicts are resolved.
- `gri` makes a list of commits to be rebased and opens the editor.
- `grs` skips the current patch.
### Remote (R)
- `gR` manages tracked repositories.
- `gRl` lists remote names and their URLs.
- `gRa` adds a new remote.
- `gRx` removes a remote.
- `gRm` renames a remote.
- `gRu` fetches remotes updates.
- `gRp` prunes all stale remote tracking branches.
- `gRs` displays information about a given remote.
- `gRb` opens a remote on [GitHub][3] in the default browser.
### Stash (s)
- `gs` stashes the changes of the dirty working directory.
- `gsa` applies the changes recorded in a stash to the working directory.
- `gsx` drops a stashed state.
- `gsX` drops all the stashed states.
- `gsl` lists stashed states.
- `gsL` lists dropped stashed states.
- `gsd` displays changes between the stash and its original parent.
- `gsp` removes and applies a single stashed state from the stash list.
- `gsr` recovers a given stashed state.
- `gss` stashes the changes of the dirty working directory, including untracked.
- `gsS` stashes the changes of the dirty working directory interactively.
- `gsw` stashes the changes of the dirty working directory retaining the index.
### Submodule (S)
- `gS` initializes, updates, or inspects submodules.
- `gSa` adds given a repository as a submodule.
- `gSf` evaluates a shell command in each of checked out submodules.
- `gSi` initializes submodules.
- `gSI` initializes and clones submodules recursively.
- `gSl` lists the commits of all submodules.
- `gSm` moves a submodule.
- `gSs` synchronizes submodules' remote URL to the value specified in
_.gitmodules_.
- `gSu` fetches and merges the latest changes for all submodule.
- `gSx` removes a submodule.
### Tag (t)
- `gt` lists tags or creates tag.
- `gtl` lists tags matching pattern.
- `gts` creates a signed tag.
- `gtv` validate a signed tag.
### Working directory (w)
- `gws` displays working-tree status in the short format.
- `gwS` displays working-tree status.
- `gwd` displays changes between the working tree and the index (diff).
- `gwD` displays changes between the working tree and the index (word diff).
- `gwr` resets the current HEAD to the specified state, does not touch the
index nor the working tree.
- `gwR` resets the current HEAD, index and working tree to the specified state.
- `gwc` removes untracked files from the working tree (dry-run).
- `gwC` removes untracked files from the working tree.
- `gwx` removes files from the working tree and from the index recursively.
- `gwX` removes files from the working tree and from the index recursively and
forcefully.
### Shadows
The following aliases may shadow system commands:
- `gb` shadows the [GB][10].
- `gm` shadows the [GraphicsMagick image processor][11].
- `gpt` shadows the [GUID partition table maintenance utility][4].
- `gs` shadows the [Ghostscript interpreter and previewer][5].
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`.
You can temporarily bypass an alias by prefixing it with a backward slash:
`\gpt`.
## Functions
- `git-branch-current` displays the current branch.
- `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][12].
- `git-info` exposes repository information via the `$git_info` associative
array.
- `git-root` displays the path to the working tree root.
- `git-stash-clear-interactive` asks for confirmation before clearing the stash.
- `git-stash-dropped` lists dropped stashed states.
- `git-stash-recover` recovers given dropped stashed states.
- `git-submodule-move` moves a submodule.
- `git-submodule-remove` removes a submodule.
## Theming
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
| Name | Format Code | Description |
| -------- | :---------: | ---------------------------------- |
| action | %s | Special action name |
| ahead | %A | Commits ahead of remote count |
| behind | %B | Commits behind of remote count |
| branch | %b | Branch name |
| commit | %c | Commit hash |
| position | %p | Commits from the nearest tag count |
| remote | %R | Remote name |
| stashed | %S | Stashed states count |
### Concise Contexts
| Name | Format Code | Description |
| --------- | :---------: | --------------------- |
| clean | %C | Clean state |
| dirty | %D | Dirty files count |
| indexed | %i | Indexed files count |
| unindexed | %I | Unindexed files count |
| untracked | %u | Untracked files count |
The following contexts must be enabled with the following zstyle:
```sh
zstyle ':prezto:module:git:info' verbose 'yes'
```
### Verbose Contexts
| Name | Format Code | Description |
| --------- | :---------: | --------------------- |
| added | %a | Added files count |
| clean | %C | Clean state |
| deleted | %d | Deleted files count |
| dirty | %D | Dirty files count |
| modified | %m | Modified files count |
| renamed | %r | Renamed files count |
| unmerged | %U | Unmerged files count |
| untracked | %u | Untracked files count |
### Special Action Contexts
| Name | Format | Description |
| -------------------- | :----: | ---------------------------- |
| apply | value | Applying patches |
| bisect | value | Binary searching for changes |
| cherry-pick | value | Cherry picking |
| cherry-pick-sequence | value | Cherry picking sequence |
| merge | value | Merging |
| 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
function.
## Authors
_The authors of this module should be contacted via the [issue tracker][6]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Colin Hebert](https://github.com/ColinHebert)
[1]: https://www.git-scm.com
[2]: https://hub.github.com
[3]: https://www.github.com
[4]: https://www.manpagez.com/man/8/gpt/
[5]: https://www.manpagez.com/man/1/gs/
[6]: https://github.com/sorin-ionescu/prezto/issues
[7]: https://github.com/sorin-ionescu/prezto/issues/219
[8]: https://git-scm.com/docs/git-log
[9]: https://git-scm.com/docs/git-submodule
[10]: https://getgb.io/
[11]: https://www.manpagez.com/man/1/gm/
[12]: https://github.blog/2011-11-10-git-io-github-url-shortener
[13]: ../completion#readme
[14]: https://github.com/sorin-ionescu/prezto/pull/1929
================================================
FILE: modules/git/alias.zsh
================================================
#
# Defines Git aliases.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# Settings
#
# Log
zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \
|| _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B'
zstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \
|| _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n'
zstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \
|| _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n'
# Status
zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \
|| _git_status_ignore_submodules='none'
#
# Aliases
#
if ! zstyle -t ':prezto:module:git:alias' skip; then
# Git
alias g='git'
# Branch (b)
alias gb='git branch'
alias gba='git branch --all --verbose'
alias gbc='git checkout -b'
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 --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 gcS='git commit --verbose --gpg-sign'
alias gca='git commit --verbose --all'
alias gcaS='git commit --verbose --all --gpg-sign'
alias gcm='git commit --message'
alias gcmS='git commit --message --gpg-sign'
alias gcam='git commit --all --message'
alias gco='git checkout'
alias gcO='git checkout --patch'
alias gcf='git commit --amend --reuse-message HEAD'
alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign'
alias gcF='git commit --verbose --amend'
alias gcFS='git commit --verbose --amend --gpg-sign'
alias gcp='git cherry-pick --ff'
alias gcP='git cherry-pick --no-commit'
alias gcr='git revert'
alias gcR='git reset "HEAD^"'
alias gcs='git show'
alias gcsS='git show --pretty=short --show-signature'
alias gcl='git-commit-lost'
alias gcy='git cherry --verbose --abbrev'
alias gcY='git cherry --verbose'
# Conflict (C)
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 --'
alias gCO='gCo $(gCl)'
alias gCt='git checkout --theirs --'
alias gCT='gCt $(gCl)'
# Data (d)
alias gd='git ls-files'
alias gdc='git ls-files --cached'
alias gdx='git ls-files --deleted'
alias gdm='git ls-files --modified'
alias gdu='git ls-files --other --exclude-standard'
alias gdk='git ls-files --killed'
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 gfma='git pull --autostash'
alias gfr='git pull --rebase'
alias gfra='git pull --rebase --autostash'
# 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'
alias ggl='git grep --files-with-matches'
alias ggL='git grep --files-without-matches'
alias ggv='git grep --invert-match'
alias ggw='git grep --word-regexp'
# Index (i)
alias gia='git add'
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'
alias giX='git rm -r --force --cached'
# Log (l)
alias gl='git log --topo-order --pretty=format:"$_git_log_medium_format"'
alias gls='git log --topo-order --stat --pretty=format:"$_git_log_medium_format"'
alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:"$_git_log_medium_format"'
alias glo='git log --topo-order --pretty=format:"$_git_log_oneline_format"'
alias glg='git log --topo-order --graph --pretty=format:"$_git_log_oneline_format"'
alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"'
alias glc='git shortlog --summary --numbered'
alias glS='git log --show-signature'
# Merge (m)
alias gm='git merge'
alias gmC='git merge --no-commit'
alias gmF='git merge --no-ff'
alias gma='git merge --abort'
alias gmt='git mergetool'
# Push (p)
alias gp='git push'
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'
alias gpc='git push --set-upstream origin "$(git-branch-current 2> /dev/null)"'
alias gpp='git pull origin "$(git-branch-current 2> /dev/null)" && git push origin "$(git-branch-current 2> /dev/null)"'
# Rebase (r)
alias gr='git rebase'
alias gra='git rebase --abort'
alias grc='git rebase --continue'
alias gri='git rebase --interactive'
alias grs='git rebase --skip'
# Remote (R)
alias gR='git remote'
alias gRl='git remote --verbose'
alias gRa='git remote add'
alias gRx='git remote rm'
alias gRm='git remote rename'
alias gRu='git remote update'
alias gRp='git remote prune'
alias gRs='git remote show'
alias gRb='git-hub-browse'
# Stash (s)
alias gs='git stash'
alias gsa='git stash apply'
alias gsx='git stash drop'
alias gsX='git-stash-clear-interactive'
alias gsl='git stash list'
alias gsL='git-stash-dropped'
alias gsd='git stash show --patch --stat'
alias gsp='git stash pop'
alias gsr='git-stash-recover'
alias gss='git stash save --include-untracked'
alias gsS='git stash save --patch --no-keep-index'
alias gsw='git stash save --include-untracked --keep-index'
# Submodule (S)
alias gS='git submodule'
alias gSa='git submodule add'
alias gSf='git submodule foreach'
alias gSi='git submodule init'
alias gSI='git submodule update --init --recursive'
alias gSl='git submodule status'
alias gSm='git-submodule-move'
alias gSs='git submodule sync'
alias gSu='git submodule update --remote --recursive'
alias gSx='git-submodule-remove'
# Tag (t)
alias gt='git tag'
alias gtl='git tag --list'
alias gts='git tag --sign'
alias gtv='git verify-tag'
# Working Copy (w)
alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short'
alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules'
alias gwd='git diff --no-ext-diff'
alias gwD='git diff --no-ext-diff --word-diff'
alias gwr='git reset --soft'
alias gwR='git reset --hard'
alias gwc='git clean --dry-run'
alias gwC='git clean --force'
alias gwx='git rm -r'
alias gwX='git rm -r --force'
fi
================================================
FILE: modules/git/functions/_git-hub-browse
================================================
#compdef git-hub-browse
#autoload
#
# Completes git-hub-browse.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1
fi
local state expl remotes remote branches_or_tags branches tags files ret=1
_arguments -C -s -S \
'1::args:->remote' \
'2::args:->branch-or-tag' \
'3::args:->file' && ret=0
case "$state" in
(remote)
remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2))
_describe -t branch 'remotes' remotes && ret=0
;;
(branch-or-tag)
remote="$words[(($CURRENT - 1))]"
branches_or_tags=($(
command git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2
))
branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/})
tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/})
_describe -t branch 'branches' branches && ret=0
_describe -t tag 'tags' tags && ret=0
;;
(file)
files=(${(0)"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)"})
_wanted file expl 'file' _multi_parts - / files && ret=0
;;
esac
return $ret
================================================
FILE: modules/git/functions/_git-hub-shorten-url
================================================
#compdef git-hub-shorten-url
#autoload
#
# Completes git-hub-shorten-url.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
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
================================================
FILE: modules/git/functions/_git-info
================================================
#compdef git-info
#autoload
#
# Completes git-info.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1
fi
_arguments "1:toggle:((
on\:'enable in-prompt information for the current repository'
off\:'disable in-prompt information for the current repository'
))" && return 0
================================================
FILE: modules/git/functions/_git-submodule-move
================================================
#compdef git-submodule-move
#autoload
#
# Completes git-submodule-move.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1
fi
local state expl ret=1
local -a submodules
local submodule
_arguments -C -s -S \
'1::args:->submodule' \
'2::args:->directory' && ret=0
case "$state" in
(submodule)
while IFS=$'\n' read submodule; do
submodules+=("$submodule")
done < <(
command git config --file "$(git-root)/.gitmodules" --list \
| grep '.path=' \
| cut -d= -f2-
)
_describe -t submodule 'submodules' submodules && ret=0
;;
(directory)
_wanted directories expl 'directory' _path_files -/ || _message 'directory'
;;
esac
return $ret
================================================
FILE: modules/git/functions/_git-submodule-remove
================================================
#compdef git-submodule-remove
#autoload
#
# Completes git-submodule-remove.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1
fi
local -a submodules
local submodule
while IFS=$'\n' read submodule; do
submodules+=("$submodule")
done < <(
command git config --file "$(git-root)/.gitmodules" --list \
| grep '.path=' \
| cut -d= -f2-
)
_describe -t submodule 'submodules' submodules && return 0
================================================
FILE: modules/git/functions/git-branch-current
================================================
#
# Displays the current Git branch.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-branch-current {
if ! command git rev-parse 2> /dev/null; then
print "$0: not a repository: $PWD" >&2
return 1
fi
local ref="$(command git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]; then
print "${ref#refs/heads/}"
return 0
else
return 1
fi
# }
================================================
FILE: modules/git/functions/git-commit-lost
================================================
#
# Lists lost Git commits.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-commit-lost {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
command git fsck 2> /dev/null \
| grep "^dangling commit" \
| awk '{print $3}' \
| command git log \
--date-order \
--no-walk \
--stdin \
--pretty=format:${_git_log_oneline_format}
# }
================================================
FILE: modules/git/functions/git-dir
================================================
#
# Displays the path to the Git directory.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-dir {
local git_dir="${$(command git rev-parse --git-dir):A}"
if [[ -n "$git_dir" ]]; then
print "$git_dir"
return 0
else
print "$0: not a repository: $PWD" >&2
return 1
fi
# }
================================================
FILE: modules/git/functions/git-hub-browse
================================================
#
# Opens a GitHub repository in the default browser.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-hub-browse {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
local remotes remote references reference file url
remote="${1:-origin}"
remotes=($(command git remote show))
if (( $remotes[(i)$remote] == $#remotes + 1 )); then
print "$0: remote not found: $remote" >&2
return 1
fi
url=$(
command git remote get-url "$remote" \
| sed -En "s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\.git#https://\2/\4/\5#p"
)
reference="${${2:-$(git-branch-current)}:-HEAD}"
references=(
HEAD
${${(f)"$(command git ls-remote --heads --tags "$remote")"}##*refs/(heads|tags)/}
)
if (( $references[(i)$reference] == $#references + 1 )); then
print "$0: branch or tag not found: $reference" >&2
return 1
fi
if [[ "$reference" == 'HEAD' ]]; then
reference="$(command git rev-parse HEAD 2> /dev/null)"
fi
file="$3"
if [[ -n "$url" ]]; then
url="$url/tree/$reference/$file"
if [[ -n "$BROWSER" ]]; then
"$BROWSER" "$url"
return 0
else
print "$0: browser not set or set to a non-existent browser" >&2
return 1
fi
else
print "$0: not a Git repository or remote not set" >&2
return 1
fi
# }
================================================
FILE: modules/git/functions/git-hub-shorten-url
================================================
#
# Shortens GitHub URLs.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-hub-shorten-url {
local url="$1" code="$2"
if [[ "$url" == '-' ]]; then
read url <&0
fi
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
print "${${(@M)${(f)"$(curl -s -i 'https://git.io' -F "url=$url" ${(z)code:+ -F "code=$code"})"}:#Location: *}#Location: }"
else
print "$0: command not found: curl" >&2
return 1
fi
# }
================================================
FILE: modules/git/functions/git-info
================================================
#
# Exposes Git repository information via the $git_info associative array.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Gets the Git special action (am, bisect, cherry, merge, rebase, revert).
# Borrowed from vcs_info and edited.
function _git-action {
local action_dir
local git_dir="$(git-dir)"
local apply_formatted
local bisect_formatted
local cherry_pick_formatted
local cherry_pick_sequence_formatted
local merge_formatted
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" \
"$git_dir/rebase" \
"$git_dir/../.dotest"
do
if [[ -d "$action_dir" ]] ; then
zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \
|| apply_formatted='apply'
zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \
|| rebase_formatted='rebase'
if [[ -f "$action_dir/rebasing" ]] ; then
print "$rebase_formatted"
elif [[ -f "$action_dir/applying" ]] ; then
print "$apply_formatted"
else
print "$rebase_formatted/$apply_formatted"
fi
return 0
fi
done
for action_dir in \
"$git_dir/rebase-merge/interactive" \
"$git_dir/.dotest-merge/interactive"
do
if [[ -f "$action_dir" ]]; then
zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \
|| rebase_interactive_formatted='rebase-interactive'
print "$rebase_interactive_formatted"
return 0
fi
done
for action_dir in \
"$git_dir/rebase-merge" \
"$git_dir/.dotest-merge"
do
if [[ -d "$action_dir" ]]; then
zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \
|| rebase_merge_formatted='rebase-merge'
print "$rebase_merge_formatted"
return 0
fi
done
if [[ -f "$git_dir/MERGE_HEAD" ]]; then
zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \
|| merge_formatted='merge'
print "$merge_formatted"
return 0
fi
if [[ -f "$git_dir/CHERRY_PICK_HEAD" ]]; then
if [[ -d "$git_dir/sequencer" ]] ; then
zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \
|| cherry_pick_sequence_formatted='cherry-pick-sequence'
print "$cherry_pick_sequence_formatted"
else
zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \
|| cherry_pick_formatted='cherry-pick'
print "$cherry_pick_formatted"
fi
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"
return 0
fi
return 1
}
# Gets the Git status information.
function git-info {
# Extended globbing is needed to parse repository status.
setopt LOCAL_OPTIONS
setopt EXTENDED_GLOB
local action
local action_format
local action_formatted
local added=0
local added_format
local added_formatted
local ahead=0
local ahead_and_behind
local ahead_and_behind_cmd
local ahead_format
local ahead_formatted
local ahead_or_behind
local behind=0
local behind_format
local behind_formatted
local branch
local branch_format
local branch_formatted
local branch_info
local clean
local clean_formatted
local commit
local commit_format
local commit_formatted
local deleted=0
local deleted_format
local deleted_formatted
local dirty=0
local dirty_format
local dirty_formatted
local ignore_submodules
local indexed=0
local indexed_format
local indexed_formatted
local -A info_formats
local info_format
local modified=0
local modified_format
local modified_formatted
local position
local position_format
local position_formatted
local remote
local remote_cmd
local remote_format
local remote_formatted
local renamed=0
local renamed_format
local renamed_formatted
local stashed=0
local stashed_format
local stashed_formatted
local status_cmd
local status_mode
local unindexed=0
local unindexed_format
local unindexed_formatted
local unmerged=0
local unmerged_format
local unmerged_formatted
local untracked=0
local untracked_format
local untracked_formatted
# Clean up previous $git_info.
unset git_info
typeset -gA git_info
# Return if not inside a Git repository work tree.
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1
fi
if (( $# > 0 )); then
if [[ "$1" == [Oo][Nn] ]]; then
command git config --bool prompt.showinfo true
elif [[ "$1" == [Oo][Ff][Ff] ]]; then
command git config --bool prompt.showinfo false
else
print "usage: $0 [ on | off ]" >&2
fi
return 0
fi
# Return if git-info is disabled.
if ! is-true "${$(command git config --bool prompt.showinfo):-true}"; then
return 1
fi
# Ignore submodule status.
zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules'
# Format commit.
zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
if [[ -n "$commit_format" ]]; then
commit="$(command git rev-parse HEAD 2> /dev/null)"
if [[ -n "$commit" ]]; then
zformat -f commit_formatted "$commit_format" "c:$commit"
fi
fi
# Format stashed.
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
if [[ -n "$stashed_format" ]]; then
commondir=""
if [[ -f "$(git-dir)/commondir" ]]; then
commondir="$(<$(git-dir)/commondir)"
[[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir"
fi
if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then
stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
if (( $stashed > 0 )); then
zformat -f stashed_formatted "$stashed_format" "S:$stashed"
fi
fi
fi
# Format action.
zstyle -s ':prezto:module:git:info:action' format 'action_format'
if [[ -n "$action_format" ]]; then
action="$(_git-action)"
if [[ -n "$action" ]]; then
zformat -f action_formatted "$action_format" "s:$action"
fi
fi
# Get the branch.
branch="${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}"
# Format branch.
zstyle -s ':prezto:module:git:info:branch' format 'branch_format'
if [[ -n "$branch" && -n "$branch_format" ]]; then
zformat -f branch_formatted "$branch_format" "b:$branch"
fi
# Format position.
zstyle -s ':prezto:module:git:info:position' format 'position_format'
if [[ -z "$branch" && -n "$position_format" ]]; then
position="$(command git describe --contains --all HEAD 2> /dev/null)"
if [[ -n "$position" ]]; then
zformat -f position_formatted "$position_format" "p:$position"
fi
fi
# Format remote.
zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
if [[ -n "$branch" && -n "$remote_format" ]]; then
# Gets the remote name.
remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
if [[ -n "$remote" ]]; then
zformat -f remote_formatted "$remote_format" "R:$remote"
fi
fi
zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'
zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then
# Gets the commit difference counts between local and remote.
ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}'
# Get ahead and behind counts.
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
# Format ahead.
if [[ -n "$ahead_format" ]]; then
ahead="$ahead_and_behind[(pws:\t:)1]"
if (( ahead > 0 )); then
zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi
fi
# Format behind.
if [[ -n "$behind_format" ]]; then
behind="$ahead_and_behind[(pws:\t:)2]"
if (( behind > 0 )); then
zformat -f behind_formatted "$behind_format" "B:$behind"
fi
fi
fi
# Get status type.
if ! zstyle -t ':prezto:module:git:info' verbose; then
# Format indexed.
zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format'
if [[ -n "$indexed_format" ]]; then
((
indexed+=$(
command git diff-index \
--no-ext-diff \
--name-only \
--cached \
--ignore-submodules=${ignore_submodules:-none} \
HEAD \
2> /dev/null \
| wc -l
)
))
if (( indexed > 0 )); then
zformat -f indexed_formatted "$indexed_format" "i:$indexed"
fi
fi
# Format unindexed.
zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format'
if [[ -n "$unindexed_format" ]]; then
((
unindexed+=$(
command git diff-files \
--no-ext-diff \
--name-only \
--ignore-submodules=${ignore_submodules:-none} \
2> /dev/null \
| wc -l
)
))
if (( unindexed > 0 )); then
zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed"
fi
fi
# Format untracked.
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
if [[ -n "$untracked_format" ]]; then
((
untracked+=$(
command git ls-files \
--other \
--exclude-standard \
2> /dev/null \
| wc -l
)
))
if (( untracked > 0 )); then
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
fi
fi
(( dirty = indexed + unindexed + untracked ))
else
# Use porcelain status for easy parsing.
status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}"
# Get current status.
while IFS=$'\n' read line; do
# Count added, deleted, modified, renamed, unmerged, untracked, dirty.
# T (type change) is undocumented, see http://git.io/FnpMGw.
# For a table of scenarii, see http://i.imgur.com/2YLu1.png.
[[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ ))
[[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ ))
[[ "$line" == ?[MT]\ * ]] && (( modified++ ))
[[ "$line" == R?\ * ]] && (( renamed++ ))
[[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ ))
[[ "$line" == \?\?\ * ]] && (( untracked++ ))
(( dirty++ ))
done < <(${(z)status_cmd} 2> /dev/null)
# Format added.
if (( added > 0 )); then
zstyle -s ':prezto:module:git:info:added' format 'added_format'
zformat -f added_formatted "$added_format" "a:$added"
fi
# Format deleted.
if (( deleted > 0 )); then
zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'
zformat -f deleted_formatted "$deleted_format" "d:$deleted"
fi
# Format modified.
if (( modified > 0 )); then
zstyle -s ':prezto:module:git:info:modified' format 'modified_format'
zformat -f modified_formatted "$modified_format" "m:$modified"
fi
# Format renamed.
if (( renamed > 0 )); then
zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'
zformat -f renamed_formatted "$renamed_format" "r:$renamed"
fi
# Format unmerged.
if (( unmerged > 0 )); then
zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'
zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged"
fi
# Format untracked.
if (( untracked > 0 )); then
zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'
zformat -f untracked_formatted "$untracked_format" "u:$untracked"
fi
fi
# Format dirty and clean.
if (( dirty > 0 )); then
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
zformat -f dirty_formatted "$dirty_format" "D:$dirty"
# Overwrite branch format to use dirty-branch format
zstyle -s ':prezto:module:git:info:dirty-branch' format 'branch_format'
if [[ -n "$branch" && -n "$branch_format" ]]; then
zformat -f branch_formatted "$branch_format" "b:$branch"
fi
else
zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'
fi
# Format info.
zstyle -a ':prezto:module:git:info:keys' format 'info_formats'
for info_format in ${(k)info_formats}; do
zformat -f REPLY "$info_formats[$info_format]" \
"a:$added_formatted" \
"A:$ahead_formatted" \
"B:$behind_formatted" \
"b:$branch_formatted" \
"C:$clean_formatted" \
"c:$commit_formatted" \
"d:$deleted_formatted" \
"D:$dirty_formatted" \
"i:$indexed_formatted" \
"I:$unindexed_formatted" \
"m:$modified_formatted" \
"p:$position_formatted" \
"R:$remote_formatted" \
"r:$renamed_formatted" \
"s:$action_formatted" \
"S:$stashed_formatted" \
"U:$unmerged_formatted" \
"u:$untracked_formatted"
git_info[$info_format]="$REPLY"
done
unset REPLY
return 0
}
git-info "$@"
================================================
FILE: modules/git/functions/git-root
================================================
#
# Displays the path to the working tree root.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-root {
local root="$(command git rev-parse --show-toplevel 2> /dev/null)"
if [[ -n "$root" ]]; then
print "$root"
return 0
else
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
# }
================================================
FILE: modules/git/functions/git-stash-clear-interactive
================================================
#
# Asks for confirmation before clearing the Git stash.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-clear-interactive {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
local stashed
if [[ -f "$(git-dir)/refs/stash" ]]; then
stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
if (( $stashed > 0 )); then
if read -q "?Clear $stashed stashed state(s) [y/N]? "; then
command git stash clear
fi
fi
fi
# }
================================================
FILE: modules/git/functions/git-stash-dropped
================================================
#
# Lists dropped Git stashed states.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-dropped {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
command git fsck --unreachable 2> /dev/null \
| grep 'commit' \
| awk '{print $3}' \
| command git log \
--pretty=format:$_git_log_oneline_format \
--extended-regexp \
--grep="${1:-(WIP )?[Oo]n [^:]+:}" \
--merges \
--no-walk \
--stdin
# }
================================================
FILE: modules/git/functions/git-stash-recover
================================================
#
# Recovers dropped Git stashed states.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-stash-recover {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
fi
local commit
for commit in "$@"; do
command git update-ref \
-m "$(command git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit"
done
# }
================================================
FILE: modules/git/functions/git-submodule-move
================================================
#
# Moves a Git submodule.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-submodule-move {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
elif [[ "$PWD" != "$(git-root)" ]]; then
print "$0: must be run from the root of the work tree" >&2
return 1
fi
local src="$1"
local dst="$2"
local url
url="$(command git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")"
if [[ -z "$url" ]]; then
print "$0: submodule not found: $src" >&2
return 1
fi
mkdir -p "$dst:h"
git-submodule-remove "$src"
command git submodule add "$url" "$dst"
return 0
# }
================================================
FILE: modules/git/functions/git-submodule-remove
================================================
#
# Removes a Git submodule.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function git-submodule-remove {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2
return 1
elif [[ "$PWD" != "$(git-root)" ]]; then
print "$0: must be run from the root of the work tree" >&2
return 1
elif ! command git config --file .gitmodules --get "submodule.${1}.path" &> /dev/null; then
print "$0: submodule not found: $1" >&2
return 1
fi
command git config --file "$(git-dir)/config" --remove-section "submodule.${1}" &> /dev/null
command git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &> /dev/null
command git add .gitmodules
command git rm --cached -rf "$1"
rm -rf "$1"
rm -rf "$(git-dir)/modules/$1"
return 0
# }
================================================
FILE: modules/git/init.zsh
================================================
#
# Provides Git aliases and functions.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[git] )); then
return 1
fi
# Load dependencies.
pmodload 'helper'
# Load 'run-help' function.
autoload -Uz run-help-git
# Source module files.
source "${0:h}/alias.zsh"
================================================
FILE: modules/gnu-utility/README.md
================================================
# GNU Utility
Provides for the interactive use of GNU utilities on BSD systems.
Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.,
`ls` instead of `gls`, is not recommended since scripts that target other
utilities will be broken.
This module wraps GNU utilities in functions without a prefix for interactive
use.
This module must be loaded _before_ the [_`utility`_][1] module so that GNU
utilities enabled in this module are available for configuration in _`utility`_
module.
## Settings
### Prefix
To use a different prefix, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix.
```sh
zstyle ':prezto:module:gnu-utility' prefix 'g'
```
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: ../utility#readme
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/gnu-utility/init.zsh
================================================
#
# Provides for the interactive use of GNU utilities on BSD systems.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Get the prefix or use the default.
zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \
|| _gnu_utility_p='g'
# Return if requirements are not found.
if (( ! $+commands[${_gnu_utility_p}whoami] )); then
return 1
fi
_gnu_utility_cmds=(
# Coreutils
'[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp'
'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut'
'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'
'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join'
'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo'
'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od'
'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd'
'readlink' 'realpath' 'rm' 'rmdir' 'runcon'
'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'
'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail'
'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty'
'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'
'wc' 'who' 'whoami' 'yes'
# The following utilities are not part of Coreutils but installed separately.
# Binutils
'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm'
'objcopy' 'objdump' 'ranlib' 'readelf'
'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres'
# Findutils
'find' 'locate' 'oldfind' 'updatedb' 'xargs'
# Libtool
'libtool' 'libtoolize'
# Miscellaneous
'awk' '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] \
&& ! $+builtins[$_gnu_utility_cmd] )); then
eval "
function $_gnu_utility_cmd {
'$commands[$_gnu_utility_pcmd]' \"\$@\"
}
"
fi
done
unset _gnu_utility_{p,cmds,cmd,pcmd}
================================================
FILE: modules/gpg/README.md
================================================
# GPG
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
## Settings
### SSH
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
replacement for `ssh-agent`, add the following line to
_`$GNUPGHOME/gpg-agent.conf`_ or _`$$HOME/.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.
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.gnupg.org
[2]: https://linux.die.net/man/1/gpg-agent
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/gpg/init.zsh
================================================
#
# Provides for an easier use of GPG by setting up gpg-agent.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[gpg-agent] )); then
return 1
fi
# Set the default paths to gpg-agent files.
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
_gpg_agent_env="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env"
# 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
mkdir -p "$_gpg_agent_env:h"
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
fi
fi
# Inform gpg-agent of the current TTY for user prompts.
export GPG_TTY=$TTY
# Integrate with the SSH module.
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
# Load required functions.
autoload -Uz add-zsh-hook
# Override the ssh-agent environment file default path.
_ssh_agent_env="$_gpg_agent_env"
# Load the SSH module for additional processing.
pmodload 'ssh'
# Updates the GPG-Agent TTY before every command since SSH does not set it.
function _gpg-agent-update-tty {
gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null
}
add-zsh-hook preexec _gpg-agent-update-tty
fi
# Clean up.
unset _gpg_agent_{conf,env}
# Disable GUI prompts inside SSH.
if [[ -n "$SSH_CONNECTION" ]]; then
export PINENTRY_USER_DATA='USE_CURSES=1'
fi
================================================
FILE: modules/haskell/README.md
================================================
# Haskell
Enables local Haskell package installation.
## Per-user Package Installation
[Cabal][1], the Haskell package manager, can install packages into per user
directories.
This module prepends per user directories to the relevant path variables to
enable the execution of user installed executables and the reading of
documentation.
### Usage
Install packages into per user directories with `cabal install --user`.
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://www.haskell.org/cabal/
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/haskell/init.zsh
================================================
#
# Enables local Haskell package installation.
#
# Authors:
# Sebastian Wiesner <lunaryorn@googlemail.com>
#
# Return if requirements are not found.
if (( ! $+commands[ghc] )); then
return 1
fi
# Load dependencies.
pmodload 'helper'
# Prepend Cabal per user directories to PATH.
if is-darwin && [[ -d $HOME/Library/Haskell ]]; then
path=($HOME/Library/Haskell/bin(/N) $path)
else
path=($HOME/.cabal/bin(/N) $path)
fi
================================================
FILE: modules/helper/README.md
================================================
# Helper
Provides helper functions for developing modules.
## Functions
- `add-zsh-trap` adds a function name to a list to be called when a trap is
triggered.
- `is-autoloadable` checks if a file can be autoloaded by trying to load it in
a subshell.
- `is-callable` checks if a name is a command, function, or alias.
- `is-true` checks a boolean variable for "true".
- `coalesce` prints the first non-empty string in the arguments array.
- `is-darwin` checks if running on macOS Darwin.
- `is-linux` checks if running on Linux.
- `is-bsd` checks if running on BSD.
- `is-cygwin` checks if running on Cygwin (Windows).
- `is-termux` checks if running on Termux (Android).
## Authors
_The authors of this module should be contacted via the [issue tracker][1]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/helper/functions/add-zsh-trap
================================================
#
# Provides for trapping UNIX signals and calling callback functions when a trap
# is triggered.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Adds a function name to a list to be called when a trap is triggered.
function add-zsh-trap {
if (( $# < 2 )); then
print "usage: $0 type function" >&2
return 1
fi
if [[ -z "$signals[(r)$1]" ]]; then
print "$0: unknown signal: $1" >&2
return 1
fi
local trap_functions="TRAP${1}_FUNCTIONS"
if (( ! ${(P)+trap_functions} )); then
typeset -gaU "$trap_functions"
fi
eval "$trap_functions+="$2""
if (( ! $+functions[TRAP${1}] )); then
eval "
function TRAP${1} {
for trap_function in \"\$TRAP${1}_FUNCTIONS[@]\"; do
if (( \$+functions[\$trap_function] )); then
\"\$trap_function\" \"\$1\"
fi
done
return \$(( 128 + \$1 ))
}
"
fi
}
add-zsh-trap "$@"
================================================
FILE: modules/helper/init.zsh
================================================
#
# Defines helper functions.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Checks if a file can be autoloaded by trying to load it in a subshell.
function is-autoloadable {
( unfunction $1 ; autoload -U +X $1 ) &> /dev/null
}
# Checks if a name is a command, function, or alias.
function is-callable {
(( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] ))
}
# Checks a boolean variable for "true".
# Case insensitive: "1", "y", "yes", "t", "true", "o", and "on".
function is-true {
[[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]]
}
# Prints the first non-empty string in the arguments array.
function coalesce {
for arg in $argv; do
print "$arg"
return 0
done
return 1
}
# Checks if running on macOS Darwin.
function is-darwin {
[[ "$OSTYPE" == darwin* ]]
}
# Checks if running on Linux.
function is-linux {
[[ "$OSTYPE" == linux* ]]
}
# Checks if running on BSD.
function is-bsd {
[[ "$OSTYPE" == *bsd* ]]
}
# Checks if running on Cygwin (Windows).
function is-cygwin {
[[ "$OSTYPE" == cygwin* ]]
}
# Checks if running on termux (Android).
function is-termux {
[[ "$OSTYPE" == linux-android ]]
}
================================================
FILE: modules/history/README.md
================================================
# History
Sets [history][1] options and defines history aliases.
**Note:** Default path of `HISTFILE` has changed from
_`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_. The file
will be automatically renamed if possible (when the new one doesn't exist).
Otherwise, if you want to preserve previous history, you will need to move them
from _`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_.
Alternately, you can set `HISTFILE` manually to _`${ZDOTDIR:-$HOME}/.zhistory`_.
## Options
- `BANG_HIST` treats the **!** character specially during expansion.
- `EXTENDED_HISTORY` writes the history file in the _:start:elapsed;command_
format.
- `SHARE_HISTORY` shares history between all sessions. Note that
`SHARE_HISTORY`, `INC_APPEND_HISTORY`, and `INC_APPEND_HISTORY_TIME` are
mutually exclusive.
- `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history.
- `HIST_IGNORE_DUPS` does not record an event that was just recorded again.
- `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a
duplicate.
- `HIST_FIND_NO_DUPS` does not display a previously found event.
- `HIST_IGNORE_SPACE` does not record an event starting with a space.
- `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file.
- `HIST_VERIFY` does not execute immediately upon history expansion.
- `HIST_BEEP` beeps when accessing non-existent history.
## Variables
- `HISTFILE` stores the path to the history file.
- `HISTSIZE` stores the maximum number of events to save in the internal history.
- `SAVEHIST` stores the maximum number of events to save in the history file.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:history:alias' skip 'yes'
```
- `history-stat` lists the ten most used commands
## Settings
### histfile
Can be configured either by setting HISTFILE manually before loading this
module or by using zstyle:
```sh
zstyle ':prezto:module:history' histfile "<file_name>"
```
defaults to "${ZDOTDIR:-$HOME}/.zsh_history".
### histsize
```sh
zstyle ':prezto:module:history' histsize <number>
```
defaults to 10000.
### savehist
```sh
zstyle ':prezto:module:history' savehist <number>
```
defaults to histsize
## Authors
_The authors of this module should be contacted via the [issue tracker][2]._
- [Robby Russell](https://github.com/robbyrussell)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: https://zsh.sourceforge.net/Guide/zshguide02.html#l16
[2]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/history/init.zsh
================================================
#
# Sets history options and defines history aliases.
#
# Authors:
# Robby Russell <robby@planetargon.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# Options
#
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.
setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.
setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate.
setopt HIST_FIND_NO_DUPS # Do not display a previously found event.
setopt HIST_IGNORE_SPACE # Do not record an event starting with a space.
setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file.
setopt HIST_VERIFY # Do not execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing non-existent history.
#
# Variables
#
zstyle -s ':prezto:module:history' histfile 'HISTFILE' \
|| HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file.
zstyle -s ':prezto:module:history' histsize 'HISTSIZE' \
|| HISTSIZE=10000 # The maximum number of events to save in the internal history.
zstyle -s ':prezto:module:history' savehist 'SAVEHIST' \
|| SAVEHIST=$HISTSIZE # The maximum number of events to save in the history file.
#
# Aliases
#
if ! zstyle -t ':prezto:module:history:alias' skip; then
# Lists the ten most used commands.
alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
fi
================================================
FILE: modules/history-substring-search/README.md
================================================
# History Substring Search
Integrates [`zsh-history-substring-search`][1] into Prezto, which implements 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 conjunction with the [_`syntax-highlighting`_][3]
module, this module must be loaded _after_ the _`syntax-highlighting`_ module.
Additionally, if this module is used in conjunction with the
[_`autosuggestions`_][4] module, this module must be loaded _before_ the
_`autosuggestions`_ module.
To elaborate, the relative order of loading the modules would be
_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.
## Contributors
New features and bug fixes should be submitted to the
[`zsh-history-substring-search`][1] project according to its rules and
regulations. This module will be synchronized against it.
## Settings
### Case Sensitivity
To enable case-sensitivity for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
```
### Highlighting
If colors are enabled, _history-substring-search_ will automatically highlight
positive results.
To disable highlighting for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' color 'no'
```
To set the query found color, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search:color' found ''
```
To set the query not found color, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search:color' not-found ''
```
To set the search globbing flags, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' globbing-flags ''
```
### Case sensitive search
To set the search case-sensitivity, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
```
### Fuzzy search
To enable search for fuzzy matches, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' fuzzy 'yes'
```
### Unique results
To enable unique results, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' unique 'yes'
```
### Prefixed search
To enable prefixed search matches, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' prefixed 'yes'
```
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Suraj N. Kurapati](https://github.com/sunaku)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-history-substring-search
[2]: https://fishshell.com
[3]: ../syntax-highlighting#readme
[4]: ../autosuggestions#readme
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/history-substring-search/init.zsh
================================================
#
# Integrates history-substring-search into Prezto.
#
# Authors:
# Suraj N. Kurapati <sunaku@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'editor'
# Source module files.
if (( ! $+functions[history-substring-search-up] )); then
source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
fi
#
# Search
#
zstyle -s ':prezto:module:history-substring-search:color' found \
'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \
|| HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'
zstyle -s ':prezto:module:history-substring-search:color' not-found \
'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \
|| HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'
zstyle -s ':prezto:module:history-substring-search' globbing-flags \
'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \
|| HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'
if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then
HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS="${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}"
fi
if ! zstyle -t ':prezto:module:history-substring-search' color; then
unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND}
fi
if zstyle -t ':prezto:module:history-substring-search' fuzzy; then
HISTORY_SUBSTRING_SEARCH_FUZZY=1
fi
if zstyle -t ':prezto:module:history-substring-search' unique; then
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1
fi
if zstyle -t ':prezto:module:history-substring-search' prefixed; then
HISTORY_SUBSTRING_SEARCH_PREFIXED=1
fi
#
# Key Bindings
#
if [[ -n "$key_info" ]]; then
# Emacs
bindkey -M emacs "$key_info[Control]P" history-substring-search-up
bindkey -M emacs "$key_info[Control]N" history-substring-search-down
# Vi
bindkey -M vicmd "k" history-substring-search-up
bindkey -M vicmd "j" history-substring-search-down
# Emacs and Vi
for keymap in 'emacs' 'viins'; do
bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up
bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down
done
unset keymap
fi
================================================
FILE: modules/homebrew/README.md
================================================
# Homebrew
Defines Homebrew specific environment variables and aliases.
## Variables
Execute the following to list the environment variables loaded in the shell:
```sh
brew shellenv
```
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:homebrew:alias' skip 'yes'
```
### Homebrew Core
- `brewc` cleans outdated brews and their cached archives.
- `brewi` installs a formula.
- `brewL` lists installed formulae that are not dependencies of another
installed formula.
- `brewl` lists installed formulae.
- `brewo` lists brews which have an update available.
- `brews` searches for a formula.
- `brewu` upgrades outdated formulae.
- `brewx` uninstalls a formula.
### Homebrew Cask
- `caski` installs a cask.
- `caskl` lists installed casks.
- `casko` lists casks which have an update available.
- `casks` searches for a cask.
- `casku` upgrades outdated casks.
- `caskx` uninstalls a cask.
## Authors
_The authors of this module should be contacted via the [issue tracker][1]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Griffin Yourick](https://github.com/tough-griff)
[1]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/homebrew/init.zsh
================================================
#
# Defines Homebrew aliases.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found.
if ! is-darwin && ! is-linux; then
return 1
fi
#
# Variables
#
# Load standard Homebrew shellenv into the shell session.
# Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related
# variables as they are already handled in standard zsh configuration.
if (( $+commands[brew] )); then
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-shellenv-cache.zsh"
if [[ "$commands[brew]" -nt "$cache_file" \
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|| ! -s "$cache_file" ]]; then
mkdir -p "$cache_file:h"
# Cache the result.
echo "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" >! "$cache_file" 2> /dev/null
fi
source "$cache_file"
unset cache_file
fi
#
# Aliases
#
# Homebrew
if ! zstyle -t ':prezto:module:homebrew:alias' skip; then
alias brewc='brew cleanup'
alias brewi='brew install'
alias brewL='brew leaves'
alias brewl='brew list'
alias brewo='brew outdated'
alias brews='brew search'
alias brewu='brew upgrade'
alias brewx='brew uninstall'
# Homebrew Cask
alias caski='brew install --cask'
alias caskl='brew list --cask'
alias casko='brew outdated --cask'
alias casks='brew search --cask'
alias casku='brew upgrade --cask'
alias caskx='brew uninstall --cask'
fi
================================================
FILE: modules/macports/README.md
================================================
# MacPorts
Defines MacPorts aliases and adds MacPorts directories to path variables.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:macports:alias' skip 'yes'
```
- `portc` cleans the files used to build ports.
- `porti` installs a port.
- `ports` searches for a port.
- `portu` upgrades a port.
- `portU` upgrades MacPorts, the ports collection, and outdated ports.
- `portx` uninstalls a port.
- `portX` uninstalls inactive ports.
## Authors
_The authors of this module should be contacted via the [issue tracker][1]._
- [Matt Cable](https://github.com/curiousstranger)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/macports/init.zsh
================================================
#
# Defines MacPorts aliases and adds MacPorts directories to path variables.
#
# Authors:
# Matt Cable <wozz@wookie.net>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found.
if ! is-darwin; then
return 1
fi
#
# Paths
#
# Set the list of directories that Zsh searches for programs.
path=(
/opt/local/{bin,sbin}
$path
)
#
# Aliases
#
if ! zstyle -t ':prezto:module:macports:alias' skip; then
alias portc='sudo port clean --all installed'
alias porti='sudo port install'
alias ports='port search'
alias portU='sudo port selfupdate && sudo port upgrade outdated'
alias portu='sudo port upgrade'
alias portX='sudo port -u uninstall'
alias portx='sudo port uninstall'
fi
================================================
FILE: modules/node/README.md
================================================
# Node.js
Provides utility functions for [Node.js][1], loads the Node Version Manager, and
enables [_npm_][2] completion.
This module must be loaded _before_ the _`completion`_ module so that the
provided completion definitions are loaded.
## nodenv
[_nodenv_][5] does one thing well - it is concerned solely with switching
Node versions. It is simple and predictable, Just Works, and is rock solid in
production. nodenv is forked from the popular [_rbenv_][6].
This will be loaded automatically if nodenv is installed in `$NODENV_ROOT`,
_`$XDG_CONFIG_HOME/nodenv`_, _`~/.nodenv`_, or `nodenv` is on the path.
## nvm
[_nvm_][7] allows for managing multiple, isolated Node.js installations in the
home directory.
This will be loaded automatically if nvm is installed in `$NVM_DIR`,
_`$XDG_CONFIG_HOME/nvm`_, _`~/.nvm`_, or is installed with homebrew.
## Variables
- `N_PREFIX` stores the path to [_n_][8] cache.
## Aliases
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:node:alias' skip 'yes'
```
### npm
- `npmi` install a package.
- `npml` list installed packages.
- `npmo` check for outdated packages.
- `npmp` publish a package.
- `npmP` remove extraneous packages.
- `npmr` run arbitrary package scripts.
- `npms` search for packages.
- `npmt` test a package.
- `npmu` update packages.
- `npmx` uninstalls a package.
- `npmci` install a project with a clean slate.
- `npmcit` install a project with a clean slate and run tests.
- `npmit` install package(s) and run tests.
## Functions
- `node-doc` opens the Node.js online [API documentation][3] in the default
browser.
- `node-info` exposes information about the Node.js environment via the
`$node_info` associative array.
## Theming
To display the version number of the current Node.js version, define the
following style inside the `prompt_name_setup` function.
```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.
## Authors
_The authors of this module should be contacted via the [issue tracker][4]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Zeh Rizzatti](https://github.com/zehrizzatti)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: http://nodejs.org
[2]: http://npmjs.org
[3]: http://nodejs.org/api
[4]: https://github.com/sorin-ionescu/prezto/issues
[5]: https://github.com/nodenv/nodenv
[6]: https://github.com/sstephenson/rbenv
[7]: https://github.com/nvm-sh/nvm
[8]: https://github.com/tj/n
================================================
FILE: modules/node/functions/_grunt
================================================
#compdef grunt
#autoload
#
# Grunt completion, delegating to grunt to do all the completion work.
#
# Authors:
# Indrajit Raychaudhuri <irc@indrajit.com>
#
if (( $+commands[grunt] )); then
eval "$(grunt --completion=zsh)"
_grunt_completion "$@"
fi
================================================
FILE: modules/node/functions/_gulp
================================================
#compdef gulp
#autoload
#
# Gulp completion, delegating to gulp to do all the completion work.
#
# Authors:
# Indrajit Raychaudhuri <irc@indrajit.com>
#
if (( $+commands[gulp] )); then
eval "$(gulp --completion=zsh)"
_gulp_completion "$@"
fi
================================================
FILE: modules/node/functions/node-doc
================================================
#
# Opens the Node.js online API documentation in the default browser.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function node-doc {
if [[ -z "$BROWSER" ]]; then
print "$0: no web browser defined" >&2
return 1
fi
# TODO: Make the sections easier to use.
"$BROWSER" "https://nodejs.org/docs/${$(node --version 2> /dev/null)/%-*}/api/all.html#${1}"
# }
================================================
FILE: modules/node/functions/node-info
================================================
#
# Exposes information about the Node.js environment via the $node_info
# associative array.
#
# Authors:
# Zeh Rizzatti <zehrizzatti@gmail.com>
#
# function node-info {
local version
local version_format
local version_formatted
unset node_info
typeset -gA node_info
if (( $+commands[nodenv] )); then
version="${${$(nodenv version)#v}[(w)0]}"
elif (( $+functions[nvm_version] )); then
version="${$(nvm_version)#v}"
elif (( $+commands[node] )) ; then
version="${$(node -v)#v}"
fi
if [[ "$version" != (none|system) ]]; then
zstyle -s ':prezto:module:node:info:version' format 'version_format'
zformat -f version_formatted "$version_format" "v:$version"
node_info[version]="$version_formatted"
fi
# }
================================================
FILE: modules/node/init.zsh
================================================
#
# Configures Node local installation, loads version managers, and defines
# variables and aliases.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
# Zeh Rizzatti <zehrizzatti@gmail.com>
# Indrajit Raychaudhuri <irc@indrajit.com>
#
# Possible lookup locations for manually installed nodenv and nvm.
local_nodenv_paths=({$NODENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}nodenv}/bin/nodenv(N))
local_nvm_paths=({$NVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}nvm}/nvm.sh(N))
# Load manually installed or package manager installed nodenv into the shell
# session.
if (( $#local_nodenv_paths || $+commands[nodenv] )); then
# Ensure manually installed nodenv is added to path when present.
[[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path)
eval "$(nodenv init - zsh)"
# Load manually installed nvm into the shell session.
elif (( $#local_nvm_paths )); then
source "$local_nvm_paths[1]" --no-use
# Load package manager installed nvm into the shell session.
elif (( $+commands[brew] )) \
&& [[ -d "${nvm_path::="$(brew --prefix 2> /dev/null)"/opt/nvm}" ]]; then
source "$nvm_path/nvm.sh" --no-use
fi
unset local_n{odenv,vm}_paths nvm_path
# Return if requirements are not found.
if (( ! $+commands[node] && ! $#functions[(i)n(odenv|vm)] )); then
return 1
fi
#
# Variables
#
N_PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}/n" # The path to 'n' cache.
#
# Aliases
#
if ! zstyle -t ':prezto:module:node:alias' skip; then
# npm
alias npmi='npm install'
alias npml='npm list'
alias npmo='npm outdated'
alias npmp='npm publish'
alias npmP='npm prune'
alias npmr='npm run'
alias npms='npm search'
alias npmt='npm test'
alias npmu='npm update'
alias npmx='npm uninstall'
alias npmci='npm ci'
alias npmcit='npm cit'
alias npmit='npm it'
fi
================================================
FILE: modules/ocaml/README.md
================================================
# OCaml
Initializes [OCaml][1] package management.
## OPAM
[OPAM][2] is a package manager for OCaml.
This module enables local package installation with OPAM by extending the
relevant path and OCaml variables.
### Usage
Install packages to your local package directory with `opam install`.
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://ocaml.org/
[2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/ocaml/init.zsh
================================================
#
# Initializes OCaml package management.
#
# Authors:
# Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if [[ ! -f "$HOME/.opam/opam-init/init.zsh" ]]; then
return 1
fi
# Initialize OPAM.
source "$HOME/.opam/opam-init/init.zsh"
================================================
FILE: modules/osx/README.md
================================================
# OSX
Defines [macOS][1] aliases and functions.
This module must be loaded _before_ the [_`completion`_][2] module so that the
provided completion definitions are loaded automatically by _`completion`_
module.
## Settings
### Dash Keyword
To change the keyword used by `mand` to open man pages in [_Dash.app_][3] from
its default value of 'manpages', add the following line in
_`${ZDOTDIR:-$HOME}/.zpreztorc`_ and replace the **keyword** with the one
configured in [_Dash.app_][3].
```sh
zstyle ':prezto:module:osx:man' dash-keyword 'keyword'
```
## Aliases
- `cdf` changes the current working director to the current _Finder_ directory.
- `pushdf` pushes the current working directory onto the directory queue and
changes the current working director to the current _Finder_ directory.
## Functions
- `mand` opens _man_ pages in [_Dash.app_][3].
- `manp` opens _man_ pages in _Preview.app_.
- `pfd` prints the current _Finder_ directory.
- `pfs` prints the current _Finder_ selection.
- `tab` creates a new tab (works in both _Terminal_ and [_iTerm.app_][4]).
- `ql` previews files in Quick Look.
- `osx-rm-dir-metadata` deletes _`.DS_Store`_, _`__MACOSX`_ cruft.
- `osx-ls-download-history` displays the macOS download history.
- `osx-rm-download-history` deletes the macOS download history.
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.apple.com/macos/
[2]: ../completion#readme
[3]: https://kapeli.com/dash
[4]: https://www.iterm2.com/
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/osx/functions/_mand_manp
================================================
#compdef mand manp
#autoload
#
# Completes mand and manp.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
_man
================================================
FILE: modules/osx/functions/mand
================================================
#
# Opens man pages in Dash.app.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
function mand {
if (( $# > 0 )); then
zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages'
open "dash://$dashkw%3A$1" 2> /dev/null
if (( $? != 0 )); then
print "$0: Dash is not installed" >&2
break
fi
else
print 'What manual page do you want?' >&2
fi
unset dashkw
}
mand "$@"
================================================
FILE: modules/osx/functions/manp
================================================
#
# Opens man pages in Preview.app.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
function manp {
local page
if (( $# > 0 )); then
for page in "$@"; do
mandoc -T pdf "$(/usr/bin/man -w $page)" | open -fa Preview
done
else
print 'What manual page do you want?' >&2
fi
}
manp "$@"
================================================
FILE: modules/osx/functions/osx-ls-download-history
================================================
#
# Displays the macOS download history.
#
# Authors:
# 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
# }
================================================
FILE: modules/osx/functions/osx-rm-dir-metadata
================================================
#
# Deletes .DS_Store and __MACOSX directories.
#
# Authors:
# 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
# }
================================================
FILE: modules/osx/functions/osx-rm-download-history
================================================
#
# Deletes the macOS download history.
#
# Authors:
# 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
# }
================================================
FILE: modules/osx/functions/pfd
================================================
#
# Displays the current Finder.app directory.
#
# Authors:
# 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
# }
================================================
FILE: modules/osx/functions/pfs
================================================
#
# Displays the current Finder.app selection.
#
# Authors:
# 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 {}
repeat with an_item in the_selection
log POSIX path of (an_item as text)
end repeat
end if
EOF
# }
================================================
FILE: modules/osx/functions/ql
================================================
#
# Previews files in Quick Look.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function ql {
if (( $# > 0 )); then
qlmanage -p "$@" &> /dev/null
fi
# }
================================================
FILE: modules/osx/functions/tab
================================================
#
# Opens a new Terminal.app/iTerm.app tab in the current directory.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function tab {
local command="cd \\\"$PWD\\\""
(( $# > 0 )) && command="${command}; $*"
the_app=$(
osascript 2> /dev/null <<EOF
tell application "System Events"
name of first item of (every process whose frontmost is true)
end tell
EOF
)
[[ "$the_app" == 'Terminal' ]] && {
osascript 2> /dev/null <<EOF
tell application "System Events"
tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to do script "${command}" in front window
end tell
EOF
}
[[ "$the_app" == 'iTerm' ]] && {
osascript 2> /dev/null <<EOF
tell application "iTerm"
set current_terminal to current terminal
tell current_terminal
launch session "Default Session"
set current_session to current session
tell current_session
write text "${command}"
end tell
end tell
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
}
# }
================================================
FILE: modules/osx/functions/trash
================================================
#
# Moves files to the macOS trash.
#
# function trash {
emulate -L zsh
setopt LOCAL_OPTIONS EXTENDED_GLOB
local file
local -a files=()
for file in $@; do
if [[ -e $file ]]; then
# ':a' gets the full path (do not use ':A', which would resolve symlinks)
files+=("the POSIX file \"${file:a}\"")
else
print "trash: No such file or directory '$file'." >&2
return 1
fi
done
if (( $#files == 0 )); then
print 'usage: trash <files...>' >&2
return 64 # Match rm's return code.
fi
# Join file list with commas, and tell Finder to trash that list.
local file_list="${(pj., .)files}"
osascript 2>&1 > /dev/null -e "tell app \"Finder\" to move { "${file_list}" } to trash"
# }
================================================
FILE: modules/osx/init.zsh
================================================
#
# Defines macOS aliases and functions.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found.
if ! is-darwin; then
return 1
fi
#
# Aliases
#
# Changes directory to the current Finder directory.
alias cdf='cd "$(pfd)"'
# Pushes directory to the current Finder directory.
alias pushdf='pushd "$(pfd)"'
================================================
FILE: modules/pacman/README.md
================================================
# Pacman
Provides aliases and functions for the [Pacman][1] package manager and
frontends.
## Settings
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 (The
[AUR Helpers][2] page has a good comparison which lists if the command line
options are pacman compatible).
Please note that installing packages with an AUR Helper is not officially
supported by Archlinux. It is currently recommended to manually build AUR
packages using the [provided instructions][3]. The [aurutils][4] project has a
set of small utilities to make this easier.
To enable a different Pacman frontend, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<frontend>'` with the name
of the preferred frontend.
```sh
zstyle ':prezto:module:pacman' frontend '<frontend>'
```
## Aliases
### Pacman
- `pac` is short for `pacman`.
- `paci` installs packages from repositories.
- `pacI` installs packages from files.
- `pacx` removes packages and unneeded dependencies.
- `pacX` removes packages, their configuration, and unneeded dependencies.
- `pacq` displays information about a package from the repositories.
- `pacQ` displays information about a package from the local database.
- `pacs` searches for packages in the repositories.
- `pacS` searches for packages in the local database.
- `pacu` synchronizes the local package and Arch Build System (requires `abs`)
databases against the repositories.
- `pacU` synchronizes the local package database against the repositories then
upgrades outdated packages.
- `pacman-list-orphans` lists orphan packages.
- `pacman-remove-orphans` removes orphan packages.
### Frontends
## Functions
- `aurget` clone an aur package.
- `pacman-list-explicit` lists explicitly installed pacman packages.
- `pacman-list-disowned` lists pacman disowned files.
## Authors
_The authors of this module should be contacted via the [issue tracker][5]._
- [Benjamin Boudreau](https://github.com/dreur)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.archlinux.org/pacman/
[2]: https://wiki.archlinux.org/title/AUR_helpers#Comparison_tables
[3]: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages
[4]: https://github.com/AladW/aurutils
[5]: https://github.com/sorin-ionescu/prezto/issues
================================================
FILE: modules/pacman/functions/pacman-list-disowned
================================================
#
# Lists Pacman disowned files.
#
# Authors:
# Benjamin Boudreau <dreurmail@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pacman-list-disowned {
local tmp="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pacman-disowned-$$"
local db="$tmp/db"
local fs="$tmp/fs"
mkdir -p "$tmp"
trap 'rm -rf "$tmp"' EXIT
pacman --quiet --query --list | sort --unique > "$db"
find /bin /etc /lib /sbin /usr \
! -name lost+found \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"
# }
================================================
FILE: modules/pacman/functions/pacman-list-explicit
================================================
#
# Lists explicitly installed Pacman packages.
#
# Authors:
# Benjamin Boudreau <dreurmail@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# function pacman-list-explicit {
pacman --query --explicit --info \
| awk '
BEGIN {
FS=":"
}
/^Name/ {
print $2
}
/^Description/ {
print $2
}
'
# }
================================================
FILE: modules/pacman/init.zsh
================================================
#
# Defines Pacman aliases.
#
# Authors:
# Benjamin Boudreau <dreurmail@gmail.com>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Tips:
# https://wiki.archlinux.org/index.php/Pacman_Tips
#
# Return if requirements are not found.
if (( ! $+commands[pacman] )); then
return 1
fi
#
# Frontend
#
# Get the Pacman frontend.
zstyle -s ':prezto:module:pacman' frontend '_pacman_frontend'
if (( $+commands[$_pacman_frontend] )); then
alias pacman="$_pacman_frontend"
else
_pacman_frontend='pacman'
_pacman_sudo='sudo '
fi
#
# Aliases
#
# Pacman.
alias pac="${_pacman_frontend}"
# Installs packages from repositories.
alias paci="${_pacman_sudo}${_pacman_frontend} --sync"
# Installs packages from files.
alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade"
# Removes packages and unneeded dependencies.
alias pacx="${_pacman_sudo}${_pacman_frontend} --remove"
# Removes packages, their configuration, and unneeded dependencies.
alias pacX="${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive"
# Displays information about a package from the repositories.
alias pacq="${_pacman_frontend} --sync --info"
# Displays information about a package from the local database.
alias pacQ="${_pacman_frontend} --query --info"
# Searches for packages in the repositories.
alias pacs="${_pacman_frontend} --sync --search"
# Searches for packages in the local database.
alias pacS="${_pacman_frontend} --query --search"
# Lists orphan packages.
alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired"
# Removes orphan packages.
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 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
# Synchronizes the local package database against the repositories then
# upgrades outdated packages.
alias pacU="${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade"
function aurget {
local target_dir="$1"
if [[ -n "$2" ]]; then
target_dir="$2"
fi
git clone "https://aur.archlinux.org/$1" "$target_dir"
}
unset _pacman_{frontend,sudo}
================================================
FILE: modules/perl/README.md
================================================
# Perl
Enables local [Perl][1] module installation on macOS and defines aliases.
## Local Module Installation
Perl versions older than 5.14 do not support the local installation of Perl
modules natively. This module allows for local installation of Perl modules on
macOS in _`~/Library/Perl/5.12`_ by altering the environment.
### Usage
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
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
Aliases are enabled by default. To disable them, add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:perl:alias' skip 'yes'
```
### General
- `pl` is short for `perl`.
- `pld` looks up Perl documentation (`perldoc`).
- `ple` executes a one line program in a loop (`perl -wlne`).
### Perlbrew (plb)
- `plb` manages Perl environments.
- `plba` lists available Perl versions.
- `plbi` installs a Perl version.
- `plbl` lists installed Perl versions.
- `plbo` temporarily turns off Perlbrew.
- `plbO` turns off Perlbrew.
- `plbs` switches to a Perl version.
- `plbu` uninstalls a Perl version.
- `plbx` temporarily sets the Perl version to use.
### plenv (plv)
- `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][4]._
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.perl.org
[2]: https://perlbrew.pl
[3]: https://github.com/tokuhirom/plenv
[4]: https://github.com/sorin-ionescu/prezto
gitextract_da2eg8c5/
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE.md
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .gitmodules
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── init.zsh
├── modules/
│ ├── README.md
│ ├── archive/
│ │ ├── README.md
│ │ └── functions/
│ │ ├── _lsarchive
│ │ ├── _unarchive
│ │ ├── archive
│ │ ├── lsarchive
│ │ └── unarchive
│ ├── autosuggestions/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── command-not-found/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── completion/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── directory/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── dnf/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── docker/
│ │ ├── README.md
│ │ ├── alias.zsh
│ │ └── init.zsh
│ ├── dpkg/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── deb-clone
│ │ │ ├── deb-history
│ │ │ └── deb-kbuild
│ │ └── init.zsh
│ ├── editor/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── emacs/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── environment/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── fasd/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── git/
│ │ ├── README.md
│ │ ├── alias.zsh
│ │ ├── functions/
│ │ │ ├── _git-hub-browse
│ │ │ ├── _git-hub-shorten-url
│ │ │ ├── _git-info
│ │ │ ├── _git-submodule-move
│ │ │ ├── _git-submodule-remove
│ │ │ ├── git-branch-current
│ │ │ ├── git-commit-lost
│ │ │ ├── git-dir
│ │ │ ├── git-hub-browse
│ │ │ ├── git-hub-shorten-url
│ │ │ ├── git-info
│ │ │ ├── git-root
│ │ │ ├── git-stash-clear-interactive
│ │ │ ├── git-stash-dropped
│ │ │ ├── git-stash-recover
│ │ │ ├── git-submodule-move
│ │ │ └── git-submodule-remove
│ │ └── init.zsh
│ ├── gnu-utility/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── gpg/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── haskell/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── helper/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── add-zsh-trap
│ │ └── init.zsh
│ ├── history/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── history-substring-search/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── homebrew/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── macports/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── node/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _grunt
│ │ │ ├── _gulp
│ │ │ ├── node-doc
│ │ │ └── node-info
│ │ └── init.zsh
│ ├── ocaml/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── osx/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _mand_manp
│ │ │ ├── mand
│ │ │ ├── manp
│ │ │ ├── osx-ls-download-history
│ │ │ ├── osx-rm-dir-metadata
│ │ │ ├── osx-rm-download-history
│ │ │ ├── pfd
│ │ │ ├── pfs
│ │ │ ├── ql
│ │ │ ├── tab
│ │ │ └── trash
│ │ └── init.zsh
│ ├── pacman/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── pacman-list-disowned
│ │ │ └── pacman-list-explicit
│ │ └── init.zsh
│ ├── perl/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── perl-info
│ │ └── init.zsh
│ ├── prompt/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── prompt-pwd
│ │ │ ├── prompt_cloud_setup
│ │ │ ├── prompt_damoekri_setup
│ │ │ ├── prompt_giddie_setup
│ │ │ ├── prompt_kylewest_setup
│ │ │ ├── prompt_minimal_setup
│ │ │ ├── prompt_nicoulaj_setup
│ │ │ ├── prompt_paradox_setup
│ │ │ ├── prompt_peepcode_setup
│ │ │ ├── prompt_skwp_setup
│ │ │ ├── prompt_smiley_setup
│ │ │ ├── prompt_sorin_setup
│ │ │ └── prompt_steeef_setup
│ │ └── init.zsh
│ ├── python/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ └── python-info
│ │ └── init.zsh
│ ├── rails/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── rsync/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── ruby/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── ruby-app-root
│ │ │ └── ruby-info
│ │ └── init.zsh
│ ├── screen/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── spectrum/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── ssh/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── syntax-highlighting/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── terminal/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── tmux/
│ │ ├── README.md
│ │ └── init.zsh
│ ├── utility/
│ │ ├── README.md
│ │ ├── functions/
│ │ │ ├── _cdls_popdls_pushdls
│ │ │ ├── _dut
│ │ │ ├── _mkdcd
│ │ │ ├── _noremoteglob
│ │ │ ├── _prep
│ │ │ ├── _psub
│ │ │ ├── diff
│ │ │ ├── dut
│ │ │ ├── make
│ │ │ ├── prep
│ │ │ ├── psub
│ │ │ ├── wdiff
│ │ │ └── zsh-help
│ │ └── init.zsh
│ ├── wakeonlan/
│ │ ├── README.md
│ │ └── functions/
│ │ ├── _wake
│ │ └── wake
│ └── yum/
│ ├── README.md
│ └── init.zsh
└── runcoms/
├── README.md
├── zlogin
├── zlogout
├── zpreztorc
├── zprofile
├── zshenv
└── zshrc
Condensed preview — 172 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (339K chars).
[
{
"path": ".editorconfig",
"chars": 180,
"preview": "[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\ntrim_trailing_whitespace = true\n\n["
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 449,
"preview": "<!-- Please check if a similar issue already exists or has been closed before before opening your issue. -->\n\n### Descri"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 207,
"preview": "Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTI"
},
{
"path": ".gitignore",
"chars": 44,
"preview": "*.zwc\n*.zwc.old\nmodules/*/cache.zsh\ncontrib\n"
},
{
"path": ".gitmodules",
"chars": 1446,
"preview": "[submodule \"modules/autosuggestions/external\"]\n\tpath = modules/autosuggestions/external\n\turl = https://github.com/zsh-us"
},
{
"path": "CONTRIBUTING.md",
"chars": 2589,
"preview": "# Contributing\n\nThis project would not exist without all of its users and [contributors][1].\n\nIf you have ideas on how t"
},
{
"path": "LICENSE",
"chars": 1133,
"preview": "Copyright (c) 2009-2011 Robby Russell and contributors\nCopyright (c) 2011-2017 Sorin Ionescu and contributors\n\nPermissio"
},
{
"path": "README.md",
"chars": 5075,
"preview": "# Prezto — Instantly Awesome Zsh\n\nPrezto is the configuration framework for [Zsh][1]; it enriches the command line\ninter"
},
{
"path": "init.zsh",
"chars": 5954,
"preview": "#\n# Initializes Prezto.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Version Check\n#\n\n# Check for the"
},
{
"path": "modules/README.md",
"chars": 2795,
"preview": "# Modules\n\nLoad modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters.\n\n```sh\nzstyle ':prezto:load' pmodule 'en"
},
{
"path": "modules/archive/README.md",
"chars": 1801,
"preview": "# Archive\n\nProvides functions to create, list, and extract archives.\n\nThis module must be loaded _before_ the [_`complet"
},
{
"path": "modules/archive/functions/_lsarchive",
"chars": 306,
"preview": "#compdef lsarchive\n#autoload\n\n#\n# Completes lsarchive.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_argu"
},
{
"path": "modules/archive/functions/_unarchive",
"chars": 300,
"preview": "#compdef unarchive\n#autoload\n\n#\n# Completes unarchive.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_argu"
},
{
"path": "modules/archive/functions/archive",
"chars": 2498,
"preview": "#\n# Creates archive file\n#\n# Authors:\n# Matt Hamilton <m@tthamilton.com>\n#\n\n# function archive {\n\nlocal archive_name p"
},
{
"path": "modules/archive/functions/lsarchive",
"chars": 1383,
"preview": "#\n# Lists the contents of archives.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function lsarchive {\n\n"
},
{
"path": "modules/archive/functions/unarchive",
"chars": 2548,
"preview": "#\n# Extracts the contents of archives.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function unarchive "
},
{
"path": "modules/autosuggestions/README.md",
"chars": 1945,
"preview": "# Autosuggestions\n\nIntegrates [zsh-autosuggestions][1] into Prezto, which implements the\n[Fish shell][2]'s autosuggestio"
},
{
"path": "modules/autosuggestions/init.zsh",
"chars": 722,
"preview": "#\n# Integrates zsh-autosuggestions into Prezto.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load depen"
},
{
"path": "modules/command-not-found/README.md",
"chars": 1300,
"preview": "# Command-Not-Found\n\nWhen you try to use a command that is not available locally, searches the\npackage manager for a pac"
},
{
"path": "modules/command-not-found/init.zsh",
"chars": 1279,
"preview": "#\n# Displays installation information for not found commands.\n#\n# Authors:\n# Joseph Jon Booker <joe@neoturbine.net>\n# "
},
{
"path": "modules/completion/README.md",
"chars": 2079,
"preview": "# Completion\n\nLoads and configures <kbd>TAB</kbd> completion and provides additional\ncompletions from the [zsh-completio"
},
{
"path": "modules/completion/init.zsh",
"chars": 8328,
"preview": "#\n# Sets completion options.\n#\n# Authors:\n# Robby Russell <robby@planetargon.com>\n# Sorin Ionescu <sorin.ionescu@gma"
},
{
"path": "modules/directory/README.md",
"chars": 1202,
"preview": "# Directory\n\nSets directory options and defines directory aliases.\n\n## Options\n\n- `AUTO_CD` auto changes to a directory "
},
{
"path": "modules/directory/init.zsh",
"chars": 1062,
"preview": "#\n# Sets directory options and defines directory aliases.\n#\n# Authors:\n# James Cox <james@imaj.es>\n# Sorin Ionescu <"
},
{
"path": "modules/dnf/README.md",
"chars": 604,
"preview": "# DNF\n\nDefines [dnf][1] aliases.\n\n## Aliases\n\n- `dnfc` removes package(s) and leaves.\n- `dnfi` installs package(s).\n- `d"
},
{
"path": "modules/dnf/init.zsh",
"chars": 801,
"preview": "#\n# Defines dnf aliases.\n#\n# Authors:\n# FireWave <firewave@free.fr>\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# R"
},
{
"path": "modules/docker/README.md",
"chars": 6895,
"preview": "# Docker\n\nDefines [Docker][1] aliases and functions.\n\n## Aliases\n\n### Docker\n\n- `dk` is short for `docker`\n- `dka` Attac"
},
{
"path": "modules/docker/alias.zsh",
"chars": 4987,
"preview": "#\n# Defines Docker aliases.\n#\n# Author:\n# François Vantomme <akarzim@gmail.com>\n#\n\n#\n# Aliases\n#\n\n# Docker\nalias dk='d"
},
{
"path": "modules/docker/init.zsh",
"chars": 963,
"preview": "#\n# Defines Docker aliases.\n#\n# Author:\n# François Vantomme <akarzim@gmail.com>\n#\n\n# Return if requirements are not fo"
},
{
"path": "modules/dpkg/README.md",
"chars": 1107,
"preview": "# Dpkg\n\nDefines [_dpkg_][1] aliases and functions.\n\n## Aliases\n\n- `debc` cleans the cache.\n- `debf` displays a file's pa"
},
{
"path": "modules/dpkg/functions/deb-clone",
"chars": 617,
"preview": "#\n# Generates a script that can be used to duplicate a dpkg-based system.\n#\n# Authors:\n# Daniel Bolton <danielbarrettb"
},
{
"path": "modules/dpkg/functions/deb-history",
"chars": 837,
"preview": "#\n# Displays dpkg history.\n#\n# Authors:\n# Peter Leung <commandolinux@gmail.com>\n# Benjamin Boudreau <boudreau.benjam"
},
{
"path": "modules/dpkg/functions/deb-kbuild",
"chars": 318,
"preview": "#\n# Makes a dpkg Linux kernel package.\n#\n# Authors:\n# Daniel Bolton <dbb@9y.com>\n# Sorin Ionescu <sorin.ionescu@gmai"
},
{
"path": "modules/dpkg/init.zsh",
"chars": 1432,
"preview": "#\n# Defines dpkg aliases.\n#\n# Authors:\n# Daniel Bolton <dbb@9y.com>\n# Benjamin Boudreau <boudreau.benjamin@gmail.com"
},
{
"path": "modules/editor/README.md",
"chars": 3023,
"preview": "# Editor\n\nSets editor specific key bindings options and variables.\n\n## Options\n\n- `BEEP` beep on error in line editor.\n\n"
},
{
"path": "modules/editor/init.zsh",
"chars": 12681,
"preview": "#\n# Sets key bindings.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not foun"
},
{
"path": "modules/emacs/README.md",
"chars": 884,
"preview": "# Emacs\n\nEnables Emacs dependency management.\n\n## Dependency management\n\n[Carton][1] installs and manages Emacs packages"
},
{
"path": "modules/emacs/init.zsh",
"chars": 507,
"preview": "#\n# Configures Emacs dependency management.\n#\n# Authors: Sebastian Wiesner <lunaryorn@gmail.com>\n#\n\n# Return if requirem"
},
{
"path": "modules/environment/README.md",
"chars": 1505,
"preview": "# Environment\n\nSets general shell options and defines environment variables.\n\nThis module must be loaded first.\n\n## Cont"
},
{
"path": "modules/environment/init.zsh",
"chars": 2386,
"preview": "#\n# Sets general shell options and defines environment variables.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.co"
},
{
"path": "modules/fasd/README.md",
"chars": 1431,
"preview": "# Fasd\n\n[Fasd][1] is a command-line productivity booster, inspired by tools like\n[autojump][2], [z][3] and [v][4], it of"
},
{
"path": "modules/fasd/init.zsh",
"chars": 1309,
"preview": "#\n# Maintains a frequently used file and directory list for fast access.\n#\n# Authors:\n# Wei Dai <x@wei23.net>\n# Sori"
},
{
"path": "modules/git/README.md",
"chars": 17785,
"preview": "# Git\n\nEnhances the [Git][1] distributed version control system by providing aliases,\nfunctions and by exposing reposito"
},
{
"path": "modules/git/alias.zsh",
"chars": 9205,
"preview": "#\n# Defines Git aliases.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Settings\n#\n\n# Log\nzstyle -s ':p"
},
{
"path": "modules/git/functions/_git-hub-browse",
"chars": 1168,
"preview": "#compdef git-hub-browse\n#autoload\n\n#\n# Completes git-hub-browse.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com"
},
{
"path": "modules/git/functions/_git-hub-shorten-url",
"chars": 369,
"preview": "#compdef git-hub-shorten-url\n#autoload\n\n#\n# Completes git-hub-shorten-url.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu"
},
{
"path": "modules/git/functions/_git-info",
"chars": 379,
"preview": "#compdef git-info\n#autoload\n\n#\n# Completes git-info.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nif ! is"
},
{
"path": "modules/git/functions/_git-submodule-move",
"chars": 793,
"preview": "#compdef git-submodule-move\n#autoload\n\n#\n# Completes git-submodule-move.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@g"
},
{
"path": "modules/git/functions/_git-submodule-remove",
"chars": 510,
"preview": "#compdef git-submodule-remove\n#autoload\n\n#\n# Completes git-submodule-remove.\n#\n# Authors:\n# Sorin Ionescu <sorin.iones"
},
{
"path": "modules/git/functions/git-branch-current",
"chars": 380,
"preview": "#\n# Displays the current Git branch.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-branch-c"
},
{
"path": "modules/git/functions/git-commit-lost",
"chars": 481,
"preview": "#\n# Lists lost Git commits.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-commit-lost {\n\nif"
},
{
"path": "modules/git/functions/git-dir",
"chars": 307,
"preview": "#\n# Displays the path to the Git directory.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-d"
},
{
"path": "modules/git/functions/git-hub-browse",
"chars": 1351,
"preview": "#\n# Opens a GitHub repository in the default browser.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# func"
},
{
"path": "modules/git/functions/git-hub-shorten-url",
"chars": 574,
"preview": "#\n# Shortens GitHub URLs.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-hub-shorten-url {\n\n"
},
{
"path": "modules/git/functions/git-info",
"chars": 13859,
"preview": "#\n# Exposes Git repository information via the $git_info associative array.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionesc"
},
{
"path": "modules/git/functions/git-root",
"chars": 327,
"preview": "#\n# Displays the path to the working tree root.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function g"
},
{
"path": "modules/git/functions/git-stash-clear-interactive",
"chars": 568,
"preview": "#\n# Asks for confirmation before clearing the Git stash.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# f"
},
{
"path": "modules/git/functions/git-stash-dropped",
"chars": 560,
"preview": "#\n# Lists dropped Git stashed states.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-stash-d"
},
{
"path": "modules/git/functions/git-stash-recover",
"chars": 437,
"preview": "#\n# Recovers dropped Git stashed states.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-stas"
},
{
"path": "modules/git/functions/git-submodule-move",
"chars": 698,
"preview": "#\n# Moves a Git submodule.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-submodule-move {\n\n"
},
{
"path": "modules/git/functions/git-submodule-remove",
"chars": 841,
"preview": "#\n# Removes a Git submodule.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-submodule-remove"
},
{
"path": "modules/git/init.zsh",
"chars": 332,
"preview": "#\n# Provides Git aliases and functions.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirem"
},
{
"path": "modules/gnu-utility/README.md",
"chars": 938,
"preview": "# GNU Utility\n\nProvides for the interactive use of GNU utilities on BSD systems.\n\nInstalling GNU utilities on non-GNU sy"
},
{
"path": "modules/gnu-utility/init.zsh",
"chars": 2120,
"preview": "#\n# Provides for the interactive use of GNU utilities on BSD systems.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmai"
},
{
"path": "modules/gpg/README.md",
"chars": 709,
"preview": "# GPG\n\nProvides for an easier use of [GPG][1] by setting up [gpg-agent][2].\n\n## Settings\n\n### SSH\n\nTo enable OpenSSH Age"
},
{
"path": "modules/gpg/init.zsh",
"chars": 1614,
"preview": "#\n# Provides for an easier use of GPG by setting up gpg-agent.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n"
},
{
"path": "modules/haskell/README.md",
"chars": 657,
"preview": "# Haskell\n\nEnables local Haskell package installation.\n\n## Per-user Package Installation\n\n[Cabal][1], the Haskell packag"
},
{
"path": "modules/haskell/init.zsh",
"chars": 430,
"preview": "#\n# Enables local Haskell package installation.\n#\n# Authors:\n# Sebastian Wiesner <lunaryorn@googlemail.com>\n#\n\n# Retur"
},
{
"path": "modules/helper/README.md",
"chars": 874,
"preview": "# Helper\n\nProvides helper functions for developing modules.\n\n## Functions\n\n- `add-zsh-trap` adds a function name to a li"
},
{
"path": "modules/helper/functions/add-zsh-trap",
"chars": 923,
"preview": "#\n# Provides for trapping UNIX signals and calling callback functions when a trap\n# is triggered.\n#\n# Authors:\n# Sorin"
},
{
"path": "modules/helper/init.zsh",
"chars": 1202,
"preview": "#\n# Defines helper functions.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Checks if a file can be auto"
},
{
"path": "modules/history/README.md",
"chars": 2678,
"preview": "# History\n\nSets [history][1] options and defines history aliases.\n\n**Note:** Default path of `HISTFILE` has changed from"
},
{
"path": "modules/history/init.zsh",
"chars": 1808,
"preview": "#\n# Sets history options and defines history aliases.\n#\n# Authors:\n# Robby Russell <robby@planetargon.com>\n# Sorin I"
},
{
"path": "modules/history-substring-search/README.md",
"chars": 3140,
"preview": "# History Substring Search\n\nIntegrates [`zsh-history-substring-search`][1] into Prezto, which implements the\n[Fish shell"
},
{
"path": "modules/history-substring-search/init.zsh",
"chars": 2089,
"preview": "#\n# Integrates history-substring-search into Prezto.\n#\n# Authors:\n# Suraj N. Kurapati <sunaku@gmail.com>\n# Sorin Ion"
},
{
"path": "modules/homebrew/README.md",
"chars": 1241,
"preview": "# Homebrew\n\nDefines Homebrew specific environment variables and aliases.\n\n## Variables\n\nExecute the following to list th"
},
{
"path": "modules/homebrew/init.zsh",
"chars": 1452,
"preview": "#\n# Defines Homebrew aliases.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload "
},
{
"path": "modules/macports/README.md",
"chars": 782,
"preview": "# MacPorts\n\nDefines MacPorts aliases and adds MacPorts directories to path variables.\n\n## Aliases\n\nAliases are enabled b"
},
{
"path": "modules/macports/init.zsh",
"chars": 766,
"preview": "#\n# Defines MacPorts aliases and adds MacPorts directories to path variables.\n#\n# Authors:\n# Matt Cable <wozz@wookie.n"
},
{
"path": "modules/node/README.md",
"chars": 2670,
"preview": "# Node.js\n\nProvides utility functions for [Node.js][1], loads the Node Version Manager, and\nenables [_npm_][2] completio"
},
{
"path": "modules/node/functions/_grunt",
"chars": 257,
"preview": "#compdef grunt\n#autoload\n\n#\n# Grunt completion, delegating to grunt to do all the completion work.\n#\n# Authors:\n# Indr"
},
{
"path": "modules/node/functions/_gulp",
"chars": 251,
"preview": "#compdef gulp\n#autoload\n\n#\n# Gulp completion, delegating to gulp to do all the completion work.\n#\n# Authors:\n# Indraji"
},
{
"path": "modules/node/functions/node-doc",
"chars": 378,
"preview": "#\n# Opens the Node.js online API documentation in the default browser.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gma"
},
{
"path": "modules/node/functions/node-info",
"chars": 719,
"preview": "#\n# Exposes information about the Node.js environment via the $node_info\n# associative array.\n#\n# Authors:\n# Zeh Rizza"
},
{
"path": "modules/node/init.zsh",
"chars": 1797,
"preview": "#\n# Configures Node local installation, loads version managers, and defines\n# variables and aliases.\n#\n# Authors:\n# So"
},
{
"path": "modules/ocaml/README.md",
"chars": 547,
"preview": "# OCaml\n\nInitializes [OCaml][1] package management.\n\n## OPAM\n\n[OPAM][2] is a package manager for OCaml.\n\nThis module ena"
},
{
"path": "modules/ocaml/init.zsh",
"chars": 269,
"preview": "#\n# Initializes OCaml package management.\n#\n# Authors:\n# Sebastian Wiesner <lunaryorn@gmail.com>\n#\n\n# Return if requir"
},
{
"path": "modules/osx/README.md",
"chars": 1620,
"preview": "# OSX\n\nDefines [macOS][1] aliases and functions.\n\nThis module must be loaded _before_ the [_`completion`_][2] module so "
},
{
"path": "modules/osx/functions/_mand_manp",
"chars": 124,
"preview": "#compdef mand manp\n#autoload\n\n#\n# Completes mand and manp.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_"
},
{
"path": "modules/osx/functions/mand",
"chars": 436,
"preview": "#\n# Opens man pages in Dash.app.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nfunction mand {\n if (( $# "
},
{
"path": "modules/osx/functions/manp",
"chars": 320,
"preview": "#\n# Opens man pages in Preview.app.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nfunction manp {\n local "
},
{
"path": "modules/osx/functions/osx-ls-download-history",
"chars": 385,
"preview": "#\n# Displays the macOS download history.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function osx-ls-d"
},
{
"path": "modules/osx/functions/osx-rm-dir-metadata",
"chars": 261,
"preview": "#\n# Deletes .DS_Store and __MACOSX directories.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function o"
},
{
"path": "modules/osx/functions/osx-rm-download-history",
"chars": 366,
"preview": "#\n# Deletes the macOS download history.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function osx-rm-do"
},
{
"path": "modules/osx/functions/pfd",
"chars": 260,
"preview": "#\n# Displays the current Finder.app directory.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pf"
},
{
"path": "modules/osx/functions/pfs",
"chars": 353,
"preview": "#\n# Displays the current Finder.app selection.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pf"
},
{
"path": "modules/osx/functions/ql",
"chars": 173,
"preview": "#\n# Previews files in Quick Look.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function ql {\n\nif (( $# "
},
{
"path": "modules/osx/functions/tab",
"chars": 1281,
"preview": "#\n# Opens a new Terminal.app/iTerm.app tab in the current directory.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail"
},
{
"path": "modules/osx/functions/trash",
"chars": 698,
"preview": "#\n# Moves files to the macOS trash.\n#\n\n# function trash {\n\nemulate -L zsh\nsetopt LOCAL_OPTIONS EXTENDED_GLOB\n\nlocal file"
},
{
"path": "modules/osx/init.zsh",
"chars": 392,
"preview": "#\n# Defines macOS aliases and functions.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies"
},
{
"path": "modules/pacman/README.md",
"chars": 2379,
"preview": "# Pacman\n\nProvides aliases and functions for the [Pacman][1] package manager and\nfrontends.\n\n## Settings\n\nIt is possible"
},
{
"path": "modules/pacman/functions/pacman-list-disowned",
"chars": 522,
"preview": "#\n# Lists Pacman disowned files.\n#\n# Authors:\n# Benjamin Boudreau <dreurmail@gmail.com>\n# Sorin Ionescu <sorin.iones"
},
{
"path": "modules/pacman/functions/pacman-list-explicit",
"chars": 369,
"preview": "#\n# Lists explicitly installed Pacman packages.\n#\n# Authors:\n# Benjamin Boudreau <dreurmail@gmail.com>\n# Sorin Iones"
},
{
"path": "modules/pacman/init.zsh",
"chars": 2402,
"preview": "#\n# Defines Pacman aliases.\n#\n# Authors:\n# Benjamin Boudreau <dreurmail@gmail.com>\n# Sorin Ionescu <sorin.ionescu@gm"
},
{
"path": "modules/perl/README.md",
"chars": 3330,
"preview": "# Perl\n\nEnables local [Perl][1] module installation on macOS and defines aliases.\n\n## Local Module Installation\n\nPerl ve"
},
{
"path": "modules/perl/functions/perl-info",
"chars": 755,
"preview": "#\n# Exposes information about the Perl environment via the $perl_info associative\n# array.\n#\n# Authors:\n# JINNOUCHI Ya"
},
{
"path": "modules/perl/init.zsh",
"chars": 2517,
"preview": "#\n# Enables local Perl module installation on macOS and defines aliases.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@g"
},
{
"path": "modules/prompt/README.md",
"chars": 4779,
"preview": "# Prompt\n\nLoads prompt [themes][1].\n\n## Settings\n\n### Prompt Theme\n\nTo select a prompt theme, add the following to _`${Z"
},
{
"path": "modules/prompt/functions/prompt-pwd",
"chars": 668,
"preview": "#\n# Prompt setup function commonly used by prompt themes.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# "
},
{
"path": "modules/prompt/functions/prompt_cloud_setup",
"chars": 3271,
"preview": "#\n# A minimal two-color theme.\n#\n# Authors:\n# Kevin Laude <nerfyoda@gmail.com>\n#\n# Features:\n# - One line, left alig"
},
{
"path": "modules/prompt/functions/prompt_damoekri_setup",
"chars": 1923,
"preview": "#\n# A simple theme inspired by the Sorin and PeepCode themes.\n#\n# Authors:\n# Daniel Møller Kristensen <damoekri@icloud"
},
{
"path": "modules/prompt/functions/prompt_giddie_setup",
"chars": 2454,
"preview": "#\n# A colorful, friendly, multiline theme with some handy features.\n#\n# Authors:\n# Paul Gideon Dann <pdgiddie@gmail.co"
},
{
"path": "modules/prompt/functions/prompt_kylewest_setup",
"chars": 1968,
"preview": "#\n# A single line theme with Git information on the left and Ruby on the right.\n#\n# Authors:\n# Kyle West <kswest@gmail"
},
{
"path": "modules/prompt/functions/prompt_minimal_setup",
"chars": 1594,
"preview": "#\n# A monochrome theme that displays basic information.\n#\n# Authors:\n# Brian Tse <briankftse@gmail.com>\n# Sorin Ione"
},
{
"path": "modules/prompt/functions/prompt_nicoulaj_setup",
"chars": 1911,
"preview": "#\n# A simple theme that displays only relevant information.\n#\n# Authors:\n# Julien Nicoulaud <julien.nicoulaud@gmail.co"
},
{
"path": "modules/prompt/functions/prompt_paradox_setup",
"chars": 5027,
"preview": "#\n# A two-line, Powerline-inspired theme that displays contextual information.\n#\n# This theme requires a patched Powerli"
},
{
"path": "modules/prompt/functions/prompt_peepcode_setup",
"chars": 2218,
"preview": "#\n# A simple theme from PeepCode.\n# http://peepcode.com/blog/2012/my-command-line-prompt\n#\n# Authors:\n# Geoffrey Grose"
},
{
"path": "modules/prompt/functions/prompt_skwp_setup",
"chars": 2237,
"preview": "#\n# A single line theme with Git information on the left and Ruby on the right.\n#\n# Authors:\n# Steve Losh <steve@steve"
},
{
"path": "modules/prompt/functions/prompt_smiley_setup",
"chars": 1846,
"preview": "#\n# A simple theme that displays:\n# - Python virtual environment.\n# - Git branch.\n# - Git state.\n# - Last comman"
},
{
"path": "modules/prompt/functions/prompt_sorin_setup",
"chars": 5714,
"preview": "#\n# A simple theme that displays relevant, contextual information.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.c"
},
{
"path": "modules/prompt/functions/prompt_steeef_setup",
"chars": 3106,
"preview": "#\n# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration.\n#\n# Authors:\n# Steve Losh <steve@steve"
},
{
"path": "modules/prompt/init.zsh",
"chars": 387,
"preview": "#\n# Loads prompt themes.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load and execute the prompt themi"
},
{
"path": "modules/python/README.md",
"chars": 5077,
"preview": "# Python\n\nEnables local Python and local Python package installation.\n\n## Settings\n\nThis module supports virtual environ"
},
{
"path": "modules/python/functions/python-info",
"chars": 1437,
"preview": "#\n# Exposes information about the Python environment via the $python_info\n# associative array.\n#\n# Authors:\n# Sorin Io"
},
{
"path": "modules/python/init.zsh",
"chars": 6027,
"preview": "#\n# Enables local Python package installation.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n# Sebastian Wi"
},
{
"path": "modules/rails/README.md",
"chars": 1145,
"preview": "# Ruby on Rails\n\nDefines [Ruby on Rails][1] aliases.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add t"
},
{
"path": "modules/rails/init.zsh",
"chars": 1001,
"preview": "#\n# Defines Ruby on Rails aliases.\n#\n# Authors:\n# Robby Russell <robby@planetargon.com>\n# Jake Bell <jake.b.bell@gma"
},
{
"path": "modules/rsync/README.md",
"chars": 874,
"preview": "# Rsync\n\nDefines [rsync][1] aliases.\n\nmacOS users are encouraged to use _rsync_ from [Homebrew][2] or [MacPorts][3],\nwhi"
},
{
"path": "modules/rsync/init.zsh",
"chars": 988,
"preview": "#\n# Defines Rsync aliases.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not "
},
{
"path": "modules/ruby/README.md",
"chars": 3309,
"preview": "# Ruby\n\nConfigures [Ruby][1] local gem installation, loads version managers, and defines\naliases.\n\n## Local Gem Installa"
},
{
"path": "modules/ruby/functions/ruby-app-root",
"chars": 330,
"preview": "#\n# Displays the path to the Ruby application root directory.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#"
},
{
"path": "modules/ruby/functions/ruby-info",
"chars": 897,
"preview": "#\n# Exposes information about the Ruby environment via the $ruby_info associative\n# array.\n#\n# Authors:\n# Sorin Ionesc"
},
{
"path": "modules/ruby/init.zsh",
"chars": 2319,
"preview": "#\n# Configures Ruby local installation, loads version managers, and defines\n# aliases.\n#\n# Authors:\n# Sorin Ionescu <s"
},
{
"path": "modules/screen/README.md",
"chars": 1198,
"preview": "# GNU Screen\n\nDefines [GNU Screen][1] aliases and provides for auto launching it at start-up.\n\n## Settings\n\n### Auto-Sta"
},
{
"path": "modules/screen/init.zsh",
"chars": 948,
"preview": "#\n# Defines GNU Screen aliases and provides for auto launching it at start-up.\n#\n# Authors:\n# Sorin Ionescu <sorin.ion"
},
{
"path": "modules/spectrum/README.md",
"chars": 3451,
"preview": "# Spectrum\n\nProvides for easier use of 256 colors and effects.\n\nTo learn more about text formatting, read [A Guide to 25"
},
{
"path": "modules/spectrum/init.zsh",
"chars": 3326,
"preview": "#\n# Provides for easier use of 256 colors and effects.\n#\n# Authors:\n# P.C. Shyamshankar <sykora@lucentbeing.com>\n# S"
},
{
"path": "modules/ssh/README.md",
"chars": 576,
"preview": "# SSH\n\nProvides for an easier use of [SSH][1] by setting up [_ssh-agent_][2].\n\n## Settings\n\n### Identities\n\nTo load mult"
},
{
"path": "modules/ssh/init.zsh",
"chars": 2264,
"preview": "#\n# Provides for an easier use of SSH by setting up ssh-agent.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n"
},
{
"path": "modules/syntax-highlighting/README.md",
"chars": 2180,
"preview": "# Syntax Highlighting\n\nIntegrates [zsh-syntax-highlighting][1] into Prezto.\n\nThis module must be loaded _before_ the _`p"
},
{
"path": "modules/syntax-highlighting/init.zsh",
"chars": 1241,
"preview": "#\n# Integrates zsh-syntax-highlighting into Prezto.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return"
},
{
"path": "modules/terminal/README.md",
"chars": 1562,
"preview": "# Terminal\n\nSets terminal window and tab titles.\n\n## Settings\n\n### Auto-Title\n\nTo auto set the terminal window and tab t"
},
{
"path": "modules/terminal/init.zsh",
"chars": 4262,
"preview": "#\n# Sets terminal window and tab titles.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n# Olaf Conradi <olaf"
},
{
"path": "modules/tmux/README.md",
"chars": 2730,
"preview": "# Tmux\n\nDefines [_tmux_][1] aliases and provides for auto launching it at start-up.\n\n## Settings\n\n### Auto-Start\n\nStarts"
},
{
"path": "modules/tmux/init.zsh",
"chars": 1530,
"preview": "#\n# Defines tmux aliases and provides for auto launching it at start-up.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@g"
},
{
"path": "modules/utility/README.md",
"chars": 6281,
"preview": "# Utility\n\nDefines general aliases and functions.\n\nThis module must be loaded _before_ the [_`completion`_][1] module so"
},
{
"path": "modules/utility/functions/_cdls_popdls_pushdls",
"chars": 145,
"preview": "#compdef cdls popdls pushdls\n#autoload\n\n#\n# Completes cdls, popdls, and pushdls.\n#\n# Authors:\n# Sorin Ionescu <sorin.i"
},
{
"path": "modules/utility/functions/_dut",
"chars": 107,
"preview": "#compdef dut\n#autoload\n\n#\n# Completes dut.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_du\n"
},
{
"path": "modules/utility/functions/_mkdcd",
"chars": 195,
"preview": "#compdef mkdcd\n#autoload\n\n#\n# Completes mkdcd.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nlocal expl\n\n_"
},
{
"path": "modules/utility/functions/_noremoteglob",
"chars": 139,
"preview": "#compdef noremoteglob\n#autoload\n\n#\n# Completes noremoteglob.\n#\n# Authors:\n# Indrajit Raychaudhuri <irc+code@indrajit.c"
},
{
"path": "modules/utility/functions/_prep",
"chars": 338,
"preview": "#compdef prep\n#autoload\n\n#\n# Completes prep.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n "
},
{
"path": "modules/utility/functions/_psub",
"chars": 362,
"preview": "#compdef psub\n#autoload\n\n#\n# Completes psub.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n "
},
{
"path": "modules/utility/functions/diff",
"chars": 316,
"preview": "#\n# Highlights diff output.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function diff {\n\nif zstyle -t "
},
{
"path": "modules/utility/functions/dut",
"chars": 557,
"preview": "#\n# Displays the grand total disk usage using human readable units.\n#\n# Authors:\n# Suraj N. Kurapati <sunaku@gmail.com"
},
{
"path": "modules/utility/functions/make",
"chars": 259,
"preview": "#\n# Highlights make output.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function make {\n\nif zstyle -t "
},
{
"path": "modules/utility/functions/prep",
"chars": 1041,
"preview": "#\n# Provides a grep-like pattern search.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function prep {\n\n"
},
{
"path": "modules/utility/functions/psub",
"chars": 1120,
"preview": "#\n# Provides a sed-like pattern substitution.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function psu"
},
{
"path": "modules/utility/functions/wdiff",
"chars": 912,
"preview": "#\n# Highlights wdiff output.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n# Indrajit Raychaudhuri <irc@ind"
},
{
"path": "modules/utility/functions/zsh-help",
"chars": 4027,
"preview": "#\n# Provides a much easier way to search and access ZSH's manual. First checks for\n# terms at the start of the manual, t"
},
{
"path": "modules/utility/init.zsh",
"chars": 7633,
"preview": "#\n# Defines general aliases and functions.\n#\n# Authors:\n# Robby Russell <robby@planetargon.com>\n# Suraj N. Kurapati "
},
{
"path": "modules/wakeonlan/README.md",
"chars": 1021,
"preview": "# Wake-on-LAN\n\nThis module provides a wrapper around the [wakeonlan][1] tool.\n\n## Usage\n\nTo use this wrapper, create the"
},
{
"path": "modules/wakeonlan/functions/_wake",
"chars": 218,
"preview": "#compdef wake\n#autoload\n\n#\n# Completes wake.\n#\n# Authors:\n# Paul Gideon Dann <pdgiddie@gmail.com>\n# Sorin Ionescu <s"
},
{
"path": "modules/wakeonlan/functions/wake",
"chars": 420,
"preview": "#\n# Wakes devices via wakeonlan.\n#\n# Authors:\n# Paul Gideon Dann <pdgiddie@gmail.com>\n# Sorin Ionescu <sorin.ionescu"
},
{
"path": "modules/yum/README.md",
"chars": 585,
"preview": "# Yum\n\nDefines [_yum_][1] aliases.\n\n## Aliases\n\n- `yumc` removes package(s) and leaves.\n- `yumi` installs package(s).\n- "
},
{
"path": "modules/yum/init.zsh",
"chars": 799,
"preview": "#\n# Defines yum aliases.\n#\n# Authors:\n# Simon <contact@saimon.org>\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Re"
},
{
"path": "runcoms/README.md",
"chars": 2390,
"preview": "# Configuration Files\n\nZsh has several system-wide and user-local configuration files.\n\nAdditionally, Prezto has one use"
},
{
"path": "runcoms/zlogin",
"chars": 782,
"preview": "#\n# Executes commands at login post-zshrc.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Execute code th"
},
{
"path": "runcoms/zlogout",
"chars": 451,
"preview": "#\n# Executes commands at logout.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Execute code only if STDE"
},
{
"path": "runcoms/zpreztorc",
"chars": 6372,
"preview": "#\n# Sets Prezto options.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# General\n#\n\n# Set case-sensitivi"
},
{
"path": "runcoms/zprofile",
"chars": 1254,
"preview": "#\n# Executes commands at login pre-zshrc.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Browser\n#\n\nif "
},
{
"path": "runcoms/zshenv",
"chars": 297,
"preview": "#\n# Defines environment variables.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Ensure that a non-login"
},
{
"path": "runcoms/zshrc",
"chars": 275,
"preview": "#\n# Executes commands at the start of an interactive session.\n#\n# Authors:\n# Sorin Ionescu <sorin.ionescu@gmail.com>\n#"
}
]
About this extraction
This page contains the full source code of the sorin-ionescu/prezto GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 172 files (307.8 KB), approximately 97.7k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.