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

Compare commits

..

3 Commits

Author SHA1 Message Date
3524cc20f0 Add comments for pdebuglog 2018-02-12 15:16:21 -08:00
6ab2cc012e zdebuglog -> pdebuglog 2018-02-12 15:14:08 -08:00
658ec4e4a7 Add zdebuglog for basic debug logging and profiling 2018-02-07 13:38:54 -08:00
144 changed files with 2089 additions and 3095 deletions

9
.gitmodules vendored
View File

@ -16,7 +16,7 @@
[submodule "modules/prompt/external/agnoster"] [submodule "modules/prompt/external/agnoster"]
path = modules/prompt/external/agnoster path = modules/prompt/external/agnoster
url = https://github.com/agnoster/agnoster-zsh-theme.git url = https://github.com/agnoster/agnoster-zsh-theme.git
[submodule "modules/prompt/external/pure"] [submodule "modules/prompt/functions/pure"]
path = modules/prompt/external/pure path = modules/prompt/external/pure
url = https://github.com/sindresorhus/pure.git url = https://github.com/sindresorhus/pure.git
[submodule "modules/fasd/external"] [submodule "modules/fasd/external"]
@ -25,7 +25,6 @@
[submodule "modules/prompt/external/async"] [submodule "modules/prompt/external/async"]
path = modules/prompt/external/async path = modules/prompt/external/async
url = https://github.com/mafredri/zsh-async.git url = https://github.com/mafredri/zsh-async.git
[submodule "modules/prompt/external/powerlevel10k"] [submodule "modules/prompt/external/powerlevel9k"]
path = modules/prompt/external/powerlevel10k path = modules/prompt/external/powerlevel9k
url = https://github.com/romkatv/powerlevel10k.git url = https://github.com/bhilburn/powerlevel9k.git
shallow = true

View File

@ -1,28 +1,29 @@
# Contributing Contributing
------------
This project would not exist without all of its users and [contributors][1]. 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 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. improve its performance, do not hesitate to fork and send pull requests.
## Issue Reporting ### Issue Reporting
- Check that the issue has not already been reported. - Check that the issue has not already been reported.
- Check that the issue has not already been fixed in the latest code. - 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, - Open an issue with a clear title and description in grammatically correct,
complete sentences. complete sentences.
## Pull Request ### Pull Request
- Read [how to properly contribute to open source projects on GitHub][2]. - 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. - Use a topic branch to easily amend a pull request later, if necessary.
- Write [good commit messages][3]. - Write [good commit messages][3].
- Squash commits on the topic branch before opening a pull request. - Squash commits on the topic branch before opening a pull request.
- Use the same coding style and spacing. - Use the same coding style and spacing.
- Open a [pull request][4] that relates to but one subject with a clear title - Open a [pull request][4] that relates to but one subject with a clear
and description in grammatically correct, complete sentences. title and description in grammatically correct, complete sentences.
### Code Style #### Code Style
This project follows the [Google Shell Style Guide][5] when possible. However, This project follows the [Google Shell Style Guide][5] when possible. However,
there are a number of additional things to keep in mind. there are a number of additional things to keep in mind.
@ -31,11 +32,11 @@ there are a number of additional things to keep in mind.
- Prefer `zstyle` over environment variables for configuration. - Prefer `zstyle` over environment variables for configuration.
- Prefer (( ... )) over [[ ... ]] for arithmetic expression. - Prefer (( ... )) over [[ ... ]] for arithmetic expression.
- Use the function keyword to define functions. - Use the function keyword to define functions.
- The 80 character hard limit can be waived for readability. - The 80 character hard limit can be waved for readability.
### Using an Alternative *zprezto* Directory #### Using an Alternative zprezto Directory
To work on Prezto without affecting your current configuration: To work on zprezto without messing with your current configuration:
```sh ```sh
mkdir devel-zprezto mkdir devel-zprezto
@ -51,24 +52,24 @@ done
Then to start zsh in this development environment you will run: Then to start zsh in this development environment you will run:
```console ```sh
ZDOTDIR=/path/to/devel-zprezto zsh ZDOTDIR=/path/to/devel-zprezto zsh
``` ```
### Modules #### Modules
- A *README.md* must be present. - A *README.md* must be present.
- Large functions must be placed in a *functions* directory. - Large functions must be placed in a *functions* directory.
- Functions that take arguments must have completion. - Functions that take arguments must have completion.
### Themes #### Themes
- A screenshots section must be present in the file header. - A screenshots section must be present in the file header.
- The pull request description must have [embedded screenshots][6]. - The pull request description must have [embedded screenshots][6].
[1]: https://github.com/sorin-ionescu/prezto/contributors [1]: https://github.com/sorin-ionescu/prezto/contributors
[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request [2]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html [3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[4]: https://help.github.com/articles/using-pull-requests [4]: https://help.github.com/articles/using-pull-requests
[5]: https://google.github.io/styleguide/shell.xml [5]: https://google.github.io/styleguide/shell.xml
[6]: https://github.github.com/gfm/#images [6]: http://daringfireball.net/projects/markdown/syntax#img

View File

@ -1,15 +0,0 @@
# Install and update
## Install
```bash
git clone https://github.com/dcarrillo/prezto.git ~/.zprezto
cd ~/.zprezto
git remote add upstream https://github.com/sorin-ionescu/prezto.git
git submodule update --init --recursive
```
## Keep updated
Run the [update](scripts/update_zprezto) script.

139
README.md
View File

@ -1,158 +1,131 @@
# Prezto — Instantly Awesome Zsh Prezto — Instantly Awesome Zsh
==============================
Prezto is the configuration framework for [Zsh][1]; it enriches the command line Prezto is the configuration framework for [Zsh][1]; it enriches the command line
interface environment with sane defaults, aliases, functions, auto completion, interface environment with sane defaults, aliases, functions, auto completion,
and prompt themes. and prompt themes.
## Installation Installation
------------
Prezto will work with any recent release of Zsh, but the minimum required Prezto will work with any recent release of Zsh, but the minimum required
version is **4.3.11**. version is 4.3.11.
01. Launch Zsh: 1. Launch Zsh:
```console ```console
zsh zsh
``` ```
02. Clone the repository: 2. Clone the repository:
```console ```console
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
``` ```
<details> 3. Create a new Zsh configuration by copying the Zsh configuration files
<summary><em>Optional: Installing in <code>$XDG_CONFIG_HOME</code></em></summary> provided:
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 ```sh
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}"
export ZDOTDIR="${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 setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done done
``` ```
**Note:** If you already have any of the given configuration files, `ln` in Note: If you already have any of the given config files, ln will error. In
the above operation will cause an error. In simple cases, you can load simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to the bottom of your `.zshrc` to load prezto but keep your config intact. For
the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your more complicated setups, it is recommended that you back up your original
Zsh configuration intact. For more complicated setups, we recommend that you configs and replace them with the provided prezto runcoms.
back up your original configs and replace them with the provided Prezto
[_`runcoms`_][10].
04. Set Zsh as your default shell: 4. Set Zsh as your default shell:
```console ```console
chsh -s /bin/zsh chsh -s /bin/zsh
``` ```
05. Open a new Zsh terminal window or tab. 5. Open a new Zsh terminal window or tab.
### Troubleshooting ### Troubleshooting
If you are not able to find certain commands after switching to Prezto, modify If you are not able to find certain commands after switching to *Prezto*,
the `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh modify the `PATH` variable in *~/.zprofile* then open a new Zsh terminal
terminal window or tab. window or tab.
## Updating Updating
--------
Run `zprezto-update` to automatically check if there is an update to Prezto. Run `zprezto-update` to automatically check if there is an update to zprezto.
If there are no file conflicts, Prezto and its submodules will be automatically If there are no file conflicts, zprezto and its submodules will be
updated. If there are conflicts you will be instructed to go into the automatically updated. If there are conflicts you will instructed to go into
`$ZPREZTODIR` directory and resolve them yourself. the `$ZPREZTODIR` directory and resolve them yourself.
To pull the latest changes and update submodules manually: To pull the latest changes and update submodules manually:
```console ```console
cd $ZPREZTODIR cd $ZPREZTODIR
git pull git pull
git submodule sync --recursive
git submodule update --init --recursive git submodule update --init --recursive
``` ```
## Usage Usage
-----
Prezto has many features disabled by default. Read the source code and the Prezto has many features disabled by default. Read the source code and
accompanying README files to learn about what is available. accompanying README files to learn of what is available.
### Modules ### Modules
01. Browse [_`modules`_][9] to see what is available. 1. Browse */modules* to see what is available.
02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open 2. Load the modules you need in *~/.zpreztorc* then open a new Zsh terminal
a new Zsh terminal window or tab. window or tab.
### Themes ### Themes
01. For a list of themes, type `prompt -l`. 1. For a list of themes, type `prompt -l`.
02. To preview a theme, type `prompt -p name`. 2. To preview a theme, type `prompt -p name`.
03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then 3. Load the theme you like in *~/.zpreztorc* then open a new Zsh terminal
open a new Zsh terminal window or tab. window or tab.
![sorin theme][2] ![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 ### External Modules
01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_. 1. By default modules will be loaded from */modules* and */contrib*.
02. Additional module directories can be added to the 2. Additional module directories can be added to the
`:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. `:prezto:load:pmodule-dirs` setting in *~/.zpreztorc*.
Note that module names need to be unique or they will cause an error when Note that module names need to be unique or they will cause an error when
loading. loading.
```sh ```console
zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
``` ```
## Customization Customization
-------------
The project is managed via [Git][3]. We highly recommend that you fork this The project is managed via [Git][3]. It is highly recommended that you fork this
project so that you can commit your changes and push them to your fork on project; so, that you can commit your changes and push them to [GitHub][4] to
[GitHub][4] to preserve them. If you do not know how to use Git, follow this not lose them. If you do not know how to use Git, follow this [tutorial][5] and
[tutorial][5] and bookmark this [reference][6]. bookmark this [reference][6].
## Resources Resources
---------
The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable. The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.
## License License
-------
This project is licensed under the MIT License. This project is licensed under the MIT License.
[1]: https://www.zsh.org [1]: http://www.zsh.org
[2]: https://i.imgur.com/nrGV6pg.png "sorin theme" [2]: http://i.imgur.com/nrGV6pg.png "sorin theme"
[3]: https://git-scm.com [3]: http://git-scm.com
[4]: https://github.com [4]: https://github.com
[5]: https://gitimmersion.com [5]: http://gitimmersion.com
[6]: https://git.github.io/git-reference/ [6]: http://gitref.org
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf [7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[8]: https://grml.org/zsh/zsh-lovers.html [8]: http://grml.org/zsh/zsh-lovers.html
[9]: modules#readme
[10]: runcoms#readme
[11]: modules/git#readme

View File

@ -17,6 +17,20 @@ if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
fi fi
unset min_zsh_version unset min_zsh_version
# Change the resolution of the SECONDS variable to be more useful for debugging.
typeset -F SECONDS
# logging convenience, mostly meant for debugging performance issues.
function pdebuglog {
if ! zstyle -t ":prezto" debug; then
return
fi
local format="$1"
shift
printf "[%f] $format\n" $SECONDS "$@"
}
# zprezto convenience updater # zprezto convenience updater
# The function is surrounded by ( ) instead of { } so it starts in a subshell # The function is surrounded by ( ) instead of { } so it starts in a subshell
# and won't affect the environment of the calling shell # and won't affect the environment of the calling shell
@ -44,8 +58,7 @@ function zprezto-update {
printf "There is an update available. Trying to pull.\n\n" printf "There is an update available. Trying to pull.\n\n"
if git pull --ff-only; then if git pull --ff-only; then
printf "Syncing submodules\n" printf "Syncing submodules\n"
git submodule sync --recursive git submodule update --recursive
git submodule update --init --recursive
return $? return $?
else else
cannot-fast-forward cannot-fast-forward
@ -94,25 +107,25 @@ function pmodload {
# Load Prezto modules. # Load Prezto modules.
for pmodule in "$pmodules[@]"; do for pmodule in "$pmodules[@]"; do
pdebuglog "Started loading %q" $pmodule
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
pdebuglog "Module %q already loaded" $pmodule
continue continue
else else
locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)}) locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)})
if (( ${#locations} > 1 )); then if (( ${#locations} > 1 )); then
if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then
print "$0: conflicting module locations: $locations" print "$0: conflicting module locations: $locations"
continue continue
fi
elif (( ${#locations} < 1 )); then elif (( ${#locations} < 1 )); then
print "$0: no such module: $pmodule" print "$0: no such module: $pmodule"
continue continue
fi fi
# Grab the full path to this module # Grab the full path to this module
pmodule_location=${locations[-1]} pmodule_location=${locations[1]}
# Add functions to $fpath. # Add functions to $fpath.
fpath=(${pmodule_location}/functions(-/FN) $fpath) fpath=(${pmodule_location}/functions(/FN) $fpath)
function { function {
local pfunction local pfunction
@ -134,6 +147,7 @@ function pmodload {
if (( $? == 0 )); then if (( $? == 0 )); then
zstyle ":prezto:module:$pmodule" loaded 'yes' zstyle ":prezto:module:$pmodule" loaded 'yes'
pdebuglog "Module %q loaded" $pmodule
else else
# Remove the $fpath entry. # Remove the $fpath entry.
fpath[(r)${pmodule_location}/functions]=() fpath[(r)${pmodule_location}/functions]=()
@ -151,6 +165,7 @@ function pmodload {
done done
} }
pdebuglog "Module %q failed to load" $pmodule
zstyle ":prezto:module:$pmodule" loaded 'no' zstyle ":prezto:module:$pmodule" loaded 'no'
fi fi
fi fi
@ -183,9 +198,6 @@ zstyle -a ':prezto:load' zmodule 'zmodules'
for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}" for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}"
unset zmodule{s,} unset zmodule{s,}
# Load more specific 'run-help' function from $fpath.
(( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help
# Autoload Zsh functions. # Autoload Zsh functions.
zstyle -a ':prezto:load' zfunction 'zfunctions' zstyle -a ':prezto:load' zfunction 'zfunctions'
for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction" for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction"

View File

@ -1,166 +1,206 @@
# Modules Modules
=======
Load modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters. Load modules in *zpreztorc*. The order matters.
```sh ```sh
zstyle ':prezto:load' pmodule 'environment' 'terminal' zstyle ':prezto:load' pmodule 'environment' 'terminal'
``` ```
## Archive Archive
-------
Provides functions to list and extract archives. Provides functions to list and extract archives.
## Autosuggestions Autosuggestions
---------------
Integrates zsh-autosuggestions into Prezto. Integrates zsh-autosuggestions into Prezto.
## Command-Not-Found Command-Not-Found
-----------------
Loads the command-not-found tool on macOS or Debian-based distributions. Loads the command-not-found tool on Debian-based distributions.
## Completion Completion
----------
Loads and configures <kbd>TAB</kbd> completion and provides additional Loads and configures tab completion and provides additional completions from
completions from the zsh-completions project. the zsh-completions project.
## Directory Directory
---------
Sets directory options and defines directory aliases. Sets directory options and defines directory aliases.
## DNF DNF
---
Defines _dnf_ aliases. Defines dnf aliases.
## Dpkg Dpkg
----
Defines _dpkg_ aliases and functions. Defines dpkg aliases and functions.
## Editor Editor
------
Sets key bindings. Sets key bindings.
## Emacs Emacs
-----
Enables Emacs dependency management. Enables Emacs dependency management.
## Environment Environment
-----------
Sets general shell options and defines environment variables. Sets general shell options and defines environment variables.
## Fasd Fasd
----
Maintains a frequently used file and directory list for fast access. Maintains a frequently used file and directory list for fast access.
## Git Git
---
Enhances the Git distributed version control system by providing aliases, Enhances the Git distributed version control system by providing aliases,
functions and by exposing repository status information to prompts. functions and by exposing repository status information to prompts.
## GNU Utility GNU Utility
-----------
Provides for the interactive use of GNU utilities on non-GNU systems. Provides for the interactive use of GNU utilities on non-GNU systems.
## GPG GPG
---
Provides for an easier use of GPG by setting up gpg-agent. Provides for an easier use of GPG by setting up gpg-agent.
## Haskell Haskell
-------
Enables local Haskell package installation. Enables local Haskell package installation.
## Helper Helper
------
Provides helper functions for developing modules. Provides helper functions for developing modules.
## History History
-------
Sets history options and defines history aliases. Sets history options and defines history aliases.
## History Substring Search History Substring Search
------------------------
Integrates zsh-history-substring-search into Prezto. Integrates zsh-history-substring-search into Prezto.
## Homebrew Homebrew
--------
Defines Homebrew aliases. Defines Homebrew aliases.
## MacPorts MacPorts
--------
Defines MacPorts aliases and adds MacPorts directories to path variables. Defines MacPorts aliases and adds MacPorts directories to path variables.
## Node.js Node.js
-------
Provides utility functions for Node.js and loads npm completion. Provides utility functions for Node.js and loads npm completion.
## OCaml OCaml
-----
Initializes OCaml package management. Initializes OCaml package management.
## OSX OSX
---
Defines macOS aliases and functions. Defines Mac OS X aliases and functions.
## Pacman Pacman
------
Provides aliases and functions for the Pacman package manager and frontends. Provides aliases and functions for the Pacman package manager and frontends.
## Perl Perl
----
Enables local Perl module installation on macOS and defines alises. Enables local Perl module installation on Mac OS X and defines alises.
## Prompt Prompt
------
Loads prompt themes. Loads prompt themes.
## Python Python
------
Enables local Python and local Python package installation. Enables local Python and local Python package installation.
## Ruby on Rails Ruby on Rails
-------------
Defines Ruby on Rails aliases. Defines Ruby on Rails aliases.
## Rsync Rsync
-----
Defines rsync aliases. Defines rsync aliases.
## Ruby Ruby
----
Configures Ruby local gem installation, loads version managers, and defines Configures Ruby local gem installation, loads version managers, and defines
aliases. aliases.
## GNU Screen GNU Screen
----------
Defines GNU Screen aliases and provides for auto launching it at start-up. Defines GNU Screen aliases and provides for auto launching it at start-up.
## Spectrum Spectrum
--------
Provides for easier use of 256 colors and effects. Provides for easier use of 256 colors and effects.
## SSH SSH
---
Provides for an easier use of SSH by setting up ssh-agent. Provides for an easier use of SSH by setting up ssh-agent.
## Syntax Highlighting Syntax Highlighting
-------------------
Integrates zsh-syntax-highlighting into Prezto. Integrates zsh-syntax-highlighting into Prezto.
## Terminal Terminal
--------
Sets terminal window and tab titles. Sets terminal window and tab titles.
## Tmux Tmux
----
Defines tmux aliases and provides for auto launching it at start-up. Defines tmux aliases and provides for auto launching it at start-up.
## Utility Utility
-------
Defines general aliases and functions. Defines general aliases and functions.
## Wake-on-LAN Wake-on-LAN
-----------
This module provides a wrapper around the wakeonlan tool. This module provides a wrapper around the wakeonlan tool.
## Yum Yum
---
Defines yum aliases. Defines yum aliases.

View File

@ -1,53 +1,52 @@
# Archive Archive
=======
Provides functions to create, list, and extract archives. Provides functions to create, list, and extract archives.
This module must be loaded _before_ the [_`completion`_][1] module so that the Functions
provided completion definitions are loaded automatically by _`completion`_ ---------
module.
## Functions
- `archive` creates an archive based on the provided archive name. - `archive` creates an archive based on the provided archive name.
- `lsarchive` lists the contents of one or more archives. - `lsarchive` lists the contents of one or more archives.
- `unarchive` extracts the contents of one or more archives. - `unarchive` extracts the contents of one or more archives.
## Supported Formats Supported Formats
-----------------
The following archive formats are supported when the required utilities are The following archive formats are supported when the required utilities are
installed: installed:
- _.tar.gz_, _.tgz_ require `tar` (optionally `pigz`). - *.tar.gz*, *.tgz* require `tar` (optionally `pigz`).
- _.tar.bz2_, _.tbz_ require `tar` (optionally `pbzip2`). - *.tar.bz2*, *.tbz* require `tar` (optionally `pbzip2`).
- _.tar.xz_, _.txz_ require `tar` with _xz_ support. - *.tar.xz*, *.txz* require `tar` with *xz* support.
- _.tar.zma_, _.tlz_ require `tar` with _lzma_ support. - *.tar.zma*, *.tlz* require `tar` with *lzma* support.
- _.tar_ requires `tar`. - *.tar* requires `tar`.
- _.gz_ requires `gunzip`. - *.gz* requires `gunzip`.
- _.bz2_ requires `bunzip2`. - *.bz2* requires `bunzip2`.
- _.xz_ requires `unxz`. - *.xz* requires `unxz`.
- _.lzma_ requires `unlzma`. - *.lzma* requires `unlzma`.
- _.Z_ requires `uncompress`. - *.Z* requires `uncompress`.
- _.zip_, _.jar_ requires `unzip`. - *.zip*, *.jar* requires `unzip`.
- _.rar_ requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`. - *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
- _.7z_ requires `7za`. - *.7z* requires `7za`.
- _.deb_ requires `ar`, `tar`. - *.deb* requires `ar`, `tar`.
Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them over
over their traditional counterparts, `gzip` and `bzip2` respectively, to take their traditional counterparts, `gzip` and `bzip2` respectively, to take full advantage
full advantage of all available CPU cores for compression. of all available CPU cores for compression.
## Alternatives Alternatives
------------
Specifically on macOS, [The Unarchiver][2] provides a similar command line tool Specifically on macOS, [The Unarchiver][1] provides a similar command line tool
which doesn't depend on a number of other programs being installed. which doesn't depend on a number of other programs being installed.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][3]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Matt Hamilton](https://github.com/Eriner) - [Matt Hamilton](https://github.com/Eriner)
[1]: ../completion#readme [1]: https://theunarchiver.com/command-line
[2]: https://theunarchiver.com/command-line
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

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

View File

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

View File

@ -1,3 +1,4 @@
#!/usr/bin/env zsh
# #
# Creates archive file # Creates archive file
# #
@ -7,15 +8,15 @@
# function archive { # function archive {
local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin local archive_name dir_to_archive _gzip_bin _bzip2_bin
if (( $# < 2 )); then if (( $# != 2 )); then
cat >&2 <<EOF cat >&2 <<EOF
usage: $0 [archive_name.zip] [/path/to/include/into/archive ...] usage: $0 [archive_name.zip] [/path/to/include/into/archive]
Where 'archive.zip' uses any of the following extensions: Where 'archive.zip' uses any of the following extensions:
.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tar.zst, .tar, .zip, .rar, .7z .tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tar, .zip, .rar, .7z
There is no '-v' switch; all operations are verbose. There is no '-v' switch; all operations are verbose.
EOF EOF
@ -27,8 +28,14 @@ fi
# strip the path, just in case one is provided for some reason # strip the path, just in case one is provided for some reason
archive_name="${1:t}" archive_name="${1:t}"
# let paths be handled by actual archive helper # use absolute paths, and follow symlinks
path_to_archive="${@:2}" dir_to_archive="${2}"
# if the directory doesn't exist, quit. Nothing to archive
if [[ ! -e "${dir_to_archive}" ]]; then
print "$0: file or directory not valid: ${dir_to_archive}" >&2
return 1
fi
# here, we check for dropin/multi-threaded replacements # here, we check for dropin/multi-threaded replacements
# this should eventually be moved to modules/archive/init.zsh # this should eventually be moved to modules/archive/init.zsh
@ -39,32 +46,21 @@ else
_gzip_bin='gzip' _gzip_bin='gzip'
fi fi
if (( $+commands[pixz] )); then if (( $+commands[pbzip2] )); then
_xz_bin='pixz'
else
_xz_bin='xz'
fi
if (( $+commands[lbzip2] )); then
_bzip2_bin='lbzip2'
elif (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2' _bzip2_bin='pbzip2'
else else
_bzip2_bin='bzip2' _bzip2_bin='bzip2'
fi fi
_zstd_bin='zstd'
case "${archive_name}" in case "${archive_name}" in
(*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;; (*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${dir_to_archive}" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;; (*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${dir_to_archive}" ;;
(*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;; (*.tar.xz|*.txz) tar -cvJf "${archive_name}" "${dir_to_archive}" ;;
(*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;; (*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${dir_to_archive}" ;;
(*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;; (*.tar) tar -cvf "${archive_name}" "${dir_to_archive}" ;;
(*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;; (*.zip|*.jar) zip -r "${archive_name}" "${dir_to_archive}" ;;
(*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;; (*.rar) rar a "${archive_name}" "${dir_to_archive}" ;;
(*.rar) rar a "${archive_name}" "${=path_to_archive}" ;; (*.7z) 7za a "${archive_name}" "${dir_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" ;; (*.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" ;; (*.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" ;; (*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;;

View File

@ -41,7 +41,6 @@ while (( $# > 0 )); do
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \ && tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;; || 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" ;; (*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
(*.rar) ( (( $+commands[unrar] )) \ (*.rar) ( (( $+commands[unrar] )) \

View File

@ -12,7 +12,6 @@ local success
local file_name local file_name
local file_path local file_path
local extract_dir local extract_dir
local _gzip_bin _bzip2_bin _xz_bin _zstd_bin
if (( $# == 0 )); then if (( $# == 0 )); then
cat >&2 <<EOF cat >&2 <<EOF
@ -31,31 +30,6 @@ if [[ "$1" == "-r" || "$1" == "--remove" ]]; then
shift shift
fi 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'
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 while (( $# > 0 )); do
if [[ ! -s "$1" ]]; then if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2 print "$0: file not valid: $1" >&2
@ -68,14 +42,15 @@ while (( $# > 0 )); do
file_path="${1:A}" file_path="${1:A}"
extract_dir="${file_name:r}" extract_dir="${file_name:r}"
case "$1:l" in case "$1:l" in
(*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;; (*.tar.gz|*.tgz) tar xvzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;; (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
(*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;; (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -xvf "$1" \
|| xzcat "$1" | tar xvf - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \ && tar --lzma -xvf "$1" \
|| lzcat "$1" | tar -xvf - ;; || lzcat "$1" | tar xvf - ;;
(*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;; (*.tar) tar xvf "$1" ;;
(*.tar) tar -xvf "$1" ;;
(*.gz) gunzip "$1" ;; (*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;; (*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;; (*.xz) unxz "$1" ;;

View File

@ -1,62 +1,58 @@
# Autosuggestions Autosuggestions
---------------
Integrates zsh-autosuggestions into Prezto.
Autosuggestions
===============
Integrates [zsh-autosuggestions][1] into Prezto, which implements the Integrates [zsh-autosuggestions][1] into Prezto, which implements the
[Fish shell][2]'s autosuggestions feature, where the user can type in any part [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 of a previously entered command and Zsh suggests commands as you type based on
history and completions. history and completions.
If this module is used in conjunction with the [_`syntax-highlighting`_][3] If this module is used in conjunction with the *syntax-highlighting* module,
module, this module must be loaded _after_ the _`syntax-highlighting`_ module. this module must be loaded **after** the *syntax-highlighting* module.
Additionally, if this module is used in conjunction with the If this module is used in conjunction with the *history-substring-search*
[_`history-substring-search`_][4] module, this module must be loaded _after_ the module, this module must be loaded **after** the *history-substring-search*
_`history-substring-search`_ module as well. module.
To elaborate, the relative order of loading the modules would be Contributors
_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_. ------------
## Contributors
New features and bug fixes should be submitted to the [zsh-autosuggestions][1] 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 project according to its rules and regulations. This module will be synchronized
against it. against it.
## Settings Settings
--------
### Highlighting ### Highlighting
If colors are enabled, _autosuggestions_ will automatically highlight If colors are enabled, *autosuggestions* will automatically highlight
positive results. positive results.
To enable highlighting for this module only, add the following line to To enable highlighting for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_: *zpreztorc*:
```sh ```sh
zstyle ':prezto:module:autosuggestions' color 'yes' zstyle ':prezto:module:autosuggestions' color 'yes'
``` ```
To set the query found color, add the following line to To set the query found color, add the following line to *zpreztorc*:
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh ```sh
zstyle ':prezto:module:autosuggestions:color' found '' zstyle ':prezto:module:autosuggestions:color' found ''
``` ```
## Troubleshooting Authors
-------
### Autosuggestions from previous sessions don't show up *The authors of this module should be contacted via the [issue tracker][3].*
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) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/tarruda/zsh-autosuggestions [1]: https://github.com/tarruda/zsh-autosuggestions
[2]: https://fishshell.com [2]: http://fishshell.com
[3]: ../syntax-highlighting#readme [3]: https://github.com/sorin-ionescu/prezto/issues
[4]: ../history-substring-search#readme
[5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,13 +0,0 @@
#compdef aws_switch_profile
#autoload
if [[ ! -f ~/.aws/credentials ]]; then
return 1
fi
local profiles
profiles=$(grep -E "^\[.+\]" ~/.aws/credentials | tr -d '[' | tr -d ']' )
_arguments "1:toggle:((
$profiles
))" && return 0

View File

@ -1,33 +0,0 @@
#
# Exposes information about the AWS_PROFILE environment via the $aws_info associative
# array.
#
# function aws-info {
local profile_format
local profile_formatted
local aws_prompt
local aws_region_prompt
unset aws_info
typeset -gA aws_info
if (( ${+AWS_SECRET_ACCESS_KEY} )); then
aws_prompt="${AWS_PROFILE}  "
elif (( ${+AWS_PROFILE} )); then
aws_prompt=$AWS_PROFILE
fi
if (( ${+AWS_DEFAULT_REGION} )) && [[ ${_aws_region} = "true" ]]; then
AWS_REGION=$(cut -d "-" -f 1 <<<$AWS_DEFAULT_REGION | cut -b 1)$(cut -d "-" -f 2 <<<$AWS_DEFAULT_REGION | cut -b 1)$(cut -d "-" -f 3 <<<$AWS_DEFAULT_REGION | cut -b 1)
aws_region_prompt=" $AWS_REGION"
fi
if (( ${+AWS_SECRET_ACCESS_KEY} )) || (( ${+AWS_DEFAULT_REGION} )); then
zstyle -s ':prezto:module:aws:info:profile' format 'profile_format'
zformat -f profile_formatted "$profile_format" "v:${aws_prompt:t}${aws_region_prompt}"
aws_info[profile]="$profile_formatted"
fi
# }

View File

@ -1,177 +0,0 @@
#
# Defines aws cli aliases/functions.
#
# Authors:
# Daniel Carrillo
#
# Get the output parameter
zstyle -s ':prezto:module:aws' output '_aws_output' || _aws_output='table'
zstyle -s ':prezto:module:aws' show_region '_aws_region' || _aws_region='false'
zstyle -s ':prezto:module:aws' profile '_aws_profile' || _aws_profile='default'
zstyle -s ':prezto:module:aws' sso '_aws_sso' || _aws_sso='false'
# Return if requirements are not found.
if (( ! $+commands[aws] )); then
return 1
fi
function _get_aws_profile {
if [[ -z "${AWS_PROFILE+1}" ]]; then
echo ${_aws_profile}
else
echo $AWS_PROFILE
fi
}
function aws_i {
local profile=$(_get_aws_profile)
aws ec2 describe-instances --profile $profile --output ${_aws_output} \
--query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value, LaunchTime, State.Name,
InstanceType, VpcId, InstanceId, Placement.AvailabilityZone, PrivateIpAddress, PublicIpAddress]'
}
function aws_ebs {
local profile=$(_get_aws_profile)
aws ec2 describe-volumes --profile $profile --output ${_aws_output} \
--query 'Volumes[].[Tags[?Key==`Name`] | [0].Value, VolumeId, Attachments[0].InstanceId, Size, VolumeType, Iops, AvailabilityZone]'
}
function aws_elb {
local profile=$(_get_aws_profile)
aws elb describe-load-balancers --profile $profile --output ${_aws_output} \
--query "LoadBalancerDescriptions[*].{type:'elb',scheme:Scheme,dns:DNSName,vpc:VPCId,name:LoadBalancerName,subnets:Subnets[*] | join(',', @)}"
local profile=$(_get_aws_profile)
aws elbv2 describe-load-balancers --profile $profile --output ${_aws_output} \
--query "LoadBalancers[*].{type:Type,scheme:Scheme,dns:DNSName,vpc:VpcId,name:LoadBalancerName,subnets:AvailabilityZones[*].SubnetId | join(',', @)}"
}
function aws_userdata {
local profile=$(_get_aws_profile)
aws ec2 describe-instance-attribute --profile $profile --output text \
--attribute userData --instance-id $1 \
--query 'UserData.Value' | base64 -d
}
function aws_vpc {
local profile=$(_get_aws_profile)
aws ec2 describe-vpcs --profile $profile --output ${_aws_output} \
--query 'Vpcs[*].{id:VpcId,cidr:CidrBlock,tag:Tags[0].Value}'
}
function aws_subnets {
local profile=$(_get_aws_profile)
aws ec2 describe-subnets --profile $profile --output text \
--query 'Subnets[].[Tags[?Key==`Name`] | [0].Value, SubnetId, VpcId, CidrBlock]' \
| sort -k1 | column -t
}
function aws_ag {
local profile=$(_get_aws_profile)
aws autoscaling describe-auto-scaling-groups --profile $profile --output ${_aws_output} \
--query 'AutoScalingGroups[*].{name:AutoScalingGroupName,az:VPCZoneIdentifier}'
}
function aws_ami {
local profile=$(_get_aws_profile)
aws ec2 describe-images --profile $profile --output ${_aws_output} \
--owner self --query 'Images[*].{date:CreationDate,id:ImageId,name:Name,virt:VirtualizationType,st:State}'
}
function aws_kms_decrypt {
local profile=$(_get_aws_profile)
if [[ -z $1 ]]; then
echo "String is missing"
return 1
fi
aws kms --profile $profile decrypt --ciphertext-blob fileb://<(base64 -d <<<$1) \
--output text --query Plaintext | base64 -d
}
function aws_ssm_session {
local profile=$(_get_aws_profile)
if [[ -z $1 ]]; then
echo "Instance id is missing"
return 1
fi
aws ssm start-session --profile $profile --target $1
}
function aws_ssm_session_any {
local profile=$(_get_aws_profile)
local id
if [[ -z $1 ]]; then
echo "Instance name is missing"
return 1
fi
id=$(aws ec2 describe-instances --profile $profile --output text \
--filter "Name=tag:Name,Values=$1" "Name=instance-state-name,Values=running" \
--query 'Reservations[0].Instances[0].InstanceId')
if [[ $2 == "ssh" ]]; then
shift 2
AWS_PROFILE=$profile ssh $id $@
else
aws ssm start-session --profile $profile --target $id
fi
}
function aws_cf {
local profile=$(_get_aws_profile)
if ! type "jq" > /dev/null; then
echo "ERROR: this function needs jq to be installed"
return 1
fi
aws cloudfront list-distributions --profile $profile --output json \
--query "DistributionList.Items[*].{id:Id,domain:DomainName,status:Status,
origin:Origins.Items[].DomainName | join(' ', @), aliases:Aliases.Items | join(' ', @)}" \
| jq -r ".[] | [.id, .domain, .aliases, .status, .origin] | @csv" | tr -d '"' | column --separator="," --table
}
# ~/.ssh/config
#
# Host i-*
# ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
# User <your_user>
function ssh_aws_any {
host=$1
shift
extra_params=$@
aws_ssm_session_any $host ssh $extra_params
}
function aws_switch_profile {
local region
if [[ -z $1 ]]; then
echo "Profile can't be an empty string"
return 1
fi
echo "Activating profile $1..."
unset -m "AWS_*"
export AWS_PROFILE=$1
if [[ -f ~/.aws/credentials ]]; then #&& (( ! ${+AWS_DEFAULT_REGION} ))
region=$(aws configure get region)
if [[ ! -z $region ]]; then
export AWS_DEFAULT_REGION=$region
else
unset AWS_DEFAULT_REGION
fi
if [[ ${_aws_sso} == "true" ]]; then
eval $(aws-export-credentials --env-export)
fi
fi
}
function aws_deactivate_profile {
echo "Deactivating aws profile..."
unset -m "AWS_*"
}

View File

@ -1,21 +1,21 @@
# Command-Not-Found Command-Not-Found
=================
When you try to use a command that is not available locally, searches the When you try to use a command that is not available locally, searches
package manager for a package offering that command and suggests the proper the package manager for a package offering that command and suggests
install command. the proper install command.
Debian and Arch Linux based distributions use the [`command-not-found`][1] tool. Debian-based and Arch Linux-based distributions use the [`command-not-found`][1] tool.
macOS uses Homebrew's [`command-not-found` clone][2]. Note that unless you have macOS uses Homebrew's [`command-not-found` clone][2]. Note that you also need to [follow the instructions to tap the `command-not-found` homebrew repository][3].
a recent version of Homebrew installed, you might also need to tap the
`command-not-found` Homebrew repository [following the instructions][3].
## Authors
_The authors of this module should be contacted via the [issue tracker][4]._ Authors
-------
*The authors of this module should be contacted via the [issue tracker][4].*
- [Joseph Booker](https://github.com/sargas) - [Joseph Booker](https://github.com/sargas)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: https://code.launchpad.net/command-not-found [1]: https://code.launchpad.net/command-not-found
[2]: https://github.com/Homebrew/homebrew-command-not-found [2]: https://github.com/Homebrew/homebrew-command-not-found

View File

@ -12,11 +12,9 @@ if [[ -s '/etc/zsh_command_not_found' ]]; then
# Load command-not-found on Arch Linux-based distributions. # Load command-not-found on Arch Linux-based distributions.
elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then
source '/usr/share/doc/pkgfile/command-not-found.zsh' source '/usr/share/doc/pkgfile/command-not-found.zsh'
# Load command-not-found on macOS when Homebrew tap is configured. # Load command-not-found on Mac OS X when homebrew tap is configured.
elif (( $+commands[brew] )) \ elif (( $+commands[brew] )) && brew command command-not-found-init > /dev/null 2>&1; then
&& [[ -s "${hb_cnf_handler::="$(brew --repository 2> /dev/null)"/Library/Taps/homebrew/homebrew-command-not-found/handler.sh}" ]]; then eval "$(brew command-not-found-init)"
source "$hb_cnf_handler"
unset hb_cnf_handler
# Return if requirements are not found. # Return if requirements are not found.
else else
return 1 return 1

View File

@ -1,55 +1,40 @@
# Completion Completion
==========
Loads and configures <kbd>TAB</kbd> completion and provides additional Loads and configures tab completion and provides additional completions from
completions from the [zsh-completions][1] project. the [zsh-completions][1] project.
This module must be loaded late _after_ the _`utility`_ module and all other This module must be loaded **after** the *utility* module.
modules that provide completion definitions.
## Options Settings
--------
- `COMPLETE_IN_WORD` complete from both ends of a word. ### Ignore */etc/hosts* Entries
- `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 To ignore certain entries from static */etc/hosts* for host completion, add the
following lines in *zpreztorc* with the IP addresses of the hosts as they
- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'. appear in */etc/hosts*. Both IP address and the corresponding hostname will be
ignored during host completion. However, some of the entries ignored from
## Settings */etc/hosts* still might appear during completion because of their presence in
*ssh* configuration or history).
### 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 ```sh
zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \ zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
'0.0.0.0' '127.0.0.1' '0.0.0.0' '127.0.0.1'
``` ```
## Contributors Contributors
------------
Completions should be submitted to the [zsh-completions][1] project according to Completions should be submitted to the [zsh-completions][1] project according
its rules and regulations. This module will be synchronized against it. to its rules and regulations. This module will be synchronized against it.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][3]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-completions [1]: https://github.com/zsh-users/zsh-completions
[2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles [2]: https://github.com/sorin-ionescu/prezto/issues
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -7,19 +7,12 @@
# #
# Return if requirements are not found. # Return if requirements are not found.
if [[ $TERM == 'dumb' ]]; then if [[ "$TERM" == 'dumb' ]]; then
return 1 return 1
fi fi
# Add zsh-completions to $fpath. # Add zsh-completions to $fpath.
fpath=(${0:h}/external/src $fpath) fpath=("${0:h}/external/src" $fpath)
# Add completion for keg-only brewed curl when available.
if (( $+commands[brew] )) \
&& [[ -d "${curl_prefix::="$(brew --prefix 2> /dev/null)"/opt/curl}" ]]; then
fpath=($curl_prefix/share/zsh/site-functions $fpath)
fi
unset curl_prefix
# #
# Options # Options
@ -31,49 +24,29 @@ setopt PATH_DIRS # Perform path search even on command names with sla
setopt AUTO_MENU # Show completion menu on a successive tab press. setopt AUTO_MENU # Show completion menu on a successive tab press.
setopt AUTO_LIST # Automatically list choices on ambiguous completion. setopt AUTO_LIST # Automatically list choices on ambiguous completion.
setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. 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. setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
#
# 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 # 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 # cache time of 20 hours, so it should almost always regenerate the first time a
# shell is opened each day. # shell is opened each day.
autoload -Uz compinit autoload -Uz compinit
_comp_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump" _comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20))
# #q expands globs in conditional expressions if (( $#_comp_files )); then
if [[ $_comp_path(#qNmh-20) ]]; then compinit -i -C
# -C (skip function check) implies -i (skip security check).
compinit -C -d "$_comp_path"
else else
mkdir -p "$_comp_path:h" compinit -i
compinit -i -d "$_comp_path"
# Keep $_comp_path younger than cache time even if it isn't regenerated.
touch "$_comp_path"
fi fi
unset _comp_path unset _comp_files
# #
# Styles # 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. # Use caching to make completion for commands such as dpkg and apt usable.
zstyle ':completion::complete:*' use-cache on zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache" zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
# Case-insensitive (all), partial-word, and then substring completion. # Case-insensitive (all), partial-word, and then substring completion.
if zstyle -t ':prezto:module:completion:*' case-sensitive; then if zstyle -t ':prezto:module:completion:*' case-sensitive; then
@ -93,6 +66,7 @@ zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f' zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f' zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f' zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
zstyle ':completion:*' format ' %F{yellow}-- %d --%f' zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*' group-name '' zstyle ':completion:*' group-name ''
zstyle ':completion:*' verbose yes zstyle ':completion:*' verbose yes
@ -113,6 +87,7 @@ zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Directories # Directories
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
@ -124,7 +99,7 @@ zstyle ':completion:*:history-words' remove-all-dups yes
zstyle ':completion:*:history-words' list false zstyle ':completion:*:history-words' list false
zstyle ':completion:*:history-words' menu yes zstyle ':completion:*:history-words' menu yes
# Environment Variables # Environmental Variables
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
# Populate hostname completion. But allow ignoring custom entries from static # Populate hostname completion. But allow ignoring custom entries from static
@ -132,7 +107,7 @@ zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-va
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'
zstyle -e ':completion:*:hosts' hosts 'reply=( zstyle -e ':completion:*:hosts' hosts 'reply=(
${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } ${=${=${=${${(f)"$(cat {/etc/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}})*} ${=${(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 }:#*\**}:#*\?*}} ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
)' )'

View File

@ -1,8 +1,10 @@
# Directory Directory
=========
Sets directory options and defines directory aliases. Sets directory options and defines directory aliases.
## Options Options
-------
- `AUTO_CD` auto changes to a directory without typing `cd`. - `AUTO_CD` auto changes to a directory without typing `cd`.
- `AUTO_PUSHD` pushes the old directory onto the stack on `cd`. - `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.
@ -10,19 +12,22 @@ Sets directory options and defines directory aliases.
- `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`. - `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. - `PUSHD_TO_HOME` pushes to the home directory when no argument is given.
- `CDABLE_VARS` changes directory to a path stored in a variable. - `CDABLE_VARS` changes directory to a path stored in a variable.
- `AUTO_NAME_DIRS` auto adds variable-stored paths to `~` list.
- `MULTIOS` writes to multiple descriptors. - `MULTIOS` writes to multiple descriptors.
- `EXTENDED_GLOB` uses extended globbing syntax. - `EXTENDED_GLOB` uses extended globbing syntax.
- `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and - `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and
`>>!` to bypass. `>>!` to bypass.
## Aliases Aliases
-------
- `d` prints the contents of the directory stack. - `d` prints the contents of the directory stack.
- `1 ... 9` changes the directory to the **n** previous one. - `1 ... 9` changes the directory to the **n** previous one.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][1]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [James Cox](https://github.com/imajes) - [James Cox](https://github.com/imajes)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)

View File

@ -1,8 +1,10 @@
# DNF DNF
===
Defines [dnf][1] aliases. Defines [dnf][1] aliases.
## Aliases Aliases
-------
- `dnfc` removes package(s) and leaves. - `dnfc` removes package(s) and leaves.
- `dnfi` installs package(s). - `dnfi` installs package(s).
@ -15,11 +17,13 @@ Defines [dnf][1] aliases.
- `dnfu` updates packages. - `dnfu` updates packages.
- `dnfU` upgrades packages. - `dnfU` upgrades packages.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://fedoraproject.org/wiki/Features/DNF [1]: https://fedoraproject.org/wiki/Features/DNF
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,4 +1,4 @@
# Docker # ZSH Docker Aliases
Defines [Docker][1] aliases and functions. Defines [Docker][1] aliases and functions.
@ -21,15 +21,14 @@ Defines [Docker][1] aliases and functions.
- `dkli` Log in to a Docker registry - `dkli` Log in to a Docker registry
- `dklo` Log out from a Docker registry - `dklo` Log out from a Docker registry
- `dkls` is alias for `dkps` - `dkls` is alias for `dkps`
- `dkp` Pause all processes within one or more containers - `dkp` Pause all processes within one or more containers<Paste>
- `dkP` Unpause 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 - `dkpl` Pull an image or a repository from a registry
- `dkph` Push an image or a repository to a registry - `dkph` Push an image or a repository to a registry
- `dkps` List containers - `dkps` List containers
- `dkpsa` List all containers (default lists just running) - `dkpsa` List all containers (default lists just running)
- `dkr` Run a command in a new container - `dkr` Run a command in a new container
- `dkR` Run an interactive command in a new container and automatically remove - `dkR` Run an interactive command in a new container and automatically remove the container when it exits
the container when it exits
- `dkRe` like `dkR` and set entry point to `/bin/bash` - `dkRe` like `dkR` and set entry point to `/bin/bash`
- `dkrm` Remove one or more containers - `dkrm` Remove one or more containers
- `dkrmi` Remove one or more images - `dkrmi` Remove one or more images
@ -40,14 +39,13 @@ Defines [Docker][1] aliases and functions.
- `dks` Start one or more stopped containers - `dks` Start one or more stopped containers
- `dkS` Restart a container - `dkS` Restart a container
- `dkss` Display a live stream of container(s) resource usage statistics - `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 - `dksv` Save one or more images to a tar archive (streamed to STDOUT by default)
default)
- `dkt` Tag an image into a repository - `dkt` Tag an image into a repository
- `dktop` Display the running processes of a container - `dktop` Display the running processes of a container
- `dkup` Update configuration of one or more containers - `dkup` Update configuration of one or more containers
- `dkV` Manage Docker volumes - `dkV` Manage Docker volumes
- `dkv` Show the Docker version information - `dkv` Show the Docker version information
- `dkw` Block until a container stops, then print its exit code - `dkw` Block until a container stops, then print its exit code<Paste>
- `dkx` Stop a running container - `dkx` Stop a running container
#### container (C) #### container (C)
@ -67,8 +65,7 @@ Defines [Docker][1] aliases and functions.
- `dkCS` Restart one or more containers - `dkCS` Restart one or more containers
- `dkCrm` Remove one or more containers - `dkCrm` Remove one or more containers
- `dkCr` Run a command in a new container - `dkCr` Run a command in a new container
- `dkCR` Run an interactive command in a new container and automatically remove - `dkCR` Run an interactive command in a new container and automatically remove the container when it exits
the container when it exits
- `dkCRe` like `dkCR` and set entry point to `/bin/bash` - `dkCRe` like `dkCR` and set entry point to `/bin/bash`
- `dkCs` Start one or more stopped containers - `dkCs` Start one or more stopped containers
- `dkCss` Display a live stream of container(s) resource usage statistics - `dkCss` Display a live stream of container(s) resource usage statistics
@ -90,8 +87,7 @@ Defines [Docker][1] aliases and functions.
- `dkIpl` Pull an image or a repository from a registry - `dkIpl` Pull an image or a repository from a registry
- `dkIph` Push an image or a repository to a registry - `dkIph` Push an image or a repository to a registry
- `dkIrm` Remove one or more images - `dkIrm` Remove one or more images
- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by - `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by default)
default)
- `dkIt` Tag an image into a repository - `dkIt` Tag an image into a repository
#### volume (V) #### volume (V)
@ -134,10 +130,8 @@ Defines [Docker][1] aliases and functions.
- `dkm` is short for `docker-machine` - `dkm` is short for `docker-machine`
- `dkma` Get or set the active machine - `dkma` Get or set the active machine
- `dkmcp` Copy files between machines - `dkmcp` Copy files between machines
- `dkmd` Set up the default machine ; alowing you to use `dkme` without - `dkmd` Set up the default machine ; alowing you to use `dkme` without arguments
arguments - `dkme` Set up the environment for the Docker client (eg: `dkme staging` to toggle to staging)
- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to
toggle to staging)
- `dkmin` Inspect information about a machine - `dkmin` Inspect information about a machine
- `dkmip` Get the IP address of a machine - `dkmip` Get the IP address of a machine
- `dkmk` Kill a machine - `dkmk` Kill a machine
@ -177,8 +171,8 @@ Defines [Docker][1] aliases and functions.
- `dkcsc` Set number of containers for a service - `dkcsc` Set number of containers for a service
- `dkcS` Restart services - `dkcS` Restart services
- `dkcu` Create and start containers - `dkcu` Create and start containers
- `dkcU` Create and start containers in detached mode: Run containers in the - `dkcU` Create and start containers in detached mode:
background, print new container names Run containers in the background, print new container names
- `dkcV` Show the Docker-Compose version information - `dkcV` Show the Docker-Compose version information
- `dkcx` Stop services - `dkcx` Stop services

View File

@ -1,8 +1,10 @@
# Dpkg Dpkg
====
Defines [_dpkg_][1] aliases and functions. Defines [dpkg][1] aliases and functions.
## Aliases Aliases
-------
- `debc` cleans the cache. - `debc` cleans the cache.
- `debf` displays a file's package. - `debf` displays a file's package.
@ -18,20 +20,22 @@ Defines [_dpkg_][1] aliases and functions.
- `deb-kclean` removes all kernel images and headers, except for the ones in - `deb-kclean` removes all kernel images and headers, except for the ones in
use. use.
## Functions Functions
---------
- `deb-clone` generates a script that can be used to duplicate a `dpkg`-based - `deb-clone` generates a script that can be used to duplicate a dpkg-based
system. system.
- `deb-history` displays `dpkg` history. - `deb-history` displays dpkg history.
- `deb-kbuild` makes a `dpkg` Linux kernel package. - `deb-kbuild` makes a dpkg Linux kernel package.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Daniel Bolton](https://github.com/dbb) - [Daniel Bolton](https://github.com/dbb)
- [Benjamin Boudreau](https://github.com/dreur) - [Benjamin Boudreau](https://github.com/dreur)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://wiki.debian.org/Teams/Dpkg [1]: http://wiki.debian.org/Teams/Dpkg
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,30 +1,24 @@
# Editor Editor
======
Sets editor specific key bindings options and variables. Sets key bindings.
## Options Settings
--------
- `BEEP` beep on error in line editor.
## Variables
- `WORDCHARS` treat a given set of characters as part of a word.
## Settings
### Key bindings ### Key bindings
To enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, To enable key bindings, add the following to *zpreztorc*, and replace 'bindings'
and replace `'<bindings>'` with `'emacs'` or `'vi'`. with 'emacs' or 'vi'.
```sh ```sh
zstyle ':prezto:module:editor' key-bindings '<bindings>' zstyle ':prezto:module:editor' key-bindings 'bindings'
``` ```
### Dot Expansion ### Dot Expansion
To enable the auto conversion of .... to ../.., add the following to To enable the auto conversion of .... to ../.., add the following to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_. *zpreztorc*.
```sh ```sh
zstyle ':prezto:module:editor' dot-expansion 'yes' zstyle ':prezto:module:editor' dot-expansion 'yes'
@ -32,14 +26,15 @@ zstyle ':prezto:module:editor' dot-expansion 'yes'
### PS Context ### PS Context
To enable the prompt context to be set, add the following to To enable the prompt context to be set, add the following to your
_`${ZDOTDIR:-$HOME}/.zpreztorc`_. *zpreztorc*.
```sh ```sh
zstyle ':prezto:module:editor' ps-context 'yes' zstyle ':prezto:module:editor' ps-context 'yes'
``` ```
## Theming Theming
-------
To indicate when the editor is in the primary keymap (emacs or viins), add To indicate when the editor is in the primary keymap (emacs or viins), add
the following to your `theme_prompt_setup` function. the following to your `theme_prompt_setup` function.
@ -76,27 +71,29 @@ To indicate when the editor is completing, add the following to your
zstyle ':prezto:module:editor:info:completing' format '...' zstyle ':prezto:module:editor:info:completing' format '...'
``` ```
Then add `$editor_info[context]`, where context is _keymap_, _insert_, or Then add `$editor_info[context]`, where context is *keymap*, *insert*, or
_overwrite_, to `$PROMPT` or `$RPROMPT`. *overwrite*, to `$PROMPT` or `$RPROMPT`.
## Convenience Functions Convenience Functions
---------------------
### bindkey-all ### bindkey-all
Provides a function `bindkey-all` which can be useful for checking how all of Provides a function `bindkey-all` which can be useful for checking how all of the
the keys are bound. Normal `bindkey` command will only list the keys bound for keys are bound. Normal `bindkey` command will only list the keys bound for one
one keymap, which is not as useful if you want to grep through the output. The 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 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. 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 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 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. names of each of the keymaps, and just run the command for each keymap.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][1]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues [1]: https://github.com/sorin-ionescu/oh-my-zsh/issues

View File

@ -91,9 +91,6 @@ function bindkey-all {
# Exposes information about the Zsh Line Editor via the $editor_info associative # Exposes information about the Zsh Line Editor via the $editor_info associative
# array. # array.
function editor-info { 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. # Clean up previous $editor_info.
unset editor_info unset editor_info
typeset -gA editor_info typeset -gA editor_info
@ -116,7 +113,6 @@ function editor-info {
unset REPLY unset REPLY
zle zle-reset-prompt zle zle-reset-prompt
fi
} }
zle -N editor-info zle -N editor-info
@ -273,11 +269,9 @@ bindkey -d
# Emacs Key Bindings # Emacs Key Bindings
# #
for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}" \ 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 bindkey -M emacs "$key" emacs-backward-word
for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}" \ 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 bindkey -M emacs "$key" emacs-forward-word
# Kill to the beginning of the line. # Kill to the beginning of the line.
@ -318,7 +312,6 @@ bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line
# Undo/Redo # Undo/Redo
bindkey -M vicmd "u" undo bindkey -M vicmd "u" undo
bindkey -M viins "$key_info[Control]_" undo
bindkey -M vicmd "$key_info[Control]R" redo bindkey -M vicmd "$key_info[Control]R" redo
if (( $+widgets[history-incremental-pattern-search-backward] )); then if (( $+widgets[history-incremental-pattern-search-backward] )); then

View File

@ -1,8 +1,10 @@
# Emacs Emacs
=====
Enables Emacs dependency management. Enables Emacs dependency management.
## Dependency management Dependency management
---------------------
[Carton][1] installs and manages Emacs packages for Emacs package development [Carton][1] installs and manages Emacs packages for Emacs package development
and Emacs configuration. and Emacs configuration.
@ -10,7 +12,8 @@ and Emacs configuration.
This module prepends the Carton directory to the path variable to enable the This module prepends the Carton directory to the path variable to enable the
execution of `carton`. execution of `carton`.
## Aliases Aliases
-------
### Carton ### Carton
@ -19,9 +22,10 @@ execution of `carton`.
- `caI` initializes the current directory for dependency management. - `caI` initializes the current directory for dependency management.
- `cae` executes a command which correct dependencies. - `cae` executes a command which correct dependencies.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Sebastian Wiesner](https://github.com/lunaryorn) - [Sebastian Wiesner](https://github.com/lunaryorn)

View File

@ -1,52 +1,26 @@
# Environment Environment
===========
Sets general shell options and defines environment variables. Sets general shell options and defines environment variables.
This module must be loaded first. This module must be loaded first.
## Contributors Environment Variables
---------------------
This module **MUST NOT** rely on any command that is not built in Zsh. Contributors
------------
Non-interactive environment variables should be defined in This module **MUST NOT** rely on any command not built in Zsh.
[_`${ZDOTDIR:-$HOME}/.zshenv`_][1].
## Options Non-interactive environment variables should be defined in [`zshenv`][1].
### General Authors
-------
- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with *The authors of this module should be contacted via the [issue tracker][2].*
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) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: ../../runcoms#zshenv [1]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -14,14 +14,16 @@
# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic # 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. # which is generally better than url-quote-magic so we load that when possible.
autoload -Uz is-at-least autoload -Uz is-at-least
if [[ ${ZSH_VERSION} != 5.1.1 && ${TERM} != "dumb" ]]; then if [[ ${ZSH_VERSION} != 5.1.1 ]]; then
if is-at-least 5.2; then if is-at-least 5.2; then
autoload -Uz bracketed-paste-url-magic autoload -Uz bracketed-paste-url-magic
zle -N bracketed-paste bracketed-paste-url-magic zle -N bracketed-paste bracketed-paste-url-magic
elif is-at-least 5.1; then else
if is-at-least 5.1; then
autoload -Uz bracketed-paste-magic autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic zle -N bracketed-paste bracketed-paste-magic
fi fi
fi
autoload -Uz url-quote-magic autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic zle -N self-insert url-quote-magic
fi fi
@ -36,9 +38,6 @@ setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell.
setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed. unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed.
# Allow mapping Ctrl+S and Ctrl+Q shortcuts
[[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY
# #
# Jobs # Jobs
# #

View File

@ -1,34 +1,38 @@
# Fasd Fasd
====
[Fasd][1] is a command-line productivity booster, inspired by tools like [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 [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 directories by keeping track of files and directories that were previously
accessed. accessed.
For shell completion to work, this module must be loaded _after_ the For completion to work, this module must be loaded **after** the *completion*
[_`completion`_][5] module. module.
The Prezto Fasd configuration differs from the default. The default aliases have The Prezto Fasd configuration differs from the default. The default aliases have
been disabled. been disabled.
## Installation Installation
------------
`fasd` is bundled with prezto as a git submodule. Alternatively, you can `fasd` is bundled with prezto as a git submodule. Alternatively, you can manually install `fasd`.
manually install `fasd`. If a manual installation is found, it will be used If a manual install is found, it will be used instead of the bundled version.
instead of the bundled version.
## Aliases Aliases
-------
- `j` changes the current working directory interactively. - `j` changes the current working directory interactively.
## Completion Completion
----------
Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`, 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>. `,,d` at the end of a comma-separated query then hit <kbd>tab</kbd>.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][6]._ *The authors of this module should be contacted via the [issue tracker][5].*
- [Wei Dai](https://github.com/clvv) - [Wei Dai](https://github.com/clvv)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
@ -37,5 +41,4 @@ _The authors of this module should be contacted via the [issue tracker][6]._
[2]: https://github.com/joelthelion/autojump [2]: https://github.com/joelthelion/autojump
[3]: https://github.com/rupa/z [3]: https://github.com/rupa/z
[4]: https://github.com/rupa/v [4]: https://github.com/rupa/v
[5]: ../completion#readme [5]: https://github.com/sorin-ionescu/prezto/issues
[6]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -19,10 +19,8 @@ fi
# Initialization # Initialization
# #
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh" cache_file="${TMPDIR:-/tmp}/prezto-fasd-cache.$UID.zsh"
if [[ "${commands[fasd]}" -nt "$cache_file" \ if [[ "${commands[fasd]}" -nt "$cache_file" || ! -s "$cache_file" ]]; then
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|| ! -s "$cache_file" ]]; then
# Set the base init arguments. # Set the base init arguments.
init_args=(zsh-hook) init_args=(zsh-hook)
@ -31,7 +29,6 @@ if [[ "${commands[fasd]}" -nt "$cache_file" \
init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install) init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)
fi fi
mkdir -p "$cache_file:h"
# Cache init code. # Cache init code.
fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null
fi fi

View File

@ -1,45 +1,39 @@
# Git Git
===
Enhances the [Git][1] distributed version control system by providing aliases, Enhances the [Git][1] distributed version control system by providing aliases,
functions and by exposing repository status information to prompts. functions and by exposing repository status information to prompts.
This module must be loaded _before_ the [_`completion`_][13] module so that the Git **1.7.2** is the [minimum required version][7].
provided completion definitions are loaded automatically by _`completion`_
module.
**Note:** Git **2.11** is the minimum required version for better Settings
[git-rev-list][7] and [git-submodule][14] support. --------
## Settings
### Log ### Log
To configure the format of the [git-log][8] output, add the following to The format of the [git-log][8] output is configurable via the following style,
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<context>'` with `'brief'`, where context is *brief*, *oneline*, and *medium*, which will be passed to the
`'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:` `--pretty=format:` switch.
switch.
```sh ```sh
zstyle ':prezto:module:git:log:context' format '<context>' zstyle ':prezto:module:git:log:context' format ''
``` ```
### Status ### Status
Retrieving the status of a repository with [git-submodule][9] can take a long Retrieving the status of a repository with submodules can take a long time.
time. To configure the submodules to ignore, add the following to Submodules may be ignored when they are *dirty*, *untracked*, *all*, or *none*.
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<state>'` with `'dirty'`,
`'untracked'`, `'all'`, or `'none'`.
```sh ```sh
zstyle ':prezto:module:git:status:ignore' submodules '<state>' zstyle ':prezto:module:git:status:ignore' submodules 'all'
``` ```
This setting affects all aliases and functions that call `git-status`. This setting affects all aliases and functions that call `git-status`.
## Aliases Aliases
-------
Aliases are enabled by default. To disable them, add the following to Aliases are enabled by default. You can disable them with:
_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh ```sh
zstyle ':prezto:module:git:alias' skip 'yes' zstyle ':prezto:module:git:alias' skip 'yes'
@ -49,7 +43,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `g` is short for `git`. - `g` is short for `git`.
### Branch (b) ### Branch
- `gb` lists, creates, renames, and deletes branches. - `gb` lists, creates, renames, and deletes branches.
- `gbc` creates a new branch. - `gbc` creates a new branch.
@ -59,40 +53,37 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gbR` renames a branch even if the new branch name already exists. (also - `gbR` renames a branch even if the new branch name already exists. (also
`gbM`) `gbM`)
- `gbs` lists branches and their commits with ancestry graphs. - `gbs` lists branches and their commits with ancestry graphs.
- `gbS` lists local and remote 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. - `gbV` lists branches with more verbose information about their commits.
- `gbx` deletes a branch. (also `gbd`) - `gbx` deletes a branch. (also `gbd`)
- `gbX` deletes a branch irrespective of its merged status. (also `gbD`) - `gbX` deletes a branch irrespective of its merged status. (also `gbD`)
### Commit (c)
### Commit
- `gc` records changes to the repository. - `gc` records changes to the repository.
- `gcS` records changes to the repository. (Signed)
- `gca` stages all modified and deleted files. - `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. - `gcm` records changes to the repository with the given message.
- `gcmS` records changes to the repository with the given message. (Signed) - `gcS` records changes to the repository. (Signed)
- `gcam` stages all modified and deleted files, and records changes to the - `gcSa` stages all modified and deleted files. (Signed)
repository with the given message. - `gcSm` records changes to the repository with the given message. (Signed) - `gco` checks out a branch or paths to work tree.
- `gcam` stages all modified and deleted files, and records changes to the repository with the given message.
- `gco` checks out a branch or paths to work tree. - `gco` checks out a branch or paths to work tree.
- `gcO` checks out hunks from the index or the tree interactively. - `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 - `gcf` amends the tip of the current branch using the same log message as *HEAD*.
_HEAD_. - `gcSf` amends the tip of the current branch using the same log message as *HEAD*. (Signed)
- `gcfS` amends the tip of the current branch using the same log message as
_HEAD_. (Signed)
- `gcF` amends the tip of the current branch. - `gcF` amends the tip of the current branch.
- `gcFS` amends the tip of the current branch. (Signed) - `gcSF` amends the tip of the current branch. (Signed)
- `gcp` applies changes introduced by existing commits. - `gcp` applies changes introduced by existing commits.
- `gcP` applies changes introduced by existing commits without committing. - `gcP` applies changes introduced by existing commits without committing.
- `gcr` reverts existing commits by reverting patches and recording new commits. - `gcr` reverts existing commits by reverting patches and recording new
- `gcR` removes the _HEAD_ commit. commits.
- `gcs` displays commits with various objects. - `gcR` removes the *HEAD* commit.
- `gcsS` displays commits with GPG signature. - `gcs` displays various types of objects.
- `gcl` lists lost commits. - `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) ### Conflict
- `gCl` lists unmerged files. - `gCl` lists unmerged files.
- `gCa` adds unmerged file contents to the index. - `gCa` adds unmerged file contents to the index.
@ -102,7 +93,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gCt` checks out their changes for unmerged paths. - `gCt` checks out their changes for unmerged paths.
- `gCT` checks out their changes for all unmerged paths. - `gCT` checks out their changes for all unmerged paths.
### Data (d) ### Data
- `gd` displays information about files in the index and the work tree. - `gd` displays information about files in the index and the work tree.
- `gdc` lists cached files. - `gdc` lists cached files.
@ -112,7 +103,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gdk` lists killed files. - `gdk` lists killed files.
- `gdi` lists ignored files. - `gdi` lists ignored files.
### Fetch (f) ### Fetch
- `gf` downloads objects and references from another repository. - `gf` downloads objects and references from another repository.
- `gfa` downloads objects and references from all remote repositories. - `gfa` downloads objects and references from all remote repositories.
@ -121,11 +112,11 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gfm` fetches from and merges with another repository or local branch. - `gfm` fetches from and merges with another repository or local branch.
- `gfr` fetches from and rebases on another repository or local branch. - `gfr` fetches from and rebases on another repository or local branch.
### Flow (F) ### Flow
- `gFi` is short for `git flow init` - `gFi` is short for `git flow init`
#### Feature (Ff) #### Feature
- `gFf` is short for `git flow feature` - `gFf` is short for `git flow feature`
- `gFfl` is short for `git flow feature list` - `gFfl` is short for `git flow feature list`
@ -139,7 +130,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gFfm` is short for `git flow feature pull` - `gFfm` is short for `git flow feature pull`
- `gFfx` is short for `git flow feature delete` - `gFfx` is short for `git flow feature delete`
#### Bugfix (Fb) #### Bugfix
- `gFb` is short for `git flow bugfix` - `gFb` is short for `git flow bugfix`
- `gFbl` is short for `git flow bugfix list` - `gFbl` is short for `git flow bugfix list`
@ -153,7 +144,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gFbm` is short for `git flow bugfix pull` - `gFbm` is short for `git flow bugfix pull`
- `gFbx` is short for `git flow bugfix delete` - `gFbx` is short for `git flow bugfix delete`
#### Release (Fl) #### Release
- `gFl` is short for `git flow release` - `gFl` is short for `git flow release`
- `gFll` is short for `git flow release list` - `gFll` is short for `git flow release list`
@ -167,7 +158,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gFlm` is short for `git flow release pull` - `gFlm` is short for `git flow release pull`
- `gFlx` is short for `git flow release delete` - `gFlx` is short for `git flow release delete`
#### Hotfix (Fh) #### Hotfix
- `gFh` is short for `git flow hotfix` - `gFh` is short for `git flow hotfix`
- `gFhl` is short for `git flow hotfix list` - `gFhl` is short for `git flow hotfix list`
@ -181,7 +172,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gFhm` is short for `git flow hotfix pull` - `gFhm` is short for `git flow hotfix pull`
- `gFhx` is short for `git flow hotfix delete` - `gFhx` is short for `git flow hotfix delete`
#### Support (Fs) #### Support
- `gFs` is short for `git flow support` - `gFs` is short for `git flow support`
- `gFsl` is short for `git flow support list` - `gFsl` is short for `git flow support list`
@ -195,7 +186,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gFsm` is short for `git flow support pull` - `gFsm` is short for `git flow support pull`
- `gFsx` is short for `git flow support delete` - `gFsx` is short for `git flow support delete`
### Grep (g) ### Grep
- `gg` displays lines matching a pattern. - `gg` displays lines matching a pattern.
- `ggi` displays lines matching a pattern ignoring case. - `ggi` displays lines matching a pattern ignoring case.
@ -204,7 +195,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `ggv` displays lines not matching a pattern. - `ggv` displays lines not matching a pattern.
- `ggw` displays lines matching a pattern at word boundary. - `ggw` displays lines matching a pattern at word boundary.
### Index (i) ### Index
- `gia` adds file contents to the index. - `gia` adds file contents to the index.
- `giA` adds file contents to the index interactively. - `giA` adds file contents to the index interactively.
@ -218,7 +209,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gix` removes files/directories from the index (recursively). - `gix` removes files/directories from the index (recursively).
- `giX` removes files/directories from the index (recursively and forced). - `giX` removes files/directories from the index (recursively and forced).
### Log (l) ### Log
- `gl` displays the log. - `gl` displays the log.
- `gls` displays the stats log. - `gls` displays the stats log.
@ -227,9 +218,8 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `glg` displays the graph log. - `glg` displays the graph log.
- `glb` displays the brief commit log. - `glb` displays the brief commit log.
- `glc` displays the commit count for each contributor in descending order. - `glc` displays the commit count for each contributor in descending order.
- `glS` displays the log and checks the validity of signed commits.
### Merge (m) ### Merge
- `gm` joins two or more development histories together. - `gm` joins two or more development histories together.
- `gmC` joins two or more development histories together but does not commit. - `gmC` joins two or more development histories together but does not commit.
@ -238,29 +228,26 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gma` aborts the conflict resolution, and reconstructs the pre-merge state. - `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
- `gmt` runs the merge conflict resolution tools to resolve conflicts. - `gmt` runs the merge conflict resolution tools to resolve conflicts.
### Push (p) ### Push
- `gp` updates remote refs along with associated objects. - `gp` updates remote refs along with associated objects.
- `gpf` forcefully updates remote refs along with associated objects using the - `gpf` forcefully updates remote refs along with associated objects.
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 along with associated objects.
- `gpA` updates remote branches and tags along with associated objects. - `gpA` updates remote branches and tags along with associated objects.
- `gpt` updates remote 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 - `gpc` updates remote refs along with associated objects and adds *origin*
an upstream reference for the current branch. as an upstream reference for the current branch.
- `gpp` pulls and pushes from origin to origin. - `gpp` pulls and pushes from origin to origin.
### Rebase (r) ### Rebase
- `gr` forward-ports local commits to the updated upstream _HEAD_. - `gr` forward-ports local commits to the updated upstream head.
- `gra` aborts the rebase. - `gra` aborts the rebase.
- `grc` continues the rebase after merge conflicts are resolved. - `grc` continues the rebase after merge conflicts are resolved.
- `gri` makes a list of commits to be rebased and opens the editor. - `gri` makes a list of commits to be rebased and opens the editor.
- `grs` skips the current patch. - `grs` skips the current patch.
### Remote (R) ### Remote
- `gR` manages tracked repositories. - `gR` manages tracked repositories.
- `gRl` lists remote names and their URLs. - `gRl` lists remote names and their URLs.
@ -272,7 +259,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gRs` displays information about a given remote. - `gRs` displays information about a given remote.
- `gRb` opens a remote on [GitHub][3] in the default browser. - `gRb` opens a remote on [GitHub][3] in the default browser.
### Stash (s) ### Stash
- `gs` stashes the changes of the dirty working directory. - `gs` stashes the changes of the dirty working directory.
- `gsa` applies the changes recorded in a stash to the working directory. - `gsa` applies the changes recorded in a stash to the working directory.
@ -287,7 +274,7 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gsS` stashes the changes of the dirty working directory interactively. - `gsS` stashes the changes of the dirty working directory interactively.
- `gsw` stashes the changes of the dirty working directory retaining the index. - `gsw` stashes the changes of the dirty working directory retaining the index.
### Submodule (S) ### Submodule
- `gS` initializes, updates, or inspects submodules. - `gS` initializes, updates, or inspects submodules.
- `gSa` adds given a repository as a submodule. - `gSa` adds given a repository as a submodule.
@ -297,18 +284,11 @@ zstyle ':prezto:module:git:alias' skip 'yes'
- `gSl` lists the commits of all submodules. - `gSl` lists the commits of all submodules.
- `gSm` moves a submodule. - `gSm` moves a submodule.
- `gSs` synchronizes submodules' remote URL to the value specified in - `gSs` synchronizes submodules' remote URL to the value specified in
_.gitmodules_. .gitmodules.
- `gSu` fetches and merges the latest changes for all submodule. - `gSu` fetches and merges the latest changes for all submodule.
- `gSx` removes a submodule. - `gSx` removes a submodule.
### Tag (t) ### Working directory
- `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 in the short format.
- `gwS` displays working-tree status. - `gwS` displays working-tree status.
@ -327,10 +307,9 @@ zstyle ':prezto:module:git:alias' skip 'yes'
The following aliases may shadow system commands: 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]. - `gpt` shadows the [GUID partition table maintenance utility][4].
- `gs` shadows the [Ghostscript interpreter and previewer][5]. - `gs` shadows the [Ghostscript][5].
- `gb` shadows the [GB][9].
If you frequently use the above commands, you may wish to remove said aliases 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`. from this module or to disable them at the bottom of the zshrc with `unalias`.
@ -338,13 +317,14 @@ 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: You can temporarily bypass an alias by prefixing it with a backward slash:
`\gpt`. `\gpt`.
## Functions Functions
---------
- `git-branch-current` displays the current branch. - `git-branch-current` displays the current branch.
- `git-commit-lost` lists lost commits. - `git-commit-lost` lists lost commits.
- `git-dir` displays the path to the Git directory. - `git-dir` displays the path to the Git directory.
- `git-hub-browse` opens the [GitHub][3] repository in the default browser. - `git-hub-browse` opens the [GitHub][3] repository in the default browser.
- `git-hub-shorten-url` shortens [GitHub URLs][12]. - `git-hub-shorten-url` shortens [GitHub URLs][10].
- `git-info` exposes repository information via the `$git_info` associative - `git-info` exposes repository information via the `$git_info` associative
array. array.
- `git-root` displays the path to the working tree root. - `git-root` displays the path to the working tree root.
@ -354,7 +334,8 @@ You can temporarily bypass an alias by prefixing it with a backward slash:
- `git-submodule-move` moves a submodule. - `git-submodule-move` moves a submodule.
- `git-submodule-remove` removes a submodule. - `git-submodule-remove` removes a submodule.
## Theming Theming
-------
To display information about the current repository in a prompt, define the To display information about the current repository in a prompt, define the
following styles in the `prompt_name_setup` function, where the syntax for following styles in the `prompt_name_setup` function, where the syntax for
@ -366,26 +347,26 @@ zstyle ':prezto:module:git:info:context:subcontext' format 'string'
### Main Contexts ### Main Contexts
| Name | Format Code | Description | | Name | Format Code | Description
| -------- | :---------: | ---------------------------------- | | --------- | :---------: | ---------------------------------------------------
| action | %s | Special action name | | action | %s | Special action name
| ahead | %A | Commits ahead of remote count | | ahead | %A | Commits ahead of remote count
| behind | %B | Commits behind of remote count | | behind | %B | Commits behind of remote count
| branch | %b | Branch name | | branch | %b | Branch name
| commit | %c | Commit hash | | commit | %c | Commit hash
| position | %p | Commits from the nearest tag count | | position | %p | Commits from the nearest tag count
| remote | %R | Remote name | | remote | %R | Remote name
| stashed | %S | Stashed states count | | stashed | %S | Stashed states count
### Concise Contexts ### Concise Contexts
| Name | Format Code | Description | | Name | Format Code | Description
| --------- | :---------: | --------------------- | | --------- | :---------: | ---------------------------------------------------
| clean | %C | Clean state | | clean | %C | Clean state
| dirty | %D | Dirty files count | | dirty | %D | Dirty files count
| indexed | %i | Indexed files count | | indexed | %i | Indexed files count
| unindexed | %I | Unindexed files count | | unindexed | %I | Unindexed files count
| untracked | %u | Untracked files count | | untracked | %u | Untracked files count
The following contexts must be enabled with the following zstyle: The following contexts must be enabled with the following zstyle:
@ -395,31 +376,31 @@ zstyle ':prezto:module:git:info' verbose 'yes'
### Verbose Contexts ### Verbose Contexts
| Name | Format Code | Description | | Name | Format Code | Description
| --------- | :---------: | --------------------- | | --------- | :---------: | ---------------------------------------------------
| added | %a | Added files count | | added | %a | Added files count
| clean | %C | Clean state | | clean | %C | Clean state
| deleted | %d | Deleted files count | | deleted | %d | Deleted files count
| dirty | %D | Dirty files count | | dirty | %D | Dirty files count
| modified | %m | Modified files count | | modified | %m | Modified files count
| renamed | %r | Renamed files count | | renamed | %r | Renamed files count
| unmerged | %U | Unmerged files count | | unmerged | %U | Unmerged files count
| untracked | %u | Untracked files count | | untracked | %u | Untracked files count
### Special Action Contexts ### Special Action Contexts
| Name | Format | Description | | Name | Format | Description
| -------------------- | :----: | ---------------------------- | | -------------------- | :---------: | -----------------------------------------
| apply | value | Applying patches | | apply | value | Applying patches
| bisect | value | Binary searching for changes | | bisect | value | Binary searching for changes
| cherry-pick | value | Cherry picking | | cherry-pick | value | Cherry picking
| cherry-pick-sequence | value | Cherry picking sequence | | cherry-pick-sequence | value | Cherry picking sequence
| merge | value | Merging | | merge | value | Merging
| rebase | value | Rebasing | | rebase | value | Rebasing
| rebase-interactive | value | Rebasing interactively | | rebase-interactive | value | Rebasing interactively
| rebase-merge | value | Rebasing merge | | rebase-merge | value | Rebasing merge
| revert | value | Reverting | | revert | value | Reverting
| revert-sequence | value | Reverting sequence | | revert-sequence | value | Reverting sequence
First, format the repository state attributes. For example, to format the branch First, format the repository state attributes. For example, to format the branch
and remote names, define the following styles. and remote names, define the following styles.
@ -441,24 +422,21 @@ Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook `$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook
function. function.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][6]._ *The authors of this module should be contacted via the [issue tracker][6].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Colin Hebert](https://github.com/ColinHebert) - [Colin Hebert](https://github.com/ColinHebert)
[1]: https://www.git-scm.com [1]: http://www.git-scm.com
[2]: https://hub.github.com [2]: https://github.com/defunkt/hub
[3]: https://www.github.com [3]: https://www.github.com
[4]: https://www.manpagez.com/man/8/gpt/ [4]: http://www.manpagez.com/man/8/gpt/
[5]: https://www.manpagez.com/man/1/gs/ [5]: http://linux.die.net/man/1/gs
[6]: https://github.com/sorin-ionescu/prezto/issues [6]: https://github.com/sorin-ionescu/prezto/issues
[7]: https://github.com/sorin-ionescu/prezto/issues/219 [7]: https://github.com/sorin-ionescu/prezto/issues/219
[8]: https://git-scm.com/docs/git-log [8]: http://www.kernel.org/pub/software/scm/git/docs/git-log.html
[9]: https://git-scm.com/docs/git-submodule [9]: https://getgb.io/
[10]: https://getgb.io/ [10]: https://github.com/blog/985-git-io-github-url-shortener
[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

View File

@ -8,6 +8,7 @@
# #
# Settings # Settings
# #
#
# Log # Log
zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \ zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \
@ -25,7 +26,7 @@ zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_subm
# Aliases # Aliases
# #
if ! zstyle -t ':prezto:module:git:alias' skip; then if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
# Git # Git
alias g='git' alias g='git'
@ -50,27 +51,24 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then
# Commit (c) # Commit (c)
alias gc='git commit --verbose' alias gc='git commit --verbose'
alias gcS='git commit --verbose --gpg-sign'
alias gca='git commit --verbose --all' alias gca='git commit --verbose --all'
alias gcaS='git commit --verbose --all --gpg-sign'
alias gcm='git commit --message' alias gcm='git commit --message'
alias gcmS='git commit --message --gpg-sign' alias gcS='git commit -S --verbose'
alias gcSa='git commit -S --verbose --all'
alias gcSm='git commit -S --message'
alias gcam='git commit --all --message' alias gcam='git commit --all --message'
alias gco='git checkout' alias gco='git checkout'
alias gcO='git checkout --patch' alias gcO='git checkout --patch'
alias gcf='git commit --amend --reuse-message HEAD' alias gcf='git commit --amend --reuse-message HEAD'
alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign' alias gcSf='git commit -S --amend --reuse-message HEAD'
alias gcF='git commit --verbose --amend' alias gcF='git commit --verbose --amend'
alias gcFS='git commit --verbose --amend --gpg-sign' alias gcSF='git commit -S --verbose --amend'
alias gcp='git cherry-pick --ff' alias gcp='git cherry-pick --ff'
alias gcP='git cherry-pick --no-commit' alias gcP='git cherry-pick --no-commit'
alias gcr='git revert' alias gcr='git revert'
alias gcR='git reset "HEAD^"' alias gcR='git reset "HEAD^"'
alias gcs='git show' alias gcs='git show'
alias gcsS='git show --pretty=short --show-signature'
alias gcl='git-commit-lost' alias gcl='git-commit-lost'
alias gcy='git cherry --verbose --abbrev'
alias gcY='git cherry --verbose'
# Conflict (C) # Conflict (C)
alias gCl='git --no-pager diff --name-only --diff-filter=U' alias gCl='git --no-pager diff --name-only --diff-filter=U'
@ -96,9 +94,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then
alias gfc='git clone' alias gfc='git clone'
alias gfcr='git clone --recurse-submodules' alias gfcr='git clone --recurse-submodules'
alias gfm='git pull' alias gfm='git pull'
alias gfma='git pull --autostash'
alias gfr='git pull --rebase' alias gfr='git pull --rebase'
alias gfra='git pull --rebase --autostash'
# Flow (F) # Flow (F)
alias gFi='git flow init' alias gFi='git flow init'
@ -182,17 +178,16 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then
alias gir='git reset' alias gir='git reset'
alias giR='git reset --patch' alias giR='git reset --patch'
alias gix='git rm -r --cached' alias gix='git rm -r --cached'
alias giX='git rm -r --force --cached' alias giX='git rm -rf --cached'
# Log (l) # Log (l)
alias gl='git log --topo-order --pretty=format:"$_git_log_medium_format"' alias gl='git log --topo-order --pretty=format:"${_git_log_medium_format}"'
alias gls='git log --topo-order --stat --pretty=format:"$_git_log_medium_format"' alias gls='git log --topo-order --stat --pretty=format:"${_git_log_medium_format}"'
alias gld='git log --topo-order --stat --patch --full-diff --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 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 glg='git log --topo-order --all --graph --pretty=format:"${_git_log_oneline_format}"'
alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"' alias glb='git log --topo-order --pretty=format:"${_git_log_brief_format}"'
alias glc='git shortlog --summary --numbered' alias glc='git shortlog --summary --numbered'
alias glS='git log --show-signature'
# Merge (m) # Merge (m)
alias gm='git merge' alias gm='git merge'
@ -252,24 +247,18 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then
alias gSl='git submodule status' alias gSl='git submodule status'
alias gSm='git-submodule-move' alias gSm='git-submodule-move'
alias gSs='git submodule sync' alias gSs='git submodule sync'
alias gSu='git submodule update --remote --recursive' alias gSu='git submodule foreach git pull origin master'
alias gSx='git-submodule-remove' 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) # Working Copy (w)
alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short' alias gws='git status --ignore-submodules=${_git_status_ignore_submodules} --short'
alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules' alias gwS='git status --ignore-submodules=${_git_status_ignore_submodules}'
alias gwd='git diff --no-ext-diff' alias gwd='git diff --no-ext-diff'
alias gwD='git diff --no-ext-diff --word-diff' alias gwD='git diff --no-ext-diff --word-diff'
alias gwr='git reset --soft' alias gwr='git reset --soft'
alias gwR='git reset --hard' alias gwR='git reset --hard'
alias gwc='git clean --dry-run' alias gwc='git clean -n'
alias gwC='git clean --force' alias gwC='git clean -f'
alias gwx='git rm -r' alias gwx='git rm -r'
alias gwX='git rm -r --force' alias gwX='git rm -rf'
fi fi

View File

@ -8,7 +8,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1 return 1
fi fi
@ -21,7 +21,7 @@ _arguments -C -s -S \
case "$state" in case "$state" in
(remote) (remote)
remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2)) remotes=($(git config --get-regexp 'remote.*.url' | cut -d. -f2))
_describe -t branch 'remotes' remotes && ret=0 _describe -t branch 'remotes' remotes && ret=0
;; ;;
@ -29,7 +29,7 @@ case "$state" in
remote="$words[(($CURRENT - 1))]" remote="$words[(($CURRENT - 1))]"
branches_or_tags=($( branches_or_tags=($(
command git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2 git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2
)) ))
branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/}) branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/})
@ -39,7 +39,7 @@ case "$state" in
_describe -t tag 'tags' tags && ret=0 _describe -t tag 'tags' tags && ret=0
;; ;;
(file) (file)
files=(${(0)"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)"}) files=(${(0)"$(_call_program files git ls-files -z --exclude-standard 2> /dev/null)"})
_wanted file expl 'file' _multi_parts - / files && ret=0 _wanted file expl 'file' _multi_parts - / files && ret=0
;; ;;
esac esac

View File

@ -8,7 +8,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1 return 1
fi fi

View File

@ -8,7 +8,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1 return 1
fi fi
@ -25,7 +25,7 @@ case "$state" in
while IFS=$'\n' read submodule; do while IFS=$'\n' read submodule; do
submodules+=("$submodule") submodules+=("$submodule")
done < <( done < <(
command git config --file "$(git-root)/.gitmodules" --list \ git config --file "$(git-root)/.gitmodules" --list \
| grep '.path=' \ | grep '.path=' \
| cut -d= -f2- | cut -d= -f2-
) )

View File

@ -8,7 +8,7 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1 return 1
fi fi
@ -18,7 +18,7 @@ local submodule
while IFS=$'\n' read submodule; do while IFS=$'\n' read submodule; do
submodules+=("$submodule") submodules+=("$submodule")
done < <( done < <(
command git config --file "$(git-root)/.gitmodules" --list \ git config --file "$(git-root)/.gitmodules" --list \
| grep '.path=' \ | grep '.path=' \
| cut -d= -f2- | cut -d= -f2-
) )

View File

@ -7,12 +7,12 @@
# function git-branch-current { # function git-branch-current {
if ! command git rev-parse 2> /dev/null; then if ! git rev-parse 2> /dev/null; then
print "$0: not a repository: $PWD" >&2 print "$0: not a repository: $PWD" >&2
return 1 return 1
fi fi
local ref="$(command git symbolic-ref HEAD 2> /dev/null)" local ref="$(git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]; then if [[ -n "$ref" ]]; then
print "${ref#refs/heads/}" print "${ref#refs/heads/}"

View File

@ -7,15 +7,15 @@
# function git-commit-lost { # function git-commit-lost {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
fi fi
command git fsck 2> /dev/null \ git fsck 2> /dev/null \
| grep "^dangling commit" \ | grep "^dangling commit" \
| awk '{print $3}' \ | awk '{print $3}' \
| command git log \ | git log \
--date-order \ --date-order \
--no-walk \ --no-walk \
--stdin \ --stdin \

View File

@ -7,7 +7,7 @@
# function git-dir { # function git-dir {
local git_dir="${$(command git rev-parse --git-dir):A}" local git_dir="${$(git rev-parse --git-dir):A}"
if [[ -n "$git_dir" ]]; then if [[ -n "$git_dir" ]]; then
print "$git_dir" print "$git_dir"

View File

@ -7,7 +7,7 @@
# function git-hub-browse { # function git-hub-browse {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
fi fi
@ -15,7 +15,7 @@ fi
local remotes remote references reference file url local remotes remote references reference file url
remote="${1:-origin}" remote="${1:-origin}"
remotes=($(command git remote show)) remotes=($(git config --get-regexp 'remote.*.url' | cut -d. -f2))
if (( $remotes[(i)$remote] == $#remotes + 1 )); then if (( $remotes[(i)$remote] == $#remotes + 1 )); then
print "$0: remote not found: $remote" >&2 print "$0: remote not found: $remote" >&2
@ -23,14 +23,14 @@ if (( $remotes[(i)$remote] == $#remotes + 1 )); then
fi fi
url=$( url=$(
command git remote get-url "$remote" \ git config --get "remote.${remote}.url" \
| sed -En "s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\.git#https://\2/\4/\5#p" | sed -En "s/(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
) )
reference="${${2:-$(git-branch-current)}:-HEAD}" reference="${${2:-$(git-branch-current)}:-HEAD}"
references=( references=(
HEAD HEAD
${${(f)"$(command git ls-remote --heads --tags "$remote")"}##*refs/(heads|tags)/} ${$(git ls-remote --heads --tags "$remote" | awk '{print $2}')##refs/(heads|tags)/}
) )
if (( $references[(i)$reference] == $#references + 1 )); then if (( $references[(i)$reference] == $#references + 1 )); then
@ -39,15 +39,15 @@ if (( $references[(i)$reference] == $#references + 1 )); then
fi fi
if [[ "$reference" == 'HEAD' ]]; then if [[ "$reference" == 'HEAD' ]]; then
reference="$(command git rev-parse HEAD 2> /dev/null)" reference="$(git rev-parse HEAD 2> /dev/null)"
fi fi
file="$3" file="$3"
if [[ -n "$url" ]]; then if [[ -n "$url" ]]; then
url="$url/tree/$reference/$file" url="${url}/tree/${reference}/${file}"
if [[ -n "$BROWSER" ]]; then if (( $+commands[$BROWSER] )); then
"$BROWSER" "$url" "$BROWSER" "$url"
return 0 return 0
else else

View File

@ -19,7 +19,7 @@ if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then
fi fi
if (( $+commands[curl] )); then if (( $+commands[curl] )); then
print "${${(@M)${(f)"$(curl -s -i 'https://git.io' -F "url=$url" ${(z)code:+ -F "code=$code"})"}:#Location: *}#Location: }" curl -s -i 'https://git.io' -F "url=$url" ${(s: :)code:+ -F "code=$code"} | sed -n 's/^Location: //p'
else else
print "$0: command not found: curl" >&2 print "$0: command not found: curl" >&2
return 1 return 1

View File

@ -22,22 +22,20 @@ function _git-action {
local revert_sequence_formatted local revert_sequence_formatted
for action_dir in \ for action_dir in \
"$git_dir/rebase-apply" \ "${git_dir}/rebase-apply" \
"$git_dir/rebase" \ "${git_dir}/rebase" \
"$git_dir/../.dotest" "${git_dir}/../.dotest"
do do
if [[ -d "$action_dir" ]] ; then if [[ -d "$action_dir" ]] ; then
zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \ zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' || apply_formatted='apply'
|| apply_formatted='apply' zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' || rebase_formatted='rebase'
zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \
|| rebase_formatted='rebase'
if [[ -f "$action_dir/rebasing" ]] ; then if [[ -f "${action_dir}/rebasing" ]] ; then
print "$rebase_formatted" print "$rebase_formatted"
elif [[ -f "$action_dir/applying" ]] ; then elif [[ -f "${action_dir}/applying" ]] ; then
print "$apply_formatted" print "$apply_formatted"
else else
print "$rebase_formatted/$apply_formatted" print "${rebase_formatted}/${apply_formatted}"
fi fi
return 0 return 0
@ -45,67 +43,59 @@ function _git-action {
done done
for action_dir in \ for action_dir in \
"$git_dir/rebase-merge/interactive" \ "${git_dir}/rebase-merge/interactive" \
"$git_dir/.dotest-merge/interactive" "${git_dir}/.dotest-merge/interactive"
do do
if [[ -f "$action_dir" ]]; then if [[ -f "$action_dir" ]]; then
zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \ zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' || rebase_interactive_formatted='rebase-interactive'
|| rebase_interactive_formatted='rebase-interactive'
print "$rebase_interactive_formatted" print "$rebase_interactive_formatted"
return 0 return 0
fi fi
done done
for action_dir in \ for action_dir in \
"$git_dir/rebase-merge" \ "${git_dir}/rebase-merge" \
"$git_dir/.dotest-merge" "${git_dir}/.dotest-merge"
do do
if [[ -d "$action_dir" ]]; then if [[ -d "$action_dir" ]]; then
zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \ zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' || rebase_merge_formatted='rebase-merge'
|| rebase_merge_formatted='rebase-merge'
print "$rebase_merge_formatted" print "$rebase_merge_formatted"
return 0 return 0
fi fi
done done
if [[ -f "$git_dir/MERGE_HEAD" ]]; then if [[ -f "${git_dir}/MERGE_HEAD" ]]; then
zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \ zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' || merge_formatted='merge'
|| merge_formatted='merge'
print "$merge_formatted" print "$merge_formatted"
return 0 return 0
fi fi
if [[ -f "$git_dir/CHERRY_PICK_HEAD" ]]; then if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then
if [[ -d "$git_dir/sequencer" ]] ; then if [[ -d "${git_dir}/sequencer" ]] ; then
zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \ zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' || cherry_pick_sequence_formatted='cherry-pick-sequence'
|| cherry_pick_sequence_formatted='cherry-pick-sequence'
print "$cherry_pick_sequence_formatted" print "$cherry_pick_sequence_formatted"
else else
zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \ zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' || cherry_pick_formatted='cherry-pick'
|| cherry_pick_formatted='cherry-pick'
print "$cherry_pick_formatted" print "$cherry_pick_formatted"
fi fi
return 0 return 0
fi fi
if [[ -f "$git_dir/REVERT_HEAD" ]]; then if [[ -f "${git_dir}/REVERT_HEAD" ]]; then
if [[ -d "$git_dir/sequencer" ]] ; then if [[ -d "${git_dir}/sequencer" ]] ; then
zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' \ zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' || revert_sequence_formatted='revert-sequence'
|| revert_sequence_formatted='revert-sequence'
print "$revert_sequence_formatted" print "$revert_sequence_formatted"
else else
zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' \ zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' || revert_formatted='revert'
|| revert_formatted='revert'
print "$revert_formatted" print "$revert_formatted"
fi fi
return 0 return 0
fi fi
if [[ -f "$git_dir/BISECT_LOG" ]]; then if [[ -f "${git_dir}/BISECT_LOG" ]]; then
zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' \ zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' || bisect_formatted='bisect'
|| bisect_formatted='bisect'
print "$bisect_formatted" print "$bisect_formatted"
return 0 return 0
fi fi
@ -188,15 +178,15 @@ function git-info {
typeset -gA git_info typeset -gA git_info
# Return if not inside a Git repository work tree. # Return if not inside a Git repository work tree.
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
return 1 return 1
fi fi
if (( $# > 0 )); then if (( $# > 0 )); then
if [[ "$1" == [Oo][Nn] ]]; then if [[ "$1" == [Oo][Nn] ]]; then
command git config --bool prompt.showinfo true git config --bool prompt.showinfo true
elif [[ "$1" == [Oo][Ff][Ff] ]]; then elif [[ "$1" == [Oo][Ff][Ff] ]]; then
command git config --bool prompt.showinfo false git config --bool prompt.showinfo false
else else
print "usage: $0 [ on | off ]" >&2 print "usage: $0 [ on | off ]" >&2
fi fi
@ -204,7 +194,7 @@ function git-info {
fi fi
# Return if git-info is disabled. # Return if git-info is disabled.
if ! is-true "${$(command git config --bool prompt.showinfo):-true}"; then if ! is-true "${$(git config --bool prompt.showinfo):-true}"; then
return 1 return 1
fi fi
@ -214,7 +204,7 @@ function git-info {
# Format commit. # Format commit.
zstyle -s ':prezto:module:git:info:commit' format 'commit_format' zstyle -s ':prezto:module:git:info:commit' format 'commit_format'
if [[ -n "$commit_format" ]]; then if [[ -n "$commit_format" ]]; then
commit="$(command git rev-parse HEAD 2> /dev/null)" commit="$(git rev-parse HEAD 2> /dev/null)"
if [[ -n "$commit" ]]; then if [[ -n "$commit" ]]; then
zformat -f commit_formatted "$commit_format" "c:$commit" zformat -f commit_formatted "$commit_format" "c:$commit"
fi fi
@ -222,19 +212,12 @@ function git-info {
# Format stashed. # Format stashed.
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
if [[ -n "$stashed_format" ]]; then if [[ -n "$stashed_format" && -f "$(git-dir)/refs/stash" ]]; then
commondir="" stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')"
if [[ -f "$(git-dir)/commondir" ]]; then if [[ -n "$stashed" ]]; 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" zformat -f stashed_formatted "$stashed_format" "S:$stashed"
fi fi
fi fi
fi
# Format action. # Format action.
zstyle -s ':prezto:module:git:info:action' format 'action_format' zstyle -s ':prezto:module:git:info:action' format 'action_format'
@ -246,7 +229,7 @@ function git-info {
fi fi
# Get the branch. # Get the branch.
branch="${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}"
# Format branch. # Format branch.
zstyle -s ':prezto:module:git:info:branch' format 'branch_format' zstyle -s ':prezto:module:git:info:branch' format 'branch_format'
@ -257,7 +240,7 @@ function git-info {
# Format position. # Format position.
zstyle -s ':prezto:module:git:info:position' format 'position_format' zstyle -s ':prezto:module:git:info:position' format 'position_format'
if [[ -z "$branch" && -n "$position_format" ]]; then if [[ -z "$branch" && -n "$position_format" ]]; then
position="$(command git describe --contains --all HEAD 2> /dev/null)" position="$(git describe --contains --all HEAD 2> /dev/null)"
if [[ -n "$position" ]]; then if [[ -n "$position" ]]; then
zformat -f position_formatted "$position_format" "p:$position" zformat -f position_formatted "$position_format" "p:$position"
fi fi
@ -267,7 +250,7 @@ function git-info {
zstyle -s ':prezto:module:git:info:remote' format 'remote_format' zstyle -s ':prezto:module:git:info:remote' format 'remote_format'
if [[ -n "$branch" && -n "$remote_format" ]]; then if [[ -n "$branch" && -n "$remote_format" ]]; then
# Gets the remote name. # Gets the remote name.
remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}' remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}'
remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}"
if [[ -n "$remote" ]]; then if [[ -n "$remote" ]]; then
zformat -f remote_formatted "$remote_format" "R:$remote" zformat -f remote_formatted "$remote_format" "R:$remote"
@ -278,14 +261,14 @@ function git-info {
zstyle -s ':prezto:module:git:info:behind' format 'behind_format' zstyle -s ':prezto:module:git:info:behind' format 'behind_format'
if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then
# Gets the commit difference counts between local and remote. # Gets the commit difference counts between local and remote.
ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}' ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}'
# Get ahead and behind counts. # Get ahead and behind counts.
ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)"
# Format ahead. # Format ahead.
if [[ -n "$ahead_format" ]]; then if [[ -n "$ahead_format" ]]; then
ahead="$ahead_and_behind[(pws:\t:)1]" ahead="$ahead_and_behind[(w)1]"
if (( ahead > 0 )); then if (( ahead > 0 )); then
zformat -f ahead_formatted "$ahead_format" "A:$ahead" zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi fi
@ -293,7 +276,7 @@ function git-info {
# Format behind. # Format behind.
if [[ -n "$behind_format" ]]; then if [[ -n "$behind_format" ]]; then
behind="$ahead_and_behind[(pws:\t:)2]" behind="$ahead_and_behind[(w)2]"
if (( behind > 0 )); then if (( behind > 0 )); then
zformat -f behind_formatted "$behind_format" "B:$behind" zformat -f behind_formatted "$behind_format" "B:$behind"
fi fi
@ -307,7 +290,7 @@ function git-info {
if [[ -n "$indexed_format" ]]; then if [[ -n "$indexed_format" ]]; then
(( ((
indexed+=$( indexed+=$(
command git diff-index \ git diff-index \
--no-ext-diff \ --no-ext-diff \
--name-only \ --name-only \
--cached \ --cached \
@ -327,7 +310,7 @@ function git-info {
if [[ -n "$unindexed_format" ]]; then if [[ -n "$unindexed_format" ]]; then
(( ((
unindexed+=$( unindexed+=$(
command git diff-files \ git diff-files \
--no-ext-diff \ --no-ext-diff \
--name-only \ --name-only \
--ignore-submodules=${ignore_submodules:-none} \ --ignore-submodules=${ignore_submodules:-none} \
@ -345,7 +328,7 @@ function git-info {
if [[ -n "$untracked_format" ]]; then if [[ -n "$untracked_format" ]]; then
(( ((
untracked+=$( untracked+=$(
command git ls-files \ git ls-files \
--other \ --other \
--exclude-standard \ --exclude-standard \
2> /dev/null \ 2> /dev/null \
@ -360,7 +343,7 @@ function git-info {
(( dirty = indexed + unindexed + untracked )) (( dirty = indexed + unindexed + untracked ))
else else
# Use porcelain status for easy parsing. # Use porcelain status for easy parsing.
status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}" status_cmd="git status --porcelain --ignore-submodules=${ignore_submodules:-none}"
# Get current status. # Get current status.
while IFS=$'\n' read line; do while IFS=$'\n' read line; do
@ -417,11 +400,6 @@ function git-info {
if (( dirty > 0 )); then if (( dirty > 0 )); then
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format' zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
zformat -f dirty_formatted "$dirty_format" "D:$dirty" zformat -f dirty_formatted "$dirty_format" "D:$dirty"
# 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 else
zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted' zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'
fi fi

View File

@ -7,7 +7,7 @@
# function git-root { # function git-root {
local root="$(command git rev-parse --show-toplevel 2> /dev/null)" local root="$(git rev-parse --show-toplevel 2> /dev/null)"
if [[ -n "$root" ]]; then if [[ -n "$root" ]]; then
print "$root" print "$root"

View File

@ -7,7 +7,7 @@
# function git-stash-clear-interactive { # function git-stash-clear-interactive {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
fi fi
@ -15,10 +15,10 @@ fi
local stashed local stashed
if [[ -f "$(git-dir)/refs/stash" ]]; then if [[ -f "$(git-dir)/refs/stash" ]]; then
stashed=${#${(f)"$(command git stash list 2> /dev/null)"}} stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')"
if (( $stashed > 0 )); then if (( $stashed > 0 )); then
if read -q "?Clear $stashed stashed state(s) [y/N]? "; then if read -q "?Clear $stashed stashed state(s) [y/N]? "; then
command git stash clear git stash clear
fi fi
fi fi
fi fi

View File

@ -7,16 +7,16 @@
# function git-stash-dropped { # function git-stash-dropped {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
fi fi
command git fsck --unreachable 2> /dev/null \ git fsck --unreachable 2> /dev/null \
| grep 'commit' \ | grep 'commit' \
| awk '{print $3}' \ | awk '{print $3}' \
| command git log \ | git log \
--pretty=format:$_git_log_oneline_format \ --pretty=format:${_git_log_oneline_format} \
--extended-regexp \ --extended-regexp \
--grep="${1:-(WIP )?[Oo]n [^:]+:}" \ --grep="${1:-(WIP )?[Oo]n [^:]+:}" \
--merges \ --merges \

View File

@ -7,7 +7,7 @@
# function git-stash-recover { # function git-stash-recover {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
fi fi
@ -15,8 +15,8 @@ fi
local commit local commit
for commit in "$@"; do for commit in "$@"; do
command git update-ref \ git update-ref \
-m "$(command git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit" -m "$(git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit"
done done
# } # }

View File

@ -7,7 +7,7 @@
# function git-submodule-move { # function git-submodule-move {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
elif [[ "$PWD" != "$(git-root)" ]]; then elif [[ "$PWD" != "$(git-root)" ]]; then
@ -19,17 +19,17 @@ local src="$1"
local dst="$2" local dst="$2"
local url local url
url="$(command git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")" url="$(git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")"
if [[ -z "$url" ]]; then if [[ -z "$url" ]]; then
print "$0: submodule not found: $src" >&2 print "$0: submodule not found: $src" >&2
return 1 return 1
fi fi
mkdir -p "$dst:h" mkdir -p "${dst:h}"
git-submodule-remove "$src" git-submodule-remove "$src"
command git submodule add "$url" "$dst" git submodule add "$url" "$dst"
return 0 return 0

View File

@ -7,24 +7,24 @@
# function git-submodule-remove { # function git-submodule-remove {
if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
print "$0: not a repository work tree: $PWD" >&2 print "$0: not a repository work tree: $PWD" >&2
return 1 return 1
elif [[ "$PWD" != "$(git-root)" ]]; then elif [[ "$PWD" != "$(git-root)" ]]; then
print "$0: must be run from the root of the work tree" >&2 print "$0: must be run from the root of the work tree" >&2
return 1 return 1
elif ! command git config --file .gitmodules --get "submodule.${1}.path" &> /dev/null; then elif ! git config --file .gitmodules --get "submodule.${1}.path" &>/dev/null; then
print "$0: submodule not found: $1" >&2 print "$0: submodule not found: $1" >&2
return 1 return 1
fi fi
command git config --file "$(git-dir)/config" --remove-section "submodule.${1}" &> /dev/null 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 git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &>/dev/null
command git add .gitmodules git add .gitmodules
command git rm --cached -rf "$1" git rm --cached -rf "${1}"
rm -rf "$1" rm -rf "${1}"
rm -rf "$(git-dir)/modules/$1" rm -rf "$(git-dir)/modules/${1}"
return 0 return 0

View File

@ -13,8 +13,5 @@ fi
# Load dependencies. # Load dependencies.
pmodload 'helper' pmodload 'helper'
# Load 'run-help' function.
autoload -Uz run-help-git
# Source module files. # Source module files.
source "${0:h}/alias.zsh" source "${0:h}/alias.zsh"

View File

@ -1,34 +1,34 @@
# GNU Utility GNU Utility
===========
Provides for the interactive use of GNU utilities on BSD systems. 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., Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.
`ls` instead of `gls`, is not recommended since scripts that target other `ls` instead of `gls`, is not recommended since scripts that target other
utilities will be broken. utilities will be broken.
This module wraps GNU utilities in functions without a prefix for interactive This module wraps GNU utilities in functions without a prefix for interactive
use. use.
This module must be loaded _before_ the [_`utility`_][1] module so that GNU This module must be loaded **before** the *utility* module.
utilities enabled in this module are available for configuration in _`utility`_
module.
## Settings Settings
--------
### Prefix ### Prefix
To use a different prefix, add the following to To use a different prefix, add the following to *zpreztorc*, and replace 'g' with
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix. the desired prefix:
```sh ```sh
zstyle ':prezto:module:gnu-utility' prefix 'g' zstyle ':prezto:module:gnu-utility' prefix 'g'
``` ```
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: ../utility#readme [1]: https://github.com/sorin-ionescu/prezto/issues
[2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -6,36 +6,34 @@
# #
# Get the prefix or use the default. # Get the prefix or use the default.
zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \ zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' || _gnu_utility_p='g'
|| _gnu_utility_p='g'
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $+commands[${_gnu_utility_p}whoami] )); then if (( ! ${+commands[${_gnu_utility_p}whoami]} )); then
return 1 return 1
fi fi
_gnu_utility_cmds=( _gnu_utility_cmds=(
# Coreutils # Coreutils
'[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp' '[' 'base64' 'basename' 'cat' 'chcon' 'chgrp' 'chmod' 'chown'
'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut' 'date' 'dd' 'df'
'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'
'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join' 'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id'
'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo' 'install' 'join' 'kill' 'link' 'ln' 'logname' 'ls' 'md5sum'
'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od' 'mkdir' 'mkfifo' 'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc'
'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd' 'od' 'paste' 'pathchk' 'pinee' 'pr' 'printenv' 'printf' 'ptx'
'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'pwd' 'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'seq' 'sha1sum'
'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'
'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail' 'sleep' 'sort' 'split' 'stat' 'stty' 'sum' 'sync' 'tac' 'tail'
'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty' 'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort'
'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir' 'tty' 'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'
'wc' 'who' 'whoami' 'yes' 'wc' 'who' 'whoami' 'yes'
# The following utilities are not part of Coreutils but installed separately. # The following utilities are not part of Coreutils but installed separately.
# Binutils # Binutils
'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm' 'addr2line' 'ar' 'c++filt' 'elfedit' 'nm' 'objcopy' 'objdump'
'objcopy' 'objdump' 'ranlib' 'readelf' 'ranlib' 'readelf' 'size' 'strings' 'strip'
'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres'
# Findutils # Findutils
'find' 'locate' 'oldfind' 'updatedb' 'xargs' 'find' 'locate' 'oldfind' 'updatedb' 'xargs'
@ -44,18 +42,16 @@ _gnu_utility_cmds=(
'libtool' 'libtoolize' 'libtool' 'libtoolize'
# Miscellaneous # Miscellaneous
'egrep' 'fgrep' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'
'which'
) )
# Wrap GNU utilities in functions. # Wrap GNU utilities in functions.
for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do
_gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}" _gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}"
if (( $+commands[$_gnu_utility_pcmd] \ if (( ${+commands[${_gnu_utility_pcmd}]} && ! ${+builtins[${_gnu_utility_cmd}]} )); then
&& ! $+builtins[$_gnu_utility_cmd] )); then
eval " eval "
function $_gnu_utility_cmd { function ${_gnu_utility_cmd} {
'$commands[$_gnu_utility_pcmd]' \"\$@\" '${commands[${_gnu_utility_pcmd}]}' \"\$@\"
} }
" "
fi fi

View File

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

View File

@ -12,7 +12,7 @@ fi
# Set the default paths to gpg-agent files. # Set the default paths to gpg-agent files.
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf" _gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
_gpg_agent_env="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env" _gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
# Load environment variables from previous run # Load environment variables from previous run
source "$_gpg_agent_env" 2> /dev/null source "$_gpg_agent_env" 2> /dev/null
@ -21,13 +21,12 @@ source "$_gpg_agent_env" 2> /dev/null
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
# Start gpg-agent if not started. # Start gpg-agent if not started.
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then 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")" eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
fi fi
fi fi
# Inform gpg-agent of the current TTY for user prompts. # Inform gpg-agent of the current TTY for user prompts.
export GPG_TTY=$TTY export GPG_TTY="$(tty)"
# Integrate with the SSH module. # Integrate with the SSH module.
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then

View File

@ -1,8 +1,10 @@
# Haskell Haskell
=======
Enables local Haskell package installation. Enables local Haskell package installation.
## Per-user Package Installation Per-user Package Installation
-----------------------------
[Cabal][1], the Haskell package manager, can install packages into per user [Cabal][1], the Haskell package manager, can install packages into per user
directories. directories.
@ -15,11 +17,12 @@ documentation.
Install packages into per user directories with `cabal install --user`. Install packages into per user directories with `cabal install --user`.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Sebastian Wiesner](https://github.com/lunaryorn) - [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://www.haskell.org/cabal/ [1]: http://www.haskell.org/cabal/
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -10,11 +10,8 @@ if (( ! $+commands[ghc] )); then
return 1 return 1
fi fi
# Load dependencies.
pmodload 'helper'
# Prepend Cabal per user directories to PATH. # Prepend Cabal per user directories to PATH.
if is-darwin && [[ -d $HOME/Library/Haskell ]]; then if [[ "$OSTYPE" == darwin* && -d $HOME/Library/Haskell ]]; then
path=($HOME/Library/Haskell/bin(/N) $path) path=($HOME/Library/Haskell/bin(/N) $path)
else else
path=($HOME/.cabal/bin(/N) $path) path=($HOME/.cabal/bin(/N) $path)

View File

@ -1,25 +1,23 @@
# Helper Helper
======
Provides helper functions for developing modules. Provides helper functions for developing modules.
## Functions Functions
---------
- `add-zsh-trap` adds a function name to a list to be called when a trap is - `add-zsh-trap` adds a function name to a list to be called when a trap is
triggered. triggered.
- `is-autoloadable` checks if a file can be autoloaded by trying to load it in - `is-autoloadable` checks if a file can be autoloaded by trying to load it
a subshell. in a subshell.
- `is-callable` checks if a name is a command, function, or alias. - `is-callable` checks if a name is a command, function, or alias.
- `is-true` checks a boolean variable for "true". - `is-true` checks a boolean variable for "true".
- `coalesce` prints the first non-empty string in the arguments array. - `coalesce` prints the first non-empty string in the arguments array.
- `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 Authors
-------
_The authors of this module should be contacted via the [issue tracker][1]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)

View File

@ -29,28 +29,3 @@ function coalesce {
done done
return 1 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 ]]
}

View File

@ -1,32 +1,28 @@
# History Substring Search History Substring Search
========================
Integrates [`zsh-history-substring-search`][1] into Prezto, which implements the Integrates [zsh-history-substring-search][1] into Prezto, which implements
[Fish shell][2]'s history search feature, where the user can type in any part of the [Fish shell][2]'s history search feature, where the user can type in any
a previously entered command and press up and down to cycle through matching part of a previously entered command and press up and down to cycle through
commands. matching commands.
If this module is used in conjunction with the [_`syntax-highlighting`_][3] If this module is used in conjunction with the *syntax-highlighting* module,
module, this module must be loaded _after_ the _`syntax-highlighting`_ module. this module must be loaded **after** the *syntax-highlighting* module.
Additionally, if this module is used in conjunction with the Contributors
[_`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 New features and bug fixes should be submitted to the
[`zsh-history-substring-search`][1] project according to its rules and [zsh-history-substring-search][1] project according to its rules and
regulations. This module will be synchronized against it. regulations. This module will be synchronized against it.
## Settings Settings
--------
### Case Sensitivity ### Case Sensitivity
To enable case-sensitivity for this module only, add the following line to To enable case-sensitivity for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_: *zpreztorc*:
```sh ```sh
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
@ -34,46 +30,42 @@ zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
### Highlighting ### Highlighting
If colors are enabled, _history-substring-search_ will automatically highlight If colors are enabled, *history-substring-search* will automatically highlight
positive results. positive results.
To disable highlighting for this module only, add the following line to To enable highlighting for this module only, add the following line to
_`${ZDOTDIR:-$HOME}/.zpreztorc`_: *zpreztorc*:
```sh ```sh
zstyle ':prezto:module:history-substring-search' color 'no' zstyle ':prezto:module:history-substring-search' color 'yes'
``` ```
To set the query found color, add the following line to To set the query found color, add the following line to *zpreztorc*:
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh ```sh
zstyle ':prezto:module:history-substring-search:color' found '' zstyle ':prezto:module:history-substring-search:color' found ''
``` ```
To set the query not found color, add the following line to To set the query not found color, add the following line to *zpreztorc*:
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh ```sh
zstyle ':prezto:module:history-substring-search:color' not-found '' zstyle ':prezto:module:history-substring-search:color' not-found ''
``` ```
To set the search globbing flags, add the following line to To set the search globbing flags, add the following line to *zpreztorc*:
_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh ```sh
zstyle ':prezto:module:history-substring-search' globbing-flags '' zstyle ':prezto:module:history-substring-search' globbing-flags ''
``` ```
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][5]._ *The authors of this module should be contacted via the [issue tracker][3].*
- [Suraj N. Kurapati](https://github.com/sunaku) - [Suraj N. Kurapati](https://github.com/sunaku)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-history-substring-search [1]: https://github.com/zsh-users/zsh-history-substring-search
[2]: https://fishshell.com [2]: http://fishshell.com
[3]: ../syntax-highlighting#readme [3]: https://github.com/sorin-ionescu/prezto/issues
[4]: ../autosuggestions#readme
[5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -10,9 +10,7 @@
pmodload 'editor' pmodload 'editor'
# Source module files. # Source module files.
if (( ! $+functions[history-substring-search-up] )); then
source "${0:h}/external/zsh-history-substring-search.zsh" || return 1 source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
fi
# #
# Search # Search

View File

@ -1,50 +1,43 @@
# History History
=======
Sets [history][1] options and defines history aliases. Sets [history][1] options and defines history aliases.
**Note:** Default path of `HISTFILE` has changed from Variables
_`${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`_. - `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.
## Options Options
-------
- `BANG_HIST` treats the **!** character specially during expansion. - `BANG_HIST` treats the **!** character specially during expansion.
- `EXTENDED_HISTORY` writes the history file in the _:start:elapsed;command_ - `EXTENDED_HISTORY` writes the history file in the *:start:elapsed;command* format.
format. - `INC_APPEND_HISTORY` writes to the history file immediately, not when the shell exits.
- `SHARE_HISTORY` shares history between all sessions. Note that - `SHARE_HISTORY` shares history between all sessions.
`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_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_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 - `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a duplicate.
duplicate.
- `HIST_FIND_NO_DUPS` does not display a previously found event. - `HIST_FIND_NO_DUPS` does not display a previously found event.
- `HIST_IGNORE_SPACE` does not record an event starting with a space. - `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_SAVE_NO_DUPS` does not write a duplicate event to the history file.
- `HIST_VERIFY` does not execute immediately upon history expansion. - `HIST_VERIFY` does not execute immediately upon history expansion.
- `HIST_BEEP` beeps when accessing non-existent history. - `HIST_BEEP` beeps when accessing non-existent history.
## Variables Aliases
-------
- `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
- `history-stat` lists the ten most used commands - `history-stat` lists the ten most used commands
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][2]._ *The authors of this module should be contacted via the [issue tracker][2].*
- [Robby Russell](https://github.com/robbyrussell) - [Robby Russell](https://github.com/robbyrussell)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: https://zsh.sourceforge.net/Guide/zshguide02.html#l16 [1]: http://zsh.sourceforge.net/Guide/zshguide02.html#l16
[2]: https://github.com/sorin-ionescu/prezto/issues [2]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -6,12 +6,21 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
#
# Variables
#
HISTFILE="${ZDOTDIR:-$HOME}/.zhistory" # The path to the history file.
HISTSIZE=10000 # The maximum number of events to save in the internal history.
SAVEHIST=10000 # The maximum number of events to save in the history file.
# #
# Options # Options
# #
setopt BANG_HIST # Treat the '!' character specially during expansion. setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY # Share history between all sessions. setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. 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_DUPS # Do not record an event that was just recorded again.
@ -22,42 +31,9 @@ setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history
setopt HIST_VERIFY # Do not execute immediately upon history expansion. setopt HIST_VERIFY # Do not execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing non-existent history. setopt HIST_BEEP # Beep when accessing non-existent history.
#
# Variables
#
HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file.
HISTSIZE=10000 # The maximum number of events to save in the internal history.
SAVEHIST=10000 # The maximum number of events to save in the history file.
# #
# Aliases # Aliases
# #
# Lists the ten most used commands. # Lists the ten most used commands.
alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head" alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
if [[ -s "${OLD_HISTFILE::=${HISTFILE:h}/.zhistory}" ]]; then
# New 'HISTFILE' doesn't exist yet, rename legacy one if available and notify.
if [[ ! -s "$HISTFILE" ]]; then
<<EON
NOTICE: Default path of 'HISTFILE' has changed from '${OLD_HISTFILE/#$HOME/~}'
to '${HISTFILE/#$HOME/~}'.
Attempting to rename the existing 'HISTFILE' ...
EON
command mv -v "$OLD_HISTFILE" "$HISTFILE"
# New 'HISTFILE' does exist and is older than legacy one, just warn.
elif [[ "$OLD_HISTFILE" -nt "$HISTFILE" ]]; then
<<EOW
WARNING: Default path of 'HISTFILE' has changed from '${OLD_HISTFILE/#$HOME/~}'
to '${HISTFILE/#$HOME/~}'.
Either set 'HISTFILE' in '${${0:h}/#$HOME/~}'
or move previous history from '${OLD_HISTFILE/#$HOME/~}' to
'${HISTFILE/#$HOME/~}'.
EOW
fi
unset OLD_HISTFILE
fi

View File

@ -1,41 +1,37 @@
# Homebrew Homebrew
========
Defines Homebrew specific environment variables and aliases. Defines Homebrew aliases.
## Variables Aliases
-------
Execute the following to list the environment variables loaded in the shell: ### Homebrew
```sh
brew shellenv
```
## Aliases
### Homebrew Core
- `brewc` cleans outdated brews and their cached archives. - `brewc` cleans outdated brews and their cached archives.
- `brewC` cleans outdated brews, including keg-only, and their cached archives.
- `brewi` installs a formula. - `brewi` installs a formula.
- `brewL` lists installed formulae that are not dependencies of another
installed formula.
- `brewl` lists installed formulae. - `brewl` lists installed formulae.
- `brewo` lists brews which have an update available. - `brewo` lists brews which have an update available.
- `brews` searches for a formula. - `brews` searches for a formula.
- `brewu` upgrades outdated formulae. - `brewu` updates and upgrades Homebrew packages and formulae.
- `brewx` uninstalls a formula. - `brewx` uninstalls a formula.
### Homebrew Cask ### Homebrew Cask
- `cask` is aliased to `brew cask`.
- `caskc` cleans up old cached downloads.
- `caskC` cleans up all cached downloads.
- `caski` installs a cask. - `caski` installs a cask.
- `caskl` lists installed casks. - `caskl` lists installed casks.
- `casko` lists casks which have an update available. - `casko` lists casks which have an update available.
- `casks` searches for a cask. - `casks` searches for a cask.
- `casku` upgrades outdated casks.
- `caskx` uninstalls a cask. - `caskx` uninstalls a cask.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][1]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Griffin Yourick](https://github.com/tough-griff) - [Griffin Yourick](https://github.com/tough-griff)

View File

@ -5,43 +5,31 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found. # Return if requirements are not found.
if ! is-darwin && ! is-linux; then if [[ "$OSTYPE" != (darwin|linux)* ]]; then
return 1 return 1
fi 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
eval "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}"
fi
# #
# Aliases # Aliases
# #
# Homebrew # Homebrew
alias brewc='brew cleanup' alias brewc='brew cleanup'
alias brewC='brew cleanup --force'
alias brewi='brew install' alias brewi='brew install'
alias brewL='brew leaves'
alias brewl='brew list' alias brewl='brew list'
alias brewo='brew outdated' alias brewo='brew outdated'
alias brews='brew search' alias brews='brew search'
alias brewu='brew upgrade' alias brewu='brew update && brew upgrade'
alias brewx='brew uninstall' alias brewx='brew remove'
# Homebrew Cask # Homebrew Cask
alias caski='brew install --cask' alias cask='brew cask'
alias caskl='brew list --cask' alias caskc='brew cask cleanup --outdated'
alias casko='brew outdated --cask' alias caskC='brew cask cleanup'
alias casks='brew search --cask' alias caski='brew cask install'
alias casku='brew upgrade --cask' alias caskl='brew cask list'
alias caskx='brew uninstall --cask' alias casko='brew cask outdated'
alias casks='brew cask search'
alias caskx='brew cask uninstall'

View File

@ -1,8 +1,10 @@
# MacPorts MacPorts
========
Defines MacPorts aliases and adds MacPorts directories to path variables. Defines MacPorts aliases and adds MacPorts directories to path variables.
## Aliases Aliases
-------
- `portc` cleans the files used to build ports. - `portc` cleans the files used to build ports.
- `porti` installs a port. - `porti` installs a port.
@ -12,9 +14,10 @@ Defines MacPorts aliases and adds MacPorts directories to path variables.
- `portx` uninstalls a port. - `portx` uninstalls a port.
- `portX` uninstalls inactive ports. - `portX` uninstalls inactive ports.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][1]._ *The authors of this module should be contacted via the [issue tracker][1].*
- [Matt Cable](https://github.com/curiousstranger) - [Matt Cable](https://github.com/curiousstranger)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)

View File

@ -6,11 +6,8 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found. # Return if requirements are not found.
if ! is-darwin; then if [[ "$OSTYPE" != darwin* ]]; then
return 1 return 1
fi fi

View File

@ -1,59 +1,32 @@
# Node.js Node.js
=======
Provides utility functions for [Node.js][1], loads the Node Version Manager, and Provides utility functions for [Node.js][1], loads the Node Version Manager, and
enables [_npm_][2] completion. enables [npm][2] completion.
This module must be loaded _before_ the _`completion`_ module so that the nvm
provided completion definitions are loaded. ---
## nodenv [nvm][5] allows for managing multiple, isolated Node.js installations in the
[_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. home directory.
This will be loaded automatically if nvm is installed in `$NVM_DIR`, nodenv
_`$XDG_CONFIG_HOME/nvm`_, _`~/.nvm`_, or is installed with homebrew. ------
## Variables [nodenv][6] does one thing well. nodenv is concerned solely with switching
Node versions. It's simple and predictable, Just Works, and is rock solid in
production. nodenv is forked from the popular [rbenv][7].
- `N_PREFIX` stores the path to [_n_][8] cache. Functions
---------
## Aliases
### 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 - `node-doc` opens the Node.js online [API documentation][3] in the default
browser. browser.
- `node-info` exposes information about the Node.js environment via the - `node-info` exposes information about the Node.js environment via the
`$node_info` associative array. `$node_info` associative array.
## Theming Theming
-------
To display the version number of the current Node.js version, define the To display the version number of the current Node.js version, define the
following style inside the `prompt_name_setup` function. following style inside the `prompt_name_setup` function.
@ -66,19 +39,18 @@ zstyle ':prezto:module:node:info:version' format 'version:%v'
Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call
`node-info` in `prompt_name_preexec` hook function. `node-info` in `prompt_name_preexec` hook function.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][4]._ *The authors of this module should be contacted via the [issue tracker][4].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
- [Zeh Rizzatti](https://github.com/zehrizzatti) - [Zeh Rizzatti](https://github.com/zehrizzatti)
- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: http://nodejs.org [1]: http://nodejs.org
[2]: http://npmjs.org [2]: http://npmjs.org
[3]: http://nodejs.org/api [3]: http://nodejs.org/api
[4]: https://github.com/sorin-ionescu/prezto/issues [4]: https://github.com/sorin-ionescu/prezto/issues
[5]: https://github.com/nodenv/nodenv [5]: https://github.com/creationix/nvm
[6]: https://github.com/sstephenson/rbenv [6]: https://github.com/nodenv/nodenv
[7]: https://github.com/nvm-sh/nvm [7]: https://github.com/sstephenson/rbenv
[8]: https://github.com/tj/n

View File

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

View File

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

View File

@ -13,6 +13,6 @@ if [[ -z "$BROWSER" ]]; then
fi fi
# TODO: Make the sections easier to use. # TODO: Make the sections easier to use.
"$BROWSER" "https://nodejs.org/docs/${$(node --version 2> /dev/null)/%-*}/api/all.html#${1}" "$BROWSER" "http://nodejs.org/docs/$(node --version | sed 's/-.*//')/api/all.html#${1}"
# } # }

View File

@ -15,15 +15,13 @@ local version_formatted
unset node_info unset node_info
typeset -gA node_info typeset -gA node_info
if (( $+commands[nodenv] )); then if (( $+functions[nvm_version] )); then
version="${${$(nodenv version)#v}[(w)0]}"
elif (( $+functions[nvm_version] )); then
version="${$(nvm_version)#v}" version="${$(nvm_version)#v}"
elif (( $+commands[node] )) ; then elif (( $+commands[nodenv] )); then
version="${$(node -v)#v}" version="${${$(nodenv version)#v}[(w)0]}"
fi fi
if [[ "$version" != (none|system) ]]; then if [[ "$version" != (none|) ]]; then
zstyle -s ':prezto:module:node:info:version' format 'version_format' zstyle -s ':prezto:module:node:info:version' format 'version_format'
zformat -f version_formatted "$version_format" "v:$version" zformat -f version_formatted "$version_format" "v:$version"
node_info[version]="$version_formatted" node_info[version]="$version_formatted"

View File

@ -1,65 +1,43 @@
# #
# Configures Node local installation, loads version managers, and defines # Loads the Node Version Manager and enables npm completion.
# variables and aliases.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# Zeh Rizzatti <zehrizzatti@gmail.com> # Zeh Rizzatti <zehrizzatti@gmail.com>
# Indrajit Raychaudhuri <irc@indrajit.com>
# #
# Possible lookup locations for manually installed nodenv and nvm. # Load manually installed NVM into the shell session.
local_nodenv_paths=({$NODENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}nodenv}/bin/nodenv(N)) if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
local_nvm_paths=({$NVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}nvm}/nvm.sh(N)) source "$HOME/.nvm/nvm.sh"
# Load manually installed or package manager installed nodenv into the shell # Load package manager installed NVM into the shell session.
# session. elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2> /dev/null)" ]]; then
if (( $#local_nodenv_paths || $+commands[nodenv] )); then source "$(brew --prefix nvm)/nvm.sh"
# Ensure manually installed nodenv is added to path when present. # Load manually installed nodenv into the shell session.
[[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path) elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then
path=("$HOME/.nodenv/bin" $path)
eval "$(nodenv init - --no-rehash zsh)"
eval "$(nodenv init - zsh)" # Load package manager installed nodenv into the shell session.
elif (( $+commands[nodenv] )); then
# Load manually installed nvm into the shell session. eval "$(nodenv init - --no-rehash zsh)"
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. # Return if requirements are not found.
if (( ! $+commands[node] && ! $#functions[(i)n(odenv|vm)] )); then elif (( ! $+commands[node] )); then
return 1 return 1
fi fi
# # Load NPM completion.
# Variables if (( $+commands[npm] )); then
# cache_file="${TMPDIR:-/tmp}/prezto-node-cache.$UID.zsh"
N_PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}/n" # The path to 'n' cache. if [[ "$commands[npm]" -nt "$cache_file" || ! -s "$cache_file" ]]; then
# npm is slow; cache its output.
npm completion >! "$cache_file" 2> /dev/null
fi
# source "$cache_file"
# Aliases
#
# npm unset cache_file
alias npmi='npm install' fi
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'

View File

@ -1,8 +1,10 @@
# OCaml OCaml
=====
Initializes [OCaml][1] package management. Initializes [OCaml][1] package management.
## OPAM OPAM
----
[OPAM][2] is a package manager for OCaml. [OPAM][2] is a package manager for OCaml.
@ -13,12 +15,13 @@ relevant path and OCaml variables.
Install packages to your local package directory with `opam install`. Install packages to your local package directory with `opam install`.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][3]._ *The authors of this module should be contacted via the [issue tracker][3].*
- [Sebastian Wiesner](https://github.com/lunaryorn) - [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: https://ocaml.org/ [1]: http://ocaml.org/
[2]: http://opam.ocamlpro.com/ [2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues [3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,23 +0,0 @@
#
# Exposes information about the OpenStack environment via the $os_info associative
# array.
#
# function os-info {
local tenant
local tenant_format
local tenant_formatted
unset os_info
typeset -gA os_info
[[ -n "${OS_PROJECT_NAME+1}" ]] && tenant="${OS_PROJECT_NAME}"
if [[ "$tenant" != (none|) ]]; then
zstyle -s ':prezto:module:openstack:info:tenant' format 'tenant_format'
zformat -f tenant_formatted "$tenant_format" "v:$tenant"
os_info[tenant]="$tenant_formatted"
fi
# }

View File

@ -1,50 +1,50 @@
# OSX OSX
===
Defines [macOS][1] aliases and functions. Defines [Mac OS X][1] aliases and functions.
This module must be loaded _before_ the [_`completion`_][2] module so that the Settings
provided completion definitions are loaded automatically by _`completion`_ --------
module.
## Settings
### Dash Keyword ### Dash Keyword
To change the keyword used by `mand` to open man pages in [_Dash.app_][3] from To change the keyword used by `mand` to open man pages in [_Dash.app_][2] from
its default value of 'manpages', add the following line in its default value of 'manpages', add the following line in *zpreztorc* and
_`${ZDOTDIR:-$HOME}/.zpreztorc`_ and replace the **keyword** with the one replace the **keyword** with the one configured in [_Dash.app_][2].
configured in [_Dash.app_][3].
```sh ```sh
zstyle ':prezto:module:osx:man' dash-keyword 'keyword' zstyle ':prezto:module:osx:man' dash-keyword 'keyword'
``` ```
## Aliases Aliases
-------
- `cdf` changes the current working director to the current _Finder_ directory. - `cdf` changes the current working director to the current _Finder_
directory.
- `pushdf` pushes the current working directory onto the directory queue and - `pushdf` pushes the current working directory onto the directory queue and
changes the current working director to the current _Finder_ directory. changes the current working director to the current _Finder_ directory.
## Functions Functions
---------
- `mand` opens _man_ pages in [_Dash.app_][3]. - `mand` opens _man_ pages in [_Dash.app_][2].
- `manp` opens _man_ pages in _Preview.app_. - `manp` opens _man_ pages in _Preview.app_.
- `pfd` prints the current _Finder_ directory. - `pfd` prints the current _Finder_ directory.
- `pfs` prints the current _Finder_ selection. - `pfs` prints the current _Finder_ selection.
- `tab` creates a new tab (works in both _Terminal_ and [_iTerm.app_][4]). - `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]).
- `ql` previews files in Quick Look. - `ql` previews files in Quick Look.
- `osx-rm-dir-metadata` deletes _`.DS_Store`_, _`__MACOSX`_ cruft. - `osx-rm-dir-metadata` deletes .DS\_Store, \_\_MACOSX cruft.
- `osx-ls-download-history` displays the macOS download history. - `osx-ls-download-history` displays the Mac OS X download history.
- `osx-rm-download-history` deletes the macOS download history. - `osx-rm-download-history` deletes the Mac OS X download history.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][5]._ *The authors of this module should be contacted via the [issue tracker][4].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.apple.com/macos/ [1]: http://www.apple.com/macosx/
[2]: ../completion#readme [2]: http://kapeli.com/dash
[3]: https://kapeli.com/dash [3]: http://www.iterm2.com/
[4]: https://www.iterm2.com/ [4]: https://github.com/sorin-ionescu/prezto/issues
[5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -8,7 +8,7 @@
function mand { function mand {
if (( $# > 0 )); then if (( $# > 0 )); then
zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages' zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages'
open "dash://$dashkw%3A$1" 2> /dev/null open "dash://$dashkw:$1" 2> /dev/null
if (( $? != 0 )); then if (( $? != 0 )); then
print "$0: Dash is not installed" >&2 print "$0: Dash is not installed" >&2
break break

View File

@ -1,5 +1,5 @@
# #
# Displays the macOS download history. # Displays the Mac OS X download history.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -1,5 +1,5 @@
# #
# Deletes the macOS download history. # Deletes the Mac OS X download history.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -1,15 +1,12 @@
# #
# Defines macOS aliases and functions. # Defines Mac OS X aliases and functions.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
# Load dependencies.
pmodload 'helper'
# Return if requirements are not found. # Return if requirements are not found.
if ! is-darwin; then if [[ "$OSTYPE" != darwin* ]]; then
return 1 return 1
fi fi

View File

@ -1,9 +1,11 @@
# Pacman Pacman
======
Provides aliases and functions for the [Pacman][1] package manager and Provides aliases and functions for the [Pacman][1] package manager and
frontends. frontends.
## Settings Settings
--------
It is possible to use a Pacman frontend with the pacman aliases provided by this 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 package as long as that frontend supports the same command line options (The
@ -15,15 +17,15 @@ supported by Archlinux. It is currently recommended to manually build AUR
packages using the [provided instructions][3]. The [aurutils][4] project has a packages using the [provided instructions][3]. The [aurutils][4] project has a
set of small utilities to make this easier. set of small utilities to make this easier.
To enable a different Pacman frontend, add the following to To enable a Pacman frontend, add the following line to *zpreztorc*, substituting
_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<frontend>'` with the name `pacman_frontend` with the name of the frontent:
of the preferred frontend.
```sh ```sh
zstyle ':prezto:module:pacman' frontend '<frontend>' zstyle ':prezto:module:pacman' frontend 'pacman_frontend'
``` ```
## Aliases Aliases
-------
### Pacman ### Pacman
@ -45,21 +47,23 @@ zstyle ':prezto:module:pacman' frontend '<frontend>'
### Frontends ### Frontends
## Functions Functions
---------
- `aurget` clone an aur package. - `aurget` clone an aur package
- `pacman-list-explicit` lists explicitly installed pacman packages. - `pacman-list-explicit` lists explicitly installed pacman packages.
- `pacman-list-disowned` lists pacman disowned files. - `pacman-list-disowned` lists pacman disowned files.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][5]._ *The authors of this module should be contacted via the [issue tracker][5].*
- [Benjamin Boudreau](https://github.com/dreur) - [Benjamin Boudreau](https://github.com/dreur)
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.archlinux.org/pacman/ [1]: http://www.archlinux.org/pacman/
[2]: https://wiki.archlinux.org/title/AUR_helpers#Comparison_tables [2]: https://wiki.archlinux.org/index.php/AUR_helpers#Comparison_table
[3]: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages [3]: https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages
[4]: https://github.com/AladW/aurutils [4]: https://github.com/AladW/aurutils
[5]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -8,11 +8,11 @@
# function pacman-list-disowned { # function pacman-list-disowned {
local tmp="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pacman-disowned-$$" local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$"
local db="$tmp/db" local db="$tmp/db"
local fs="$tmp/fs" local fs="$tmp/fs"
mkdir -p "$tmp" mkdir "$tmp"
trap 'rm -rf "$tmp"' EXIT trap 'rm -rf "$tmp"' EXIT
pacman --quiet --query --list | sort --unique > "$db" pacman --quiet --query --list | sort --unique > "$db"

View File

@ -1,16 +1,18 @@
# Perl Perl
====
Enables local [Perl][1] module installation on macOS and defines aliases. Enables local [Perl][1] module installation on Mac OS X and defines aliases.
## Local Module Installation Local Module Installation
-------------------------
Perl versions older than 5.14 do not support the local installation of Perl 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 modules natively. This module allows for local installation of Perl modules on
macOS in _`~/Library/Perl/5.12`_ by altering the environment. Mac OS X in *~/Library/Perl/5.12* by altering the environment.
### Usage ### Usage
For Perl versions older than 5.14, install _`local::lib`_. For Perl versions older than 5.14, install *local::lib*.
```console ```console
curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz
@ -20,25 +22,28 @@ perl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12
make && make test && make install make && make test && make install
``` ```
Install _cpanminus_: Install *cpanminus*:
```console ```console
curl -L http://cpanmin.us | perl - --self-upgrade curl -L http://cpanmin.us | perl - --self-upgrade
``` ```
## Perlbrew Perlbrew
--------
An alternative to the above is to use [Perlbrew][2], which allows for the An alternative to the above is to use [Perlbrew][2], which allows for the
management of multiple, isolated Perl installations in the home directory. management of multiple, isolated Perl installations in the home directory.
## plenv plenv
-----
Yet another alternative is [_plenv_][3]. This is inspired from _rbenv_ and Yet another alternative is [plenv][3]. This is inspired from rbenv and enables
enables switching between multiple binary installations. switching between multiple binary installations.
The subcommands of _plenv_ is similar with _rbenv_. The subcommands of plenv is similar with rbenv.
## Aliases Aliases
-------
### General ### General
@ -46,7 +51,7 @@ The subcommands of _plenv_ is similar with _rbenv_.
- `pld` looks up Perl documentation (`perldoc`). - `pld` looks up Perl documentation (`perldoc`).
- `ple` executes a one line program in a loop (`perl -wlne`). - `ple` executes a one line program in a loop (`perl -wlne`).
### Perlbrew (plb) ### Perlbrew
- `plb` manages Perl environments. - `plb` manages Perl environments.
- `plba` lists available Perl versions. - `plba` lists available Perl versions.
@ -58,7 +63,7 @@ The subcommands of _plenv_ is similar with _rbenv_.
- `plbu` uninstalls a Perl version. - `plbu` uninstalls a Perl version.
- `plbx` temporarily sets the Perl version to use. - `plbx` temporarily sets the Perl version to use.
### plenv (plv) ### plenv
- `plv` manages Perl environments. - `plv` manages Perl environments.
- `plvc` List all available plenv commands. - `plvc` List all available plenv commands.
@ -76,12 +81,14 @@ The subcommands of _plenv_ is similar with _rbenv_.
- `plvM` Migrate cpan modules from other version. - `plvM` Migrate cpan modules from other version.
- `plvI` Install cpanm. - `plvI` Install cpanm.
## Functions Functions
---------
- `perl-info` exposes information about the Perl environment via the - `perl-info` exposes information about the Perl environment via the
`$perl_info` associative array. `$perl_info` associative array.
## Theming Theming
-------
To display the name of the current Perl version in a prompt, define the To display the name of the current Perl version in a prompt, define the
following style in the `prompt_name_setup` function. following style in the `prompt_name_setup` function.
@ -94,13 +101,14 @@ zstyle ':prezto:module:perl:info:version' format 'version:%v'
Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call
`perl-info` in the `prompt_name_precmd` hook function. `perl-info` in the `prompt_name_precmd` hook function.
## Authors Authors
-------
_The authors of this module should be contacted via the [issue tracker][4]._ *The authors of this module should be contacted via the [issue tracker][4].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://www.perl.org [1]: http://www.perl.org
[2]: https://perlbrew.pl [2]: http://perlbrew.pl
[3]: https://github.com/tokuhirom/plenv [3]: https://github.com/tokuhirom/plenv
[4]: https://github.com/sorin-ionescu/prezto/issues [4]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,5 +1,5 @@
# #
# Enables local Perl module installation on macOS and defines aliases. # Enables local Perl module installation on Mac OS X and defines aliases.
# #
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
@ -10,9 +10,6 @@ if (( ! $+commands[perl] )); then
return 1 return 1
fi fi
# Load dependencies.
pmodload 'helper'
# #
# Load Perlbrew or plenv # Load Perlbrew or plenv
# #
@ -40,14 +37,13 @@ fi
# Local Module Installation # Local Module Installation
# #
if is-darwin; then if [[ "$OSTYPE" == darwin* ]]; then
# Perl is slow; cache its output. # Perl is slow; cache its output.
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/perl-cache.zsh" cache_file="${TMPDIR:-/tmp}/prezto-perl-cache.$UID.zsh"
perl_path="$HOME/Library/Perl/5.12" perl_path="$HOME/Library/Perl/5.12"
if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then
if [[ "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" || ! -s "$cache_file" ]]; then if [[ ! -s "$cache_file" ]]; then
mkdir -p "$cache_file:h"
perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file" perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file"
fi fi

View File

@ -1,24 +1,26 @@
# Prompt Prompt
======
Loads prompt [themes][1]. Loads prompt [themes][1].
## Settings Settings
--------
### Prompt Theme ### Prompt Theme
To select a prompt theme, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, To select a prompt theme, add the following to *zpreztorc*, and replace **name**
and replace `'<name>'` with the name of the theme you wish to load. Setting it with the name of the theme you wish to load. Setting it to **random** will load
to `'random'` will load a random theme every time. a random theme.
```sh ```sh
zstyle ':prezto:module:prompt' theme '<name>' zstyle ':prezto:module:prompt' theme 'name'
``` ```
### Prompt Display Length ### Prompt Display Length
To change working directory prompt display length from 'short', set the To change working directory prompt display length from 'short', set the
following to 'long' (without `~` expansion) or 'full' (with `~` expansion) in following to 'long' (without `~` expansion) or 'full' (with `~` expansion)
_`${ZDOTDIR:-$HOME}/.zpreztorc`_. in *zpreztorc*.
```sh ```sh
zstyle ':prezto:module:prompt' pwd-length 'short' zstyle ':prezto:module:prompt' pwd-length 'short'
@ -33,29 +35,14 @@ this can be disabled with the following snippet.
zstyle ':prezto:module:prompt' show-return-val 'no' zstyle ':prezto:module:prompt' show-return-val 'no'
``` ```
## Theming Theming
-------
A prompt theme is an autoloadable function file with a special name, A prompt theme is an autoloadable function file with a special name,
`prompt_name_setup`, placed anywhere in `$fpath`, but for the purpose of this `prompt_name_setup`, placed anywhere in `$fpath`, but for the purpose of this
project, themes **should** be placed in the _modules/prompt/functions_ project, themes **should** be placed in the *modules/prompt/functions*
directory. directory.
### Required Variables
To ensure that your function works with the editor-info module you'll need to
set the following variable in _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
```
This is to ensure compatibility with outside prompts, while allowing prezto
and prezto-compatible prompts to take full advantage of the editor module.
This should be set in the `prompt_name_setup` function after you've added
any additional hooks with `add-zsh-hook precmd prompt_name_precmd`. See below
for additional information about functions and hooks.
### Theme Functions ### Theme Functions
There are three theme functions, a setup function, a help function, and There are three theme functions, a setup function, a help function, and
@ -119,7 +106,7 @@ function prompt_name_preview {
### Hook Functions ### Hook Functions
There are many Zsh [hook][2] functions, but mostly the _precmd_ hook will be There are many Zsh [hook][2] functions, but mostly the *precmd* hook will be
used. used.
#### `prompt_name_precmd` #### `prompt_name_precmd`
@ -131,8 +118,7 @@ When calling functions to get information to display in a prompt, do not assume
that all the dependencies have been loaded. Always check for the availability of that all the dependencies have been loaded. Always check for the availability of
a function before you calling it. a function before you calling it.
**Do not register hook functions. They will be automatically registered by the **Do not register hook functions. They will be registered by the `prompt` function.**
`prompt` function.**
The most basic example of this function can be seen below. The most basic example of this function can be seen below.
@ -144,9 +130,10 @@ function prompt_name_precmd {
} }
``` ```
## Troubleshooting Troubleshooting
---------------
### Fonts aren't displaying properly ### Fonts aren't displaying properly.
On most systems, themes which use special characters need to have a patched font On most systems, themes which use special characters need to have a patched font
installed and configured properly. installed and configured properly.
@ -154,14 +141,16 @@ installed and configured properly.
Powerline provides some information on [terminal support][4] and [how to install Powerline provides some information on [terminal support][4] and [how to install
patched fonts][5] which should fix most font issues. patched fonts][5] which should fix most font issues.
## Authors
_The authors of this module should be contacted via the [issue tracker][3]._ Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
- [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes [1]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes
[2]: https://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions [2]: http://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions
[3]: https://github.com/sorin-ionescu/prezto/issues [3]: https://github.com/sorin-ionescu/prezto/issues
[4]: https://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements [4]: http://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements
[5]: https://powerline.readthedocs.io/en/latest/installation.html#fonts-installation [5]: http://powerline.readthedocs.io/en/latest/installation.html#fonts-installation

View File

@ -28,4 +28,3 @@ unset current_pwd
print "$ret_directory" print "$ret_directory"
# } # }
# vim: ft=zsh

View File

@ -9,7 +9,7 @@
# - The prompt is prefixed by a character sequence of your choice. # - The prompt is prefixed by a character sequence of your choice.
# - Only displays the current directory instead of the full path. # - Only displays the current directory instead of the full path.
# - Displays the current branch when in a git project (this requires loading # - Displays the current branch when in a git project (this requires loading
# the git module before prompt in ${ZDOTDIR:-$HOME}/.zpreztorc). # the git module before prompt in ~/.zpreztorc).
# - Displays a character at the end of the prompt when in a git project with # - Displays a character at the end of the prompt when in a git project with
# "dirty" files. # "dirty" files.
# #
@ -17,7 +17,7 @@
# This prompt's prefix symbol and colors are customizable: # This prompt's prefix symbol and colors are customizable:
# prompt cloud [<symbol>] [<color1>] [<color2>] # prompt cloud [<symbol>] [<color1>] [<color2>]
# #
# In ${ZDOTDIR:-$HOME}/.zpreztorc: # In ~/.zpreztorc:
# zstyle ':prezto:module:prompt' theme 'cloud' \ # zstyle ':prezto:module:prompt' theme 'cloud' \
# ['<symbol>'] \ # ['<symbol>'] \
# ['<color1>'] \ # ['<color1>'] \
@ -53,7 +53,7 @@ This prompt's prefix symbol and colors are customizable:
prompt cloud [<symbol>] [<color1>] [<color2>] prompt cloud [<symbol>] [<color1>] [<color2>]
In ${ZDOTDIR:-$HOME}/.zpreztorc: In ~/.zpreztorc:
zstyle ':prezto:module:prompt' theme 'cloud' ['<symbol>'] ['<color1>'] ['<color2>'] zstyle ':prezto:module:prompt' theme 'cloud' ['<symbol>'] ['<color1>'] ['<color2>']
If these options are not provided, the symbol defaults to ☁ with colors cyan If these options are not provided, the symbol defaults to ☁ with colors cyan
@ -104,9 +104,6 @@ function prompt_cloud_setup {
# Add hook for calling git-info before each command. # Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_cloud_precmd add-zsh-hook precmd prompt_cloud_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set git-info parameters. # Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f" zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f"
@ -122,4 +119,3 @@ function prompt_cloud_setup {
} }
prompt_cloud_setup "$@" prompt_cloud_setup "$@"
# vim: ft=zsh

View File

@ -27,11 +27,6 @@ prompt_damoekri_precmd() {
if (( $+functions[ruby-info] )); then if (( $+functions[ruby-info] )); then
ruby-info ruby-info
fi fi
# Get Openstack tenant information.
if (( $+functions[os-info] )); then
os-info
fi
} }
function prompt_damoekri_setup { function prompt_damoekri_setup {
@ -45,9 +40,6 @@ function prompt_damoekri_setup {
# Add hook for calling git-info and ruby-info before each command. # Add hook for calling git-info and ruby-info before each command.
add-zsh-hook precmd prompt_damoekri_precmd add-zsh-hook precmd prompt_damoekri_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters. # Set editor-info parameters.
zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f' zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f'
@ -65,13 +57,9 @@ function prompt_damoekri_setup {
# Set ruby-info parameters. # Set ruby-info parameters.
zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f' zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f'
# Set openstack tenant info
zstyle ':prezto:module:openstack:info:tenant' format '%s'
# Define prompts. # Define prompts.
PROMPT='${os_info:+${os_info[tenant]} }%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} ' PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} '
RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}' RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}'
} }
prompt_damoekri_setup "$@" prompt_damoekri_setup "$@"
# vim: ft=zsh

View File

@ -47,9 +47,6 @@ function prompt_giddie_setup {
# Add hook to set up prompt parameters before each command. # Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_giddie_precmd add-zsh-hook precmd prompt_giddie_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters. # Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f' zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f' zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f'
@ -77,4 +74,3 @@ function prompt_giddie_setup {
} }
prompt_giddie_setup "$@" prompt_giddie_setup "$@"
# vim: ft=zsh

View File

@ -40,9 +40,6 @@ function prompt_kylewest_setup {
# Add hook for calling git-info before each command. # Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_kylewest_precmd add-zsh-hook precmd prompt_kylewest_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set editor-info parameters. # Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}%f%b" zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}%f%b"
@ -66,4 +63,3 @@ function prompt_kylewest_setup {
} }
prompt_kylewest_setup "$@" prompt_kylewest_setup "$@"
# vim: ft=zsh

View File

@ -32,9 +32,6 @@ function prompt_minimal_setup {
# Add hook for calling vcs_info before each command. # Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_minimal_precmd add-zsh-hook precmd prompt_minimal_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Set vcs_info parameters. # Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
@ -50,14 +47,4 @@ function prompt_minimal_setup {
RPROMPT='' RPROMPT=''
} }
function prompt_minimal_preview {
local +h PROMPT=''
local +h RPROMPT=''
local +h SPROMPT=''
editor-info 2> /dev/null
prompt_preview_theme 'minimal'
}
prompt_minimal_setup "$@" prompt_minimal_setup "$@"
# vim: ft=zsh

View File

@ -35,9 +35,6 @@ function prompt_nicoulaj_setup {
# Add hook for calling vcs_info before each command. # Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_nicoulaj_precmd add-zsh-hook precmd prompt_nicoulaj_precmd
# Tell prezto we can manage this prompt
zstyle ':prezto:module:prompt' managed 'yes'
# Customizable parameters. # Customizable parameters.
local max_path_chars=30 local max_path_chars=30
local user_char='' local user_char=''
@ -61,4 +58,3 @@ function prompt_nicoulaj_setup {
} }
prompt_nicoulaj_setup "$@" prompt_nicoulaj_setup "$@"
# vim: ft=zsh

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