Repository: sorin-ionescu/prezto Branch: master Commit: 6225b191463d Files: 172 Total size: 307.8 KB Directory structure: gitextract_da2eg8c5/ ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── init.zsh ├── modules/ │ ├── README.md │ ├── archive/ │ │ ├── README.md │ │ └── functions/ │ │ ├── _lsarchive │ │ ├── _unarchive │ │ ├── archive │ │ ├── lsarchive │ │ └── unarchive │ ├── autosuggestions/ │ │ ├── README.md │ │ └── init.zsh │ ├── command-not-found/ │ │ ├── README.md │ │ └── init.zsh │ ├── completion/ │ │ ├── README.md │ │ └── init.zsh │ ├── directory/ │ │ ├── README.md │ │ └── init.zsh │ ├── dnf/ │ │ ├── README.md │ │ └── init.zsh │ ├── docker/ │ │ ├── README.md │ │ ├── alias.zsh │ │ └── init.zsh │ ├── dpkg/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── deb-clone │ │ │ ├── deb-history │ │ │ └── deb-kbuild │ │ └── init.zsh │ ├── editor/ │ │ ├── README.md │ │ └── init.zsh │ ├── emacs/ │ │ ├── README.md │ │ └── init.zsh │ ├── environment/ │ │ ├── README.md │ │ └── init.zsh │ ├── fasd/ │ │ ├── README.md │ │ └── init.zsh │ ├── git/ │ │ ├── README.md │ │ ├── alias.zsh │ │ ├── functions/ │ │ │ ├── _git-hub-browse │ │ │ ├── _git-hub-shorten-url │ │ │ ├── _git-info │ │ │ ├── _git-submodule-move │ │ │ ├── _git-submodule-remove │ │ │ ├── git-branch-current │ │ │ ├── git-commit-lost │ │ │ ├── git-dir │ │ │ ├── git-hub-browse │ │ │ ├── git-hub-shorten-url │ │ │ ├── git-info │ │ │ ├── git-root │ │ │ ├── git-stash-clear-interactive │ │ │ ├── git-stash-dropped │ │ │ ├── git-stash-recover │ │ │ ├── git-submodule-move │ │ │ └── git-submodule-remove │ │ └── init.zsh │ ├── gnu-utility/ │ │ ├── README.md │ │ └── init.zsh │ ├── gpg/ │ │ ├── README.md │ │ └── init.zsh │ ├── haskell/ │ │ ├── README.md │ │ └── init.zsh │ ├── helper/ │ │ ├── README.md │ │ ├── functions/ │ │ │ └── add-zsh-trap │ │ └── init.zsh │ ├── history/ │ │ ├── README.md │ │ └── init.zsh │ ├── history-substring-search/ │ │ ├── README.md │ │ └── init.zsh │ ├── homebrew/ │ │ ├── README.md │ │ └── init.zsh │ ├── macports/ │ │ ├── README.md │ │ └── init.zsh │ ├── node/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── _grunt │ │ │ ├── _gulp │ │ │ ├── node-doc │ │ │ └── node-info │ │ └── init.zsh │ ├── ocaml/ │ │ ├── README.md │ │ └── init.zsh │ ├── osx/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── _mand_manp │ │ │ ├── mand │ │ │ ├── manp │ │ │ ├── osx-ls-download-history │ │ │ ├── osx-rm-dir-metadata │ │ │ ├── osx-rm-download-history │ │ │ ├── pfd │ │ │ ├── pfs │ │ │ ├── ql │ │ │ ├── tab │ │ │ └── trash │ │ └── init.zsh │ ├── pacman/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── pacman-list-disowned │ │ │ └── pacman-list-explicit │ │ └── init.zsh │ ├── perl/ │ │ ├── README.md │ │ ├── functions/ │ │ │ └── perl-info │ │ └── init.zsh │ ├── prompt/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── prompt-pwd │ │ │ ├── prompt_cloud_setup │ │ │ ├── prompt_damoekri_setup │ │ │ ├── prompt_giddie_setup │ │ │ ├── prompt_kylewest_setup │ │ │ ├── prompt_minimal_setup │ │ │ ├── prompt_nicoulaj_setup │ │ │ ├── prompt_paradox_setup │ │ │ ├── prompt_peepcode_setup │ │ │ ├── prompt_skwp_setup │ │ │ ├── prompt_smiley_setup │ │ │ ├── prompt_sorin_setup │ │ │ └── prompt_steeef_setup │ │ └── init.zsh │ ├── python/ │ │ ├── README.md │ │ ├── functions/ │ │ │ └── python-info │ │ └── init.zsh │ ├── rails/ │ │ ├── README.md │ │ └── init.zsh │ ├── rsync/ │ │ ├── README.md │ │ └── init.zsh │ ├── ruby/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── ruby-app-root │ │ │ └── ruby-info │ │ └── init.zsh │ ├── screen/ │ │ ├── README.md │ │ └── init.zsh │ ├── spectrum/ │ │ ├── README.md │ │ └── init.zsh │ ├── ssh/ │ │ ├── README.md │ │ └── init.zsh │ ├── syntax-highlighting/ │ │ ├── README.md │ │ └── init.zsh │ ├── terminal/ │ │ ├── README.md │ │ └── init.zsh │ ├── tmux/ │ │ ├── README.md │ │ └── init.zsh │ ├── utility/ │ │ ├── README.md │ │ ├── functions/ │ │ │ ├── _cdls_popdls_pushdls │ │ │ ├── _dut │ │ │ ├── _mkdcd │ │ │ ├── _noremoteglob │ │ │ ├── _prep │ │ │ ├── _psub │ │ │ ├── diff │ │ │ ├── dut │ │ │ ├── make │ │ │ ├── prep │ │ │ ├── psub │ │ │ ├── wdiff │ │ │ └── zsh-help │ │ └── init.zsh │ ├── wakeonlan/ │ │ ├── README.md │ │ └── functions/ │ │ ├── _wake │ │ └── wake │ └── yum/ │ ├── README.md │ └── init.zsh └── runcoms/ ├── README.md ├── zlogin ├── zlogout ├── zpreztorc ├── zprofile ├── zshenv └── zshrc ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ [*] end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 trim_trailing_whitespace = true [{.gitattributes,.gitignore,.gitmodules}] indent_style = tab ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ### Description ### Expected behavior ### Actual behavior ### Steps to Reproduce 1. [First Step] 2. [Second Step] 3. [and so on...] ### Versions - Prezto commit: - ZSH version: - OS information: ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) before submitting your pull request. Fixes # ## Proposed Changes - - - ================================================ FILE: .gitignore ================================================ *.zwc *.zwc.old modules/*/cache.zsh contrib ================================================ FILE: .gitmodules ================================================ [submodule "modules/autosuggestions/external"] path = modules/autosuggestions/external url = https://github.com/zsh-users/zsh-autosuggestions.git [submodule "modules/history-substring-search/external"] path = modules/history-substring-search/external url = https://github.com/zsh-users/zsh-history-substring-search.git [submodule "modules/syntax-highlighting/external"] path = modules/syntax-highlighting/external url = https://github.com/zsh-users/zsh-syntax-highlighting.git [submodule "modules/completion/external"] path = modules/completion/external url = https://github.com/zsh-users/zsh-completions.git [submodule "modules/prompt/external/powerline"] path = modules/prompt/external/powerline url = https://github.com/davidjrice/prezto_powerline.git [submodule "modules/prompt/external/agnoster"] path = modules/prompt/external/agnoster url = https://github.com/agnoster/agnoster-zsh-theme.git [submodule "modules/prompt/external/pure"] path = modules/prompt/external/pure url = https://github.com/sindresorhus/pure.git [submodule "modules/fasd/external"] path = modules/fasd/external url = https://github.com/whjvenyl/fasd.git [submodule "modules/prompt/external/async"] path = modules/prompt/external/async url = https://github.com/mafredri/zsh-async.git [submodule "modules/prompt/external/powerlevel10k"] path = modules/prompt/external/powerlevel10k url = https://github.com/romkatv/powerlevel10k.git shallow = true ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing This project would not exist without all of its users and [contributors][1]. If you have ideas on how to make the configuration easier to maintain or improve its performance, do not hesitate to fork and send pull requests. ## Issue Reporting - Check that the issue has not already been reported. - Check that the issue has not already been fixed in the latest code. - Open an issue with a clear title and description in grammatically correct, complete sentences. ## Pull Request - Read [how to properly contribute to open source projects on GitHub][2]. - Use a topic branch to easily amend a pull request later, if necessary. - Write [good commit messages][3]. - Squash commits on the topic branch before opening a pull request. - Use the same coding style and spacing. - Open a [pull request][4] that relates to but one subject with a clear title and description in grammatically correct, complete sentences. ### Code Style This project follows the [Google Shell Style Guide][5] when possible. However, there are a number of additional things to keep in mind. - Local variables should be used whenever possible. - Prefer `zstyle` over environment variables for configuration. - Prefer (( ... )) over [[ ... ]] for arithmetic expression. - Use the function keyword to define functions. - The 80 character hard limit can be waived for readability. ### Using an Alternative *zprezto* Directory To work on Prezto without affecting your current configuration: ```sh mkdir devel-zprezto cd devel-zprezto git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto ZDOTDIR=$(pwd) echo "Your development ZDOTDIR is $ZDOTDIR" setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done ``` Then to start zsh in this development environment you will run: ```console ZDOTDIR=/path/to/devel-zprezto zsh ``` ### Modules - A *README.md* must be present. - Large functions must be placed in a *functions* directory. - Functions that take arguments must have completion. ### Themes - A screenshots section must be present in the file header. - The pull request description must have [embedded screenshots][6]. [1]: https://github.com/sorin-ionescu/prezto/contributors [2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request [3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html [4]: https://help.github.com/articles/using-pull-requests [5]: https://google.github.io/styleguide/shell.xml [6]: https://github.github.com/gfm/#images ================================================ FILE: LICENSE ================================================ Copyright (c) 2009-2011 Robby Russell and contributors Copyright (c) 2011-2017 Sorin Ionescu and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE ================================================ FILE: README.md ================================================ # Prezto — Instantly Awesome Zsh Prezto is the configuration framework for [Zsh][1]; it enriches the command line interface environment with sane defaults, aliases, functions, auto completion, and prompt themes. ## Installation ### Manual Prezto will work with any recent release of Zsh, but the minimum required version is **4.3.11**. 01. Launch Zsh: ```console zsh ``` 02. Clone the repository: ```console git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" ```
Optional: Installing in $XDG_CONFIG_HOME Optionally, if you already have `$XDG_CONFIG_HOME` configured (usually as _`$HOME/.config`_ by default) and intend to install Prezto under _`$XDG_CONFIG_HOME/zsh`_ instead, you can clone the repository there and configure `$ZDOTDIR` separately if not already configured. - Clone the repository: ```console git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto" ``` - Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`$HOME/.zshenv`_: ```sh export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:=$HOME/.config}" [[ -d $XDG_CONFIG_HOME/zsh ]] && export ZDOTDIR="$XDG_CONFIG_HOME/zsh" source "$ZDOTDIR/.zshenv" ```
03. Create a new Zsh configuration by copying/linking the Zsh configuration files provided: ```console setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done ``` **Note:** If you already have any of the given configuration files, `ln` in the above operation will cause an error. In simple cases, you can load Prezto by adding the line `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your Zsh configuration intact. For more complicated setups, we recommend that you back up your original configs and replace them with the provided Prezto [_`runcoms`_][10]. 04. Set Zsh as your default shell: ```console chsh -s /bin/zsh ``` 05. Open a new Zsh terminal window or tab. ### Troubleshooting If you are not able to find certain commands after switching to Prezto, modify the `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh terminal window or tab. ## Updating Run `zprezto-update` to automatically check if there is an update to Prezto. If there are no file conflicts, Prezto and its submodules will be automatically updated. If there are conflicts you will be instructed to go into the `$ZPREZTODIR` directory and resolve them yourself. To pull the latest changes and update submodules manually: ```console cd $ZPREZTODIR git pull git submodule sync --recursive git submodule update --init --recursive ``` ## Usage Prezto has many features disabled by default. Read the source code and the accompanying README files to learn about what is available. ### Modules 01. Browse [_`modules`_][9] to see what is available. 02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open a new Zsh terminal window or tab. ### Themes 01. For a list of themes, type `prompt -l`. 02. To preview a theme, type `prompt -p name`. 03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open a new Zsh terminal window or tab. ![sorin theme][2] Note that the [_`git`_][11] module may be required for special symbols to appear, such as those on the right of the above image. Add `'git'` to the `pmodule` list (under `zstyle ':prezto:load' pmodule \` in your _`${ZDOTDIR:-$HOME}/.zpreztorc`_) to enable this module. ### External Modules 01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_. 02. Additional module directories can be added to the `:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. Note that module names need to be unique or they will cause an error when loading. ```sh zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib ``` ## Customization The project is managed via [Git][3]. We highly recommend that you fork this project so that you can commit your changes and push them to your fork on [GitHub][4] to preserve them. If you do not know how to use Git, follow this [tutorial][5] and bookmark this [reference][6]. ## Resources The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable. ## License This project is licensed under the MIT License. [1]: https://www.zsh.org [2]: https://i.imgur.com/nrGV6pg.png "sorin theme" [3]: https://git-scm.com [4]: https://github.com [5]: https://gitimmersion.com [6]: https://git.github.io/git-reference/ [7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf [8]: https://grml.org/zsh/zsh-lovers.html [9]: modules#readme [10]: runcoms#readme [11]: modules/git#readme ================================================ FILE: init.zsh ================================================ # # Initializes Prezto. # # Authors: # Sorin Ionescu # # # Version Check # # Check for the minimum supported version. min_zsh_version='4.3.11' if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then printf "prezto: old shell detected, minimum required: %s\n" "$min_zsh_version" >&2 return 1 fi unset min_zsh_version # zprezto convenience updater # The function is surrounded by ( ) instead of { } so it starts in a subshell # and won't affect the environment of the calling shell function zprezto-update { ( function cannot-fast-forward { local STATUS="$1" [[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}" printf "Unable to fast-forward the changes. You can fix this by " printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}" printf "to manually pull and possibly merge in changes\n" } builtin cd -q -- "${ZPREZTODIR}" || return 7 local orig_branch="$(git symbolic-ref HEAD 2> /dev/null | cut -d '/' -f 3)" if [[ "$orig_branch" == "master" ]]; then git fetch || return "$?" local UPSTREAM=$(git rev-parse '@{u}') local LOCAL=$(git rev-parse HEAD) local REMOTE=$(git rev-parse "$UPSTREAM") local BASE=$(git merge-base HEAD "$UPSTREAM") if [[ $LOCAL == $REMOTE ]]; then printf "There are no updates.\n" return 0 elif [[ $LOCAL == $BASE ]]; then printf "There is an update available. Trying to pull.\n\n" if git pull --ff-only; then printf "Syncing submodules\n" git submodule sync --recursive git submodule update --init --recursive return $? else cannot-fast-forward return 1 fi elif [[ $REMOTE == $BASE ]]; then cannot-fast-forward "Commits in master that aren't in upstream." return 1 else cannot-fast-forward "Upstream and local have diverged." return 1 fi else printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}" printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}" return 1 fi return 1 ) } # # Module Loader # # Loads Prezto modules. function pmodload { local -a pmodules local -a pmodule_dirs local -a locations local pmodule local pmodule_location local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)' # Load in any additional directories and warn if they don't exist zstyle -a ':prezto:load' pmodule-dirs 'user_pmodule_dirs' for user_dir in "$user_pmodule_dirs[@]"; do if [[ ! -d "$user_dir" ]]; then echo "$0: Missing user module dir: $user_dir" fi done pmodule_dirs=("$ZPREZTODIR/modules" "$ZPREZTODIR/contrib" "$user_pmodule_dirs[@]") # $argv is overridden in the anonymous function. pmodules=("$argv[@]") # Load Prezto modules. for pmodule in "$pmodules[@]"; do if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then continue else locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)}) if (( ${#locations} > 1 )); then if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then print "$0: conflicting module locations: $locations" continue fi elif (( ${#locations} < 1 )); then print "$0: no such module: $pmodule" continue fi # Grab the full path to this module pmodule_location=${locations[-1]} # Add functions to $fpath. fpath=(${pmodule_location}/functions(-/FN) $fpath) function { local pfunction # Extended globbing is needed for listing autoloadable function directories. setopt LOCAL_OPTIONS EXTENDED_GLOB # Load Prezto functions. for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do autoload -Uz "$pfunction" done } if [[ -s "${pmodule_location}/init.zsh" ]]; then source "${pmodule_location}/init.zsh" elif [[ -s "${pmodule_location}/${pmodule}.plugin.zsh" ]]; then source "${pmodule_location}/${pmodule}.plugin.zsh" fi if (( $? == 0 )); then zstyle ":prezto:module:$pmodule" loaded 'yes' else # Remove the $fpath entry. fpath[(r)${pmodule_location}/functions]=() function { local pfunction # Extended globbing is needed for listing autoloadable function # directories. setopt LOCAL_OPTIONS EXTENDED_GLOB # Unload Prezto functions. for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do unfunction "$pfunction" done } zstyle ":prezto:module:$pmodule" loaded 'no' fi fi done } # # Prezto Initialization # # This finds the directory prezto is installed to so plugin managers don't need # to rely on dirty hacks to force prezto into a directory. Additionally, it # needs to be done here because inside the pmodload function ${0:h} evaluates to # the current directory of the shell rather than the prezto dir. ZPREZTODIR=${0:h} # Source the Prezto configuration file. if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then source "${ZDOTDIR:-$HOME}/.zpreztorc" fi # Disable color and theme in dumb terminals. if [[ $TERM == dumb ]]; then zstyle ':prezto:*:*' color 'no' zstyle ':prezto:module:prompt' theme 'off' fi # Load Zsh modules. zstyle -a ':prezto:load' zmodule 'zmodules' for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}" unset zmodule{s,} # Load more specific 'run-help' function from $fpath. (( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help # Autoload Zsh functions. zstyle -a ':prezto:load' zfunction 'zfunctions' for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction" unset zfunction{s,} # Load Prezto modules. zstyle -a ':prezto:load' pmodule 'pmodules' pmodload "$pmodules[@]" unset pmodules ================================================ FILE: modules/README.md ================================================ # Modules Load modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters. ```sh zstyle ':prezto:load' pmodule 'environment' 'terminal' ``` ## Archive Provides functions to list and extract archives. ## Autosuggestions Integrates zsh-autosuggestions into Prezto. ## Command-Not-Found Loads the command-not-found tool on macOS or Debian-based distributions. ## Completion Loads and configures TAB completion and provides additional completions from the zsh-completions project. ## Directory Sets directory options and defines directory aliases. ## DNF Defines _dnf_ aliases. ## Dpkg Defines _dpkg_ aliases and functions. ## Editor Sets key bindings. ## Emacs Enables Emacs dependency management. ## Environment Sets general shell options and defines environment variables. ## Fasd Maintains a frequently used file and directory list for fast access. ## Git Enhances the Git distributed version control system by providing aliases, functions and by exposing repository status information to prompts. ## GNU Utility Provides for the interactive use of GNU utilities on non-GNU systems. ## GPG Provides for an easier use of GPG by setting up gpg-agent. ## Haskell Enables local Haskell package installation. ## Helper Provides helper functions for developing modules. ## History Sets history options and defines history aliases. ## History Substring Search Integrates zsh-history-substring-search into Prezto. ## Homebrew Defines Homebrew aliases. ## MacPorts Defines MacPorts aliases and adds MacPorts directories to path variables. ## Node.js Provides utility functions for Node.js and loads npm completion. ## OCaml Initializes OCaml package management. ## OSX Defines macOS aliases and functions. ## Pacman Provides aliases and functions for the Pacman package manager and frontends. ## Perl Enables local Perl module installation on macOS and defines alises. ## Prompt Loads prompt themes. ## Python Enables local Python and local Python package installation. ## Ruby on Rails Defines Ruby on Rails aliases. ## Rsync Defines rsync aliases. ## Ruby Configures Ruby local gem installation, loads version managers, and defines aliases. ## GNU Screen Defines GNU Screen aliases and provides for auto launching it at start-up. ## Spectrum Provides for easier use of 256 colors and effects. ## SSH Provides for an easier use of SSH by setting up ssh-agent. ## Syntax Highlighting Integrates zsh-syntax-highlighting into Prezto. ## Terminal Sets terminal window and tab titles. ## Tmux Defines tmux aliases and provides for auto launching it at start-up. ## Utility Defines general aliases and functions. ## Wake-on-LAN This module provides a wrapper around the wakeonlan tool. ## Yum Defines yum aliases. ================================================ FILE: modules/archive/README.md ================================================ # Archive Provides functions to create, list, and extract archives. This module must be loaded _before_ the [_`completion`_][1] module so that the provided completion definitions are loaded automatically by _`completion`_ module. ## Functions - `archive` creates an archive based on the provided archive name. - `lsarchive` lists the contents of one or more archives. - `unarchive` extracts the contents of one or more archives. ## Supported Formats The following archive formats are supported when the required utilities are installed: - _.tar.gz_, _.tgz_ require `tar` (optionally `pigz`). - _.tar.bz2_, _.tbz_ require `tar` (optionally `pbzip2`). - _.tar.xz_, _.txz_ require `tar` with _xz_ support. - _.tar.zma_, _.tlz_ require `tar` with _lzma_ support. - _.tar_ requires `tar`. - _.gz_ requires `gunzip`. - _.bz2_ requires `bunzip2`. - _.xz_ requires `unxz`. - _.lzma_ requires `unlzma`. - _.Z_ requires `uncompress`. - _.zip_, _.jar_ requires `unzip`. - _.rar_ requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`. - _.7z_ requires `7za`. - _.deb_ requires `ar`, `tar`. Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them over their traditional counterparts, `gzip` and `bzip2` respectively, to take full advantage of all available CPU cores for compression. ## Alternatives Specifically on macOS, [The Unarchiver][2] provides a similar command line tool which doesn't depend on a number of other programs being installed. ## Authors _The authors of this module should be contacted via the [issue tracker][3]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Matt Hamilton](https://github.com/Eriner) [1]: ../completion#readme [2]: https://theunarchiver.com/command-line [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/archive/functions/_lsarchive ================================================ #compdef lsarchive #autoload # # Completes lsarchive. # # Authors: # Sorin Ionescu # _arguments \ '(-v --verbose)'{-v,--remove}'[verbose archive listing]' \ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z)(-.)'" && return 0 ================================================ FILE: modules/archive/functions/_unarchive ================================================ #compdef unarchive #autoload # # Completes unarchive. # # Authors: # Sorin Ionescu # _arguments \ '(-r --remove)'{-r,--remove}'[remove archive]' \ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z|deb)(-.)'" && return 0 ================================================ FILE: modules/archive/functions/archive ================================================ # # Creates archive file # # Authors: # Matt Hamilton # # function archive { local archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin if (( $# < 2 )); then cat >&2 < # # function lsarchive { local verbose if (( $# == 0 )); then cat >&2 <. EOF fi if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then verbose=0 shift fi while (( $# > 0 )); do if [[ ! -s "$1" ]]; then print "$0: file not valid: $1" >&2 shift continue fi case "$1:l" in (*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;; (*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;; (*.tar.xz|*.txz) tar --xz --help &> /dev/null \ && tar --xz -t${verbose:+v}f "$1" \ || xzcat "$1" | tar t${verbose:+v}f - ;; (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ && tar --lzma -t${verbose:+v}f "$1" \ || lzcat "$1" | tar x${verbose:+v}f - ;; (*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f "$1" ;; (*.tar) tar t${verbose:+v}f "$1" ;; (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; (*.rar) ( (( $+commands[unrar] )) \ && unrar ${${verbose:+v}:-l} "$1" ) \ || ( (( $+commands[rar] )) \ && rar ${${verbose:+v}:-l} "$1" ) \ || lsar ${verbose:+-l} "$1" ;; (*.7z) 7za l "$1" ;; (*) print "$0: cannot list: $1" >&2 success=1 ;; esac shift done # } ================================================ FILE: modules/archive/functions/unarchive ================================================ # # Extracts the contents of archives. # # Authors: # Sorin Ionescu # # function unarchive { local remove_archive local success local file_name local file_path local extract_dir local _gzip_bin _bzip2_bin _xz_bin _zstd_bin if (( $# == 0 )); then cat >&2 <. EOF fi remove_archive=1 if [[ "$1" == "-r" || "$1" == "--remove" ]]; then remove_archive=0 shift fi # here, we check for dropin/multi-threaded replacements # this should eventually be moved to modules/archive/init.zsh # as a global alias if (( $+commands[unpigz] )); then _gzip_bin='unpigz' else _gzip_bin='gunzip' fi if (( $+commands[pixz] )); then _xz_bin='pixz -d' else _xz_bin='xz' fi if (( $+commands[lbunzip2] )); then _bzip2_bin='lbunzip2' elif (( $+commands[pbunzip2] )); then _bzip2_bin='pbunzip2' else _bzip2_bin='bunzip2' fi _zstd_bin='zstd' while (( $# > 0 )); do if [[ ! -s "$1" ]]; then print "$0: file not valid: $1" >&2 shift continue fi success=0 file_name="${1:t}" file_path="${1:A}" extract_dir="${file_name:r}" case "$1:l" in (*.tar.gz|*.tgz) tar -xvf "$1" --use-compress-program="${_gzip_bin}" ;; (*.tar.bz2|*.tbz|*.tbz2) tar -xvf "$1" --use-compress-program="${_bzip2_bin}" ;; (*.tar.xz|*.txz) tar -xvf "$1" --use-compress-program="${_xz_bin}" ;; (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ && tar --lzma -xvf "$1" \ || lzcat "$1" | tar -xvf - ;; (*.tar.zst|*.tzst) tar -xvf "$1" --use-compress-program="${_zstd_bin}" ;; (*.tar) tar -xvf "$1" ;; (*.gz) gunzip "$1" ;; (*.bz2) bunzip2 "$1" ;; (*.xz) unxz "$1" ;; (*.lzma) unlzma "$1" ;; (*.Z) uncompress "$1" ;; (*.zip|*.jar) unzip "$1" -d $extract_dir ;; (*.rar) ( (( $+commands[unrar] )) \ && unrar x -ad "$1" ) \ || ( (( $+commands[rar] )) \ && rar x -ad "$1" ) \ || unar -d "$1" ;; (*.7z) 7za x "$1" ;; (*.deb) mkdir -p "$extract_dir/control" mkdir -p "$extract_dir/data" cd "$extract_dir"; ar vx "${file_path}" > /dev/null cd control; tar xvf ../control.tar.* cd ../data; tar xvf ../data.tar.* cd ..; rm control.tar.* data.tar.* debian-binary cd .. ;; (*) print "$0: cannot extract: $1" >&2 success=1 ;; esac (( success = $success > 0 ? $success : $? )) (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1" shift done # } ================================================ FILE: modules/autosuggestions/README.md ================================================ # Autosuggestions Integrates [zsh-autosuggestions][1] into Prezto, which implements the [Fish shell][2]'s autosuggestions feature, where the user can type in any part of a previously entered command and Zsh suggests commands as you type based on history and completions. If this module is used in conjunction with the [_`syntax-highlighting`_][3] module, this module must be loaded _after_ the _`syntax-highlighting`_ module. Additionally, if this module is used in conjunction with the [_`history-substring-search`_][4] module, this module must be loaded _after_ the _`history-substring-search`_ module as well. To elaborate, the relative order of loading the modules would be _`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_. ## Contributors New features and bug fixes should be submitted to the [zsh-autosuggestions][1] project according to its rules and regulations. This module will be synchronized against it. ## Settings ### Highlighting If colors are enabled, _autosuggestions_ will automatically highlight positive results. To enable highlighting for this module only, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:autosuggestions' color 'yes' ``` To set the query found color, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:autosuggestions:color' found '' ``` ## Troubleshooting ### Autosuggestions from previous sessions don't show up For autosuggestions from previous shell sessions to work, please make sure you also have the `history` module enabled. ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/tarruda/zsh-autosuggestions [2]: https://fishshell.com [3]: ../syntax-highlighting#readme [4]: ../history-substring-search#readme [5]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/autosuggestions/init.zsh ================================================ # # Integrates zsh-autosuggestions into Prezto. # # Authors: # Sorin Ionescu # # Load dependencies. pmodload 'editor' # Source module files. source "${0:h}/external/zsh-autosuggestions.zsh" || return 1 # # Highlighting # # Set highlight color, default 'fg=8'. zstyle -s ':prezto:module:autosuggestions:color' found \ 'ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE' || ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' # Disable highlighting. if ! zstyle -t ':prezto:module:autosuggestions' color; then ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='' fi # # Key Bindings # if [[ -n "$key_info" ]]; then # vi bindkey -M viins "$key_info[Control]F" vi-forward-word bindkey -M viins "$key_info[Control]E" vi-add-eol fi ================================================ FILE: modules/command-not-found/README.md ================================================ # Command-Not-Found When you try to use a command that is not available locally, searches the package manager for a package offering that command and suggests the proper install command. Debian and Arch Linux based distributions use the [`command-not-found`][1] tool. macOS uses Homebrew's [`command-not-found` clone][2]. This module will automatically load it without needing to manually source `handler.sh` from `.zshrc` per the [instructions][3]. Note: Prior to [Homebrew 4.6.12][4], you may have also needed to tap the [`command-not-found` Homebrew repository][5]. This will still work as a fallback when the `command-not-found` handler can't be detected in Homebrew core, but the repository has been deprecated and may print a warning. After upgrading Homebrew, it can be untapped. ## Authors _The authors of this module should be contacted via the [issue tracker][6]._ - [Joseph Booker](https://github.com/sargas) - [Indrajit Raychaudhuri](https://github.com/indrajitr) [1]: https://code.launchpad.net/command-not-found [2]: https://docs.brew.sh/Command-Not-Found [3]: https://docs.brew.sh/Command-Not-Found#install [4]: https://github.com/Homebrew/brew/releases/tag/4.6.12 [5]: https://github.com/Homebrew/homebrew-command-not-found [6]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/command-not-found/init.zsh ================================================ # # Displays installation information for not found commands. # # Authors: # Joseph Jon Booker # Indrajit Raychaudhuri # # Load command-not-found on Debian-based distributions. if [[ -s /etc/zsh_command_not_found ]]; then source /etc/zsh_command_not_found # Load command-not-found on Arch Linux-based distributions. elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then source /usr/share/doc/pkgfile/command-not-found.zsh # Load command-not-found on macOS when Homebrew is present. Check explicitly # for MacOS, since homebrew can be installed on Linux as a supplementary PM elif [[ "$OSTYPE" =~ ^darwin ]] && (( $+commands[brew] )); then homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h/Library} # Look for handler in Homebrew core (as of >=4.6.12), then in Taps (< 4.6.12) for hb_cnf_handler in "$homebrew_repo"/{Homebrew/command-not-found/handler.sh,Taps/homebrew/homebrew-command-not-found/handler.sh}; do if [ -f "$hb_cnf_handler" ]; then source "$hb_cnf_handler" unset hb_cnf_handler homebrew_repo break fi done if [ -n "$hb_cnf_handler" ]; then unset hb_cnf_handler homebrew_repo return 1 fi # Return if requirements are not found. else return 1 fi ================================================ FILE: modules/completion/README.md ================================================ # Completion Loads and configures TAB completion and provides additional completions from the [zsh-completions][1] project. This module must be loaded late _after_ the _`utility`_ module and all other modules that provide completion definitions. ## Options - `COMPLETE_IN_WORD` complete from both ends of a word. - `ALWAYS_TO_END` move cursor to the end of a completed word. - `PATH_DIRS` perform path search even on command names with slashes. - `AUTO_MENU` show completion menu on a successive 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. ## Variables - `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'. ## Settings ### Ignore _`/etc/hosts`_ Entries To ignore certain entries from static _`/etc/hosts`_ for host completion, add the following lines in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ with the IP addresses of the hosts as they appear in _`/etc/hosts`_. Both IP address and the associated hostname(s) will be ignored during host completion. However, some of the entries ignored from _`/etc/hosts`_ still might appear during completion because of their presence in _ssh_ configuration or history). ```sh zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \ '0.0.0.0' '127.0.0.1' ``` ## Contributors Completions should be submitted to the [zsh-completions][1] project according to its rules and regulations. This module will be synchronized against it. ## Authors _The authors of this module should be contacted via the [issue tracker][3]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/zsh-users/zsh-completions [2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/completion/init.zsh ================================================ # # Sets completion options. # # Authors: # Robby Russell # Sorin Ionescu # # Return if requirements are not found. if [[ $TERM == dumb ]]; then return 1 fi # Add zsh-completions to $fpath. fpath=(${0:h}/external/src $fpath) # Add completion for keg-only brewed curl on macOS when available. if (( $+commands[brew] )); then brew_prefix=${HOMEBREW_PREFIX:-${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}} # $HOMEBREW_PREFIX defaults to $HOMEBREW_REPOSITORY but is explicitly set to # /usr/local when $HOMEBREW_REPOSITORY is /usr/local/Homebrew. # https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L66-L69 [[ $brew_prefix == '/usr/local/Homebrew' ]] && brew_prefix=$brew_prefix:h fpath=($brew_prefix/opt/curl/share/zsh/site-functions(/N) $fpath) unset brew_prefix fi # # Options # setopt COMPLETE_IN_WORD # Complete from both ends of a word. setopt ALWAYS_TO_END # Move cursor to the end of a completed word. setopt PATH_DIRS # Perform path search even on command names with slashes. setopt AUTO_MENU # Show completion menu on a successive tab press. setopt AUTO_LIST # Automatically list choices on ambiguous completion. setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit. unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. # # Variables # # Standard style used by default for 'list-colors' LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'} # # Initialization # # Load and initialize the completion system ignoring insecure directories with a # cache time of 20 hours, so it should almost always regenerate the first time a # shell is opened each day. autoload -Uz compinit _comp_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump" # #q expands globs in conditional expressions if [[ $_comp_path(#qNmh-20) ]]; then # -C (skip function check) implies -i (skip security check). compinit -C -d "$_comp_path" else mkdir -p "$_comp_path:h" compinit -i -d "$_comp_path" # Keep $_comp_path younger than cache time even if it isn't regenerated. touch "$_comp_path" fi unset _comp_path # # Styles # # Defaults. zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*:default' list-prompt '%S%M matches%s' # Use caching to make completion for commands such as dpkg and apt usable. zstyle ':completion::complete:*' use-cache on zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache" # Case-insensitive (all), partial-word, and then substring completion. if zstyle -t ':prezto:module:completion:*' case-sensitive; then zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' setopt CASE_GLOB else zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'm:{[:upper:]}={[:lower:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' unsetopt CASE_GLOB fi # Group matches and describe. zstyle ':completion:*:*:*:*:*' menu select zstyle ':completion:*:matches' group 'yes' zstyle ':completion:*:options' description 'yes' zstyle ':completion:*:options' auto-description '%d' zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f' zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f' zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f' zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f' zstyle ':completion:*' format ' %F{yellow}-- %d --%f' zstyle ':completion:*' group-name '' zstyle ':completion:*' verbose yes # Fuzzy match mistyped completions. zstyle ':completion:*' completer _complete _match _approximate zstyle ':completion:*:match:*' original only zstyle ':completion:*:approximate:*' max-errors 1 numeric # Increase the number of errors based on the length of the typed word. But make # sure to cap (at 7) the max-errors to avoid hanging. zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)' # Don't complete unavailable commands. zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' # Array completion element sorting. zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # Directories zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories zstyle ':completion:*:*:cd:*:directory-stack' menu yes select zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' zstyle ':completion:*' squeeze-slashes true # History zstyle ':completion:*:history-words' stop yes zstyle ':completion:*:history-words' remove-all-dups yes zstyle ':completion:*:history-words' list false zstyle ':completion:*:history-words' menu yes # Environment Variables zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} # Populate hostname completion. But allow ignoring custom entries from static # */etc/hosts* which might be uninteresting. zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' zstyle -e ':completion:*:hosts' hosts 'reply=( ${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*} ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} )' # Don't complete uninteresting users... zstyle ':completion:*:*:*:users' ignored-patterns \ adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ mailman mailnull mldonkey mysql nagios \ named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ operator pcap postfix postgres privoxy pulse pvm quagga radvd \ rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*' # ... unless we really want to. zstyle '*' single-ignored show # Ignore multiple entries. zstyle ':completion:*:(rm|kill|diff):*' ignore-line other zstyle ':completion:*:rm:*' file-patterns '*:all-files' # Kill zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:*:kill:*' force-list always zstyle ':completion:*:*:kill:*' insert-ids single # Man zstyle ':completion:*:manuals' separate-sections true zstyle ':completion:*:manuals.(^1*)' insert-sections true # Media Players zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories' zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories' # Mutt if [[ -s "$HOME/.mutt/aliases" ]]; then zstyle ':completion:*:*:mutt:*' menu yes select zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*} fi # SSH/SCP/RSYNC zstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*' zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*' ================================================ FILE: modules/directory/README.md ================================================ # Directory Sets directory options and defines directory aliases. ## Options - `AUTO_CD` auto changes to a directory without typing `cd`. - `AUTO_PUSHD` pushes the old directory onto the stack on `cd`. - `PUSHD_IGNORE_DUPS` does not store duplicates in the stack. - `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`. - `PUSHD_TO_HOME` pushes to the home directory when no argument is given. - `CDABLE_VARS` changes directory to a path stored in a variable. - `MULTIOS` writes to multiple descriptors. - `EXTENDED_GLOB` uses extended globbing syntax. - `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and `>>!` to bypass. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:directory:alias' skip 'yes' ``` - `d` prints the contents of the directory stack. - `1 ... 9` changes the directory to the **n** previous one. ## Authors _The authors of this module should be contacted via the [issue tracker][1]._ - [James Cox](https://github.com/imajes) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/directory/init.zsh ================================================ # # Sets directory options and defines directory aliases. # # Authors: # James Cox # Sorin Ionescu # # # Options # setopt AUTO_CD # Auto changes to a directory without typing cd. setopt AUTO_PUSHD # Push the old directory onto the stack on cd. setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack. setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd. setopt PUSHD_TO_HOME # Push to home directory when no argument is given. setopt CDABLE_VARS # Change directory to a path stored in a variable. setopt MULTIOS # Write to multiple descriptors. setopt EXTENDED_GLOB # Use extended globbing syntax. unsetopt CLOBBER # Do not overwrite existing files with > and >>. # Use >! and >>! to bypass. # # Aliases # if ! zstyle -t ':prezto:module:directory:alias' skip; then alias -- -='cd -' alias d='dirs -v' for index ({1..9}) alias "$index"="cd +${index}"; unset index fi ================================================ FILE: modules/dnf/README.md ================================================ # DNF Defines [dnf][1] aliases. ## Aliases - `dnfc` removes package(s) and leaves. - `dnfi` installs package(s). - `dnfh` displays history. - `dnfl` lists packages. - `dnfL` lists installed packages. - `dnfq` displays package information. - `dnfr` removes package(s). - `dnfs` searches for a package. - `dnfu` updates packages. - `dnfU` upgrades packages. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://fedoraproject.org/wiki/Features/DNF [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/dnf/init.zsh ================================================ # # Defines dnf aliases. # # Authors: # FireWave # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[dnf] )); then return 1 fi # # Aliases # alias dnfc='sudo dnf clean all' # Cleans the cache. alias dnfh='dnf history' # Displays history. alias dnfi='sudo dnf install' # Installs package(s). alias dnfl='dnf list' # Lists packages. alias dnfL='dnf list installed' # Lists installed packages. alias dnfq='dnf info' # Displays package information. alias dnfr='sudo dnf remove' # Removes package(s). alias dnfs='dnf search' # Searches for a package. alias dnfu='sudo dnf update' # Updates packages. alias dnfU='sudo dnf upgrade' # Upgrades packages. ================================================ FILE: modules/docker/README.md ================================================ # Docker Defines [Docker][1] aliases and functions. ## Aliases ### Docker - `dk` is short for `docker` - `dka` Attach to a running container - `dkb` Build an image from a Dockerfile - `dkd` Inspect changes on a container's filesystem - `dkdf` Show docker filesystem usage - `dke` Run a command in a running container - `dkE` Run an interactive command in a running container - `dkh` Show the history of an image - `dki` List images - `dkin` Return low-level information on a container, image or task - `dkk` Kill a running container - `dkl` Fetch the logs of a container - `dkli` Log in to a Docker registry - `dklo` Log out from a Docker registry - `dkls` is alias for `dkps` - `dkp` Pause all processes within one or more containers - `dkP` Unpause all processes within one or more containers - `dkpl` Pull an image or a repository from a registry - `dkph` Push an image or a repository to a registry - `dkps` List containers - `dkpsa` List all containers (default lists just running) - `dkr` Run a command in a new container - `dkR` Run an interactive command in a new container and automatically remove the container when it exits - `dkRe` like `dkR` and set entry point to `/bin/bash` - `dkrm` Remove one or more containers - `dkrmi` Remove one or more images - `dkrmC` Clean up exited containers - `dkrmI` Clean up dangling images - `dkrmV` Clean up unused volumes ( Docker >= 1.9 ) - `dkrn` Rename a container - `dks` Start one or more stopped containers - `dkS` Restart a container - `dkss` Display a live stream of container(s) resource usage statistics - `dksv` Save one or more images to a tar archive (streamed to STDOUT by default) - `dkt` Tag an image into a repository - `dktop` Display the running processes of a container - `dkup` Update configuration of one or more containers - `dkV` Manage Docker volumes - `dkv` Show the Docker version information - `dkw` Block until a container stops, then print its exit code - `dkx` Stop a running container #### container (C) - `dkC` Manage containers - `dkCa` Attach to a running container - `dkCcp` Copy files/folders between a container and the local filesystem - `dkCd` Inspect changes on a container's filesystem - `dkCe` Run a command in a running container - `dkCin` Display detailed information on one or more containers - `dkCk` Kill one or more running containers - `dkCl` Fetch the logs of a container - `dkCls` List containers - `dkCp` Pause all processes within one or more containers - `dkCpr` Remove all stopped containers - `dkCrn` Rename a container - `dkCS` Restart one or more containers - `dkCrm` Remove one or more containers - `dkCr` Run a command in a new container - `dkCR` Run an interactive command in a new container and automatically remove the container when it exits - `dkCRe` like `dkCR` and set entry point to `/bin/bash` - `dkCs` Start one or more stopped containers - `dkCss` Display a live stream of container(s) resource usage statistics - `dkCx` Stop one or more running containers - `dkCtop` Display the running processes of a container - `dkCP` Unpause all processes within one or more containers - `dkCup` Update configuration of one or more containers - `dkCw` Block until one or more containers stop, then print their exit codes #### image (I) - `dkI` Manage images - `dkIb` Build an image from a Dockerfile - `dkIh` Show the history of an image - `dkIim` Import the contents from a tarball to create a filesystem image - `dkIin` Display detailed information on one or more images - `dkIls` List images - `dkIpr` Remove unused images - `dkIpl` Pull an image or a repository from a registry - `dkIph` Push an image or a repository to a registry - `dkIrm` Remove one or more images - `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by default) - `dkIt` Tag an image into a repository #### volume (V) - `dkV` Manage volumes - `dkVin` Display detailed information on one or more volumes - `dkVls` List volumes - `dkVpr` Remove all unused volumes - `dkVrm` Remove one or more volumes #### network (N) - `dkN` Manage networks - `dkNs` Connect a container to a network - `dkNx` Disconnects a container from a network - `dkNin` Displays detailed information on a network - `dkNls` Lists all the networks created by the user - `dkNpr` Remove all unused networks - `dkNrm` Deletes one or more networks #### system (Y) - `dkY` Manage Docker - `dkYdf` Show docker filesystem usage - `dkYpr` Remove unused data #### stack (K) - `dkK` Manage Docker stacks - `dkKls` List stacks - `dkKps` List the tasks in the stack - `dkKrm` Remove the stack #### swarm (W) - `dkW` Manage Docker Swarm ### Docker Machine - `dkm` is short for `docker-machine` - `dkma` Get or set the active machine - `dkmcp` Copy files between machines - `dkmd` Set up the default machine ; alowing you to use `dkme` without arguments - `dkme` Set up the environment for the Docker client (eg: `dkme staging` to toggle to staging) - `dkmin` Inspect information about a machine - `dkmip` Get the IP address of a machine - `dkmk` Kill a machine - `dkmls` List machines - `dkmpr` Re-provision existing machines - `dkmps` is alias for `dkmls` - `dkmrg` Regenerate TLS Certificates for a machine - `dkmrm` Remove a machine - `dkms` Start a machine - `dkmsh` Log into or run a command on a machine with SSH - `dkmst` Get the status of a machine - `dkmS` Restart a machine - `dkmu` Get the URL of a machine - `dkmup` Upgrade a machine to the latest version of Docker - `dkmV` Show the Docker Machine version or a machine docker version - `dkmx` Stop a machine ### Docker Compose - `dkc` is short for `docker-compose` - `dkcb` Build or rebuild services - `dkcB` Build or rebuild services and do not use cache when building the image - `dkcd` Stop and remove containers, networks, images, and volumes - `dkce` Execute a command in a running container - `dkck` Kill containers - `dkcl` View output from containers - `dkcls` is alias for `dkcps` - `dkcp` Pause services - `dkcP` Unpause services - `dkcpl` Pull service images - `dkcph` Push service images - `dkcps` List containers - `dkcr` Run a one-off command - `dkcR` Run a one-off command and remove container after run. - `dkcrm` Remove stopped containers - `dkcs` Start services - `dkcsc` Set number of containers for a service - `dkcS` Restart services - `dkcu` Create and start containers - `dkcU` Create and start containers in detached mode: Run containers in the background, print new container names - `dkcV` Show the Docker-Compose version information - `dkcx` Stop services ## Support If you're having problems, use the [Prezto issue tracker][2]. ## Acknowledgements This module is a copy of [akarzim/zsh-docker-aliases][3] by [François Vantomme][4] (MIT License). [1]: https://www.docker.com/ [2]: https://github.com/zsh-users/prezto/issues [3]: https://github.com/akarzim/zsh-docker-aliases [4]: https://github.com/akarzim ================================================ FILE: modules/docker/alias.zsh ================================================ # # Defines Docker aliases. # # Author: # François Vantomme # # # Aliases # # Docker alias dk='docker' alias dka='docker attach' alias dkb='docker build' alias dkd='docker diff' alias dkdf='docker system df' alias dke='docker exec' alias dkE='docker exec -it' alias dkh='docker history' alias dki='docker images' alias dkin='docker inspect' alias dkim='docker import' alias dkk='docker kill' alias dkl='docker logs' alias dkli='docker login' alias dklo='docker logout' alias dkls='docker ps' alias dkp='docker pause' alias dkP='docker unpause' alias dkpl='docker pull' alias dkph='docker push' alias dkps='docker ps' alias dkpsa='docker ps -a' alias dkr='docker run' alias dkR='docker run -it --rm' alias dkRe='docker run -it --rm --entrypoint /bin/bash' alias dkRM='docker system prune' alias dkrm='docker rm' alias dkrmi='docker rmi' alias dkrn='docker rename' alias dks='docker start' alias dkS='docker restart' alias dkss='docker stats' alias dksv='docker save' alias dkt='docker tag' alias dktop='docker top' alias dkup='docker update' alias dkV='docker volume' alias dkv='docker version' alias dkw='docker wait' alias dkx='docker stop' ## Container (C) alias dkC='docker container' alias dkCa='docker container attach' alias dkCcp='docker container cp' alias dkCd='docker container diff' alias dkCe='docker container exec' alias dkCin='docker container inspect' alias dkCk='docker container kill' alias dkCl='docker container logs' alias dkCls='docker container ls' alias dkCp='docker container pause' alias dkCpr='docker container prune' alias dkCrn='docker container rename' alias dkCS='docker container restart' alias dkCrm='docker container rm' alias dkCr='docker container run' alias dkCR='docker container run -it --rm' alias dkCRe='docker container run -it --rm --entrypoint /bin/bash' alias dkCs='docker container start' alias dkCss='docker container stats' alias dkCx='docker container stop' alias dkCtop='docker container top' alias dkCP='docker container unpause' alias dkCup='docker container update' alias dkCw='docker container wait' ## Image (I) alias dkI='docker image' alias dkIb='docker image build' alias dkIh='docker image history' alias dkIim='docker image import' alias dkIin='docker image inspect' alias dkIls='docker image ls' alias dkIpr='docker image prune' alias dkIpl='docker image pull' alias dkIph='docker image push' alias dkIrm='docker image rm' alias dkIsv='docker image save' alias dkIt='docker image tag' ## Volume (V) alias dkV='docker volume' alias dkVin='docker volume inspect' alias dkVls='docker volume ls' alias dkVpr='docker volume prune' alias dkVrm='docker volume rm' ## Network (N) alias dkN='docker network' alias dkNs='docker network connect' alias dkNx='docker network disconnect' alias dkNin='docker network inspect' alias dkNls='docker network ls' alias dkNpr='docker network prune' alias dkNrm='docker network rm' ## System (Y) alias dkY='docker system' alias dkYdf='docker system df' alias dkYpr='docker system prune' ## Stack (K) alias dkK='docker stack' alias dkKls='docker stack ls' alias dkKps='docker stack ps' alias dkKrm='docker stack rm' ## Swarm (W) alias dkW='docker swarm' ## CleanUp (rm) # Clean up exited containers (docker < 1.13) alias dkrmC='docker rm $(docker ps -qaf status=exited)' # Clean up dangling images (docker < 1.13) alias dkrmI='docker rmi $(docker images -qf dangling=true)' # Clean up dangling volumes (docker < 1.13) alias dkrmV='docker volume rm $(docker volume ls -qf dangling=true)' # Docker Machine (m) alias dkm='docker-machine' alias dkma='docker-machine active' alias dkmcp='docker-machine scp' alias dkmin='docker-machine inspect' alias dkmip='docker-machine ip' alias dkmk='docker-machine kill' alias dkmls='docker-machine ls' alias dkmpr='docker-machine provision' alias dkmps='docker-machine ps' alias dkmrg='docker-machine regenerate-certs' alias dkmrm='docker-machine rm' alias dkms='docker-machine start' alias dkmsh='docker-machine ssh' alias dkmst='docker-machine status' alias dkmS='docker-machine restart' alias dkmu='docker-machine url' alias dkmup='docker-machine upgrade' alias dkmv='docker-machine version' alias dkmx='docker-machine stop' # Docker Compose (c) alias dkc='docker compose' alias dkcb='docker compose build' alias dkcB='docker compose build --no-cache' alias dkcd='docker compose down' alias dkce='docker compose exec' alias dkck='docker compose kill' alias dkcl='docker compose logs' alias dkcls='docker compose ps' alias dkcp='docker compose pause' alias dkcP='docker compose unpause' alias dkcpl='docker compose pull' alias dkcph='docker compose push' alias dkcps='docker compose ps' alias dkcr='docker compose run' alias dkcR='docker compose run --rm' alias dkcrm='docker compose rm' alias dkcs='docker compose start' alias dkcsc='docker compose scale' alias dkcS='docker compose restart' alias dkcu='docker compose up' alias dkcU='docker compose up -d' alias dkcv='docker compose version' alias dkcx='docker compose stop' ================================================ FILE: modules/docker/init.zsh ================================================ # # Defines Docker aliases. # # Author: # François Vantomme # # Return if requirements are not found. if (( ! $+commands[docker] )); then return 1 fi # # Functions # # Set Docker Machine environment function dkme { if (( ! $+commands[docker-machine] )); then return 1 fi eval $(docker-machine env $1) } # Set Docker Machine default machine function dkmd { if (( ! $+commands[docker-machine] )); then return 1 fi pushd ~/.docker/machine/machines if [[ ! -d $1 ]]; then echo "Docker machine '$1' does not exists. Abort." popd return 1 fi if [[ -L default ]]; then eval $(rm -f default) elif [[ -d default ]]; then echo "A default machine already exists. Abort." popd return 1 elif [[ -e default ]]; then echo "A file named 'default' already exists. Abort." popd return 1 fi eval $(ln -s $1 default) popd } # Source module files. source "${0:h}/alias.zsh" ================================================ FILE: modules/dpkg/README.md ================================================ # Dpkg Defines [_dpkg_][1] aliases and functions. ## Aliases - `debc` cleans the cache. - `debf` displays a file's package. - `debi` installs packages from repositories. - `debI` installs packages from files. - `debq` displays package information. - `debu` updates the package lists. - `debU` upgrades outdated packages. - `debx` removes packages. - `debX` removes packages, their configuration, and unneeded dependencies. - `debs` searches for packages. - `deb-build` creates a basic deb package. - `deb-kclean` removes all kernel images and headers, except for the ones in use. ## Functions - `deb-clone` generates a script that can be used to duplicate a `dpkg`-based system. - `deb-history` displays `dpkg` history. - `deb-kbuild` makes a `dpkg` Linux kernel package. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Daniel Bolton](https://github.com/dbb) - [Benjamin Boudreau](https://github.com/dreur) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://wiki.debian.org/Teams/Dpkg [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/dpkg/functions/deb-clone ================================================ # # Generates a script that can be used to duplicate a dpkg-based system. # # Authors: # Daniel Bolton # Sorin Ionescu # # function deb-clone { local clone_script="${0}.sh" local package_list=$( perl \ -m 'AptPkg::Cache' \ -e ' $c=AptPkg::Cache->new; for (keys %$c) { push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed'; } print "$_ " for sort @a; ' ) rm "$clone_script" print '#!/bin/sh\n' > "$clone_script" print "aptitude install ${package_list}\n" >> "$clone_script" chmod +x "$clone_script" # } ================================================ FILE: modules/dpkg/functions/deb-history ================================================ # # Displays dpkg history. # # Authors: # Peter Leung # Benjamin Boudreau # Sorin Ionescu # # function deb-history { case "$1" in (install) zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*) ;; (upgrade|remove) zgrep --no-filename "$1" $(ls -rt /var/log/dpkg*) ;; (rollback) zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) \ | grep "$2" -A10000000 \ | grep "$3" -B10000000 \ | awk '{print $4"="$5}' ;; (list) zcat $(ls -rt /var/log/dpkg*) ;; (*) cat >&2 < # Sorin Ionescu # # function deb-kbuild { make-kpkg clean MAKEFLAGS='' time fakeroot make-kpkg \ --append-to-version '-custom' \ --revision "$(date +"%Y%m%d")" \ kernel_image \ kernel_headers # } ================================================ FILE: modules/dpkg/init.zsh ================================================ # # Defines dpkg aliases. # # Authors: # Daniel Bolton # Benjamin Boudreau # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[dpkg] && ! $+commands[apt-get] )); then return 1 fi # # Aliases # # Cleans the cache. alias debc='sudo apt-get clean && sudo apt-get autoclean' # Displays a file's package. alias debf='apt-file search --regexp' # Installs packages from repositories. alias debi='sudo apt-get install' # Installs packages from files. alias debI='sudo dpkg -i' # Displays package information. alias debq='apt-cache show' # Updates the package lists. alias debu='sudo apt-get update' # Upgrades outdated packages. alias debU='sudo apt-get update && sudo apt-get dist-upgrade' # Removes packages. alias debx='sudo apt-get remove' # Removes packages, their configuration, and unneeded dependencies. alias debX='sudo apt-get remove --purge && sudo apt-get autoremove --purge' # Searches for packages. if (( $+commands[aptitude] )); then alias debs='aptitude -F "* %p -> %d \n(%v/%V)" --no-gui --disable-columns search' else alias debs='apt-cache search' fi # Creates a basic deb package. alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc' # Removes all kernel images and headers, except for the ones in use. alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"' ================================================ FILE: modules/editor/README.md ================================================ # Editor Sets editor specific key bindings options and variables. ## Options - `BEEP` beep on error in line editor. ## Variables - `WORDCHARS` treat a given set of characters as part of a word. ## Settings ### Wordchars To change what characters are considered part of a word, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:editor' wordchars ``` Defaults to `*?_-.[]~&;!#$%^(){}<>`. ### Key bindings To enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'emacs'` or `'vi'`. ```sh zstyle ':prezto:module:editor' key-bindings '' ``` ### Dot Expansion To enable the auto conversion of .... to ../.., add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:editor' dot-expansion 'yes' ``` ### PS Context To enable the prompt context to be set, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:editor' ps-context 'yes' ``` ## Theming To indicate when the editor is in the primary keymap (emacs or viins), add the following to your `theme_prompt_setup` function. ```sh zstyle ':prezto:module:editor:info:keymap:primary' format '>>>' ``` To indicate when the editor is in the primary keymap (emacs or viins) insert mode, add the following to your `theme_prompt_setup` function. ```sh zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I' ``` To indicate when the editor is in the primary keymap (emacs or viins) overwrite mode, add the following to your `theme_prompt_setup` function. ```sh zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O' ``` To indicate when the editor is in the alternate keymap (vicmd), add the following to your `theme_prompt_setup` function. ```sh zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<' ``` To indicate when the editor is completing, add the following to your `theme_prompt_setup` function. ```sh zstyle ':prezto:module:editor:info:completing' format '...' ``` Then add `$editor_info[context]`, where context is _keymap_, _insert_, or _overwrite_, to `$PROMPT` or `$RPROMPT`. ## Convenience Functions ### bindkey-all Provides a function `bindkey-all` which can be useful for checking how all of the keys are bound. Normal `bindkey` command will only list the keys bound for one keymap, which is not as useful if you want to grep through the output. The keymap's names go to stderr so when you grep through `bindkey-all`'s output you will still see the headings and can tell which keymap each binding goes to. It will also pass through arguments so you can use bindkey-all to set bindings for all keymaps at once. If provided arguments it will _not_ print out the names of each of the keymaps, and just run the command for each keymap. ## Authors _The authors of this module should be contacted via the [issue tracker][1]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/editor/init.zsh ================================================ # # Sets key bindings. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if [[ "$TERM" == 'dumb' ]]; then return 1 fi # # Options # setopt BEEP # Beep on error in line editor. # # Variables # # Treat these characters as part of a word. zstyle -s ':prezto:module:editor' wordchars 'WORDCHARS' \ || WORDCHARS='*?_-.[]~&;!#$%^(){}<>' # Use human-friendly identifiers. zmodload zsh/terminfo typeset -gA key_info key_info=( 'Control' '\C-' 'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd' 'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc' 'ControlPageUp' '\e[5;5~' 'ControlPageDown' '\e[6;5~' 'Escape' '\e' 'Meta' '\M-' 'Backspace' "^?" 'Delete' "^[[3~" 'F1' "$terminfo[kf1]" 'F2' "$terminfo[kf2]" 'F3' "$terminfo[kf3]" 'F4' "$terminfo[kf4]" 'F5' "$terminfo[kf5]" 'F6' "$terminfo[kf6]" 'F7' "$terminfo[kf7]" 'F8' "$terminfo[kf8]" 'F9' "$terminfo[kf9]" 'F10' "$terminfo[kf10]" 'F11' "$terminfo[kf11]" 'F12' "$terminfo[kf12]" 'Insert' "$terminfo[kich1]" 'Home' "$terminfo[khome]" 'PageUp' "$terminfo[kpp]" 'End' "$terminfo[kend]" 'PageDown' "$terminfo[knp]" 'Up' "$terminfo[kcuu1]" 'Left' "$terminfo[kcub1]" 'Down' "$terminfo[kcud1]" 'Right' "$terminfo[kcuf1]" 'BackTab' "$terminfo[kcbt]" ) # Set empty $key_info values to an invalid UTF-8 sequence to induce silent # bindkey failure. for key in "${(k)key_info[@]}"; do if [[ -z "$key_info[$key]" ]]; then key_info[$key]='�' fi done # # External Editor # # Allow command line editing in an external editor. autoload -Uz edit-command-line zle -N edit-command-line # # Functions # # Runs bindkey but for all of the keymaps. Running it with no arguments will # print out the mappings for all of the keymaps. function bindkey-all { local keymap='' for keymap in $(bindkey -l); do [[ "$#" -eq 0 ]] && printf "#### %s\n" "${keymap}" 1>&2 bindkey -M "${keymap}" "$@" done } # Exposes information about the Zsh Line Editor via the $editor_info associative # array. function editor-info { # Ensure that we're going to set the editor-info for prompts that # are prezto managed and/or compatible. if zstyle -t ':prezto:module:prompt' managed; then # Clean up previous $editor_info. unset editor_info typeset -gA editor_info if [[ "$KEYMAP" == 'vicmd' ]]; then zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY' editor_info[keymap]="$REPLY" else zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY' editor_info[keymap]="$REPLY" if [[ "$ZLE_STATE" == *overwrite* ]]; then zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY' editor_info[overwrite]="$REPLY" else zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY' editor_info[overwrite]="$REPLY" fi fi unset REPLY zle zle-reset-prompt fi } zle -N editor-info # Reset the prompt based on the current context and # the ps-context option. function zle-reset-prompt { if zstyle -t ':prezto:module:editor' ps-context; then # If we aren't within one of the specified contexts, then we want to reset # the prompt with the appropriate editor_info[keymap] if there is one. if [[ $CONTEXT != (select|cont) ]]; then zle reset-prompt zle -R fi else zle reset-prompt zle -R fi } zle -N zle-reset-prompt # Updates editor information when the keymap changes. function zle-keymap-select { zle editor-info } zle -N zle-keymap-select # Enables terminal application mode and updates editor information. function zle-line-init { # The terminal must be in application mode when ZLE is active for $terminfo # values to be valid. if (( $+terminfo[smkx] )); then # Enable terminal application mode. echoti smkx fi # Update editor information. zle editor-info } zle -N zle-line-init # Disables terminal application mode and updates editor information. function zle-line-finish { # The terminal must be in application mode when ZLE is active for $terminfo # values to be valid. if (( $+terminfo[rmkx] )); then # Disable terminal application mode. echoti rmkx fi # Update editor information. zle editor-info } zle -N zle-line-finish # Toggles emacs overwrite mode and updates editor information. function overwrite-mode { zle .overwrite-mode zle editor-info } zle -N overwrite-mode # Enters vi insert mode and updates editor information. function vi-insert { zle .vi-insert zle editor-info } zle -N vi-insert # Moves to the first non-blank character then enters vi insert mode and updates # editor information. function vi-insert-bol { zle .vi-insert-bol zle editor-info } zle -N vi-insert-bol # Enters vi replace mode and updates editor information. function vi-replace { zle .vi-replace zle editor-info } zle -N vi-replace # Expands .... to ../.. function expand-dot-to-parent-directory-path { if [[ $LBUFFER = *.. ]]; then LBUFFER+='/..' else LBUFFER+='.' fi } zle -N expand-dot-to-parent-directory-path # Displays an indicator when completing. function expand-or-complete-with-indicator { local indicator zstyle -s ':prezto:module:editor:info:completing' format 'indicator' # This is included to work around a bug in zsh which shows up when interacting # with multi-line prompts. if [[ -z "$indicator" ]]; then zle expand-or-complete return fi print -Pn "$indicator" zle expand-or-complete zle redisplay } zle -N expand-or-complete-with-indicator # Inserts 'sudo ' at the beginning of the line. function prepend-sudo { if [[ "$BUFFER" != su(do|)\ * ]]; then BUFFER="sudo $BUFFER" (( CURSOR += 5 )) fi } zle -N prepend-sudo # Expand aliases function glob-alias { zle _expand_alias zle expand-word zle magic-space } zle -N glob-alias # Toggle the comment character at the start of the line. This is meant to work # around a buggy implementation of pound-insert in zsh. # # This is currently only used for the emacs keys because vi-pound-insert has # been reported to work properly. function pound-toggle { if [[ "$BUFFER" = '#'* ]]; then # Because of an oddity in how zsh handles the cursor when the buffer size # changes, we need to make this check before we modify the buffer and let # zsh handle moving the cursor back if it's past the end of the line. if [[ $CURSOR != $#BUFFER ]]; then (( CURSOR -= 1 )) fi BUFFER="${BUFFER:1}" else BUFFER="#$BUFFER" (( CURSOR += 1 )) fi } zle -N pound-toggle # Reset to default key bindings. bindkey -d # # Emacs Key Bindings # for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}" \ "${key_info[Escape]}${key_info[Left]}" bindkey -M emacs "$key" emacs-backward-word for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}" \ "${key_info[Escape]}${key_info[Right]}" bindkey -M emacs "$key" emacs-forward-word # Kill to the beginning of the line. for key in "$key_info[Escape]"{K,k} bindkey -M emacs "$key" backward-kill-line # Redo. bindkey -M emacs "$key_info[Escape]_" redo # Search previous character. bindkey -M emacs "$key_info[Control]X$key_info[Control]B" vi-find-prev-char # Match bracket. bindkey -M emacs "$key_info[Control]X$key_info[Control]]" vi-match-bracket # Edit command in an external editor. bindkey -M emacs "$key_info[Control]X$key_info[Control]E" edit-command-line if (( $+widgets[history-incremental-pattern-search-backward] )); then bindkey -M emacs "$key_info[Control]R" \ history-incremental-pattern-search-backward bindkey -M emacs "$key_info[Control]S" \ history-incremental-pattern-search-forward fi # Toggle comment at the start of the line. Note that we use pound-toggle which # is similar to pount insert, but meant to work around some issues that were # being seen in iTerm. bindkey -M emacs "$key_info[Escape];" pound-toggle # # Vi Key Bindings # # Edit command in an external editor emacs style (v is used for visual mode) bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line # Undo/Redo bindkey -M vicmd "u" undo bindkey -M viins "$key_info[Control]_" undo bindkey -M vicmd "$key_info[Control]R" redo if (( $+widgets[history-incremental-pattern-search-backward] )); then bindkey -M vicmd "?" history-incremental-pattern-search-backward bindkey -M vicmd "/" history-incremental-pattern-search-forward else bindkey -M vicmd "?" history-incremental-search-backward bindkey -M vicmd "/" history-incremental-search-forward fi # Toggle comment at the start of the line. bindkey -M vicmd "#" vi-pound-insert # # Emacs and Vi Key Bindings # # Unbound keys in vicmd and viins mode will cause really odd things to happen # such as the casing of all the characters you have typed changing or other # undefined things. In emacs mode they just insert a tilde, but bind these keys # in the main keymap to a noop op so if there is no keybind in the users mode # it will fall back and do nothing. function _prezto-zle-noop { ; } zle -N _prezto-zle-noop local -a unbound_keys unbound_keys=( "${key_info[F1]}" "${key_info[F2]}" "${key_info[F3]}" "${key_info[F4]}" "${key_info[F5]}" "${key_info[F6]}" "${key_info[F7]}" "${key_info[F8]}" "${key_info[F9]}" "${key_info[F10]}" "${key_info[F11]}" "${key_info[F12]}" "${key_info[PageUp]}" "${key_info[PageDown]}" "${key_info[ControlPageUp]}" "${key_info[ControlPageDown]}" ) for keymap in $unbound_keys; do bindkey -M viins "${keymap}" _prezto-zle-noop bindkey -M vicmd "${keymap}" _prezto-zle-noop done # Keybinds for all keymaps for keymap in 'emacs' 'viins' 'vicmd'; do bindkey -M "$keymap" "$key_info[Home]" beginning-of-line bindkey -M "$keymap" "$key_info[End]" end-of-line done # Keybinds for all vi keymaps for keymap in viins vicmd; do # Ctrl + Left and Ctrl + Right bindings to forward/backward word for key in "${(s: :)key_info[ControlLeft]}" bindkey -M "$keymap" "$key" vi-backward-word for key in "${(s: :)key_info[ControlRight]}" bindkey -M "$keymap" "$key" vi-forward-word done # Keybinds for emacs and vi insert mode for keymap in 'emacs' 'viins'; do bindkey -M "$keymap" "$key_info[Insert]" overwrite-mode bindkey -M "$keymap" "$key_info[Delete]" delete-char bindkey -M "$keymap" "$key_info[Backspace]" backward-delete-char bindkey -M "$keymap" "$key_info[Left]" backward-char bindkey -M "$keymap" "$key_info[Right]" forward-char # Expand history on space. bindkey -M "$keymap" ' ' magic-space # Clear screen. bindkey -M "$keymap" "$key_info[Control]L" clear-screen # Expand command name to full path. for key in "$key_info[Escape]"{E,e} bindkey -M "$keymap" "$key" expand-cmd-path # Duplicate the previous word. for key in "$key_info[Escape]"{M,m} bindkey -M "$keymap" "$key" copy-prev-shell-word # Use a more flexible push-line. for key in "$key_info[Control]Q" "$key_info[Escape]"{q,Q} bindkey -M "$keymap" "$key" push-line-or-edit # Bind Shift + Tab to go to the previous menu item. bindkey -M "$keymap" "$key_info[BackTab]" reverse-menu-complete # Complete in the middle of word. bindkey -M "$keymap" "$key_info[Control]I" expand-or-complete # Expand .... to ../.. if zstyle -t ':prezto:module:editor' dot-expansion; then bindkey -M "$keymap" "." expand-dot-to-parent-directory-path fi # Display an indicator when completing. bindkey -M "$keymap" "$key_info[Control]I" \ expand-or-complete-with-indicator # Insert 'sudo ' at the beginning of the line. bindkey -M "$keymap" "$key_info[Control]X$key_info[Control]S" prepend-sudo # control-space expands all aliases, including global bindkey -M "$keymap" "$key_info[Control] " glob-alias done # Delete key deletes character in vimcmd cmd mode instead of weird default functionality bindkey -M vicmd "$key_info[Delete]" delete-char # Do not expand .... to ../.. during incremental search. if zstyle -t ':prezto:module:editor' dot-expansion; then bindkey -M isearch . self-insert 2> /dev/null fi # # Layout # # Set the key layout. zstyle -s ':prezto:module:editor' key-bindings 'key_bindings' if [[ "$key_bindings" == (emacs|) ]]; then bindkey -e elif [[ "$key_bindings" == vi ]]; then bindkey -v else print "prezto: editor: invalid key bindings: $key_bindings" >&2 fi unset key{,map,_bindings} ================================================ FILE: modules/emacs/README.md ================================================ # Emacs Enables Emacs dependency management. ## Dependency management [Carton][1] installs and manages Emacs packages for Emacs package development and Emacs configuration. This module prepends the Carton directory to the path variable to enable the execution of `carton`. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:emacs:alias' skip 'yes' ``` ### Carton - `cai` installs dependencies. - `cau` updates dependencies. - `caI` initializes the current directory for dependency management. - `cae` executes a command which correct dependencies. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sebastian Wiesner](https://github.com/lunaryorn) [1]: https://github.com/rejeep/carton [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/emacs/init.zsh ================================================ # # Configures Emacs dependency management. # # Authors: Sebastian Wiesner # # Return if requirements are not found. if [[ ! -d "$HOME/.cask" ]]; then return 1 fi # Prepend Cask bin directory. path=($HOME/.cask/bin $path) # Load Carton completion source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null # # Aliases # if ! zstyle -t ':prezto:module:emacs:alias' skip; then alias cai='cask install' alias cau='cask update' alias caI='cask init' alias cae='cask exec' fi ================================================ FILE: modules/environment/README.md ================================================ # Environment Sets general shell options and defines environment variables. This module must be loaded first. ## Contributors This module **MUST NOT** rely on any command that is not built in Zsh. Non-interactive environment variables should be defined in [_`${ZDOTDIR:-$HOME}/.zshenv`_][1]. ## Options ### General - `COMBINING_CHARS` combine zero-length punctuation characters (accents) with the base character. - `INTERACTIVE_COMMENTS` enable comments in interactive shell. - `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. - `MAIL_WARNING` don't print a warning message if a mail file has been accessed. ### Jobs - `LONG_LIST_JOBS` list jobs in the long format by default. - `AUTO_RESUME` attempt to resume existing job before creating a new process. - `NOTIFY` report status of background jobs immediately. - `BG_NICE` don't run all background jobs at a lower priority. - `HUP` don't kill jobs on shell exit. - `CHECK_JOBS` don't report on jobs when shell exit. ## Variables ### Termcap - `LESS_TERMCAP_mb` begins blinking. - `LESS_TERMCAP_md` begins bold. - `LESS_TERMCAP_me` ends mode. - `LESS_TERMCAP_se` ends standout-mode. - `LESS_TERMCAP_so` begins standout-mode. - `LESS_TERMCAP_ue` ends underline. - `LESS_TERMCAP_us` begins underline. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: ../../runcoms#zshenv [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/environment/init.zsh ================================================ # # Sets general shell options and defines environment variables. # # Authors: # Sorin Ionescu # # # Smart URLs # # This logic comes from an old version of zim. Essentially, bracketed-paste was # added as a requirement of url-quote-magic in 5.1, but in 5.1.1 bracketed # paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic # which is generally better than url-quote-magic so we load that when possible. autoload -Uz is-at-least if [[ $ZSH_VERSION != 5.1.1 && $TERM != dumb ]]; then if is-at-least 5.2; then autoload -Uz bracketed-paste-url-magic zle -N bracketed-paste bracketed-paste-url-magic elif is-at-least 5.1; then autoload -Uz bracketed-paste-magic zle -N bracketed-paste bracketed-paste-magic fi autoload -Uz url-quote-magic zle -N self-insert url-quote-magic fi # # General # setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents) # with the base character. setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell. setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. unsetopt MAIL_WARNING # Don't print a warning message if a mail file has # been accessed. # Allow mapping Ctrl+S and Ctrl+Q shortcuts [[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY # # Jobs # setopt LONG_LIST_JOBS # List jobs in the long format by default. setopt AUTO_RESUME # Attempt to resume existing job before creating a new process. setopt NOTIFY # Report status of background jobs immediately. unsetopt BG_NICE # Don't run all background jobs at a lower priority. unsetopt HUP # Don't kill jobs on shell exit. unsetopt CHECK_JOBS # Don't report on jobs when shell exit. # # Termcap # if zstyle -t ':prezto:environment:termcap' color; then export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking. export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold. export LESS_TERMCAP_me=$'\E[0m' # Ends mode. export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode. export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode. export LESS_TERMCAP_ue=$'\E[0m' # Ends underline. export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline. fi ================================================ FILE: modules/fasd/README.md ================================================ # Fasd [Fasd][1] is a command-line productivity booster, inspired by tools like [autojump][2], [z][3] and [v][4], it offers quick access to files and directories by keeping track of files and directories that were previously accessed. For shell completion to work, this module must be loaded _after_ the [_`completion`_][5] module. The Prezto Fasd configuration differs from the default. The default aliases have been disabled. ## Installation `fasd` is bundled with prezto as a git submodule. Alternatively, you can manually install `fasd`. If a manual installation is found, it will be used instead of the bundled version. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:fasd:alias' skip 'yes' ``` - `j` changes the current working directory interactively. ## Completion Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`, `,,d` at the end of a comma-separated query then hit TAB. ## Authors _The authors of this module should be contacted via the [issue tracker][6]._ - [Wei Dai](https://github.com/clvv) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/whjvenyl/fasd [2]: https://github.com/joelthelion/autojump [3]: https://github.com/rupa/z [4]: https://github.com/rupa/v [5]: ../completion#readme [6]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/fasd/init.zsh ================================================ # # Maintains a frequently used file and directory list for fast access. # # Authors: # Wei Dai # Sorin Ionescu # # Load dependencies. pmodload 'editor' # If the command doesn't exist externally, we need to fall back to the bundled # submodule. if (( ! $+commands[fasd] )); then source "${0:h}/external/fasd" || return 1 fi # # Initialization # cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh" if [[ "${commands[fasd]}" -nt "$cache_file" \ || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ || ! -s "$cache_file" ]]; then # Set the base init arguments. init_args=(zsh-hook) # Set fasd completion init arguments, if applicable. if zstyle -t ':prezto:module:completion' loaded; then init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install) fi mkdir -p "$cache_file:h" # Cache init code. fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null fi source "$cache_file" unset cache_file init_args function fasd_cd { local fasd_ret="$(fasd -d "$@")" if [[ -d "$fasd_ret" ]]; then cd "$fasd_ret" else print "$fasd_ret" fi } # # Aliases # if ! zstyle -t ':prezto:module:fasd:alias' skip; then # Changes the current working directory interactively. alias j='fasd_cd -i' fi ================================================ FILE: modules/git/README.md ================================================ # Git Enhances the [Git][1] distributed version control system by providing aliases, functions and by exposing repository status information to prompts. This module must be loaded _before_ the [_`completion`_][13] module so that the provided completion definitions are loaded automatically by _`completion`_ module. **Note:** Git **2.11** is the minimum required version for better [git-rev-list][7] and [git-submodule][14] support. ## Settings ### Log To configure the format of the [git-log][8] output, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'brief'`, `'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:` switch. ```sh zstyle ':prezto:module:git:log:context' format '' ``` ### Status Retrieving the status of a repository with [git-submodule][9] can take a long time. To configure the submodules to ignore, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with `'dirty'`, `'untracked'`, `'all'`, or `'none'`. ```sh zstyle ':prezto:module:git:status:ignore' submodules '' ``` This setting affects all aliases and functions that call `git-status`. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:git:alias' skip 'yes' ``` ### Git - `g` is short for `git`. ### Branch (b) - `gb` lists, creates, renames, and deletes branches. - `gbc` creates a new branch. - `gbl` lists branches and their commits. (also `gbv`) - `gbL` lists all local and remote branches and their commits. - `gbr` renames a branch. (also `gbm`) - `gbR` renames a branch even if the new branch name already exists. (also `gbM`) - `gbs` lists branches and their commits with ancestry graphs. - `gbS` lists local and remote branches and their commits with ancestry graphs. - `gbV` lists branches with more verbose information about their commits. - `gbx` deletes a branch. (also `gbd`) - `gbX` deletes a branch irrespective of its merged status. (also `gbD`) ### Commit (c) - `gc` records changes to the repository. - `gcS` records changes to the repository. (Signed) - `gca` stages all modified and deleted files. - `gcaS` stages all modified and deleted files. (Signed) - `gcm` records changes to the repository with the given message. - `gcmS` records changes to the repository with the given message. (Signed) - `gcam` stages all modified and deleted files, and records changes to the repository with the given message. - `gco` checks out a branch or paths to work tree. - `gcO` checks out hunks from the index or the tree interactively. - `gcf` amends the tip of the current branch using the same log message as _HEAD_. - `gcfS` amends the tip of the current branch using the same log message as _HEAD_. (Signed) - `gcF` amends the tip of the current branch. - `gcFS` amends the tip of the current branch. (Signed) - `gcp` applies changes introduced by existing commits. - `gcP` applies changes introduced by existing commits without committing. - `gcr` reverts existing commits by reverting patches and recording new commits. - `gcR` removes the _HEAD_ commit. - `gcs` displays commits with various objects. - `gcsS` displays commits with GPG signature. - `gcl` lists lost commits. - `gcy` displays commits yet to be applied to upstream in the short format. - `gcY` displays commits yet to be applied to upstream. ### Conflict (C) - `gCl` lists unmerged files. - `gCa` adds unmerged file contents to the index. - `gCe` executes merge-tool on all unmerged file. - `gCo` checks out our changes for unmerged paths. - `gCO` checks out our changes for all unmerged paths. - `gCt` checks out their changes for unmerged paths. - `gCT` checks out their changes for all unmerged paths. ### Data (d) - `gd` displays information about files in the index and the work tree. - `gdc` lists cached files. - `gdx` lists deleted files. - `gdm` lists modified files. - `gdu` lists untracked files. - `gdk` lists killed files. - `gdi` lists ignored files. ### Fetch (f) - `gf` downloads objects and references from another repository. - `gfa` downloads objects and references from all remote repositories. - `gfc` clones a repository into a new directory. - `gfcr` clones a repository into a new directory including all submodules. - `gfm` fetches from and merges with another repository or local branch. - `gfr` fetches from and rebases on another repository or local branch. ### Flow (F) - `gFi` is short for `git flow init` #### Feature (Ff) - `gFf` is short for `git flow feature` - `gFfl` is short for `git flow feature list` - `gFfs` is short for `git flow feature start` - `gFff` is short for `git flow feature finish` - `gFfp` is short for `git flow feature publish` - `gFft` is short for `git flow feature track` - `gFfd` is short for `git flow feature diff` - `gFfr` is short for `git flow feature rebase` - `gFfc` is short for `git flow feature checkout` - `gFfm` is short for `git flow feature pull` - `gFfx` is short for `git flow feature delete` #### Bugfix (Fb) - `gFb` is short for `git flow bugfix` - `gFbl` is short for `git flow bugfix list` - `gFbs` is short for `git flow bugfix start` - `gFbf` is short for `git flow bugfix finish` - `gFbp` is short for `git flow bugfix publish` - `gFbt` is short for `git flow bugfix track` - `gFbd` is short for `git flow bugfix diff` - `gFbr` is short for `git flow bugfix rebase` - `gFbc` is short for `git flow bugfix checkout` - `gFbm` is short for `git flow bugfix pull` - `gFbx` is short for `git flow bugfix delete` #### Release (Fl) - `gFl` is short for `git flow release` - `gFll` is short for `git flow release list` - `gFls` is short for `git flow release start` - `gFlf` is short for `git flow release finish` - `gFlp` is short for `git flow release publish` - `gFlt` is short for `git flow release track` - `gFld` is short for `git flow release diff` - `gFlr` is short for `git flow release rebase` - `gFlc` is short for `git flow release checkout` - `gFlm` is short for `git flow release pull` - `gFlx` is short for `git flow release delete` #### Hotfix (Fh) - `gFh` is short for `git flow hotfix` - `gFhl` is short for `git flow hotfix list` - `gFhs` is short for `git flow hotfix start` - `gFhf` is short for `git flow hotfix finish` - `gFhp` is short for `git flow hotfix publish` - `gFht` is short for `git flow hotfix track` - `gFhd` is short for `git flow hotfix diff` - `gFhr` is short for `git flow hotfix rebase` - `gFhc` is short for `git flow hotfix checkout` - `gFhm` is short for `git flow hotfix pull` - `gFhx` is short for `git flow hotfix delete` #### Support (Fs) - `gFs` is short for `git flow support` - `gFsl` is short for `git flow support list` - `gFss` is short for `git flow support start` - `gFsf` is short for `git flow support finish` - `gFsp` is short for `git flow support publish` - `gFst` is short for `git flow support track` - `gFsd` is short for `git flow support diff` - `gFsr` is short for `git flow support rebase` - `gFsc` is short for `git flow support checkout` - `gFsm` is short for `git flow support pull` - `gFsx` is short for `git flow support delete` ### Grep (g) - `gg` displays lines matching a pattern. - `ggi` displays lines matching a pattern ignoring case. - `ggl` lists files matching a pattern. - `ggL` lists files that are not matching a pattern. - `ggv` displays lines not matching a pattern. - `ggw` displays lines matching a pattern at word boundary. ### Index (i) - `gia` adds file contents to the index. - `giA` adds file contents to the index interactively. - `giu` adds file contents to the index (updates only known files). - `gid` displays changes between the index and a named commit (diff). - `giD` displays changes between the index and a named commit (word diff). - `gii` temporarily ignore differences in a given file. - `giI` unignore differences in a given file. - `gir` resets the current HEAD to the specified state. - `giR` resets the current index interactively. - `gix` removes files/directories from the index (recursively). - `giX` removes files/directories from the index (recursively and forced). ### Log (l) - `gl` displays the log. - `gls` displays the stats log. - `gld` displays the diff log. - `glo` displays the one line log. - `glg` displays the graph log. - `glb` displays the brief commit log. - `glc` displays the commit count for each contributor in descending order. - `glS` displays the log and checks the validity of signed commits. ### Merge (m) - `gm` joins two or more development histories together. - `gmC` joins two or more development histories together but does not commit. - `gmF` joins two or more development histories together but does not commit generating a merge commit even if the merge resolved as a fast-forward. - `gma` aborts the conflict resolution, and reconstructs the pre-merge state. - `gmt` runs the merge conflict resolution tools to resolve conflicts. ### Push (p) - `gp` updates remote refs along with associated objects. - `gpf` forcefully updates remote refs along with associated objects using the safer `--force-with-lease` option. - `gpF` forcefully updates remote refs along with associated objects using the riskier `--force` option. - `gpa` updates remote branches along with associated objects. - `gpA` updates remote branches and tags along with associated objects. - `gpt` updates remote tags along with associated objects. - `gpc` updates remote refs along with associated objects and adds _origin_ as an upstream reference for the current branch. - `gpp` pulls and pushes from origin to origin. ### Rebase (r) - `gr` forward-ports local commits to the updated upstream _HEAD_. - `gra` aborts the rebase. - `grc` continues the rebase after merge conflicts are resolved. - `gri` makes a list of commits to be rebased and opens the editor. - `grs` skips the current patch. ### Remote (R) - `gR` manages tracked repositories. - `gRl` lists remote names and their URLs. - `gRa` adds a new remote. - `gRx` removes a remote. - `gRm` renames a remote. - `gRu` fetches remotes updates. - `gRp` prunes all stale remote tracking branches. - `gRs` displays information about a given remote. - `gRb` opens a remote on [GitHub][3] in the default browser. ### Stash (s) - `gs` stashes the changes of the dirty working directory. - `gsa` applies the changes recorded in a stash to the working directory. - `gsx` drops a stashed state. - `gsX` drops all the stashed states. - `gsl` lists stashed states. - `gsL` lists dropped stashed states. - `gsd` displays changes between the stash and its original parent. - `gsp` removes and applies a single stashed state from the stash list. - `gsr` recovers a given stashed state. - `gss` stashes the changes of the dirty working directory, including untracked. - `gsS` stashes the changes of the dirty working directory interactively. - `gsw` stashes the changes of the dirty working directory retaining the index. ### Submodule (S) - `gS` initializes, updates, or inspects submodules. - `gSa` adds given a repository as a submodule. - `gSf` evaluates a shell command in each of checked out submodules. - `gSi` initializes submodules. - `gSI` initializes and clones submodules recursively. - `gSl` lists the commits of all submodules. - `gSm` moves a submodule. - `gSs` synchronizes submodules' remote URL to the value specified in _.gitmodules_. - `gSu` fetches and merges the latest changes for all submodule. - `gSx` removes a submodule. ### Tag (t) - `gt` lists tags or creates tag. - `gtl` lists tags matching pattern. - `gts` creates a signed tag. - `gtv` validate a signed tag. ### Working directory (w) - `gws` displays working-tree status in the short format. - `gwS` displays working-tree status. - `gwd` displays changes between the working tree and the index (diff). - `gwD` displays changes between the working tree and the index (word diff). - `gwr` resets the current HEAD to the specified state, does not touch the index nor the working tree. - `gwR` resets the current HEAD, index and working tree to the specified state. - `gwc` removes untracked files from the working tree (dry-run). - `gwC` removes untracked files from the working tree. - `gwx` removes files from the working tree and from the index recursively. - `gwX` removes files from the working tree and from the index recursively and forcefully. ### Shadows The following aliases may shadow system commands: - `gb` shadows the [GB][10]. - `gm` shadows the [GraphicsMagick image processor][11]. - `gpt` shadows the [GUID partition table maintenance utility][4]. - `gs` shadows the [Ghostscript interpreter and previewer][5]. If you frequently use the above commands, you may wish to remove said aliases from this module or to disable them at the bottom of the zshrc with `unalias`. You can temporarily bypass an alias by prefixing it with a backward slash: `\gpt`. ## Functions - `git-branch-current` displays the current branch. - `git-commit-lost` lists lost commits. - `git-dir` displays the path to the Git directory. - `git-hub-browse` opens the [GitHub][3] repository in the default browser. - `git-hub-shorten-url` shortens [GitHub URLs][12]. - `git-info` exposes repository information via the `$git_info` associative array. - `git-root` displays the path to the working tree root. - `git-stash-clear-interactive` asks for confirmation before clearing the stash. - `git-stash-dropped` lists dropped stashed states. - `git-stash-recover` recovers given dropped stashed states. - `git-submodule-move` moves a submodule. - `git-submodule-remove` removes a submodule. ## Theming To display information about the current repository in a prompt, define the following styles in the `prompt_name_setup` function, where the syntax for setting a style is as follows. ```sh zstyle ':prezto:module:git:info:context:subcontext' format 'string' ``` ### Main Contexts | Name | Format Code | Description | | -------- | :---------: | ---------------------------------- | | action | %s | Special action name | | ahead | %A | Commits ahead of remote count | | behind | %B | Commits behind of remote count | | branch | %b | Branch name | | commit | %c | Commit hash | | position | %p | Commits from the nearest tag count | | remote | %R | Remote name | | stashed | %S | Stashed states count | ### Concise Contexts | Name | Format Code | Description | | --------- | :---------: | --------------------- | | clean | %C | Clean state | | dirty | %D | Dirty files count | | indexed | %i | Indexed files count | | unindexed | %I | Unindexed files count | | untracked | %u | Untracked files count | The following contexts must be enabled with the following zstyle: ```sh zstyle ':prezto:module:git:info' verbose 'yes' ``` ### Verbose Contexts | Name | Format Code | Description | | --------- | :---------: | --------------------- | | added | %a | Added files count | | clean | %C | Clean state | | deleted | %d | Deleted files count | | dirty | %D | Dirty files count | | modified | %m | Modified files count | | renamed | %r | Renamed files count | | unmerged | %U | Unmerged files count | | untracked | %u | Untracked files count | ### Special Action Contexts | Name | Format | Description | | -------------------- | :----: | ---------------------------- | | apply | value | Applying patches | | bisect | value | Binary searching for changes | | cherry-pick | value | Cherry picking | | cherry-pick-sequence | value | Cherry picking sequence | | merge | value | Merging | | rebase | value | Rebasing | | rebase-interactive | value | Rebasing interactively | | rebase-merge | value | Rebasing merge | | revert | value | Reverting | | revert-sequence | value | Reverting sequence | First, format the repository state attributes. For example, to format the branch and remote names, define the following styles. ```sh zstyle ':prezto:module:git:info:branch' format 'branch:%b' zstyle ':prezto:module:git:info:remote' format 'remote:%R' ``` Second, format how the above attributes are displayed in prompts. ```sh zstyle ':prezto:module:git:info:keys' format \ 'prompt' ' git(%b)' \ 'rprompt' '[%R]' ``` Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to `$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook function. ## Authors _The authors of this module should be contacted via the [issue tracker][6]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Colin Hebert](https://github.com/ColinHebert) [1]: https://www.git-scm.com [2]: https://hub.github.com [3]: https://www.github.com [4]: https://www.manpagez.com/man/8/gpt/ [5]: https://www.manpagez.com/man/1/gs/ [6]: https://github.com/sorin-ionescu/prezto/issues [7]: https://github.com/sorin-ionescu/prezto/issues/219 [8]: https://git-scm.com/docs/git-log [9]: https://git-scm.com/docs/git-submodule [10]: https://getgb.io/ [11]: https://www.manpagez.com/man/1/gm/ [12]: https://github.blog/2011-11-10-git-io-github-url-shortener [13]: ../completion#readme [14]: https://github.com/sorin-ionescu/prezto/pull/1929 ================================================ FILE: modules/git/alias.zsh ================================================ # # Defines Git aliases. # # Authors: # Sorin Ionescu # # # Settings # # Log zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \ || _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B' zstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \ || _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n' zstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \ || _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n' # Status zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \ || _git_status_ignore_submodules='none' # # Aliases # if ! zstyle -t ':prezto:module:git:alias' skip; then # Git alias g='git' # Branch (b) alias gb='git branch' alias gba='git branch --all --verbose' alias gbc='git checkout -b' alias gbd='git branch --delete' alias gbD='git branch --delete --force' alias gbl='git branch --verbose' alias gbL='git branch --all --verbose' alias gbm='git branch --move' alias gbM='git branch --move --force' alias gbr='git branch --move' alias gbR='git branch --move --force' alias gbs='git show-branch' alias gbS='git show-branch --all' alias gbv='git branch --verbose' alias gbV='git branch --verbose --verbose' alias gbx='git branch --delete' alias gbX='git branch --delete --force' # Commit (c) alias gc='git commit --verbose' alias gcS='git commit --verbose --gpg-sign' alias gca='git commit --verbose --all' alias gcaS='git commit --verbose --all --gpg-sign' alias gcm='git commit --message' alias gcmS='git commit --message --gpg-sign' alias gcam='git commit --all --message' alias gco='git checkout' alias gcO='git checkout --patch' alias gcf='git commit --amend --reuse-message HEAD' alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign' alias gcF='git commit --verbose --amend' alias gcFS='git commit --verbose --amend --gpg-sign' alias gcp='git cherry-pick --ff' alias gcP='git cherry-pick --no-commit' alias gcr='git revert' alias gcR='git reset "HEAD^"' alias gcs='git show' alias gcsS='git show --pretty=short --show-signature' alias gcl='git-commit-lost' alias gcy='git cherry --verbose --abbrev' alias gcY='git cherry --verbose' # Conflict (C) alias gCl='git --no-pager diff --name-only --diff-filter=U' alias gCa='git add $(gCl)' alias gCe='git mergetool $(gCl)' alias gCo='git checkout --ours --' alias gCO='gCo $(gCl)' alias gCt='git checkout --theirs --' alias gCT='gCt $(gCl)' # Data (d) alias gd='git ls-files' alias gdc='git ls-files --cached' alias gdx='git ls-files --deleted' alias gdm='git ls-files --modified' alias gdu='git ls-files --other --exclude-standard' alias gdk='git ls-files --killed' alias gdi='git status --porcelain --short --ignored | sed -n "s/^!! //p"' # Fetch (f) alias gf='git fetch' alias gfa='git fetch --all' alias gfc='git clone' alias gfcr='git clone --recurse-submodules' alias gfm='git pull' alias gfma='git pull --autostash' alias gfr='git pull --rebase' alias gfra='git pull --rebase --autostash' # Flow (F) alias gFi='git flow init' alias gFf='git flow feature' alias gFb='git flow bugfix' alias gFl='git flow release' alias gFh='git flow hotfix' alias gFs='git flow support' alias gFfl='git flow feature list' alias gFfs='git flow feature start' alias gFff='git flow feature finish' alias gFfp='git flow feature publish' alias gFft='git flow feature track' alias gFfd='git flow feature diff' alias gFfr='git flow feature rebase' alias gFfc='git flow feature checkout' alias gFfm='git flow feature pull' alias gFfx='git flow feature delete' alias gFbl='git flow bugfix list' alias gFbs='git flow bugfix start' alias gFbf='git flow bugfix finish' alias gFbp='git flow bugfix publish' alias gFbt='git flow bugfix track' alias gFbd='git flow bugfix diff' alias gFbr='git flow bugfix rebase' alias gFbc='git flow bugfix checkout' alias gFbm='git flow bugfix pull' alias gFbx='git flow bugfix delete' alias gFll='git flow release list' alias gFls='git flow release start' alias gFlf='git flow release finish' alias gFlp='git flow release publish' alias gFlt='git flow release track' alias gFld='git flow release diff' alias gFlr='git flow release rebase' alias gFlc='git flow release checkout' alias gFlm='git flow release pull' alias gFlx='git flow release delete' alias gFhl='git flow hotfix list' alias gFhs='git flow hotfix start' alias gFhf='git flow hotfix finish' alias gFhp='git flow hotfix publish' alias gFht='git flow hotfix track' alias gFhd='git flow hotfix diff' alias gFhr='git flow hotfix rebase' alias gFhc='git flow hotfix checkout' alias gFhm='git flow hotfix pull' alias gFhx='git flow hotfix delete' alias gFsl='git flow support list' alias gFss='git flow support start' alias gFsf='git flow support finish' alias gFsp='git flow support publish' alias gFst='git flow support track' alias gFsd='git flow support diff' alias gFsr='git flow support rebase' alias gFsc='git flow support checkout' alias gFsm='git flow support pull' alias gFsx='git flow support delete' # Grep (g) alias gg='git grep' alias ggi='git grep --ignore-case' alias ggl='git grep --files-with-matches' alias ggL='git grep --files-without-matches' alias ggv='git grep --invert-match' alias ggw='git grep --word-regexp' # Index (i) alias gia='git add' alias giA='git add --patch' alias giu='git add --update' alias gid='git diff --no-ext-diff --cached' alias giD='git diff --no-ext-diff --cached --word-diff' alias gii='git update-index --assume-unchanged' alias giI='git update-index --no-assume-unchanged' alias gir='git reset' alias giR='git reset --patch' alias gix='git rm -r --cached' alias giX='git rm -r --force --cached' # Log (l) alias gl='git log --topo-order --pretty=format:"$_git_log_medium_format"' alias gls='git log --topo-order --stat --pretty=format:"$_git_log_medium_format"' alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:"$_git_log_medium_format"' alias glo='git log --topo-order --pretty=format:"$_git_log_oneline_format"' alias glg='git log --topo-order --graph --pretty=format:"$_git_log_oneline_format"' alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"' alias glc='git shortlog --summary --numbered' alias glS='git log --show-signature' # Merge (m) alias gm='git merge' alias gmC='git merge --no-commit' alias gmF='git merge --no-ff' alias gma='git merge --abort' alias gmt='git mergetool' # Push (p) alias gp='git push' alias gpf='git push --force-with-lease' alias gpF='git push --force' alias gpa='git push --all' alias gpA='git push --all && git push --tags' alias gpt='git push --tags' alias gpc='git push --set-upstream origin "$(git-branch-current 2> /dev/null)"' alias gpp='git pull origin "$(git-branch-current 2> /dev/null)" && git push origin "$(git-branch-current 2> /dev/null)"' # Rebase (r) alias gr='git rebase' alias gra='git rebase --abort' alias grc='git rebase --continue' alias gri='git rebase --interactive' alias grs='git rebase --skip' # Remote (R) alias gR='git remote' alias gRl='git remote --verbose' alias gRa='git remote add' alias gRx='git remote rm' alias gRm='git remote rename' alias gRu='git remote update' alias gRp='git remote prune' alias gRs='git remote show' alias gRb='git-hub-browse' # Stash (s) alias gs='git stash' alias gsa='git stash apply' alias gsx='git stash drop' alias gsX='git-stash-clear-interactive' alias gsl='git stash list' alias gsL='git-stash-dropped' alias gsd='git stash show --patch --stat' alias gsp='git stash pop' alias gsr='git-stash-recover' alias gss='git stash save --include-untracked' alias gsS='git stash save --patch --no-keep-index' alias gsw='git stash save --include-untracked --keep-index' # Submodule (S) alias gS='git submodule' alias gSa='git submodule add' alias gSf='git submodule foreach' alias gSi='git submodule init' alias gSI='git submodule update --init --recursive' alias gSl='git submodule status' alias gSm='git-submodule-move' alias gSs='git submodule sync' alias gSu='git submodule update --remote --recursive' alias gSx='git-submodule-remove' # Tag (t) alias gt='git tag' alias gtl='git tag --list' alias gts='git tag --sign' alias gtv='git verify-tag' # Working Copy (w) alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short' alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules' alias gwd='git diff --no-ext-diff' alias gwD='git diff --no-ext-diff --word-diff' alias gwr='git reset --soft' alias gwR='git reset --hard' alias gwc='git clean --dry-run' alias gwC='git clean --force' alias gwx='git rm -r' alias gwX='git rm -r --force' fi ================================================ FILE: modules/git/functions/_git-hub-browse ================================================ #compdef git-hub-browse #autoload # # Completes git-hub-browse. # # Authors: # Sorin Ionescu # if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then return 1 fi local state expl remotes remote branches_or_tags branches tags files ret=1 _arguments -C -s -S \ '1::args:->remote' \ '2::args:->branch-or-tag' \ '3::args:->file' && ret=0 case "$state" in (remote) remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2)) _describe -t branch 'remotes' remotes && ret=0 ;; (branch-or-tag) remote="$words[(($CURRENT - 1))]" branches_or_tags=($( command git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2 )) branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/}) tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/}) _describe -t branch 'branches' branches && ret=0 _describe -t tag 'tags' tags && ret=0 ;; (file) files=(${(0)"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)"}) _wanted file expl 'file' _multi_parts - / files && ret=0 ;; esac return $ret ================================================ FILE: modules/git/functions/_git-hub-shorten-url ================================================ #compdef git-hub-shorten-url #autoload # # Completes git-hub-shorten-url. # # Authors: # Sorin Ionescu # local service="$service" zstyle ":completion:*:${service}:*:prefixes" ignored-patterns '^http(|s)://' zstyle ":completion:*:${service}:*:hosts" ignored-patterns '^*github.com' _arguments '1::GitHub URL:_urls' '2::code:' && return 0 ================================================ FILE: modules/git/functions/_git-info ================================================ #compdef git-info #autoload # # Completes git-info. # # Authors: # Sorin Ionescu # if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then return 1 fi _arguments "1:toggle:(( on\:'enable in-prompt information for the current repository' off\:'disable in-prompt information for the current repository' ))" && return 0 ================================================ FILE: modules/git/functions/_git-submodule-move ================================================ #compdef git-submodule-move #autoload # # Completes git-submodule-move. # # Authors: # Sorin Ionescu # if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then return 1 fi local state expl ret=1 local -a submodules local submodule _arguments -C -s -S \ '1::args:->submodule' \ '2::args:->directory' && ret=0 case "$state" in (submodule) while IFS=$'\n' read submodule; do submodules+=("$submodule") done < <( command git config --file "$(git-root)/.gitmodules" --list \ | grep '.path=' \ | cut -d= -f2- ) _describe -t submodule 'submodules' submodules && ret=0 ;; (directory) _wanted directories expl 'directory' _path_files -/ || _message 'directory' ;; esac return $ret ================================================ FILE: modules/git/functions/_git-submodule-remove ================================================ #compdef git-submodule-remove #autoload # # Completes git-submodule-remove. # # Authors: # Sorin Ionescu # if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then return 1 fi local -a submodules local submodule while IFS=$'\n' read submodule; do submodules+=("$submodule") done < <( command git config --file "$(git-root)/.gitmodules" --list \ | grep '.path=' \ | cut -d= -f2- ) _describe -t submodule 'submodules' submodules && return 0 ================================================ FILE: modules/git/functions/git-branch-current ================================================ # # Displays the current Git branch. # # Authors: # Sorin Ionescu # # function git-branch-current { if ! command git rev-parse 2> /dev/null; then print "$0: not a repository: $PWD" >&2 return 1 fi local ref="$(command git symbolic-ref HEAD 2> /dev/null)" if [[ -n "$ref" ]]; then print "${ref#refs/heads/}" return 0 else return 1 fi # } ================================================ FILE: modules/git/functions/git-commit-lost ================================================ # # Lists lost Git commits. # # Authors: # Sorin Ionescu # # function git-commit-lost { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 fi command git fsck 2> /dev/null \ | grep "^dangling commit" \ | awk '{print $3}' \ | command git log \ --date-order \ --no-walk \ --stdin \ --pretty=format:${_git_log_oneline_format} # } ================================================ FILE: modules/git/functions/git-dir ================================================ # # Displays the path to the Git directory. # # Authors: # Sorin Ionescu # # function git-dir { local git_dir="${$(command git rev-parse --git-dir):A}" if [[ -n "$git_dir" ]]; then print "$git_dir" return 0 else print "$0: not a repository: $PWD" >&2 return 1 fi # } ================================================ FILE: modules/git/functions/git-hub-browse ================================================ # # Opens a GitHub repository in the default browser. # # Authors: # Sorin Ionescu # # function git-hub-browse { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 fi local remotes remote references reference file url remote="${1:-origin}" remotes=($(command git remote show)) if (( $remotes[(i)$remote] == $#remotes + 1 )); then print "$0: remote not found: $remote" >&2 return 1 fi url=$( command git remote get-url "$remote" \ | sed -En "s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\.git#https://\2/\4/\5#p" ) reference="${${2:-$(git-branch-current)}:-HEAD}" references=( HEAD ${${(f)"$(command git ls-remote --heads --tags "$remote")"}##*refs/(heads|tags)/} ) if (( $references[(i)$reference] == $#references + 1 )); then print "$0: branch or tag not found: $reference" >&2 return 1 fi if [[ "$reference" == 'HEAD' ]]; then reference="$(command git rev-parse HEAD 2> /dev/null)" fi file="$3" if [[ -n "$url" ]]; then url="$url/tree/$reference/$file" if [[ -n "$BROWSER" ]]; then "$BROWSER" "$url" return 0 else print "$0: browser not set or set to a non-existent browser" >&2 return 1 fi else print "$0: not a Git repository or remote not set" >&2 return 1 fi # } ================================================ FILE: modules/git/functions/git-hub-shorten-url ================================================ # # Shortens GitHub URLs. # # Authors: # Sorin Ionescu # # function git-hub-shorten-url { local url="$1" code="$2" if [[ "$url" == '-' ]]; then read url <&0 fi if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then print "usage: $0 [ url | - ] [code] ; url must be a github.com URL" >&2 return 1 fi if (( $+commands[curl] )); then print "${${(@M)${(f)"$(curl -s -i 'https://git.io' -F "url=$url" ${(z)code:+ -F "code=$code"})"}:#Location: *}#Location: }" else print "$0: command not found: curl" >&2 return 1 fi # } ================================================ FILE: modules/git/functions/git-info ================================================ # # Exposes Git repository information via the $git_info associative array. # # Authors: # Sorin Ionescu # # Gets the Git special action (am, bisect, cherry, merge, rebase, revert). # Borrowed from vcs_info and edited. function _git-action { local action_dir local git_dir="$(git-dir)" local apply_formatted local bisect_formatted local cherry_pick_formatted local cherry_pick_sequence_formatted local merge_formatted local rebase_formatted local rebase_interactive_formatted local rebase_merge_formatted local revert_formatted local revert_sequence_formatted for action_dir in \ "$git_dir/rebase-apply" \ "$git_dir/rebase" \ "$git_dir/../.dotest" do if [[ -d "$action_dir" ]] ; then zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \ || apply_formatted='apply' zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \ || rebase_formatted='rebase' if [[ -f "$action_dir/rebasing" ]] ; then print "$rebase_formatted" elif [[ -f "$action_dir/applying" ]] ; then print "$apply_formatted" else print "$rebase_formatted/$apply_formatted" fi return 0 fi done for action_dir in \ "$git_dir/rebase-merge/interactive" \ "$git_dir/.dotest-merge/interactive" do if [[ -f "$action_dir" ]]; then zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \ || rebase_interactive_formatted='rebase-interactive' print "$rebase_interactive_formatted" return 0 fi done for action_dir in \ "$git_dir/rebase-merge" \ "$git_dir/.dotest-merge" do if [[ -d "$action_dir" ]]; then zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \ || rebase_merge_formatted='rebase-merge' print "$rebase_merge_formatted" return 0 fi done if [[ -f "$git_dir/MERGE_HEAD" ]]; then zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \ || merge_formatted='merge' print "$merge_formatted" return 0 fi if [[ -f "$git_dir/CHERRY_PICK_HEAD" ]]; then if [[ -d "$git_dir/sequencer" ]] ; then zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \ || cherry_pick_sequence_formatted='cherry-pick-sequence' print "$cherry_pick_sequence_formatted" else zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \ || cherry_pick_formatted='cherry-pick' print "$cherry_pick_formatted" fi return 0 fi if [[ -f "$git_dir/REVERT_HEAD" ]]; then if [[ -d "$git_dir/sequencer" ]] ; then zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' \ || revert_sequence_formatted='revert-sequence' print "$revert_sequence_formatted" else zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' \ || revert_formatted='revert' print "$revert_formatted" fi return 0 fi if [[ -f "$git_dir/BISECT_LOG" ]]; then zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' \ || bisect_formatted='bisect' print "$bisect_formatted" return 0 fi return 1 } # Gets the Git status information. function git-info { # Extended globbing is needed to parse repository status. setopt LOCAL_OPTIONS setopt EXTENDED_GLOB local action local action_format local action_formatted local added=0 local added_format local added_formatted local ahead=0 local ahead_and_behind local ahead_and_behind_cmd local ahead_format local ahead_formatted local ahead_or_behind local behind=0 local behind_format local behind_formatted local branch local branch_format local branch_formatted local branch_info local clean local clean_formatted local commit local commit_format local commit_formatted local deleted=0 local deleted_format local deleted_formatted local dirty=0 local dirty_format local dirty_formatted local ignore_submodules local indexed=0 local indexed_format local indexed_formatted local -A info_formats local info_format local modified=0 local modified_format local modified_formatted local position local position_format local position_formatted local remote local remote_cmd local remote_format local remote_formatted local renamed=0 local renamed_format local renamed_formatted local stashed=0 local stashed_format local stashed_formatted local status_cmd local status_mode local unindexed=0 local unindexed_format local unindexed_formatted local unmerged=0 local unmerged_format local unmerged_formatted local untracked=0 local untracked_format local untracked_formatted # Clean up previous $git_info. unset git_info typeset -gA git_info # Return if not inside a Git repository work tree. if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then return 1 fi if (( $# > 0 )); then if [[ "$1" == [Oo][Nn] ]]; then command git config --bool prompt.showinfo true elif [[ "$1" == [Oo][Ff][Ff] ]]; then command git config --bool prompt.showinfo false else print "usage: $0 [ on | off ]" >&2 fi return 0 fi # Return if git-info is disabled. if ! is-true "${$(command git config --bool prompt.showinfo):-true}"; then return 1 fi # Ignore submodule status. zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules' # Format commit. zstyle -s ':prezto:module:git:info:commit' format 'commit_format' if [[ -n "$commit_format" ]]; then commit="$(command git rev-parse HEAD 2> /dev/null)" if [[ -n "$commit" ]]; then zformat -f commit_formatted "$commit_format" "c:$commit" fi fi # Format stashed. zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' if [[ -n "$stashed_format" ]]; then commondir="" if [[ -f "$(git-dir)/commondir" ]]; then commondir="$(<$(git-dir)/commondir)" [[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir" fi if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then stashed=${#${(f)"$(command git stash list 2> /dev/null)"}} if (( $stashed > 0 )); then zformat -f stashed_formatted "$stashed_format" "S:$stashed" fi fi fi # Format action. zstyle -s ':prezto:module:git:info:action' format 'action_format' if [[ -n "$action_format" ]]; then action="$(_git-action)" if [[ -n "$action" ]]; then zformat -f action_formatted "$action_format" "s:$action" fi fi # Get the branch. branch="${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" # Format branch. zstyle -s ':prezto:module:git:info:branch' format 'branch_format' if [[ -n "$branch" && -n "$branch_format" ]]; then zformat -f branch_formatted "$branch_format" "b:$branch" fi # Format position. zstyle -s ':prezto:module:git:info:position' format 'position_format' if [[ -z "$branch" && -n "$position_format" ]]; then position="$(command git describe --contains --all HEAD 2> /dev/null)" if [[ -n "$position" ]]; then zformat -f position_formatted "$position_format" "p:$position" fi fi # Format remote. zstyle -s ':prezto:module:git:info:remote' format 'remote_format' if [[ -n "$branch" && -n "$remote_format" ]]; then # Gets the remote name. remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}' remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" if [[ -n "$remote" ]]; then zformat -f remote_formatted "$remote_format" "R:$remote" fi fi zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format' zstyle -s ':prezto:module:git:info:behind' format 'behind_format' if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then # Gets the commit difference counts between local and remote. ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}' # Get ahead and behind counts. ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" # Format ahead. if [[ -n "$ahead_format" ]]; then ahead="$ahead_and_behind[(pws:\t:)1]" if (( ahead > 0 )); then zformat -f ahead_formatted "$ahead_format" "A:$ahead" fi fi # Format behind. if [[ -n "$behind_format" ]]; then behind="$ahead_and_behind[(pws:\t:)2]" if (( behind > 0 )); then zformat -f behind_formatted "$behind_format" "B:$behind" fi fi fi # Get status type. if ! zstyle -t ':prezto:module:git:info' verbose; then # Format indexed. zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format' if [[ -n "$indexed_format" ]]; then (( indexed+=$( command git diff-index \ --no-ext-diff \ --name-only \ --cached \ --ignore-submodules=${ignore_submodules:-none} \ HEAD \ 2> /dev/null \ | wc -l ) )) if (( indexed > 0 )); then zformat -f indexed_formatted "$indexed_format" "i:$indexed" fi fi # Format unindexed. zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format' if [[ -n "$unindexed_format" ]]; then (( unindexed+=$( command git diff-files \ --no-ext-diff \ --name-only \ --ignore-submodules=${ignore_submodules:-none} \ 2> /dev/null \ | wc -l ) )) if (( unindexed > 0 )); then zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed" fi fi # Format untracked. zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' if [[ -n "$untracked_format" ]]; then (( untracked+=$( command git ls-files \ --other \ --exclude-standard \ 2> /dev/null \ | wc -l ) )) if (( untracked > 0 )); then zformat -f untracked_formatted "$untracked_format" "u:$untracked" fi fi (( dirty = indexed + unindexed + untracked )) else # Use porcelain status for easy parsing. status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}" # Get current status. while IFS=$'\n' read line; do # Count added, deleted, modified, renamed, unmerged, untracked, dirty. # T (type change) is undocumented, see http://git.io/FnpMGw. # For a table of scenarii, see http://i.imgur.com/2YLu1.png. [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) [[ "$line" == ?[MT]\ * ]] && (( modified++ )) [[ "$line" == R?\ * ]] && (( renamed++ )) [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) [[ "$line" == \?\?\ * ]] && (( untracked++ )) (( dirty++ )) done < <(${(z)status_cmd} 2> /dev/null) # Format added. if (( added > 0 )); then zstyle -s ':prezto:module:git:info:added' format 'added_format' zformat -f added_formatted "$added_format" "a:$added" fi # Format deleted. if (( deleted > 0 )); then zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' zformat -f deleted_formatted "$deleted_format" "d:$deleted" fi # Format modified. if (( modified > 0 )); then zstyle -s ':prezto:module:git:info:modified' format 'modified_format' zformat -f modified_formatted "$modified_format" "m:$modified" fi # Format renamed. if (( renamed > 0 )); then zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' zformat -f renamed_formatted "$renamed_format" "r:$renamed" fi # Format unmerged. if (( unmerged > 0 )); then zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" fi # Format untracked. if (( untracked > 0 )); then zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' zformat -f untracked_formatted "$untracked_format" "u:$untracked" fi fi # Format dirty and clean. if (( dirty > 0 )); then zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format' zformat -f dirty_formatted "$dirty_format" "D:$dirty" # Overwrite branch format to use dirty-branch format zstyle -s ':prezto:module:git:info:dirty-branch' format 'branch_format' if [[ -n "$branch" && -n "$branch_format" ]]; then zformat -f branch_formatted "$branch_format" "b:$branch" fi else zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted' fi # Format info. zstyle -a ':prezto:module:git:info:keys' format 'info_formats' for info_format in ${(k)info_formats}; do zformat -f REPLY "$info_formats[$info_format]" \ "a:$added_formatted" \ "A:$ahead_formatted" \ "B:$behind_formatted" \ "b:$branch_formatted" \ "C:$clean_formatted" \ "c:$commit_formatted" \ "d:$deleted_formatted" \ "D:$dirty_formatted" \ "i:$indexed_formatted" \ "I:$unindexed_formatted" \ "m:$modified_formatted" \ "p:$position_formatted" \ "R:$remote_formatted" \ "r:$renamed_formatted" \ "s:$action_formatted" \ "S:$stashed_formatted" \ "U:$unmerged_formatted" \ "u:$untracked_formatted" git_info[$info_format]="$REPLY" done unset REPLY return 0 } git-info "$@" ================================================ FILE: modules/git/functions/git-root ================================================ # # Displays the path to the working tree root. # # Authors: # Sorin Ionescu # # function git-root { local root="$(command git rev-parse --show-toplevel 2> /dev/null)" if [[ -n "$root" ]]; then print "$root" return 0 else print "$0: not a repository work tree: $PWD" >&2 return 1 fi # } ================================================ FILE: modules/git/functions/git-stash-clear-interactive ================================================ # # Asks for confirmation before clearing the Git stash. # # Authors: # Sorin Ionescu # # function git-stash-clear-interactive { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 fi local stashed if [[ -f "$(git-dir)/refs/stash" ]]; then stashed=${#${(f)"$(command git stash list 2> /dev/null)"}} if (( $stashed > 0 )); then if read -q "?Clear $stashed stashed state(s) [y/N]? "; then command git stash clear fi fi fi # } ================================================ FILE: modules/git/functions/git-stash-dropped ================================================ # # Lists dropped Git stashed states. # # Authors: # Sorin Ionescu # # function git-stash-dropped { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 fi command git fsck --unreachable 2> /dev/null \ | grep 'commit' \ | awk '{print $3}' \ | command git log \ --pretty=format:$_git_log_oneline_format \ --extended-regexp \ --grep="${1:-(WIP )?[Oo]n [^:]+:}" \ --merges \ --no-walk \ --stdin # } ================================================ FILE: modules/git/functions/git-stash-recover ================================================ # # Recovers dropped Git stashed states. # # Authors: # Sorin Ionescu # # function git-stash-recover { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 fi local commit for commit in "$@"; do command git update-ref \ -m "$(command git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit" done # } ================================================ FILE: modules/git/functions/git-submodule-move ================================================ # # Moves a Git submodule. # # Authors: # Sorin Ionescu # # function git-submodule-move { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 elif [[ "$PWD" != "$(git-root)" ]]; then print "$0: must be run from the root of the work tree" >&2 return 1 fi local src="$1" local dst="$2" local url url="$(command git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")" if [[ -z "$url" ]]; then print "$0: submodule not found: $src" >&2 return 1 fi mkdir -p "$dst:h" git-submodule-remove "$src" command git submodule add "$url" "$dst" return 0 # } ================================================ FILE: modules/git/functions/git-submodule-remove ================================================ # # Removes a Git submodule. # # Authors: # Sorin Ionescu # # function git-submodule-remove { if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 elif [[ "$PWD" != "$(git-root)" ]]; then print "$0: must be run from the root of the work tree" >&2 return 1 elif ! command git config --file .gitmodules --get "submodule.${1}.path" &> /dev/null; then print "$0: submodule not found: $1" >&2 return 1 fi command git config --file "$(git-dir)/config" --remove-section "submodule.${1}" &> /dev/null command git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &> /dev/null command git add .gitmodules command git rm --cached -rf "$1" rm -rf "$1" rm -rf "$(git-dir)/modules/$1" return 0 # } ================================================ FILE: modules/git/init.zsh ================================================ # # Provides Git aliases and functions. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[git] )); then return 1 fi # Load dependencies. pmodload 'helper' # Load 'run-help' function. autoload -Uz run-help-git # Source module files. source "${0:h}/alias.zsh" ================================================ FILE: modules/gnu-utility/README.md ================================================ # GNU Utility Provides for the interactive use of GNU utilities on BSD systems. Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e., `ls` instead of `gls`, is not recommended since scripts that target other utilities will be broken. This module wraps GNU utilities in functions without a prefix for interactive use. This module must be loaded _before_ the [_`utility`_][1] module so that GNU utilities enabled in this module are available for configuration in _`utility`_ module. ## Settings ### Prefix To use a different prefix, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix. ```sh zstyle ':prezto:module:gnu-utility' prefix 'g' ``` ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: ../utility#readme [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/gnu-utility/init.zsh ================================================ # # Provides for the interactive use of GNU utilities on BSD systems. # # Authors: # Sorin Ionescu # # Get the prefix or use the default. zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \ || _gnu_utility_p='g' # Return if requirements are not found. if (( ! $+commands[${_gnu_utility_p}whoami] )); then return 1 fi _gnu_utility_cmds=( # Coreutils '[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp' 'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut' 'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr' 'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join' 'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo' 'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od' 'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd' 'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf' 'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail' 'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty' 'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir' 'wc' 'who' 'whoami' 'yes' # The following utilities are not part of Coreutils but installed separately. # Binutils 'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm' 'objcopy' 'objdump' 'ranlib' 'readelf' 'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres' # Findutils 'find' 'locate' 'oldfind' 'updatedb' 'xargs' # Libtool 'libtool' 'libtoolize' # Miscellaneous 'awk' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which' ) # Wrap GNU utilities in functions. for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do _gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}" if (( $+commands[$_gnu_utility_pcmd] \ && ! $+builtins[$_gnu_utility_cmd] )); then eval " function $_gnu_utility_cmd { '$commands[$_gnu_utility_pcmd]' \"\$@\" } " fi done unset _gnu_utility_{p,cmds,cmd,pcmd} ================================================ FILE: modules/gpg/README.md ================================================ # GPG Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. ## Settings ### SSH To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in replacement for `ssh-agent`, add the following line to _`$GNUPGHOME/gpg-agent.conf`_ or _`$$HOME/.gnupg/gpg-agent.conf`_: ```conf enable-ssh-support ``` When OpenSSH Agent protocol emulation is enabled, this module will load the SSH module for additional processing. ## Authors _The authors of this module should be contacted via the [issue tracker][3]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://www.gnupg.org [2]: https://linux.die.net/man/1/gpg-agent [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/gpg/init.zsh ================================================ # # Provides for an easier use of GPG by setting up gpg-agent. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[gpg-agent] )); then return 1 fi # Set the default paths to gpg-agent files. _gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf" _gpg_agent_env="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env" # Load environment variables from previous run source "$_gpg_agent_env" 2> /dev/null # Start gpg-agent if not started. if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then # Start gpg-agent if not started. if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then mkdir -p "$_gpg_agent_env:h" eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")" fi fi # Inform gpg-agent of the current TTY for user prompts. export GPG_TTY=$TTY # Integrate with the SSH module. if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then # Load required functions. autoload -Uz add-zsh-hook # Override the ssh-agent environment file default path. _ssh_agent_env="$_gpg_agent_env" # Load the SSH module for additional processing. pmodload 'ssh' # Updates the GPG-Agent TTY before every command since SSH does not set it. function _gpg-agent-update-tty { gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null } add-zsh-hook preexec _gpg-agent-update-tty fi # Clean up. unset _gpg_agent_{conf,env} # Disable GUI prompts inside SSH. if [[ -n "$SSH_CONNECTION" ]]; then export PINENTRY_USER_DATA='USE_CURSES=1' fi ================================================ FILE: modules/haskell/README.md ================================================ # Haskell Enables local Haskell package installation. ## Per-user Package Installation [Cabal][1], the Haskell package manager, can install packages into per user directories. This module prepends per user directories to the relevant path variables to enable the execution of user installed executables and the reading of documentation. ### Usage Install packages into per user directories with `cabal install --user`. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sebastian Wiesner](https://github.com/lunaryorn) [1]: https://www.haskell.org/cabal/ [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/haskell/init.zsh ================================================ # # Enables local Haskell package installation. # # Authors: # Sebastian Wiesner # # Return if requirements are not found. if (( ! $+commands[ghc] )); then return 1 fi # Load dependencies. pmodload 'helper' # Prepend Cabal per user directories to PATH. if is-darwin && [[ -d $HOME/Library/Haskell ]]; then path=($HOME/Library/Haskell/bin(/N) $path) else path=($HOME/.cabal/bin(/N) $path) fi ================================================ FILE: modules/helper/README.md ================================================ # Helper Provides helper functions for developing modules. ## Functions - `add-zsh-trap` adds a function name to a list to be called when a trap is triggered. - `is-autoloadable` checks if a file can be autoloaded by trying to load it in a subshell. - `is-callable` checks if a name is a command, function, or alias. - `is-true` checks a boolean variable for "true". - `coalesce` prints the first non-empty string in the arguments array. - `is-darwin` checks if running on macOS Darwin. - `is-linux` checks if running on Linux. - `is-bsd` checks if running on BSD. - `is-cygwin` checks if running on Cygwin (Windows). - `is-termux` checks if running on Termux (Android). ## Authors _The authors of this module should be contacted via the [issue tracker][1]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/helper/functions/add-zsh-trap ================================================ # # Provides for trapping UNIX signals and calling callback functions when a trap # is triggered. # # Authors: # Sorin Ionescu # # Adds a function name to a list to be called when a trap is triggered. function add-zsh-trap { if (( $# < 2 )); then print "usage: $0 type function" >&2 return 1 fi if [[ -z "$signals[(r)$1]" ]]; then print "$0: unknown signal: $1" >&2 return 1 fi local trap_functions="TRAP${1}_FUNCTIONS" if (( ! ${(P)+trap_functions} )); then typeset -gaU "$trap_functions" fi eval "$trap_functions+="$2"" if (( ! $+functions[TRAP${1}] )); then eval " function TRAP${1} { for trap_function in \"\$TRAP${1}_FUNCTIONS[@]\"; do if (( \$+functions[\$trap_function] )); then \"\$trap_function\" \"\$1\" fi done return \$(( 128 + \$1 )) } " fi } add-zsh-trap "$@" ================================================ FILE: modules/helper/init.zsh ================================================ # # Defines helper functions. # # Authors: # Sorin Ionescu # # Checks if a file can be autoloaded by trying to load it in a subshell. function is-autoloadable { ( unfunction $1 ; autoload -U +X $1 ) &> /dev/null } # Checks if a name is a command, function, or alias. function is-callable { (( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] )) } # Checks a boolean variable for "true". # Case insensitive: "1", "y", "yes", "t", "true", "o", and "on". function is-true { [[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]] } # Prints the first non-empty string in the arguments array. function coalesce { for arg in $argv; do print "$arg" return 0 done return 1 } # Checks if running on macOS Darwin. function is-darwin { [[ "$OSTYPE" == darwin* ]] } # Checks if running on Linux. function is-linux { [[ "$OSTYPE" == linux* ]] } # Checks if running on BSD. function is-bsd { [[ "$OSTYPE" == *bsd* ]] } # Checks if running on Cygwin (Windows). function is-cygwin { [[ "$OSTYPE" == cygwin* ]] } # Checks if running on termux (Android). function is-termux { [[ "$OSTYPE" == linux-android ]] } ================================================ FILE: modules/history/README.md ================================================ # History Sets [history][1] options and defines history aliases. **Note:** Default path of `HISTFILE` has changed from _`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_. The file will be automatically renamed if possible (when the new one doesn't exist). Otherwise, if you want to preserve previous history, you will need to move them from _`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_. Alternately, you can set `HISTFILE` manually to _`${ZDOTDIR:-$HOME}/.zhistory`_. ## Options - `BANG_HIST` treats the **!** character specially during expansion. - `EXTENDED_HISTORY` writes the history file in the _:start:elapsed;command_ format. - `SHARE_HISTORY` shares history between all sessions. Note that `SHARE_HISTORY`, `INC_APPEND_HISTORY`, and `INC_APPEND_HISTORY_TIME` are mutually exclusive. - `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history. - `HIST_IGNORE_DUPS` does not record an event that was just recorded again. - `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a duplicate. - `HIST_FIND_NO_DUPS` does not display a previously found event. - `HIST_IGNORE_SPACE` does not record an event starting with a space. - `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file. - `HIST_VERIFY` does not execute immediately upon history expansion. - `HIST_BEEP` beeps when accessing non-existent history. ## Variables - `HISTFILE` stores the path to the history file. - `HISTSIZE` stores the maximum number of events to save in the internal history. - `SAVEHIST` stores the maximum number of events to save in the history file. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:history:alias' skip 'yes' ``` - `history-stat` lists the ten most used commands ## Settings ### histfile Can be configured either by setting HISTFILE manually before loading this module or by using zstyle: ```sh zstyle ':prezto:module:history' histfile "" ``` defaults to "${ZDOTDIR:-$HOME}/.zsh_history". ### histsize ```sh zstyle ':prezto:module:history' histsize ``` defaults to 10000. ### savehist ```sh zstyle ':prezto:module:history' savehist ``` defaults to histsize ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Robby Russell](https://github.com/robbyrussell) - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Indrajit Raychaudhuri](https://github.com/indrajitr) [1]: https://zsh.sourceforge.net/Guide/zshguide02.html#l16 [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/history/init.zsh ================================================ # # Sets history options and defines history aliases. # # Authors: # Robby Russell # Sorin Ionescu # # # Options # setopt BANG_HIST # Treat the '!' character specially during expansion. setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. setopt SHARE_HISTORY # Share history between all sessions. setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. setopt HIST_FIND_NO_DUPS # Do not display a previously found event. setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. setopt HIST_VERIFY # Do not execute immediately upon history expansion. setopt HIST_BEEP # Beep when accessing non-existent history. # # Variables # zstyle -s ':prezto:module:history' histfile 'HISTFILE' \ || HISTFILE="${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}" # The path to the history file. zstyle -s ':prezto:module:history' histsize 'HISTSIZE' \ || HISTSIZE=10000 # The maximum number of events to save in the internal history. zstyle -s ':prezto:module:history' savehist 'SAVEHIST' \ || SAVEHIST=$HISTSIZE # The maximum number of events to save in the history file. # # Aliases # if ! zstyle -t ':prezto:module:history:alias' skip; then # Lists the ten most used commands. alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head" fi ================================================ FILE: modules/history-substring-search/README.md ================================================ # History Substring Search Integrates [`zsh-history-substring-search`][1] into Prezto, which implements the [Fish shell][2]'s history search feature, where the user can type in any part of a previously entered command and press up and down to cycle through matching commands. If this module is used in conjunction with the [_`syntax-highlighting`_][3] module, this module must be loaded _after_ the _`syntax-highlighting`_ module. Additionally, if this module is used in conjunction with the [_`autosuggestions`_][4] module, this module must be loaded _before_ the _`autosuggestions`_ module. To elaborate, the relative order of loading the modules would be _`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_. ## Contributors New features and bug fixes should be submitted to the [`zsh-history-substring-search`][1] project according to its rules and regulations. This module will be synchronized against it. ## Settings ### Case Sensitivity To enable case-sensitivity for this module only, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' ``` ### Highlighting If colors are enabled, _history-substring-search_ will automatically highlight positive results. To disable highlighting for this module only, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' color 'no' ``` To set the query found color, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search:color' found '' ``` To set the query not found color, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search:color' not-found '' ``` To set the search globbing flags, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' globbing-flags '' ``` ### Case sensitive search To set the search case-sensitivity, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' ``` ### Fuzzy search To enable search for fuzzy matches, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' fuzzy 'yes' ``` ### Unique results To enable unique results, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' unique 'yes' ``` ### Prefixed search To enable prefixed search matches, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:history-substring-search' prefixed 'yes' ``` ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Suraj N. Kurapati](https://github.com/sunaku) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/zsh-users/zsh-history-substring-search [2]: https://fishshell.com [3]: ../syntax-highlighting#readme [4]: ../autosuggestions#readme [5]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/history-substring-search/init.zsh ================================================ # # Integrates history-substring-search into Prezto. # # Authors: # Suraj N. Kurapati # Sorin Ionescu # # Load dependencies. pmodload 'editor' # Source module files. if (( ! $+functions[history-substring-search-up] )); then source "${0:h}/external/zsh-history-substring-search.zsh" || return 1 fi # # Search # zstyle -s ':prezto:module:history-substring-search:color' found \ 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \ || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold' zstyle -s ':prezto:module:history-substring-search:color' not-found \ 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \ || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold' zstyle -s ':prezto:module:history-substring-search' globbing-flags \ 'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \ || HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i' if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS="${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" fi if ! zstyle -t ':prezto:module:history-substring-search' color; then unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND} fi if zstyle -t ':prezto:module:history-substring-search' fuzzy; then HISTORY_SUBSTRING_SEARCH_FUZZY=1 fi if zstyle -t ':prezto:module:history-substring-search' unique; then HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1 fi if zstyle -t ':prezto:module:history-substring-search' prefixed; then HISTORY_SUBSTRING_SEARCH_PREFIXED=1 fi # # Key Bindings # if [[ -n "$key_info" ]]; then # Emacs bindkey -M emacs "$key_info[Control]P" history-substring-search-up bindkey -M emacs "$key_info[Control]N" history-substring-search-down # Vi bindkey -M vicmd "k" history-substring-search-up bindkey -M vicmd "j" history-substring-search-down # Emacs and Vi for keymap in 'emacs' 'viins'; do bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down done unset keymap fi ================================================ FILE: modules/homebrew/README.md ================================================ # Homebrew Defines Homebrew specific environment variables and aliases. ## Variables Execute the following to list the environment variables loaded in the shell: ```sh brew shellenv ``` ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:homebrew:alias' skip 'yes' ``` ### Homebrew Core - `brewc` cleans outdated brews and their cached archives. - `brewi` installs a formula. - `brewL` lists installed formulae that are not dependencies of another installed formula. - `brewl` lists installed formulae. - `brewo` lists brews which have an update available. - `brews` searches for a formula. - `brewu` upgrades outdated formulae. - `brewx` uninstalls a formula. ### Homebrew Cask - `caski` installs a cask. - `caskl` lists installed casks. - `casko` lists casks which have an update available. - `casks` searches for a cask. - `casku` upgrades outdated casks. - `caskx` uninstalls a cask. ## Authors _The authors of this module should be contacted via the [issue tracker][1]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Griffin Yourick](https://github.com/tough-griff) [1]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/homebrew/init.zsh ================================================ # # Defines Homebrew aliases. # # Authors: # Sorin Ionescu # # Load dependencies. pmodload 'helper' # Return if requirements are not found. if ! is-darwin && ! is-linux; then return 1 fi # # Variables # # Load standard Homebrew shellenv into the shell session. # Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related # variables as they are already handled in standard zsh configuration. if (( $+commands[brew] )); then cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-shellenv-cache.zsh" if [[ "$commands[brew]" -nt "$cache_file" \ || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ || ! -s "$cache_file" ]]; then mkdir -p "$cache_file:h" # Cache the result. echo "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" >! "$cache_file" 2> /dev/null fi source "$cache_file" unset cache_file fi # # Aliases # # Homebrew if ! zstyle -t ':prezto:module:homebrew:alias' skip; then alias brewc='brew cleanup' alias brewi='brew install' alias brewL='brew leaves' alias brewl='brew list' alias brewo='brew outdated' alias brews='brew search' alias brewu='brew upgrade' alias brewx='brew uninstall' # Homebrew Cask alias caski='brew install --cask' alias caskl='brew list --cask' alias casko='brew outdated --cask' alias casks='brew search --cask' alias casku='brew upgrade --cask' alias caskx='brew uninstall --cask' fi ================================================ FILE: modules/macports/README.md ================================================ # MacPorts Defines MacPorts aliases and adds MacPorts directories to path variables. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:macports:alias' skip 'yes' ``` - `portc` cleans the files used to build ports. - `porti` installs a port. - `ports` searches for a port. - `portu` upgrades a port. - `portU` upgrades MacPorts, the ports collection, and outdated ports. - `portx` uninstalls a port. - `portX` uninstalls inactive ports. ## Authors _The authors of this module should be contacted via the [issue tracker][1]._ - [Matt Cable](https://github.com/curiousstranger) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/macports/init.zsh ================================================ # # Defines MacPorts aliases and adds MacPorts directories to path variables. # # Authors: # Matt Cable # Sorin Ionescu # # Load dependencies. pmodload 'helper' # Return if requirements are not found. if ! is-darwin; then return 1 fi # # Paths # # Set the list of directories that Zsh searches for programs. path=( /opt/local/{bin,sbin} $path ) # # Aliases # if ! zstyle -t ':prezto:module:macports:alias' skip; then alias portc='sudo port clean --all installed' alias porti='sudo port install' alias ports='port search' alias portU='sudo port selfupdate && sudo port upgrade outdated' alias portu='sudo port upgrade' alias portX='sudo port -u uninstall' alias portx='sudo port uninstall' fi ================================================ FILE: modules/node/README.md ================================================ # Node.js Provides utility functions for [Node.js][1], loads the Node Version Manager, and enables [_npm_][2] completion. This module must be loaded _before_ the _`completion`_ module so that the provided completion definitions are loaded. ## nodenv [_nodenv_][5] does one thing well - it is concerned solely with switching Node versions. It is simple and predictable, Just Works, and is rock solid in production. nodenv is forked from the popular [_rbenv_][6]. This will be loaded automatically if nodenv is installed in `$NODENV_ROOT`, _`$XDG_CONFIG_HOME/nodenv`_, _`~/.nodenv`_, or `nodenv` is on the path. ## nvm [_nvm_][7] allows for managing multiple, isolated Node.js installations in the home directory. This will be loaded automatically if nvm is installed in `$NVM_DIR`, _`$XDG_CONFIG_HOME/nvm`_, _`~/.nvm`_, or is installed with homebrew. ## Variables - `N_PREFIX` stores the path to [_n_][8] cache. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:node:alias' skip 'yes' ``` ### npm - `npmi` install a package. - `npml` list installed packages. - `npmo` check for outdated packages. - `npmp` publish a package. - `npmP` remove extraneous packages. - `npmr` run arbitrary package scripts. - `npms` search for packages. - `npmt` test a package. - `npmu` update packages. - `npmx` uninstalls a package. - `npmci` install a project with a clean slate. - `npmcit` install a project with a clean slate and run tests. - `npmit` install package(s) and run tests. ## Functions - `node-doc` opens the Node.js online [API documentation][3] in the default browser. - `node-info` exposes information about the Node.js environment via the `$node_info` associative array. ## Theming To display the version number of the current Node.js version, define the following style inside the `prompt_name_setup` function. ```sh # %v - Node.js version. zstyle ':prezto:module:node:info:version' format 'version:%v' ``` Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call `node-info` in `prompt_name_preexec` hook function. ## Authors _The authors of this module should be contacted via the [issue tracker][4]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Zeh Rizzatti](https://github.com/zehrizzatti) - [Indrajit Raychaudhuri](https://github.com/indrajitr) [1]: http://nodejs.org [2]: http://npmjs.org [3]: http://nodejs.org/api [4]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/nodenv/nodenv [6]: https://github.com/sstephenson/rbenv [7]: https://github.com/nvm-sh/nvm [8]: https://github.com/tj/n ================================================ FILE: modules/node/functions/_grunt ================================================ #compdef grunt #autoload # # Grunt completion, delegating to grunt to do all the completion work. # # Authors: # Indrajit Raychaudhuri # if (( $+commands[grunt] )); then eval "$(grunt --completion=zsh)" _grunt_completion "$@" fi ================================================ FILE: modules/node/functions/_gulp ================================================ #compdef gulp #autoload # # Gulp completion, delegating to gulp to do all the completion work. # # Authors: # Indrajit Raychaudhuri # if (( $+commands[gulp] )); then eval "$(gulp --completion=zsh)" _gulp_completion "$@" fi ================================================ FILE: modules/node/functions/node-doc ================================================ # # Opens the Node.js online API documentation in the default browser. # # Authors: # Sorin Ionescu # # function node-doc { if [[ -z "$BROWSER" ]]; then print "$0: no web browser defined" >&2 return 1 fi # TODO: Make the sections easier to use. "$BROWSER" "https://nodejs.org/docs/${$(node --version 2> /dev/null)/%-*}/api/all.html#${1}" # } ================================================ FILE: modules/node/functions/node-info ================================================ # # Exposes information about the Node.js environment via the $node_info # associative array. # # Authors: # Zeh Rizzatti # # function node-info { local version local version_format local version_formatted unset node_info typeset -gA node_info if (( $+commands[nodenv] )); then version="${${$(nodenv version)#v}[(w)0]}" elif (( $+functions[nvm_version] )); then version="${$(nvm_version)#v}" elif (( $+commands[node] )) ; then version="${$(node -v)#v}" fi if [[ "$version" != (none|system) ]]; then zstyle -s ':prezto:module:node:info:version' format 'version_format' zformat -f version_formatted "$version_format" "v:$version" node_info[version]="$version_formatted" fi # } ================================================ FILE: modules/node/init.zsh ================================================ # # Configures Node local installation, loads version managers, and defines # variables and aliases. # # Authors: # Sorin Ionescu # Zeh Rizzatti # Indrajit Raychaudhuri # # Possible lookup locations for manually installed nodenv and nvm. local_nodenv_paths=({$NODENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}nodenv}/bin/nodenv(N)) local_nvm_paths=({$NVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}nvm}/nvm.sh(N)) # Load manually installed or package manager installed nodenv into the shell # session. if (( $#local_nodenv_paths || $+commands[nodenv] )); then # Ensure manually installed nodenv is added to path when present. [[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path) eval "$(nodenv init - zsh)" # Load manually installed nvm into the shell session. elif (( $#local_nvm_paths )); then source "$local_nvm_paths[1]" --no-use # Load package manager installed nvm into the shell session. elif (( $+commands[brew] )) \ && [[ -d "${nvm_path::="$(brew --prefix 2> /dev/null)"/opt/nvm}" ]]; then source "$nvm_path/nvm.sh" --no-use fi unset local_n{odenv,vm}_paths nvm_path # Return if requirements are not found. if (( ! $+commands[node] && ! $#functions[(i)n(odenv|vm)] )); then return 1 fi # # Variables # N_PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}/n" # The path to 'n' cache. # # Aliases # if ! zstyle -t ':prezto:module:node:alias' skip; then # npm alias npmi='npm install' alias npml='npm list' alias npmo='npm outdated' alias npmp='npm publish' alias npmP='npm prune' alias npmr='npm run' alias npms='npm search' alias npmt='npm test' alias npmu='npm update' alias npmx='npm uninstall' alias npmci='npm ci' alias npmcit='npm cit' alias npmit='npm it' fi ================================================ FILE: modules/ocaml/README.md ================================================ # OCaml Initializes [OCaml][1] package management. ## OPAM [OPAM][2] is a package manager for OCaml. This module enables local package installation with OPAM by extending the relevant path and OCaml variables. ### Usage Install packages to your local package directory with `opam install`. ## Authors _The authors of this module should be contacted via the [issue tracker][3]._ - [Sebastian Wiesner](https://github.com/lunaryorn) [1]: https://ocaml.org/ [2]: http://opam.ocamlpro.com/ [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/ocaml/init.zsh ================================================ # # Initializes OCaml package management. # # Authors: # Sebastian Wiesner # # Return if requirements are not found. if [[ ! -f "$HOME/.opam/opam-init/init.zsh" ]]; then return 1 fi # Initialize OPAM. source "$HOME/.opam/opam-init/init.zsh" ================================================ FILE: modules/osx/README.md ================================================ # OSX Defines [macOS][1] aliases and functions. This module must be loaded _before_ the [_`completion`_][2] module so that the provided completion definitions are loaded automatically by _`completion`_ module. ## Settings ### Dash Keyword To change the keyword used by `mand` to open man pages in [_Dash.app_][3] from its default value of 'manpages', add the following line in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and replace the **keyword** with the one configured in [_Dash.app_][3]. ```sh zstyle ':prezto:module:osx:man' dash-keyword 'keyword' ``` ## Aliases - `cdf` changes the current working director to the current _Finder_ directory. - `pushdf` pushes the current working directory onto the directory queue and changes the current working director to the current _Finder_ directory. ## Functions - `mand` opens _man_ pages in [_Dash.app_][3]. - `manp` opens _man_ pages in _Preview.app_. - `pfd` prints the current _Finder_ directory. - `pfs` prints the current _Finder_ selection. - `tab` creates a new tab (works in both _Terminal_ and [_iTerm.app_][4]). - `ql` previews files in Quick Look. - `osx-rm-dir-metadata` deletes _`.DS_Store`_, _`__MACOSX`_ cruft. - `osx-ls-download-history` displays the macOS download history. - `osx-rm-download-history` deletes the macOS download history. ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://www.apple.com/macos/ [2]: ../completion#readme [3]: https://kapeli.com/dash [4]: https://www.iterm2.com/ [5]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/osx/functions/_mand_manp ================================================ #compdef mand manp #autoload # # Completes mand and manp. # # Authors: # Sorin Ionescu # _man ================================================ FILE: modules/osx/functions/mand ================================================ # # Opens man pages in Dash.app. # # Authors: # Sorin Ionescu # function mand { if (( $# > 0 )); then zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages' open "dash://$dashkw%3A$1" 2> /dev/null if (( $? != 0 )); then print "$0: Dash is not installed" >&2 break fi else print 'What manual page do you want?' >&2 fi unset dashkw } mand "$@" ================================================ FILE: modules/osx/functions/manp ================================================ # # Opens man pages in Preview.app. # # Authors: # Sorin Ionescu # function manp { local page if (( $# > 0 )); then for page in "$@"; do mandoc -T pdf "$(/usr/bin/man -w $page)" | open -fa Preview done else print 'What manual page do you want?' >&2 fi } manp "$@" ================================================ FILE: modules/osx/functions/osx-ls-download-history ================================================ # # Displays the macOS download history. # # Authors: # Sorin Ionescu # # function osx-ls-download-history { local db for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then sqlite3 "$db" 'SELECT LSQuarantineDataURLString FROM LSQuarantineEvent' fi done # } ================================================ FILE: modules/osx/functions/osx-rm-dir-metadata ================================================ # # Deletes .DS_Store and __MACOSX directories. # # Authors: # Sorin Ionescu # # function osx-rm-dir-metadata { find "${@:-$PWD}" \( \ -type f -name '.DS_Store' -o \ -type d -name '__MACOSX' \ \) -print0 | xargs -0 rm -rf # } ================================================ FILE: modules/osx/functions/osx-rm-download-history ================================================ # # Deletes the macOS download history. # # Authors: # Sorin Ionescu # # function osx-rm-download-history { local db for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then sqlite3 "$db" 'DELETE FROM LSQuarantineEvent; VACUUM' fi done # } ================================================ FILE: modules/osx/functions/pfd ================================================ # # Displays the current Finder.app directory. # # Authors: # Sorin Ionescu # # function pfd { osascript 2> /dev/null < # # function pfs { osascript 2>&1 < # # function ql { if (( $# > 0 )); then qlmanage -p "$@" &> /dev/null fi # } ================================================ FILE: modules/osx/functions/tab ================================================ # # Opens a new Terminal.app/iTerm.app tab in the current directory. # # Authors: # Sorin Ionescu # # function tab { local command="cd \\\"$PWD\\\"" (( $# > 0 )) && command="${command}; $*" the_app=$( osascript 2> /dev/null < /dev/null < /dev/null < /dev/null <&2 return 1 fi done if (( $#files == 0 )); then print 'usage: trash ' >&2 return 64 # Match rm's return code. fi # Join file list with commas, and tell Finder to trash that list. local file_list="${(pj., .)files}" osascript 2>&1 > /dev/null -e "tell app \"Finder\" to move { "${file_list}" } to trash" # } ================================================ FILE: modules/osx/init.zsh ================================================ # # Defines macOS aliases and functions. # # Authors: # Sorin Ionescu # # Load dependencies. pmodload 'helper' # Return if requirements are not found. if ! is-darwin; then return 1 fi # # Aliases # # Changes directory to the current Finder directory. alias cdf='cd "$(pfd)"' # Pushes directory to the current Finder directory. alias pushdf='pushd "$(pfd)"' ================================================ FILE: modules/pacman/README.md ================================================ # Pacman Provides aliases and functions for the [Pacman][1] package manager and frontends. ## Settings It is possible to use a Pacman frontend with the pacman aliases provided by this package as long as that frontend supports the same command line options (The [AUR Helpers][2] page has a good comparison which lists if the command line options are pacman compatible). Please note that installing packages with an AUR Helper is not officially supported by Archlinux. It is currently recommended to manually build AUR packages using the [provided instructions][3]. The [aurutils][4] project has a set of small utilities to make this easier. To enable a different Pacman frontend, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `''` with the name of the preferred frontend. ```sh zstyle ':prezto:module:pacman' frontend '' ``` ## Aliases ### Pacman - `pac` is short for `pacman`. - `paci` installs packages from repositories. - `pacI` installs packages from files. - `pacx` removes packages and unneeded dependencies. - `pacX` removes packages, their configuration, and unneeded dependencies. - `pacq` displays information about a package from the repositories. - `pacQ` displays information about a package from the local database. - `pacs` searches for packages in the repositories. - `pacS` searches for packages in the local database. - `pacu` synchronizes the local package and Arch Build System (requires `abs`) databases against the repositories. - `pacU` synchronizes the local package database against the repositories then upgrades outdated packages. - `pacman-list-orphans` lists orphan packages. - `pacman-remove-orphans` removes orphan packages. ### Frontends ## Functions - `aurget` clone an aur package. - `pacman-list-explicit` lists explicitly installed pacman packages. - `pacman-list-disowned` lists pacman disowned files. ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Benjamin Boudreau](https://github.com/dreur) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://www.archlinux.org/pacman/ [2]: https://wiki.archlinux.org/title/AUR_helpers#Comparison_tables [3]: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages [4]: https://github.com/AladW/aurutils [5]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/pacman/functions/pacman-list-disowned ================================================ # # Lists Pacman disowned files. # # Authors: # Benjamin Boudreau # Sorin Ionescu # # function pacman-list-disowned { local tmp="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pacman-disowned-$$" local db="$tmp/db" local fs="$tmp/fs" mkdir -p "$tmp" trap 'rm -rf "$tmp"' EXIT pacman --quiet --query --list | sort --unique > "$db" find /bin /etc /lib /sbin /usr \ ! -name lost+found \ \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" comm -23 "$fs" "$db" # } ================================================ FILE: modules/pacman/functions/pacman-list-explicit ================================================ # # Lists explicitly installed Pacman packages. # # Authors: # Benjamin Boudreau # Sorin Ionescu # # function pacman-list-explicit { pacman --query --explicit --info \ | awk ' BEGIN { FS=":" } /^Name/ { print $2 } /^Description/ { print $2 } ' # } ================================================ FILE: modules/pacman/init.zsh ================================================ # # Defines Pacman aliases. # # Authors: # Benjamin Boudreau # Sorin Ionescu # # Tips: # https://wiki.archlinux.org/index.php/Pacman_Tips # # Return if requirements are not found. if (( ! $+commands[pacman] )); then return 1 fi # # Frontend # # Get the Pacman frontend. zstyle -s ':prezto:module:pacman' frontend '_pacman_frontend' if (( $+commands[$_pacman_frontend] )); then alias pacman="$_pacman_frontend" else _pacman_frontend='pacman' _pacman_sudo='sudo ' fi # # Aliases # # Pacman. alias pac="${_pacman_frontend}" # Installs packages from repositories. alias paci="${_pacman_sudo}${_pacman_frontend} --sync" # Installs packages from files. alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade" # Removes packages and unneeded dependencies. alias pacx="${_pacman_sudo}${_pacman_frontend} --remove" # Removes packages, their configuration, and unneeded dependencies. alias pacX="${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive" # Displays information about a package from the repositories. alias pacq="${_pacman_frontend} --sync --info" # Displays information about a package from the local database. alias pacQ="${_pacman_frontend} --query --info" # Searches for packages in the repositories. alias pacs="${_pacman_frontend} --sync --search" # Searches for packages in the local database. alias pacS="${_pacman_frontend} --query --search" # Lists orphan packages. alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired" # Removes orphan packages. alias pacman-remove-orphans="${_pacman_sudo}${_pacman_frontend} --remove --recursive \$(${_pacman_frontend} --quiet --query --deps --unrequired)" # Synchronizes the local package and Arch Build System databases against the # repositories using the asp tool. if (( $+commands[asp] )); then alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo asp update" else alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh" fi # Synchronizes the local package database against the repositories then # upgrades outdated packages. alias pacU="${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade" function aurget { local target_dir="$1" if [[ -n "$2" ]]; then target_dir="$2" fi git clone "https://aur.archlinux.org/$1" "$target_dir" } unset _pacman_{frontend,sudo} ================================================ FILE: modules/perl/README.md ================================================ # Perl Enables local [Perl][1] module installation on macOS and defines aliases. ## Local Module Installation Perl versions older than 5.14 do not support the local installation of Perl modules natively. This module allows for local installation of Perl modules on macOS in _`~/Library/Perl/5.12`_ by altering the environment. ### Usage For Perl versions older than 5.14, install _`local::lib`_. ```console curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz tar xvf local-lib-1.008004.tar.gz cd local-lib-1.008004 perl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12 make && make test && make install ``` Install _cpanminus_: ```console curl -L http://cpanmin.us | perl - --self-upgrade ``` ## Perlbrew An alternative to the above is to use [Perlbrew][2], which allows for the management of multiple, isolated Perl installations in the home directory. ## plenv Yet another alternative is [_plenv_][3]. This is inspired from _rbenv_ and enables switching between multiple binary installations. The subcommands of _plenv_ is similar with _rbenv_. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:perl:alias' skip 'yes' ``` ### General - `pl` is short for `perl`. - `pld` looks up Perl documentation (`perldoc`). - `ple` executes a one line program in a loop (`perl -wlne`). ### Perlbrew (plb) - `plb` manages Perl environments. - `plba` lists available Perl versions. - `plbi` installs a Perl version. - `plbl` lists installed Perl versions. - `plbo` temporarily turns off Perlbrew. - `plbO` turns off Perlbrew. - `plbs` switches to a Perl version. - `plbu` uninstalls a Perl version. - `plbx` temporarily sets the Perl version to use. ### plenv (plv) - `plv` manages Perl environments. - `plvc` List all available plenv commands. - `plvl` Set or show the local application-specific Perl version. - `plvg` Set or show the global Perl version. - `plvs` Set or show the shell-specific Perl version. - `plvi` Install a Perl version using the perl-build plugin. - `plvu` Uninstall a specific Perl version. - `plvr` Rehash plenv shims (run this after installing executables). - `plvv` Show the current Perl version and its origin. - `plvV` List all Perl versions available to plenv. - `plvw` Display the full path to an executable. - `plvW` List all Perl versions that contain the given executable. - `plvm` List cpan modules in current perl. - `plvM` Migrate cpan modules from other version. - `plvI` Install cpanm. ## Functions - `perl-info` exposes information about the Perl environment via the `$perl_info` associative array. ## Theming To display the name of the current Perl version in a prompt, define the following style in the `prompt_name_setup` function. ```sh # %v - perl version. zstyle ':prezto:module:perl:info:version' format 'version:%v' ``` Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call `perl-info` in the `prompt_name_precmd` hook function. ## Authors _The authors of this module should be contacted via the [issue tracker][4]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://www.perl.org [2]: https://perlbrew.pl [3]: https://github.com/tokuhirom/plenv [4]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/perl/functions/perl-info ================================================ # # Exposes information about the Perl environment via the $perl_info associative # array. # # Authors: # JINNOUCHI Yasushi # # function perl-info { local version local version_format local version_formatted # Clean up previous $perl_info. unset perl_info typeset -gA perl_info if (( $+commands[perlbrew] )); then version="${PERLBREW_PERL##*perl-}" elif (( $+commands[plenv] )); then version=$(plenv version-name) elif (( $+commands[perl] )); then version=$(perl -e 'printf "%vd", $^V') fi # Format version. if [[ -n "$version" ]]; then zstyle -s ':prezto:module:perl:info:version' format 'version_format' zformat -f version_formatted "$version_format" "v:$version" perl_info[version]="$version_formatted" fi # } ================================================ FILE: modules/perl/init.zsh ================================================ # # Enables local Perl module installation on macOS and defines aliases. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[perl] )); then return 1 fi # Load dependencies. pmodload 'helper' # # Load Perlbrew or plenv # # Load Perlbrew into the shell session. if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc" ]]; then source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc" # Load Perlbrew completion. if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash" ]]; then source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash" fi # Load manually installed plenv into the shell session. elif [[ -s "$HOME/.plenv/bin/plenv" ]]; then path=("$HOME/.plenv/bin" $path) eval "$(plenv init - --no-rehash zsh)" # Load package manager installed plenv into the shell session. elif (( $+commands[plenv] )); then eval "$(plenv init - --no-rehash zsh)" fi # # Local Module Installation # if is-darwin; then # Perl is slow; cache its output. cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/perl-cache.zsh" perl_path="$HOME/Library/Perl/5.12" if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then if [[ "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" || ! -s "$cache_file" ]]; then mkdir -p "$cache_file:h" perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file" fi source "$cache_file" fi unset cache_file perl_path fi # # Aliases # if ! zstyle -t ':prezto:module:perl:alias' skip; then # General alias pl='perl' alias pld='perldoc' alias ple='perl -wlne' # Perlbrew if (( $+commands[perlbrew] )); then alias plb='perlbrew' alias plba='perlbrew available' alias plbi='perlbrew install' alias plbl='perlbrew list' alias plbo='perlbrew off' alias plbO='perlbrew switch-off' alias plbs='perlbrew switch' alias plbu='perlbrew use' alias plbx='perlbrew uninstall' elif (( $+commands[plenv] )); then alias plv='plenv' alias plvc='plenv commands' alias plvl='plenv local' alias plvg='plenv global' alias plvs='plenv shell' alias plvi='plenv install' alias plvu='plenv uninstall' alias plvr='plenv rehash' alias plvv='plenv version' alias plvV='plenv versions' alias plvw='plenv which' alias plvW='plenv whence' alias plvm='plenv list-modules' alias plvM='plenv migrate-modules' alias plvI='plenv install-cpanm' fi fi ================================================ FILE: modules/prompt/README.md ================================================ # Prompt Loads prompt [themes][1]. ## Settings ### Prompt 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 '' ``` ### Prompt Display Length To change working directory prompt display length from 'short', set the following to 'long' (without `~` expansion) or 'full' (with `~` expansion) in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:prompt' pwd-length 'short' ``` ### Display Return Value Some prompts display the return value in the prompt. If a prompt has support, this can be disabled with the following snippet. ```sh zstyle ':prezto:module:prompt' show-return-val 'no' ``` ## 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_ directory. ### Required Variables To ensure that your function works with the editor-info module you'll need to set the following variable in _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' ``` This is to ensure compatibility with outside prompts, while allowing prezto and prezto-compatible prompts to take full advantage of the editor module. This should be set in the `prompt_name_setup` function after you've added any additional hooks with `add-zsh-hook precmd prompt_name_precmd`. See below for additional information about functions and hooks. ### Theme Functions There are three theme functions, a setup function, a help function, and a preview function. The setup function **must** always be defined. The help function and the preview functions are optional. #### `prompt_name_setup` This function is called by the `prompt` function to install the theme. This function may define other functions as necessary to maintain the prompt, including a function that displays help or a function used to preview it. **Do not call this function directly.** The most basic example of this function can be seen below. ```sh function prompt_name_setup { PROMPT='%m%# ' RPROMPT='' } ``` #### `prompt_name_help` If the `prompt_name_setup` function is customizable via parameters, a help function **should** be defined. The user will access it via `prompt -h name`. The most basic example of this function can be seen below. ```sh function prompt_name_help { cat <] [] where the color is for the left-hand prompt. EOH } ``` #### `prompt_name_preview` If the `prompt_name_setup` function is customizable via parameters, a preview function **should** be defined. The user will access it via `prompt -p name`. The most basic example of this function can be seen below. ```sh function prompt_name_preview { if (( $# > 0 )); then prompt_preview_theme theme "$@" else prompt_preview_theme theme red green blue print prompt_preview_theme theme yellow magenta black fi } ``` ### Hook Functions There are many Zsh [hook][2] functions, but mostly the _precmd_ hook will be used. #### `prompt_name_precmd` This hook is called before the prompt is displayed and is useful for getting information to display in a prompt. 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 automatically registered by the `prompt` function.** The most basic example of this function can be seen below. ```sh function prompt_name_precmd { if (( $+functions[git-info] )); then git-info fi } ``` ## Troubleshooting ### Fonts aren't displaying properly On most systems, themes which use special characters need to have a patched font 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 _The authors of this module should be contacted via the [issue tracker][3]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [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]: https://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements [5]: https://powerline.readthedocs.io/en/latest/installation.html#fonts-installation ================================================ FILE: modules/prompt/functions/prompt-pwd ================================================ # # Prompt setup function commonly used by prompt themes. # # Authors: # Sorin Ionescu # # function prompt-pwd { setopt localoptions extendedglob local current_pwd="${PWD/#$HOME/~}" local ret_directory if [[ "$current_pwd" == (#m)[/~] ]]; then ret_directory="$MATCH" unset MATCH elif zstyle -m ':prezto:module:prompt' pwd-length 'full'; then ret_directory=${PWD} elif zstyle -m ':prezto:module:prompt' pwd-length 'long'; then ret_directory=${current_pwd} else ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}" fi unset current_pwd print "$ret_directory" # } # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_cloud_setup ================================================ # # A minimal two-color theme. # # Authors: # Kevin Laude # # Features: # - One line, left aligned. # - 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 ${ZDOTDIR:-$HOME}/.zpreztorc). # - Displays a character at the end of the prompt when in a git project with # "dirty" files. # # Usage: # This prompt's prefix symbol and colors are customizable: # prompt cloud [] [] [] # # In ${ZDOTDIR:-$HOME}/.zpreztorc: # zstyle ':prezto:module:prompt' theme 'cloud' \ # [''] \ # [''] \ # [''] # # If these options are not provided, the symbol defaults to "☁" with colors # cyan and green. # # Screenshots: # http://i.imgur.com/mJCZ8rE.png # # Note: # This is a port of the oh-my-zsh cloud theme, originally written by Phillip # Ridlen and Mark Drago # # Load dependencies. pmodload 'helper' function prompt_cloud_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Get Git repository information. if (( $+functions[git-info] )); then git-info fi } function prompt_cloud_help { cat <] [] [] In ${ZDOTDIR:-$HOME}/.zpreztorc: zstyle ':prezto:module:prompt' theme 'cloud' [''] [''] [''] If these options are not provided, the symbol defaults to ☁ with colors cyan and green. EOT } function prompt_cloud_preview { if (( $# > 0 )); then prompt_preview_theme 'cloud' "$@" else prompt_preview_theme 'cloud' print prompt_preview_theme 'cloud' "✯" print prompt_preview_theme 'cloud' ">" "yellow" "red" fi } function prompt_cloud_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Set the theme prefix to a cloud or to the user's given characters. if [[ -n "$1" ]]; then prefix="$1" else prefix='☁' fi # Assign colors. if [[ -n "$2" ]]; then primary_color="$2" else primary_color='cyan' fi if [[ -n "$3" ]]; then secondary_color="$3" else secondary_color='green' fi # Load required functions. autoload -Uz add-zsh-hook # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_cloud_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f" zstyle ':prezto:module:git:info:clean' format "%B%F{$secondary_color}]%f%b" zstyle ':prezto:module:git:info:branch' format "%%B%F{$secondary_color}[%f%%b%%B%F{$primary_color}%b%f%%b" zstyle ':prezto:module:git:info:keys' format \ 'prompt' '%b%C%D' \ 'rprompt' '' # Define prompts. PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} ' RPROMPT='' } prompt_cloud_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_damoekri_setup ================================================ # # A simple theme inspired by the Sorin and PeepCode themes. # # Authors: # Daniel Møller Kristensen # # Screenshots: # http://i.imgur.com/AX9HnPF.png # # Load dependencies. pmodload 'helper' prompt_damoekri_precmd() { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Format PWD. _prompt_damoekri_pwd=$(prompt-pwd) # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Ruby version information. if (( $+functions[ruby-info] )); then ruby-info fi } function prompt_damoekri_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook # Add hook for calling git-info and ruby-info before each command. add-zsh-hook precmd prompt_damoekri_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:action' format ':%F{magenta}%s%f' zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' zstyle ':prezto:module:git:info:clean' format ' %F{green}✔%f' zstyle ':prezto:module:git:info:dirty' format ' %F{red}✗%f' zstyle ':prezto:module:git:info:commit' format '%F{blue}%.7c%f' zstyle ':prezto:module:git:info:position' format '%F{blue}%p%f' zstyle ':prezto:module:git:info:keys' format \ 'rprompt' ' $(coalesce "%b" "%p" "%c")%s%C%D' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f' # Define prompts. PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} ' RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}' } prompt_damoekri_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_giddie_setup ================================================ # # A colorful, friendly, multiline theme with some handy features. # # Authors: # Paul Gideon Dann # Sorin Ionescu # # Features: # - Simple VCS branch, staged, and unstaged indication. # - Prompt character is different in a VCS repository. # - Last command exit status is displayed when non-zero. # # Screenshots: # http://i.imgur.com/rCo3S.png # function +vi-set_novcs_prompt_symbol { _prompt_giddie_symbol=')' } function +vi-set_vcs_prompt_symbol { _prompt_giddie_symbol='±' } function +vi-git_precmd { # Check for untracked files, since vcs_info does not. if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then hook_com[unstaged]+='%F{green}?%f' fi } function prompt_giddie_precmd { # Replace '/home/' with '~'. _prompt_giddie_pwd="${PWD/#$HOME/~}" vcs_info } function prompt_giddie_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz vcs_info autoload -Uz add-zsh-hook # Add hook to set up prompt parameters before each command. add-zsh-hook precmd prompt_giddie_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f' zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f' # Set vcs_info parameters. zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u' zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f' zstyle ':vcs_info:*' stagedstr '%F{green}+%f' zstyle ':vcs_info:*' unstagedstr '%F{green}!%f' # Set vcs_info hooks. # NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd # function, and no 'no-vcs' hook. zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol # Define prompts. PROMPT='%(?..%F{red}%B-> [%?]%b%f )%F{magenta}%n%f@%F{yellow}%m%f|%F{green}${_prompt_giddie_pwd}%f${vcs_info_msg_0_} %F{blue}${_prompt_giddie_symbol}%f ' RPROMPT='${editor_info[keymap]}' SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? ' } prompt_giddie_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_kylewest_setup ================================================ # # A single line theme with Git information on the left and Ruby on the right. # # Authors: # Kyle West # Sorin Ionescu # # Features: # - Indicates dirty Git repository. # - Indicates the Ruby version. # - Indicates vi modes. # # Screenshots: # http://i.imgur.com/dCwhynn.png # function prompt_kylewest_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Ruby information. if (( $+functions[ruby-info] )); then ruby-info fi } function prompt_kylewest_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_kylewest_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}❯%f%b" zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}❮%f%b" # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'no' zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f' zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b' zstyle ':prezto:module:git:info:indexed' format ' ' zstyle ':prezto:module:git:info:unindexed' format ' ' zstyle ':prezto:module:git:info:untracked' format ' ' zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D ' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f' # Define prompts. PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} ' RPROMPT='${ruby_info[version]}' } prompt_kylewest_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_minimal_setup ================================================ # # A monochrome theme that displays basic information. # # Authors: # Brian Tse # Sorin Ionescu # # Screenshots: # http://i.imgur.com/zLZNK.png # function +vi-git_status { # Check for untracked files or updated submodules since vcs_info does not. if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then hook_com[unstaged]='%F{red}●%f' fi } function prompt_minimal_precmd { vcs_info } function prompt_minimal_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz vcs_info # Add hook for calling vcs_info before each command. add-zsh-hook precmd prompt_minimal_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set vcs_info parameters. zstyle ':vcs_info:*' enable bzr git hg svn zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' stagedstr '%F{green}●%f' zstyle ':vcs_info:*' unstagedstr '%F{yellow}●%f' zstyle ':vcs_info:*' formats ' - [%b%c%u]' zstyle ':vcs_info:*' actionformats " - [%b%c%u|%F{cyan}%a%f]" zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f' zstyle ':vcs_info:git*+set-message:*' hooks git_status # Define prompts. PROMPT='%2~${vcs_info_msg_0_} » ' RPROMPT='' } function prompt_minimal_preview { local +h PROMPT='' local +h RPROMPT='' local +h SPROMPT='' editor-info 2> /dev/null prompt_preview_theme 'minimal' } prompt_minimal_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_nicoulaj_setup ================================================ # # A simple theme that displays only relevant information. # # Authors: # Julien Nicoulaud # Sorin Ionescu # # Features: # - One line. # - VCS information in the right prompt. # - Only shows the path on the left prompt by default. # - Crops the path to a defined length and only shows the path relative to # the current VCS repository root. # - Uses a different color depending on if the last command succeeded/failed. # - Shows user@hostname if connected through SSH. # - Shows if logged in as root or not. # # Screenshots: # http://i.imgur.com/Xe1bu.png # function prompt_nicoulaj_precmd { vcs_info } function prompt_nicoulaj_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz vcs_info # Add hook for calling vcs_info before each command. add-zsh-hook precmd prompt_nicoulaj_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Customizable parameters. local max_path_chars=30 local user_char='❯' local root_char='❯❯❯' local success_color='%F{071}' local failure_color='%F{124}' local vcs_info_color='%F{242}' # Set vcs_info parameters. zstyle ':vcs_info:*' enable bzr git hg svn zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' unstagedstr '!' zstyle ':vcs_info:*' stagedstr '+' zstyle ':vcs_info:*' actionformats "%S" "%r/%s/%b %u%c (%a)" zstyle ':vcs_info:*' formats "%S" "%r/%s/%b %u%c" zstyle ':vcs_info:*' nvcsformats "%~" "" # Define prompts. PROMPT="%(?.${success_color}.${failure_color})${SSH_TTY:+[%n@%m]}%B%${max_path_chars}<...<"'${vcs_info_msg_0_%%.}'"%<<%(!.${root_char}.${user_char})%b%f " RPROMPT="${vcs_info_color}"'${vcs_info_msg_1_}'"%f" } prompt_nicoulaj_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_paradox_setup ================================================ # # A two-line, Powerline-inspired theme that displays contextual information. # # This theme requires a patched Powerline font, get them from # https://github.com/Lokaltog/powerline-fonts. # # Authors: # Isaac Wolkerstorfer # Jeff Sandberg # Sorin Ionescu # Patrick Bos # # Screenshots: # http://i.imgur.com/0XIWX.png # # Load dependencies. pmodload 'helper' # Define variables. _prompt_paradox_current_bg='NONE' _prompt_paradox_segment_separator='' _prompt_paradox_start_time=$SECONDS function prompt_paradox_start_segment { local bg fg [[ -n "$1" ]] && bg="%K{$1}" || bg="%k" [[ -n "$2" ]] && fg="%F{$2}" || fg="%f" if [[ "$_prompt_paradox_current_bg" != 'NONE' && "$1" != "$_prompt_paradox_current_bg" ]]; then print -n " $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg " else print -n "$bg$fg " fi _prompt_paradox_current_bg="$1" [[ -n "$3" ]] && print -n "$3" } function prompt_paradox_end_segment { if [[ -n "$_prompt_paradox_current_bg" ]]; then print -n " %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator" else print -n "%k" fi print -n "%f" _prompt_paradox_current_bg='' } function prompt_paradox_build_prompt { prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f' prompt_paradox_start_segment blue black '$_prompt_paradox_pwd' if [[ -n "$git_info" ]]; then prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}' fi if [[ -n "$python_info" ]]; then prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}' fi prompt_paradox_end_segment } prompt_paradox_print_elapsed_time() { local end_time=$(( SECONDS - _prompt_paradox_start_time )) local hours minutes seconds remainder if (( end_time >= 3600 )); then hours=$(( end_time / 3600 )) remainder=$(( end_time % 3600 )) minutes=$(( remainder / 60 )) seconds=$(( remainder % 60 )) print -P "%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b" elif (( end_time >= 60 )); then minutes=$(( end_time / 60 )) seconds=$(( end_time % 60 )) print -P "%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b" elif (( end_time > 10 )); then print -P "%B%F{green}>>> elapsed time ${end_time}s%b" fi } function prompt_paradox_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Format PWD. _prompt_paradox_pwd=$(prompt-pwd) # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Python environment information. if (( $+functions[python-info] )); then python-info fi # Calculate and print the elapsed time. prompt_paradox_print_elapsed_time } function prompt_paradox_preexec { _prompt_paradox_start_time="$SECONDS" } function prompt_paradox_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook # Add hook for calling git-info before each command. add-zsh-hook preexec prompt_paradox_preexec add-zsh-hook precmd prompt_paradox_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b' zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f' zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:action' format ' ⁝ %s' zstyle ':prezto:module:git:info:added' format ' ✚' zstyle ':prezto:module:git:info:ahead' format ' ⬆' zstyle ':prezto:module:git:info:behind' format ' ⬇' zstyle ':prezto:module:git:info:branch' format ' %b' zstyle ':prezto:module:git:info:commit' format '➦ %.7c' zstyle ':prezto:module:git:info:deleted' format ' ✖' zstyle ':prezto:module:git:info:dirty' format ' ⁝' zstyle ':prezto:module:git:info:modified' format ' ✱' zstyle ':prezto:module:git:info:position' format '%p' zstyle ':prezto:module:git:info:renamed' format ' ➙' zstyle ':prezto:module:git:info:stashed' format ' S' zstyle ':prezto:module:git:info:unmerged' format ' ═' zstyle ':prezto:module:git:info:untracked' format ' ?' zstyle ':prezto:module:git:info:keys' format \ 'ref' '$(coalesce "%b" "%p" "%c")' \ 'status' '%s%D%A%B%S%a%d%m%r%U%u' # %v - virtualenv name. zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v' # Define prompts. PROMPT=' ${(e)$(prompt_paradox_build_prompt)} ${editor_info[keymap]} ' RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f' SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' } prompt_paradox_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_peepcode_setup ================================================ # # A simple theme from PeepCode. # http://peepcode.com/blog/2012/my-command-line-prompt # # Authors: # Geoffrey Grosenbach # Sorin Ionescu # # Screenshots: # http://i.imgur.com/LhgmW.png # function prompt_peepcode_precmd { # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Ruby information. if (( $+functions[ruby-info] )); then ruby-info fi } function prompt_peepcode_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz vcs_info # Add a hook for calling info functions before each command. add-zsh-hook precmd prompt_peepcode_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'no' zstyle ':prezto:module:git:info:action' format ' +%s' zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f' zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f' zstyle ':prezto:module:git:info:indexed' format ' ' zstyle ':prezto:module:git:info:unindexed' format ' ' zstyle ':prezto:module:git:info:untracked' format ' ' zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f' zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format ' %F{white}%v%f' # Define prompts. PROMPT=" %~ %(?.%F{green}${1:-☻ }%f.%F{red}${1:-☻ }%f) " RPROMPT='${ruby_info[version]}${git_info[rprompt]}' } function prompt_peepcode_help { cat <] If this option is not provided, the symbol defaults to ☻. EOH } function prompt_peepcode_preview { local +h PROMPT='%# ' local +h RPROMPT='' local +h SPROMPT='' if (( $# > 0 )); then prompt_preview_theme 'peepcode' "$@" else prompt_preview_theme 'peepcode' print prompt_preview_theme 'peepcode' "❯" print prompt_preview_theme 'peepcode' "$" fi } prompt_peepcode_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_skwp_setup ================================================ # # A single line theme with Git information on the left and Ruby on the right. # # Authors: # Steve Losh # Bart Trojanowski # Brian Carper # steeef # Sorin Ionescu # Yan Pritzker # # Screenshots: # http://i.imgur.com/gLgVp6Y.png # function prompt_skwp_precmd { # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Ruby information. if (( $+functions[ruby-info] )); then ruby-info fi } function prompt_skwp_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook # Add hook to set up prompt parameters before each command. add-zsh-hook precmd prompt_skwp_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Use extended color pallete if available. if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then _prompt_skwp_colors=( "%F{81}" # Turquoise "%F{166}" # Orange "%F{135}" # Purple "%F{161}" # Hotpink "%F{118}" # Limegreen ) else _prompt_skwp_colors=( "%F{cyan}" "%F{yellow}" "%F{magenta}" "%F{red}" "%F{green}" ) fi # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:branch' format "${_prompt_skwp_colors[1]}%b%f" zstyle ':prezto:module:git:info:added' format "${_prompt_skwp_colors[5]}●%f" zstyle ':prezto:module:git:info:deleted' format "${_prompt_skwp_colors[2]}●%f" zstyle ':prezto:module:git:info:modified' format "${_prompt_skwp_colors[4]}●%f" zstyle ':prezto:module:git:info:untracked' format "${_prompt_skwp_colors[3]}●%f" zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format '[%v]' # Define prompts. PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+${(e)git_info[prompt]}}'"$ " RPROMPT='%F{blue}${ruby_info[version]}' } prompt_skwp_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_smiley_setup ================================================ # # A simple theme that displays: # - Python virtual environment. # - Git branch. # - Git state. # - Last command exit state (smiley/X). # # Authors: # Nadav Shatz # # Screenshots: # http://i.imgur.com/ijycV6n.png # # Load dependencies. pmodload 'helper' function prompt_smiley_precmd { unsetopt XTRACE KSH_ARRAYS # Get Git repository information. if (( $+functions[git-info] )); then git-info fi # Get Python environment information. if (( $+functions[python-info] )); then python-info fi # Get Ruby version information. if (( $+functions[ruby-info] )); then ruby-info fi } function prompt_smiley_setup { unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_smiley_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' # Set python-info parameters. zstyle ':prezto:module:python:info:virtualenv' format '%F{yellow}[%v]%f ' # Set ruby-info parameters. zstyle ':prezto:module:ruby:info:version' format '%F{yellow}[%v]%f ' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' zstyle ':prezto:module:git:info:dirty' format '%%B%F{red} ±%f%%b' zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)' # Define prompts. PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) ' RPROMPT='${editor_info[overwrite]}${VIM:+" %B%F{green}V%f%b"}' SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' } prompt_smiley_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_sorin_setup ================================================ # # A simple theme that displays relevant, contextual information. # # Authors: # Sorin Ionescu # # Screenshots: # http://i.imgur.com/nrGV6pg.png # # # 16 Terminal Colors # -- --------------- # 0 black # 1 red # 2 green # 3 yellow # 4 blue # 5 magenta # 6 cyan # 7 white # 8 bright black # 9 bright red # 10 bright green # 11 bright yellow # 12 bright blue # 13 bright magenta # 14 bright cyan # 15 bright white # # Load dependencies. pmodload 'helper' function prompt_sorin_async_callback { case $1 in prompt_sorin_async_git) # We can safely split on ':' because it isn't allowed in ref names. IFS=':' read _git_target _git_post_target <<<"$3" # The target actually contains 3 space separated possibilities, so we need to # make sure we grab the first one. _git_target=$(coalesce ${(@)${(z)_git_target}}) if [[ -z "$_git_target" ]]; then # No git target detected, flush the git fragment and redisplay the prompt. if [[ -n "$_prompt_sorin_git" ]]; then _prompt_sorin_git='' zle && zle reset-prompt fi else # Git target detected, update the git fragment and redisplay the prompt. _prompt_sorin_git="${_git_target}${_git_post_target}" zle && zle reset-prompt fi ;; "[async]") # Code is 1 for corrupted worker output and 2 for dead worker. if [[ $2 -eq 2 ]]; then # Our worker died unexpectedly. typeset -g prompt_prezto_async_init=0 fi ;; esac } function prompt_sorin_async_git { cd -q "$1" if (( $+functions[git-info] )); then git-info print ${git_info[status]} fi } function prompt_sorin_async_tasks { # Initialize async worker. This needs to be done here and not in # prompt_sorin_setup so the git formatting can be overridden by other prompts. if (( !${prompt_prezto_async_init:-0} )); then async_start_worker prompt_sorin -n async_register_callback prompt_sorin prompt_sorin_async_callback typeset -g prompt_prezto_async_init=1 fi # Kill the old process of slow commands if it is still running. async_flush_jobs prompt_sorin # Compute slow commands in the background. async_job prompt_sorin prompt_sorin_async_git "$PWD" } function prompt_sorin_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Format PWD. _prompt_sorin_pwd=$(prompt-pwd) # Handle updating git data. We also clear the git prompt data if we're in a # different git root now. if (( $+functions[git-dir] )); then local new_git_root="$(git-dir 2> /dev/null)" if [[ $new_git_root != $_sorin_cur_git_root ]]; then _prompt_sorin_git='' _sorin_cur_git_root=$new_git_root fi fi # Run python info (this should be fast and not require any async) if (( $+functions[python-info] )); then python-info fi prompt_sorin_async_tasks } function prompt_sorin_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz async && async # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_sorin_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b' zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b' zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f' zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b' # Set git-info parameters. zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b' zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b' zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b' zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b' zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b' zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b' zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b' zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b' zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b' zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b' zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b' zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b' zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b' zstyle ':prezto:module:git:info:keys' format \ 'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u' # Set python-info parameters. zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} ' # Set up non-zero return value display local show_return="✘ " # Default is to show the return value if zstyle -T ':prezto:module:prompt' show-return-val; then show_return+='%? ' fi # Get the async worker set up. _sorin_cur_git_root='' _prompt_sorin_git='' _prompt_sorin_pwd='' # Define prompts. PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{4}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} ' RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}' RPROMPT+=${show_return} RPROMPT+='%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' } function prompt_sorin_preview { local +h PROMPT='' local +h RPROMPT='' local +h SPROMPT='' editor-info 2> /dev/null prompt_preview_theme 'sorin' } prompt_sorin_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/functions/prompt_steeef_setup ================================================ # # A theme based on Steve Losh's Extravagant Prompt with vcs_info integration. # # Authors: # Steve Losh # Bart Trojanowski # Brian Carper # steeef # Sorin Ionescu # # Screenshots: # http://i.imgur.com/HyRvv.png # function prompt_steeef_precmd { # Check for untracked files or updated submodules since vcs_info does not. if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c${_prompt_steeef_colors[4]}●%f)" else branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)" fi zstyle ':vcs_info:*:prompt:*' formats "${branch_format}" vcs_info 'prompt' if (( $+functions[python-info] )); then python-info fi } function prompt_steeef_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz vcs_info # Add hook for calling vcs_info before each command. add-zsh-hook precmd prompt_steeef_precmd # Tell prezto we can manage this prompt zstyle ':prezto:module:prompt' managed 'yes' # Use extended color pallete if available. if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then _prompt_steeef_colors=( "%F{81}" # Turquoise "%F{166}" # Orange "%F{135}" # Purple "%F{161}" # Hotpink "%F{118}" # Limegreen ) else _prompt_steeef_colors=( "%F{cyan}" "%F{yellow}" "%F{magenta}" "%F{red}" "%F{green}" ) fi # Formats: # %b - branchname # %u - unstagedstr (see below) # %c - stagedstr (see below) # %a - action (e.g. rebase-i) # %R - repository path # %S - path in the repository local branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)" local action_format="(${_prompt_steeef_colors[5]}%a%f)" local unstaged_format="${_prompt_steeef_colors[2]}●%f" local staged_format="${_prompt_steeef_colors[5]}●%f" # Set editor-info parameters. zstyle ':prezto:module:editor:info:keymap:primary' format '$' # Set vcs_info parameters. zstyle ':vcs_info:*' enable bzr git hg svn zstyle ':vcs_info:*:prompt:*' check-for-changes true zstyle ':vcs_info:*:prompt:*' unstagedstr "${unstaged_format}" zstyle ':vcs_info:*:prompt:*' stagedstr "${staged_format}" zstyle ':vcs_info:*:prompt:*' actionformats "${branch_format}${action_format}" zstyle ':vcs_info:*:prompt:*' formats "${branch_format}" zstyle ':vcs_info:*:prompt:*' nvcsformats "" # Set python-info parameters. zstyle ':prezto:module:python:info:virtualenv' format '(%v)' # Define prompts. PROMPT=" ${_prompt_steeef_colors[3]}%n%f at ${_prompt_steeef_colors[2]}%m%f in ${_prompt_steeef_colors[5]}%~%f "'${vcs_info_msg_0_}'" "'$python_info[virtualenv]${editor_info[keymap]} ' RPROMPT='' } function prompt_steeef_preview { local +h PROMPT='' local +h RPROMPT='' local +h SPROMPT='' editor-info 2> /dev/null prompt_preview_theme 'steeef' } prompt_steeef_setup "$@" # vim: ft=zsh ================================================ FILE: modules/prompt/init.zsh ================================================ # # Loads prompt themes. # # Authors: # Sorin Ionescu # # Load and execute the prompt theming system. autoload -Uz promptinit && promptinit # Load the prompt theme. zstyle -a ':prezto:module:prompt' theme 'prompt_argv' if [[ $TERM == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then prompt 'off' else prompt "$prompt_argv[@]" fi unset prompt_argv ================================================ FILE: modules/python/README.md ================================================ # Python Enables local Python and local Python package installation. ## Settings This module supports virtual environments from conda and [_virtualenvwrapper_][2]. By default, only _virtualenvwrapper_ is enabled. To disable _virtualenvwrapper_, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:python:virtualenv' initialize 'no' ``` Conda support can be enabled by adding the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:python' conda-init 'on' ``` Caution: using conda and virtualenvwrapper at the same time may cause conflicts. ## Local Python Installation [_pyenv_][4] builds and installs multiple Python versions locally in the home directory. This module prepends the _pyenv_ directory to the path variable to enable the execution of `pyenv`. ### Usage Install Python versions with `pyenv install` into _`~/.pyenv/versions`_. This will be loaded automatically if pyenv is installed to `$PYENV_ROOT`, _`~/.pyenv`_, or if the `pyenv` command is on the path. By default, `PYENV_ROOT` is set to _`$HOME/.pyenv`_. You can set it to an alternate location and export it in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6]. ## Local Package Installation Since version 2.6, Python supports per user package installation, as defined in [PEP 370][1]. This module prepends per user site directories to the relevant path variables to enable the execution of user installed scripts and the reading of documentation. ### Usage Install packages into the per user site directory with `pip install --user`. ## virtualenvwrapper [_virtualenvwrapper_][2] is a frontend to the popular [_virtualenv_][3] utility. `virtualenv` creates isolated Python environments and `virtualenvwrapper` provides convenient shell functions to create, switch, and manage them. ### Usage Install `virtualenvwrapper`. Virtual environments are stored in _`~/.virtualenvs`_. There are configuration variables that have to be set to enable certain features. If you wish to use these features, export the variables in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6]. The variable `$PROJECT_HOME` tells `virtualenvwrapper` where to place project working directories. It must be set and the directory created before `mkproject` is used. Replace _Developer_ with your projects directory. ```sh export PROJECT_HOME="$HOME/Developer" ``` The variable `VIRTUALENVWRAPPER_PYTHON` tells `virtualenvwrapper` to use the specified full path of the `python` interpreter overriding the `$PATH` search. ```sh export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python ``` The variable `VIRTUALENVWRAPPER_VIRTUALENV` tells `virtualenvwrapper` to use the specified full path of `virtualenv` binary overriding the `$PATH` search. ```sh export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv ``` The variable `$VIRTUALENVWRAPPER_VIRTUALENV_ARGS` tells `virtualenvwrapper` what arguments to pass to `virtualenv`. For example, set the value to `--system-site-packages` to ensure that all new environments have access to the system site-packages directory. ```sh export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages' ``` ### Additional Options There is a hook to enable auto-switching to virtualenvs when switching into a directory where the root of the project matches a virtualenv name. This can be enabled with: ```sh zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' ``` `virtualenvwrapper` is automatically initialized if pre-requisites are met (`$VIRTUALENVWRAPPER_VIRTUALENV` is explicitly set or `virtualenv` is in `$PATH`). This can be disabled with: ```sh zstyle ':prezto:module:python:virtualenv' initialize 'no' ``` ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:python:alias' skip 'yes' ``` - `py` is short for `python`. - `py2` is short for `python2`. - `py3` is short for `python3`. ## Functions - `python-info` exposes information about the Python environment via the `$python_info` associative array. ## Theming To display the name of the current virtual environment in a prompt, define the following style in the `prompt_name_setup` function. ```sh # %v - virtualenv name. zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v' ``` Then add `$python_info[virtualenv]` to `$PROMPT` or `$RPROMPT` and call `python-info` in the `prompt_name_preexec` hook function. Similarly, you can use `:prezto:module:python:info:version:format` with `%v` for the version and add `$python_info[version]` to your prompt for the current python version. ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Sebastian Wiesner](https://github.com/lunaryorn) [1]: https://www.python.org/dev/peps/pep-0370/ [2]: https://www.doughellmann.com/projects/virtualenvwrapper/ [3]: https://pypi.org/project/virtualenv/ [4]: https://github.com/yyuu/pyenv [5]: https://github.com/sorin-ionescu/prezto/issues [6]: ../../runcoms#zshenv ================================================ FILE: modules/python/functions/python-info ================================================ # # Exposes information about the Python environment via the $python_info # associative array. # # Authors: # Sorin Ionescu # Patrick Bos # # function python-info { local virtualenv_format local virtualenv_formatted local version_format local version_formatted local version # Clean up previous $python_info. unset python_info typeset -gA python_info # Grab the styling we might have to do zstyle -s ':prezto:module:python:info:virtualenv' format 'virtualenv_format' zstyle -s ':prezto:module:python:info:version' format 'version_format' # Format virtualenv. if [[ -n "$virtualenv_format" ]]; then if [[ -n "$VIRTUAL_ENV" ]]; then zformat -f virtualenv_formatted "$virtualenv_format" "v:${VIRTUAL_ENV:t}" python_info[virtualenv]="$virtualenv_formatted" fi # Do the same for Conda virtual environments if [[ -n "$CONDA_DEFAULT_ENV" ]]; then zformat -f virtualenv_formatted "$virtualenv_format" "v:${CONDA_DEFAULT_ENV:t}" python_info[virtualenv]="$virtualenv_formatted" fi fi if [[ -n "$version_format" ]]; then if (( $+commands[pyenv] )); then version="${"$(pyenv version)"%% *}" elif (( $+commands[python] )); then version="${$(python3 --version)#Python }" fi if [[ -n "$version" && "$version" != "system" ]]; then zformat -f version_formatted "$version_format" "v:$version" python_info[version]="$version_formatted" fi fi # } ================================================ FILE: modules/python/init.zsh ================================================ # # Enables local Python package installation. # # Authors: # Sorin Ionescu # Sebastian Wiesner # Patrick Bos # Indrajit Raychaudhuri # # # Options # setopt EXTENDED_GLOB # Load dependencies. pmodload 'helper' # Load manually installed or package manager installed pyenv into the shell # session. if [[ -s "${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}" ]] \ || (( $+commands[pyenv] )); then # Ensure manually installed pyenv is added to path when present. [[ -s $local_pyenv ]] && path=($local_pyenv:h $path) # Load pyenv into the shell session. eval "$(pyenv init - zsh)" # Prepend PEP 370 per user site packages directory, which defaults to # ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The # path can be overridden using PYTHONUSERBASE. else if [[ -n "$PYTHONUSERBASE" ]]; then path=($PYTHONUSERBASE/bin(N) $path) elif is-darwin; then path=($HOME/Library/Python/*/bin(N) $path) else # This is subject to change. path=($HOME/.local/bin(N) $path) fi fi unset local_pyenv # Return if requirements are not found. if (( ! $+commands[(i)python[0-9.]#] && ! $+functions[pyenv] && ! $+commands[conda] )); then return 1 fi function _python-workon-cwd { # Check if this is a Git repo. local GIT_REPO_ROOT="$(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" done if [[ $PROJECT_ROOT == "/" ]]; then PROJECT_ROOT="." fi # Check for virtualenv name override. local ENV_NAME="" if [[ -f "$PROJECT_ROOT/.venv" ]]; then ENV_NAME="$(<$PROJECT_ROOT/.venv)" elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]]; then ENV_NAME="$PROJECT_ROOT/.venv" elif [[ $PROJECT_ROOT != "." ]]; then ENV_NAME="$PROJECT_ROOT:t" 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. deactivate && unset CD_VIRTUAL_ENV fi 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" elif [[ -e "$ENV_NAME/bin/activate" ]]; then source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME" fi fi fi } # 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 # Set the directory where virtual environments are stored. export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}" # Disable the virtualenv prompt. Note that we use the magic value used by the # pure prompt because there's some additional logic in that prompt which tries # to figure out if a user set this variable and disable the python portion of # that prompt based on it which is the exact opposite of what we want to do. export VIRTUAL_ENV_DISABLE_PROMPT=12 # Create a sorted array of available virtualenv related 'pyenv' commands to # look for plugins of interest. Scanning shell '$path' isn't enough as they # can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead. local -a pyenv_plugins local pyenv_virtualenvwrapper_plugin_found if (( $+commands[pyenv] )); then pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2> /dev/null)"}:#virtualenv*}) # Optionally activate 'virtualenv-init' plugin when available. if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then eval "$(pyenv virtualenv-init - zsh)" fi # Optionally activate 'virtualenvwrapper' plugin when available. if (( $pyenv_plugins[(i)virtualenvwrapper(_lazy|)] <= $#pyenv_plugins )); then pyenv "$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]" pyenv_virtualenvwrapper_plugin_found="true" fi unset pyenv_plugins fi if [[ $pyenv_virtualenvwrapper_plugin_found != "true" ]]; then # Fallback to standard 'virtualenvwrapper' if 'python' is available in '$path'. if (( ! $+VIRTUALENVWRAPPER_PYTHON )) && (( $+commands[(i)python[0-9.]#] )); then VIRTUALENVWRAPPER_PYTHON=$commands[(i)python[0-9.]#] fi virtualenvwrapper_sources=( ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) ) if (( $#virtualenvwrapper_sources )); then source "$virtualenvwrapper_sources[1]" fi unset virtualenvwrapper_sources fi unset pyenv_virtualenvwrapper_plugin_found fi # Load conda into the shell session, if requested. zstyle -T ':prezto:module:python' conda-init if (( $? && $+commands[conda] )); then if (( $(conda ..changeps1) )); then echo "To make sure Conda doesn't change your prompt (should do that in the prompt module) run:\n conda config --set changeps1 false" # TODO: # We could just run this ourselves. In an exit hook # (add zsh-hook zshexit [(anonymous) function]) we could then set it back # to the way it was before we changed it. However, I'm not sure if this is # exception safe, so left it like this for now. fi fi # # Aliases # if ! zstyle -t ':prezto:module:python:alias' skip; then alias py='python' alias py2='python2' alias py3='python3' fi ================================================ FILE: modules/rails/README.md ================================================ # Ruby on Rails Defines [Ruby on Rails][1] aliases. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:rails:alias' skip 'yes' ``` - `ror` is short for `rails`. - `rorc` starts the Rails console. - `rordc` starts the Rails console connected to the database. - `rordm` migrates the database. - `rordM` migrates the database and recreates the test database. - `rordr` rolls the database schema back to the previous version. - `rorg` generates new code. - `rorl` displays the log. - `rorlc` truncates logs to zero bytes. - `rorp` installs a plugin. - `rorr` runs code in the application environment. - `rors` starts the Rails server. - `rorsd` starts the Rails server with the debugger. - `rorx` destroys newly generated code. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Robby Russell](https://github.com/robbyrussell) - [Jake Bell](https://github.com/theunraveler) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://rubyonrails.org [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/rails/init.zsh ================================================ # # Defines Ruby on Rails aliases. # # Authors: # Robby Russell # Jake Bell # Sorin Ionescu # # Load dependencies. pmodload 'ruby' # Return if requirements are not found. if (( ! $+commands[bundle] )); then return 1 fi # # Aliases # if ! zstyle -t ':prezto:module:rails:alias' skip; then alias ror='bundle exec rails' alias rorc='bundle exec rails console' alias rordc='bundle exec rails dbconsole' alias rordm='bundle exec rake db:migrate' alias rordM='bundle exec rake db:migrate db:test:clone' alias rordr='bundle exec rake db:rollback' alias rorg='bundle exec rails generate' alias rorl='tail -f "$(ruby-app-root)/log/development.log"' alias rorlc='bundle exec rake log:clear' alias rorp='bundle exec rails plugin' alias rorr='bundle exec rails runner' alias rors='bundle exec rails server' alias rorsd='bundle exec rails server --debugger' alias rorx='bundle exec rails destroy' fi ================================================ FILE: modules/rsync/README.md ================================================ # Rsync Defines [rsync][1] aliases. macOS users are encouraged to use _rsync_ from [Homebrew][2] or [MacPorts][3], which has additional enhancements including patches from [Bombich][4]. ## 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_. ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [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 ================================================ FILE: modules/rsync/init.zsh ================================================ # # Defines Rsync aliases. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[rsync] )); then return 1 fi # Load dependencies. pmodload 'helper' # # Aliases # _rsync_cmd='rsync --verbose --progress --human-readable --compress --archive \ --hard-links --one-file-system' autoload -Uz is-at-least if is-at-least 3.1 ${"$(rsync --version 2>&1)"[(w)3]}; then # ACL and extended attributes support if grep -q 'xattrs' <(rsync --help 2>&1); then _rsync_cmd="${_rsync_cmd} --acls --xattrs" fi # macOS 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}" alias rsync-move="${_rsync_cmd} --remove-source-files" alias rsync-update="${_rsync_cmd} --update" alias rsync-synchronize="${_rsync_cmd} --update --delete" unset _rsync_cmd ================================================ FILE: modules/ruby/README.md ================================================ # Ruby Configures [Ruby][1] local gem installation, loads version managers, and defines aliases. ## Local Gem Installation When a Ruby version manager is not detected, local gems are installed in _`~/.gem`_; otherwise, they are installed according to the manager. ## rbenv 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. Load this module as late as possible when using RVM since RVM will complain if it is not first in `$PATH`. ## chruby 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' ``` ## Bundler Manage gems that are not meant to be used as commands, such as application dependencies, with [Bundler][5]. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:ruby:alias' skip 'yes' ``` ### General - `rb` is short for `ruby`. ### Bundler - `rbb` manages ruby dependencies (`bundle`). - `rbbc` cleans up unused gems in your bundler directory. - `rbbe` executes a script in the context of the current bundle. - `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`. - `rbbI` installs the following: - gems specified in the `Gemfile` in `vendor/bundle`. - packages the gems into `vendor/cache`. - appends bundler directories to `.gitignore`. - `rbbl` lists all gems in the current bundle. - `rbbo` opens an installed gem in the editor. - `rbbp` packages gem files into `vendor/cache`. - `rbbu` updates gems to their latest version. ## Functions - `ruby-app-root` displays the path to the Ruby application root directory. - `ruby-info` exposes information about the Ruby environment via the `$ruby_info` associative array. ## Theming To display the name of the current Ruby version in a prompt, define the following style in the `prompt_name_setup` function. ```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 _The authors of this module should be contacted via the [issue tracker][6]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://www.ruby-lang.org [2]: https://github.com/rbenv/rbenv [3]: https://rvm.io [4]: https://github.com/postmodern/chruby [5]: https://gembundler.com [6]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/ruby/functions/ruby-app-root ================================================ # # Displays the path to the Ruby application root directory. # # Authors: # Sorin Ionescu # # function ruby-app-root { local root_dir="$PWD" while [[ "$root_dir" != '/' ]]; do if [[ -f "$root_dir/Gemfile" ]]; then print "$root_dir" break fi root_dir="$root_dir:h" done return 1 # } ================================================ FILE: modules/ruby/functions/ruby-info ================================================ # # Exposes information about the Ruby environment via the $ruby_info associative # array. # # Authors: # Sorin Ionescu # # function ruby-info { local version local version_format local version_formatted # Clean up previous $ruby_info. unset ruby_info typeset -gA ruby_info # Grab formatting for anything we might have to do zstyle -s ':prezto:module:ruby:info:version' format 'version_format' if [[ -n "$version_format" ]]; then if (( $+commands[rvm-prompt] )); then version="$(rvm-prompt)" elif (( $+commands[rbenv] )); then version="$(rbenv version-name)" elif (( $+commands[ruby] )); then version="${${$(ruby --version)[(w)1,(w)2]}/ /-}" fi # Format version. if [[ -n "$version" && "$version" != "system" ]]; then zformat -f version_formatted "$version_format" "v:$version" ruby_info[version]="$version_formatted" fi fi # } ================================================ FILE: modules/ruby/init.zsh ================================================ # # Configures Ruby local installation, loads version managers, and defines # aliases. # # Authors: # Sorin Ionescu # Indrajit Raychaudhuri # # 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. unsetopt AUTO_NAME_DIRS source "$local_rvm_paths[1]" # Load package manager installed chruby into the shell session. elif (( $+commands[chruby-exec] )); then if (( ! $+functions[chruby] )); then source "${commands[chruby-exec]:h:h}/share/chruby/chruby.sh" fi if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then if (( ! $+functions[chruby_auto] )); then source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh" fi # If a default ruby is set, switch to it. chruby_auto fi # Prepend local gems bin directories to PATH. else path=($HOME/.gem/ruby/*/bin(N) $path) fi unset local_rbenv # Return if requirements are not found. if (( ! $+commands[ruby] && ! $#functions[(i)r(benv|vm)] )); then return 1 fi # # Aliases # if ! zstyle -t ':prezto:module:ruby:alias' skip; then # General alias rb='ruby' # Bundler if (( $+commands[bundle] )); then alias rbb='bundle' alias rbbc='bundle clean' alias rbbe='bundle exec' alias rbbi='bundle install --path vendor/bundle' alias rbbl='bundle list' alias rbbo='bundle open' alias rbbp='bundle package' alias rbbu='bundle update' alias rbbI='rbbi \ && bundle package \ && print .bundle >>! .gitignore \ && print vendor/assets >>! .gitignore \ && print vendor/bundle >>! .gitignore \ && print vendor/cache >>! .gitignore' fi fi ================================================ FILE: modules/screen/README.md ================================================ # GNU Screen Defines [GNU Screen][1] aliases and provides for auto launching it at start-up. ## 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 _`${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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:screen:auto-start' remote 'yes' ``` ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:screen:alias' skip 'yes' ``` - `scr` is short for `screen`. - `scrl` lists sessions/socket directory. - `scrn` starts a new session. - `scrr` attaches to a session if one exists or start a new one. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Georges Discry](https://github.com/gdiscry) [1]: https://www.gnu.org/software/screen/ [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/screen/init.zsh ================================================ # # Defines GNU Screen aliases and provides for auto launching it at start-up. # # Authors: # Sorin Ionescu # Georges Discry # # Return if requirements are not found. if (( ! $+commands[screen] )); then return 1 fi # # Auto Start # if [[ -z "$STY" && -z "$EMACS" && -z "$VIM" ]] && ( \ ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' remote ) || ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' local ) \ ); then session="$( screen -list 2> /dev/null \ | sed '1d;$d' \ | awk '!/Dead/ {print $1}' \ | head -1)" if [[ -n "$session" ]]; then exec screen -x "$session" else exec screen -a -A -U -D -R -m "$SHELL" -l fi fi # # Aliases # if ! zstyle -t ':prezto:module:screen:alias' skip; then alias scr='screen' alias scrl='screen -list' alias scrn='screen -U -S' alias scrr='screen -a -A -U -D -R' fi ================================================ FILE: modules/spectrum/README.md ================================================ # 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 - `BG` provides background colors. - `FG` provides foreground colors. - `FX` provides effects. ### Background and Foreground Terminals support 8, 16, 88, and 256 colors. Check if a terminal supports 256 colors with `tput colors` before use. The following colors are supported. - 0 to 255 - black - red - green - yellow - blue - magenta - cyan - white ### Effects Though there are many effects, most terminals support at least bold formatting. **Not all effects work on all terminals; use them sparingly.** | Enable | Disable | | ------------------------- | ---------------------------- | | | none | | | normal | | bold | no-bold | | faint | no-faint | | standout | no-standout | | underline | no-underline | | blink | no-blink | | fast-blink | no-fast-blink | | reverse | no-reverse | | conceal | no-conceal | | strikethrough | no-strikethrough | | gothic | no-gothic | | double-underline | no-double-underline | | proportional | no-proportional | | overline | no-overline | | | | | | no-border | | border-rectangle | no-border-rectangle | | border-circle | no-border-circle | | | | | | no-ideogram-marking | | underline-or-right | no-underline-or-right | | double-underline-or-right | no-double-underline-or-right | | overline-or-left | no-overline-or-left | | double-overline-or-left | no-double-overline-or-left | | stress | no-stress | | | | | | font-default | | font-first | no-font-first | | font-second | no-font-second | | font-third | no-font-third | | font-fourth | no-font-fourth | | font-fifth | no-font-fifth | | font-sixth | no-font-sixth | | font-seventh | no-font-seventh | | 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 _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) [1]: http://lucentbeing.com/writing/archives/a-guide-to-256-color-codes/ [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/spectrum/init.zsh ================================================ # # Provides for easier use of 256 colors and effects. # # Authors: # P.C. Shyamshankar # Sorin Ionescu # # Return if requirements are not found. if [[ $TERM == dumb ]]; then return 1 fi typeset -gA FX FG BG FX=( none "\e[00m" normal "\e[22m" bold "\e[01m" no-bold "\e[22m" faint "\e[02m" no-faint "\e[22m" standout "\e[03m" no-standout "\e[23m" underline "\e[04m" no-underline "\e[24m" blink "\e[05m" no-blink "\e[25m" fast-blink "\e[06m" no-fast-blink "\e[25m" reverse "\e[07m" no-reverse "\e[27m" conceal "\e[08m" no-conceal "\e[28m" strikethrough "\e[09m" no-strikethrough "\e[29m" gothic "\e[20m" no-gothic "\e[22m" double-underline "\e[21m" no-double-underline "\e[22m" proportional "\e[26m" no-proportional "\e[50m" overline "\e[53m" no-overline "\e[55m" no-border "\e[54m" border-rectangle "\e[51m" no-border-rectangle "\e[54m" border-circle "\e[52m" no-border-circle "\e[54m" no-ideogram-marking "\e[65m" underline-or-right "\e[60m" no-underline-or-right "\e[65m" double-underline-or-right "\e[61m" no-double-underline-or-right "\e[65m" overline-or-left "\e[62m" no-overline-or-left "\e[65m" double-overline-or-left "\e[63m" no-double-overline-or-left "\e[65m" stress "\e[64m" no-stress "\e[65m" font-default "\e[10m" font-first "\e[11m" no-font-first "\e[10m" font-second "\e[12m" no-font-second "\e[10m" font-third "\e[13m" no-font-third "\e[10m" font-fourth "\e[14m" no-font-fourth "\e[10m" 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-eighth "\e[18m" no-font-eighth "\e[10m" font-ninth "\e[19m" no-font-ninth "\e[10m" ) FG[none]="$FX[none]" BG[none]="$FX[none]" colors=(black red green yellow blue magenta cyan white) for color in {0..255}; do if (( $color >= 0 )) && (( $color < $#colors )); then index=$(( $color + 1 )) FG[$colors[$index]]="\e[38;5;${color}m" BG[$colors[$index]]="\e[48;5;${color}m" fi FG[$color]="\e[38;5;${color}m" BG[$color]="\e[48;5;${color}m" done unset color{s,} index ================================================ FILE: modules/ssh/README.md ================================================ # SSH Provides for an easier use of [SSH][1] by setting up [_ssh-agent_][2]. ## Settings ### Identities 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 _The authors of this module should be contacted via the [issue tracker][3]._ [Sorin Ionescu](https://github.com/sorin-ionescu) [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 ================================================ FILE: modules/ssh/init.zsh ================================================ # # Provides for an easier use of SSH by setting up ssh-agent. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[ssh-agent] )); then return 1 fi # Set the path to the SSH directory. _ssh_dir="$HOME/.ssh" # Set the path to the environment file if not set by another module. _ssh_agent_env="${_ssh_agent_env:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.env}" # Set the path to the persistent authentication socket if not set by another module. _ssh_agent_sock="${_ssh_agent_sock:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.sock}" # Start ssh-agent if not started. if [[ ! -S "$SSH_AUTH_SOCK" ]]; then # Export environment variables. source "$_ssh_agent_env" 2> /dev/null # Start ssh-agent if not started. if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then mkdir -p "$_ssh_agent_env:h" eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")" fi fi # Create a persistent SSH authentication socket. if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then mkdir -p "$_ssh_agent_sock:h" ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock" export SSH_AUTH_SOCK="$_ssh_agent_sock" fi # Load identities. if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities' # ssh-add has strange requirements for running SSH_ASKPASS, so we duplicate # them here. Essentially, if the other requirements are met, we redirect stdin # from /dev/null in order to meet the final requirement. # # From ssh-add(1): # If ssh-add needs a passphrase, it will read the passphrase from the current # terminal if it was run from a terminal. If ssh-add does not have a terminal # associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the # program specified by SSH_ASKPASS and open an X11 window to read the # passphrase. if [[ -n "$DISPLAY" && -x "$SSH_ASKPASS" ]]; then ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} < /dev/null 2> /dev/null else ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} 2> /dev/null fi fi # Clean up. unset _ssh_{dir,identities} _ssh_agent_{env,sock} ================================================ FILE: modules/syntax-highlighting/README.md ================================================ # Syntax Highlighting Integrates [zsh-syntax-highlighting][1] into Prezto. This module must be loaded _before_ the _`prompt`_ module. If this module is used in conjunction with the [_`history-substring-search`_][2] module, this module must be loaded _before_ the _`history-substring-search`_ module. Additionally, if this module is used in conjunction with the [_`autosuggestions`_][3] module, this module must be loaded _before_ the _`autosuggestions`_ module as well. To elaborate, the relative order of loading the modules would be _`syntax-highlighting`_, _`history-substring-search`_, _`autosuggestions`_ and _`prompt`_. ## Contributors 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 ### Highlighting To enable highlighting for this module only, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:syntax-highlighting' color 'yes' ``` ### Highlighters Syntax highlighting is accomplished by pluggable [highlighters][4]. This module only enables the _main_ highlighter by default. To enable all highlighters, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:syntax-highlighting' highlighters \ 'main' \ 'brackets' \ 'pattern' \ 'line' \ 'cursor' \ 'root' ``` ### Highlighting Styles 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:syntax-highlighting' styles \ 'builtin' 'bg=blue' \ 'command' 'bg=blue' \ 'function' 'bg=blue' ``` ## Authors _The authors of this module should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: https://github.com/zsh-users/zsh-syntax-highlighting [2]: ../history-substring-search#readme [3]: ../autosuggestions#readme [4]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters [5]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/syntax-highlighting/init.zsh ================================================ # # Integrates zsh-syntax-highlighting into Prezto. # # Authors: # Sorin Ionescu # # Return if requirements are not found. if ! zstyle -t ':prezto:module:syntax-highlighting' color; then return 1 fi # Source module files. source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1 # Set highlighters. zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) fi # Set highlighting styles. typeset -A syntax_highlighting_styles zstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles' for syntax_highlighting_style in "${(k)syntax_highlighting_styles[@]}"; do ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]="$syntax_highlighting_styles[$syntax_highlighting_style]" done unset syntax_highlighting_style{s,} # Set pattern highlighting styles. typeset -A syntax_pattern_styles zstyle -a ':prezto:module:syntax-highlighting' pattern 'syntax_pattern_styles' for syntax_pattern_style in "${(k)syntax_pattern_styles[@]}"; do ZSH_HIGHLIGHT_PATTERNS[$syntax_pattern_style]="$syntax_pattern_styles[$syntax_pattern_style]" done unset syntax_pattern_style{s,} ================================================ FILE: modules/terminal/README.md ================================================ # Terminal Sets terminal window and tab titles. ## Settings ### Auto-Title To auto set the terminal window and tab titles with the current command or 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`. ```sh zstyle ':prezto:module:terminal' auto-title 'always' ``` ### Title formats 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' zstyle ':prezto:module:terminal:tab-title' format '%m: %s' zstyle ':prezto:module:terminal:multiplexer-title' format '%s' ``` `%s` will be replaced with the current working directory path or the currently executing program name. For a list of sequences, see [Expansion of Prompt Sequences][1]. ## 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 _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) [1]: https://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/terminal/init.zsh ================================================ # # Sets terminal window and tab titles. # # Authors: # Sorin Ionescu # Olaf Conradi # # Return if requirements are not found. if [[ $TERM == (dumb|linux|*bsd*|eterm*) ]]; then return 1 fi # Sets the terminal window title. function set-window-title { local title_format{,ted} zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s" zformat -f title_formatted "$title_format" "s:$argv" printf '\e]2;%s\a' "${(V%)title_formatted}" } # Sets the terminal tab title. function set-tab-title { local title_format{,ted} zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s" zformat -f title_formatted "$title_format" "s:$argv" printf '\e]1;%s\a' "${(V%)title_formatted}" } # Sets the terminal multiplexer tab title. function set-multiplexer-title { local title_format{,ted} zstyle -s ':prezto:module:terminal:multiplexer-title' format 'title_format' || title_format="%s" zformat -f title_formatted "$title_format" "s:$argv" printf '\ek%s\e\\' "${(V%)title_formatted}" } # Sets the tab and window titles with a given command. function _terminal-set-titles-with-command { emulate -L zsh setopt EXTENDED_GLOB # Get the command name that is under job control. if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then # Get the job name, and, if missing, set it to the default %+. local job_name="${${2[(wr)%*(\;|)]}:-%+}" # Make a local copy for use in the subshell. local -A jobtexts_from_parent_shell jobtexts_from_parent_shell=(${(kv)jobtexts}) jobs "$job_name" 2> /dev/null > >( read index discarded # The index is already surrounded by brackets: [1]. _terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}" ) else # Set the command name, or in the case of sudo or ssh, the next command. local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}" local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}" unset MATCH if [[ $TERM == screen* ]]; then set-multiplexer-title "$truncated_cmd" fi set-tab-title "$truncated_cmd" set-window-title "$cmd" fi } # Sets the tab and window titles with a given path. function _terminal-set-titles-with-path { emulate -L zsh setopt EXTENDED_GLOB local absolute_path="${${1:a}:-$PWD}" local abbreviated_path="${absolute_path/#$HOME/~}" local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}" unset MATCH if [[ $TERM == screen* ]]; then set-multiplexer-title "$truncated_path" fi set-tab-title "$truncated_path" set-window-title "$abbreviated_path" } # Do not override precmd/preexec; append to the hook array. autoload -Uz add-zsh-hook # Set up the Apple Terminal. if [[ $TERM_PROGRAM == Apple_Terminal ]] \ && ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] ) then # Sets the Terminal.app current working directory before the prompt is # displayed. function _terminal-set-terminal-app-proxy-icon { printf '\e]7;%s\a' "file://${HOST}${PWD// /%20}" } add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon # Unsets the Terminal.app current working directory when a terminal # multiplexer or remote connection is started since it can no longer be # updated, and it becomes confusing when the directory displayed in the title # bar is no longer synchronized with real current working directory. function _terminal-unset-terminal-app-proxy-icon { if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then print '\e]7;\a' fi } add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon # Do not set the tab and window titles in Terminal.app since it sets the tab # title to the currently running process by default and the current working # directory is set separately. return fi # Set up non-Apple terminals. if zstyle -t ':prezto:module:terminal' auto-title 'always' \ || (zstyle -t ':prezto:module:terminal' auto-title \ && ( ! [[ -n "$STY" || -n "$TMUX" ]] )) then # Sets titles before the prompt is displayed. add-zsh-hook precmd _terminal-set-titles-with-path # Sets titles before command execution. add-zsh-hook preexec _terminal-set-titles-with-command fi ================================================ FILE: modules/tmux/README.md ================================================ # Tmux Defines [_tmux_][1] aliases and provides for auto launching it at start-up. ## 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 _`${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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:tmux:auto-start' remote 'yes' ``` In both cases, it will create a background session named _prezto_ if the tmux server is not started. You can change the default session name with: ```sh 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_: ```conf 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:tmux:iterm' integrate 'yes' ``` Read [iTerm2 and tmux Integration][7] for more information. ## Aliases Aliases are enabled by default. To disable them, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_. ```sh zstyle ':prezto:module:tmux:alias' skip 'yes' ``` - `tmuxa` attaches or switches to a tmux session. - `tmuxl` lists sessions managed by the tmux server. ## Caveats On macOS, launching tmux can cause the error **launch_msg(...): Socket is not connected** to be displayed, which can be fixed by installing [reattach-to-user-namespace][3], available in [Homebrew][4], and adding the following to _tmux.conf_: ```conf 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 _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) [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]: https://iterm2.com [7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration ================================================ FILE: modules/tmux/init.zsh ================================================ # # Defines tmux aliases and provides for auto launching it at start-up. # # Authors: # Sorin Ionescu # Colin Hebert # Georges Discry # Xavier Cambar # # Return if requirements are not found. if (( ! $+commands[tmux] )); then return 1 fi # # Auto Start # if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \ zstyle -t ':prezto:module:tmux:iterm' integrate \ ); then _tmux_iterm_integration='-CC' fi if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCODE_RESOLVING_ENVIRONMENT" && "$TERM_PROGRAM" != "vscode" && "$TERMINAL_EMULATOR" != "JetBrains-JediTerm" ]] && ( \ ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) || ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \ ); then tmux start-server # Create a 'prezto' session if no session has been defined in tmux.conf. if ! tmux has-session 2> /dev/null; then zstyle -s ':prezto:module:tmux:session' name tmux_session || tmux_session='prezto' tmux \ new-session -d -s "$tmux_session" \; \ set-option -t "$tmux_session" destroy-unattached off &> /dev/null fi # Attach to the 'prezto' session or to the last session used. (detach first) exec tmux $_tmux_iterm_integration attach-session -d fi # # Aliases # if ! zstyle -t ':prezto:module:tmux:alias' skip; then alias tmuxa="tmux $_tmux_iterm_integration new-session -A" alias tmuxl='tmux list-sessions' fi ================================================ FILE: modules/utility/README.md ================================================ # Utility Defines general aliases and functions. 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_, you may disable it selectively for certain commands. 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility:ls' dirs-first 'no' ``` To disable `grep` highlighting, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility:grep' color 'no' ``` To disable `diff` highlighting, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility:diff' color 'no' ``` To disable `wdiff` highlighting, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility:wdiff' color 'no' ``` To disable `make` highlighting, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility:make' color 'no' ``` ### 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` To disable all spelling corrections, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```sh zstyle ':prezto:module:utility' correct 'no' ``` ### Disabled File Globbing - `bower` - `fc` - `find` - `ftp` - `history` - `locate` - `rake` - `rsync` (selectively enabled for local files) - `scp` (selectively enabled for local files) - `sftp` ### 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. ### 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. ### macOS Everywhere - `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. ### 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 _`${ZDOTDIR:-$HOME}/.zpreztorc`_: ```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. ### Miscellaneous - `http-serve` serves a directory via HTTP. ## Functions ### General - `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. ### Developer - `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. ### Search and Replace - `prep` provides a grep-like pattern search. - `psub` provides a sed-like pattern substitution. ## Authors _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) [1]: ../completion#readme [2]: ../gnu-utility#readme [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/utility/functions/_cdls_popdls_pushdls ================================================ #compdef cdls popdls pushdls #autoload # # Completes cdls, popdls, and pushdls. # # Authors: # Sorin Ionescu # _cd ================================================ FILE: modules/utility/functions/_dut ================================================ #compdef dut #autoload # # Completes dut. # # Authors: # Sorin Ionescu # _du ================================================ FILE: modules/utility/functions/_mkdcd ================================================ #compdef mkdcd #autoload # # Completes mkdcd. # # Authors: # Sorin Ionescu # local expl _wanted directories expl 'directory' _path_files -/ || _message 'directory' ================================================ FILE: modules/utility/functions/_noremoteglob ================================================ #compdef noremoteglob #autoload # # Completes noremoteglob. # # Authors: # Indrajit Raychaudhuri # _precommand ================================================ FILE: modules/utility/functions/_prep ================================================ #compdef prep #autoload # # Completes prep. # # Authors: # Sorin Ionescu # _arguments \ '-i[ignore case]' \ '-m[^ and $ match the start and the end of a line]' \ '-s[. matches newline]' \ '-v[invert match]' \ '-x[ignore whitespace and comments]' \ '1::pattern:' \ '2::files:_files' && return 0 ================================================ FILE: modules/utility/functions/_psub ================================================ #compdef psub #autoload # # Completes psub. # # Authors: # Sorin Ionescu # _arguments \ '-g[match globally]' \ '-i[ignore case]' \ '-m[^ and $ match the start and the end of a line]' \ '-s[. matches newline]' \ '-x[ignore whitespace and comments]' \ '1::pattern:' \ '2::replacement:' \ '3::files:_files' && return 0 ================================================ FILE: modules/utility/functions/diff ================================================ # # Highlights diff output. # # Authors: # Sorin Ionescu # # function diff { if zstyle -t ':prezto:module:utility:diff' color \ && [[ -t 1 ]] \ && (( $+commands[colordiff] )); then command diff "$@" | colordiff return "${pipestatus[1]}" else command diff "$@" fi # } ================================================ FILE: modules/utility/functions/dut ================================================ # # Displays the grand total disk usage using human readable units. # # Authors: # Suraj N. Kurapati # Sorin Ionescu # # function dut { (( $# == 0 )) && set -- * if [[ ${(@M)${(f)"$(du --version 2>&1)"}:#*GNU *} ]]; then du -khsc "$@" | sort -h -r else local line size name local -a record 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 # } ================================================ FILE: modules/utility/functions/make ================================================ # # Highlights make output. # # Authors: # Sorin Ionescu # # function make { if zstyle -t ':prezto:module:utility:make' color \ && (( $+commands[colormake] )); then command colormake "$@" else command make "$@" fi # } ================================================ FILE: modules/utility/functions/prep ================================================ # # Provides a grep-like pattern search. # # Authors: # Sorin Ionescu # # function prep { local usage pattern modifiers invert usage="$( cat <&2 print "$usage" >&2 return 1 ;; ([?]) print "$0: unknown option: $OPTARG" >&2 print "$usage" >&2 return 1 ;; esac done shift $(( $OPTIND - 1 )) if (( $# < 1 )); then print "$usage" >&2 return 1 fi pattern="$1" shift perl -n -l -e "print if ${invert:+not} m/${pattern//\//\\/}/${modifiers}" "$@" # } ================================================ FILE: modules/utility/functions/psub ================================================ # # Provides a sed-like pattern substitution. # # Authors: # Sorin Ionescu # # function psub { local usage pattern replacement modifiers usage="$( cat <&2 print "$usage" >&2 return 1 ;; ([?]) print "$0: unknown option: $OPTARG" >&2 print "$usage" >&2 return 1 ;; esac done shift $(( $OPTIND - 1 )) if (( $# < 2 )); then print "$usage" >&2 return 1 fi pattern="$1" replacement="$2" repeat 2 shift perl -i'.orig' -n -l -e "s/${pattern//\//\\/}/${replacement//\//\\/}/${modifiers}; print" "$@" # } ================================================ FILE: modules/utility/functions/wdiff ================================================ # # Highlights wdiff output. # # 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])" \ "$@" \ | sed 's/^\(@@\( [+-][[:digit:]]*,[[:digit:]]*\)\{2\} @@\)$/;5;6m\10m/g' 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 # } ================================================ FILE: modules/utility/functions/zsh-help ================================================ # # Provides a much easier way to search and access ZSH's manual. First checks for # terms at the start of the manual, then checks if it's at start of a line allowing # whitespace. # # Authors: # Samantha McVey # # function zsh-help { local usage="$( cat <&2; fi if man --pager='' ${i} | grep -E ${case} "${pattern}" > /dev/null; then printf "%s" "${i}"; return 0; fi done return 1 } # By default search only things at start of line local first_prefix='^' local prefix='^\s*' if [[ ${1} == '--zsh-help-debug' ]]; then shift; debug=1 fi if [[ ${1} == "--all" ]]; then shift; first_prefix='' # We're searching everything, so remove the prefix fi if [[ $# < 1 || $1 == "--help" ]]; then printf "%s\n" "${usage}" unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope return 1 fi if [[ ${1} == "test" && $# == 1 ]]; then case='' pattern='^CONDITIONAL EXPRESSIONS$' elif [[ ($1 == "-eq" || $1 == "-ne" || $1 == "-lt" || $1 == "-gt" || $1 == "-le" || $1 == "-ge") && $# == 1 ]]; then case='' pattern="${prefix}exp1\s+${1}\s+exp2" elif [[ $1 == 'zstyle' ]]; then pattern=$(_zsh-help-join '\s+' "$@") section=ZSHMODULES fi # If it wasn't one of the special-cased things, check ZSHBUILTINS first. If # not found there, we will search ZSHALL if [[ ${pattern} == "" ]]; then pattern="$(_zsh-help-join '\s+' "$@")" # search for sections at the start of the man page first section=$(_zsh-help-try-query "${case}" "${first_prefix}${pattern}") # If it exists there, keep ZSHBUILTINS as the section if (( $? == 0 )); then pattern="${first_prefix}${pattern}" elif [[ "${prefix}" ]]; then # if not found, search for the term preceeded by whitetext section=$(_zsh-help-try-query "${case}" "${prefix}${pattern}") if (( $? == 0 )); then pattern="${prefix}${pattern}" else pattern="" fi fi if [[ ! ${pattern} ]]; then # Otherwise we use zshall printf "Can't find term\n" 2>&1 unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope return 1; fi fi local command="man --pager=\"less ${case} -p '${pattern}'\" \"${section}\"" if [[ ${debug} ]]; then printf "\nFinal search term is:\n"; printf "%s\n" "${command}"; else eval $command fi local rtrn=$? unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope return $? #} ================================================ FILE: modules/utility/init.zsh ================================================ # # Defines general aliases and functions. # # Authors: # Robby Russell # Suraj N. Kurapati # Sorin Ionescu # # Load dependencies. pmodload 'helper' 'spectrum' # Correct commands. if zstyle -T ':prezto:module:utility' correct; then setopt CORRECT fi # Load 'run-help' function. autoload -Uz run-help-{ip,openssl,sudo} # # Aliases # # Disable correction. alias ack='nocorrect ack' alias cd='nocorrect cd' alias cp='nocorrect cp' alias ebuild='nocorrect ebuild' alias gcc='nocorrect gcc' alias gist='nocorrect gist' alias grep='nocorrect grep' alias heroku='nocorrect heroku' alias ln='nocorrect ln' alias man='nocorrect man' alias mkdir='nocorrect mkdir' alias mv='nocorrect mv' alias mysql='nocorrect mysql' alias rm='nocorrect rm' # Disable globbing. alias bower='noglob bower' alias fc='noglob fc' alias find='noglob find' alias ftp='noglob ftp' alias history='noglob history' alias locate='noglob locate' alias rake='noglob rake' alias rsync='noglob rsync' alias scp='noglob scp' alias sftp='noglob sftp' # Define general aliases. alias _='sudo' alias b='${(z)BROWSER}' alias diffu="diff --unified" alias e='${(z)VISUAL:-${(z)EDITOR}}' alias mkdir="${aliases[mkdir]:-mkdir} -p" alias p='${(z)PAGER}' alias po='popd' alias pu='pushd' alias sa='alias | grep -i' alias type='type -a' # Safe ops. Ask the user before doing anything destructive. 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 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 [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd|uutils) *} ]]; then # GNU Core Utilities if zstyle -T ':prezto:module:utility:ls' dirs-first; then alias ls="${aliases[ls]:-ls} --group-directories-first" fi if zstyle -t ':prezto:module:utility:ls' color; then # 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 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 alias ls="${aliases[ls]:-ls} --color=auto" else alias ls="${aliases[ls]:-ls} -F" 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 (( ! $+LSCOLORS )); then export LSCOLORS='exfxcxdxbxGxDxabagacad' fi alias ls="${aliases[ls]:-ls} -G" else alias ls="${aliases[ls]:-ls} -F" fi fi alias l='ls -1A' # Lists in one column, hidden files. 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 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. 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=${GREP_COLOR:-'37;45'} # BSD. export GREP_COLORS=${GREP_COLORS:-"mt=$GREP_COLOR"} # GNU. alias grep="${aliases[grep]:-grep} --color=auto" fi # macOS Everywhere if is-darwin; then alias o='open' elif is-cygwin; then alias o='cygstart' alias pbcopy='tee > /dev/clipboard' alias pbpaste='cat /dev/clipboard' elif is-termux; then alias o='termux-open' alias pbcopy='termux-clipboard-set' alias pbpaste='termux-clipboard-get' else alias o='xdg-open' if (( $+commands[xclip] )); then alias pbcopy='xclip -selection clipboard -in' alias pbpaste='xclip -selection clipboard -out' elif (( $+commands[xsel] )); then alias pbcopy='xsel --clipboard --input' alias pbpaste='xsel --clipboard --output' fi fi alias pbc='pbcopy' alias pbp='pbpaste' # File Download zstyle -s ':prezto:module:utility:download' helper '_download_helper' || _download_helper='curl' typeset -A _download_helpers=( aria2c 'aria2c --continue --remote-time --max-tries=0' curl 'curl --continue-at - --location --progress-bar --remote-name --remote-time' wget 'wget --continue --progress=bar --timestamping' ) if (( $+commands[$_download_helper] && $+_download_helpers[$_download_helper] )); then alias get="$_download_helpers[$_download_helper]" elif (( $+commands[curl] )); then alias get="$_download_helpers[curl]" fi unset _download_helper{,s} # Resource Usage alias df='df -kh' alias du='du -kh' if is-darwin || is-bsd; then alias topc='top -o cpu' alias topm='top -o vsize' else alias topc='top -o %CPU' alias topm='top -o %MEM' fi # Miscellaneous # Serves a directory via HTTP. if (( $#commands[(i)python(|[23])] )); then autoload -Uz is-at-least if (( $+commands[python3] )); then alias http-serve='python3 -m http.server' elif (( $+commands[python2] )); then alias http-serve='python2 -m SimpleHTTPServer' elif is-at-least 3 ${"$(python --version 2>&1)"[(w)2]}; then alias http-serve='python -m http.server' else alias http-serve='python -m SimpleHTTPServer' fi fi # # Functions # # Makes a directory and changes to it. function mkdcd { [[ -n "$1" ]] && mkdir -p "$1" && builtin cd "$1" } # Changes to a directory and lists its contents. function cdls { builtin cd "$argv[-1]" && ls "${(@)argv[1,-2]}" } # Pushes an entry onto the directory stack and lists its contents. function pushdls { builtin pushd "$argv[-1]" && ls "${(@)argv[1,-2]}" } # Pops an entry off the directory stack and lists its contents. function popdls { builtin popd "$argv[-1]" && ls "${(@)argv[1,-2]}" } # Prints columns 1 2 3 ... n. function slit { awk "{ print ${(j:,:):-\$${^@}} }" } # Finds files and executes a command on them. function find-exec { find . -type f -iname "*${1:-}*" -exec "${2:-file}" '{}' \; } # Displays user owned processes status. function psu { ps -U "${1:-$LOGNAME}" -o 'pid,%cpu,%mem,command' "${(@)argv[2,-1]}" } # Enables globbing selectively on path arguments. # Globbing is enabled on local paths (starting in '/' and './') and disabled # on remote paths (containing ':' but not starting in '/' and './'). This is # useful for programs that have their own globbing for remote paths. # Currently, this is used by default for 'rsync' and 'scp'. # Example: # - Local: '*.txt', './foo:2017*.txt', '/var/*:log.txt' # - Remote: user@localhost:foo/ # # NOTE: This function is buggy and is not used anywhere until we can make sure # it's fixed. See https://github.com/sorin-ionescu/prezto/issues/1443 and # https://github.com/sorin-ionescu/prezto/issues/1521 for more information. function noremoteglob { local -a argo local cmd="$1" for arg in ${argv:2}; do case $arg in ( ./* ) argo+=( ${~arg} ) ;; # local relative, glob ( /* ) argo+=( ${~arg} ) ;; # local absolute, glob ( *:* ) argo+=( ${arg} ) ;; # remote, noglob ( * ) argo+=( ${~arg} ) ;; # default, glob esac; done command $cmd "${(@)argo}" } ================================================ FILE: modules/wakeonlan/README.md ================================================ # Wake-on-LAN This module provides a wrapper around the [wakeonlan][1] tool. ## Usage 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: ```conf 00:11:22:33:44:55:66 192.168.0.255 ``` To wake that device, use the following command: ```console wake leto ``` For more information on the configuration file format, read the [wakeonlan man page][2]. ## Authors _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) [1]: http://gsd.di.uminho.pt/jpo/software/wakeonlan/ [2]: https://man.cx/wakeonlan [3]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/wakeonlan/functions/_wake ================================================ #compdef wake #autoload # # Completes wake. # # Authors: # Paul Gideon Dann # Sorin Ionescu # _arguments "1:device to wake:_files -W '$HOME/.wakeonlan'" && return 0 ================================================ FILE: modules/wakeonlan/functions/wake ================================================ # # Wakes devices via wakeonlan. # # Authors: # Paul Gideon Dann # Sorin Ionescu # # function wake { local config_file="$HOME/.wakeonlan/$1" if [[ ! -s "$config_file" ]]; then print "$0: invalid device file: $1" >&2 return 1 fi if (( ! $+commands[wakeonlan] )); then print "$0: command not found: wakeonlan" >&2 return 1 fi wakeonlan -f "$config_file" # } ================================================ FILE: modules/yum/README.md ================================================ # Yum Defines [_yum_][1] 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. ## Authors _The authors of this module should be contacted via the [issue tracker][2]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: http://yum.baseurl.org [2]: https://github.com/sorin-ionescu/prezto/issues ================================================ FILE: modules/yum/init.zsh ================================================ # # Defines yum aliases. # # Authors: # Simon # Sorin Ionescu # # Return if requirements are not found. if (( ! $+commands[yum] )); then return 1 fi # # Aliases # alias yumc='sudo yum clean all' # Cleans the cache. alias yumh='yum history' # Displays history. alias yumi='sudo yum install' # Installs package(s). alias yuml='yum list' # Lists packages. alias yumL='yum list installed' # Lists installed packages. alias yumq='yum info' # Displays package information. alias yumr='sudo yum remove' # Removes package(s). alias yums='yum search' # Searches for a package. alias yumu='sudo yum update' # Updates packages. alias yumU='sudo yum upgrade' # Upgrades packages. ================================================ FILE: runcoms/README.md ================================================ # Configuration Files Zsh has several system-wide and user-local configuration files. Additionally, Prezto has one user-local configuration file. System-wide configuration files are installation-dependent but are installed 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 The [configuration files][1] are read in the following order: 1. _`/etc/zshenv`_ 2. _`${ZDOTDIR:-$HOME}/.zshenv`_ 3. _`/etc/zprofile`_ 4. _`${ZDOTDIR:-$HOME}/.zprofile`_ 5. _`/etc/zshrc`_ 6. _`${ZDOTDIR:-$HOME}/.zshrc`_ 7. _`${ZDOTDIR:-$HOME}/.zpreztorc`_ 8. _`/etc/zlogin`_ 9. _`${ZDOTDIR:-$HOME}/.zlogin`_ 10. _`${ZDOTDIR:-$HOME}/.zlogout`_ 11. _`/etc/zlogout`_ ### zshenv This file is sourced by all instances of Zsh, and thus, it should be kept as 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][2] fans. See the description of _zlogin_ below for what it may contain. _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. ### zpreztorc This file configures Prezto. ### zlogin 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`_][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. ### zlogout This file is sourced by login shells during logout. It should be used for displaying messages and for deletion of files. ## Authors _The authors of these files should be contacted via the [issue tracker][5]._ - [Sorin Ionescu](https://github.com/sorin-ionescu) [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 ================================================ FILE: runcoms/zlogin ================================================ # # Executes commands at login post-zshrc. # # Authors: # Sorin Ionescu # # Execute code that does not affect the current session in the background. { # Compile the completion dump to increase startup speed. zcompdump="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump" if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then if command mkdir "${zcompdump}.zwc.lock" 2>/dev/null; then zcompile "$zcompdump" command rmdir "${zcompdump}.zwc.lock" 2>/dev/null fi fi } &! # Execute code only if STDERR is bound to a TTY. if [[ -o INTERACTIVE && -t 2 ]]; then # Print a random, hopefully interesting, adage. if (( $+commands[fortune] )); then fortune -s print fi fi >&2 ================================================ FILE: runcoms/zlogout ================================================ # # Executes commands at logout. # # Authors: # Sorin Ionescu # # Execute code only if STDERR is bound to a TTY. [[ -o INTERACTIVE && -t 2 ]] && { SAYINGS=( "So long and thanks for all the fish.\n -- Douglas Adams" "Good morning! And in case I don't see ya, good afternoon, good evening and goodnight.\n --Truman Burbank" ) # Print a randomly-chosen message: echo $SAYINGS[$(($RANDOM % $#SAYINGS + 1))] } >&2 ================================================ FILE: runcoms/zpreztorc ================================================ # # Sets Prezto options. # # Authors: # Sorin Ionescu # # # General # # Set case-sensitivity for completion, history lookup, etc. # zstyle ':prezto:*:*' case-sensitive 'yes' # Color output (auto set to 'no' on dumb terminals). zstyle ':prezto:*:*' color 'yes' # Add additional directories to load prezto modules from # zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib # Allow module overrides when pmodule-dirs causes module name collisions # zstyle ':prezto:load' pmodule-allow-overrides 'yes' # Set the Zsh modules to load (man zshmodules). # zstyle ':prezto:load' zmodule 'attr' 'stat' # Set the Zsh functions to load (man zshcontrib). # zstyle ':prezto:load' zfunction 'zargs' 'zmv' # Set the Prezto modules to load (browse modules). # The order matters. zstyle ':prezto:load' pmodule \ 'environment' \ 'terminal' \ 'editor' \ 'history' \ 'directory' \ 'spectrum' \ 'utility' \ 'completion' \ 'history-substring-search' \ 'prompt' # # Autosuggestions # # Set the query found color. # zstyle ':prezto:module:autosuggestions:color' found '' # # Completions # # 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' # # Editor # # Set the characters that are considered to be part of a word. # zstyle ':prezto:module:editor' wordchars '*?_-.[]~&;!#$%^(){}<>' # Set the key mapping style to 'emacs' or 'vi'. zstyle ':prezto:module:editor' key-bindings 'emacs' # Auto convert .... to ../.. # zstyle ':prezto:module:editor' dot-expansion 'yes' # Allow the zsh prompt context to be shown. #zstyle ':prezto:module:editor' ps-context 'yes' # # Git # # Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'. # zstyle ':prezto:module:git:status:ignore' submodules 'all' # # GNU Utility # # Set the command prefix on non-GNU systems. # zstyle ':prezto:module:gnu-utility' prefix 'g' # # History # # Set the file to save the history in when an interactive shell exits. # zstyle ':prezto:module:history' histfile "${ZDOTDIR:-$HOME}/.zsh_history" # Set the maximum number of events stored in the internal history list. # zstyle ':prezto:module:history' histsize 10000 # Set the maximum number of history events to save in the history file. # zstyle ':prezto:module:history' savehist 10000 # # History Substring Search # # Set the query found color. # zstyle ':prezto:module:history-substring-search:color' found '' # Set the query not found color. # zstyle ':prezto:module:history-substring-search:color' not-found '' # Set the search globbing flags. # zstyle ':prezto:module:history-substring-search' globbing-flags '' # Enable search case-sensitivity. # zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' # Enable search for fuzzy matches. # zstyle ':prezto:module:history-substring-search' fuzzy 'yes' # Enable search uniqueness. # zstyle ':prezto:module:history-substring-search' unique 'yes' # Enable prefixed search. # zstyle ':prezto:module:history-substring-search' prefixed 'yes' # # macOS # # Set the keyword used by `mand` to open man pages in Dash.app # zstyle ':prezto:module:osx:man' dash-keyword 'manpages' # # Pacman # # Set the Pacman frontend. # zstyle ':prezto:module:pacman' frontend 'yaourt' # # Prompt # # Set the prompt theme to load. # Setting it to 'random' loads a random theme. # Auto set to 'off' on dumb terminals. zstyle ':prezto:module:prompt' theme 'sorin' # Set the working directory prompt display length. # By default, it is set to 'short'. Set it to 'long' (without '~' expansion) # for longer or 'full' (with '~' expansion) for even longer prompt display. # zstyle ':prezto:module:prompt' pwd-length 'short' # Set the prompt to display the return code along with an indicator for non-zero # return codes. This is not supported by all prompts. # zstyle ':prezto:module:prompt' show-return-val 'yes' # # Python # # Auto switch the Python virtualenv on directory change. # zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' # Automatically initialize virtualenvwrapper if pre-requisites are met. # zstyle ':prezto:module:python:virtualenv' initialize 'yes' # # Ruby # # Auto switch the Ruby version on directory change. # zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' # # Screen # # Auto start a session when Zsh is launched in a local terminal. # zstyle ':prezto:module:screen:auto-start' local 'yes' # Auto start a session when Zsh is launched in a SSH connection. # zstyle ':prezto:module:screen:auto-start' remote 'yes' # # SSH # # Set the SSH identities to load into the agent. # zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github' # # Syntax Highlighting # # Set syntax highlighters. # By default, only the main highlighter is enabled. # zstyle ':prezto:module:syntax-highlighting' highlighters \ # 'main' \ # 'brackets' \ # 'pattern' \ # 'line' \ # 'cursor' \ # 'root' # # Set syntax highlighting styles. # zstyle ':prezto:module:syntax-highlighting' styles \ # 'builtin' 'bg=blue' \ # 'command' 'bg=blue' \ # 'function' 'bg=blue' # # Set syntax pattern styles. # zstyle ':prezto:module:syntax-highlighting' pattern \ # 'rm*-rf*' 'fg=white,bold,bg=red' # # Terminal # # Auto set the tab and window titles. # zstyle ':prezto:module:terminal' auto-title 'yes' # Set the window title format. # zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s' # Set the tab title format. # zstyle ':prezto:module:terminal:tab-title' format '%m: %s' # Set the terminal multiplexer title format. # zstyle ':prezto:module:terminal:multiplexer-title' format '%s' # # Tmux # # Auto start a session when Zsh is launched in a local terminal. # zstyle ':prezto:module:tmux:auto-start' local 'yes' # Auto start a session when Zsh is launched in a SSH connection. # zstyle ':prezto:module:tmux:auto-start' remote 'yes' # Integrate with iTerm2. # zstyle ':prezto:module:tmux:iterm' integrate 'yes' # Set the default session name: # zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' # # Utility # # Enabled safe options. This aliases cp, ln, mv and rm so that they prompt # before deleting or overwriting files. Set to 'no' to disable this safer # behavior. # zstyle ':prezto:module:utility' safe-ops 'yes' ================================================ FILE: runcoms/zprofile ================================================ # # Executes commands at login pre-zshrc. # # Authors: # Sorin Ionescu # # # Browser # if [[ -z "$BROWSER" && "$OSTYPE" == darwin* ]]; then export BROWSER='open' fi # # Editors # if [[ -z "$EDITOR" ]]; then export EDITOR='nano' fi if [[ -z "$VISUAL" ]]; then export VISUAL='nano' fi if [[ -z "$PAGER" ]]; then export PAGER='less' fi # # Language # if [[ -z "$LANG" ]]; then export LANG='en_US.UTF-8' fi # # Paths # # Ensure path arrays do not contain duplicates. typeset -gU cdpath fpath mailpath path # Set the list of directories that cd searches. # cdpath=( # $cdpath # ) # Set the list of directories that Zsh searches for programs. path=( $HOME/{,s}bin(N) /opt/{homebrew,local}/{,s}bin(N) /usr/local/{,s}bin(N) $path ) # # Less # # Set the default Less options. # Mouse-wheel scrolling has been disabled by -X (disable screen clearing). # Remove -X to enable it. if [[ -z "$LESS" ]]; then export LESS='-g -i -M -R -S -w -X -z-4' fi # Set the Less input preprocessor. # Try both `lesspipe` and `lesspipe.sh` as either might exist on a system. if [[ -z "$LESSOPEN" ]] && (( $#commands[(i)lesspipe(|.sh)] )); then export LESSOPEN="| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-" fi ================================================ FILE: runcoms/zshenv ================================================ # # Defines environment variables. # # Authors: # Sorin Ionescu # # Ensure that a non-login, non-interactive shell has a defined environment. if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then source "${ZDOTDIR:-$HOME}/.zprofile" fi ================================================ FILE: runcoms/zshrc ================================================ # # Executes commands at the start of an interactive session. # # Authors: # Sorin Ionescu # # Source Prezto. if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" fi # Customize to your needs...