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