diff --git a/.gitmodules b/.gitmodules index 547effa..301ae41 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,10 +25,6 @@ [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 - shallow = true [submodule "modules/prompt/external/powerlevel10k"] path = modules/prompt/external/powerlevel10k url = https://github.com/romkatv/powerlevel10k.git diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f4dc0d6..6bcb36b 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 45ef61c..f46e378 100644 --- a/README.md +++ b/README.md @@ -1,136 +1,158 @@ -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 Prezto will work with any recent release of Zsh, but the minimum required -version is 4.3.11. +version is **4.3.11**. - 1. Launch Zsh: +01. Launch Zsh: - ```console - zsh - ``` + ```console + zsh + ``` - 2. Clone the repository: +02. Clone the repository: - ```console - git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" - ``` + ```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: +
+ Optional: Installing in $XDG_CONFIG_HOME - ```sh - setopt EXTENDED_GLOB - for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do - ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" - done - ``` + 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. - Note: If you already have any of the given configuration files, `ln` will - cause error. In simple cases you can load prezto by adding the line - `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to the bottom of your - `.zshrc` and keep the rest of your Zsh configuration intact. For more - complicated setups, it is recommended that you back up your original - configs and replace them with the provided prezto runcoms. + - Clone the repository: - 4. Set Zsh as your default shell: + ```console + git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto" + ``` - ```console - chsh -s /bin/zsh - ``` + - Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`${$HOME}/.zshenv`_: - 5. Open a new Zsh terminal window or tab. + ```sh + export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}" + export ZDOTDIR="${ZDOTDIR:=$XDG_CONFIG_HOME/zsh}" + source "$ZDOTDIR/.zshenv" + ``` + +
+ +03. Create a new Zsh configuration by copying/linking the Zsh configuration + files provided: + + ```console + setopt EXTENDED_GLOB + for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do + ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" + done + ``` + + **Note:** If you already have any of the given configuration files, `ln` in + the above operation will cause an error. In simple cases, you can load + Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to + the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your + Zsh configuration intact. For more complicated setups, we recommend that you + back up your original configs and replace them with the provided Prezto + [_`runcoms`_][10]. + +04. Set Zsh as your default shell: + + ```console + chsh -s /bin/zsh + ``` + +05. Open a new Zsh terminal window or tab. ### Troubleshooting -If you are not able to find certain commands after switching to *Prezto*, -modify the `PATH` variable in *~/.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 be 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] - Note that the 'git' 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 *~/.zpreztorc*) to - enable this module. + ![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. - ```sh - 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 +[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 ebae912..5d7996a 100644 --- a/init.zsh +++ b/init.zsh @@ -44,6 +44,7 @@ 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 sync --recursive git submodule update --init --recursive return $? else @@ -182,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 1ff4e61..cc9dfb1 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 c9806ea..be63788 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`. +- _.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 ------------- +## Alternatives -Specifically on macOS, [The Unarchiver][1] provides a similar command line tool +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 f2cee88..bcbfbd6 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 90e32f1..6a940b1 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 10bbad3..b6f9523 100644 --- a/modules/archive/functions/archive +++ b/modules/archive/functions/archive @@ -1,4 +1,3 @@ -#!/usr/bin/env zsh # # Creates archive file # @@ -8,7 +7,7 @@ # function archive { -local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin +local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin if (( $# < 2 )); then cat >&2 < 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 9e38a80..66c7e35 100644 --- a/modules/archive/functions/unarchive +++ b/modules/archive/functions/unarchive @@ -12,7 +12,7 @@ local success local file_name local file_path local extract_dir -local _gzip_bin _bzip2_bin _xz_bin +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 @@ -72,6 +74,7 @@ while (( $# > 0 )); do (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ && tar --lzma -xvf "$1" \ || lzcat "$1" | tar -xvf - ;; + (*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;; (*.tar) tar -xvf "$1" ;; (*.gz) gunzip "$1" ;; (*.bz2) bunzip2 "$1" ;; diff --git a/modules/autosuggestions/README.md b/modules/autosuggestions/README.md index 48f9852..a3e86c2 100644 --- a/modules/autosuggestions/README.md +++ b/modules/autosuggestions/README.md @@ -1,61 +1,62 @@ -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. -If this module is used in conjunction with the *history-substring-search* -module, this module must be loaded **after** the *history-substring-search* +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. -Contributors ------------- +To elaborate, the relative order of loading the modules would be +_`autosuggestions`_, _`syntax-highlighting`_ and _`history-substring-search`_. + +## 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/command-not-found/README.md b/modules/command-not-found/README.md index ee5a94d..c433380 100644 --- a/modules/command-not-found/README.md +++ b/modules/command-not-found/README.md @@ -1,22 +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 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][3] to tap the `command-not-found` homebrew repository. +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 35884ce..d81692d 100644 --- a/modules/command-not-found/init.zsh +++ b/modules/command-not-found/init.zsh @@ -13,30 +13,10 @@ if [[ -s '/etc/zsh_command_not_found' ]]; then 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. -# To avoid performance penalty, we do not use Homebrew's ruby based command -# lookup mechanism (viz., `brew command command-not-found-init`) and instead -# `find` it ourselves from `TAP_DIRECTORY` defined internally in Homebrew. -elif (( $+commands[brew] )); then - cnf_command=( - "$(brew --repository 2> /dev/null)"/Library/Taps/*/*/cmd/brew-command-not-found-init(|.rb)(.N) - ) - if (( $#cnf_command )); then - cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-command-not-found-cache.zsh" - - if [[ "${${(@o)cnf_command}[1]}" -nt "$cache_file" \ - || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ - || ! -s "$cache_file" ]]; then - mkdir -p "$cache_file:h" - # brew command-not-found-init is slow; cache its output. - brew command-not-found-init >! "$cache_file" 2> /dev/null - fi - - source "$cache_file" - - unset cache_file - fi - - unset cnf_command +elif (( $+commands[brew] )) \ + && [[ -s "${hb_cnf_handler::="$(brew --repository 2> /dev/null)"/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 dc2b9b8..cdce9e5 100644 --- a/modules/completion/README.md +++ b/modules/completion/README.md @@ -1,53 +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. -Options -------- +## Options - - `COMPLETE_IN_WORD` complete from both ends of a word. - - `ALWAYS_TO_END` move cursor to the end of a completed word. - - `PATH_DIRS` perform path search even on command names with slashes. - - `AUTO_MENU` show completion menu on a successive 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. +- `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. -Settings --------- +## Variables -### Ignore */etc/hosts* Entries +- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'. -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). +## 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 ed4ff53..11ad0a4 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit ed4ff5384b03aa775a57d4c9588c88850026b0b3 +Subproject commit 11ad0a45ff1695cac00e86c687cce6fa1fd1cdbd diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 4cf46fa..fc5cfd4 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -7,26 +7,44 @@ # # 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 when available. +if (( $+commands[brew] )) \ + && [[ -d "${curl_prefix::="$(brew --prefix 2> /dev/null)"/opt/curl}" ]]; then + fpath=($curl_prefix/share/zsh/site-functions $fpath) +fi +unset curl_prefix # # Options # -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 @@ -40,6 +58,8 @@ if [[ $_comp_path(#qNmh-20) ]]; then else mkdir -p "$_comp_path:h" compinit -i -d "$_comp_path" + # Keep $_comp_path younger than cache time even if it isn't regenerated. + touch "$_comp_path" fi unset _comp_path @@ -47,6 +67,10 @@ unset _comp_path # Styles # +# Defaults. +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*:default' list-prompt '%S%M matches%s' + # Use caching to make completion for commands such as dpkg and apt usable. zstyle ':completion::complete:*' use-cache on zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache" @@ -69,7 +93,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 @@ -90,7 +113,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' diff --git a/modules/directory/README.md b/modules/directory/README.md index ce806ee..86953a4 100644 --- a/modules/directory/README.md +++ b/modules/directory/README.md @@ -1,34 +1,30 @@ -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. - - `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. +- `d` prints the contents of the directory stack. +- `1 ... 9` changes the directory to the **n** previous one. -Authors -------- +## Authors -*The authors of this module should be contacted via the [issue tracker][1].* +_The authors of this module should be contacted via the [issue tracker][1]._ - - [James Cox](https://github.com/imajes) - - [Sorin Ionescu](https://github.com/sorin-ionescu) +- [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/dnf/README.md b/modules/dnf/README.md index bbf1c92..91a35e8 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 335f77a..f193dc6 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/dpkg/README.md b/modules/dpkg/README.md index 6290c05..4df9230 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 7035635..9aef6ef 100644 --- a/modules/editor/README.md +++ b/modules/editor/README.md @@ -1,34 +1,30 @@ -Editor -====== +# Editor Sets editor specific key bindings options and variables. -Options -------- +## Options - - `BEEP` beep on error in line editor. +- `BEEP` beep on error in line editor. -Variables ---------- +## Variables - - `WORDCHARS` treat a given set of characters as part of a word. +- `WORDCHARS` treat a given set of characters as part of a word. -Settings --------- +## Settings ### 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' @@ -36,15 +32,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. @@ -81,29 +76,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/prezto/issues diff --git a/modules/emacs/README.md b/modules/emacs/README.md index fa9a514..f93304a 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,20 @@ and Emacs configuration. This module prepends the Carton directory to the path variable to enable the execution of `carton`. -Aliases -------- +## Aliases ### 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/environment/README.md b/modules/environment/README.md index 15ee959..5243f26 100644 --- a/modules/environment/README.md +++ b/modules/environment/README.md @@ -1,56 +1,52 @@ -Environment -=========== +# Environment Sets general shell options and defines environment variables. This module must be loaded first. -Contributors ------------- +## Contributors -This module **MUST NOT** rely on any command not built in Zsh. +This module **MUST NOT** rely on any command that is not built in Zsh. -Non-interactive environment variables should be defined in [`zshenv`][1]. +Non-interactive environment variables should be defined in +[_`${ZDOTDIR:-$HOME}/.zshenv`_][1]. -Options -------- +## Options ### General - - `COMBINING_CHARS` combine zero-length punctuation characters (accents) with - the base character. - - `INTERACTIVE_COMMENTS` enable comments in interactive shell. - - `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. - - `MAIL_WARNING` don't print a warning message if a mail file has been accessed. +- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with + the base character. +- `INTERACTIVE_COMMENTS` enable comments in interactive shell. +- `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. +- `MAIL_WARNING` don't print a warning message if a mail file has been accessed. ### Jobs - - `LONG_LIST_JOBS` list jobs in the long format by default. - - `AUTO_RESUME` attempt to resume existing job before creating a new process. - - `NOTIFY` report status of background jobs immediately. - - `BG_NICE` don't run all background jobs at a lower priority. - - `HUP` don't kill jobs on shell exit. - - `CHECK_JOBS` don't report on jobs when shell exit. +- `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 ---------- +## 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. +- `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 -------- +## 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://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv +[1]: ../../runcoms#zshenv [2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh index 836a6cd..3011f59 100644 --- a/modules/environment/init.zsh +++ b/modules/environment/init.zsh @@ -18,11 +18,9 @@ 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 diff --git a/modules/fasd/README.md b/modules/fasd/README.md index cb3fc20..1958a73 100644 --- a/modules/fasd/README.md +++ b/modules/fasd/README.md @@ -1,44 +1,41 @@ -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. +- `j` changes the current working directory interactively. -Completion ----------- +## Completion -Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`, -`,,d` at the end of a comma-separated query then hit tab. +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. -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][6]._ - - [Wei Dai](https://github.com/clvv) - - [Sorin Ionescu](https://github.com/sorin-ionescu) +- [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/git/README.md b/modules/git/README.md index e4425fa..fad57a1 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,288 +47,290 @@ zstyle ':prezto:module:git:alias' skip 'yes' ### Git - - `g` is short for `git`. +- `g` is short for `git`. -### Branch +### 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`) +- `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) -### Commit +- `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. - - `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) - - `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. - - `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) -### 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. - - `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) -### 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. - - `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) -### 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. - - `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) -### Flow +- `gFi` is short for `git flow init` - - `gFi` is short for `git flow init` +#### Feature (Ff) -#### Feature +- `gFf` is short for `git flow feature` +- `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` - - `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) -#### 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` - - `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) -#### 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` - - `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) -#### 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` - - `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) -#### 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` - - `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) -### 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. - - `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) -### 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). - - `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) -### 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. +- `glS` displays the log and checks the validity of signed commits. - - `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) -### 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. - - `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) -### 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. - - `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) -### 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. - - `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) -### 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. - - `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) -### 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. - - `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) -### 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. - - `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) -### Tag +- `gt` lists tags or creates tag. +- `gtl` lists tags matching pattern. +- `gts` creates a signed tag. +- `gtv` validate a signed tag. - - `gt` lists tags or creates tag. - - `gtl` lists tags matching pattern. - - `gts` creates a signed tag. - - `gtv` validate a signed tag. +### Working directory (w) -### 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. +- `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`. @@ -330,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 ---------- +## 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. +- `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 -------- +## 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 @@ -360,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: @@ -389,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. @@ -435,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 95b2a0d..f14cca5 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,18 +50,18 @@ 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' @@ -70,8 +69,8 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then 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' @@ -183,15 +182,15 @@ 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 --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' @@ -253,24 +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 gts='git tag -s' + 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 cb3fc60..bdeb298 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 [[ -z "$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 470c093..b9edd01 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 20c284b..07f261d 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 @@ -219,8 +229,8 @@ function git-info { [[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir" fi if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then - stashed="$(command git stash list 2> /dev/null | wc -l | awk '{print $1}')" - if [[ -n "$stashed" ]]; then + stashed=${#${(f)"$(command git stash list 2> /dev/null)"}} + if (( $stashed > 0 )); then zformat -f stashed_formatted "$stashed_format" "S:$stashed" fi fi diff --git a/modules/git/functions/git-stash-clear-interactive b/modules/git/functions/git-stash-clear-interactive index cc665a1..163deac 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 d9e759e..142a4a7 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 746f46e..5e162a1 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 c8c11aa..b523314 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 ba54082..ac7ef75 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 7e62a17..747c72f 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 4675a3c..85e8605 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 - '[' 'b2sum' 'base32' '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' - 'numfmt' 'od' 'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' - 'pwd' 'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'seq' 'sha1sum' - 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf' + '[' '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' + '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,18 @@ _gnu_utility_cmds=( 'libtool' 'libtoolize' # Miscellaneous - 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which' + 'egrep' 'fgrep' '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 be3c1a9..08730eb 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/haskell/README.md b/modules/haskell/README.md index dcf144c..db7bfae 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/helper/README.md b/modules/helper/README.md index 9f10d6e..5c90a63 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 0553556..0a33d7c 100644 --- a/modules/helper/init.zsh +++ b/modules/helper/init.zsh @@ -30,27 +30,27 @@ function coalesce { return 1 } -# is true on MacOS Darwin +# Checks if running on macOS Darwin. function is-darwin { [[ "$OSTYPE" == darwin* ]] } -# is true on Linux's +# Checks if running on Linux. function is-linux { [[ "$OSTYPE" == linux* ]] } -# is true on BSD's +# Checks if running on BSD. function is-bsd { [[ "$OSTYPE" == *bsd* ]] } -# is true on Cygwin (Windows) +# Checks if running on Cygwin (Windows). function is-cygwin { [[ "$OSTYPE" == cygwin* ]] } -# is true on termux (Android) +# 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 050a5c2..5e8eeb0 100644 --- a/modules/history-substring-search/README.md +++ b/modules/history-substring-search/README.md @@ -1,28 +1,25 @@ -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 ------------- +## 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 +27,45 @@ 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 -------- +## Authors -*The authors of this module should be contacted via the [issue tracker][3].* +_The authors of this module should be contacted via the [issue tracker][4]._ - - [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]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index aae3388..0f80b8e 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit aae3388491c2312c4efb2e86bcb999927bb2900e +Subproject commit 0f80b8eb3368b46e5e573c1d91ae69eb095db3fb diff --git a/modules/history/README.md b/modules/history/README.md index 1a03bd9..3806096 100644 --- a/modules/history/README.md +++ b/modules/history/README.md @@ -1,48 +1,50 @@ -History -======= +# History Sets [history][1] options and defines history aliases. -**Note:** If you are migrating from oh-my-zsh and want to keep your history, you -will either need to set HISTFILE manually to `$HOME/.zsh_history` or rename -`~/.zsh_history` to ~/.zhistory`. +**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`_. -Options -------- +Alternately, you can set `HISTFILE` manually to _`${ZDOTDIR:-$HOME}/.zhistory`_. - - `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. +## Options -Variables ---------- +- `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. - - `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. +## Variables -Aliases -------- +- `HISTFILE` stores the path to the history file. +- `HISTSIZE` stores the maximum number of events to save in the internal history. +- `SAVEHIST` stores the maximum number of events to save in the history file. - - `history-stat` lists the ten most used commands +## Aliases -Authors -------- +- `history-stat` lists the ten most used commands -*The authors of this module should be contacted via the [issue tracker][2].* +## Authors - - [Robby Russell](https://github.com/robbyrussell) - - [Sorin Ionescu](https://github.com/sorin-ionescu) +_The authors of this module should be contacted via the [issue tracker][2]._ -[1]: http://zsh.sourceforge.net/Guide/zshguide02.html#l16 +- [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 d1d3373..3f815c0 100644 --- a/modules/history/init.zsh +++ b/modules/history/init.zsh @@ -26,7 +26,7 @@ setopt HIST_BEEP # Beep when accessing non-existent history. # Variables # -HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zhistory}" # The path to the history file. +HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file. HISTSIZE=10000 # The maximum number of events to save in the internal history. SAVEHIST=10000 # The maximum number of events to save in the history file. @@ -36,3 +36,28 @@ SAVEHIST=10000 # The maximum number of events to save in the h # Lists the ten most used commands. alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head" + +if [[ -s "${OLD_HISTFILE::=${HISTFILE:h}/.zhistory}" ]]; then + + # New 'HISTFILE' doesn't exist yet, rename legacy one if available and notify. + if [[ ! -s "$HISTFILE" ]]; then + < +# + +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 0000000..b06acca --- /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 b1a048b..92ac71d 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 c43759b..7a59127 100644 --- a/modules/node/functions/node-info +++ b/modules/node/functions/node-info @@ -15,12 +15,12 @@ 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}" + version="${$(node -v)#v}" fi if [[ "$version" != (none|system) ]]; then diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 6fb68f3..b359104 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -1,58 +1,65 @@ # -# 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 "${NVM_DIR:=$HOME/.nvm}/nvm.sh" ]]; then - source "${NVM_DIR}/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 "${nvm_prefix::="$(brew --prefix 2> /dev/null)"/opt/nvm}" ]]; then - source "$(brew --prefix nvm)/nvm.sh" - unset nvm_prefix +# 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 "${NODENV_ROOT:=$HOME/.nodenv}/bin/nodenv" ]]; then - path=("${NODENV_ROOT}/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 and known helper completions. -typeset -A compl_commands=( - npm 'npm completion' - grunt 'grunt --completion=zsh' - gulp 'gulp --completion=zsh' -) +# +# Variables +# -for compl_command in "${(k)compl_commands[@]}"; do - if (( $+commands[$compl_command] )); then - cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/$compl_command-cache.zsh" +N_PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}/n" # The path to 'n' cache. - # Completion commands are slow; cache their output if old or missing. - if [[ "$commands[$compl_command]" -nt "$cache_file" \ - || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ - || ! -s "$cache_file" ]]; then - mkdir -p "$cache_file:h" - command ${=compl_commands[$compl_command]} >! "$cache_file" 2> /dev/null - fi +# +# Aliases +# - source "$cache_file" +# 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 - fi -done - -unset compl_command{s,} +alias npmci='npm ci' +alias npmcit='npm cit' +alias npmit='npm it' diff --git a/modules/ocaml/README.md b/modules/ocaml/README.md index e170158..75aed54 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 1f93a2c..893d3af 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 2902c76..b62fab3 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/pacman/README.md b/modules/pacman/README.md index a619a74..4e6ad8b 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/perl/README.md b/modules/perl/README.md index 67f2a17..772d068 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,68 @@ 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 ### General - - `pl` is short for `perl`. - - `pld` looks up Perl documentation (`perldoc`). - - `ple` executes a one line program in a loop (`perl -wlne`). +- `pl` is short for `perl`. +- `pld` looks up Perl documentation (`perldoc`). +- `ple` executes a one line program in a loop (`perl -wlne`). -### Perlbrew +### 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. +- `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 +### 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. +- `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 ---------- +## Functions - - `perl-info` exposes information about the Perl environment via the - `$perl_info` associative array. +- `perl-info` exposes information about the Perl environment via the + `$perl_info` associative array. -Theming -------- +## 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 +94,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/prompt/README.md b/modules/prompt/README.md index ef32770..2279b55 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,22 +33,21 @@ 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: +set the following variable in _`${ZDOTDIR:-$HOME}/.zpreztorc`_: -``` - # Tell prezto we can manage this prompt - zstyle ':prezto:module:prompt' managed 'yes' +```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 @@ -122,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` @@ -134,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. @@ -146,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. @@ -157,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/async b/modules/prompt/external/async index 95c2b15..bbbc92b 160000 --- a/modules/prompt/external/async +++ b/modules/prompt/external/async @@ -1 +1 @@ -Subproject commit 95c2b1577f455728ec01cec001a86c216d0af2bd +Subproject commit bbbc92bd01592513a6b7739a45b7911af18acaef diff --git a/modules/prompt/external/powerlevel10k b/modules/prompt/external/powerlevel10k index d26bdcd..f5d6184 160000 --- a/modules/prompt/external/powerlevel10k +++ b/modules/prompt/external/powerlevel10k @@ -1 +1 @@ -Subproject commit d26bdcd6010cfe82bc7bab07e4363b40be834cc8 +Subproject commit f5d61840ae3a4f8c2765e1a67d94d9a96de71601 diff --git a/modules/prompt/external/powerlevel9k b/modules/prompt/external/powerlevel9k deleted file mode 160000 index 2f4b150..0000000 --- a/modules/prompt/external/powerlevel9k +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2f4b15041fe31d85dc9ef705b818c3a0e6985da3 diff --git a/modules/prompt/functions/prompt_cloud_setup b/modules/prompt/functions/prompt_cloud_setup index be2a33a..908e3c9 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 diff --git a/modules/prompt/functions/prompt_powerlevel9k_setup b/modules/prompt/functions/prompt_powerlevel9k_setup deleted file mode 120000 index f692e0a..0000000 --- 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/init.zsh b/modules/prompt/init.zsh index 0ec007c..3180883 100644 --- a/modules/prompt/init.zsh +++ b/modules/prompt/init.zsh @@ -12,6 +12,16 @@ autoload -Uz promptinit && promptinit zstyle -a ':prezto:module:prompt' theme 'prompt_argv' if [[ "$TERM" == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then prompt 'off' +elif [[ "$prompt_argv[1]" == 'powerlevel9k' ]] ; then + < +# + +if (( $+commands[$words[1]] )); then + + function _pip_completion { + compadd -- $( COMP_WORDS="$words[*]" COMP_CWORD=$(( CURRENT - 1 )) \ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null ) + } + _pip_completion "$@" + +fi diff --git a/modules/python/init.zsh b/modules/python/init.zsh index b878f04..ed68990 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -5,71 +5,77 @@ # Sorin Ionescu # Sebastian Wiesner # Patrick Bos +# Indrajit Raychaudhuri # -# Load dependencies +# Load dependencies. pmodload 'helper' -# Load manually installed pyenv into the path -if [[ -s "${PYENV_ROOT:=$HOME/.pyenv}/bin/pyenv" ]]; then - path=("${PYENV_ROOT}/bin" $path) - eval "$(pyenv init - --no-rehash zsh)" +# 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 -# Load pyenv into the current python session -elif (( $+commands[pyenv] )); then - eval "$(pyenv init - --no-rehash zsh)" + # Ensure manually installed pyenv is added to path when present. + [[ -s $local_pyenv ]] && path=($local_pyenv:h $path) + + # pyenv 2+ requires shims to be added to path before being initialized. + autoload -Uz is-at-least + if is-at-least 2 ${"$(pyenv --version 2>&1)"[(w)2]}; then + eval "$(pyenv init --path zsh)" + fi + + 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) + 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[23]#] && ! $+functions[pyenv] )); 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")" + 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 [[ -n "$WORKON_HOME" && -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME" @@ -80,17 +86,17 @@ 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}" @@ -105,7 +111,7 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ # can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead. local -a pyenv_plugins if (( $+commands[pyenv] )); then - pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2>/dev/null)"}:#virtualenv*}) + pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2> /dev/null)"}:#virtualenv*}) fi if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then @@ -117,19 +123,10 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ pyenv "$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]" 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 + # Fallback to 'virtualenvwrapper' without 'pyenv' wrapper if 'python' is + # available in '$path'. + if (( ! $+VIRTUALENVWRAPPER_PYTHON )) && (( $#commands[(i)python[23]#] )); then + VIRTUALENVWRAPPER_PYTHON=$commands[(i)python[23]#] fi virtenv_sources=( @@ -137,7 +134,7 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) ) if (( $#virtenv_sources )); then - source "${virtenv_sources[1]}" + source "$virtenv_sources[1]" fi unset virtenv_sources @@ -146,38 +143,7 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ unset pyenv_plugins fi -# Load PIP completion. -# Detect and use one available from among 'pip', 'pip2', 'pip3' variants -if [[ -n "$PYENV_ROOT" ]]; then - for pip in pip{,2,3}; do - pip_command="$(pyenv which "$pip" 2>/dev/null)" - [[ -n "$pip_command" ]] && break - done - unset pip -else - pip_command="$commands[(i)pip(|[23])]" -fi -if [[ -n "$pip_command" ]]; then - cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pip-cache.zsh" - - if [[ "$pip_command" -nt "$cache_file" \ - || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ - || ! -s "$cache_file" ]]; then - mkdir -p "$cache_file:h" - # pip is slow; cache its output. And also support 'pip2', 'pip3' variants - "$pip_command" completion --zsh \ - | sed -e "s/\(compctl -K [-_[:alnum:]]* pip\).*/\1{,2,3}{,.{0..9}}/" \ - >! "$cache_file" \ - 2> /dev/null - fi - - source "$cache_file" - - unset cache_file -fi -unset pip_command - -# 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 diff --git a/modules/rails/README.md b/modules/rails/README.md index 19bea1d..129627a 100644 --- a/modules/rails/README.md +++ b/modules/rails/README.md @@ -1,34 +1,31 @@ -Ruby on Rails -============= +# Ruby on Rails Defines [Ruby on Rails][1] aliases. -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. +- `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 -------- +## Authors -*The authors of this module should be contacted via the [issue tracker][2].* +_The authors of this module should be contacted via the [issue tracker][2]._ - - [Robby Russell](https://github.com/robbyrussell) - - [Jake Bell](https://github.com/theunraveler) - - [Sorin Ionescu](https://github.com/sorin-ionescu) +- [Robby Russell](https://github.com/robbyrussell) +- [Jake Bell](https://github.com/theunraveler) +- [Sorin Ionescu](https://github.com/sorin-ionescu) -[1]: http://rubyonrails.org +[1]: https://rubyonrails.org [2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/rsync/README.md b/modules/rsync/README.md index 77d78ea..ca0627f 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 79432c1..47eabfe 100644 --- a/modules/rsync/init.zsh +++ b/modules/rsync/init.zsh @@ -20,14 +20,19 @@ pmodload 'helper' _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 -# macOS and HFS+ 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 --protect-decmpfs --force-change" + # ACL and extended attributes support + if grep -q 'xattrs' <(rsync --help 2>&1); then + _rsync_cmd="${_rsync_cmd} --acls --xattrs" + fi + + # 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 feaa301..97a09f0 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,93 +31,76 @@ 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 ------ +## chruby -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. - -This will be loaded automatically if rbenv is installed to `$RBENV_ROOT`, -`~/.rbenv`, or if the `rbenv` command is on the path. - -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 ### 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. +- `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 ---------- +## 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. +- `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 -------- +## 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 1c1fb99..cf55bc5 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 +# 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) + + eval "$(rbenv init - 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. + # conflicts with rvm. unsetopt AUTO_NAME_DIRS - # Source RVM. - source "$HOME/.rvm/scripts/rvm" - -# Load manually installed rbenv into the shell session. -elif [[ -s "${RBENV_ROOT:=$HOME/.rbenv}/bin/rbenv" ]]; then - path=("${RBENV_ROOT}/bin" $path) - eval "$(rbenv init - --no-rehash zsh)" - -# 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 diff --git a/modules/screen/README.md b/modules/screen/README.md index 0a9ff07..a1775f7 100644 --- a/modules/screen/README.md +++ b/modules/screen/README.md @@ -1,44 +1,40 @@ -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. +- `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 -------- +## 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/spectrum/README.md b/modules/spectrum/README.md index 66abcb2..de393a7 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 61e2262..78beaed 100644 --- a/modules/spectrum/init.zsh +++ b/modules/spectrum/init.zsh @@ -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 a1727b9..5b81409 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/syntax-highlighting/README.md b/modules/syntax-highlighting/README.md index 7a5a30c..2f6ea52 100644 --- a/modules/syntax-highlighting/README.md +++ b/modules/syntax-highlighting/README.md @@ -1,31 +1,28 @@ -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. 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. +[_`history-substring-search`_][2] module, this module must be loaded _before_ +the _`history-substring-search`_ module. -To elaborate: The relative order of loading the modules would be -'syntax-highlighting', 'history-substring-search' and 'prompt'. +To elaborate, the relative order of loading the modules would be +_`syntax-highlighting`_, _`history-substring-search`_ 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' @@ -33,10 +30,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][3]. 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 \ @@ -53,7 +51,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 \ @@ -62,13 +60,13 @@ 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][4]._ - - [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]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/terminal/README.md b/modules/terminal/README.md index 41a0885..be4e3a1 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/tmux/README.md b/modules/tmux/README.md index 0738d7c..e7ae929 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,17 @@ 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. +- `tmuxa` attaches or switches to a tmux session. +- `tmuxl` lists sessions managed by the tmux server. -Caveats -------- +## 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 +70,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/utility/README.md b/modules/utility/README.md index 1179478..142b1ea 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -1,68 +1,100 @@ -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 GNU coreutils `ls` to list directories grouped first, 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 `diff` highlighting, add the following line to *zpreztorc*: +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 *zpreztorc*: +To disable all spelling corrections, add the following line to +_`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility' correct 'no' @@ -70,122 +102,124 @@ 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. +- `sl` lists directory contents (correction for `ls`). ### 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 d614b28..4e08494 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 colordiff "$@" +else + command diff "$@" +fi + +# } diff --git a/modules/utility/functions/dut b/modules/utility/functions/dut index 6592280..1474197 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 5ebab05..7cda8a6 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 ebfad0b..f1de659 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 7bb7532..c6dc3c0 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -15,6 +15,9 @@ if zstyle -T ':prezto:module:utility' correct; then setopt CORRECT fi +# Load 'run-help' function. +autoload -Uz run-help-{ip,openssl,sudo} + # # Aliases # @@ -61,19 +64,19 @@ 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="${aliases[rm]:-rm} -i" - alias mv="${aliases[mv]:-mv} -i" 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 *} ]]; then # GNU Core Utilities if zstyle -T ':prezto:module:utility:ls' dirs-first; then @@ -81,12 +84,13 @@ if is-callable 'dircolors'; then 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 @@ -96,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" @@ -118,17 +118,20 @@ 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. +alias sl='ls' # Correction for common spelling error. + +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 @@ -160,12 +163,22 @@ 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' @@ -181,10 +194,15 @@ 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 is-at-least 3 ${"$(python --version 2>&1)"[(w)2]}; then + alias http-serve='python -m http.server' + elif (( $+commands[python3] )); then + alias http-serve='python3 -m http.server' + else + alias http-serve='$commands[(i)python(|2)] -m SimpleHTTPServer' + fi fi # diff --git a/modules/wakeonlan/README.md b/modules/wakeonlan/README.md index dacfa52..ca4095a 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 fa944da..850b1c1 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 29d9f8a..277e833 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. 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` 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 +01. *`/etc/zshenv`* +02. *`${ZDOTDIR:-$HOME}/.zshenv`* +03. *`/etc/zprofile`* +04. *`${ZDOTDIR:-$HOME}/.zprofile`* +05. *`/etc/zshrc`* +06. *`${ZDOTDIR:-$HOME}/.zshrc`* +07. *`${ZDOTDIR:-$HOME}/.zpreztorc`* +08. *`/etc/zlogin`* +09. *`${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/zpreztorc b/runcoms/zpreztorc index 9a3c19a..cc6ebb4 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -38,6 +38,7 @@ zstyle ':prezto:load' pmodule \ 'spectrum' \ 'utility' \ 'completion' \ + 'history-substring-search' \ 'prompt' # @@ -51,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' diff --git a/runcoms/zprofile b/runcoms/zprofile index acd7742..1cf48bf 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -53,8 +53,8 @@ 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. +export LESS='-g -i -M -R -S -w -X -z-4' # Set the Less input preprocessor. # Try both `lesspipe` and `lesspipe.sh` as either might exist on a system.