diff --git a/.gitmodules b/.gitmodules
index 051f2633f0..301ae41f09 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -16,7 +16,7 @@
[submodule "modules/prompt/external/agnoster"]
path = modules/prompt/external/agnoster
url = https://github.com/agnoster/agnoster-zsh-theme.git
-[submodule "modules/prompt/functions/pure"]
+[submodule "modules/prompt/external/pure"]
path = modules/prompt/external/pure
url = https://github.com/sindresorhus/pure.git
[submodule "modules/fasd/external"]
@@ -25,6 +25,7 @@
[submodule "modules/prompt/external/async"]
path = modules/prompt/external/async
url = https://github.com/mafredri/zsh-async.git
-[submodule "modules/prompt/external/powerlevel9k"]
- path = modules/prompt/external/powerlevel9k
- url = https://github.com/bhilburn/powerlevel9k.git
+[submodule "modules/prompt/external/powerlevel10k"]
+ path = modules/prompt/external/powerlevel10k
+ url = https://github.com/romkatv/powerlevel10k.git
+ shallow = true
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f4dc0d6160..6bcb36ba30 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,42 +1,41 @@
-Contributing
-------------
+# Contributing
This project would not exist without all of its users and [contributors][1].
If you have ideas on how to make the configuration easier to maintain or
improve its performance, do not hesitate to fork and send pull requests.
-### Issue Reporting
+## Issue Reporting
- - Check that the issue has not already been reported.
- - Check that the issue has not already been fixed in the latest code.
- - Open an issue with a clear title and description in grammatically correct,
- complete sentences.
+- Check that the issue has not already been reported.
+- Check that the issue has not already been fixed in the latest code.
+- Open an issue with a clear title and description in grammatically correct,
+ complete sentences.
-### Pull Request
+## Pull Request
- - Read [how to properly contribute to open source projects on GitHub][2].
- - Use a topic branch to easily amend a pull request later, if necessary.
- - Write [good commit messages][3].
- - Squash commits on the topic branch before opening a pull request.
- - Use the same coding style and spacing.
- - Open a [pull request][4] that relates to but one subject with a clear
- title and description in grammatically correct, complete sentences.
+- Read [how to properly contribute to open source projects on GitHub][2].
+- Use a topic branch to easily amend a pull request later, if necessary.
+- Write [good commit messages][3].
+- Squash commits on the topic branch before opening a pull request.
+- Use the same coding style and spacing.
+- Open a [pull request][4] that relates to but one subject with a clear title
+ and description in grammatically correct, complete sentences.
-#### Code Style
+### Code Style
This project follows the [Google Shell Style Guide][5] when possible. However,
there are a number of additional things to keep in mind.
- - Local variables should be used whenever possible.
- - Prefer `zstyle` over environment variables for configuration.
- - Prefer (( ... )) over [[ ... ]] for arithmetic expression.
- - Use the function keyword to define functions.
- - The 80 character hard limit can be waived for readability.
+- Local variables should be used whenever possible.
+- Prefer `zstyle` over environment variables for configuration.
+- Prefer (( ... )) over [[ ... ]] for arithmetic expression.
+- Use the function keyword to define functions.
+- The 80 character hard limit can be waived for readability.
-#### Using an Alternative zprezto Directory
+### Using an Alternative *zprezto* Directory
-To work on zprezto without messing with your current configuration:
+To work on Prezto without affecting your current configuration:
```sh
mkdir devel-zprezto
@@ -52,24 +51,24 @@ done
Then to start zsh in this development environment you will run:
-```sh
+```console
ZDOTDIR=/path/to/devel-zprezto zsh
```
-#### Modules
+### Modules
- - A *README.md* must be present.
- - Large functions must be placed in a *functions* directory.
- - Functions that take arguments must have completion.
+- A *README.md* must be present.
+- Large functions must be placed in a *functions* directory.
+- Functions that take arguments must have completion.
-#### Themes
+### Themes
- - A screenshots section must be present in the file header.
- - The pull request description must have [embedded screenshots][6].
+- A screenshots section must be present in the file header.
+- The pull request description must have [embedded screenshots][6].
[1]: https://github.com/sorin-ionescu/prezto/contributors
-[2]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request
+[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request
[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[4]: https://help.github.com/articles/using-pull-requests
[5]: https://google.github.io/styleguide/shell.xml
-[6]: http://daringfireball.net/projects/markdown/syntax#img
+[6]: https://github.github.com/gfm/#images
diff --git a/README.md b/README.md
index 18bcfcce4e..40163fa8f6 100644
--- a/README.md
+++ b/README.md
@@ -1,131 +1,160 @@
-Prezto — Instantly Awesome Zsh
-==============================
+# Prezto — Instantly Awesome Zsh
Prezto is the configuration framework for [Zsh][1]; it enriches the command line
interface environment with sane defaults, aliases, functions, auto completion,
and prompt themes.
-Installation
-------------
+## Installation
+
+### Manual
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:
+
+ ```console
+ zsh
+ ```
+
+02. Clone the repository:
+
+ ```console
+ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
+ ```
+
+
+ Optional: Installing in $XDG_CONFIG_HOME
+
+ 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:
- 1. Launch Zsh:
+ ```console
+ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto"
+ ```
- ```console
- zsh
- ```
+ - Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`$HOME/.zshenv`_:
- 2. Clone the repository:
+ ```sh
+ export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}"
+ [[ -d $XDG_CONFIG_HOME/zsh ]] && export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+ source "$ZDOTDIR/.zshenv"
+ ```
- ```console
- git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
- ```
+
- 3. Create a new Zsh configuration by copying the Zsh configuration files
- provided:
+03. Create a new Zsh configuration by copying/linking the Zsh configuration
+ files provided:
- ```sh
- setopt EXTENDED_GLOB
- for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
- ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
- done
- ```
+ ```console
+ setopt EXTENDED_GLOB
+ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
+ ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
+ done
+ ```
- Note: If you already have any of the given config files, ln will error. In
- simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
- the bottom of your `.zshrc` to load prezto but keep your config intact. For
- more complicated setups, it is recommended that you back up your original
- configs and replace them with the provided prezto runcoms.
+ **Note:** If you already have any of the given configuration files, `ln` in
+ the above operation will cause an error. In simple cases, you can load
+ Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to
+ the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your
+ Zsh configuration intact. For more complicated setups, we recommend that you
+ back up your original configs and replace them with the provided Prezto
+ [_`runcoms`_][10].
- 4. Set Zsh as your default shell:
+04. Set Zsh as your default shell:
- ```console
- chsh -s /bin/zsh
- ```
+ ```console
+ chsh -s /bin/zsh
+ ```
- 5. Open a new Zsh terminal window or tab.
+05. Open a new Zsh terminal window or tab.
### Troubleshooting
-If you are not able to find certain commands after switching to *Prezto*,
-modify the `PATH` variable in *~/.zprofile* then open a new Zsh terminal
-window or tab.
+If you are not able to find certain commands after switching to Prezto, modify
+the `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh
+terminal window or tab.
-Updating
---------
+## Updating
-Run `zprezto-update` to automatically check if there is an update to zprezto.
-If there are no file conflicts, zprezto and its submodules will be
-automatically updated. If there are conflicts you will instructed to go into
-the `$ZPREZTODIR` directory and resolve them yourself.
+Run `zprezto-update` to automatically check if there is an update to Prezto.
+If there are no file conflicts, Prezto and its submodules will be automatically
+updated. If there are conflicts you will be instructed to go into the
+`$ZPREZTODIR` directory and resolve them yourself.
To pull the latest changes and update submodules manually:
```console
cd $ZPREZTODIR
git pull
+git submodule sync --recursive
git submodule update --init --recursive
```
-Usage
------
+## Usage
-Prezto has many features disabled by default. Read the source code and
-accompanying README files to learn of what is available.
+Prezto has many features disabled by default. Read the source code and the
+accompanying README files to learn about what is available.
### Modules
- 1. Browse */modules* to see what is available.
- 2. Load the modules you need in *~/.zpreztorc* then open a new Zsh terminal
- window or tab.
+01. Browse [_`modules`_][9] to see what is available.
+02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open
+ a new Zsh terminal window or tab.
### Themes
- 1. For a list of themes, type `prompt -l`.
- 2. To preview a theme, type `prompt -p name`.
- 3. Load the theme you like in *~/.zpreztorc* then open a new Zsh terminal
- window or tab.
+01. For a list of themes, type `prompt -l`.
+02. To preview a theme, type `prompt -p name`.
+03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then
+ open a new Zsh terminal window or tab.
- ![sorin theme][2]
+ ![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
- 1. By default modules will be loaded from */modules* and */contrib*.
- 2. Additional module directories can be added to the
- `:prezto:load:pmodule-dirs` setting in *~/.zpreztorc*.
+01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_.
+02. Additional module directories can be added to the
+ `:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_.
- Note that module names need to be unique or they will cause an error when
- loading.
+ Note that module names need to be unique or they will cause an error when
+ loading.
- ```console
- zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
- ```
+ ```sh
+ zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
+ ```
-Customization
--------------
+## Customization
-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 [GitHub][4] to
-not lose them. If you do not know how to use Git, follow this [tutorial][5] and
-bookmark this [reference][6].
+The project is managed via [Git][3]. We highly recommend that you fork this
+project so that you can commit your changes and push them to your fork on
+[GitHub][4] to preserve them. If you do not know how to use Git, follow this
+[tutorial][5] and bookmark this [reference][6].
-Resources
----------
+## Resources
The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.
-License
--------
+## License
This project is licensed under the MIT License.
-[1]: http://www.zsh.org
-[2]: http://i.imgur.com/nrGV6pg.png "sorin theme"
-[3]: http://git-scm.com
+[1]: https://www.zsh.org
+[2]: https://i.imgur.com/nrGV6pg.png "sorin theme"
+[3]: https://git-scm.com
[4]: https://github.com
-[5]: http://gitimmersion.com
-[6]: http://gitref.org
+[5]: https://gitimmersion.com
+[6]: https://git.github.io/git-reference/
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
-[8]: http://grml.org/zsh/zsh-lovers.html
+[8]: https://grml.org/zsh/zsh-lovers.html
+[9]: modules#readme
+[10]: runcoms#readme
+[11]: modules/git#readme
diff --git a/init.zsh b/init.zsh
index 99254bdb58..099cab00f2 100644
--- a/init.zsh
+++ b/init.zsh
@@ -44,7 +44,8 @@ function zprezto-update {
printf "There is an update available. Trying to pull.\n\n"
if git pull --ff-only; then
printf "Syncing submodules\n"
- git submodule update --recursive
+ git submodule sync --recursive
+ git submodule update --init --recursive
return $?
else
cannot-fast-forward
@@ -98,18 +99,20 @@ function pmodload {
else
locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)})
if (( ${#locations} > 1 )); then
- print "$0: conflicting module locations: $locations"
- continue
+ if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then
+ print "$0: conflicting module locations: $locations"
+ continue
+ fi
elif (( ${#locations} < 1 )); then
print "$0: no such module: $pmodule"
continue
fi
# Grab the full path to this module
- pmodule_location=${locations[1]}
+ pmodule_location=${locations[-1]}
# Add functions to $fpath.
- fpath=(${pmodule_location}/functions(/FN) $fpath)
+ fpath=(${pmodule_location}/functions(-/FN) $fpath)
function {
local pfunction
@@ -170,7 +173,7 @@ if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then
fi
# Disable color and theme in dumb terminals.
-if [[ "$TERM" == 'dumb' ]]; then
+if [[ $TERM == dumb ]]; then
zstyle ':prezto:*:*' color 'no'
zstyle ':prezto:module:prompt' theme 'off'
fi
@@ -180,6 +183,9 @@ zstyle -a ':prezto:load' zmodule 'zmodules'
for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}"
unset zmodule{s,}
+# Load more specific 'run-help' function from $fpath.
+(( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help
+
# Autoload Zsh functions.
zstyle -a ':prezto:load' zfunction 'zfunctions'
for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction"
diff --git a/modules/README.md b/modules/README.md
index 1ff4e61225..cc9dfb1502 100644
--- a/modules/README.md
+++ b/modules/README.md
@@ -1,206 +1,166 @@
-Modules
-=======
+# Modules
-Load modules in *zpreztorc*. The order matters.
+Load modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters.
```sh
zstyle ':prezto:load' pmodule 'environment' 'terminal'
```
-Archive
--------
+## Archive
Provides functions to list and extract archives.
-Autosuggestions
----------------
+## Autosuggestions
Integrates zsh-autosuggestions into Prezto.
-Command-Not-Found
------------------
+## Command-Not-Found
Loads the command-not-found tool on macOS or Debian-based distributions.
-Completion
-----------
+## Completion
-Loads and configures tab completion and provides additional completions from
-the zsh-completions project.
+Loads and configures TAB completion and provides additional
+completions from the zsh-completions project.
-Directory
----------
+## Directory
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.
-Emacs
------
+## Emacs
Enables Emacs dependency management.
-Environment
------------
+## Environment
Sets general shell options and defines environment variables.
-Fasd
-----
+## Fasd
Maintains a frequently used file and directory list for fast access.
-Git
----
+## Git
Enhances the Git distributed version control system by providing aliases,
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.
-GPG
----
+## GPG
Provides for an easier use of GPG by setting up gpg-agent.
-Haskell
--------
+## Haskell
Enables local Haskell package installation.
-Helper
-------
+## Helper
Provides helper functions for developing modules.
-History
--------
+## History
Sets history options and defines history aliases.
-History Substring Search
-------------------------
+## History Substring Search
Integrates zsh-history-substring-search into Prezto.
-Homebrew
---------
+## Homebrew
Defines Homebrew aliases.
-MacPorts
---------
+## MacPorts
Defines MacPorts aliases and adds MacPorts directories to path variables.
-Node.js
--------
+## Node.js
Provides utility functions for Node.js and loads npm completion.
-OCaml
------
+## OCaml
Initializes OCaml package management.
-OSX
----
+## OSX
Defines macOS aliases and functions.
-Pacman
-------
+## Pacman
Provides aliases and functions for the Pacman package manager and frontends.
-Perl
-----
+## Perl
Enables local Perl module installation on macOS and defines alises.
-Prompt
-------
+## Prompt
Loads prompt themes.
-Python
-------
+## Python
Enables local Python and local Python package installation.
-Ruby on Rails
--------------
+## Ruby on Rails
Defines Ruby on Rails aliases.
-Rsync
------
+## Rsync
Defines rsync aliases.
-Ruby
-----
+## Ruby
Configures Ruby local gem installation, loads version managers, and defines
aliases.
-GNU Screen
-----------
+## GNU Screen
Defines GNU Screen aliases and provides for auto launching it at start-up.
-Spectrum
---------
+## Spectrum
Provides for easier use of 256 colors and effects.
-SSH
----
+## SSH
Provides for an easier use of SSH by setting up ssh-agent.
-Syntax Highlighting
--------------------
+## Syntax Highlighting
Integrates zsh-syntax-highlighting into Prezto.
-Terminal
---------
+## Terminal
Sets terminal window and tab titles.
-Tmux
-----
+## Tmux
Defines tmux aliases and provides for auto launching it at start-up.
-Utility
--------
+## Utility
Defines general aliases and functions.
-Wake-on-LAN
------------
+## Wake-on-LAN
This module provides a wrapper around the wakeonlan tool.
-Yum
----
+## Yum
Defines yum aliases.
diff --git a/modules/archive/README.md b/modules/archive/README.md
index 600ff15d0e..be637880bb 100644
--- a/modules/archive/README.md
+++ b/modules/archive/README.md
@@ -1,52 +1,53 @@
-Archive
-=======
+# Archive
Provides functions to create, list, and extract archives.
-Functions
----------
+This module must be loaded _before_ the [_`completion`_][1] module so that the
+provided completion definitions are loaded automatically by _`completion`_
+module.
- - `archive` creates an archive based on the provided archive name.
- - `lsarchive` lists the contents of one or more archives.
- - `unarchive` extracts the contents of one or more archives.
+## Functions
-Supported Formats
------------------
+- `archive` creates an archive based on the provided archive name.
+- `lsarchive` lists the contents of one or more archives.
+- `unarchive` extracts the contents of one or more archives.
+
+## Supported Formats
The following archive formats are supported when the required utilities are
installed:
- - *.tar.gz*, *.tgz* require `tar` (optionally `pigz`).
- - *.tar.bz2*, *.tbz* require `tar` (optionally `pbzip2`).
- - *.tar.xz*, *.txz* require `tar` with *xz* support.
- - *.tar.zma*, *.tlz* require `tar` with *lzma* support.
- - *.tar* requires `tar`.
- - *.gz* requires `gunzip`.
- - *.bz2* requires `bunzip2`.
- - *.xz* requires `unxz`.
- - *.lzma* requires `unlzma`.
- - *.Z* requires `uncompress`.
- - *.zip*, *.jar* requires `unzip`.
- - *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
- - *.7z* requires `7za`.
- - *.deb* requires `ar`, `tar`.
-
-Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them over
-their traditional counterparts, `gzip` and `bzip2` respectively, to take full advantage
-of all available CPU cores for compression.
-
-Alternatives
-------------
-
-Specifically on macOS, [The Unarchiver][1] provides a similar command line tool
+- _.tar.gz_, _.tgz_ require `tar` (optionally `pigz`).
+- _.tar.bz2_, _.tbz_ require `tar` (optionally `pbzip2`).
+- _.tar.xz_, _.txz_ require `tar` with _xz_ support.
+- _.tar.zma_, _.tlz_ require `tar` with _lzma_ support.
+- _.tar_ requires `tar`.
+- _.gz_ requires `gunzip`.
+- _.bz2_ requires `bunzip2`.
+- _.xz_ requires `unxz`.
+- _.lzma_ requires `unlzma`.
+- _.Z_ requires `uncompress`.
+- _.zip_, _.jar_ requires `unzip`.
+- _.rar_ requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
+- _.7z_ requires `7za`.
+- _.deb_ requires `ar`, `tar`.
+
+Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them
+over their traditional counterparts, `gzip` and `bzip2` respectively, to take
+full advantage of all available CPU cores for compression.
+
+## Alternatives
+
+Specifically on macOS, [The Unarchiver][2] provides a similar command line tool
which doesn't depend on a number of other programs being installed.
-Authors
--------
+## 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][3]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
- - [Matt Hamilton](https://github.com/Eriner)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Matt Hamilton](https://github.com/Eriner)
-[1]: https://theunarchiver.com/command-line
+[1]: ../completion#readme
+[2]: https://theunarchiver.com/command-line
+[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/archive/functions/_lsarchive b/modules/archive/functions/_lsarchive
index f2cee88125..bcbfbd69d8 100644
--- a/modules/archive/functions/_lsarchive
+++ b/modules/archive/functions/_lsarchive
@@ -10,4 +10,4 @@
_arguments \
'(-v --verbose)'{-v,--remove}'[verbose archive listing]' \
- "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z)(-.)'" && return 0
+ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z)(-.)'" && return 0
diff --git a/modules/archive/functions/_unarchive b/modules/archive/functions/_unarchive
index 90e32f1a38..6a940b1166 100644
--- a/modules/archive/functions/_unarchive
+++ b/modules/archive/functions/_unarchive
@@ -10,4 +10,4 @@
_arguments \
'(-r --remove)'{-r,--remove}'[remove archive]' \
- "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z|deb)(-.)'" && return 0
+ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z|deb)(-.)'" && return 0
diff --git a/modules/archive/functions/archive b/modules/archive/functions/archive
index 0e3bb616bf..b6f95231dc 100644
--- a/modules/archive/functions/archive
+++ b/modules/archive/functions/archive
@@ -1,4 +1,3 @@
-#!/usr/bin/env zsh
#
# Creates archive file
#
@@ -8,15 +7,15 @@
# function archive {
-local archive_name dir_to_archive _gzip_bin _bzip2_bin
+local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin
-if (( $# != 2 )); then
+if (( $# < 2 )); then
cat >&2 <&2
- return 1
-fi
+# let paths be handled by actual archive helper
+path_to_archive="${@:2}"
# here, we check for dropin/multi-threaded replacements
# this should eventually be moved to modules/archive/init.zsh
@@ -46,21 +39,32 @@ else
_gzip_bin='gzip'
fi
-if (( $+commands[pbzip2] )); then
+if (( $+commands[pixz] )); then
+ _xz_bin='pixz'
+else
+ _xz_bin='xz'
+fi
+
+if (( $+commands[lbzip2] )); then
+ _bzip2_bin='lbzip2'
+elif (( $+commands[pbzip2] )); then
_bzip2_bin='pbzip2'
else
_bzip2_bin='bzip2'
fi
+_zstd_bin='zstd'
+
case "${archive_name}" in
- (*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${dir_to_archive}" ;;
- (*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${dir_to_archive}" ;;
- (*.tar.xz|*.txz) tar -cvJf "${archive_name}" "${dir_to_archive}" ;;
- (*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${dir_to_archive}" ;;
- (*.tar) tar -cvf "${archive_name}" "${dir_to_archive}" ;;
- (*.zip|*.jar) zip -r "${archive_name}" "${dir_to_archive}" ;;
- (*.rar) rar a "${archive_name}" "${dir_to_archive}" ;;
- (*.7z) 7za a "${archive_name}" "${dir_to_archive}" ;;
+ (*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${=path_to_archive}" ;;
+ (*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${=path_to_archive}" ;;
+ (*.tar.xz|*.txz) tar -cvf "${archive_name}" --use-compress-program="${_xz_bin}" "${=path_to_archive}" ;;
+ (*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${=path_to_archive}" ;;
+ (*.tar.zst|*.tzst) tar -cvf "${archive_name}" --use-compress-program="${_zstd_bin}" "${=path_to_archive}" ;;
+ (*.tar) tar -cvf "${archive_name}" "${=path_to_archive}" ;;
+ (*.zip|*.jar) zip -r "${archive_name}" "${=path_to_archive}" ;;
+ (*.rar) rar a "${archive_name}" "${=path_to_archive}" ;;
+ (*.7z) 7za a "${archive_name}" "${=path_to_archive}" ;;
(*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;;
(*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;;
(*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;;
diff --git a/modules/archive/functions/lsarchive b/modules/archive/functions/lsarchive
index 7f892d1fcb..2506b87f0e 100644
--- a/modules/archive/functions/lsarchive
+++ b/modules/archive/functions/lsarchive
@@ -41,6 +41,7 @@ while (( $# > 0 )); do
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;;
+ (*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;;
(*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
(*.rar) ( (( $+commands[unrar] )) \
diff --git a/modules/archive/functions/unarchive b/modules/archive/functions/unarchive
index 53a24dd7a0..3e58b86759 100644
--- a/modules/archive/functions/unarchive
+++ b/modules/archive/functions/unarchive
@@ -12,6 +12,7 @@ local success
local file_name
local file_path
local extract_dir
+local _gzip_bin _bzip2_bin _xz_bin _zstd_bin
if (( $# == 0 )); then
cat >&2 < 0 )); do
if [[ ! -s "$1" ]]; then
print "$0: file not valid: $1" >&2
@@ -42,15 +68,14 @@ while (( $# > 0 )); do
file_path="${1:A}"
extract_dir="${file_name:r}"
case "$1:l" in
- (*.tar.gz|*.tgz) tar xvzf "$1" ;;
- (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
- (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
- && tar --xz -xvf "$1" \
- || xzcat "$1" | tar xvf - ;;
+ (*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;;
+ (*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;;
+ (*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \
- || lzcat "$1" | tar xvf - ;;
- (*.tar) tar xvf "$1" ;;
+ || lzcat "$1" | tar -xvf - ;;
+ (*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;;
+ (*.tar) tar -xvf "$1" ;;
(*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;;
diff --git a/modules/autosuggestions/README.md b/modules/autosuggestions/README.md
index c3e90a4916..8aedb31b0e 100644
--- a/modules/autosuggestions/README.md
+++ b/modules/autosuggestions/README.md
@@ -1,66 +1,62 @@
-Autosuggestions
----------------
-
-Integrates zsh-autosuggestions into Prezto.
-
-Autosuggestions
-===============
+# Autosuggestions
Integrates [zsh-autosuggestions][1] into Prezto, which implements the
[Fish shell][2]'s autosuggestions feature, where the user can type in any part
of a previously entered command and Zsh suggests commands as you type based on
history and completions.
-If this module is used in conjunction with the *syntax-highlighting* module,
-this module must be loaded **after** the *syntax-highlighting* module.
+If this module is used in conjunction with the [_`syntax-highlighting`_][3]
+module, this module must be loaded _after_ the _`syntax-highlighting`_ module.
+
+Additionally, if this module is used in conjunction with the
+[_`history-substring-search`_][4] module, this module must be loaded _after_ the
+_`history-substring-search`_ module as well.
-If this module is used in conjunction with the *history-substring-search*
-module, this module must be loaded **after** the *history-substring-search*
-module.
+To elaborate, the relative order of loading the modules would be
+_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.
-Contributors
-------------
+## Contributors
New features and bug fixes should be submitted to the [zsh-autosuggestions][1]
project according to its rules and regulations. This module will be synchronized
against it.
-Settings
---------
+## Settings
### Highlighting
-If colors are enabled, *autosuggestions* will automatically highlight
+If colors are enabled, _autosuggestions_ will automatically highlight
positive results.
To enable highlighting for this module only, add the following line to
-*zpreztorc*:
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:autosuggestions' color 'yes'
```
-To set the query found color, add the following line to *zpreztorc*:
+To set the query found color, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:autosuggestions:color' found ''
```
-Troubleshooting
----------------
+## Troubleshooting
### Autosuggestions from previous sessions don't show up
For autosuggestions from previous shell sessions to work, please make sure you
also have the `history` module enabled.
-Authors
--------
+## 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][5]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/tarruda/zsh-autosuggestions
-[2]: http://fishshell.com
-[3]: https://github.com/sorin-ionescu/prezto/issues
+[2]: https://fishshell.com
+[3]: ../syntax-highlighting#readme
+[4]: ../history-substring-search#readme
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external
index 15931f04ff..e52ee8ca55 160000
--- a/modules/autosuggestions/external
+++ b/modules/autosuggestions/external
@@ -1 +1 @@
-Subproject commit 15931f04ffac91a2f9a1a044b6b3ee4050751064
+Subproject commit e52ee8ca55bcc56a17c828767a3f98f22a68d4eb
diff --git a/modules/command-not-found/README.md b/modules/command-not-found/README.md
index 7775c92621..c433380d4e 100644
--- a/modules/command-not-found/README.md
+++ b/modules/command-not-found/README.md
@@ -1,21 +1,21 @@
-Command-Not-Found
-=================
+# Command-Not-Found
-When you try to use a command that is not available locally, searches
-the package manager for a package offering that command and suggests
-the proper install command.
+When you try to use a command that is not available locally, searches the
+package manager for a package offering that command and suggests the proper
+install command.
-Debian-based and Arch Linux-based distributions use the [`command-not-found`][1] tool.
+Debian and Arch Linux based distributions use the [`command-not-found`][1] tool.
-macOS uses Homebrew's [`command-not-found` clone][2]. Note that you also need to [follow the instructions to tap the `command-not-found` homebrew repository][3].
+macOS uses Homebrew's [`command-not-found` clone][2]. Note that unless you have
+a recent version of Homebrew installed, you might also need to tap the
+`command-not-found` Homebrew repository [following the instructions][3].
+## 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].*
-
- - [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
[2]: https://github.com/Homebrew/homebrew-command-not-found
diff --git a/modules/command-not-found/init.zsh b/modules/command-not-found/init.zsh
index 2c59a4b31d..cf8f64eaf0 100644
--- a/modules/command-not-found/init.zsh
+++ b/modules/command-not-found/init.zsh
@@ -7,14 +7,16 @@
#
# Load command-not-found on Debian-based distributions.
-if [[ -s '/etc/zsh_command_not_found' ]]; then
- source '/etc/zsh_command_not_found'
+if [[ -s /etc/zsh_command_not_found ]]; then
+ source /etc/zsh_command_not_found
# Load command-not-found on Arch Linux-based distributions.
-elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then
- source '/usr/share/doc/pkgfile/command-not-found.zsh'
-# Load command-not-found on macOS when homebrew tap is configured.
-elif [[ -s '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh' ]]; then
- source '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh'
+elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then
+ source /usr/share/doc/pkgfile/command-not-found.zsh
+# Load command-not-found on macOS when Homebrew tap is configured.
+elif (( $+commands[brew] )) \
+ && [[ -s ${hb_cnf_handler::="${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}/Library/Taps/homebrew/homebrew-command-not-found/handler.sh"} ]]; then
+ source "$hb_cnf_handler"
+ unset hb_cnf_handler
# Return if requirements are not found.
else
return 1
diff --git a/modules/completion/README.md b/modules/completion/README.md
index 7efb3d96a8..cdce9e518c 100644
--- a/modules/completion/README.md
+++ b/modules/completion/README.md
@@ -1,40 +1,55 @@
-Completion
-==========
+# Completion
-Loads and configures tab completion and provides additional completions from
-the [zsh-completions][1] project.
+Loads and configures TAB completion and provides additional
+completions from the [zsh-completions][1] project.
-This module must be loaded **after** the *utility* module.
+This module must be loaded late _after_ the _`utility`_ module and all other
+modules that provide completion definitions.
-Settings
---------
+## Options
-### Ignore */etc/hosts* Entries
+- `COMPLETE_IN_WORD` complete from both ends of a word.
+- `ALWAYS_TO_END` move cursor to the end of a completed word.
+- `PATH_DIRS` perform path search even on command names with slashes.
+- `AUTO_MENU` show completion menu on a successive TAB 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.
-To ignore certain entries from static */etc/hosts* for host completion, add the
-following lines in *zpreztorc* with the IP addresses of the hosts as they
-appear in */etc/hosts*. Both IP address and the corresponding hostname will be
-ignored during host completion. However, some of the entries ignored from
-*/etc/hosts* still might appear during completion because of their presence in
-*ssh* configuration or history).
+## Variables
+
+- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'.
+
+## Settings
+
+### Ignore _`/etc/hosts`_ Entries
+
+To ignore certain entries from static _`/etc/hosts`_ for host completion, add
+the following lines in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ with the IP addresses of
+the hosts as they appear in _`/etc/hosts`_. Both IP address and the associated
+hostname(s) will be ignored during host completion. However, some of the entries
+ignored from _`/etc/hosts`_ still might appear during completion because of
+their presence in _ssh_ configuration or history).
```sh
zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
- '0.0.0.0' '127.0.0.1'
+ '0.0.0.0' '127.0.0.1'
```
-Contributors
-------------
+## Contributors
-Completions should be submitted to the [zsh-completions][1] project according
-to its rules and regulations. This module will be synchronized against it.
+Completions should be submitted to the [zsh-completions][1] project according 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][2].*
+_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://github.com/zsh-users/zsh-completions
-[2]: https://github.com/sorin-ionescu/prezto/issues
+[2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles
+[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/completion/external b/modules/completion/external
index 2a30b05a5c..c160d09fdd 160000
--- a/modules/completion/external
+++ b/modules/completion/external
@@ -1 +1 @@
-Subproject commit 2a30b05a5cf724a2d1c4c140c302dbf93f6aa6f6
+Subproject commit c160d09fddd28ceb3af5cf80e9253af80e450d96
diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh
index e25a22a409..7f5de86282 100644
--- a/modules/completion/init.zsh
+++ b/modules/completion/init.zsh
@@ -7,53 +7,84 @@
#
# Return if requirements are not found.
-if [[ "$TERM" == 'dumb' ]]; then
+if [[ $TERM == dumb ]]; then
return 1
fi
# Add zsh-completions to $fpath.
-fpath=("${0:h}/external/src" $fpath)
+fpath=(${0:h}/external/src $fpath)
+
+# Add completion for keg-only brewed curl on macOS when available.
+if (( $+commands[brew] )); then
+ brew_prefix=${HOMEBREW_PREFIX:-${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}}
+ # $HOMEBREW_PREFIX defaults to $HOMEBREW_REPOSITORY but is explicitly set to
+ # /usr/local when $HOMEBREW_REPOSITORY is /usr/local/Homebrew.
+ # https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L66-L69
+ [[ $brew_prefix == '/usr/local/Homebrew' ]] && brew_prefix=$brew_prefix:h
+ fpath=($brew_prefix/opt/curl/share/zsh/site-functions(/N) $fpath)
+ unset brew_prefix
+fi
#
# Options
#
-setopt COMPLETE_IN_WORD # Complete from both ends of a word.
-setopt ALWAYS_TO_END # Move cursor to the end of a completed word.
-setopt PATH_DIRS # Perform path search even on command names with slashes.
-setopt AUTO_MENU # Show completion menu on a successive tab press.
-setopt AUTO_LIST # Automatically list choices on ambiguous completion.
-setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash.
-setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit
-unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
-unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
+setopt COMPLETE_IN_WORD # Complete from both ends of a word.
+setopt ALWAYS_TO_END # Move cursor to the end of a completed word.
+setopt PATH_DIRS # Perform path search even on command names with slashes.
+setopt AUTO_MENU # Show completion menu on a successive tab press.
+setopt AUTO_LIST # Automatically list choices on ambiguous completion.
+setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash.
+setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit.
+unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
+unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
+
+#
+# Variables
+#
+
+# Standard style used by default for 'list-colors'
+LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'}
+
+#
+# Initialization
+#
# Load and initialize the completion system ignoring insecure directories with a
# cache time of 20 hours, so it should almost always regenerate the first time a
# shell is opened each day.
autoload -Uz compinit
-_comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20))
-if (( $#_comp_files )); then
- compinit -i -C
+_comp_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump"
+# #q expands globs in conditional expressions
+if [[ $_comp_path(#qNmh-20) ]]; then
+ # -C (skip function check) implies -i (skip security check).
+ compinit -C -d "$_comp_path"
else
- compinit -i
+ mkdir -p "$_comp_path:h"
+ compinit -i -d "$_comp_path"
+ # Keep $_comp_path younger than cache time even if it isn't regenerated.
+ touch "$_comp_path"
fi
-unset _comp_files
+unset _comp_path
#
# Styles
#
+# Defaults.
+zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
+zstyle ':completion:*:default' list-prompt '%S%M matches%s'
+
# Use caching to make completion for commands such as dpkg and apt usable.
zstyle ':completion::complete:*' use-cache on
-zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
+zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache"
# Case-insensitive (all), partial-word, and then substring completion.
if zstyle -t ':prezto:module:completion:*' case-sensitive; then
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
setopt CASE_GLOB
else
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'm:{[:upper:]}={[:lower:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
unsetopt CASE_GLOB
fi
@@ -66,7 +97,6 @@ zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
-zstyle ':completion:*:default' list-prompt '%S%M matches%s'
zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' verbose yes
@@ -87,7 +117,6 @@ zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Directories
-zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
@@ -99,7 +128,7 @@ zstyle ':completion:*:history-words' remove-all-dups yes
zstyle ':completion:*:history-words' list false
zstyle ':completion:*:history-words' menu yes
-# Environmental Variables
+# Environment Variables
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
# Populate hostname completion. But allow ignoring custom entries from static
@@ -107,7 +136,7 @@ zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-va
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'
zstyle -e ':completion:*:hosts' hosts 'reply=(
- ${=${=${=${${(f)"$(cat {/etc/ssh/ssh_known_hosts,~/.ssh/known_hosts}(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
+ ${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*}
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
)'
diff --git a/modules/directory/README.md b/modules/directory/README.md
index 47c1bc201b..8603d9f62e 100644
--- a/modules/directory/README.md
+++ b/modules/directory/README.md
@@ -1,35 +1,37 @@
-Directory
-=========
+# Directory
Sets directory options and defines directory aliases.
-Options
--------
+## Options
- - `AUTO_CD` auto changes to a directory without typing `cd`.
- - `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.
- - `PUSHD_IGNORE_DUPS` does not store duplicates in the stack.
- - `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`.
- - `PUSHD_TO_HOME` pushes to the home directory when no argument is given.
- - `CDABLE_VARS` changes directory to a path stored in a variable.
- - `AUTO_NAME_DIRS` auto adds variable-stored paths to `~` list.
- - `MULTIOS` writes to multiple descriptors.
- - `EXTENDED_GLOB` uses extended globbing syntax.
- - `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and
- `>>!` to bypass.
+- `AUTO_CD` auto changes to a directory without typing `cd`.
+- `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.
+- `PUSHD_IGNORE_DUPS` does not store duplicates in the stack.
+- `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`.
+- `PUSHD_TO_HOME` pushes to the home directory when no argument is given.
+- `CDABLE_VARS` changes directory to a path stored in a variable.
+- `MULTIOS` writes to multiple descriptors.
+- `EXTENDED_GLOB` uses extended globbing syntax.
+- `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and
+ `>>!` to bypass.
-Aliases
--------
+## Aliases
- - `d` prints the contents of the directory stack.
- - `1 ... 9` changes the directory to the **n** previous one.
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
-Authors
--------
+```sh
+zstyle ':prezto:module:directory:alias' skip 'yes'
+```
-*The authors of this module should be contacted via the [issue tracker][1].*
+- `d` prints the contents of the directory stack.
+- `1 ... 9` changes the directory to the **n** previous one.
- - [James Cox](https://github.com/imajes)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][1]._
+
+- [James Cox](https://github.com/imajes)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/directory/init.zsh b/modules/directory/init.zsh
index 8abc1e2407..caf08d2ab0 100644
--- a/modules/directory/init.zsh
+++ b/modules/directory/init.zsh
@@ -25,5 +25,8 @@ unsetopt CLOBBER # Do not overwrite existing files with > and >>.
# Aliases
#
-alias d='dirs -v'
-for index ({1..9}) alias "$index"="cd +${index}"; unset index
+if ! zstyle -t ':prezto:module:directory:alias' skip; then
+ alias -- -='cd -'
+ alias d='dirs -v'
+ for index ({1..9}) alias "$index"="cd +${index}"; unset index
+fi
diff --git a/modules/dnf/README.md b/modules/dnf/README.md
index bbf1c923b6..91a35e813f 100644
--- a/modules/dnf/README.md
+++ b/modules/dnf/README.md
@@ -1,29 +1,25 @@
-DNF
-===
+# DNF
Defines [dnf][1] aliases.
-Aliases
--------
+## Aliases
- - `dnfc` removes package(s) and leaves.
- - `dnfi` installs package(s).
- - `dnfh` displays history.
- - `dnfl` lists packages.
- - `dnfL` lists installed packages.
- - `dnfq` displays package information.
- - `dnfr` removes package(s).
- - `dnfs` searches for a package.
- - `dnfu` updates packages.
- - `dnfU` upgrades packages.
+- `dnfc` removes package(s) and leaves.
+- `dnfi` installs package(s).
+- `dnfh` displays history.
+- `dnfl` lists packages.
+- `dnfL` lists installed packages.
+- `dnfq` displays package information.
+- `dnfr` removes package(s).
+- `dnfs` searches for a package.
+- `dnfu` updates packages.
+- `dnfU` upgrades packages.
-Authors
--------
+## 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
[2]: https://github.com/sorin-ionescu/prezto/issues
-
diff --git a/modules/docker/README.md b/modules/docker/README.md
index 335f77ad6a..f193dc62aa 100644
--- a/modules/docker/README.md
+++ b/modules/docker/README.md
@@ -1,4 +1,4 @@
-# ZSH Docker Aliases
+# Docker
Defines [Docker][1] aliases and functions.
@@ -21,14 +21,15 @@ Defines [Docker][1] aliases and functions.
- `dkli` Log in to a Docker registry
- `dklo` Log out from a Docker registry
- `dkls` is alias for `dkps`
-- `dkp` Pause all processes within one or more containers
+- `dkp` Pause all processes within one or more containers
- `dkP` Unpause all processes within one or more containers
- `dkpl` Pull an image or a repository from a registry
- `dkph` Push an image or a repository to a registry
- `dkps` List containers
- `dkpsa` List all containers (default lists just running)
- `dkr` Run a command in a new container
-- `dkR` Run an interactive command in a new container and automatically remove the container when it exits
+- `dkR` Run an interactive command in a new container and automatically remove
+ the container when it exits
- `dkRe` like `dkR` and set entry point to `/bin/bash`
- `dkrm` Remove one or more containers
- `dkrmi` Remove one or more images
@@ -39,13 +40,14 @@ Defines [Docker][1] aliases and functions.
- `dks` Start one or more stopped containers
- `dkS` Restart a container
- `dkss` Display a live stream of container(s) resource usage statistics
-- `dksv` Save one or more images to a tar archive (streamed to STDOUT by default)
+- `dksv` Save one or more images to a tar archive (streamed to STDOUT by
+ default)
- `dkt` Tag an image into a repository
- `dktop` Display the running processes of a container
- `dkup` Update configuration of one or more containers
- `dkV` Manage Docker volumes
- `dkv` Show the Docker version information
-- `dkw` Block until a container stops, then print its exit code
+- `dkw` Block until a container stops, then print its exit code
- `dkx` Stop a running container
#### container (C)
@@ -65,7 +67,8 @@ Defines [Docker][1] aliases and functions.
- `dkCS` Restart one or more containers
- `dkCrm` Remove one or more containers
- `dkCr` Run a command in a new container
-- `dkCR` Run an interactive command in a new container and automatically remove the container when it exits
+- `dkCR` Run an interactive command in a new container and automatically remove
+ the container when it exits
- `dkCRe` like `dkCR` and set entry point to `/bin/bash`
- `dkCs` Start one or more stopped containers
- `dkCss` Display a live stream of container(s) resource usage statistics
@@ -87,7 +90,8 @@ Defines [Docker][1] aliases and functions.
- `dkIpl` Pull an image or a repository from a registry
- `dkIph` Push an image or a repository to a registry
- `dkIrm` Remove one or more images
-- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by default)
+- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by
+ default)
- `dkIt` Tag an image into a repository
#### volume (V)
@@ -130,8 +134,10 @@ Defines [Docker][1] aliases and functions.
- `dkm` is short for `docker-machine`
- `dkma` Get or set the active machine
- `dkmcp` Copy files between machines
-- `dkmd` Set up the default machine ; alowing you to use `dkme` without arguments
-- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to toggle to staging)
+- `dkmd` Set up the default machine ; alowing you to use `dkme` without
+ arguments
+- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to
+ toggle to staging)
- `dkmin` Inspect information about a machine
- `dkmip` Get the IP address of a machine
- `dkmk` Kill a machine
@@ -171,8 +177,8 @@ Defines [Docker][1] aliases and functions.
- `dkcsc` Set number of containers for a service
- `dkcS` Restart services
- `dkcu` Create and start containers
-- `dkcU` Create and start containers in detached mode:
- Run containers in the background, print new container names
+- `dkcU` Create and start containers in detached mode: Run containers in the
+ background, print new container names
- `dkcV` Show the Docker-Compose version information
- `dkcx` Stop services
diff --git a/modules/docker/alias.zsh b/modules/docker/alias.zsh
index cdd9f7c825..12eb2542ba 100644
--- a/modules/docker/alias.zsh
+++ b/modules/docker/alias.zsh
@@ -152,26 +152,26 @@ alias dkmv='docker-machine version'
alias dkmx='docker-machine stop'
# Docker Compose (c)
-alias dkc='docker-compose'
-alias dkcb='docker-compose build'
-alias dkcB='docker-compose build --no-cache'
-alias dkcd='docker-compose down'
-alias dkce='docker-compose exec'
-alias dkck='docker-compose kill'
-alias dkcl='docker-compose logs'
-alias dkcls='docker-compose ps'
-alias dkcp='docker-compose pause'
-alias dkcP='docker-compose unpause'
-alias dkcpl='docker-compose pull'
-alias dkcph='docker-compose push'
-alias dkcps='docker-compose ps'
-alias dkcr='docker-compose run'
-alias dkcR='docker-compose run --rm'
-alias dkcrm='docker-compose rm'
-alias dkcs='docker-compose start'
-alias dkcsc='docker-compose scale'
-alias dkcS='docker-compose restart'
-alias dkcu='docker-compose up'
-alias dkcU='docker-compose up -d'
-alias dkcv='docker-compose version'
-alias dkcx='docker-compose stop'
+alias dkc='docker compose'
+alias dkcb='docker compose build'
+alias dkcB='docker compose build --no-cache'
+alias dkcd='docker compose down'
+alias dkce='docker compose exec'
+alias dkck='docker compose kill'
+alias dkcl='docker compose logs'
+alias dkcls='docker compose ps'
+alias dkcp='docker compose pause'
+alias dkcP='docker compose unpause'
+alias dkcpl='docker compose pull'
+alias dkcph='docker compose push'
+alias dkcps='docker compose ps'
+alias dkcr='docker compose run'
+alias dkcR='docker compose run --rm'
+alias dkcrm='docker compose rm'
+alias dkcs='docker compose start'
+alias dkcsc='docker compose scale'
+alias dkcS='docker compose restart'
+alias dkcu='docker compose up'
+alias dkcU='docker compose up -d'
+alias dkcv='docker compose version'
+alias dkcx='docker compose stop'
diff --git a/modules/dpkg/README.md b/modules/dpkg/README.md
index 6290c05afc..4df9230c7f 100644
--- a/modules/dpkg/README.md
+++ b/modules/dpkg/README.md
@@ -1,10 +1,8 @@
-Dpkg
-====
+# Dpkg
-Defines [dpkg][1] aliases and functions.
+Defines [_dpkg_][1] aliases and functions.
-Aliases
--------
+## Aliases
- `debc` cleans the cache.
- `debf` displays a file's package.
@@ -20,22 +18,20 @@ Aliases
- `deb-kclean` removes all kernel images and headers, except for the ones in
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.
-- `deb-history` displays dpkg history.
-- `deb-kbuild` makes a dpkg Linux kernel package.
+- `deb-history` displays `dpkg` history.
+- `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)
- - [Benjamin Boudreau](https://github.com/dreur)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Daniel Bolton](https://github.com/dbb)
+- [Benjamin Boudreau](https://github.com/dreur)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: http://wiki.debian.org/Teams/Dpkg
+[1]: https://wiki.debian.org/Teams/Dpkg
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/editor/README.md b/modules/editor/README.md
index c27e8642c0..a1c1852020 100644
--- a/modules/editor/README.md
+++ b/modules/editor/README.md
@@ -1,24 +1,41 @@
-Editor
-======
+# Editor
-Sets key bindings.
+Sets editor specific key bindings options and variables.
-Settings
---------
+## Options
+
+- `BEEP` beep on error in line editor.
+
+## Variables
+
+- `WORDCHARS` treat a given set of characters as part of a word.
+
+## Settings
+
+### Wordchars
+
+To change what characters are considered part of a word, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:editor' wordchars
+```
+
+Defaults to `*?_-.[]~&;!#$%^(){}<>`.
### Key bindings
-To enable key bindings, add the following to *zpreztorc*, and replace 'bindings'
-with 'emacs' or 'vi'.
+To enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_,
+and replace `''` with `'emacs'` or `'vi'`.
```sh
-zstyle ':prezto:module:editor' key-bindings 'bindings'
+zstyle ':prezto:module:editor' key-bindings ''
```
### Dot Expansion
To enable the auto conversion of .... to ../.., add the following to
-*zpreztorc*.
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:editor' dot-expansion 'yes'
@@ -26,15 +43,14 @@ zstyle ':prezto:module:editor' dot-expansion 'yes'
### PS Context
-To enable the prompt context to be set, add the following to your
-*zpreztorc*.
+To enable the prompt context to be set, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:editor' ps-context 'yes'
```
-Theming
--------
+## Theming
To indicate when the editor is in the primary keymap (emacs or viins), add
the following to your `theme_prompt_setup` function.
@@ -71,29 +87,27 @@ To indicate when the editor is completing, add the following to your
zstyle ':prezto:module:editor:info:completing' format '...'
```
-Then add `$editor_info[context]`, where context is *keymap*, *insert*, or
-*overwrite*, to `$PROMPT` or `$RPROMPT`.
+Then add `$editor_info[context]`, where context is _keymap_, _insert_, or
+_overwrite_, to `$PROMPT` or `$RPROMPT`.
-Convenience Functions
----------------------
+## Convenience Functions
### bindkey-all
-Provides a function `bindkey-all` which can be useful for checking how all of the
-keys are bound. Normal `bindkey` command will only list the keys bound for one
-keymap, which is not as useful if you want to grep through the output. The
-keymap's names go to stderr so when you grep through bindkey-all's output you
+Provides a function `bindkey-all` which can be useful for checking how all of
+the keys are bound. Normal `bindkey` command will only list the keys bound for
+one keymap, which is not as useful if you want to grep through the output. The
+keymap's names go to stderr so when you grep through `bindkey-all`'s output you
will still see the headings and can tell which keymap each binding goes to.
It will also pass through arguments so you can use bindkey-all to set bindings
-for all keymaps at once. If provided arguments it will *not* print out the
+for all keymaps at once. If provided arguments it will _not_ print out the
names of each of the keymaps, and just run the command for each keymap.
-Authors
--------
+## 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/oh-my-zsh/issues
+[1]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh
index 085947ef61..5798bc80dc 100644
--- a/modules/editor/init.zsh
+++ b/modules/editor/init.zsh
@@ -21,7 +21,8 @@ setopt BEEP # Beep on error in line editor.
#
# Treat these characters as part of a word.
-WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
+zstyle -s ':prezto:module:editor' wordchars 'WORDCHARS' \
+ || WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
# Use human-friendly identifiers.
zmodload zsh/terminfo
@@ -91,28 +92,32 @@ function bindkey-all {
# Exposes information about the Zsh Line Editor via the $editor_info associative
# array.
function editor-info {
- # Clean up previous $editor_info.
- unset editor_info
- typeset -gA editor_info
-
- if [[ "$KEYMAP" == 'vicmd' ]]; then
- zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY'
- editor_info[keymap]="$REPLY"
- else
- zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY'
- editor_info[keymap]="$REPLY"
-
- if [[ "$ZLE_STATE" == *overwrite* ]]; then
- zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY'
- editor_info[overwrite]="$REPLY"
+ # Ensure that we're going to set the editor-info for prompts that
+ # are prezto managed and/or compatible.
+ if zstyle -t ':prezto:module:prompt' managed; then
+ # Clean up previous $editor_info.
+ unset editor_info
+ typeset -gA editor_info
+
+ if [[ "$KEYMAP" == 'vicmd' ]]; then
+ zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY'
+ editor_info[keymap]="$REPLY"
else
- zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY'
- editor_info[overwrite]="$REPLY"
+ zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY'
+ editor_info[keymap]="$REPLY"
+
+ if [[ "$ZLE_STATE" == *overwrite* ]]; then
+ zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY'
+ editor_info[overwrite]="$REPLY"
+ else
+ zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY'
+ editor_info[overwrite]="$REPLY"
+ fi
fi
- fi
- unset REPLY
- zle zle-reset-prompt
+ unset REPLY
+ zle zle-reset-prompt
+ fi
}
zle -N editor-info
@@ -269,9 +274,11 @@ bindkey -d
# 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
-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
# Kill to the beginning of the line.
@@ -312,6 +319,7 @@ bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line
# Undo/Redo
bindkey -M vicmd "u" undo
+bindkey -M viins "$key_info[Control]_" undo
bindkey -M vicmd "$key_info[Control]R" redo
if (( $+widgets[history-incremental-pattern-search-backward] )); then
diff --git a/modules/emacs/README.md b/modules/emacs/README.md
index fa9a514b39..8cf7bfc84f 100644
--- a/modules/emacs/README.md
+++ b/modules/emacs/README.md
@@ -1,10 +1,8 @@
-Emacs
-=====
+# Emacs
Enables Emacs dependency management.
-Dependency management
----------------------
+## Dependency management
[Carton][1] installs and manages Emacs packages for Emacs package development
and Emacs configuration.
@@ -12,22 +10,27 @@ and Emacs configuration.
This module prepends the Carton directory to the path variable to enable the
execution of `carton`.
-Aliases
--------
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:emacs:alias' skip 'yes'
+```
### Carton
- - `cai` installs dependencies.
- - `cau` updates dependencies.
- - `caI` initializes the current directory for dependency management.
- - `cae` executes a command which correct dependencies.
+- `cai` installs dependencies.
+- `cau` updates dependencies.
+- `caI` initializes the current directory for dependency management.
+- `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)
[1]: https://github.com/rejeep/carton
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/emacs/init.zsh b/modules/emacs/init.zsh
index 3acc965c27..a53285ab1f 100644
--- a/modules/emacs/init.zsh
+++ b/modules/emacs/init.zsh
@@ -19,7 +19,9 @@ source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null
# Aliases
#
-alias cai='cask install'
-alias cau='cask update'
-alias caI='cask init'
-alias cae='cask exec'
+if ! zstyle -t ':prezto:module:emacs:alias' skip; then
+ alias cai='cask install'
+ alias cau='cask update'
+ alias caI='cask init'
+ alias cae='cask exec'
+fi
diff --git a/modules/environment/README.md b/modules/environment/README.md
index b0d579bb45..5243f26678 100644
--- a/modules/environment/README.md
+++ b/modules/environment/README.md
@@ -1,26 +1,52 @@
-Environment
-===========
+# Environment
Sets general shell options and defines environment variables.
This module must be loaded first.
-Environment Variables
----------------------
+## Contributors
-Contributors
-------------
+This module **MUST NOT** rely on any command that is not built in Zsh.
-This module **MUST NOT** rely on any command not built in Zsh.
+Non-interactive environment variables should be defined in
+[_`${ZDOTDIR:-$HOME}/.zshenv`_][1].
-Non-interactive environment variables should be defined in [`zshenv`][1].
+## Options
-Authors
--------
+### General
-*The authors of this module should be contacted via the [issue tracker][2].*
+- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with
+ the base character.
+- `INTERACTIVE_COMMENTS` enable comments in interactive shell.
+- `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
+- `MAIL_WARNING` don't print a warning message if a mail file has been accessed.
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+### Jobs
-[1]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv
+- `LONG_LIST_JOBS` list jobs in the long format by default.
+- `AUTO_RESUME` attempt to resume existing job before creating a new process.
+- `NOTIFY` report status of background jobs immediately.
+- `BG_NICE` don't run all background jobs at a lower priority.
+- `HUP` don't kill jobs on shell exit.
+- `CHECK_JOBS` don't report on jobs when shell exit.
+
+## Variables
+
+### Termcap
+
+- `LESS_TERMCAP_mb` begins blinking.
+- `LESS_TERMCAP_md` begins bold.
+- `LESS_TERMCAP_me` ends mode.
+- `LESS_TERMCAP_se` ends standout-mode.
+- `LESS_TERMCAP_so` begins standout-mode.
+- `LESS_TERMCAP_ue` ends underline.
+- `LESS_TERMCAP_us` begins underline.
+
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][2]._
+
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+
+[1]: ../../runcoms#zshenv
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh
index 4f3bbfe35a..9f49c088ab 100644
--- a/modules/environment/init.zsh
+++ b/modules/environment/init.zsh
@@ -14,15 +14,13 @@
# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic
# which is generally better than url-quote-magic so we load that when possible.
autoload -Uz is-at-least
-if [[ ${ZSH_VERSION} != 5.1.1 ]]; then
+if [[ $ZSH_VERSION != 5.1.1 && $TERM != dumb ]]; then
if is-at-least 5.2; then
autoload -Uz bracketed-paste-url-magic
zle -N bracketed-paste bracketed-paste-url-magic
- else
- if is-at-least 5.1; then
- autoload -Uz bracketed-paste-magic
- zle -N bracketed-paste bracketed-paste-magic
- fi
+ elif is-at-least 5.1; then
+ autoload -Uz bracketed-paste-magic
+ zle -N bracketed-paste bracketed-paste-magic
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
@@ -36,29 +34,33 @@ setopt COMBINING_CHARS # Combine zero-length punctuation characters (accent
# with the base character.
setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell.
setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'.
-unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed.
+unsetopt MAIL_WARNING # Don't print a warning message if a mail file has
+ # been accessed.
+
+# Allow mapping Ctrl+S and Ctrl+Q shortcuts
+[[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY
#
# Jobs
#
-setopt LONG_LIST_JOBS # List jobs in the long format by default.
-setopt AUTO_RESUME # Attempt to resume existing job before creating a new process.
-setopt NOTIFY # Report status of background jobs immediately.
-unsetopt BG_NICE # Don't run all background jobs at a lower priority.
-unsetopt HUP # Don't kill jobs on shell exit.
-unsetopt CHECK_JOBS # Don't report on jobs when shell exit.
+setopt LONG_LIST_JOBS # List jobs in the long format by default.
+setopt AUTO_RESUME # Attempt to resume existing job before creating a new process.
+setopt NOTIFY # Report status of background jobs immediately.
+unsetopt BG_NICE # Don't run all background jobs at a lower priority.
+unsetopt HUP # Don't kill jobs on shell exit.
+unsetopt CHECK_JOBS # Don't report on jobs when shell exit.
#
# Termcap
#
if zstyle -t ':prezto:environment:termcap' color; then
- export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking.
- export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold.
- export LESS_TERMCAP_me=$'\E[0m' # Ends mode.
- export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode.
- export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode.
- export LESS_TERMCAP_ue=$'\E[0m' # Ends underline.
- export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline.
+ export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking.
+ export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold.
+ export LESS_TERMCAP_me=$'\E[0m' # Ends mode.
+ export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode.
+ export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode.
+ export LESS_TERMCAP_ue=$'\E[0m' # Ends underline.
+ export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline.
fi
diff --git a/modules/fasd/README.md b/modules/fasd/README.md
index cb3fc20b01..04f9693a0b 100644
--- a/modules/fasd/README.md
+++ b/modules/fasd/README.md
@@ -1,44 +1,48 @@
-Fasd
-====
+# Fasd
[Fasd][1] is a command-line productivity booster, inspired by tools like
[autojump][2], [z][3] and [v][4], it offers quick access to files and
-directories by keeping track of files and directories that were previously
+directories by keeping track of files and directories that were previously
accessed.
-For completion to work, this module must be loaded **after** the *completion*
-module.
+For shell completion to work, this module must be loaded _after_ the
+[_`completion`_][5] module.
The Prezto Fasd configuration differs from the default. The default aliases have
been disabled.
-Installation
-------------
+## Installation
-`fasd` is bundled with prezto as a git submodule. Alternatively, you can manually install `fasd`.
-If a manual install is found, it will be used instead of the bundled version.
+`fasd` is bundled with prezto as a git submodule. Alternatively, you can
+manually install `fasd`. If a manual installation is found, it will be used
+instead of the bundled version.
-Aliases
--------
+## Aliases
- - `j` changes the current working directory interactively.
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
-Completion
-----------
+```sh
+zstyle ':prezto:module:fasd:alias' skip 'yes'
+```
-Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`,
-`,,d` at the end of a comma-separated query then hit tab.
+- `j` changes the current working directory interactively.
-Authors
--------
+## Completion
-*The authors of this module should be contacted via the [issue tracker][5].*
+Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`,
+`,,d` at the end of a comma-separated query then hit TAB.
- - [Wei Dai](https://github.com/clvv)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][6]._
+
+- [Wei Dai](https://github.com/clvv)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/clvv/fasd
[2]: https://github.com/joelthelion/autojump
[3]: https://github.com/rupa/z
[4]: https://github.com/rupa/v
-[5]: https://github.com/sorin-ionescu/prezto/issues
+[5]: ../completion#readme
+[6]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/fasd/init.zsh b/modules/fasd/init.zsh
index 37babd8e3e..bd142f80ce 100644
--- a/modules/fasd/init.zsh
+++ b/modules/fasd/init.zsh
@@ -19,7 +19,7 @@ fi
# Initialization
#
-cache_file="${TMPDIR:-/tmp}/prezto-fasd-cache.$UID.zsh"
+cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh"
if [[ "${commands[fasd]}" -nt "$cache_file" \
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|| ! -s "$cache_file" ]]; then
@@ -31,6 +31,7 @@ if [[ "${commands[fasd]}" -nt "$cache_file" \
init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)
fi
+ mkdir -p "$cache_file:h"
# Cache init code.
fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null
fi
@@ -52,5 +53,7 @@ function fasd_cd {
# Aliases
#
-# Changes the current working directory interactively.
-alias j='fasd_cd -i'
+if ! zstyle -t ':prezto:module:fasd:alias' skip; then
+ # Changes the current working directory interactively.
+ alias j='fasd_cd -i'
+fi
diff --git a/modules/git/README.md b/modules/git/README.md
index a497826267..fad57a117d 100644
--- a/modules/git/README.md
+++ b/modules/git/README.md
@@ -1,39 +1,45 @@
-Git
-===
+# Git
Enhances the [Git][1] distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
-Git **1.7.2** is the [minimum required version][7].
+This module must be loaded _before_ the [_`completion`_][13] module so that the
+provided completion definitions are loaded automatically by _`completion`_
+module.
-Settings
---------
+**Note:** Git **2.11** is the minimum required version for better
+[git-rev-list][7] and [git-submodule][14] support.
+
+## Settings
### Log
-The format of the [git-log][8] output is configurable via the following style,
-where context is *brief*, *oneline*, and *medium*, which will be passed to the
-`--pretty=format:` switch.
+To configure the format of the [git-log][8] output, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'brief'`,
+`'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:`
+switch.
```sh
-zstyle ':prezto:module:git:log:context' format ''
+zstyle ':prezto:module:git:log:context' format ''
```
### Status
-Retrieving the status of a repository with submodules can take a long time.
-Submodules may be ignored when they are *dirty*, *untracked*, *all*, or *none*.
+Retrieving the status of a repository with [git-submodule][9] can take a long
+time. To configure the submodules to ignore, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'dirty'`,
+`'untracked'`, `'all'`, or `'none'`.
```sh
-zstyle ':prezto:module:git:status:ignore' submodules 'all'
+zstyle ':prezto:module:git:status:ignore' submodules ''
```
This setting affects all aliases and functions that call `git-status`.
-Aliases
--------
+## Aliases
-Aliases are enabled by default. You can disable them with:
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:git:alias' skip 'yes'
@@ -41,284 +47,290 @@ zstyle ':prezto:module:git:alias' skip 'yes'
### Git
- - `g` is short for `git`.
-
-### Branch
-
- - `gb` lists, creates, renames, and deletes branches.
- - `gbc` creates a new branch.
- - `gbl` lists branches and their commits. (also `gbv`)
- - `gbL` lists all local and remote branches and their commits.
- - `gbr` renames a branch. (also `gbm`)
- - `gbR` renames a branch even if the new branch name already exists. (also
- `gbM`)
- - `gbs` lists branches and their commits with ancestry graphs.
- - `gbS` lists local and remote branches and their commits with ancestry
- graphs.
- - `gbV` lists branches with more verbose information about their commits.
- - `gbx` deletes a branch. (also `gbd`)
- - `gbX` deletes a branch irrespective of its merged status. (also `gbD`)
-
-
-### Commit
-
- - `gc` records changes to the repository.
- - `gca` stages all modified and deleted files.
- - `gcm` records changes to the repository with the given message.
- - `gcS` records changes to the repository. (Signed)
- - `gcSa` stages all modified and deleted files. (Signed)
- - `gcSm` records changes to the repository with the given message. (Signed) - `gco` checks out a branch or paths to work tree.
- - `gcam` stages all modified and deleted files, and records changes to the repository with the given message.
- - `gco` checks out a branch or paths to work tree.
- - `gcO` checks out hunks from the index or the tree interactively.
- - `gcf` amends the tip of the current branch using the same log message as *HEAD*.
- - `gcSf` amends the tip of the current branch using the same log message as *HEAD*. (Signed)
- - `gcF` amends the tip of the current branch.
- - `gcSF` amends the tip of the current branch. (Signed)
- - `gcp` applies changes introduced by existing commits.
- - `gcP` applies changes introduced by existing commits without committing.
- - `gcr` reverts existing commits by reverting patches and recording new
- commits.
- - `gcR` removes the *HEAD* commit.
- - `gcs` displays various types of objects.
- - `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
-
- - `gCl` lists unmerged files.
- - `gCa` adds unmerged file contents to the index.
- - `gCe` executes merge-tool on all unmerged file.
- - `gCo` checks out our changes for unmerged paths.
- - `gCO` checks out our changes for all unmerged paths.
- - `gCt` checks out their changes for unmerged paths.
- - `gCT` checks out their changes for all unmerged paths.
-
-### Data
-
- - `gd` displays information about files in the index and the work tree.
- - `gdc` lists cached files.
- - `gdx` lists deleted files.
- - `gdm` lists modified files.
- - `gdu` lists untracked files.
- - `gdk` lists killed files.
- - `gdi` lists ignored files.
-
-### Fetch
-
- - `gf` downloads objects and references from another repository.
- - `gfa` downloads objects and references from all remote repositories.
- - `gfc` clones a repository into a new directory.
- - `gfcr` clones a repository into a new directory including all submodules.
- - `gfm` fetches from and merges with another repository or local branch.
- - `gfr` fetches from and rebases on another repository or local branch.
-
-### Flow
-
- - `gFi` is short for `git flow init`
-
-#### Feature
-
- - `gFf` is short for `git flow feature`
- - `gFfl` is short for `git flow feature list`
- - `gFfs` is short for `git flow feature start`
- - `gFff` is short for `git flow feature finish`
- - `gFfp` is short for `git flow feature publish`
- - `gFft` is short for `git flow feature track`
- - `gFfd` is short for `git flow feature diff`
- - `gFfr` is short for `git flow feature rebase`
- - `gFfc` is short for `git flow feature checkout`
- - `gFfm` is short for `git flow feature pull`
- - `gFfx` is short for `git flow feature delete`
-
-#### Bugfix
-
- - `gFb` is short for `git flow bugfix`
- - `gFbl` is short for `git flow bugfix list`
- - `gFbs` is short for `git flow bugfix start`
- - `gFbf` is short for `git flow bugfix finish`
- - `gFbp` is short for `git flow bugfix publish`
- - `gFbt` is short for `git flow bugfix track`
- - `gFbd` is short for `git flow bugfix diff`
- - `gFbr` is short for `git flow bugfix rebase`
- - `gFbc` is short for `git flow bugfix checkout`
- - `gFbm` is short for `git flow bugfix pull`
- - `gFbx` is short for `git flow bugfix delete`
-
-#### Release
-
- - `gFl` is short for `git flow release`
- - `gFll` is short for `git flow release list`
- - `gFls` is short for `git flow release start`
- - `gFlf` is short for `git flow release finish`
- - `gFlp` is short for `git flow release publish`
- - `gFlt` is short for `git flow release track`
- - `gFld` is short for `git flow release diff`
- - `gFlr` is short for `git flow release rebase`
- - `gFlc` is short for `git flow release checkout`
- - `gFlm` is short for `git flow release pull`
- - `gFlx` is short for `git flow release delete`
-
-#### Hotfix
-
- - `gFh` is short for `git flow hotfix`
- - `gFhl` is short for `git flow hotfix list`
- - `gFhs` is short for `git flow hotfix start`
- - `gFhf` is short for `git flow hotfix finish`
- - `gFhp` is short for `git flow hotfix publish`
- - `gFht` is short for `git flow hotfix track`
- - `gFhd` is short for `git flow hotfix diff`
- - `gFhr` is short for `git flow hotfix rebase`
- - `gFhc` is short for `git flow hotfix checkout`
- - `gFhm` is short for `git flow hotfix pull`
- - `gFhx` is short for `git flow hotfix delete`
-
-#### Support
-
- - `gFs` is short for `git flow support`
- - `gFsl` is short for `git flow support list`
- - `gFss` is short for `git flow support start`
- - `gFsf` is short for `git flow support finish`
- - `gFsp` is short for `git flow support publish`
- - `gFst` is short for `git flow support track`
- - `gFsd` is short for `git flow support diff`
- - `gFsr` is short for `git flow support rebase`
- - `gFsc` is short for `git flow support checkout`
- - `gFsm` is short for `git flow support pull`
- - `gFsx` is short for `git flow support delete`
-
-### Grep
-
- - `gg` displays lines matching a pattern.
- - `ggi` displays lines matching a pattern ignoring case.
- - `ggl` lists files matching a pattern.
- - `ggL` lists files that are not matching a pattern.
- - `ggv` displays lines not matching a pattern.
- - `ggw` displays lines matching a pattern at word boundary.
-
-### Index
-
- - `gia` adds file contents to the index.
- - `giA` adds file contents to the index interactively.
- - `giu` adds file contents to the index (updates only known files).
- - `gid` displays changes between the index and a named commit (diff).
- - `giD` displays changes between the index and a named commit (word diff).
- - `gii` temporarily ignore differences in a given file.
- - `giI` unignore differences in a given file.
- - `gir` resets the current HEAD to the specified state.
- - `giR` resets the current index interactively.
- - `gix` removes files/directories from the index (recursively).
- - `giX` removes files/directories from the index (recursively and forced).
-
-### Log
-
- - `gl` displays the log.
- - `gls` displays the stats log.
- - `gld` displays the diff log.
- - `glo` displays the one line log.
- - `glg` displays the graph log.
- - `glb` displays the brief commit log.
- - `glc` displays the commit count for each contributor in descending order.
-
-### Merge
-
- - `gm` joins two or more development histories together.
- - `gmC` joins two or more development histories together but does not commit.
- - `gmF` joins two or more development histories together but does not commit
- generating a merge commit even if the merge resolved as a fast-forward.
- - `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
- - `gmt` runs the merge conflict resolution tools to resolve conflicts.
-
-### Push
-
- - `gp` updates remote refs along with associated objects.
- - `gpf` forcefully updates remote refs along with associated objects using the safer `--force-with-lease` option.
- - `gpF` forcefully updates remote refs along with associated objects using the riskier `--force` option.
- - `gpa` updates remote branches along with associated objects.
- - `gpA` updates remote branches and tags along with associated objects.
- - `gpt` updates remote tags along with associated objects.
- - `gpc` updates remote refs along with associated objects and adds *origin*
- as an upstream reference for the current branch.
- - `gpp` pulls and pushes from origin to origin.
-
-### Rebase
-
- - `gr` forward-ports local commits to the updated upstream head.
- - `gra` aborts the rebase.
- - `grc` continues the rebase after merge conflicts are resolved.
- - `gri` makes a list of commits to be rebased and opens the editor.
- - `grs` skips the current patch.
-
-### Remote
-
- - `gR` manages tracked repositories.
- - `gRl` lists remote names and their URLs.
- - `gRa` adds a new remote.
- - `gRx` removes a remote.
- - `gRm` renames a remote.
- - `gRu` fetches remotes updates.
- - `gRp` prunes all stale remote tracking branches.
- - `gRs` displays information about a given remote.
- - `gRb` opens a remote on [GitHub][3] in the default browser.
-
-### Stash
-
- - `gs` stashes the changes of the dirty working directory.
- - `gsa` applies the changes recorded in a stash to the working directory.
- - `gsx` drops a stashed state.
- - `gsX` drops all the stashed states.
- - `gsl` lists stashed states.
- - `gsL` lists dropped stashed states.
- - `gsd` displays changes between the stash and its original parent.
- - `gsp` removes and applies a single stashed state from the stash list.
- - `gsr` recovers a given stashed state.
- - `gss` stashes the changes of the dirty working directory, including untracked.
- - `gsS` stashes the changes of the dirty working directory interactively.
- - `gsw` stashes the changes of the dirty working directory retaining the index.
-
-### Submodule
-
- - `gS` initializes, updates, or inspects submodules.
- - `gSa` adds given a repository as a submodule.
- - `gSf` evaluates a shell command in each of checked out submodules.
- - `gSi` initializes submodules.
- - `gSI` initializes and clones submodules recursively.
- - `gSl` lists the commits of all submodules.
- - `gSm` moves a submodule.
- - `gSs` synchronizes submodules' remote URL to the value specified in
- .gitmodules.
- - `gSu` fetches and merges the latest changes for all submodule.
- - `gSx` removes a submodule.
-
-### Tag
-
- - `gt` lists tags or creates tag.
- - `gtl` lists tags matching pattern.
-
-### Working directory
-
- - `gws` displays working-tree status in the short format.
- - `gwS` displays working-tree status.
- - `gwd` displays changes between the working tree and the index (diff).
- - `gwD` displays changes between the working tree and the index (word diff).
- - `gwr` resets the current HEAD to the specified state, does not touch the
- index nor the working tree.
- - `gwR` resets the current HEAD, index and working tree to the specified state.
- - `gwc` removes untracked files from the working tree (dry-run).
- - `gwC` removes untracked files from the working tree.
- - `gwx` removes files from the working tree and from the index recursively.
- - `gwX` removes files from the working tree and from the index recursively and
- forcefully.
+- `g` is short for `git`.
+
+### Branch (b)
+
+- `gb` lists, creates, renames, and deletes branches.
+- `gbc` creates a new branch.
+- `gbl` lists branches and their commits. (also `gbv`)
+- `gbL` lists all local and remote branches and their commits.
+- `gbr` renames a branch. (also `gbm`)
+- `gbR` renames a branch even if the new branch name already exists. (also
+ `gbM`)
+- `gbs` lists branches and their commits with ancestry graphs.
+- `gbS` lists local and remote branches and their commits with ancestry graphs.
+- `gbV` lists branches with more verbose information about their commits.
+- `gbx` deletes a branch. (also `gbd`)
+- `gbX` deletes a branch irrespective of its merged status. (also `gbD`)
+
+### Commit (c)
+
+- `gc` records changes to the repository.
+- `gcS` records changes to the repository. (Signed)
+- `gca` stages all modified and deleted files.
+- `gcaS` stages all modified and deleted files. (Signed)
+- `gcm` records changes to the repository with the given message.
+- `gcmS` records changes to the repository with the given message. (Signed)
+- `gcam` stages all modified and deleted files, and records changes to the
+ repository with the given message.
+- `gco` checks out a branch or paths to work tree.
+- `gcO` checks out hunks from the index or the tree interactively.
+- `gcf` amends the tip of the current branch using the same log message as
+ _HEAD_.
+- `gcfS` amends the tip of the current branch using the same log message as
+ _HEAD_. (Signed)
+- `gcF` amends the tip of the current branch.
+- `gcFS` amends the tip of the current branch. (Signed)
+- `gcp` applies changes introduced by existing commits.
+- `gcP` applies changes introduced by existing commits without committing.
+- `gcr` reverts existing commits by reverting patches and recording new commits.
+- `gcR` removes the _HEAD_ commit.
+- `gcs` displays commits with various objects.
+- `gcsS` displays commits with GPG signature.
+- `gcl` lists lost commits.
+- `gcy` displays commits yet to be applied to upstream in the short format.
+- `gcY` displays commits yet to be applied to upstream.
+
+### Conflict (C)
+
+- `gCl` lists unmerged files.
+- `gCa` adds unmerged file contents to the index.
+- `gCe` executes merge-tool on all unmerged file.
+- `gCo` checks out our changes for unmerged paths.
+- `gCO` checks out our changes for all unmerged paths.
+- `gCt` checks out their changes for unmerged paths.
+- `gCT` checks out their changes for all unmerged paths.
+
+### Data (d)
+
+- `gd` displays information about files in the index and the work tree.
+- `gdc` lists cached files.
+- `gdx` lists deleted files.
+- `gdm` lists modified files.
+- `gdu` lists untracked files.
+- `gdk` lists killed files.
+- `gdi` lists ignored files.
+
+### Fetch (f)
+
+- `gf` downloads objects and references from another repository.
+- `gfa` downloads objects and references from all remote repositories.
+- `gfc` clones a repository into a new directory.
+- `gfcr` clones a repository into a new directory including all submodules.
+- `gfm` fetches from and merges with another repository or local branch.
+- `gfr` fetches from and rebases on another repository or local branch.
+
+### Flow (F)
+
+- `gFi` is short for `git flow init`
+
+#### Feature (Ff)
+
+- `gFf` is short for `git flow feature`
+- `gFfl` is short for `git flow feature list`
+- `gFfs` is short for `git flow feature start`
+- `gFff` is short for `git flow feature finish`
+- `gFfp` is short for `git flow feature publish`
+- `gFft` is short for `git flow feature track`
+- `gFfd` is short for `git flow feature diff`
+- `gFfr` is short for `git flow feature rebase`
+- `gFfc` is short for `git flow feature checkout`
+- `gFfm` is short for `git flow feature pull`
+- `gFfx` is short for `git flow feature delete`
+
+#### Bugfix (Fb)
+
+- `gFb` is short for `git flow bugfix`
+- `gFbl` is short for `git flow bugfix list`
+- `gFbs` is short for `git flow bugfix start`
+- `gFbf` is short for `git flow bugfix finish`
+- `gFbp` is short for `git flow bugfix publish`
+- `gFbt` is short for `git flow bugfix track`
+- `gFbd` is short for `git flow bugfix diff`
+- `gFbr` is short for `git flow bugfix rebase`
+- `gFbc` is short for `git flow bugfix checkout`
+- `gFbm` is short for `git flow bugfix pull`
+- `gFbx` is short for `git flow bugfix delete`
+
+#### Release (Fl)
+
+- `gFl` is short for `git flow release`
+- `gFll` is short for `git flow release list`
+- `gFls` is short for `git flow release start`
+- `gFlf` is short for `git flow release finish`
+- `gFlp` is short for `git flow release publish`
+- `gFlt` is short for `git flow release track`
+- `gFld` is short for `git flow release diff`
+- `gFlr` is short for `git flow release rebase`
+- `gFlc` is short for `git flow release checkout`
+- `gFlm` is short for `git flow release pull`
+- `gFlx` is short for `git flow release delete`
+
+#### Hotfix (Fh)
+
+- `gFh` is short for `git flow hotfix`
+- `gFhl` is short for `git flow hotfix list`
+- `gFhs` is short for `git flow hotfix start`
+- `gFhf` is short for `git flow hotfix finish`
+- `gFhp` is short for `git flow hotfix publish`
+- `gFht` is short for `git flow hotfix track`
+- `gFhd` is short for `git flow hotfix diff`
+- `gFhr` is short for `git flow hotfix rebase`
+- `gFhc` is short for `git flow hotfix checkout`
+- `gFhm` is short for `git flow hotfix pull`
+- `gFhx` is short for `git flow hotfix delete`
+
+#### Support (Fs)
+
+- `gFs` is short for `git flow support`
+- `gFsl` is short for `git flow support list`
+- `gFss` is short for `git flow support start`
+- `gFsf` is short for `git flow support finish`
+- `gFsp` is short for `git flow support publish`
+- `gFst` is short for `git flow support track`
+- `gFsd` is short for `git flow support diff`
+- `gFsr` is short for `git flow support rebase`
+- `gFsc` is short for `git flow support checkout`
+- `gFsm` is short for `git flow support pull`
+- `gFsx` is short for `git flow support delete`
+
+### Grep (g)
+
+- `gg` displays lines matching a pattern.
+- `ggi` displays lines matching a pattern ignoring case.
+- `ggl` lists files matching a pattern.
+- `ggL` lists files that are not matching a pattern.
+- `ggv` displays lines not matching a pattern.
+- `ggw` displays lines matching a pattern at word boundary.
+
+### Index (i)
+
+- `gia` adds file contents to the index.
+- `giA` adds file contents to the index interactively.
+- `giu` adds file contents to the index (updates only known files).
+- `gid` displays changes between the index and a named commit (diff).
+- `giD` displays changes between the index and a named commit (word diff).
+- `gii` temporarily ignore differences in a given file.
+- `giI` unignore differences in a given file.
+- `gir` resets the current HEAD to the specified state.
+- `giR` resets the current index interactively.
+- `gix` removes files/directories from the index (recursively).
+- `giX` removes files/directories from the index (recursively and forced).
+
+### Log (l)
+
+- `gl` displays the log.
+- `gls` displays the stats log.
+- `gld` displays the diff log.
+- `glo` displays the one line log.
+- `glg` displays the graph log.
+- `glb` displays the brief commit log.
+- `glc` displays the commit count for each contributor in descending order.
+- `glS` displays the log and checks the validity of signed commits.
+
+### Merge (m)
+
+- `gm` joins two or more development histories together.
+- `gmC` joins two or more development histories together but does not commit.
+- `gmF` joins two or more development histories together but does not commit
+ generating a merge commit even if the merge resolved as a fast-forward.
+- `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
+- `gmt` runs the merge conflict resolution tools to resolve conflicts.
+
+### Push (p)
+
+- `gp` updates remote refs along with associated objects.
+- `gpf` forcefully updates remote refs along with associated objects using the
+ safer `--force-with-lease` option.
+- `gpF` forcefully updates remote refs along with associated objects using the
+ riskier `--force` option.
+- `gpa` updates remote branches along with associated objects.
+- `gpA` updates remote branches and tags along with associated objects.
+- `gpt` updates remote tags along with associated objects.
+- `gpc` updates remote refs along with associated objects and adds _origin_ as
+ an upstream reference for the current branch.
+- `gpp` pulls and pushes from origin to origin.
+
+### Rebase (r)
+
+- `gr` forward-ports local commits to the updated upstream _HEAD_.
+- `gra` aborts the rebase.
+- `grc` continues the rebase after merge conflicts are resolved.
+- `gri` makes a list of commits to be rebased and opens the editor.
+- `grs` skips the current patch.
+
+### Remote (R)
+
+- `gR` manages tracked repositories.
+- `gRl` lists remote names and their URLs.
+- `gRa` adds a new remote.
+- `gRx` removes a remote.
+- `gRm` renames a remote.
+- `gRu` fetches remotes updates.
+- `gRp` prunes all stale remote tracking branches.
+- `gRs` displays information about a given remote.
+- `gRb` opens a remote on [GitHub][3] in the default browser.
+
+### Stash (s)
+
+- `gs` stashes the changes of the dirty working directory.
+- `gsa` applies the changes recorded in a stash to the working directory.
+- `gsx` drops a stashed state.
+- `gsX` drops all the stashed states.
+- `gsl` lists stashed states.
+- `gsL` lists dropped stashed states.
+- `gsd` displays changes between the stash and its original parent.
+- `gsp` removes and applies a single stashed state from the stash list.
+- `gsr` recovers a given stashed state.
+- `gss` stashes the changes of the dirty working directory, including untracked.
+- `gsS` stashes the changes of the dirty working directory interactively.
+- `gsw` stashes the changes of the dirty working directory retaining the index.
+
+### Submodule (S)
+
+- `gS` initializes, updates, or inspects submodules.
+- `gSa` adds given a repository as a submodule.
+- `gSf` evaluates a shell command in each of checked out submodules.
+- `gSi` initializes submodules.
+- `gSI` initializes and clones submodules recursively.
+- `gSl` lists the commits of all submodules.
+- `gSm` moves a submodule.
+- `gSs` synchronizes submodules' remote URL to the value specified in
+ _.gitmodules_.
+- `gSu` fetches and merges the latest changes for all submodule.
+- `gSx` removes a submodule.
+
+### Tag (t)
+
+- `gt` lists tags or creates tag.
+- `gtl` lists tags matching pattern.
+- `gts` creates a signed tag.
+- `gtv` validate a signed tag.
+
+### Working directory (w)
+
+- `gws` displays working-tree status in the short format.
+- `gwS` displays working-tree status.
+- `gwd` displays changes between the working tree and the index (diff).
+- `gwD` displays changes between the working tree and the index (word diff).
+- `gwr` resets the current HEAD to the specified state, does not touch the
+ index nor the working tree.
+- `gwR` resets the current HEAD, index and working tree to the specified state.
+- `gwc` removes untracked files from the working tree (dry-run).
+- `gwC` removes untracked files from the working tree.
+- `gwx` removes files from the working tree and from the index recursively.
+- `gwX` removes files from the working tree and from the index recursively and
+ forcefully.
### Shadows
The following aliases may shadow system commands:
- - `gb` shadows the [GB][9].
- - `gm` shadows the [Graphics Magick image processor][11].
- - `gpt` shadows the [GUID partition table maintenance utility][4].
- - `gs` shadows the [Ghostscript interpreter and previewer][5].
+- `gb` shadows the [GB][10].
+- `gm` shadows the [GraphicsMagick image processor][11].
+- `gpt` shadows the [GUID partition table maintenance utility][4].
+- `gs` shadows the [Ghostscript interpreter and previewer][5].
If you frequently use the above commands, you may wish to remove said aliases
from this module or to disable them at the bottom of the zshrc with `unalias`.
@@ -326,25 +338,23 @@ from this module or to disable them at the bottom of the zshrc with `unalias`.
You can temporarily bypass an alias by prefixing it with a backward slash:
`\gpt`.
-Functions
----------
-
- - `git-branch-current` displays the current branch.
- - `git-commit-lost` lists lost commits.
- - `git-dir` displays the path to the Git directory.
- - `git-hub-browse` opens the [GitHub][3] repository in the default browser.
- - `git-hub-shorten-url` shortens [GitHub URLs][10].
- - `git-info` exposes repository information via the `$git_info` associative
- array.
- - `git-root` displays the path to the working tree root.
- - `git-stash-clear-interactive` asks for confirmation before clearing the stash.
- - `git-stash-dropped` lists dropped stashed states.
- - `git-stash-recover` recovers given dropped stashed states.
- - `git-submodule-move` moves a submodule.
- - `git-submodule-remove` removes a submodule.
-
-Theming
--------
+## Functions
+
+- `git-branch-current` displays the current branch.
+- `git-commit-lost` lists lost commits.
+- `git-dir` displays the path to the Git directory.
+- `git-hub-browse` opens the [GitHub][3] repository in the default browser.
+- `git-hub-shorten-url` shortens [GitHub URLs][12].
+- `git-info` exposes repository information via the `$git_info` associative
+ array.
+- `git-root` displays the path to the working tree root.
+- `git-stash-clear-interactive` asks for confirmation before clearing the stash.
+- `git-stash-dropped` lists dropped stashed states.
+- `git-stash-recover` recovers given dropped stashed states.
+- `git-submodule-move` moves a submodule.
+- `git-submodule-remove` removes a submodule.
+
+## Theming
To display information about the current repository in a prompt, define the
following styles in the `prompt_name_setup` function, where the syntax for
@@ -356,26 +366,26 @@ zstyle ':prezto:module:git:info:context:subcontext' format 'string'
### Main Contexts
-| Name | Format Code | Description
-| --------- | :---------: | ---------------------------------------------------
-| action | %s | Special action name
-| ahead | %A | Commits ahead of remote count
-| behind | %B | Commits behind of remote count
-| branch | %b | Branch name
-| commit | %c | Commit hash
-| position | %p | Commits from the nearest tag count
-| remote | %R | Remote name
-| stashed | %S | Stashed states count
+| Name | Format Code | Description |
+| -------- | :---------: | ---------------------------------- |
+| action | %s | Special action name |
+| ahead | %A | Commits ahead of remote count |
+| behind | %B | Commits behind of remote count |
+| branch | %b | Branch name |
+| commit | %c | Commit hash |
+| position | %p | Commits from the nearest tag count |
+| remote | %R | Remote name |
+| stashed | %S | Stashed states count |
### Concise Contexts
-| Name | Format Code | Description
-| --------- | :---------: | ---------------------------------------------------
-| clean | %C | Clean state
-| dirty | %D | Dirty files count
-| indexed | %i | Indexed files count
-| unindexed | %I | Unindexed files count
-| untracked | %u | Untracked files count
+| Name | Format Code | Description |
+| --------- | :---------: | --------------------- |
+| clean | %C | Clean state |
+| dirty | %D | Dirty files count |
+| indexed | %i | Indexed files count |
+| unindexed | %I | Unindexed files count |
+| untracked | %u | Untracked files count |
The following contexts must be enabled with the following zstyle:
@@ -385,31 +395,31 @@ zstyle ':prezto:module:git:info' verbose 'yes'
### Verbose Contexts
-| Name | Format Code | Description
-| --------- | :---------: | ---------------------------------------------------
-| added | %a | Added files count
-| clean | %C | Clean state
-| deleted | %d | Deleted files count
-| dirty | %D | Dirty files count
-| modified | %m | Modified files count
-| renamed | %r | Renamed files count
-| unmerged | %U | Unmerged files count
-| untracked | %u | Untracked files count
+| Name | Format Code | Description |
+| --------- | :---------: | --------------------- |
+| added | %a | Added files count |
+| clean | %C | Clean state |
+| deleted | %d | Deleted files count |
+| dirty | %D | Dirty files count |
+| modified | %m | Modified files count |
+| renamed | %r | Renamed files count |
+| unmerged | %U | Unmerged files count |
+| untracked | %u | Untracked files count |
### Special Action Contexts
-| Name | Format | Description
-| -------------------- | :---------: | -----------------------------------------
-| apply | value | Applying patches
-| bisect | value | Binary searching for changes
-| cherry-pick | value | Cherry picking
-| cherry-pick-sequence | value | Cherry picking sequence
-| merge | value | Merging
-| rebase | value | Rebasing
-| rebase-interactive | value | Rebasing interactively
-| rebase-merge | value | Rebasing merge
-| revert | value | Reverting
-| revert-sequence | value | Reverting sequence
+| Name | Format | Description |
+| -------------------- | :----: | ---------------------------- |
+| apply | value | Applying patches |
+| bisect | value | Binary searching for changes |
+| cherry-pick | value | Cherry picking |
+| cherry-pick-sequence | value | Cherry picking sequence |
+| merge | value | Merging |
+| rebase | value | Rebasing |
+| rebase-interactive | value | Rebasing interactively |
+| rebase-merge | value | Rebasing merge |
+| revert | value | Reverting |
+| revert-sequence | value | Reverting sequence |
First, format the repository state attributes. For example, to format the branch
and remote names, define the following styles.
@@ -431,22 +441,24 @@ Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook
function.
-Authors
--------
+## 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)
- - [Colin Hebert](https://github.com/ColinHebert)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Colin Hebert](https://github.com/ColinHebert)
-[1]: http://www.git-scm.com
-[2]: https://github.com/defunkt/hub
+[1]: https://www.git-scm.com
+[2]: https://hub.github.com
[3]: https://www.github.com
-[4]: http://www.manpagez.com/man/8/gpt/
-[5]: http://www.manpagez.com/man/1/gs/
+[4]: https://www.manpagez.com/man/8/gpt/
+[5]: https://www.manpagez.com/man/1/gs/
[6]: https://github.com/sorin-ionescu/prezto/issues
[7]: https://github.com/sorin-ionescu/prezto/issues/219
-[8]: http://www.kernel.org/pub/software/scm/git/docs/git-log.html
-[9]: https://getgb.io/
-[10]: https://github.com/blog/985-git-io-github-url-shortener
-[11]: http://www.manpagez.com/man/1/gm/
+[8]: https://git-scm.com/docs/git-log
+[9]: https://git-scm.com/docs/git-submodule
+[10]: https://getgb.io/
+[11]: https://www.manpagez.com/man/1/gm/
+[12]: https://github.blog/2011-11-10-git-io-github-url-shortener
+[13]: ../completion#readme
+[14]: https://github.com/sorin-ionescu/prezto/pull/1929
diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh
index dde5b351c1..f14cca59fe 100644
--- a/modules/git/alias.zsh
+++ b/modules/git/alias.zsh
@@ -8,25 +8,24 @@
#
# Settings
#
-#
# Log
zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \
- || _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B'
+ || _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B'
zstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \
- || _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n'
+ || _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n'
zstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \
- || _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n'
+ || _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n'
# Status
zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \
- || _git_status_ignore_submodules='none'
+ || _git_status_ignore_submodules='none'
#
# Aliases
#
-if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
+if ! zstyle -t ':prezto:module:git:alias' skip; then
# Git
alias g='git'
@@ -51,26 +50,27 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
# Commit (c)
alias gc='git commit --verbose'
+ alias gcS='git commit --verbose --gpg-sign'
alias gca='git commit --verbose --all'
+ alias gcaS='git commit --verbose --all --gpg-sign'
alias gcm='git commit --message'
- alias gcS='git commit -S --verbose'
- alias gcSa='git commit -S --verbose --all'
- alias gcSm='git commit -S --message'
+ alias gcmS='git commit --message --gpg-sign'
alias gcam='git commit --all --message'
alias gco='git checkout'
alias gcO='git checkout --patch'
alias gcf='git commit --amend --reuse-message HEAD'
- alias gcSf='git commit -S --amend --reuse-message HEAD'
+ alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign'
alias gcF='git commit --verbose --amend'
- alias gcSF='git commit -S --verbose --amend'
+ alias gcFS='git commit --verbose --amend --gpg-sign'
alias gcp='git cherry-pick --ff'
alias gcP='git cherry-pick --no-commit'
alias gcr='git revert'
alias gcR='git reset "HEAD^"'
alias gcs='git show'
+ alias gcsS='git show --pretty=short --show-signature'
alias gcl='git-commit-lost'
- alias gcy='git cherry -v --abbrev'
- alias gcY='git cherry -v'
+ alias gcy='git cherry --verbose --abbrev'
+ alias gcY='git cherry --verbose'
# Conflict (C)
alias gCl='git --no-pager diff --name-only --diff-filter=U'
@@ -96,7 +96,9 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
alias gfc='git clone'
alias gfcr='git clone --recurse-submodules'
alias gfm='git pull'
+ alias gfma='git pull --autostash'
alias gfr='git pull --rebase'
+ alias gfra='git pull --rebase --autostash'
# Flow (F)
alias gFi='git flow init'
@@ -180,16 +182,17 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
alias gir='git reset'
alias giR='git reset --patch'
alias gix='git rm -r --cached'
- alias giX='git rm -rf --cached'
+ alias giX='git rm -r --force --cached'
# Log (l)
- alias gl='git log --topo-order --pretty=format:"${_git_log_medium_format}"'
- alias gls='git log --topo-order --stat --pretty=format:"${_git_log_medium_format}"'
- alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:"${_git_log_medium_format}"'
- alias glo='git log --topo-order --pretty=format:"${_git_log_oneline_format}"'
- alias glg='git log --topo-order --all --graph --pretty=format:"${_git_log_oneline_format}"'
- alias glb='git log --topo-order --pretty=format:"${_git_log_brief_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 gld='git log --topo-order --stat --patch --full-diff --pretty=format:"$_git_log_medium_format"'
+ alias glo='git log --topo-order --pretty=format:"$_git_log_oneline_format"'
+ alias glg='git log --topo-order --graph --pretty=format:"$_git_log_oneline_format"'
+ alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"'
alias glc='git shortlog --summary --numbered'
+ alias glS='git log --show-signature'
# Merge (m)
alias gm='git merge'
@@ -249,22 +252,24 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then
alias gSl='git submodule status'
alias gSm='git-submodule-move'
alias gSs='git submodule sync'
- alias gSu='git submodule foreach git pull origin master'
+ alias gSu='git submodule update --remote --recursive'
alias gSx='git-submodule-remove'
# Tag (t)
alias gt='git tag'
- alias gtl='git tag -l'
+ alias gtl='git tag --list'
+ alias gts='git tag --sign'
+ alias gtv='git verify-tag'
# Working Copy (w)
- alias gws='git status --ignore-submodules=${_git_status_ignore_submodules} --short'
- alias gwS='git status --ignore-submodules=${_git_status_ignore_submodules}'
+ alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short'
+ alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules'
alias gwd='git diff --no-ext-diff'
alias gwD='git diff --no-ext-diff --word-diff'
alias gwr='git reset --soft'
alias gwR='git reset --hard'
- alias gwc='git clean -n'
- alias gwC='git clean -f'
+ alias gwc='git clean --dry-run'
+ alias gwC='git clean --force'
alias gwx='git rm -r'
- alias gwX='git rm -rf'
+ alias gwX='git rm -r --force'
fi
diff --git a/modules/git/functions/git-hub-browse b/modules/git/functions/git-hub-browse
index cb3fc60de8..3451198c0d 100644
--- a/modules/git/functions/git-hub-browse
+++ b/modules/git/functions/git-hub-browse
@@ -15,7 +15,7 @@ fi
local remotes remote references reference file url
remote="${1:-origin}"
-remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2))
+remotes=($(command git remote show))
if (( $remotes[(i)$remote] == $#remotes + 1 )); then
print "$0: remote not found: $remote" >&2
@@ -23,14 +23,14 @@ if (( $remotes[(i)$remote] == $#remotes + 1 )); then
fi
url=$(
- command git config --get "remote.${remote}.url" \
- | sed -En "s/(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
+ command git remote get-url "$remote" \
+ | sed -En "s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\.git#https://\2/\4/\5#p"
)
reference="${${2:-$(git-branch-current)}:-HEAD}"
references=(
HEAD
- ${$(command git ls-remote --heads --tags "$remote" | awk '{print $2}')##refs/(heads|tags)/}
+ ${${(f)"$(command git ls-remote --heads --tags "$remote")"}##*refs/(heads|tags)/}
)
if (( $references[(i)$reference] == $#references + 1 )); then
@@ -45,9 +45,9 @@ fi
file="$3"
if [[ -n "$url" ]]; then
- url="${url}/tree/${reference}/${file}"
+ url="$url/tree/$reference/$file"
- if (( $+commands[$BROWSER] )); then
+ if [[ -n "$BROWSER" ]]; then
"$BROWSER" "$url"
return 0
else
diff --git a/modules/git/functions/git-hub-shorten-url b/modules/git/functions/git-hub-shorten-url
index 470c093f1c..b9edd01ca1 100644
--- a/modules/git/functions/git-hub-shorten-url
+++ b/modules/git/functions/git-hub-shorten-url
@@ -19,7 +19,7 @@ if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then
fi
if (( $+commands[curl] )); then
- curl -s -i 'https://git.io' -F "url=$url" ${(s: :)code:+ -F "code=$code"} | sed -n 's/^Location: //p'
+ print "${${(@M)${(f)"$(curl -s -i 'https://git.io' -F "url=$url" ${(z)code:+ -F "code=$code"})"}:#Location: *}#Location: }"
else
print "$0: command not found: curl" >&2
return 1
diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info
index a173c20f14..eca50462e2 100644
--- a/modules/git/functions/git-info
+++ b/modules/git/functions/git-info
@@ -22,20 +22,22 @@ function _git-action {
local revert_sequence_formatted
for action_dir in \
- "${git_dir}/rebase-apply" \
- "${git_dir}/rebase" \
- "${git_dir}/../.dotest"
+ "$git_dir/rebase-apply" \
+ "$git_dir/rebase" \
+ "$git_dir/../.dotest"
do
if [[ -d "$action_dir" ]] ; then
- zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' || apply_formatted='apply'
- zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' || rebase_formatted='rebase'
+ zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \
+ || apply_formatted='apply'
+ zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \
+ || rebase_formatted='rebase'
- if [[ -f "${action_dir}/rebasing" ]] ; then
+ if [[ -f "$action_dir/rebasing" ]] ; then
print "$rebase_formatted"
- elif [[ -f "${action_dir}/applying" ]] ; then
+ elif [[ -f "$action_dir/applying" ]] ; then
print "$apply_formatted"
else
- print "${rebase_formatted}/${apply_formatted}"
+ print "$rebase_formatted/$apply_formatted"
fi
return 0
@@ -43,59 +45,67 @@ function _git-action {
done
for action_dir in \
- "${git_dir}/rebase-merge/interactive" \
- "${git_dir}/.dotest-merge/interactive"
+ "$git_dir/rebase-merge/interactive" \
+ "$git_dir/.dotest-merge/interactive"
do
if [[ -f "$action_dir" ]]; then
- zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' || rebase_interactive_formatted='rebase-interactive'
+ zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \
+ || rebase_interactive_formatted='rebase-interactive'
print "$rebase_interactive_formatted"
return 0
fi
done
for action_dir in \
- "${git_dir}/rebase-merge" \
- "${git_dir}/.dotest-merge"
+ "$git_dir/rebase-merge" \
+ "$git_dir/.dotest-merge"
do
if [[ -d "$action_dir" ]]; then
- zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' || rebase_merge_formatted='rebase-merge'
+ zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \
+ || rebase_merge_formatted='rebase-merge'
print "$rebase_merge_formatted"
return 0
fi
done
- if [[ -f "${git_dir}/MERGE_HEAD" ]]; then
- zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' || merge_formatted='merge'
+ if [[ -f "$git_dir/MERGE_HEAD" ]]; then
+ zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \
+ || merge_formatted='merge'
print "$merge_formatted"
return 0
fi
- if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then
- if [[ -d "${git_dir}/sequencer" ]] ; then
- zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' || cherry_pick_sequence_formatted='cherry-pick-sequence'
+ if [[ -f "$git_dir/CHERRY_PICK_HEAD" ]]; then
+ if [[ -d "$git_dir/sequencer" ]] ; then
+ zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \
+ || cherry_pick_sequence_formatted='cherry-pick-sequence'
print "$cherry_pick_sequence_formatted"
else
- zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' || cherry_pick_formatted='cherry-pick'
+ zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \
+ || cherry_pick_formatted='cherry-pick'
print "$cherry_pick_formatted"
fi
return 0
fi
- if [[ -f "${git_dir}/REVERT_HEAD" ]]; then
- if [[ -d "${git_dir}/sequencer" ]] ; then
- zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' || revert_sequence_formatted='revert-sequence'
+ if [[ -f "$git_dir/REVERT_HEAD" ]]; then
+ if [[ -d "$git_dir/sequencer" ]] ; then
+ zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' \
+ || revert_sequence_formatted='revert-sequence'
print "$revert_sequence_formatted"
else
- zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' || revert_formatted='revert'
+ zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' \
+ || revert_formatted='revert'
print "$revert_formatted"
fi
return 0
fi
- if [[ -f "${git_dir}/BISECT_LOG" ]]; then
- zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' || bisect_formatted='bisect'
+ if [[ -f "$git_dir/BISECT_LOG" ]]; then
+ zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' \
+ || bisect_formatted='bisect'
print "$bisect_formatted"
return 0
fi
@@ -212,10 +222,17 @@ function git-info {
# Format stashed.
zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'
- if [[ -n "$stashed_format" && -f "$(git-dir)/refs/stash" ]]; then
- stashed="$(command git stash list 2> /dev/null | wc -l | awk '{print $1}')"
- if [[ -n "$stashed" ]]; then
- zformat -f stashed_formatted "$stashed_format" "S:$stashed"
+ if [[ -n "$stashed_format" ]]; then
+ commondir=""
+ if [[ -f "$(git-dir)/commondir" ]]; then
+ commondir="$(<$(git-dir)/commondir)"
+ [[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir"
+ fi
+ if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then
+ stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
+ if (( $stashed > 0 )); then
+ zformat -f stashed_formatted "$stashed_format" "S:$stashed"
+ fi
fi
fi
@@ -268,7 +285,7 @@ function git-info {
# Format ahead.
if [[ -n "$ahead_format" ]]; then
- ahead="$ahead_and_behind[(w)1]"
+ ahead="$ahead_and_behind[(pws:\t:)1]"
if (( ahead > 0 )); then
zformat -f ahead_formatted "$ahead_format" "A:$ahead"
fi
@@ -276,7 +293,7 @@ function git-info {
# Format behind.
if [[ -n "$behind_format" ]]; then
- behind="$ahead_and_behind[(w)2]"
+ behind="$ahead_and_behind[(pws:\t:)2]"
if (( behind > 0 )); then
zformat -f behind_formatted "$behind_format" "B:$behind"
fi
@@ -400,6 +417,11 @@ function git-info {
if (( dirty > 0 )); then
zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'
zformat -f dirty_formatted "$dirty_format" "D:$dirty"
+ # Overwrite branch format to use dirty-branch format
+ zstyle -s ':prezto:module:git:info:dirty-branch' format 'branch_format'
+ if [[ -n "$branch" && -n "$branch_format" ]]; then
+ zformat -f branch_formatted "$branch_format" "b:$branch"
+ fi
else
zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'
fi
diff --git a/modules/git/functions/git-stash-clear-interactive b/modules/git/functions/git-stash-clear-interactive
index cc665a1829..163deac8c4 100644
--- a/modules/git/functions/git-stash-clear-interactive
+++ b/modules/git/functions/git-stash-clear-interactive
@@ -15,7 +15,7 @@ fi
local stashed
if [[ -f "$(git-dir)/refs/stash" ]]; then
- stashed="$(command git stash list 2> /dev/null | wc -l | awk '{print $1}')"
+ stashed=${#${(f)"$(command git stash list 2> /dev/null)"}}
if (( $stashed > 0 )); then
if read -q "?Clear $stashed stashed state(s) [y/N]? "; then
command git stash clear
diff --git a/modules/git/functions/git-stash-dropped b/modules/git/functions/git-stash-dropped
index d9e759e872..142a4a754f 100644
--- a/modules/git/functions/git-stash-dropped
+++ b/modules/git/functions/git-stash-dropped
@@ -16,7 +16,7 @@ command git fsck --unreachable 2> /dev/null \
| grep 'commit' \
| awk '{print $3}' \
| command git log \
- --pretty=format:${_git_log_oneline_format} \
+ --pretty=format:$_git_log_oneline_format \
--extended-regexp \
--grep="${1:-(WIP )?[Oo]n [^:]+:}" \
--merges \
diff --git a/modules/git/functions/git-submodule-move b/modules/git/functions/git-submodule-move
index 746f46e512..5e162a13ab 100644
--- a/modules/git/functions/git-submodule-move
+++ b/modules/git/functions/git-submodule-move
@@ -26,7 +26,7 @@ if [[ -z "$url" ]]; then
return 1
fi
-mkdir -p "${dst:h}"
+mkdir -p "$dst:h"
git-submodule-remove "$src"
command git submodule add "$url" "$dst"
diff --git a/modules/git/functions/git-submodule-remove b/modules/git/functions/git-submodule-remove
index c8c11aa8c3..b523314181 100644
--- a/modules/git/functions/git-submodule-remove
+++ b/modules/git/functions/git-submodule-remove
@@ -22,9 +22,9 @@ command git config --file "$(git-dir)/config" --remove-section "submodule.${1}"
command git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &> /dev/null
command git add .gitmodules
-command git rm --cached -rf "${1}"
-rm -rf "${1}"
-rm -rf "$(git-dir)/modules/${1}"
+command git rm --cached -rf "$1"
+rm -rf "$1"
+rm -rf "$(git-dir)/modules/$1"
return 0
diff --git a/modules/git/init.zsh b/modules/git/init.zsh
index ba54082855..ac7ef7538a 100644
--- a/modules/git/init.zsh
+++ b/modules/git/init.zsh
@@ -13,5 +13,8 @@ fi
# Load dependencies.
pmodload 'helper'
+# Load 'run-help' function.
+autoload -Uz run-help-git
+
# Source module files.
source "${0:h}/alias.zsh"
diff --git a/modules/gnu-utility/README.md b/modules/gnu-utility/README.md
index 7e62a176c2..747c72fb13 100644
--- a/modules/gnu-utility/README.md
+++ b/modules/gnu-utility/README.md
@@ -1,34 +1,34 @@
-GNU Utility
-===========
+# GNU Utility
Provides for the interactive use of GNU utilities on BSD systems.
-Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.
+Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.,
`ls` instead of `gls`, is not recommended since scripts that target other
utilities will be broken.
This module wraps GNU utilities in functions without a prefix for interactive
use.
-This module must be loaded **before** the *utility* module.
+This module must be loaded _before_ the [_`utility`_][1] module so that GNU
+utilities enabled in this module are available for configuration in _`utility`_
+module.
-Settings
---------
+## Settings
### Prefix
-To use a different prefix, add the following to *zpreztorc*, and replace 'g' with
-the desired prefix:
+To use a different prefix, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix.
```sh
zstyle ':prezto:module:gnu-utility' prefix 'g'
```
-Authors
--------
+## Authors
-*The authors of this module should be contacted via the [issue tracker][1].*
+_The authors of this module should be contacted via the [issue tracker][2]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: https://github.com/sorin-ionescu/prezto/issues
+[1]: ../utility#readme
+[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/gnu-utility/init.zsh b/modules/gnu-utility/init.zsh
index cbf9a4baa8..2cfbf2fad5 100644
--- a/modules/gnu-utility/init.zsh
+++ b/modules/gnu-utility/init.zsh
@@ -6,34 +6,36 @@
#
# Get the prefix or use the default.
-zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' || _gnu_utility_p='g'
+zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \
+ || _gnu_utility_p='g'
# Return if requirements are not found.
-if (( ! ${+commands[${_gnu_utility_p}whoami]} )); then
+if (( ! $+commands[${_gnu_utility_p}whoami] )); then
return 1
fi
_gnu_utility_cmds=(
# Coreutils
- '[' 'base64' 'basename' 'cat' 'chcon' 'chgrp' 'chmod' 'chown'
- 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut' 'date' 'dd' 'df'
- 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'
- 'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id'
- 'install' 'join' 'kill' 'link' 'ln' 'logname' 'ls' 'md5sum'
- 'mkdir' 'mkfifo' 'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc'
- 'od' 'paste' 'pathchk' 'pinee' 'pr' 'printenv' 'printf' 'ptx'
- 'pwd' 'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'seq' 'sha1sum'
- 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'
- 'sleep' 'sort' 'split' 'stat' 'stty' 'sum' 'sync' 'tac' 'tail'
- 'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort'
- 'tty' 'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'
+ '[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp'
+ 'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut'
+ 'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'
+ 'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join'
+ 'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo'
+ 'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od'
+ 'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd'
+ 'readlink' 'realpath' 'rm' 'rmdir' 'runcon'
+ 'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'
+ 'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail'
+ 'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty'
+ 'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'
'wc' 'who' 'whoami' 'yes'
# The following utilities are not part of Coreutils but installed separately.
# Binutils
- 'addr2line' 'ar' 'c++filt' 'elfedit' 'nm' 'objcopy' 'objdump'
- 'ranlib' 'readelf' 'size' 'strings' 'strip'
+ 'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm'
+ 'objcopy' 'objdump' 'ranlib' 'readelf'
+ 'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres'
# Findutils
'find' 'locate' 'oldfind' 'updatedb' 'xargs'
@@ -42,16 +44,17 @@ _gnu_utility_cmds=(
'libtool' 'libtoolize'
# Miscellaneous
- 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'
+ 'awk' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'
)
# Wrap GNU utilities in functions.
for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do
_gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}"
- if (( ${+commands[${_gnu_utility_pcmd}]} && ! ${+builtins[${_gnu_utility_cmd}]} )); then
+ if (( $+commands[$_gnu_utility_pcmd] \
+ && ! $+builtins[$_gnu_utility_cmd] )); then
eval "
- function ${_gnu_utility_cmd} {
- '${commands[${_gnu_utility_pcmd}]}' \"\$@\"
+ function $_gnu_utility_cmd {
+ '$commands[$_gnu_utility_pcmd]' \"\$@\"
}
"
fi
diff --git a/modules/gpg/README.md b/modules/gpg/README.md
index be3c1a925c..08730ebdbb 100644
--- a/modules/gpg/README.md
+++ b/modules/gpg/README.md
@@ -1,13 +1,14 @@
-GPG
-===
+# GPG
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
+## Settings
+
### SSH
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
replacement for `ssh-agent`, add the following line to
-*~/.gnupg/gpg-agent.conf*:
+_`$GNUPGHOME/gpg-agent.conf`_ or _`$$HOME/.gnupg/gpg-agent.conf`_:
```conf
enable-ssh-support
@@ -16,13 +17,12 @@ enable-ssh-support
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
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]: http://www.gnupg.org
-[2]: http://linux.die.net/man/1/gpg-agent
+[1]: https://www.gnupg.org
+[2]: https://linux.die.net/man/1/gpg-agent
[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh
index 7976fd7da4..a3b37ba3bc 100644
--- a/modules/gpg/init.zsh
+++ b/modules/gpg/init.zsh
@@ -12,7 +12,7 @@ fi
# Set the default paths to gpg-agent files.
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
-_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
+_gpg_agent_env="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env"
# Load environment variables from previous run
source "$_gpg_agent_env" 2> /dev/null
@@ -21,12 +21,13 @@ source "$_gpg_agent_env" 2> /dev/null
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
# Start gpg-agent if not started.
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then
+ mkdir -p "$_gpg_agent_env:h"
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
fi
fi
# Inform gpg-agent of the current TTY for user prompts.
-export GPG_TTY="$(tty)"
+export GPG_TTY=$TTY
# Integrate with the SSH module.
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
diff --git a/modules/haskell/README.md b/modules/haskell/README.md
index dcf144c6bc..db7bfae069 100644
--- a/modules/haskell/README.md
+++ b/modules/haskell/README.md
@@ -1,10 +1,8 @@
-Haskell
-=======
+# Haskell
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
directories.
@@ -17,12 +15,11 @@ documentation.
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]: http://www.haskell.org/cabal/
+[1]: https://www.haskell.org/cabal/
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/haskell/init.zsh b/modules/haskell/init.zsh
index c1c78ca2a0..cb76864122 100644
--- a/modules/haskell/init.zsh
+++ b/modules/haskell/init.zsh
@@ -10,8 +10,11 @@ if (( ! $+commands[ghc] )); then
return 1
fi
+# Load dependencies.
+pmodload 'helper'
+
# Prepend Cabal per user directories to PATH.
-if [[ "$OSTYPE" == darwin* && -d $HOME/Library/Haskell ]]; then
+if is-darwin && [[ -d $HOME/Library/Haskell ]]; then
path=($HOME/Library/Haskell/bin(/N) $path)
else
path=($HOME/.cabal/bin(/N) $path)
diff --git a/modules/helper/README.md b/modules/helper/README.md
index 9f10d6eedf..5c90a63c17 100644
--- a/modules/helper/README.md
+++ b/modules/helper/README.md
@@ -1,24 +1,26 @@
-Helper
-======
+# Helper
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
- triggered.
- - `is-autoloadable` checks if a file can be autoloaded by trying to load it
- in a subshell.
- - `is-callable` checks if a name is a command, function, or alias.
- - `is-true` checks a boolean variable for "true".
- - `coalesce` prints the first non-empty string in the arguments array.
+- `add-zsh-trap` adds a function name to a list to be called when a trap is
+ triggered.
+- `is-autoloadable` checks if a file can be autoloaded by trying to load it in
+ a subshell.
+- `is-callable` checks if a name is a command, function, or alias.
+- `is-true` checks a boolean variable for "true".
+- `coalesce` prints the first non-empty string in the arguments array.
+- `is-darwin` checks if running on macOS Darwin.
+- `is-linux` checks if running on Linux.
+- `is-bsd` checks if running on BSD.
+- `is-cygwin` checks if running on Cygwin (Windows).
+- `is-termux` checks if running on Termux (Android).
-Authors
--------
+## 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
diff --git a/modules/helper/init.zsh b/modules/helper/init.zsh
index 328bed4f71..0a33d7c8c0 100644
--- a/modules/helper/init.zsh
+++ b/modules/helper/init.zsh
@@ -29,3 +29,28 @@ function coalesce {
done
return 1
}
+
+# Checks if running on macOS Darwin.
+function is-darwin {
+ [[ "$OSTYPE" == darwin* ]]
+}
+
+# Checks if running on Linux.
+function is-linux {
+ [[ "$OSTYPE" == linux* ]]
+}
+
+# Checks if running on BSD.
+function is-bsd {
+ [[ "$OSTYPE" == *bsd* ]]
+}
+
+# Checks if running on Cygwin (Windows).
+function is-cygwin {
+ [[ "$OSTYPE" == cygwin* ]]
+}
+
+# Checks if running on termux (Android).
+function is-termux {
+ [[ "$OSTYPE" == linux-android ]]
+}
diff --git a/modules/history-substring-search/README.md b/modules/history-substring-search/README.md
index 050a5c2e80..e7c55c5366 100644
--- a/modules/history-substring-search/README.md
+++ b/modules/history-substring-search/README.md
@@ -1,28 +1,32 @@
-History Substring Search
-========================
+# History Substring Search
-Integrates [zsh-history-substring-search][1] into Prezto, which implements
-the [Fish shell][2]'s history search feature, where the user can type in any
-part of a previously entered command and press up and down to cycle through
-matching commands.
+Integrates [`zsh-history-substring-search`][1] into Prezto, which implements the
+[Fish shell][2]'s history search feature, where the user can type in any part of
+a previously entered command and press up and down to cycle through matching
+commands.
-If this module is used in conjunction with the *syntax-highlighting* module,
-this module must be loaded **after** the *syntax-highlighting* module.
+If this module is used in conjunction with the [_`syntax-highlighting`_][3]
+module, this module must be loaded _after_ the _`syntax-highlighting`_ module.
-Contributors
-------------
+Additionally, if this module is used in conjunction with the
+[_`autosuggestions`_][4] module, this module must be loaded _before_ the
+_`autosuggestions`_ module.
+
+To elaborate, the relative order of loading the modules would be
+_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.
+
+## Contributors
New features and bug fixes should be submitted to the
-[zsh-history-substring-search][1] project according to its rules and
+[`zsh-history-substring-search`][1] project according to its rules and
regulations. This module will be synchronized against it.
-Settings
---------
+## Settings
### Case Sensitivity
To enable case-sensitivity for this module only, add the following line to
-*zpreztorc*:
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
@@ -30,42 +34,82 @@ zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
### Highlighting
-If colors are enabled, *history-substring-search* will automatically highlight
+If colors are enabled, _history-substring-search_ will automatically highlight
positive results.
-To enable highlighting for this module only, add the following line to
-*zpreztorc*:
+To disable highlighting for this module only, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
-zstyle ':prezto:module:history-substring-search' color 'yes'
+zstyle ':prezto:module:history-substring-search' color 'no'
```
-To set the query found color, add the following line to *zpreztorc*:
+To set the query found color, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search:color' found ''
```
-To set the query not found color, add the following line to *zpreztorc*:
+To set the query not found color, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search:color' not-found ''
```
-To set the search globbing flags, add the following line to *zpreztorc*:
+To set the search globbing flags, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:history-substring-search' globbing-flags ''
```
-Authors
--------
+### Case sensitive search
+
+To set the search case-sensitivity, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
+```
+
+### Fuzzy search
+
+To enable search for fuzzy matches, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:history-substring-search' fuzzy 'yes'
+```
+
+### Unique results
+
+To enable unique results, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:history-substring-search' unique 'yes'
+```
+
+### Prefixed search
+
+To enable prefixed search matches, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:history-substring-search' prefixed 'yes'
+```
+
+## Authors
-*The authors of this module should be contacted via the [issue tracker][3].*
+_The authors of this module should be contacted via the [issue tracker][5]._
- - [Suraj N. Kurapati](https://github.com/sunaku)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Suraj N. Kurapati](https://github.com/sunaku)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-history-substring-search
-[2]: http://fishshell.com
-[3]: https://github.com/sorin-ionescu/prezto/issues
+[2]: https://fishshell.com
+[3]: ../syntax-highlighting#readme
+[4]: ../autosuggestions#readme
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external
index aae3388491..87ce96b186 160000
--- a/modules/history-substring-search/external
+++ b/modules/history-substring-search/external
@@ -1 +1 @@
-Subproject commit aae3388491c2312c4efb2e86bcb999927bb2900e
+Subproject commit 87ce96b1862928d84b1afe7c173316614b30e301
diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh
index d3ee3a1131..54e8b00e5e 100644
--- a/modules/history-substring-search/init.zsh
+++ b/modules/history-substring-search/init.zsh
@@ -10,7 +10,9 @@
pmodload 'editor'
# Source module files.
-source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
+if (( ! $+functions[history-substring-search-up] )); then
+ source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
+fi
#
# Search
@@ -36,6 +38,18 @@ if ! zstyle -t ':prezto:module:history-substring-search' color; then
unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND}
fi
+if zstyle -t ':prezto:module:history-substring-search' fuzzy; then
+ HISTORY_SUBSTRING_SEARCH_FUZZY=1
+fi
+
+if zstyle -t ':prezto:module:history-substring-search' unique; then
+ HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1
+fi
+
+if zstyle -t ':prezto:module:history-substring-search' prefixed; then
+ HISTORY_SUBSTRING_SEARCH_PREFIXED=1
+fi
+
#
# Key Bindings
#
diff --git a/modules/history/README.md b/modules/history/README.md
index 3dc9a26423..51e6e8caac 100644
--- a/modules/history/README.md
+++ b/modules/history/README.md
@@ -1,43 +1,86 @@
-History
-=======
+# History
Sets [history][1] options and defines history aliases.
-Variables
----------
+**Note:** Default path of `HISTFILE` has changed from
+_`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_. The file
+will be automatically renamed if possible (when the new one doesn't exist).
+Otherwise, if you want to preserve previous history, you will need to move them
+from _`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_.
- - `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.
+Alternately, you can set `HISTFILE` manually to _`${ZDOTDIR:-$HOME}/.zhistory`_.
-Options
--------
+## Options
- - `BANG_HIST` treats the **!** character specially during expansion.
- - `EXTENDED_HISTORY` writes the history file in the *:start:elapsed;command* format.
- - `INC_APPEND_HISTORY` writes to the history file immediately, not when the shell exits.
- - `SHARE_HISTORY` shares history between all sessions.
- - `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history.
- - `HIST_IGNORE_DUPS` does not record an event that was just recorded again.
- - `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a duplicate.
- - `HIST_FIND_NO_DUPS` does not display a previously found event.
- - `HIST_IGNORE_SPACE` does not record an event starting with a space.
- - `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file.
- - `HIST_VERIFY` does not execute immediately upon history expansion.
- - `HIST_BEEP` beeps when accessing non-existent history.
+- `BANG_HIST` treats the **!** character specially during expansion.
+- `EXTENDED_HISTORY` writes the history file in the _:start:elapsed;command_
+ format.
+- `SHARE_HISTORY` shares history between all sessions. Note that
+ `SHARE_HISTORY`, `INC_APPEND_HISTORY`, and `INC_APPEND_HISTORY_TIME` are
+ mutually exclusive.
+- `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history.
+- `HIST_IGNORE_DUPS` does not record an event that was just recorded again.
+- `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a
+ duplicate.
+- `HIST_FIND_NO_DUPS` does not display a previously found event.
+- `HIST_IGNORE_SPACE` does not record an event starting with a space.
+- `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file.
+- `HIST_VERIFY` does not execute immediately upon history expansion.
+- `HIST_BEEP` beeps when accessing non-existent history.
-Aliases
--------
+## Variables
- - `history-stat` lists the ten most used commands
+- `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.
-Authors
--------
+## Aliases
-*The authors of this module should be contacted via the [issue tracker][2].*
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
- - [Robby Russell](https://github.com/robbyrussell)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+```sh
+zstyle ':prezto:module:history:alias' skip 'yes'
+```
-[1]: http://zsh.sourceforge.net/Guide/zshguide02.html#l16
+- `history-stat` lists the ten most used commands
+
+## Settings
+
+### histfile
+
+Can be configured either by setting HISTFILE manually before loading this
+module or by using zstyle:
+
+```sh
+zstyle ':prezto:module:history' histfile ""
+```
+
+defaults to "${ZDOTDIR:-$HOME}/.zsh_history".
+
+### histsize
+
+```sh
+zstyle ':prezto:module:history' histsize
+```
+
+defaults to 10000.
+
+### savehist
+
+```sh
+zstyle ':prezto:module:history' savehist
+```
+
+defaults to histsize
+
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][2]._
+
+- [Robby Russell](https://github.com/robbyrussell)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Indrajit Raychaudhuri](https://github.com/indrajitr)
+
+[1]: https://zsh.sourceforge.net/Guide/zshguide02.html#l16
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/history/init.zsh b/modules/history/init.zsh
index 31db4c5b3a..069dc2f16d 100644
--- a/modules/history/init.zsh
+++ b/modules/history/init.zsh
@@ -7,33 +7,37 @@
#
#
-# Variables
+# Options
#
-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.
+setopt BANG_HIST # Treat the '!' character specially during expansion.
+setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.
+setopt SHARE_HISTORY # Share history between all sessions.
+setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.
+setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again.
+setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate.
+setopt HIST_FIND_NO_DUPS # Do not display a previously found event.
+setopt HIST_IGNORE_SPACE # Do not record an event starting with a space.
+setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file.
+setopt HIST_VERIFY # Do not execute immediately upon history expansion.
+setopt HIST_BEEP # Beep when accessing non-existent history.
#
-# Options
+# Variables
#
-setopt BANG_HIST # Treat the '!' character specially during expansion.
-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 HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.
-setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again.
-setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate.
-setopt HIST_FIND_NO_DUPS # Do not display a previously found event.
-setopt HIST_IGNORE_SPACE # Do not record an event starting with a space.
-setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file.
-setopt HIST_VERIFY # Do not execute immediately upon history expansion.
-setopt HIST_BEEP # Beep when accessing non-existent history.
+zstyle -s ':prezto:module:history' histfile 'HISTFILE' \
+ || HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file.
+zstyle -s ':prezto:module:history' histsize 'HISTSIZE' \
+ || HISTSIZE=10000 # The maximum number of events to save in the internal history.
+zstyle -s ':prezto:module:history' savehist 'SAVEHIST' \
+ || SAVEHIST=$HISTSIZE # The maximum number of events to save in the history file.
#
# Aliases
#
-# Lists the ten most used commands.
-alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
+if ! zstyle -t ':prezto:module:history:alias' skip; then
+ # Lists the ten most used commands.
+ alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
+fi
diff --git a/modules/homebrew/README.md b/modules/homebrew/README.md
index 98a3444c19..77d8f3775c 100644
--- a/modules/homebrew/README.md
+++ b/modules/homebrew/README.md
@@ -1,39 +1,50 @@
-Homebrew
-========
+# Homebrew
-Defines Homebrew aliases.
+Defines Homebrew specific environment variables and aliases.
-Aliases
--------
+## Variables
-### Homebrew
+Execute the following to list the environment variables loaded in the shell:
- - `brewc` cleans outdated brews and their cached archives.
- - `brewC` cleans outdated brews, including keg-only, and their cached archives.
- - `brewi` installs a formula.
- - `brewl` lists installed formulae.
- - `brewo` lists brews which have an update available.
- - `brews` searches for a formula.
- - `brewu` updates and upgrades Homebrew packages and formulae.
- - `brewx` uninstalls a formula.
+```sh
+brew shellenv
+```
+
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:homebrew:alias' skip 'yes'
+```
+
+### Homebrew Core
+
+- `brewc` cleans outdated brews and their cached archives.
+- `brewi` installs a formula.
+- `brewL` lists installed formulae that are not dependencies of another
+ installed formula.
+- `brewl` lists installed formulae.
+- `brewo` lists brews which have an update available.
+- `brews` searches for a formula.
+- `brewu` upgrades outdated formulae.
+- `brewx` uninstalls a formula.
### Homebrew Cask
- - `cask` is aliased to `brew cask`.
- - `caskc` cleans up old cached downloads.
- - `caskC` cleans up all cached downloads.
- - `caski` installs a cask.
- - `caskl` lists installed casks.
- - `casko` lists casks which have an update available.
- - `casks` searches for a cask.
- - `caskx` uninstalls a cask.
+- `caski` installs a cask.
+- `caskl` lists installed casks.
+- `casko` lists casks which have an update available.
+- `casks` searches for a cask.
+- `casku` upgrades outdated casks.
+- `caskx` uninstalls a cask.
-Authors
--------
+## 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)
- - [Griffin Yourick](https://github.com/tough-griff)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Griffin Yourick](https://github.com/tough-griff)
[1]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh
index e517c0a5e0..dd2b56589c 100644
--- a/modules/homebrew/init.zsh
+++ b/modules/homebrew/init.zsh
@@ -5,31 +5,55 @@
# Sorin Ionescu
#
+# Load dependencies.
+pmodload 'helper'
+
# Return if requirements are not found.
-if [[ "$OSTYPE" != (darwin|linux)* ]]; then
+if ! is-darwin && ! is-linux; then
return 1
fi
+#
+# Variables
+#
+
+# Load standard Homebrew shellenv into the shell session.
+# Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related
+# variables as they are already handled in standard zsh configuration.
+if (( $+commands[brew] )); then
+ cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-shellenv-cache.zsh"
+ if [[ "$commands[brew]" -nt "$cache_file" \
+ || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
+ || ! -s "$cache_file" ]]; then
+ mkdir -p "$cache_file:h"
+ # Cache the result.
+ echo "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" >! "$cache_file" 2> /dev/null
+ fi
+
+ source "$cache_file"
+ unset cache_file
+fi
+
#
# Aliases
#
# Homebrew
-alias brewc='brew cleanup'
-alias brewC='brew cleanup --force'
-alias brewi='brew install'
-alias brewl='brew list'
-alias brewo='brew outdated'
-alias brews='brew search'
-alias brewu='brew update && brew upgrade'
-alias brewx='brew remove'
-
-# Homebrew Cask
-alias cask='brew cask'
-alias caskc='brew cask cleanup --outdated'
-alias caskC='brew cask cleanup'
-alias caski='brew cask install'
-alias caskl='brew cask list'
-alias casko='brew cask outdated'
-alias casks='brew cask search'
-alias caskx='brew cask uninstall'
+if ! zstyle -t ':prezto:module:homebrew:alias' skip; then
+ alias brewc='brew cleanup'
+ alias brewi='brew install'
+ alias brewL='brew leaves'
+ alias brewl='brew list'
+ alias brewo='brew outdated'
+ alias brews='brew search'
+ alias brewu='brew upgrade'
+ alias brewx='brew uninstall'
+
+ # Homebrew Cask
+ alias caski='brew install --cask'
+ alias caskl='brew list --cask'
+ alias casko='brew outdated --cask'
+ alias casks='brew search --cask'
+ alias casku='brew upgrade --cask'
+ alias caskx='brew uninstall --cask'
+fi
diff --git a/modules/macports/README.md b/modules/macports/README.md
index 70e4b8b942..15963b3307 100644
--- a/modules/macports/README.md
+++ b/modules/macports/README.md
@@ -1,25 +1,29 @@
-MacPorts
-========
+# MacPorts
Defines MacPorts aliases and adds MacPorts directories to path variables.
-Aliases
--------
+## Aliases
- - `portc` cleans the files used to build ports.
- - `porti` installs a port.
- - `ports` searches for a port.
- - `portu` upgrades a port.
- - `portU` upgrades MacPorts, the ports collection, and outdated ports.
- - `portx` uninstalls a port.
- - `portX` uninstalls inactive ports.
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
-Authors
--------
+```sh
+zstyle ':prezto:module:macports:alias' skip 'yes'
+```
-*The authors of this module should be contacted via the [issue tracker][1].*
+- `portc` cleans the files used to build ports.
+- `porti` installs a port.
+- `ports` searches for a port.
+- `portu` upgrades a port.
+- `portU` upgrades MacPorts, the ports collection, and outdated ports.
+- `portx` uninstalls a port.
+- `portX` uninstalls inactive ports.
- - [Matt Cable](https://github.com/curiousstranger)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][1]._
+
+- [Matt Cable](https://github.com/curiousstranger)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/macports/init.zsh b/modules/macports/init.zsh
index d55744a875..1ac3c53101 100644
--- a/modules/macports/init.zsh
+++ b/modules/macports/init.zsh
@@ -6,8 +6,11 @@
# Sorin Ionescu
#
+# Load dependencies.
+pmodload 'helper'
+
# Return if requirements are not found.
-if [[ "$OSTYPE" != darwin* ]]; then
+if ! is-darwin; then
return 1
fi
@@ -25,10 +28,12 @@ path=(
# Aliases
#
-alias portc='sudo port clean --all installed'
-alias porti='sudo port install'
-alias ports='port search'
-alias portU='sudo port selfupdate && sudo port upgrade outdated'
-alias portu='sudo port upgrade'
-alias portX='sudo port -u uninstall'
-alias portx='sudo port uninstall'
+if ! zstyle -t ':prezto:module:macports:alias' skip; then
+ alias portc='sudo port clean --all installed'
+ alias porti='sudo port install'
+ alias ports='port search'
+ alias portU='sudo port selfupdate && sudo port upgrade outdated'
+ alias portu='sudo port upgrade'
+ alias portX='sudo port -u uninstall'
+ alias portx='sudo port uninstall'
+fi
diff --git a/modules/node/README.md b/modules/node/README.md
index 951f2a7447..bc262151ef 100644
--- a/modules/node/README.md
+++ b/modules/node/README.md
@@ -1,32 +1,66 @@
-Node.js
-=======
+# Node.js
Provides utility functions for [Node.js][1], loads the Node Version Manager, and
-enables [npm][2] completion.
+enables [_npm_][2] completion.
-nvm
----
+This module must be loaded _before_ the _`completion`_ module so that the
+provided completion definitions are loaded.
-[nvm][5] allows for managing multiple, isolated Node.js installations in the
+## nodenv
+
+[_nodenv_][5] does one thing well - it is concerned solely with switching
+Node versions. It is simple and predictable, Just Works, and is rock solid in
+production. nodenv is forked from the popular [_rbenv_][6].
+
+This will be loaded automatically if nodenv is installed in `$NODENV_ROOT`,
+_`$XDG_CONFIG_HOME/nodenv`_, _`~/.nodenv`_, or `nodenv` is on the path.
+
+## nvm
+
+[_nvm_][7] allows for managing multiple, isolated Node.js installations in the
home directory.
-nodenv
-------
+This will be loaded automatically if nvm is installed in `$NVM_DIR`,
+_`$XDG_CONFIG_HOME/nvm`_, _`~/.nvm`_, or is installed with homebrew.
+
+## Variables
+
+- `N_PREFIX` stores the path to [_n_][8] cache.
+
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:node:alias' skip 'yes'
+```
+
+### npm
+
+- `npmi` install a package.
+- `npml` list installed packages.
+- `npmo` check for outdated packages.
+- `npmp` publish a package.
+- `npmP` remove extraneous packages.
+- `npmr` run arbitrary package scripts.
+- `npms` search for packages.
+- `npmt` test a package.
+- `npmu` update packages.
+- `npmx` uninstalls a package.
-[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].
+- `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
----------
+## Functions
- - `node-doc` opens the Node.js online [API documentation][3] in the default
- browser.
- - `node-info` exposes information about the Node.js environment via the
- `$node_info` associative array.
+- `node-doc` opens the Node.js online [API documentation][3] in the default
+ browser.
+- `node-info` exposes information about the Node.js environment via the
+ `$node_info` associative array.
-Theming
--------
+## Theming
To display the version number of the current Node.js version, define the
following style inside the `prompt_name_setup` function.
@@ -39,18 +73,19 @@ zstyle ':prezto:module:node:info:version' format 'version:%v'
Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call
`node-info` in `prompt_name_preexec` hook function.
-Authors
--------
+## 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)
- - [Zeh Rizzatti](https://github.com/zehrizzatti)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Zeh Rizzatti](https://github.com/zehrizzatti)
+- [Indrajit Raychaudhuri](https://github.com/indrajitr)
[1]: http://nodejs.org
[2]: http://npmjs.org
[3]: http://nodejs.org/api
[4]: https://github.com/sorin-ionescu/prezto/issues
-[5]: https://github.com/creationix/nvm
-[6]: https://github.com/nodenv/nodenv
-[7]: https://github.com/sstephenson/rbenv
+[5]: https://github.com/nodenv/nodenv
+[6]: https://github.com/sstephenson/rbenv
+[7]: https://github.com/nvm-sh/nvm
+[8]: https://github.com/tj/n
diff --git a/modules/node/functions/_grunt b/modules/node/functions/_grunt
new file mode 100644
index 0000000000..4f1a1888ea
--- /dev/null
+++ b/modules/node/functions/_grunt
@@ -0,0 +1,15 @@
+#compdef grunt
+#autoload
+
+#
+# Grunt completion, delegating to grunt to do all the completion work.
+#
+# Authors:
+# Indrajit Raychaudhuri
+#
+
+if (( $+commands[grunt] )); then
+ eval "$(grunt --completion=zsh)"
+
+ _grunt_completion "$@"
+fi
diff --git a/modules/node/functions/_gulp b/modules/node/functions/_gulp
new file mode 100644
index 0000000000..b06acca74a
--- /dev/null
+++ b/modules/node/functions/_gulp
@@ -0,0 +1,15 @@
+#compdef gulp
+#autoload
+
+#
+# Gulp completion, delegating to gulp to do all the completion work.
+#
+# Authors:
+# Indrajit Raychaudhuri
+#
+
+if (( $+commands[gulp] )); then
+ eval "$(gulp --completion=zsh)"
+
+ _gulp_completion "$@"
+fi
diff --git a/modules/node/functions/node-doc b/modules/node/functions/node-doc
index b1a048bd24..92ac71d0ff 100644
--- a/modules/node/functions/node-doc
+++ b/modules/node/functions/node-doc
@@ -13,6 +13,6 @@ if [[ -z "$BROWSER" ]]; then
fi
# TODO: Make the sections easier to use.
-"$BROWSER" "http://nodejs.org/docs/$(node --version | sed 's/-.*//')/api/all.html#${1}"
+"$BROWSER" "https://nodejs.org/docs/${$(node --version 2> /dev/null)/%-*}/api/all.html#${1}"
# }
diff --git a/modules/node/functions/node-info b/modules/node/functions/node-info
index 22ac31bd5c..7a591279f5 100644
--- a/modules/node/functions/node-info
+++ b/modules/node/functions/node-info
@@ -15,13 +15,15 @@ local version_formatted
unset node_info
typeset -gA node_info
-if (( $+functions[nvm_version] )); then
- version="${$(nvm_version)#v}"
-elif (( $+commands[nodenv] )); then
+if (( $+commands[nodenv] )); then
version="${${$(nodenv version)#v}[(w)0]}"
+elif (( $+functions[nvm_version] )); then
+ version="${$(nvm_version)#v}"
+elif (( $+commands[node] )) ; then
+ version="${$(node -v)#v}"
fi
-if [[ "$version" != (none|) ]]; then
+if [[ "$version" != (none|system) ]]; then
zstyle -s ':prezto:module:node:info:version' format 'version_format'
zformat -f version_formatted "$version_format" "v:$version"
node_info[version]="$version_formatted"
diff --git a/modules/node/init.zsh b/modules/node/init.zsh
index 0a516f0dfb..0c27764de7 100644
--- a/modules/node/init.zsh
+++ b/modules/node/init.zsh
@@ -1,45 +1,67 @@
#
-# Loads the Node Version Manager and enables npm completion.
+# Configures Node local installation, loads version managers, and defines
+# variables and aliases.
#
# Authors:
# Sorin Ionescu
# Zeh Rizzatti
+# Indrajit Raychaudhuri
#
-# Load manually installed NVM into the shell session.
-if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
- source "$HOME/.nvm/nvm.sh"
+# Possible lookup locations for manually installed nodenv and nvm.
+local_nodenv_paths=({$NODENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}nodenv}/bin/nodenv(N))
+local_nvm_paths=({$NVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}nvm}/nvm.sh(N))
-# Load package manager installed NVM into the shell session.
-elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2> /dev/null)" ]]; then
- source "$(brew --prefix nvm)/nvm.sh"
+# Load manually installed or package manager installed nodenv into the shell
+# session.
+if (( $#local_nodenv_paths || $+commands[nodenv] )); then
-# Load manually installed nodenv into the shell session.
-elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then
- path=("$HOME/.nodenv/bin" $path)
- eval "$(nodenv init - --no-rehash zsh)"
+ # Ensure manually installed nodenv is added to path when present.
+ [[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path)
-# Load package manager installed nodenv into the shell session.
-elif (( $+commands[nodenv] )); then
- eval "$(nodenv init - --no-rehash zsh)"
+ eval "$(nodenv init - zsh)"
+
+# Load manually installed nvm into the shell session.
+elif (( $#local_nvm_paths )); then
+ source "$local_nvm_paths[1]" --no-use
+
+# Load package manager installed nvm into the shell session.
+elif (( $+commands[brew] )) \
+ && [[ -d "${nvm_path::="$(brew --prefix 2> /dev/null)"/opt/nvm}" ]]; then
+ source "$nvm_path/nvm.sh" --no-use
+fi
+
+unset local_n{odenv,vm}_paths nvm_path
# Return if requirements are not found.
-elif (( ! $+commands[node] )); then
+if (( ! $+commands[node] && ! $#functions[(i)n(odenv|vm)] )); then
return 1
fi
-# Load NPM completion.
-if (( $+commands[npm] )); then
- cache_file="${TMPDIR:-/tmp}/prezto-node-cache.$UID.zsh"
+#
+# Variables
+#
+
+N_PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}/n" # The path to 'n' cache.
- if [[ "$commands[npm]" -nt "$cache_file" \
- || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
- || ! -s "$cache_file" ]]; then
- # npm is slow; cache its output.
- npm completion >! "$cache_file" 2> /dev/null
- fi
+#
+# Aliases
+#
- source "$cache_file"
+if ! zstyle -t ':prezto:module:node:alias' skip; then
+ # npm
+ alias npmi='npm install'
+ alias npml='npm list'
+ alias npmo='npm outdated'
+ alias npmp='npm publish'
+ alias npmP='npm prune'
+ alias npmr='npm run'
+ alias npms='npm search'
+ alias npmt='npm test'
+ alias npmu='npm update'
+ alias npmx='npm uninstall'
- unset cache_file
+ alias npmci='npm ci'
+ alias npmcit='npm cit'
+ alias npmit='npm it'
fi
diff --git a/modules/ocaml/README.md b/modules/ocaml/README.md
index e1701586b0..75aed54006 100644
--- a/modules/ocaml/README.md
+++ b/modules/ocaml/README.md
@@ -1,10 +1,8 @@
-OCaml
-=====
+# OCaml
Initializes [OCaml][1] package management.
-OPAM
-----
+## OPAM
[OPAM][2] is a package manager for OCaml.
@@ -15,13 +13,12 @@ relevant path and OCaml variables.
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]: http://ocaml.org/
+[1]: https://ocaml.org/
[2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/osx/README.md b/modules/osx/README.md
index 1f93a2c332..893d3af325 100644
--- a/modules/osx/README.md
+++ b/modules/osx/README.md
@@ -1,50 +1,50 @@
-OSX
-===
+# OSX
Defines [macOS][1] aliases and functions.
-Settings
---------
+This module must be loaded _before_ the [_`completion`_][2] module so that the
+provided completion definitions are loaded automatically by _`completion`_
+module.
+
+## Settings
### Dash Keyword
-To change the keyword used by `mand` to open man pages in [_Dash.app_][2] from
-its default value of 'manpages', add the following line in *zpreztorc* and
-replace the **keyword** with the one configured in [_Dash.app_][2].
+To change the keyword used by `mand` to open man pages in [_Dash.app_][3] from
+its default value of 'manpages', add the following line in
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_ and replace the **keyword** with the one
+configured in [_Dash.app_][3].
```sh
zstyle ':prezto:module:osx:man' dash-keyword 'keyword'
```
-Aliases
--------
+## Aliases
- - `cdf` changes the current working director to the current _Finder_
- directory.
- - `pushdf` pushes the current working directory onto the directory queue and
- changes the current working director to the current _Finder_ directory.
+- `cdf` changes the current working director to the current _Finder_ directory.
+- `pushdf` pushes the current working directory onto the directory queue and
+ changes the current working director to the current _Finder_ directory.
-Functions
----------
+## Functions
- - `mand` opens _man_ pages in [_Dash.app_][2].
- - `manp` opens _man_ pages in _Preview.app_.
- - `pfd` prints the current _Finder_ directory.
- - `pfs` prints the current _Finder_ selection.
- - `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]).
- - `ql` previews files in Quick Look.
- - `osx-rm-dir-metadata` deletes .DS\_Store, \_\_MACOSX cruft.
- - `osx-ls-download-history` displays the macOS download history.
- - `osx-rm-download-history` deletes the macOS download history.
+- `mand` opens _man_ pages in [_Dash.app_][3].
+- `manp` opens _man_ pages in _Preview.app_.
+- `pfd` prints the current _Finder_ directory.
+- `pfs` prints the current _Finder_ selection.
+- `tab` creates a new tab (works in both _Terminal_ and [_iTerm.app_][4]).
+- `ql` previews files in Quick Look.
+- `osx-rm-dir-metadata` deletes _`.DS_Store`_, _`__MACOSX`_ cruft.
+- `osx-ls-download-history` displays the macOS download history.
+- `osx-rm-download-history` deletes the macOS download history.
-Authors
--------
+## 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][5]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: http://www.apple.com/macosx/
-[2]: http://kapeli.com/dash
-[3]: http://www.iterm2.com/
-[4]: https://github.com/sorin-ionescu/prezto/issues
+[1]: https://www.apple.com/macos/
+[2]: ../completion#readme
+[3]: https://kapeli.com/dash
+[4]: https://www.iterm2.com/
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/osx/functions/mand b/modules/osx/functions/mand
index 2902c76be7..b62fab33e2 100644
--- a/modules/osx/functions/mand
+++ b/modules/osx/functions/mand
@@ -8,7 +8,7 @@
function mand {
if (( $# > 0 )); then
zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages'
- open "dash://$dashkw:$1" 2> /dev/null
+ open "dash://$dashkw%3A$1" 2> /dev/null
if (( $? != 0 )); then
print "$0: Dash is not installed" >&2
break
diff --git a/modules/osx/functions/manp b/modules/osx/functions/manp
index fcb2a02669..d31bbc409e 100644
--- a/modules/osx/functions/manp
+++ b/modules/osx/functions/manp
@@ -9,7 +9,7 @@ function manp {
local page
if (( $# > 0 )); then
for page in "$@"; do
- man -t "$page" | open -f -a Preview
+ mandoc -T pdf "$(/usr/bin/man -w $page)" | open -fa Preview
done
else
print 'What manual page do you want?' >&2
diff --git a/modules/osx/functions/trash b/modules/osx/functions/trash
new file mode 100644
index 0000000000..0efa2154eb
--- /dev/null
+++ b/modules/osx/functions/trash
@@ -0,0 +1,31 @@
+#
+# Moves files to the macOS trash.
+#
+
+# function trash {
+
+emulate -L zsh
+setopt LOCAL_OPTIONS EXTENDED_GLOB
+
+local file
+local -a files=()
+for file in $@; do
+ if [[ -e $file ]]; then
+ # ':a' gets the full path (do not use ':A', which would resolve symlinks)
+ files+=("the POSIX file \"${file:a}\"")
+ else
+ print "trash: No such file or directory '$file'." >&2
+ return 1
+ fi
+done
+
+if (( $#files == 0 )); then
+ print 'usage: trash ' >&2
+ return 64 # Match rm's return code.
+fi
+
+# Join file list with commas, and tell Finder to trash that list.
+local file_list="${(pj., .)files}"
+osascript 2>&1 > /dev/null -e "tell app \"Finder\" to move { "${file_list}" } to trash"
+
+# }
diff --git a/modules/osx/init.zsh b/modules/osx/init.zsh
index f7871ca718..62f219437b 100644
--- a/modules/osx/init.zsh
+++ b/modules/osx/init.zsh
@@ -5,8 +5,11 @@
# Sorin Ionescu
#
+# Load dependencies.
+pmodload 'helper'
+
# Return if requirements are not found.
-if [[ "$OSTYPE" != darwin* ]]; then
+if ! is-darwin; then
return 1
fi
diff --git a/modules/pacman/README.md b/modules/pacman/README.md
index a619a74777..4e6ad8bcd0 100644
--- a/modules/pacman/README.md
+++ b/modules/pacman/README.md
@@ -1,11 +1,9 @@
-Pacman
-======
+# Pacman
Provides aliases and functions for the [Pacman][1] package manager and
frontends.
-Settings
---------
+## Settings
It is possible to use a Pacman frontend with the pacman aliases provided by this
package as long as that frontend supports the same command line options (The
@@ -17,53 +15,51 @@ supported by Archlinux. It is currently recommended to manually build AUR
packages using the [provided instructions][3]. The [aurutils][4] project has a
set of small utilities to make this easier.
-To enable a Pacman frontend, add the following line to *zpreztorc*, substituting
-`pacman_frontend` with the name of the frontent:
+To enable a different Pacman frontend, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with the name
+of the preferred frontend.
```sh
-zstyle ':prezto:module:pacman' frontend 'pacman_frontend'
+zstyle ':prezto:module:pacman' frontend ''
```
-Aliases
--------
+## Aliases
### Pacman
- - `pac` is short for `pacman`.
- - `paci` installs packages from repositories.
- - `pacI` installs packages from files.
- - `pacx` removes packages and unneeded dependencies.
- - `pacX` removes packages, their configuration, and unneeded dependencies.
- - `pacq` displays information about a package from the repositories.
- - `pacQ` displays information about a package from the local database.
- - `pacs` searches for packages in the repositories.
- - `pacS` searches for packages in the local database.
- - `pacu` synchronizes the local package and Arch Build System (requires `abs`)
- databases against the repositories.
- - `pacU` synchronizes the local package database against the repositories then
- upgrades outdated packages.
- - `pacman-list-orphans` lists orphan packages.
- - `pacman-remove-orphans` removes orphan packages.
+- `pac` is short for `pacman`.
+- `paci` installs packages from repositories.
+- `pacI` installs packages from files.
+- `pacx` removes packages and unneeded dependencies.
+- `pacX` removes packages, their configuration, and unneeded dependencies.
+- `pacq` displays information about a package from the repositories.
+- `pacQ` displays information about a package from the local database.
+- `pacs` searches for packages in the repositories.
+- `pacS` searches for packages in the local database.
+- `pacu` synchronizes the local package and Arch Build System (requires `abs`)
+ databases against the repositories.
+- `pacU` synchronizes the local package database against the repositories then
+ upgrades outdated packages.
+- `pacman-list-orphans` lists orphan packages.
+- `pacman-remove-orphans` removes orphan packages.
### Frontends
-Functions
----------
+## Functions
- - `aurget` clone an aur package
- - `pacman-list-explicit` lists explicitly installed pacman packages.
- - `pacman-list-disowned` lists pacman disowned files.
+- `aurget` clone an aur package.
+- `pacman-list-explicit` lists explicitly installed pacman packages.
+- `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)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Benjamin Boudreau](https://github.com/dreur)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: http://www.archlinux.org/pacman/
-[2]: https://wiki.archlinux.org/index.php/AUR_helpers#Comparison_table
-[3]: https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages
+[1]: https://www.archlinux.org/pacman/
+[2]: https://wiki.archlinux.org/title/AUR_helpers#Comparison_tables
+[3]: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages
[4]: https://github.com/AladW/aurutils
[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/pacman/functions/pacman-list-disowned b/modules/pacman/functions/pacman-list-disowned
index 9c8f56a0e9..c5e84fcf67 100644
--- a/modules/pacman/functions/pacman-list-disowned
+++ b/modules/pacman/functions/pacman-list-disowned
@@ -8,11 +8,11 @@
# function pacman-list-disowned {
-local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$"
+local tmp="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pacman-disowned-$$"
local db="$tmp/db"
local fs="$tmp/fs"
-mkdir "$tmp"
+mkdir -p "$tmp"
trap 'rm -rf "$tmp"' EXIT
pacman --quiet --query --list | sort --unique > "$db"
diff --git a/modules/perl/README.md b/modules/perl/README.md
index 67f2a17798..dd594491fe 100644
--- a/modules/perl/README.md
+++ b/modules/perl/README.md
@@ -1,18 +1,16 @@
-Perl
-====
+# Perl
Enables local [Perl][1] module installation on macOS and defines aliases.
-Local Module Installation
--------------------------
+## Local Module Installation
Perl versions older than 5.14 do not support the local installation of Perl
modules natively. This module allows for local installation of Perl modules on
-macOS in *~/Library/Perl/5.12* by altering the environment.
+macOS in _`~/Library/Perl/5.12`_ by altering the environment.
### Usage
-For Perl versions older than 5.14, install *local::lib*.
+For Perl versions older than 5.14, install _`local::lib`_.
```console
curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz
@@ -22,73 +20,75 @@ perl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12
make && make test && make install
```
-Install *cpanminus*:
+Install _cpanminus_:
```console
curl -L http://cpanmin.us | perl - --self-upgrade
```
-Perlbrew
---------
+## Perlbrew
An alternative to the above is to use [Perlbrew][2], which allows for the
management of multiple, isolated Perl installations in the home directory.
-plenv
------
+## plenv
-Yet another alternative is [plenv][3]. This is inspired from rbenv and enables
-switching between multiple binary installations.
+Yet another alternative is [_plenv_][3]. This is inspired from _rbenv_ and
+enables switching between multiple binary installations.
-The subcommands of plenv is similar with rbenv.
+The subcommands of _plenv_ is similar with _rbenv_.
-Aliases
--------
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:perl:alias' skip 'yes'
+```
### General
- - `pl` is short for `perl`.
- - `pld` looks up Perl documentation (`perldoc`).
- - `ple` executes a one line program in a loop (`perl -wlne`).
-
-### Perlbrew
-
- - `plb` manages Perl environments.
- - `plba` lists available Perl versions.
- - `plbi` installs a Perl version.
- - `plbl` lists installed Perl versions.
- - `plbo` temporarily turns off Perlbrew.
- - `plbO` turns off Perlbrew.
- - `plbs` switches to a Perl version.
- - `plbu` uninstalls a Perl version.
- - `plbx` temporarily sets the Perl version to use.
-
-### plenv
-
- - `plv` manages Perl environments.
- - `plvc` List all available plenv commands.
- - `plvl` Set or show the local application-specific Perl version.
- - `plvg` Set or show the global Perl version.
- - `plvs` Set or show the shell-specific Perl version.
- - `plvi` Install a Perl version using the perl-build plugin.
- - `plvu` Uninstall a specific Perl version.
- - `plvr` Rehash plenv shims (run this after installing executables).
- - `plvv` Show the current Perl version and its origin.
- - `plvV` List all Perl versions available to plenv.
- - `plvw` Display the full path to an executable.
- - `plvW` List all Perl versions that contain the given executable.
- - `plvm` List cpan modules in current perl.
- - `plvM` Migrate cpan modules from other version.
- - `plvI` Install cpanm.
-
-Functions
----------
-
- - `perl-info` exposes information about the Perl environment via the
- `$perl_info` associative array.
-
-Theming
--------
+- `pl` is short for `perl`.
+- `pld` looks up Perl documentation (`perldoc`).
+- `ple` executes a one line program in a loop (`perl -wlne`).
+
+### Perlbrew (plb)
+
+- `plb` manages Perl environments.
+- `plba` lists available Perl versions.
+- `plbi` installs a Perl version.
+- `plbl` lists installed Perl versions.
+- `plbo` temporarily turns off Perlbrew.
+- `plbO` turns off Perlbrew.
+- `plbs` switches to a Perl version.
+- `plbu` uninstalls a Perl version.
+- `plbx` temporarily sets the Perl version to use.
+
+### plenv (plv)
+
+- `plv` manages Perl environments.
+- `plvc` List all available plenv commands.
+- `plvl` Set or show the local application-specific Perl version.
+- `plvg` Set or show the global Perl version.
+- `plvs` Set or show the shell-specific Perl version.
+- `plvi` Install a Perl version using the perl-build plugin.
+- `plvu` Uninstall a specific Perl version.
+- `plvr` Rehash plenv shims (run this after installing executables).
+- `plvv` Show the current Perl version and its origin.
+- `plvV` List all Perl versions available to plenv.
+- `plvw` Display the full path to an executable.
+- `plvW` List all Perl versions that contain the given executable.
+- `plvm` List cpan modules in current perl.
+- `plvM` Migrate cpan modules from other version.
+- `plvI` Install cpanm.
+
+## Functions
+
+- `perl-info` exposes information about the Perl environment via the
+ `$perl_info` associative array.
+
+## Theming
To display the name of the current Perl version in a prompt, define the
following style in the `prompt_name_setup` function.
@@ -101,14 +101,13 @@ zstyle ':prezto:module:perl:info:version' format 'version:%v'
Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call
`perl-info` in the `prompt_name_precmd` hook function.
-Authors
--------
+## 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]: http://www.perl.org
-[2]: http://perlbrew.pl
+[1]: https://www.perl.org
+[2]: https://perlbrew.pl
[3]: https://github.com/tokuhirom/plenv
[4]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/perl/init.zsh b/modules/perl/init.zsh
index b7a794797a..efadd9ea58 100644
--- a/modules/perl/init.zsh
+++ b/modules/perl/init.zsh
@@ -10,6 +10,9 @@ if (( ! $+commands[perl] )); then
return 1
fi
+# Load dependencies.
+pmodload 'helper'
+
#
# Load Perlbrew or plenv
#
@@ -37,13 +40,14 @@ fi
# Local Module Installation
#
-if [[ "$OSTYPE" == darwin* ]]; then
+if is-darwin; then
# Perl is slow; cache its output.
- cache_file="${TMPDIR:-/tmp}/prezto-perl-cache.$UID.zsh"
+ cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/perl-cache.zsh"
perl_path="$HOME/Library/Perl/5.12"
if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then
if [[ "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" || ! -s "$cache_file" ]]; then
+ mkdir -p "$cache_file:h"
perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file"
fi
@@ -57,37 +61,39 @@ fi
# Aliases
#
-# General
-alias pl='perl'
-alias pld='perldoc'
-alias ple='perl -wlne'
-
-# Perlbrew
-if (( $+commands[perlbrew] )); then
- alias plb='perlbrew'
- alias plba='perlbrew available'
- alias plbi='perlbrew install'
- alias plbl='perlbrew list'
- alias plbo='perlbrew off'
- alias plbO='perlbrew switch-off'
- alias plbs='perlbrew switch'
- alias plbu='perlbrew use'
- alias plbx='perlbrew uninstall'
+if ! zstyle -t ':prezto:module:perl:alias' skip; then
+ # General
+ alias pl='perl'
+ alias pld='perldoc'
+ alias ple='perl -wlne'
-elif (( $+commands[plenv] )); then
- alias plv='plenv'
- alias plvc='plenv commands'
- alias plvl='plenv local'
- alias plvg='plenv global'
- alias plvs='plenv shell'
- alias plvi='plenv install'
- alias plvu='plenv uninstall'
- alias plvr='plenv rehash'
- alias plvv='plenv version'
- alias plvV='plenv versions'
- alias plvw='plenv which'
- alias plvW='plenv whence'
- alias plvm='plenv list-modules'
- alias plvM='plenv migrate-modules'
- alias plvI='plenv install-cpanm'
+ # Perlbrew
+ if (( $+commands[perlbrew] )); then
+ alias plb='perlbrew'
+ alias plba='perlbrew available'
+ alias plbi='perlbrew install'
+ alias plbl='perlbrew list'
+ alias plbo='perlbrew off'
+ alias plbO='perlbrew switch-off'
+ alias plbs='perlbrew switch'
+ alias plbu='perlbrew use'
+ alias plbx='perlbrew uninstall'
+
+ elif (( $+commands[plenv] )); then
+ alias plv='plenv'
+ alias plvc='plenv commands'
+ alias plvl='plenv local'
+ alias plvg='plenv global'
+ alias plvs='plenv shell'
+ alias plvi='plenv install'
+ alias plvu='plenv uninstall'
+ alias plvr='plenv rehash'
+ alias plvv='plenv version'
+ alias plvV='plenv versions'
+ alias plvw='plenv which'
+ alias plvW='plenv whence'
+ alias plvm='plenv list-modules'
+ alias plvM='plenv migrate-modules'
+ alias plvI='plenv install-cpanm'
+ fi
fi
diff --git a/modules/prompt/README.md b/modules/prompt/README.md
index 523c83e929..2279b55991 100644
--- a/modules/prompt/README.md
+++ b/modules/prompt/README.md
@@ -1,26 +1,24 @@
-Prompt
-======
+# Prompt
Loads prompt [themes][1].
-Settings
---------
+## Settings
### Prompt Theme
-To select a prompt theme, add the following to *zpreztorc*, and replace **name**
-with the name of the theme you wish to load. Setting it to **random** will load
-a random theme.
+To select a prompt theme, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_,
+and replace `''` with the name of the theme you wish to load. Setting it
+to `'random'` will load a random theme every time.
```sh
-zstyle ':prezto:module:prompt' theme 'name'
+zstyle ':prezto:module:prompt' theme ''
```
### Prompt Display Length
To change working directory prompt display length from 'short', set the
-following to 'long' (without `~` expansion) or 'full' (with `~` expansion)
-in *zpreztorc*.
+following to 'long' (without `~` expansion) or 'full' (with `~` expansion) in
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:prompt' pwd-length 'short'
@@ -35,14 +33,29 @@ this can be disabled with the following snippet.
zstyle ':prezto:module:prompt' show-return-val 'no'
```
-Theming
--------
+## Theming
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
-project, themes **should** be placed in the *modules/prompt/functions*
+project, themes **should** be placed in the _modules/prompt/functions_
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
There are three theme functions, a setup function, a help function, and
@@ -106,7 +119,7 @@ function prompt_name_preview {
### 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.
#### `prompt_name_precmd`
@@ -118,7 +131,8 @@ 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
a function before you calling it.
-**Do not register hook functions. They will be registered by the `prompt` function.**
+**Do not register hook functions. They will be automatically registered by the
+`prompt` function.**
The most basic example of this function can be seen below.
@@ -130,10 +144,9 @@ 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
installed and configured properly.
@@ -141,16 +154,14 @@ installed and configured properly.
Powerline provides some information on [terminal support][4] and [how to install
patched fonts][5] which should fix most font issues.
+## Authors
-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]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes
-[2]: http://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions
+[1]: https://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes
+[2]: https://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions
[3]: https://github.com/sorin-ionescu/prezto/issues
-[4]: http://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements
-[5]: http://powerline.readthedocs.io/en/latest/installation.html#fonts-installation
+[4]: https://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements
+[5]: https://powerline.readthedocs.io/en/latest/installation.html#fonts-installation
diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster
index 3ad94b6599..6bba672c78 160000
--- a/modules/prompt/external/agnoster
+++ b/modules/prompt/external/agnoster
@@ -1 +1 @@
-Subproject commit 3ad94b659910c775a6560c45b1524d23d8c83b09
+Subproject commit 6bba672c7812a76defc3efed9b6369eeee2425dc
diff --git a/modules/prompt/external/async b/modules/prompt/external/async
index b001fa529a..ee1d11b68c 160000
--- a/modules/prompt/external/async
+++ b/modules/prompt/external/async
@@ -1 +1 @@
-Subproject commit b001fa529a874fbe8bd22a9d4526153138645289
+Subproject commit ee1d11b68c38dec24c22b1c51a45e8a815a79756
diff --git a/modules/prompt/external/powerlevel10k b/modules/prompt/external/powerlevel10k
new file mode 160000
index 0000000000..35833ea15f
--- /dev/null
+++ b/modules/prompt/external/powerlevel10k
@@ -0,0 +1 @@
+Subproject commit 35833ea15f14b71dbcebc7e54c104d8d56ca5268
diff --git a/modules/prompt/external/powerlevel9k b/modules/prompt/external/powerlevel9k
deleted file mode 160000
index 17c069d25a..0000000000
--- a/modules/prompt/external/powerlevel9k
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 17c069d25ac7b24af6b5dc7ecb9597cef881f582
diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure
index a95d55cc7d..a02209d36c 160000
--- a/modules/prompt/external/pure
+++ b/modules/prompt/external/pure
@@ -1 +1 @@
-Subproject commit a95d55cc7d3a73fc562ac11e23c26113ed6d58cf
+Subproject commit a02209d36c8509c0e62f44324127632999c9c0cf
diff --git a/modules/prompt/functions/prompt-pwd b/modules/prompt/functions/prompt-pwd
index 53613e7292..d2d1788fdf 100644
--- a/modules/prompt/functions/prompt-pwd
+++ b/modules/prompt/functions/prompt-pwd
@@ -28,3 +28,4 @@ unset current_pwd
print "$ret_directory"
# }
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_cloud_setup b/modules/prompt/functions/prompt_cloud_setup
index 0637208b4e..908e3c9318 100644
--- a/modules/prompt/functions/prompt_cloud_setup
+++ b/modules/prompt/functions/prompt_cloud_setup
@@ -9,7 +9,7 @@
# - The prompt is prefixed by a character sequence of your choice.
# - Only displays the current directory instead of the full path.
# - Displays the current branch when in a git project (this requires loading
-# the git module before prompt in ~/.zpreztorc).
+# the git module before prompt in ${ZDOTDIR:-$HOME}/.zpreztorc).
# - Displays a character at the end of the prompt when in a git project with
# "dirty" files.
#
@@ -17,7 +17,7 @@
# This prompt's prefix symbol and colors are customizable:
# prompt cloud [] [] []
#
-# In ~/.zpreztorc:
+# In ${ZDOTDIR:-$HOME}/.zpreztorc:
# zstyle ':prezto:module:prompt' theme 'cloud' \
# [''] \
# [''] \
@@ -53,7 +53,7 @@ This prompt's prefix symbol and colors are customizable:
prompt cloud [] [] []
-In ~/.zpreztorc:
+In ${ZDOTDIR:-$HOME}/.zpreztorc:
zstyle ':prezto:module:prompt' theme 'cloud' [''] [''] ['']
If these options are not provided, the symbol defaults to ☁ with colors cyan
@@ -104,6 +104,9 @@ function prompt_cloud_setup {
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_cloud_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'yes'
zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f"
@@ -119,3 +122,4 @@ function prompt_cloud_setup {
}
prompt_cloud_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup
index 4fe132d6e1..1fbaedfb03 100644
--- a/modules/prompt/functions/prompt_damoekri_setup
+++ b/modules/prompt/functions/prompt_damoekri_setup
@@ -40,6 +40,9 @@ function prompt_damoekri_setup {
# Add hook for calling git-info and ruby-info before each command.
add-zsh-hook precmd prompt_damoekri_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f'
@@ -63,3 +66,4 @@ function prompt_damoekri_setup {
}
prompt_damoekri_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_giddie_setup b/modules/prompt/functions/prompt_giddie_setup
index 3c194fb9a0..2b36ccc72a 100644
--- a/modules/prompt/functions/prompt_giddie_setup
+++ b/modules/prompt/functions/prompt_giddie_setup
@@ -47,6 +47,9 @@ function prompt_giddie_setup {
# Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_giddie_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f'
@@ -74,3 +77,4 @@ function prompt_giddie_setup {
}
prompt_giddie_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_kylewest_setup b/modules/prompt/functions/prompt_kylewest_setup
index 70b6a54afe..d3b33a9548 100644
--- a/modules/prompt/functions/prompt_kylewest_setup
+++ b/modules/prompt/functions/prompt_kylewest_setup
@@ -40,6 +40,9 @@ function prompt_kylewest_setup {
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_kylewest_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}❯%f%b"
@@ -63,3 +66,4 @@ function prompt_kylewest_setup {
}
prompt_kylewest_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_minimal_setup b/modules/prompt/functions/prompt_minimal_setup
index 7456ffdb1d..e57aac57c1 100644
--- a/modules/prompt/functions/prompt_minimal_setup
+++ b/modules/prompt/functions/prompt_minimal_setup
@@ -32,6 +32,9 @@ function prompt_minimal_setup {
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_minimal_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*' check-for-changes true
@@ -47,4 +50,14 @@ function prompt_minimal_setup {
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 "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_nicoulaj_setup b/modules/prompt/functions/prompt_nicoulaj_setup
index 447ba1f40a..4b40bac8b1 100644
--- a/modules/prompt/functions/prompt_nicoulaj_setup
+++ b/modules/prompt/functions/prompt_nicoulaj_setup
@@ -35,6 +35,9 @@ function prompt_nicoulaj_setup {
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_nicoulaj_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Customizable parameters.
local max_path_chars=30
local user_char='❯'
@@ -58,3 +61,4 @@ function prompt_nicoulaj_setup {
}
prompt_nicoulaj_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup
index 4f19989daf..9286967f9a 100644
--- a/modules/prompt/functions/prompt_paradox_setup
+++ b/modules/prompt/functions/prompt_paradox_setup
@@ -116,6 +116,9 @@ function prompt_paradox_setup {
add-zsh-hook preexec prompt_paradox_preexec
add-zsh-hook precmd prompt_paradox_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b'
@@ -154,3 +157,4 @@ ${(e)$(prompt_paradox_build_prompt)}
}
prompt_paradox_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_peepcode_setup b/modules/prompt/functions/prompt_peepcode_setup
index 2081961ca4..3a108df4a6 100644
--- a/modules/prompt/functions/prompt_peepcode_setup
+++ b/modules/prompt/functions/prompt_peepcode_setup
@@ -34,6 +34,9 @@ function prompt_peepcode_setup {
# Add a hook for calling info functions before each command.
add-zsh-hook precmd prompt_peepcode_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set git-info parameters.
zstyle ':prezto:module:git:info' verbose 'no'
zstyle ':prezto:module:git:info:action' format ' +%s'
@@ -83,3 +86,4 @@ function prompt_peepcode_preview {
}
prompt_peepcode_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_powerlevel10k_setup b/modules/prompt/functions/prompt_powerlevel10k_setup
new file mode 120000
index 0000000000..8c66c69696
--- /dev/null
+++ b/modules/prompt/functions/prompt_powerlevel10k_setup
@@ -0,0 +1 @@
+../external/powerlevel10k/powerlevel10k.zsh-theme
\ No newline at end of file
diff --git a/modules/prompt/functions/prompt_powerlevel9k_setup b/modules/prompt/functions/prompt_powerlevel9k_setup
deleted file mode 120000
index f692e0ae77..0000000000
--- a/modules/prompt/functions/prompt_powerlevel9k_setup
+++ /dev/null
@@ -1 +0,0 @@
-../external/powerlevel9k/powerlevel9k.zsh-theme
\ No newline at end of file
diff --git a/modules/prompt/functions/prompt_skwp_setup b/modules/prompt/functions/prompt_skwp_setup
index f69dcddfe7..b84011fe53 100644
--- a/modules/prompt/functions/prompt_skwp_setup
+++ b/modules/prompt/functions/prompt_skwp_setup
@@ -36,6 +36,9 @@ function prompt_skwp_setup {
# Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_skwp_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Use extended color pallete if available.
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
_prompt_skwp_colors=(
@@ -73,3 +76,4 @@ function prompt_skwp_setup {
}
prompt_skwp_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup
index 3d41b3af46..cd1725bd05 100644
--- a/modules/prompt/functions/prompt_smiley_setup
+++ b/modules/prompt/functions/prompt_smiley_setup
@@ -41,6 +41,9 @@ function prompt_smiley_setup {
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_smiley_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
@@ -63,3 +66,4 @@ function prompt_smiley_setup {
}
prompt_smiley_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup
index 30e71a9285..a7d341ee8d 100644
--- a/modules/prompt/functions/prompt_sorin_setup
+++ b/modules/prompt/functions/prompt_sorin_setup
@@ -54,6 +54,13 @@ function prompt_sorin_async_callback {
zle && zle reset-prompt
fi
;;
+ "[async]")
+ # Code is 1 for corrupted worker output and 2 for dead worker.
+ if [[ $2 -eq 2 ]]; then
+ # Our worker died unexpectedly.
+ typeset -g prompt_prezto_async_init=0
+ fi
+ ;;
esac
}
@@ -110,8 +117,6 @@ function prompt_sorin_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent sp subst)
- _prompt_sorin_precmd_async_pid=0
- _prompt_sorin_precmd_async_data=$(mktemp "${TMPDIR:-/tmp}/sorin-prompt-async-XXXXXXXXXX")
# Load required functions.
autoload -Uz add-zsh-hook
@@ -120,6 +125,9 @@ function prompt_sorin_setup {
# Add hook for calling git-info before each command.
add-zsh-hook precmd prompt_sorin_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b'
zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b'
@@ -144,16 +152,17 @@ function prompt_sorin_setup {
zstyle ':prezto:module:git:info:keys' format \
'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u'
+ # Set python-info parameters.
+ zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} '
+
# Set up non-zero return value display
local show_return="✘ "
# Default is to show the return value
if zstyle -T ':prezto:module:prompt' show-return-val; then
show_return+='%? '
fi
- # Set python-info format
- zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} '
- # Get the async worker set up
+ # Get the async worker set up.
_sorin_cur_git_root=''
_prompt_sorin_git=''
@@ -177,3 +186,4 @@ function prompt_sorin_preview {
}
prompt_sorin_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/functions/prompt_steeef_setup b/modules/prompt/functions/prompt_steeef_setup
index b241f9aa35..d32bd343f0 100644
--- a/modules/prompt/functions/prompt_steeef_setup
+++ b/modules/prompt/functions/prompt_steeef_setup
@@ -41,6 +41,9 @@ function prompt_steeef_setup {
# Add hook for calling vcs_info before each command.
add-zsh-hook precmd prompt_steeef_precmd
+ # Tell prezto we can manage this prompt
+ zstyle ':prezto:module:prompt' managed 'yes'
+
# Use extended color pallete if available.
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
_prompt_steeef_colors=(
@@ -72,6 +75,9 @@ function prompt_steeef_setup {
local unstaged_format="${_prompt_steeef_colors[2]}●%f"
local staged_format="${_prompt_steeef_colors[5]}●%f"
+ # Set editor-info parameters.
+ zstyle ':prezto:module:editor:info:keymap:primary' format '$'
+
# Set vcs_info parameters.
zstyle ':vcs_info:*' enable bzr git hg svn
zstyle ':vcs_info:*:prompt:*' check-for-changes true
@@ -87,8 +93,18 @@ function prompt_steeef_setup {
# Define prompts.
PROMPT="
${_prompt_steeef_colors[3]}%n%f at ${_prompt_steeef_colors[2]}%m%f in ${_prompt_steeef_colors[5]}%~%f "'${vcs_info_msg_0_}'"
-"'$python_info[virtualenv]'"$ "
+"'$python_info[virtualenv]${editor_info[keymap]} '
RPROMPT=''
}
+function prompt_steeef_preview {
+ local +h PROMPT=''
+ local +h RPROMPT=''
+ local +h SPROMPT=''
+
+ editor-info 2> /dev/null
+ prompt_preview_theme 'steeef'
+}
+
prompt_steeef_setup "$@"
+# vim: ft=zsh
diff --git a/modules/prompt/init.zsh b/modules/prompt/init.zsh
index 0ec007c490..37bff328fa 100644
--- a/modules/prompt/init.zsh
+++ b/modules/prompt/init.zsh
@@ -10,7 +10,7 @@ autoload -Uz promptinit && promptinit
# Load the prompt theme.
zstyle -a ':prezto:module:prompt' theme 'prompt_argv'
-if [[ "$TERM" == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then
+if [[ $TERM == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then
prompt 'off'
else
prompt "$prompt_argv[@]"
diff --git a/modules/python/README.md b/modules/python/README.md
index e7b72c480b..b7a323032e 100644
--- a/modules/python/README.md
+++ b/modules/python/README.md
@@ -1,18 +1,20 @@
-Python
-======
+# Python
Enables local Python and local Python package installation.
-Settings
---------
+## Settings
-This module supports virtual environments from conda and virtualenvwrapper. By default, only virtualenvwrapper is enabled. To disable virtualenvwrapper, add the following to *zpreztorc*.
+This module supports virtual environments from conda and
+[_virtualenvwrapper_][2]. By default, only _virtualenvwrapper_ is enabled. To
+disable _virtualenvwrapper_, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
-zstyle ':prezto:module:python' skip-virtualenvwrapper-init 'on'
+zstyle ':prezto:module:python:virtualenv' initialize 'no'
```
-Conda support is enabled by adding the following to *zpreztorc*.
+Conda support can be enabled by adding the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:python' conda-init 'on'
@@ -20,21 +22,24 @@ zstyle ':prezto:module:python' conda-init 'on'
Caution: using conda and virtualenvwrapper at the same time may cause conflicts.
-Local Python Installation
--------------------------
+## Local Python Installation
-[pyenv][4] builds and installs multiple Python versions locally in the home
+[_pyenv_][4] builds and installs multiple Python versions locally in the home
directory.
-This module prepends the pyenv directory to the path variable to enable the
+This module prepends the _pyenv_ directory to the path variable to enable the
execution of `pyenv`.
### Usage
-Install Python versions with `pyenv install` into `~/.pyenv/versions`.
+Install Python versions with `pyenv install` into _`~/.pyenv/versions`_.
+
+This will be loaded automatically if pyenv is installed to `$PYENV_ROOT`,
+_`~/.pyenv`_, or if the `pyenv` command is on the path. By default, `PYENV_ROOT`
+is set to _`$HOME/.pyenv`_. You can set it to an alternate location and export
+it in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6].
-Local Package Installation
---------------------------
+## Local Package Installation
Since version 2.6, Python supports per user package installation, as defined in
[PEP 370][1].
@@ -47,26 +52,26 @@ documentation.
Install packages into the per user site directory with `pip install --user`.
-virtualenvwrapper
------------------
+## virtualenvwrapper
-[`virtualenvwrapper`][2] is a frontend to the popular [`virtualenv`][3] utility.
+[_virtualenvwrapper_][2] is a frontend to the popular [_virtualenv_][3] utility.
-`virtualenv` creates isolated Python environments and `virtualenvwrapper` provides
-convenient shell functions to create, switch, and manage them.
+`virtualenv` creates isolated Python environments and `virtualenvwrapper`
+provides convenient shell functions to create, switch, and manage them.
### Usage
Install `virtualenvwrapper`.
-Virtual environments are stored in `~/.virtualenvs`.
+Virtual environments are stored in _`~/.virtualenvs`_.
-There are configuration variables that have to be set to enable certain features.
-If you wish to use these features, export the variables in [`zshenv`][6].
+There are configuration variables that have to be set to enable certain
+features. If you wish to use these features, export the variables in
+[_`${ZDOTDIR:-$HOME}/.zshenv`_][6].
The variable `$PROJECT_HOME` tells `virtualenvwrapper` where to place project
working directories. It must be set and the directory created before `mkproject`
-is used. Replace *Developer* with your projects directory.
+is used. Replace _Developer_ with your projects directory.
```sh
export PROJECT_HOME="$HOME/Developer"
@@ -114,46 +119,51 @@ zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'
zstyle ':prezto:module:python:virtualenv' initialize 'no'
```
-Aliases
--------
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:python:alias' skip 'yes'
+```
- - `py` is short for `python`.
- - `py2` is short for `python2`.
- - `py3` is short for `python3`.
+- `py` is short for `python`.
+- `py2` is short for `python2`.
+- `py3` is short for `python3`.
-Functions
----------
+## Functions
- - `python-info` exposes information about the Python environment via the
- `$python_info` associative array.
+- `python-info` exposes information about the Python environment via the
+ `$python_info` associative array.
-Theming
--------
+## Theming
-To display the name of the current virtual enviroment in a prompt, define the
+To display the name of the current virtual environment in a prompt, define the
following style in the `prompt_name_setup` function.
- # %v - virtualenv name.
- zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'
+```sh
+# %v - virtualenv name.
+zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'
+```
Then add `$python_info[virtualenv]` to `$PROMPT` or `$RPROMPT` and call
`python-info` in the `prompt_name_preexec` hook function.
Similarly, you can use `:prezto:module:python:info:version:format` with `%v` for
the version and add `$python_info[version]` to your prompt for the current
-python version/
+python version.
-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]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
- - [Sebastian Wiesner](https://github.com/lunaryorn)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sebastian Wiesner](https://github.com/lunaryorn)
-[1]: http://www.python.org/dev/peps/pep-0370/
-[2]: http://www.doughellmann.com/projects/virtualenvwrapper/
-[3]: http://pypi.python.org/pypi/virtualenv
+[1]: https://www.python.org/dev/peps/pep-0370/
+[2]: https://www.doughellmann.com/projects/virtualenvwrapper/
+[3]: https://pypi.org/project/virtualenv/
[4]: https://github.com/yyuu/pyenv
[5]: https://github.com/sorin-ionescu/prezto/issues
-[6]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv
+[6]: ../../runcoms#zshenv
diff --git a/modules/python/init.zsh b/modules/python/init.zsh
index 45e9b8dd6b..c303cad1cc 100644
--- a/modules/python/init.zsh
+++ b/modules/python/init.zsh
@@ -5,72 +5,80 @@
# Sorin Ionescu
# Sebastian Wiesner
# Patrick Bos
+# Indrajit Raychaudhuri
#
-# Load manually installed pyenv into the shell session.
-if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then
- path=("$HOME/.pyenv/bin" $path)
- export PYENV_ROOT=$(pyenv root)
- eval "$(pyenv init -)"
+#
+# Options
+#
+
+setopt EXTENDED_GLOB
+
+# Load dependencies.
+pmodload 'helper'
+
+# Load manually installed or package manager installed pyenv into the shell
+# session.
+if [[ -s "${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}" ]] \
+ || (( $+commands[pyenv] )); then
+
+ # Ensure manually installed pyenv is added to path when present.
+ [[ -s $local_pyenv ]] && path=($local_pyenv:h $path)
-# Load package manager installed pyenv into the shell session.
-elif (( $+commands[pyenv] )); then
- export PYENV_ROOT=$(pyenv root)
- eval "$(pyenv init -)"
+ # Load pyenv into the shell session.
+ eval "$(pyenv init - zsh)"
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The
# path can be overridden using PYTHONUSERBASE.
else
if [[ -n "$PYTHONUSERBASE" ]]; then
- path=($PYTHONUSERBASE/bin $path)
- elif [[ "$OSTYPE" == darwin* ]]; then
+ path=($PYTHONUSERBASE/bin(N) $path)
+ elif is-darwin; then
path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
- path=($HOME/.local/bin $path)
+ path=($HOME/.local/bin(N) $path)
fi
fi
+unset local_pyenv
+
# Return if requirements are not found.
-if (( ! $+commands[python] && ! $+commands[pyenv] )); then
+if (( ! $+commands[(i)python[0-9.]#] && ! $+functions[pyenv] && ! $+commands[conda] )); then
return 1
fi
function _python-workon-cwd {
- # Check if this is a Git repo
- local GIT_REPO_ROOT=""
- local GIT_TOPLEVEL="$(git rev-parse --show-toplevel 2> /dev/null)"
- if [[ $? == 0 ]]; then
- GIT_REPO_ROOT="$GIT_TOPLEVEL"
- fi
- # Get absolute path, resolving symlinks
- local PROJECT_ROOT="${PWD:A}"
+ # Check if this is a Git repo.
+ local GIT_REPO_ROOT="$(git rev-parse --show-toplevel 2> /dev/null)"
+ # Get absolute path, resolving symlinks.
+ local PROJECT_ROOT="$PWD:A"
while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \
- && ! -d "$PROJECT_ROOT/.git" && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do
- PROJECT_ROOT="${PROJECT_ROOT:h}"
+ && ! -d "$PROJECT_ROOT/.git" && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do
+ PROJECT_ROOT="$PROJECT_ROOT:h"
done
- if [[ "$PROJECT_ROOT" == "/" ]]; then
+ if [[ $PROJECT_ROOT == "/" ]]; then
PROJECT_ROOT="."
fi
- # Check for virtualenv name override
+ # Check for virtualenv name override.
local ENV_NAME=""
if [[ -f "$PROJECT_ROOT/.venv" ]]; then
- ENV_NAME="$(cat "$PROJECT_ROOT/.venv")"
- elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then
+ ENV_NAME="$(<$PROJECT_ROOT/.venv)"
+ elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]]; then
ENV_NAME="$PROJECT_ROOT/.venv"
- elif [[ "$PROJECT_ROOT" != "." ]]; then
- ENV_NAME="${PROJECT_ROOT:t}"
+ elif [[ $PROJECT_ROOT != "." ]]; then
+ ENV_NAME="$PROJECT_ROOT:t"
fi
if [[ -n $CD_VIRTUAL_ENV && "$ENV_NAME" != "$CD_VIRTUAL_ENV" ]]; then
- # We've just left the repo, deactivate the environment
- # Note: this only happens if the virtualenv was activated automatically
+ # We've just left the repo, deactivate the environment.
+ # Note: this only happens if the virtualenv was activated automatically.
deactivate && unset CD_VIRTUAL_ENV
fi
- if [[ "$ENV_NAME" != "" ]]; then
- # Activate the environment only if it is not already active
+ if [[ $ENV_NAME != "" ]]; then
+ # Activate the environment only if it is not already active.
if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then
- if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
+ if [[ -n "$WORKON_HOME" && -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then
workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME"
elif [[ -e "$ENV_NAME/bin/activate" ]]; then
source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME"
@@ -79,89 +87,69 @@ function _python-workon-cwd {
fi
}
-# Load auto workon cwd hook
-if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then
- # Auto workon when changing directory
+# Load auto workon cwd hook.
+if zstyle -t ':prezto:module:python:virtualenv' auto-switch; then
+ # Auto workon when changing directory.
autoload -Uz add-zsh-hook
add-zsh-hook chpwd _python-workon-cwd
fi
# Load virtualenvwrapper into the shell session, if pre-requisites are met
# and unless explicitly requested not to
-if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \
- zstyle -T ':prezto:module:python:virtualenv' initialize ; then
+if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) \
+ && zstyle -T ':prezto:module:python:virtualenv' initialize ; then
# Set the directory where virtual environments are stored.
export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}"
- # Disable the virtualenv prompt.
- export VIRTUAL_ENV_DISABLE_PROMPT=1
+ # Disable the virtualenv prompt. Note that we use the magic value used by the
+ # pure prompt because there's some additional logic in that prompt which tries
+ # to figure out if a user set this variable and disable the python portion of
+ # that prompt based on it which is the exact opposite of what we want to do.
+ export VIRTUAL_ENV_DISABLE_PROMPT=12
# Create a sorted array of available virtualenv related 'pyenv' commands to
# look for plugins of interest. Scanning shell '$path' isn't enough as they
# can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead.
local -a pyenv_plugins
+ local pyenv_virtualenvwrapper_plugin_found
if (( $+commands[pyenv] )); then
- pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2>/dev/null)"}:#virtualenv*})
- fi
+ pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2> /dev/null)"}:#virtualenv*})
- if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then
- # Enable 'virtualenv' with 'pyenv'.
- eval "$(pyenv virtualenv-init -)"
+ # Optionally activate 'virtualenv-init' plugin when available.
+ if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then
+ eval "$(pyenv virtualenv-init - zsh)"
+ fi
# Optionally activate 'virtualenvwrapper' plugin when available.
if (( $pyenv_plugins[(i)virtualenvwrapper(_lazy|)] <= $#pyenv_plugins )); then
pyenv "$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]"
+ pyenv_virtualenvwrapper_plugin_found="true"
fi
- else
- # Fallback to 'virtualenvwrapper' without 'pyenv' wrapper if available
- # in '$path' or in an alternative location on a Debian based system.
- #
- # If homebrew is installed and the python location wasn't overridden via
- # environment variable we fall back to python3 then python2 in that order.
- # This is needed to fix an issue with virtualenvwrapper as homebrew no
- # longer shadows the system python.
- if [[ -z "$VIRTUALENVWRAPPER_PYTHON" ]] && (( $+commands[brew] )); then
- if (( $+commands[python3] )); then
- export VIRTUALENVWRAPPER_PYTHON=$commands[python3]
- elif (( $+commands[python2] )); then
- export VIRTUALENVWRAPPER_PYTHON=$commands[python2]
- fi
+
+ unset pyenv_plugins
+ fi
+
+ if [[ $pyenv_virtualenvwrapper_plugin_found != "true" ]]; then
+ # Fallback to standard 'virtualenvwrapper' if 'python' is available in '$path'.
+ if (( ! $+VIRTUALENVWRAPPER_PYTHON )) && (( $+commands[(i)python[0-9.]#] )); then
+ VIRTUALENVWRAPPER_PYTHON=$commands[(i)python[0-9.]#]
fi
- virtenv_sources=(
+ virtualenvwrapper_sources=(
${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]}
/usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN)
)
- if (( $#virtenv_sources )); then
- source "${virtenv_sources[1]}"
+ if (( $#virtualenvwrapper_sources )); then
+ source "$virtualenvwrapper_sources[1]"
fi
- unset virtenv_sources
+ unset virtualenvwrapper_sources
fi
- unset pyenv_plugins
+ unset pyenv_virtualenvwrapper_plugin_found
fi
-# Load PIP completion.
-if (( $#commands[(i)pip(|[23])] )); then
- cache_file="${TMPDIR:-/tmp}/prezto-python-cache.$UID.zsh"
-
- # Detect and use one available from among 'pip', 'pip2', 'pip3' variants
- pip_command="$commands[(i)pip(|[23])]"
-
- if [[ "$pip_command" -nt "$cache_file" \
- || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
- || ! -s "$cache_file" ]]; then
- # pip is slow; cache its output. And also support 'pip2', 'pip3' variants
- $pip_command completion --zsh \
- | sed -e "s|compctl -K [-_[:alnum:]]* pip|& pip2 pip3|" >! "$cache_file" 2> /dev/null
- fi
-
- source "$cache_file"
- unset cache_file pip_command
-fi
-
-# Load conda into the shell session, if requested
+# Load conda into the shell session, if requested.
zstyle -T ':prezto:module:python' conda-init
if (( $? && $+commands[conda] )); then
if (( $(conda ..changeps1) )); then
@@ -178,6 +166,8 @@ fi
# Aliases
#
-alias py='python'
-alias py2='python2'
-alias py3='python3'
+if ! zstyle -t ':prezto:module:python:alias' skip; then
+ alias py='python'
+ alias py2='python2'
+ alias py3='python3'
+fi
diff --git a/modules/rails/README.md b/modules/rails/README.md
index 19bea1d800..5e230e0ed1 100644
--- a/modules/rails/README.md
+++ b/modules/rails/README.md
@@ -1,34 +1,38 @@
-Ruby on Rails
-=============
+# Ruby on Rails
Defines [Ruby on Rails][1] aliases.
-Aliases
--------
-
- - `ror` is short for `rails`.
- - `rorc` starts the Rails console.
- - `rordc` starts the Rails console connected to the database.
- - `rordm` migrates the database.
- - `rordM` migrates the database and recreates the test database.
- - `rordr` rolls the database schema back to the previous version.
- - `rorg` generates new code.
- - `rorl` displays the log.
- - `rorlc` truncates logs to zero bytes.
- - `rorp` installs a plugin.
- - `rorr` runs code in the application environment.
- - `rors` starts the Rails server.
- - `rorsd` starts the Rails server with the debugger.
- - `rorx` destroys newly generated code.
-
-Authors
--------
-
-*The authors of this module should be contacted via the [issue tracker][2].*
-
- - [Robby Russell](https://github.com/robbyrussell)
- - [Jake Bell](https://github.com/theunraveler)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
-
-[1]: http://rubyonrails.org
+## Aliases
+
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:rails:alias' skip 'yes'
+```
+
+- `ror` is short for `rails`.
+- `rorc` starts the Rails console.
+- `rordc` starts the Rails console connected to the database.
+- `rordm` migrates the database.
+- `rordM` migrates the database and recreates the test database.
+- `rordr` rolls the database schema back to the previous version.
+- `rorg` generates new code.
+- `rorl` displays the log.
+- `rorlc` truncates logs to zero bytes.
+- `rorp` installs a plugin.
+- `rorr` runs code in the application environment.
+- `rors` starts the Rails server.
+- `rorsd` starts the Rails server with the debugger.
+- `rorx` destroys newly generated code.
+
+## Authors
+
+_The authors of this module should be contacted via the [issue tracker][2]._
+
+- [Robby Russell](https://github.com/robbyrussell)
+- [Jake Bell](https://github.com/theunraveler)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+
+[1]: https://rubyonrails.org
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/rails/init.zsh b/modules/rails/init.zsh
index 44b53e90a0..ed86372b03 100644
--- a/modules/rails/init.zsh
+++ b/modules/rails/init.zsh
@@ -19,17 +19,19 @@ fi
# Aliases
#
-alias ror='bundle exec rails'
-alias rorc='bundle exec rails console'
-alias rordc='bundle exec rails dbconsole'
-alias rordm='bundle exec rake db:migrate'
-alias rordM='bundle exec rake db:migrate db:test:clone'
-alias rordr='bundle exec rake db:rollback'
-alias rorg='bundle exec rails generate'
-alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
-alias rorlc='bundle exec rake log:clear'
-alias rorp='bundle exec rails plugin'
-alias rorr='bundle exec rails runner'
-alias rors='bundle exec rails server'
-alias rorsd='bundle exec rails server --debugger'
-alias rorx='bundle exec rails destroy'
+if ! zstyle -t ':prezto:module:rails:alias' skip; then
+ alias ror='bundle exec rails'
+ alias rorc='bundle exec rails console'
+ alias rordc='bundle exec rails dbconsole'
+ alias rordm='bundle exec rake db:migrate'
+ alias rordM='bundle exec rake db:migrate db:test:clone'
+ alias rordr='bundle exec rake db:rollback'
+ alias rorg='bundle exec rails generate'
+ alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
+ alias rorlc='bundle exec rake log:clear'
+ alias rorp='bundle exec rails plugin'
+ alias rorr='bundle exec rails runner'
+ alias rors='bundle exec rails server'
+ alias rorsd='bundle exec rails server --debugger'
+ alias rorx='bundle exec rails destroy'
+fi
diff --git a/modules/rsync/README.md b/modules/rsync/README.md
index 77d78ea54c..ca0627f889 100644
--- a/modules/rsync/README.md
+++ b/modules/rsync/README.md
@@ -1,27 +1,26 @@
-Rsync
-=====
+# Rsync
Defines [rsync][1] aliases.
-macOS users are encouraged to use [Bombich's rsync][2], which has HFS+
-enhancements.
+macOS users are encouraged to use _rsync_ from [Homebrew][2] or [MacPorts][3],
+which has additional enhancements including patches from [Bombich][4].
-Aliases
--------
+## Aliases
- - `rsync-copy` copies files and directories from *source* to *destination*.
- - `rsync-move` moves files and directories from *source* to *destination*.
- - `rsync-update` updates files and directories on *destination*.
- - `rsync-synchronize` synchronizes files and directories between *source* and
- *destination*.
+- `rsync-copy` copies files and directories from _source_ to _destination_.
+- `rsync-move` moves files and directories from _source_ to _destination_.
+- `rsync-update` updates files and directories on _destination_.
+- `rsync-synchronize` synchronizes files and directories between _source_ and
+ _destination_.
-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][5]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: http://rsync.samba.org
-[2]: https://bombich.com/kb/ccc5/credits#rsync
-[3]: https://github.com/sorin-ionescu/prezto/issues
+[1]: https://rsync.samba.org
+[2]: https://github.com/Homebrew/homebrew-core
+[3]: https://ports.macports.org/port/rsync
+[4]: https://bombich.com/kb/ccc5/credits#rsync
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/rsync/init.zsh b/modules/rsync/init.zsh
index a802222fac..47eabfe88c 100644
--- a/modules/rsync/init.zsh
+++ b/modules/rsync/init.zsh
@@ -10,20 +10,29 @@ if (( ! $+commands[rsync] )); then
return 1
fi
+# Load dependencies.
+pmodload 'helper'
+
#
# Aliases
#
-_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive --hard-links --one-file-system'
+_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive \
+ --hard-links --one-file-system'
-if grep -q 'xattrs' <(rsync --help 2>&1); then
- _rsync_cmd="${_rsync_cmd} --acls --xattrs"
-fi
+autoload -Uz is-at-least
+if is-at-least 3.1 ${"$(rsync --version 2>&1)"[(w)3]}; then
+
+ # ACL and extended attributes support
+ if grep -q 'xattrs' <(rsync --help 2>&1); then
+ _rsync_cmd="${_rsync_cmd} --acls --xattrs"
+ fi
-# macOS and HFS+ Enhancements
-# http://help.bombich.com/kb/overview/credits#opensource
-if [[ "$OSTYPE" == darwin* ]] && grep -q 'file-flags' <(rsync --help 2>&1); then
- _rsync_cmd="${_rsync_cmd} --crtimes --fileflags --protect-decmpfs --force-change"
+ # macOS Enhancements
+ # https://bombich.com/kb/ccc5/credits
+ if is-darwin && grep -q 'file-flags' <(rsync --help 2>&1); then
+ _rsync_cmd="${_rsync_cmd} --crtimes --fileflags --force-change"
+ fi
fi
alias rsync-copy="${_rsync_cmd}"
diff --git a/modules/ruby/README.md b/modules/ruby/README.md
index 12848d8649..fa3d106484 100644
--- a/modules/ruby/README.md
+++ b/modules/ruby/README.md
@@ -1,21 +1,29 @@
-Ruby
-====
+# Ruby
Configures [Ruby][1] local gem installation, loads version managers, and defines
aliases.
-Local Gem Installation
-----------------------
+## Local Gem Installation
When a Ruby version manager is not detected, local gems are installed in
-`~/.gems`; otherwise, they are installed according to the manager.
+_`~/.gem`_; otherwise, they are installed according to the manager.
-RVM
----
+## rbenv
-An alternative to the above is to use [The Ruby Version Manager (RVM)][2], which
-allows for managing multiple, isolated Ruby installations and gem sets in the
-home directory.
+An alternative RVM is to use [_rbenv_][2], which allows for switching between
+multiple, isolated Ruby installations in the home directory.
+
+While it is not as feature rich as RVM, it is not loaded into the shell and is
+not known to cause conflicts with shell scripts.
+
+This will be loaded automatically if _rbenv_ is installed to `$RBENV_ROOT`,
+_`~/.rbenv`_, or if the `rbenv` command is on the path.
+
+## rvm
+
+An alternative to the above is to use [The Ruby Version Manager (_rvm_)][3],
+which allows for managing multiple, isolated Ruby installations and gem sets in
+the home directory.
Since RVM is loaded into the shell and is known to override shell commands, it
may conflict with shell scripts.
@@ -23,90 +31,83 @@ may conflict with shell scripts.
Load this module as late as possible when using RVM since RVM will complain if
it is not first in `$PATH`.
-rbenv
------
-
-An alternative RVM is to use [rbenv][3], which allows for switching between
-multiple, isolated Ruby installations in the home directory.
-
-While it is not as feature rich as RVM, it is not loaded into the shell and is
-not known to cause conflicts with shell scripts.
-
-chruby
-------
+## chruby
-Yet another alternative is [chruby][4], which is simpler than both RVM and
-rbenv.
+Yet another alternative is [_chruby_][4], which is simpler than both _rvm_ and
+_rbenv_.
### Settings
#### Auto-Switch
To enable auto switching the Ruby version on directory change based on the
-`.ruby-version` file, add the following line to [`zpreztorc`][5]:
+`.ruby-version` file, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
```
-Bundler
--------
+## Bundler
Manage gems that are not meant to be used as commands, such as application
-dependencies, with [Bundler][6].
+dependencies, with [Bundler][5].
+
+## Aliases
-Aliases
--------
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+
+```sh
+zstyle ':prezto:module:ruby:alias' skip 'yes'
+```
### General
- - `rb` is short for `ruby`.
+- `rb` is short for `ruby`.
### Bundler
- - `rbb` manages ruby dependencies (`bundle`).
- - `rbbc` cleans up unused gems in your bundler directory.
- - `rbbe` executes a script in the context of the current bundle.
- - `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`.
- - `rbbI` installs the following:
- - gems specified in the `Gemfile` in `vendor/bundle`.
- - packages the gems into `vendor/cache`.
- - appends bundler directories to `.gitignore`.
- - `rbbl` lists all gems in the current bundle.
- - `rbbo` opens an installed gem in the editor.
- - `rbbp` packages gem files into `vendor/cache`.
- - `rbbu` updates gems to their latest version.
-
-Functions
----------
-
- - `ruby-app-root` displays the path to the Ruby application root directory.
- - `ruby-info` exposes information about the Ruby environment via the
- `$ruby_info` associative array.
-
-Theming
--------
+- `rbb` manages ruby dependencies (`bundle`).
+- `rbbc` cleans up unused gems in your bundler directory.
+- `rbbe` executes a script in the context of the current bundle.
+- `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`.
+- `rbbI` installs the following:
+ - gems specified in the `Gemfile` in `vendor/bundle`.
+ - packages the gems into `vendor/cache`.
+ - appends bundler directories to `.gitignore`.
+- `rbbl` lists all gems in the current bundle.
+- `rbbo` opens an installed gem in the editor.
+- `rbbp` packages gem files into `vendor/cache`.
+- `rbbu` updates gems to their latest version.
+
+## Functions
+
+- `ruby-app-root` displays the path to the Ruby application root directory.
+- `ruby-info` exposes information about the Ruby environment via the
+ `$ruby_info` associative array.
+
+## Theming
To display the name of the current Ruby version in a prompt, define the
following style in the `prompt_name_setup` function.
- # %v - ruby version.
- zstyle ':prezto:module:ruby:info:version' format 'version:%v'
+```sh
+# %v - ruby version.
+zstyle ':prezto:module:ruby:info:version' format 'version:%v'
+```
Then add `$ruby_info[version]` to `$PROMPT` or `$RPROMPT` and call
`ruby-info` in the `prompt_name_preexec` hook function.
-Authors
--------
+## Authors
-*The authors of this module should be contacted via the [issue tracker][7].*
+_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)
-[1]: http://www.ruby-lang.org
-[2]: https://rvm.io
-[3]: https://github.com/sstephenson/rbenv
+[1]: https://www.ruby-lang.org
+[2]: https://github.com/rbenv/rbenv
+[3]: https://rvm.io
[4]: https://github.com/postmodern/chruby
-[5]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zpreztorc
-[6]: http://gembundler.com
-[7]: https://github.com/sorin-ionescu/prezto/issues
+[5]: https://gembundler.com
+[6]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/ruby/init.zsh b/modules/ruby/init.zsh
index 4ede36675f..86ab43ce21 100644
--- a/modules/ruby/init.zsh
+++ b/modules/ruby/init.zsh
@@ -1,27 +1,32 @@
#
-# Configures Ruby local gem installation, loads version managers, and defines
+# Configures Ruby local installation, loads version managers, and defines
# aliases.
#
-# Authors: Sorin Ionescu
+# Authors:
+# Sorin Ionescu
+# Indrajit Raychaudhuri
#
-# Load RVM into the shell session.
-if [[ -s "$HOME/.rvm/scripts/rvm" ]]; then
- # Unset AUTO_NAME_DIRS since auto adding variable-stored paths to ~ list
- # conflicts with RVM.
- unsetopt AUTO_NAME_DIRS
+# Possible lookup locations for manually installed rbenv and rvm.
+local_rbenv_paths=({$RBENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}rbenv}/bin/rbenv(N))
+local_rvm_paths=({$RVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}rvm}/scripts/rvm(N))
+
+# Load manually installed or package manager installed rbenv into the shell
+# session.
+if (( $#local_rbenv_paths || $+commands[rbenv] )); then
+
+ # Ensure manually installed rbenv is added to path when present.
+ [[ -s $local_rbenv_paths[1] ]] && path=($local_rbenv_paths[1]:h $path)
- # Source RVM.
- source "$HOME/.rvm/scripts/rvm"
+ eval "$(rbenv init - zsh)"
-# Load manually installed rbenv into the shell session.
-elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
- path=("$HOME/.rbenv/bin" $path)
- eval "$(rbenv init - --no-rehash zsh)"
+# Load manually installed rvm into the shell session.
+elif (( $#local_rvm_paths )); then
+ # Unset AUTO_NAME_DIRS since auto adding variable-stored paths to ~ list
+ # conflicts with rvm.
+ unsetopt AUTO_NAME_DIRS
-# Load package manager installed rbenv into the shell session.
-elif (( $+commands[rbenv] )); then
- eval "$(rbenv init - --no-rehash zsh)"
+ source "$local_rvm_paths[1]"
# Load package manager installed chruby into the shell session.
elif (( $+commands[chruby-exec] )); then
@@ -34,7 +39,7 @@ elif (( $+commands[chruby-exec] )); then
source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh"
fi
- # If a default Ruby is set, switch to it.
+ # If a default ruby is set, switch to it.
chruby_auto
fi
@@ -43,8 +48,10 @@ else
path=($HOME/.gem/ruby/*/bin(N) $path)
fi
+unset local_rbenv
+
# Return if requirements are not found.
-if (( ! $+commands[ruby] && ! ( $+commands[rvm] || $+commands[rbenv] ) )); then
+if (( ! $+commands[ruby] && ! $#functions[(i)r(benv|vm)] )); then
return 1
fi
@@ -52,23 +59,25 @@ fi
# Aliases
#
-# General
-alias rb='ruby'
+if ! zstyle -t ':prezto:module:ruby:alias' skip; then
+ # General
+ alias rb='ruby'
-# Bundler
-if (( $+commands[bundle] )); then
- alias rbb='bundle'
- alias rbbc='bundle clean'
- alias rbbe='bundle exec'
- alias rbbi='bundle install --path vendor/bundle'
- alias rbbl='bundle list'
- alias rbbo='bundle open'
- alias rbbp='bundle package'
- alias rbbu='bundle update'
- alias rbbI='rbbi \
- && bundle package \
- && print .bundle >>! .gitignore \
- && print vendor/assets >>! .gitignore \
- && print vendor/bundle >>! .gitignore \
- && print vendor/cache >>! .gitignore'
+ # Bundler
+ if (( $+commands[bundle] )); then
+ alias rbb='bundle'
+ alias rbbc='bundle clean'
+ alias rbbe='bundle exec'
+ alias rbbi='bundle install --path vendor/bundle'
+ alias rbbl='bundle list'
+ alias rbbo='bundle open'
+ alias rbbp='bundle package'
+ alias rbbu='bundle update'
+ alias rbbI='rbbi \
+ && bundle package \
+ && print .bundle >>! .gitignore \
+ && print vendor/assets >>! .gitignore \
+ && print vendor/bundle >>! .gitignore \
+ && print vendor/cache >>! .gitignore'
+ fi
fi
diff --git a/modules/screen/README.md b/modules/screen/README.md
index 0a9ff07c8a..b5549510f9 100644
--- a/modules/screen/README.md
+++ b/modules/screen/README.md
@@ -1,44 +1,47 @@
-GNU Screen
-==========
+# GNU Screen
Defines [GNU Screen][1] aliases and provides for auto launching it at start-up.
-Settings
---------
+## Settings
### Auto-Start
Starts a GNU Screen session automatically when Zsh is launched.
-To enable this feature when launching Zsh in a local terminal, add the
-following line to *zpreztorc*:
+To enable this feature when launching Zsh in a local terminal, add the following
+line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:screen:auto-start' local 'yes'
```
-To enable this feature when launching Zsh in a SSH connection, add the
-following line to *zpreztorc*:
+To enable this feature when launching Zsh in a SSH connection, add the following
+line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:screen:auto-start' remote 'yes'
```
-Aliases
--------
+## Aliases
- - `scr` is short for `screen`.
- - `scrl` lists sessions/socket directory.
- - `scrn` starts a new session.
- - `scrr` attaches to a session if one exists or start a new one.
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
-Authors
--------
+```sh
+zstyle ':prezto:module:screen:alias' skip 'yes'
+```
+
+- `scr` is short for `screen`.
+- `scrl` lists sessions/socket directory.
+- `scrn` starts a new session.
+- `scrr` attaches to a session if one exists or start a new one.
+
+## 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)
- - [Georges Discry](https://github.com/gdiscry)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Georges Discry](https://github.com/gdiscry)
-[1]: http://www.gnu.org/software/screen/
+[1]: https://www.gnu.org/software/screen/
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/screen/init.zsh b/modules/screen/init.zsh
index 0dee1c96d6..1a3908d89b 100644
--- a/modules/screen/init.zsh
+++ b/modules/screen/init.zsh
@@ -22,7 +22,7 @@ if [[ -z "$STY" && -z "$EMACS" && -z "$VIM" ]] && ( \
session="$(
screen -list 2> /dev/null \
| sed '1d;$d' \
- | awk '{print $1}' \
+ | awk '!/Dead/ {print $1}' \
| head -1)"
if [[ -n "$session" ]]; then
@@ -36,7 +36,9 @@ fi
# Aliases
#
-alias scr='screen'
-alias scrl='screen -list'
-alias scrn='screen -U -S'
-alias scrr='screen -a -A -U -D -R'
+if ! zstyle -t ':prezto:module:screen:alias' skip; then
+ alias scr='screen'
+ alias scrl='screen -list'
+ alias scrn='screen -U -S'
+ alias scrr='screen -a -A -U -D -R'
+fi
diff --git a/modules/spectrum/README.md b/modules/spectrum/README.md
index 66abcb2679..de393a755e 100644
--- a/modules/spectrum/README.md
+++ b/modules/spectrum/README.md
@@ -1,16 +1,14 @@
-Spectrum
-========
+# Spectrum
Provides for easier use of 256 colors and effects.
To learn more about text formatting, read [A Guide to 256 Color Codes][1].
-Variables
----------
+## Variables
- - `BG` provides background colors.
- - `FG` provides foreground colors.
- - `FX` provides effects.
+- `BG` provides background colors.
+- `FG` provides foreground colors.
+- `FX` provides effects.
### Background and Foreground
@@ -72,20 +70,19 @@ Though there are many effects, most terminals support at least bold formatting.
| font-fifth | no-font-fifth |
| font-sixth | no-font-sixth |
| font-seventh | no-font-seventh |
-| font-eigth | no-font-eigth |
+| font-eighth | no-font-eighth |
| font-ninth | no-font-ninth |
### Plain Text
Use `$BG[none]`, `$FG[none]`, or `$FX[none]` to turn off formatting.
-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]._
- - [P.C. Shyamshankar](https://github.com/sykora)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [P.C. Shyamshankar](https://github.com/sykora)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://lucentbeing.com/writing/archives/a-guide-to-256-color-codes/
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/spectrum/init.zsh b/modules/spectrum/init.zsh
index 61e2262ff6..37b7d7b622 100644
--- a/modules/spectrum/init.zsh
+++ b/modules/spectrum/init.zsh
@@ -7,7 +7,7 @@
#
# Return if requirements are not found.
-if [[ "$TERM" == 'dumb' ]]; then
+if [[ $TERM == dumb ]]; then
return 1
fi
@@ -49,7 +49,7 @@ FX=(
font-fifth "\e[15m" no-font-fifth "\e[10m"
font-sixth "\e[16m" no-font-sixth "\e[10m"
font-seventh "\e[17m" no-font-seventh "\e[10m"
- font-eigth "\e[18m" no-font-eigth "\e[10m"
+ font-eighth "\e[18m" no-font-eighth "\e[10m"
font-ninth "\e[19m" no-font-ninth "\e[10m"
)
diff --git a/modules/ssh/README.md b/modules/ssh/README.md
index a1727b9a15..5b81409290 100644
--- a/modules/ssh/README.md
+++ b/modules/ssh/README.md
@@ -1,26 +1,24 @@
-SSH
-===
+# SSH
-Provides for an easier use of [SSH][1] by setting up [ssh-agent][2].
+Provides for an easier use of [SSH][1] by setting up [_ssh-agent_][2].
-Settings
---------
+## Settings
### Identities
-To load multiple identities, add the following line to *zpreztorc*:
+To load multiple identities, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github'
```
-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]: http://www.openssh.com
-[2]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1
+[1]: https://www.openssh.com
+[2]: https://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1
[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh
index 08edce5772..6bf237c541 100644
--- a/modules/ssh/init.zsh
+++ b/modules/ssh/init.zsh
@@ -14,10 +14,10 @@ fi
_ssh_dir="$HOME/.ssh"
# Set the path to the environment file if not set by another module.
-_ssh_agent_env="${_ssh_agent_env:-${TMPDIR:-/tmp}/ssh-agent.env.$UID}"
+_ssh_agent_env="${_ssh_agent_env:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.env}"
-# Set the path to the persistent authentication socket.
-_ssh_agent_sock="${TMPDIR:-/tmp}/ssh-agent.sock.$UID"
+# Set the path to the persistent authentication socket if not set by another module.
+_ssh_agent_sock="${_ssh_agent_sock:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.sock}"
# Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
@@ -26,12 +26,14 @@ if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
# Start ssh-agent if not started.
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then
+ mkdir -p "$_ssh_agent_env:h"
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
fi
fi
# Create a persistent SSH authentication socket.
if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then
+ mkdir -p "$_ssh_agent_sock:h"
ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock"
export SSH_AUTH_SOCK="$_ssh_agent_sock"
fi
@@ -50,9 +52,9 @@ if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then
# program specified by SSH_ASKPASS and open an X11 window to read the
# passphrase.
if [[ -n "$DISPLAY" && -x "$SSH_ASKPASS" ]]; then
- ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} < /dev/null 2> /dev/null
+ ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} < /dev/null 2> /dev/null
else
- ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} 2> /dev/null
+ ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} 2> /dev/null
fi
fi
diff --git a/modules/syntax-highlighting/README.md b/modules/syntax-highlighting/README.md
index 7a28892a46..3debb6779a 100644
--- a/modules/syntax-highlighting/README.md
+++ b/modules/syntax-highlighting/README.md
@@ -1,28 +1,33 @@
-Syntax Highlighting
-===================
+# Syntax Highlighting
Integrates [zsh-syntax-highlighting][1] into Prezto.
-This module should be loaded before the *prompt* module.
+This module must be loaded _before_ the _`prompt`_ module.
+
+If this module is used in conjunction with the [_`history-substring-search`_][2]
+module, this module must be loaded _before_ the _`history-substring-search`_
+module.
Additionally, if this module is used in conjunction with the
-*history-substring-search* module, this module must be loaded **before** the
-*history-substring-search* module.
+[_`autosuggestions`_][3] module, this module must be loaded _before_ the
+_`autosuggestions`_ module as well.
+
+To elaborate, the relative order of loading the modules would be
+_`syntax-highlighting`_, _`history-substring-search`_, _`autosuggestions`_ and
+_`prompt`_.
-Contributors
-------------
+## Contributors
New features and bug fixes should be submitted to the
[zsh-syntax-highlighting][1] project according to its rules and regulations.
This module will be synchronized against it.
-Settings
---------
+## Settings
### Highlighting
To enable highlighting for this module only, add the following line to
-*zpreztorc*:
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:syntax-highlighting' color 'yes'
@@ -30,10 +35,11 @@ zstyle ':prezto:module:syntax-highlighting' color 'yes'
### Highlighters
-Syntax highlighting is accomplished by pluggable [highlighters][2]. This module
-only enables the *main* highlighter by default.
+Syntax highlighting is accomplished by pluggable [highlighters][4]. This module
+only enables the _main_ highlighter by default.
-To enable all highlighters, add the following to *zpreztorc*:
+To enable all highlighters, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:syntax-highlighting' highlighters \
@@ -50,7 +56,7 @@ zstyle ':prezto:module:syntax-highlighting' highlighters \
Each syntax highlighter defines styles used to highlight tokens.
To highlight, for example, builtins, commands, and functions in blue instead of
-green, add the following to *zpreztorc*:
+green, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:syntax-highlighting' styles \
@@ -59,13 +65,14 @@ zstyle ':prezto:module:syntax-highlighting' styles \
'function' 'bg=blue'
```
-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][5]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: https://github.com/zsh-users/zsh-syntax-highlighting
-[2]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters
-[3]: https://github.com/sorin-ionescu/prezto/issues
+[2]: ../history-substring-search#readme
+[3]: ../autosuggestions#readme
+[4]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/syntax-highlighting/external b/modules/syntax-highlighting/external
index 434af7b11d..db085e4661 160000
--- a/modules/syntax-highlighting/external
+++ b/modules/syntax-highlighting/external
@@ -1 +1 @@
-Subproject commit 434af7b11dd33641231f1b48b8432e68eb472e46
+Subproject commit db085e4661f6aafd24e5acb5b2e17e4dd5dddf3e
diff --git a/modules/terminal/README.md b/modules/terminal/README.md
index 41a08855ee..be4e3a16b2 100644
--- a/modules/terminal/README.md
+++ b/modules/terminal/README.md
@@ -1,23 +1,21 @@
-Terminal
-========
+# Terminal
Sets terminal window and tab titles.
-Settings
---------
+## Settings
### Auto-Title
To auto set the terminal window and tab titles with the current command or
-directory, add the following to *zpreztorc*:
+directory, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:terminal' auto-title 'yes'
```
-Auto titling is disabled inside terminal multiplexers (except inside dvtm)
-since it interferes with window names defined in configuration files and
-profile managers. This can be overridden by setting it to `always`.
+Auto titling is disabled inside terminal multiplexers (except inside dvtm) since
+it interferes with window names defined in configuration files and profile
+managers. This can be overridden by setting it to `always`.
```sh
zstyle ':prezto:module:terminal' auto-title 'always'
@@ -25,7 +23,8 @@ zstyle ':prezto:module:terminal' auto-title 'always'
### Title formats
-To format terminal window and tab titles, add the following to *zpreztorc*:
+To format terminal window and tab titles, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
```sh
zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
@@ -38,20 +37,18 @@ executing program name.
For a list of sequences, see [Expansion of Prompt Sequences][1].
-Functions
----------
+## Functions
- `set-tab-title` sets the terminal tab title.
- `set-window-title` sets the terminal window title.
- `set-multiplexer-title` sets the terminal multiplexer title.
-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)
- - [Olaf Conradi](https://github.com/oohlaf)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Olaf Conradi](https://github.com/oohlaf)
-[1]: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences
+[1]: https://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/terminal/init.zsh b/modules/terminal/init.zsh
index 2a5b9bed30..bed0c0d055 100644
--- a/modules/terminal/init.zsh
+++ b/modules/terminal/init.zsh
@@ -7,7 +7,7 @@
#
# Return if requirements are not found.
-if [[ "$TERM" == (dumb|linux|*bsd*|eterm*) ]]; then
+if [[ $TERM == (dumb|linux|*bsd*|eterm*) ]]; then
return 1
fi
@@ -60,7 +60,7 @@ function _terminal-set-titles-with-command {
local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH
- if [[ "$TERM" == screen* ]]; then
+ if [[ $TERM == screen* ]]; then
set-multiplexer-title "$truncated_cmd"
fi
set-tab-title "$truncated_cmd"
@@ -78,7 +78,7 @@ function _terminal-set-titles-with-path {
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
- if [[ "$TERM" == screen* ]]; then
+ if [[ $TERM == screen* ]]; then
set-multiplexer-title "$truncated_path"
fi
set-tab-title "$truncated_path"
@@ -89,7 +89,7 @@ function _terminal-set-titles-with-path {
autoload -Uz add-zsh-hook
# Set up the Apple Terminal.
-if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \
+if [[ $TERM_PROGRAM == Apple_Terminal ]] \
&& ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] )
then
# Sets the Terminal.app current working directory before the prompt is
diff --git a/modules/tmux/README.md b/modules/tmux/README.md
index 0738d7cfad..f6d375b0e5 100644
--- a/modules/tmux/README.md
+++ b/modules/tmux/README.md
@@ -1,24 +1,22 @@
-Tmux
-====
+# Tmux
-Defines [tmux][1] aliases and provides for auto launching it at start-up.
+Defines [_tmux_][1] aliases and provides for auto launching it at start-up.
-Settings
---------
+## Settings
### Auto-Start
Starts a tmux session automatically when Zsh is launched.
-To enable this feature when launching Zsh in a local terminal, add the
-following line to *zpreztorc*:
+To enable this feature when launching Zsh in a local terminal, add the following
+line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:auto-start' local 'yes'
```
-To enable this feature when launching Zsh in a SSH connection, add the
-following line to *zpreztorc*:
+To enable this feature when launching Zsh in a SSH connection, add the following
+line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:auto-start' remote 'yes'
@@ -36,7 +34,7 @@ zstyle ':prezto:module:tmux:session' name ''
With `auto-start` enabled, you may want to control how multiple sessions are
managed. The `destroy-unattached` option of tmux controls if the unattached
sessions must be kept alive, making sessions available for later use, configured
-in *tmux.conf*:
+in _tmux.conf_:
```conf
set-option -g destroy-unattached [on | off]
@@ -45,7 +43,7 @@ set-option -g destroy-unattached [on | off]
#### iTerm2 Integration
[iTerm2][6] offers significant integration with tmux. This can be enabled by
-adding the following line to *zpreztorc*:
+adding the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:tmux:iterm' integrate 'yes'
@@ -53,19 +51,24 @@ zstyle ':prezto:module:tmux:iterm' integrate 'yes'
Read [iTerm2 and tmux Integration][7] for more information.
-Aliases
--------
+## Aliases
- - `tmuxa` attaches or switches to a tmux session.
- - `tmuxl` lists sessions managed by the tmux server.
+Aliases are enabled by default. To disable them, add the following to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_.
-Caveats
--------
+```sh
+zstyle ':prezto:module:tmux:alias' skip 'yes'
+```
+
+- `tmuxa` attaches or switches to a tmux session.
+- `tmuxl` lists sessions managed by the tmux server.
+
+## Caveats
On macOS, launching tmux can cause the error **launch_msg(...): Socket is not
connected** to be displayed, which can be fixed by installing
[reattach-to-user-namespace][3], available in [Homebrew][4], and adding the
-following to *tmux.conf*:
+following to _tmux.conf_:
```conf
set-option -g default-command "reattach-to-user-namespace -l $SHELL -l"
@@ -74,20 +77,19 @@ set-option -g default-command "reattach-to-user-namespace -l $SHELL -l"
Furthermore, tmux is known to cause **kernel panics** on macOS. A discussion
about this and Prezto has already been [opened][2].
-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]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
- - [Colin Hebert](https://github.com/ColinHebert)
- - [Georges Discry](https://github.com/gdiscry)
- - [Xavier Cambar](https://github.com/xcambar)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Colin Hebert](https://github.com/ColinHebert)
+- [Georges Discry](https://github.com/gdiscry)
+- [Xavier Cambar](https://github.com/xcambar)
-[1]: http://tmux.sourceforge.net
+[1]: https://tmux.github.io/
[2]: https://github.com/sorin-ionescu/prezto/issues/62
[3]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
[4]: https://github.com/mxcl/homebrew
[5]: https://github.com/sorin-ionescu/prezto/issues
-[6]: http://iterm2.com
+[6]: https://iterm2.com
[7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration
diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh
index fb56d07603..6658124dba 100644
--- a/modules/tmux/init.zsh
+++ b/modules/tmux/init.zsh
@@ -23,7 +23,7 @@ if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \
_tmux_iterm_integration='-CC'
fi
-if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCODE_PID" ]] && ( \
+if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCODE_RESOLVING_ENVIRONMENT" && "$TERM_PROGRAM" != "vscode" && "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]] && ( \
( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) ||
( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \
); then
@@ -45,5 +45,7 @@ fi
# Aliases
#
-alias tmuxa="tmux $_tmux_iterm_integration new-session -A"
-alias tmuxl='tmux list-sessions'
+if ! zstyle -t ':prezto:module:tmux:alias' skip; then
+ alias tmuxa="tmux $_tmux_iterm_integration new-session -A"
+ alias tmuxl='tmux list-sessions'
+fi
diff --git a/modules/utility/README.md b/modules/utility/README.md
index 84e81f5c28..78a75556c5 100644
--- a/modules/utility/README.md
+++ b/modules/utility/README.md
@@ -1,178 +1,224 @@
-Utility
-=======
+# Utility
Defines general aliases and functions.
-Settings
---------
+This module must be loaded _before_ the [_`completion`_][1] module so that the
+provided completion definitions are loaded automatically by _`completion`_
+module.
+
+**Note:** Some of the utilities configured in this module might be provided via
+GNU utilities with incompatible arguments on non-GNU systems. In such cases,
+using [_`gnu-utility`_][2] module is recommended and it must be loaded
+_before_ this module.
+
+To elaborate, the relative order of loading the modules would be
+_`gnu-utility`_, _`utility`_ and _`completion`_.
+
+## Settings
### Highlighting
-If you have enabled color globally in *zpreztorc*, you may disable it for certain
-commands.
+If you have enabled color globally in _`${ZDOTDIR:-$HOME}/.zpreztorc`_, you may
+disable it selectively for certain commands.
-To disable `ls` color, add the following line to *zpreztorc*; when coloring is
-disabled, type indicators (\*, /, =>, @, =, |, %) will be appended to entries.
+To disable `ls` color, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_.
+When coloring is disabled, type indicators (`\*`, `/`, `=>`, `@`, `=`, `|`, `%`)
+will be appended to entries.
```sh
zstyle ':prezto:module:utility:ls' color 'no'
```
-To disable `diff` highlighting, add the following line to *zpreztorc*:
+To disable GNU coreutils `ls` to list directories grouped first, add the
+following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:utility:ls' dirs-first 'no'
+```
+
+To disable `grep` highlighting, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:utility:grep' color 'no'
+```
+
+To disable `diff` highlighting, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:diff' color 'no'
```
-To disable `wdiff` highlighting, add the following line to *zpreztorc*:
+To disable `wdiff` highlighting, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:wdiff' color 'no'
```
-To disable `make` highlighting, add the following line to *zpreztorc*:
+To disable `make` highlighting, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
```sh
zstyle ':prezto:module:utility:make' color 'no'
```
-Aliases
--------
+### Download Helper
+
+To configure the download helper to be used with alias `get`, add the following
+to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'curl'`,
+`'wget'` or `'aria2c'`.
+
+```sh
+zstyle -s ':prezto:module:utility:download' helper ''
+```
+
+## Aliases
### Disabled Spelling Correction
- - `ack`
- - `cd`
- - `cp`
- - `ebuild`
- - `gcc`
- - `gist`
- - `grep`
- - `heroku`
- - `ln`
- - `man`
- - `mkdir`
- - `mv`
- - `mysql`
- - `rm`
+- `ack`
+- `cd`
+- `cp`
+- `ebuild`
+- `gcc`
+- `gist`
+- `grep`
+- `heroku`
+- `ln`
+- `man`
+- `mkdir`
+- `mv`
+- `mysql`
+- `rm`
+
+To disable all spelling corrections, add the following line to
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
+
+```sh
+zstyle ':prezto:module:utility' correct 'no'
+```
### Disabled File Globbing
- - `bower`
- - `fc`
- - `find`
- - `ftp`
- - `history`
- - `locate`
- - `rake`
- - `rsync` (selectively enabled for local files)
- - `scp` (selectively enabled for local files)
- - `sftp`
+- `bower`
+- `fc`
+- `find`
+- `ftp`
+- `history`
+- `locate`
+- `rake`
+- `rsync` (selectively enabled for local files)
+- `scp` (selectively enabled for local files)
+- `sftp`
### General
- - `_` executes a command as another user (`sudo`).
- - `b` opens the default web browser.
- - `diffu` shorthand for `diff --unified`
- - `e` opens the default editor.
- - `mkdir` creates directories, including intermediary directories.
- - `p` opens the default pager.
- - `po` removes a directory from the stack and changes to it (`popd`).
- - `pu` changes the directory and pushes the old directory onto the stack
- (`pushd`).
- - `sa` search aliases for a word.
- - `type` displays all the attribute values of a shell parameter.
+- `_` executes a command as another user (`sudo`).
+- `b` opens the default web browser.
+- `diffu` shorthand for `diff --unified`.
+- `e` opens the default editor.
+- `mkdir` creates directories, including intermediary directories.
+- `p` opens the default pager.
+- `po` removes a directory from the stack and changes to it (`popd`).
+- `pu` changes the directory and pushes the old directory onto the stack
+ (`pushd`).
+- `sa` search aliases for a word.
+- `type` displays all the attribute values of a shell parameter.
### Files and Directories
- - `ls` lists with directories grouped first (GNU only).
- - `l` lists in one column, hidden files.
- - `ll` lists human readable sizes.
- - `lr` lists human readable sizes, recursively.
- - `la` lists human readable sizes, hidden files.
- - `lm` lists human readable sizes, hidden files through pager.
- - `lx` lists sorted by extension (GNU only).
- - `lk` lists sorted by size, largest last.
- - `lt` lists sorted by date, most recent last.
- - `lc` lists sorted by date, most recent last, shows change time.
- - `lu` lists sorted by date, most recent last, shows access time.
- - `sl` lists directory contents (`ls`).
+- `ls` lists with directories grouped first (GNU only).
+- `l` lists in one column, hidden files.
+- `ll` lists human readable sizes.
+- `lr` lists human readable sizes, recursively.
+- `la` lists human readable sizes, hidden files.
+- `lm` lists human readable sizes, hidden files through pager.
+- `lx` lists sorted by extension (GNU only).
+- `lk` lists sorted by size, largest last.
+- `lt` lists sorted by date, most recent last.
+- `lc` lists sorted by date, most recent last, shows change time.
+- `lu` lists sorted by date, most recent last, shows access time.
### macOS Everywhere
- - `o` opens files and directories (`open` or `xdg-open`).
- - `get` downloads files (`curl` or `wget`).
- - `pbcopy` copies to the pasteboard (`pbcopy`, `xclip` or `xsel`).
- - `pbpaste` pastes from the pasteboard (`pbcopy`, `xclip` or `xsel`).
- - `pbc` copies to the pasteboard (`pbcopy`).
- - `pbp` pastes from the pasteboard (`pbpaste`).
+- `o` opens files and directories (`open` or `xdg-open`).
+- `get` downloads files (`curl`, `wget` or `aria2c`).
+- `pbcopy` copies to the pasteboard (`pbcopy`, `xclip` or `xsel`).
+- `pbpaste` pastes from the pasteboard (`pbcopy`, `xclip` or `xsel`).
+- `pbc` copies to the pasteboard (`pbcopy`).
+- `pbp` pastes from the pasteboard (`pbpaste`).
### Resource Usage
- - `df` displays free disk space using human readable units (aliases to `pydf`, if installed).
- - `du` displays disk usage using human readable units.
- - `top` displays information about processes.
- - `topc` displays information about processes sorted by CPU usage.
- - `topm` displays information about processes sorted by RAM usage.
+- `df` displays free disk space using human readable units (aliases to `pydf`,
+ if installed).
+- `du` displays disk usage using human readable units.
+- `top` displays information about processes.
+- `topc` displays information about processes sorted by CPU usage.
+- `topm` displays information about processes sorted by RAM usage.
### Safe ops
By default, `cp`,`ln`, `mv` and `rm` are aliased to their interactive variants.
If this is not desired, it can be disabled by adding the following line to
-*zpreztorc*:
+_`${ZDOTDIR:-$HOME}/.zpreztorc`_:
- zstyle ':prezto:module:utility' safe-ops 'no'.
+```sh
+zstyle ':prezto:module:utility' safe-ops 'no'.
+```
In addition, the following aliases have been added:
- - `cpi` copies files and directories interactively.
- - `lni` links files and directories interactively.
- - `mvi` moves files and directories interactively.
- - `rmi` removes files and directories interactively.
+- `cpi` copies files and directories interactively.
+- `lni` links files and directories interactively.
+- `mvi` moves files and directories interactively.
+- `rmi` removes files and directories interactively.
### Miscellaneous
- - `http-serve` serves a directory via HTTP.
+- `http-serve` serves a directory via HTTP.
-Functions
----------
+## Functions
### General
- - `slit` prints columns *1, 2, 3 ... n*.
+- `slit` prints columns _1, 2, 3 ... n_.
### Files and Directories
- - `cdls` changes to a directory and lists its contents.
- - `dut` displays the grand total disk usage using human readable units.
- - `find-exec` finds files and executes a command on them.
- - `mkdcd` makes a directory and changes to it.
- - `popdls` pops an entry off the directory stack and lists its contents.
- - `pushdls` pushes an entry onto the directory stack and lists its contents.
- - `noremoteglob` enable local path globbing but disable remote path globbing.
+- `cdls` changes to a directory and lists its contents.
+- `dut` displays the grand total disk usage using human readable units.
+- `find-exec` finds files and executes a command on them.
+- `mkdcd` makes a directory and changes to it.
+- `popdls` pops an entry off the directory stack and lists its contents.
+- `pushdls` pushes an entry onto the directory stack and lists its contents.
+- `noremoteglob` enable local path globbing but disable remote path globbing.
### Developer
- - `diff` highlights diff output (requires `colordiff`).
- - `make` highlights make output (requires `colormake`).
- - `wdiff` highlights wdiff output (requires `wdiff `or `Git`).
+- `diff` highlights diff output (requires `colordiff`).
+- `make` highlights make output (requires `colormake`).
+- `wdiff` highlights wdiff output (requires `wdiff` or `git`).
### Resource usage
- - `psu` displays user owned processes status.
+- `psu` displays user owned processes status.
### Search and Replace
- - `prep` provides a grep-like pattern search.
- - `psub` provides a sed-like pattern substitution.
+- `prep` provides a grep-like pattern search.
+- `psub` provides a sed-like pattern substitution.
-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][3]._
- - [Robby Russell](https://github.com/robbyrussell)
- - [Suraj N. Kurapati](https://github.com/sunaku)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Robby Russell](https://github.com/robbyrussell)
+- [Suraj N. Kurapati](https://github.com/sunaku)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: https://github.com/sorin-ionescu/prezto/issues
+[1]: ../completion#readme
+[2]: ../gnu-utility#readme
+[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/utility/functions/diff b/modules/utility/functions/diff
index d614b28bda..2e812f2f44 100644
--- a/modules/utility/functions/diff
+++ b/modules/utility/functions/diff
@@ -5,13 +5,13 @@
# Sorin Ionescu
#
-function diff {
- if zstyle -t ':prezto:module:utility:diff' color \
- && (( $+commands[colordiff] )); then
- command colordiff "$@"
- else
- command diff "$@"
- fi
-}
+# function diff {
-diff "$@"
+if zstyle -t ':prezto:module:utility:diff' color \
+ && (( $+commands[colordiff] )); then
+ command diff "$@" | colordiff
+else
+ command diff "$@"
+fi
+
+# }
diff --git a/modules/utility/functions/dut b/modules/utility/functions/dut
index 659228052a..14741978dc 100644
--- a/modules/utility/functions/dut
+++ b/modules/utility/functions/dut
@@ -6,22 +6,22 @@
# Sorin Ionescu
#
-function dut {
- (( $# == 0 )) && set -- *
+# function dut {
- if grep -q -i 'GNU' < <(du --version 2>&1); then
- du -khsc "$@" | sort -h -r
- else
- local line size name
- local -a record
+(( $# == 0 )) && set -- *
- while IFS=$'\n' read line; do
- record=(${(z)line})
- size="$(($record[1] / 1024.0))"
- name="$record[2,-1]"
- printf "%9.1LfM %s\n" "$size" "$name"
- done < <(du -kcs "$@") | sort -n -r
- fi
-}
+if [[ ${(@M)${(f)"$(du --version 2>&1)"}:#*GNU *} ]]; then
+ du -khsc "$@" | sort -h -r
+else
+ local line size name
+ local -a record
-dut "$@"
+ while IFS=$'\n' read line; do
+ record=(${(z)line})
+ size="$(($record[1] / 1024.0))"
+ name="$record[2,-1]"
+ printf "%9.1LfM %s\n" "$size" "$name"
+ done < <(du -kcs "$@") | sort -n -r
+fi
+
+# }
diff --git a/modules/utility/functions/make b/modules/utility/functions/make
index 5ebab05715..7cda8a6293 100644
--- a/modules/utility/functions/make
+++ b/modules/utility/functions/make
@@ -5,16 +5,13 @@
# Sorin Ionescu
#
-function make {
- if zstyle -t ':prezto:module:utility:make' color; then
- if (( $+commands[colormake] )); then
- colormake "$@"
- else
- command make "$@"
- fi
- else
- command make "$@"
- fi
-}
+# function make {
-make "$@"
+if zstyle -t ':prezto:module:utility:make' color \
+ && (( $+commands[colormake] )); then
+ command colormake "$@"
+else
+ command make "$@"
+fi
+
+# }
diff --git a/modules/utility/functions/wdiff b/modules/utility/functions/wdiff
index ebfad0b82f..f1de659842 100644
--- a/modules/utility/functions/wdiff
+++ b/modules/utility/functions/wdiff
@@ -3,27 +3,30 @@
#
# Authors:
# Sorin Ionescu
+# Indrajit Raychaudhuri
#
-function wdiff {
- if zstyle -t ':prezto:module:utility:wdiff' color; then
- if (( $+commands[wdiff] )); then
- command wdiff \
- --avoid-wraps \
- --start-delete="$(print -n $FG[red])" \
- --end-delete="$(print -n $FG[none])" \
- --start-insert="$(print -n $FG[green])" \
- --end-insert="$(print -n $FG[none])" \
- "$@" \
+# function wdiff {
+
+if zstyle -t ':prezto:module:utility:wdiff' color; then
+ if (( $+commands[wdiff] )); then
+ command wdiff \
+ --avoid-wraps \
+ --start-delete="$(print -n $FG[red])" \
+ --end-delete="$(print -n $FG[none])" \
+ --start-insert="$(print -n $FG[green])" \
+ --end-insert="$(print -n $FG[none])" \
+ "$@" \
| sed 's/^\(@@\( [+-][[:digit:]]*,[[:digit:]]*\)\{2\} @@\)$/;5;6m\10m/g'
- elif (( $+commands[git] )); then
- command git --no-pager diff --color=auto --no-ext-diff --no-index --color-words "$@"
- else
- command wdiff "$@"
- fi
+ elif (( $+commands[git] )); then
+ command git --no-pager diff --no-ext-diff --no-index --color=auto --color-words "$@"
else
command wdiff "$@"
fi
-}
+elif (( ! $+commands[wdiff] && $+commands[git] )); then
+ command git --no-pager diff --no-ext-diff --no-index --color=never "$@"
+else
+ command wdiff "$@"
+fi
-wdiff "$@"
+# }
diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh
index 942090d777..5b4bf80e48 100644
--- a/modules/utility/init.zsh
+++ b/modules/utility/init.zsh
@@ -11,7 +11,12 @@
pmodload 'helper' 'spectrum'
# Correct commands.
-setopt CORRECT
+if zstyle -T ':prezto:module:utility' correct; then
+ setopt CORRECT
+fi
+
+# Load 'run-help' function.
+autoload -Uz run-help-{ip,openssl,sudo}
#
# Aliases
@@ -59,29 +64,33 @@ alias sa='alias | grep -i'
alias type='type -a'
# Safe ops. Ask the user before doing anything destructive.
-alias rmi="${aliases[rm]:-rm} -i"
-alias mvi="${aliases[mv]:-mv} -i"
alias cpi="${aliases[cp]:-cp} -i"
alias lni="${aliases[ln]:-ln} -i"
+alias mvi="${aliases[mv]:-mv} -i"
+alias rmi="${aliases[rm]:-rm} -i"
if zstyle -T ':prezto:module:utility' safe-ops; then
- alias rm='rmi'
- alias mv='mvi'
- alias cp='cpi'
- alias ln='lni'
+ alias cp="${aliases[cp]:-cp} -i"
+ alias ln="${aliases[ln]:-ln} -i"
+ alias mv="${aliases[mv]:-mv} -i"
+ alias rm="${aliases[rm]:-rm} -i"
fi
# ls
-if is-callable 'dircolors'; then
+if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd) *} ]]; then
# GNU Core Utilities
- alias ls='ls --group-directories-first'
+
+ if zstyle -T ':prezto:module:utility:ls' dirs-first; then
+ alias ls="${aliases[ls]:-ls} --group-directories-first"
+ fi
if zstyle -t ':prezto:module:utility:ls' color; then
- # Call dircolors to define colors if they're missing
- if [[ -z "$LS_COLORS" ]]; then
- if [[ -s "$HOME/.dir_colors" ]]; then
- eval "$(dircolors --sh "$HOME/.dir_colors")"
+ # Define colors for GNU ls if they're not already defined
+ if (( ! $+LS_COLORS )); then
+ # Try dircolors when available
+ if is-callable 'dircolors'; then
+ eval "$(dircolors --sh $HOME/.dir_colors(N))"
else
- eval "$(dircolors --sh)"
+ export 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:'
fi
fi
@@ -91,17 +100,13 @@ if is-callable 'dircolors'; then
fi
else
# BSD Core Utilities
+
if zstyle -t ':prezto:module:utility:ls' color; then
# Define colors for BSD ls if they're not already defined
- if [[ -z "$LSCOLORS" ]]; then
+ if (( ! $+LSCOLORS )); then
export LSCOLORS='exfxcxdxbxGxDxabagacad'
fi
- # Define colors for the completion system if they're not already defined
- if [[ -z "$LS_COLORS" ]]; then
- export 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:'
- fi
-
alias ls="${aliases[ls]:-ls} -G"
else
alias ls="${aliases[ls]:-ls} -F"
@@ -113,28 +118,34 @@ alias ll='ls -lh' # Lists human readable sizes.
alias lr='ll -R' # Lists human readable sizes, recursively.
alias la='ll -A' # Lists human readable sizes, hidden files.
alias lm='la | "$PAGER"' # Lists human readable sizes, hidden files through pager.
-alias lx='ll -XB' # Lists sorted by extension (GNU only).
alias lk='ll -Sr' # Lists sorted by size, largest last.
alias lt='ll -tr' # Lists sorted by date, most recent last.
alias lc='lt -c' # Lists sorted by date, most recent last, shows change time.
alias lu='lt -u' # Lists sorted by date, most recent last, shows access time.
-alias sl='ls' # I often screw this up.
+
+if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*GNU *} ]]; then
+ alias lx='ll -XB' # Lists sorted by extension (GNU only).
+fi
# Grep
if zstyle -t ':prezto:module:utility:grep' color; then
- export GREP_COLOR='37;45' # BSD.
- export GREP_COLORS="mt=$GREP_COLOR" # GNU.
+ export GREP_COLOR=${GREP_COLOR:-'37;45'} # BSD.
+ export GREP_COLORS=${GREP_COLORS:-"mt=$GREP_COLOR"} # GNU.
alias grep="${aliases[grep]:-grep} --color=auto"
fi
# macOS Everywhere
-if [[ "$OSTYPE" == darwin* ]]; then
+if is-darwin; then
alias o='open'
-elif [[ "$OSTYPE" == cygwin* ]]; then
+elif is-cygwin; then
alias o='cygstart'
alias pbcopy='tee > /dev/clipboard'
alias pbpaste='cat /dev/clipboard'
+elif is-termux; then
+ alias o='termux-open'
+ alias pbcopy='termux-clipboard-set'
+ alias pbpaste='termux-clipboard-get'
else
alias o='xdg-open'
@@ -151,17 +162,27 @@ alias pbc='pbcopy'
alias pbp='pbpaste'
# File Download
-if (( $+commands[curl] )); then
- alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
-elif (( $+commands[wget] )); then
- alias get='wget --continue --progress=bar --timestamping'
+zstyle -s ':prezto:module:utility:download' helper '_download_helper' || _download_helper='curl'
+
+typeset -A _download_helpers=(
+ aria2c 'aria2c --continue --remote-time --max-tries=0'
+ curl 'curl --continue-at - --location --progress-bar --remote-name --remote-time'
+ wget 'wget --continue --progress=bar --timestamping'
+)
+
+if (( $+commands[$_download_helper] && $+_download_helpers[$_download_helper] )); then
+ alias get="$_download_helpers[$_download_helper]"
+elif (( $+commands[curl] )); then
+ alias get="$_download_helpers[curl]"
fi
+unset _download_helper{,s}
+
# Resource Usage
alias df='df -kh'
alias du='du -kh'
-if [[ "$OSTYPE" == (darwin*|*bsd*) ]]; then
+if is-darwin || is-bsd; then
alias topc='top -o cpu'
alias topm='top -o vsize'
else
@@ -172,10 +193,17 @@ fi
# Miscellaneous
# Serves a directory via HTTP.
-if (( $+commands[python3] )); then
- alias http-serve='python3 -m http.server'
-else
- alias http-serve='python -m SimpleHTTPServer'
+if (( $#commands[(i)python(|[23])] )); then
+ autoload -Uz is-at-least
+ if (( $+commands[python3] )); then
+ alias http-serve='python3 -m http.server'
+ elif (( $+commands[python2] )); then
+ alias http-serve='python2 -m SimpleHTTPServer'
+ elif is-at-least 3 ${"$(python --version 2>&1)"[(w)2]}; then
+ alias http-serve='python -m http.server'
+ else
+ alias http-serve='python -m SimpleHTTPServer'
+ fi
fi
#
diff --git a/modules/wakeonlan/README.md b/modules/wakeonlan/README.md
index dacfa52da4..ca4095ae96 100644
--- a/modules/wakeonlan/README.md
+++ b/modules/wakeonlan/README.md
@@ -1,18 +1,16 @@
-Wake-on-LAN
-===========
+# Wake-on-LAN
This module provides a wrapper around the [wakeonlan][1] tool.
-Usage
------
+## Usage
-To use this wrapper, create the *~/.wakeonlan* directory, and place in it one
+To use this wrapper, create the _`~/.wakeonlan`_ directory, and place in it one
file for each device you would like to be able to wake. Give the file a name
that describes the device, such as its hostname.
Each file should contain a line with the MAC address of the target device and
the network broadcast address. For instance, there might be a file
-*~/.wakeonlan/leto* with the following contents:
+_`~/.wakeonlan/leto`_ with the following contents:
```conf
00:11:22:33:44:55:66 192.168.0.255
@@ -20,21 +18,20 @@ the network broadcast address. For instance, there might be a file
To wake that device, use the following command:
-```sh
-$ wake leto
+```console
+wake leto
```
For more information on the configuration file format, read the
[wakeonlan man page][2].
-Authors
--------
+## Authors
-*The authors of this module should be contacted via [issue tracker][3].*
+_The authors of this module should be contacted via [issue tracker][3]._
- - [Paul Dann](https://github.com/giddie)
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Paul Dann](https://github.com/giddie)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://gsd.di.uminho.pt/jpo/software/wakeonlan/
-[2]: http://man.cx/wakeonlan
+[2]: https://man.cx/wakeonlan
[3]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/modules/yum/README.md b/modules/yum/README.md
index fa944da8d8..850b1c1eca 100644
--- a/modules/yum/README.md
+++ b/modules/yum/README.md
@@ -1,28 +1,25 @@
-Yum
-===
+# Yum
-Defines [yum][1] aliases.
+Defines [_yum_][1] aliases.
-Aliases
--------
+## Aliases
- - `yumc` removes package(s) and leaves.
- - `yumi` installs package(s).
- - `yumh` displays history.
- - `yuml` lists packages.
- - `yumL` lists installed packages.
- - `yumq` displays package information.
- - `yumr` removes package(s).
- - `yums` searches for a package.
- - `yumu` updates packages.
- - `yumU` upgrades packages.
+- `yumc` removes package(s) and leaves.
+- `yumi` installs package(s).
+- `yumh` displays history.
+- `yuml` lists packages.
+- `yumL` lists installed packages.
+- `yumq` displays package information.
+- `yumr` removes package(s).
+- `yums` searches for a package.
+- `yumu` updates packages.
+- `yumU` 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]: http://yum.baseurl.org
[2]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/runcoms/README.md b/runcoms/README.md
index 9df890e51a..39feb7d8d7 100644
--- a/runcoms/README.md
+++ b/runcoms/README.md
@@ -1,34 +1,32 @@
-Configuration Files
-===================
+# Configuration Files
Zsh has several system-wide and user-local configuration files.
-Prezto has one user-local configuration file.
+Additionally, Prezto has one user-local configuration file.
System-wide configuration files are installation-dependent but are installed
-in */etc* by default.
+in _`/etc`_ by default.
User-local configuration files have the same name as their global counterparts
but are prefixed with a dot (hidden). Zsh looks for these files in the path
-stored in the `$ZDOTDIR` environmental variable. However, if said variable is
+stored in the `$ZDOTDIR` environment variable. However, if said variable is
not defined, Zsh will use the user's home directory.
-File Descriptions
------------------
+## File Descriptions
-The configuration files are read in the following order:
+The [configuration files][1] are read in the following order:
- 01. /etc/zshenv
- 02. ~/.zshenv
- 03. /etc/zprofile
- 04. ~/.zprofile
- 05. /etc/zshrc
- 06. ~/.zshrc
- 07. ~/.zpreztorc
- 08. /etc/zlogin
- 09. ~/.zlogin
- 10. ~/.zlogout
- 11. /etc/zlogout
+1. _`/etc/zshenv`_
+2. _`${ZDOTDIR:-$HOME}/.zshenv`_
+3. _`/etc/zprofile`_
+4. _`${ZDOTDIR:-$HOME}/.zprofile`_
+5. _`/etc/zshrc`_
+6. _`${ZDOTDIR:-$HOME}/.zshrc`_
+7. _`${ZDOTDIR:-$HOME}/.zpreztorc`_
+8. _`/etc/zlogin`_
+9. _`${ZDOTDIR:-$HOME}/.zlogin`_
+10. _`${ZDOTDIR:-$HOME}/.zlogout`_
+11. _`/etc/zlogout`_
### zshenv
@@ -37,16 +35,16 @@ small as possible and should only define environment variables.
### zprofile
-This file is similar to zlogin, but it is sourced before zshrc. It was added
-for [KornShell][1] fans. See the description of zlogin below for what it may
+This file is similar to _zlogin_, but it is sourced before _zshrc_. It was added
+for [KornShell][2] fans. See the description of _zlogin_ below for what it may
contain.
-zprofile and zlogin are not meant to be used concurrently but can be done so.
+_zprofile_ and _zlogin_ are not meant to be used together but can be done so.
### zshrc
-This file is sourced by interactive shells. It should define aliases,
-functions, shell options, and key bindings.
+This file is sourced by interactive shells. It should define aliases, functions,
+shell options, and key bindings.
### zpreztorc
@@ -54,9 +52,9 @@ This file configures Prezto.
### zlogin
-This file is sourced by login shells after zshrc, and thus, it should contain
+This file is sourced by login shells after _zshrc_. Thus, it should contain
commands that need to execute at login. It is usually used for messages such as
-[fortune][2], [msgs][3], or for the creation of files.
+[_`fortune`_][3], [_`msgs`_][4], or for the creation of files.
This is not the file to define aliases, functions, shell options, and key
bindings. It should not change the shell environment.
@@ -64,16 +62,16 @@ bindings. It should not change the shell environment.
### zlogout
This file is sourced by login shells during logout. It should be used for
-displaying messages and the deletion of files.
+displaying messages and for deletion of files.
-Authors
--------
+## Authors
-*The authors of these files should be contacted via the [issue tracker][4].*
+_The authors of these files should be contacted via the [issue tracker][5]._
- - [Sorin Ionescu](https://github.com/sorin-ionescu)
+- [Sorin Ionescu](https://github.com/sorin-ionescu)
-[1]: http://www.kornshell.com
-[2]: http://en.wikipedia.org/wiki/Fortune_(Unix)
-[3]: http://www.manpagez.com/man/1/msgs
-[4]: https://github.com/sorin-ionescu/prezto/issues
+[1]: http://zsh.sourceforge.net/Intro/intro_3.html#SEC3
+[2]: https://www.kornshell.com
+[3]: https://en.wikipedia.org/wiki/Fortune_(Unix)
+[4]: https://www.manpagez.com/man/1/msgs
+[5]: https://github.com/sorin-ionescu/prezto/issues
diff --git a/runcoms/zlogin b/runcoms/zlogin
index 16fae45e0f..2f834353f2 100644
--- a/runcoms/zlogin
+++ b/runcoms/zlogin
@@ -8,14 +8,17 @@
# Execute code that does not affect the current session in the background.
{
# Compile the completion dump to increase startup speed.
- zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
+ zcompdump="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump"
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
- zcompile "$zcompdump"
+ if command mkdir "${zcompdump}.zwc.lock" 2>/dev/null; then
+ zcompile "$zcompdump"
+ command rmdir "${zcompdump}.zwc.lock" 2>/dev/null
+ fi
fi
} &!
# Execute code only if STDERR is bound to a TTY.
-[[ -o INTERACTIVE && -t 2 ]] && {
+if [[ -o INTERACTIVE && -t 2 ]]; then
# Print a random, hopefully interesting, adage.
if (( $+commands[fortune] )); then
@@ -23,4 +26,4 @@
print
fi
-} >&2
+fi >&2
diff --git a/runcoms/zlogout b/runcoms/zlogout
index b5d9858c08..3eba9cf71b 100644
--- a/runcoms/zlogout
+++ b/runcoms/zlogout
@@ -14,6 +14,6 @@ SAYINGS=(
)
# Print a randomly-chosen message:
-echo $SAYINGS[$(($RANDOM % ${#SAYINGS} + 1))]
+echo $SAYINGS[$(($RANDOM % $#SAYINGS + 1))]
} >&2
diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc
index 28b6005467..f0046377e5 100644
--- a/runcoms/zpreztorc
+++ b/runcoms/zpreztorc
@@ -18,6 +18,9 @@ zstyle ':prezto:*:*' color 'yes'
# Add additional directories to load prezto modules from
# zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib
+# Allow module overrides when pmodule-dirs causes module name collisions
+# zstyle ':prezto:load' pmodule-allow-overrides 'yes'
+
# Set the Zsh modules to load (man zshmodules).
# zstyle ':prezto:load' zmodule 'attr' 'stat'
@@ -35,6 +38,7 @@ zstyle ':prezto:load' pmodule \
'spectrum' \
'utility' \
'completion' \
+ 'history-substring-search' \
'prompt'
#
@@ -48,7 +52,7 @@ zstyle ':prezto:load' pmodule \
# Completions
#
-# Set the entries to ignore in static */etc/hosts* for host completion.
+# Set the entries to ignore in static '/etc/hosts' for host completion.
# zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \
# '0.0.0.0' '127.0.0.1'
@@ -56,6 +60,9 @@ zstyle ':prezto:load' pmodule \
# Editor
#
+# Set the characters that are considered to be part of a word.
+# zstyle ':prezto:module:editor' wordchars '*?_-.[]~&;!#$%^(){}<>'
+
# Set the key mapping style to 'emacs' or 'vi'.
zstyle ':prezto:module:editor' key-bindings 'emacs'
@@ -79,6 +86,19 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# Set the command prefix on non-GNU systems.
# zstyle ':prezto:module:gnu-utility' prefix 'g'
+#
+# History
+#
+
+# Set the file to save the history in when an interactive shell exits.
+# zstyle ':prezto:module:history' histfile "${ZDOTDIR:-$HOME}/.zsh_history"
+
+# Set the maximum number of events stored in the internal history list.
+# zstyle ':prezto:module:history' histsize 10000
+
+# Set the maximum number of history events to save in the history file.
+# zstyle ':prezto:module:history' savehist 10000
+
#
# History Substring Search
#
@@ -92,6 +112,18 @@ zstyle ':prezto:module:editor' key-bindings 'emacs'
# Set the search globbing flags.
# zstyle ':prezto:module:history-substring-search' globbing-flags ''
+# Enable search case-sensitivity.
+# zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
+
+# Enable search for fuzzy matches.
+# zstyle ':prezto:module:history-substring-search' fuzzy 'yes'
+
+# Enable search uniqueness.
+# zstyle ':prezto:module:history-substring-search' unique 'yes'
+
+# Enable prefixed search.
+# zstyle ':prezto:module:history-substring-search' prefixed 'yes'
+
#
# macOS
#
@@ -124,13 +156,6 @@ zstyle ':prezto:module:prompt' theme 'sorin'
# return codes. This is not supported by all prompts.
# zstyle ':prezto:module:prompt' show-return-val 'yes'
-#
-# Ruby
-#
-
-# Auto switch the Ruby version on directory change.
-# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
-
#
# Python
#
@@ -141,6 +166,13 @@ zstyle ':prezto:module:prompt' theme 'sorin'
# Automatically initialize virtualenvwrapper if pre-requisites are met.
# zstyle ':prezto:module:python:virtualenv' initialize 'yes'
+#
+# Ruby
+#
+
+# Auto switch the Ruby version on directory change.
+# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'
+
#
# Screen
#
diff --git a/runcoms/zprofile b/runcoms/zprofile
index acd774254c..d2acd31145 100644
--- a/runcoms/zprofile
+++ b/runcoms/zprofile
@@ -9,7 +9,7 @@
# Browser
#
-if [[ "$OSTYPE" == darwin* ]]; then
+if [[ -z "$BROWSER" && "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
@@ -17,9 +17,15 @@ fi
# Editors
#
-export EDITOR='nano'
-export VISUAL='nano'
-export PAGER='less'
+if [[ -z "$EDITOR" ]]; then
+ export EDITOR='nano'
+fi
+if [[ -z "$VISUAL" ]]; then
+ export VISUAL='nano'
+fi
+if [[ -z "$PAGER" ]]; then
+ export PAGER='less'
+fi
#
# Language
@@ -43,7 +49,9 @@ typeset -gU cdpath fpath mailpath path
# Set the list of directories that Zsh searches for programs.
path=(
- /usr/local/{bin,sbin}
+ $HOME/{,s}bin(N)
+ /opt/{homebrew,local}/{,s}bin(N)
+ /usr/local/{,s}bin(N)
$path
)
@@ -53,11 +61,13 @@ path=(
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
-# Remove -X and -F (exit if the content fits on one screen) to enable it.
-export LESS='-F -g -i -M -R -S -w -X -z-4'
+# Remove -X to enable it.
+if [[ -z "$LESS" ]]; then
+ export LESS='-g -i -M -R -S -w -X -z-4'
+fi
# Set the Less input preprocessor.
# Try both `lesspipe` and `lesspipe.sh` as either might exist on a system.
-if (( $#commands[(i)lesspipe(|.sh)] )); then
+if [[ -z "$LESSOPEN" ]] && (( $#commands[(i)lesspipe(|.sh)] )); then
export LESSOPEN="| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-"
fi