[
  {
    "path": ".editorconfig",
    "content": "[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\ntrim_trailing_whitespace = true\n\n[{.gitattributes,.gitignore,.gitmodules}]\nindent_style = tab\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "<!-- Please check if a similar issue already exists or has been closed before before opening your issue. -->\n\n### Description\n<!-- Provide a general description of the bug or feature -->\n\n### Expected behavior\n\n<!-- What you expected to happen -->\n\n### Actual behavior\n\n<!-- What actually happened -->\n\n### Steps to Reproduce\n\n1. [First Step]\n2. [Second Step]\n3. [and so on...]\n\n### Versions\n\n  - Prezto commit:\n  - ZSH version:\n  - OS information:\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md)\nbefore submitting your pull request.\n\nFixes #\n\n## Proposed Changes\n\n  -\n  -\n  -\n"
  },
  {
    "path": ".gitignore",
    "content": "*.zwc\n*.zwc.old\nmodules/*/cache.zsh\ncontrib\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"modules/autosuggestions/external\"]\n\tpath = modules/autosuggestions/external\n\turl = https://github.com/zsh-users/zsh-autosuggestions.git\n[submodule \"modules/history-substring-search/external\"]\n\tpath = modules/history-substring-search/external\n\turl = https://github.com/zsh-users/zsh-history-substring-search.git\n[submodule \"modules/syntax-highlighting/external\"]\n\tpath = modules/syntax-highlighting/external\n\turl = https://github.com/zsh-users/zsh-syntax-highlighting.git\n[submodule \"modules/completion/external\"]\n\tpath = modules/completion/external\n\turl = https://github.com/zsh-users/zsh-completions.git\n[submodule \"modules/prompt/external/powerline\"]\n\tpath = modules/prompt/external/powerline\n\turl = https://github.com/davidjrice/prezto_powerline.git\n[submodule \"modules/prompt/external/agnoster\"]\n\tpath = modules/prompt/external/agnoster\n\turl = https://github.com/agnoster/agnoster-zsh-theme.git\n[submodule \"modules/prompt/external/pure\"]\n\tpath = modules/prompt/external/pure\n\turl = https://github.com/sindresorhus/pure.git\n[submodule \"modules/fasd/external\"]\n\tpath = modules/fasd/external\n\turl = https://github.com/whjvenyl/fasd.git\n[submodule \"modules/prompt/external/async\"]\n\tpath = modules/prompt/external/async\n\turl = https://github.com/mafredri/zsh-async.git\n[submodule \"modules/prompt/external/powerlevel10k\"]\n\tpath = modules/prompt/external/powerlevel10k\n\turl = https://github.com/romkatv/powerlevel10k.git\n\tshallow = true\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThis project would not exist without all of its users and [contributors][1].\n\nIf you have ideas on how to make the configuration easier to maintain or\nimprove its performance, do not hesitate to fork and send pull requests.\n\n## Issue Reporting\n\n- Check that the issue has not already been reported.\n- Check that the issue has not already been fixed in the latest code.\n- Open an issue with a clear title and description in grammatically correct,\n  complete sentences.\n\n## Pull Request\n\n- Read [how to properly contribute to open source projects on GitHub][2].\n- Use a topic branch to easily amend a pull request later, if necessary.\n- Write [good commit messages][3].\n- Squash commits on the topic branch before opening a pull request.\n- Use the same coding style and spacing.\n- Open a [pull request][4] that relates to but one subject with a clear title\n  and description in grammatically correct, complete sentences.\n\n### Code Style\n\nThis project follows the [Google Shell Style Guide][5] when possible. However,\nthere are a number of additional things to keep in mind.\n\n- Local variables should be used whenever possible.\n- Prefer `zstyle` over environment variables for configuration.\n- Prefer (( ... )) over [[ ... ]] for arithmetic expression.\n- Use the function keyword to define functions.\n- The 80 character hard limit can be waived for readability.\n\n### Using an Alternative *zprezto* Directory\n\nTo work on Prezto without affecting your current configuration:\n\n```sh\nmkdir devel-zprezto\ncd devel-zprezto\ngit clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto\nZDOTDIR=$(pwd)\necho \"Your development ZDOTDIR is $ZDOTDIR\"\nsetopt EXTENDED_GLOB\nfor rcfile in \"${ZDOTDIR:-$HOME}\"/.zprezto/runcoms/^README.md(.N); do\n    ln -s \"$rcfile\" \"${ZDOTDIR:-$HOME}/.${rcfile:t}\"\ndone\n```\n\nThen to start zsh in this development environment you will run:\n\n```console\nZDOTDIR=/path/to/devel-zprezto zsh\n```\n\n### Modules\n\n- A *README.md* must be present.\n- Large functions must be placed in a *functions* directory.\n- Functions that take arguments must have completion.\n\n### Themes\n\n- A screenshots section must be present in the file header.\n- The pull request description must have [embedded screenshots][6].\n\n[1]: https://github.com/sorin-ionescu/prezto/contributors\n[2]: https://gun.io/blog/how-to-github-fork-branch-and-pull-request\n[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html\n[4]: https://help.github.com/articles/using-pull-requests\n[5]: https://google.github.io/styleguide/shell.xml\n[6]: https://github.github.com/gfm/#images\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2009-2011 Robby Russell and contributors\nCopyright (c) 2011-2017 Sorin Ionescu and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE\n"
  },
  {
    "path": "README.md",
    "content": "# Prezto — Instantly Awesome Zsh\n\nPrezto is the configuration framework for [Zsh][1]; it enriches the command line\ninterface environment with sane defaults, aliases, functions, auto completion,\nand prompt themes.\n\n## Installation\n\n### Manual\n\nPrezto will work with any recent release of Zsh, but the minimum required\nversion is **4.3.11**.\n\n01. Launch Zsh:\n\n    ```console\n    zsh\n    ```\n\n02. Clone the repository:\n\n    ```console\n    git clone --recursive https://github.com/sorin-ionescu/prezto.git \"${ZDOTDIR:-$HOME}/.zprezto\"\n    ```\n\n    <details>\n      <summary><em>Optional: Installing in <code>$XDG_CONFIG_HOME</code></em></summary>\n\n      Optionally, if you already have `$XDG_CONFIG_HOME` configured (usually as\n      _`$HOME/.config`_ by default) and intend to install Prezto under\n      _`$XDG_CONFIG_HOME/zsh`_ instead, you can clone the repository there and\n      configure `$ZDOTDIR` separately if not already configured.\n\n      - Clone the repository:\n\n        ```console\n        git clone --recursive https://github.com/sorin-ionescu/prezto.git \"${ZDOTDIR:-${XDG_CONFIG_HOME:-$HOME/.config}/zsh}/.zprezto\"\n        ```\n\n      - Configure `$XDG_CONFIG_HOME` and `$ZDOTDIR` in _`$HOME/.zshenv`_:\n\n        ```sh\n        export XDG_CONFIG_HOME=\"${XDG_CONFIG_HOME:=$HOME/.config}\"\n        [[ -d $XDG_CONFIG_HOME/zsh ]] && export ZDOTDIR=\"$XDG_CONFIG_HOME/zsh\"\n        source \"$ZDOTDIR/.zshenv\"\n        ```\n\n    </details>\n\n03. Create a new Zsh configuration by copying/linking the Zsh configuration\n    files provided:\n\n    ```console\n    setopt EXTENDED_GLOB\n    for rcfile in \"${ZDOTDIR:-$HOME}\"/.zprezto/runcoms/^README.md(.N); do\n      ln -s \"$rcfile\" \"${ZDOTDIR:-$HOME}/.${rcfile:t}\"\n    done\n    ```\n\n    **Note:** If you already have any of the given configuration files, `ln` in\n    the above operation will cause an error. In simple cases, you can load\n    Prezto by adding the line `source \"${ZDOTDIR:-$HOME}/.zprezto/init.zsh\"` to\n    the bottom of your _`${ZDOTDIR:-$HOME}/.zshrc`_ and keep the rest of your\n    Zsh configuration intact. For more complicated setups, we recommend that you\n    back up your original configs and replace them with the provided Prezto\n    [_`runcoms`_][10].\n\n04. Set Zsh as your default shell:\n\n    ```console\n    chsh -s /bin/zsh\n    ```\n\n05. Open a new Zsh terminal window or tab.\n\n### Troubleshooting\n\nIf you are not able to find certain commands after switching to Prezto, modify\nthe `PATH` variable in _`${ZDOTDIR:-$HOME}/.zprofile`_ then open a new Zsh\nterminal window or tab.\n\n## Updating\n\nRun `zprezto-update` to automatically check if there is an update to Prezto.\nIf there are no file conflicts, Prezto and its submodules will be automatically\nupdated. If there are conflicts you will be instructed to go into the\n`$ZPREZTODIR` directory and resolve them yourself.\n\nTo pull the latest changes and update submodules manually:\n\n```console\ncd $ZPREZTODIR\ngit pull\ngit submodule sync --recursive\ngit submodule update --init --recursive\n```\n\n## Usage\n\nPrezto has many features disabled by default. Read the source code and the\naccompanying README files to learn about what is available.\n\n### Modules\n\n01. Browse [_`modules`_][9] to see what is available.\n02. Load the modules you need in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then open\n    a new Zsh terminal window or tab.\n\n### Themes\n\n01. For a list of themes, type `prompt -l`.\n02. To preview a theme, type `prompt -p name`.\n03. Load the theme you like in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ and then\n    open a new Zsh terminal window or tab.\n\n    ![sorin theme][2]\n    Note that the [_`git`_][11] module may be required for special symbols to\n    appear, such as those on the right of the above image. Add `'git'` to the\n    `pmodule` list (under `zstyle ':prezto:load' pmodule \\` in your\n    _`${ZDOTDIR:-$HOME}/.zpreztorc`_) to enable this module.\n\n### External Modules\n\n01. By default modules will be loaded from [_`/modules`_][9] and _`/contrib`_.\n02. Additional module directories can be added to the\n    `:prezto:load:pmodule-dirs` setting in _`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n    Note that module names need to be unique or they will cause an error when\n    loading.\n\n    ```sh\n    zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib\n    ```\n\n## Customization\n\nThe project is managed via [Git][3]. We highly recommend that you fork this\nproject so that you can commit your changes and push them to your fork on\n[GitHub][4] to preserve them. If you do not know how to use Git, follow this\n[tutorial][5] and bookmark this [reference][6].\n\n## Resources\n\nThe [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable.\n\n## License\n\nThis project is licensed under the MIT License.\n\n[1]: https://www.zsh.org\n[2]: https://i.imgur.com/nrGV6pg.png \"sorin theme\"\n[3]: https://git-scm.com\n[4]: https://github.com\n[5]: https://gitimmersion.com\n[6]: https://git.github.io/git-reference/\n[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf\n[8]: https://grml.org/zsh/zsh-lovers.html\n[9]: modules#readme\n[10]: runcoms#readme\n[11]: modules/git#readme\n"
  },
  {
    "path": "init.zsh",
    "content": "#\n# Initializes Prezto.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Version Check\n#\n\n# Check for the minimum supported version.\nmin_zsh_version='4.3.11'\nif ! autoload -Uz is-at-least || ! is-at-least \"$min_zsh_version\"; then\n  printf \"prezto: old shell detected, minimum required: %s\\n\" \"$min_zsh_version\" >&2\n  return 1\nfi\nunset min_zsh_version\n\n# zprezto convenience updater\n# The function is surrounded by ( ) instead of { } so it starts in a subshell\n# and won't affect the environment of the calling shell\nfunction zprezto-update {\n  (\n    function cannot-fast-forward {\n      local STATUS=\"$1\"\n      [[ -n \"${STATUS}\" ]] && printf \"%s\\n\" \"${STATUS}\"\n      printf \"Unable to fast-forward the changes. You can fix this by \"\n      printf \"running\\ncd '%s' and then\\n'git pull' \" \"${ZPREZTODIR}\"\n      printf \"to manually pull and possibly merge in changes\\n\"\n    }\n    builtin cd -q -- \"${ZPREZTODIR}\" || return 7\n    local orig_branch=\"$(git symbolic-ref HEAD 2> /dev/null | cut -d '/' -f 3)\"\n    if [[ \"$orig_branch\" == \"master\" ]]; then\n      git fetch || return \"$?\"\n      local UPSTREAM=$(git rev-parse '@{u}')\n      local LOCAL=$(git rev-parse HEAD)\n      local REMOTE=$(git rev-parse \"$UPSTREAM\")\n      local BASE=$(git merge-base HEAD \"$UPSTREAM\")\n      if [[ $LOCAL == $REMOTE ]]; then\n        printf \"There are no updates.\\n\"\n        return 0\n      elif [[ $LOCAL == $BASE ]]; then\n        printf \"There is an update available. Trying to pull.\\n\\n\"\n        if git pull --ff-only; then\n          printf \"Syncing submodules\\n\"\n          git submodule sync --recursive\n          git submodule update --init --recursive\n          return $?\n        else\n          cannot-fast-forward\n          return 1\n        fi\n      elif [[ $REMOTE == $BASE ]]; then\n        cannot-fast-forward \"Commits in master that aren't in upstream.\"\n        return 1\n      else\n        cannot-fast-forward \"Upstream and local have diverged.\"\n        return 1\n      fi\n    else\n      printf \"zprezto install at '%s' is not on the master branch \" \"${ZPREZTODIR}\"\n      printf \"(you're on '%s')\\nUnable to automatically update.\\n\" \"${orig_branch}\"\n      return 1\n    fi\n    return 1\n  )\n}\n#\n# Module Loader\n#\n\n# Loads Prezto modules.\nfunction pmodload {\n  local -a pmodules\n  local -a pmodule_dirs\n  local -a locations\n  local pmodule\n  local pmodule_location\n  local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)'\n\n  # Load in any additional directories and warn if they don't exist\n  zstyle -a ':prezto:load' pmodule-dirs 'user_pmodule_dirs'\n  for user_dir in \"$user_pmodule_dirs[@]\"; do\n    if [[ ! -d \"$user_dir\" ]]; then\n      echo \"$0: Missing user module dir: $user_dir\"\n    fi\n  done\n\n  pmodule_dirs=(\"$ZPREZTODIR/modules\" \"$ZPREZTODIR/contrib\" \"$user_pmodule_dirs[@]\")\n\n  # $argv is overridden in the anonymous function.\n  pmodules=(\"$argv[@]\")\n\n  # Load Prezto modules.\n  for pmodule in \"$pmodules[@]\"; do\n    if zstyle -t \":prezto:module:$pmodule\" loaded 'yes' 'no'; then\n      continue\n    else\n      locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)})\n      if (( ${#locations} > 1 )); then\n        if ! zstyle -t ':prezto:load' pmodule-allow-overrides 'yes'; then\n          print \"$0: conflicting module locations: $locations\"\n          continue\n        fi\n      elif (( ${#locations} < 1 )); then\n        print \"$0: no such module: $pmodule\"\n        continue\n      fi\n\n      # Grab the full path to this module\n      pmodule_location=${locations[-1]}\n\n      # Add functions to $fpath.\n      fpath=(${pmodule_location}/functions(-/FN) $fpath)\n\n      function {\n        local pfunction\n\n        # Extended globbing is needed for listing autoloadable function directories.\n        setopt LOCAL_OPTIONS EXTENDED_GLOB\n\n        # Load Prezto functions.\n        for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do\n          autoload -Uz \"$pfunction\"\n        done\n      }\n\n      if [[ -s \"${pmodule_location}/init.zsh\" ]]; then\n        source \"${pmodule_location}/init.zsh\"\n      elif [[ -s \"${pmodule_location}/${pmodule}.plugin.zsh\" ]]; then\n        source \"${pmodule_location}/${pmodule}.plugin.zsh\"\n      fi\n\n      if (( $? == 0 )); then\n        zstyle \":prezto:module:$pmodule\" loaded 'yes'\n      else\n        # Remove the $fpath entry.\n        fpath[(r)${pmodule_location}/functions]=()\n\n        function {\n          local pfunction\n\n          # Extended globbing is needed for listing autoloadable function\n          # directories.\n          setopt LOCAL_OPTIONS EXTENDED_GLOB\n\n          # Unload Prezto functions.\n          for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do\n            unfunction \"$pfunction\"\n          done\n        }\n\n        zstyle \":prezto:module:$pmodule\" loaded 'no'\n      fi\n    fi\n  done\n}\n\n#\n# Prezto Initialization\n#\n\n# This finds the directory prezto is installed to so plugin managers don't need\n# to rely on dirty hacks to force prezto into a directory. Additionally, it\n# needs to be done here because inside the pmodload function ${0:h} evaluates to\n# the current directory of the shell rather than the prezto dir.\nZPREZTODIR=${0:h}\n\n# Source the Prezto configuration file.\nif [[ -s \"${ZDOTDIR:-$HOME}/.zpreztorc\" ]]; then\n  source \"${ZDOTDIR:-$HOME}/.zpreztorc\"\nfi\n\n# Disable color and theme in dumb terminals.\nif [[ $TERM == dumb ]]; then\n  zstyle ':prezto:*:*' color 'no'\n  zstyle ':prezto:module:prompt' theme 'off'\nfi\n\n# Load Zsh modules.\nzstyle -a ':prezto:load' zmodule 'zmodules'\nfor zmodule (\"$zmodules[@]\") zmodload \"zsh/${(z)zmodule}\"\nunset zmodule{s,}\n\n# Load more specific 'run-help' function from $fpath.\n(( $+aliases[run-help] )) && unalias run-help && autoload -Uz run-help\n\n# Autoload Zsh functions.\nzstyle -a ':prezto:load' zfunction 'zfunctions'\nfor zfunction (\"$zfunctions[@]\") autoload -Uz \"$zfunction\"\nunset zfunction{s,}\n\n# Load Prezto modules.\nzstyle -a ':prezto:load' pmodule 'pmodules'\npmodload \"$pmodules[@]\"\nunset pmodules\n"
  },
  {
    "path": "modules/README.md",
    "content": "# Modules\n\nLoad modules in _`${ZDOTDIR:-$HOME}/.zpreztorc`_. The order matters.\n\n```sh\nzstyle ':prezto:load' pmodule 'environment' 'terminal'\n```\n\n## Archive\n\nProvides functions to list and extract archives.\n\n## Autosuggestions\n\nIntegrates zsh-autosuggestions into Prezto.\n\n## Command-Not-Found\n\nLoads the command-not-found tool on macOS or Debian-based distributions.\n\n## Completion\n\nLoads and configures <kbd>TAB</kbd> completion and provides additional\ncompletions from the zsh-completions project.\n\n## Directory\n\nSets directory options and defines directory aliases.\n\n## DNF\n\nDefines _dnf_ aliases.\n\n## Dpkg\n\nDefines _dpkg_ aliases and functions.\n\n## Editor\n\nSets key bindings.\n\n## Emacs\n\nEnables Emacs dependency management.\n\n## Environment\n\nSets general shell options and defines environment variables.\n\n## Fasd\n\nMaintains a frequently used file and directory list for fast access.\n\n## Git\n\nEnhances the Git distributed version control system by providing aliases,\nfunctions and by exposing repository status information to prompts.\n\n## GNU Utility\n\nProvides for the interactive use of GNU utilities on non-GNU systems.\n\n## GPG\n\nProvides for an easier use of GPG by setting up gpg-agent.\n\n## Haskell\n\nEnables local Haskell package installation.\n\n## Helper\n\nProvides helper functions for developing modules.\n\n## History\n\nSets history options and defines history aliases.\n\n## History Substring Search\n\nIntegrates zsh-history-substring-search into Prezto.\n\n## Homebrew\n\nDefines Homebrew aliases.\n\n## MacPorts\n\nDefines MacPorts aliases and adds MacPorts directories to path variables.\n\n## Node.js\n\nProvides utility functions for Node.js and loads npm completion.\n\n## OCaml\n\nInitializes OCaml package management.\n\n## OSX\n\nDefines macOS aliases and functions.\n\n## Pacman\n\nProvides aliases and functions for the Pacman package manager and frontends.\n\n## Perl\n\nEnables local Perl module installation on macOS and defines alises.\n\n## Prompt\n\nLoads prompt themes.\n\n## Python\n\nEnables local Python and local Python package installation.\n\n## Ruby on Rails\n\nDefines Ruby on Rails aliases.\n\n## Rsync\n\nDefines rsync aliases.\n\n## Ruby\n\nConfigures Ruby local gem installation, loads version managers, and defines\naliases.\n\n## GNU Screen\n\nDefines GNU Screen aliases and provides for auto launching it at start-up.\n\n## Spectrum\n\nProvides for easier use of 256 colors and effects.\n\n## SSH\n\nProvides for an easier use of SSH by setting up ssh-agent.\n\n## Syntax Highlighting\n\nIntegrates zsh-syntax-highlighting into Prezto.\n\n## Terminal\n\nSets terminal window and tab titles.\n\n## Tmux\n\nDefines tmux aliases and provides for auto launching it at start-up.\n\n## Utility\n\nDefines general aliases and functions.\n\n## Wake-on-LAN\n\nThis module provides a wrapper around the wakeonlan tool.\n\n## Yum\n\nDefines yum aliases.\n"
  },
  {
    "path": "modules/archive/README.md",
    "content": "# Archive\n\nProvides functions to create, list, and extract archives.\n\nThis module must be loaded _before_ the [_`completion`_][1] module so that the\nprovided completion definitions are loaded automatically by _`completion`_\nmodule.\n\n## Functions\n\n- `archive` creates an archive based on the provided archive name.\n- `lsarchive` lists the contents of one or more archives.\n- `unarchive` extracts the contents of one or more archives.\n\n## Supported Formats\n\nThe following archive formats are supported when the required utilities are\ninstalled:\n\n- _.tar.gz_, _.tgz_ require `tar` (optionally `pigz`).\n- _.tar.bz2_, _.tbz_ require `tar` (optionally `pbzip2`).\n- _.tar.xz_, _.txz_ require `tar` with _xz_ support.\n- _.tar.zma_, _.tlz_ require `tar` with _lzma_ support.\n- _.tar_ requires `tar`.\n- _.gz_ requires `gunzip`.\n- _.bz2_ requires `bunzip2`.\n- _.xz_ requires `unxz`.\n- _.lzma_ requires `unlzma`.\n- _.Z_ requires `uncompress`.\n- _.zip_, _.jar_ requires `unzip`.\n- _.rar_ requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.\n- _.7z_ requires `7za`.\n- _.deb_ requires `ar`, `tar`.\n\nAdditionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them\nover their traditional counterparts, `gzip` and `bzip2` respectively, to take\nfull advantage of all available CPU cores for compression.\n\n## Alternatives\n\nSpecifically on macOS, [The Unarchiver][2] provides a similar command line tool\nwhich doesn't depend on a number of other programs being installed.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Matt Hamilton](https://github.com/Eriner)\n\n[1]: ../completion#readme\n[2]: https://theunarchiver.com/command-line\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/archive/functions/_lsarchive",
    "content": "#compdef lsarchive\n#autoload\n\n#\n# Completes lsarchive.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n  '(-v --verbose)'{-v,--remove}'[verbose archive listing]' \\\n  \"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z)(-.)'\" && return 0\n"
  },
  {
    "path": "modules/archive/functions/_unarchive",
    "content": "#compdef unarchive\n#autoload\n\n#\n# Completes unarchive.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n  '(-r --remove)'{-r,--remove}'[remove archive]' \\\n  \"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|zst|jar|rar|7z|deb)(-.)'\" && return 0\n"
  },
  {
    "path": "modules/archive/functions/archive",
    "content": "#\n# Creates archive file\n#\n# Authors:\n#   Matt Hamilton <m@tthamilton.com>\n#\n\n# function archive {\n\nlocal archive_name path_to_archive _gzip_bin _bzip2_bin _xz_bin _zstd_bin\n\nif (( $# < 2 )); then\n  cat >&2 <<EOF\nusage: $0 [archive_name.zip] [/path/to/include/into/archive ...]\n\nWhere 'archive.zip' uses any of the following extensions:\n\n.tar.gz, .tar.bz2, .tar.xz, .tar.lzma, .tar.zst, .tar, .zip, .rar, .7z\n\nThere is no '-v' switch; all operations are verbose.\nEOF\nreturn 1\nfi\n\n# we are quitting (above) if there are not exactly 2 vars,\n#  so we don't need any argc check here.\n\n# strip the path, just in case one is provided for some reason\narchive_name=\"${1:t}\"\n# let paths be handled by actual archive helper\npath_to_archive=\"${@:2}\"\n\n# here, we check for dropin/multi-threaded replacements\n# this should eventually be moved to modules/archive/init.zsh\n# as a global alias\nif (( $+commands[pigz] )); then\n  _gzip_bin='pigz'\nelse\n  _gzip_bin='gzip'\nfi\n\nif (( $+commands[pixz] )); then\n  _xz_bin='pixz'\nelse\n  _xz_bin='xz'\nfi\n\nif (( $+commands[lbzip2] )); then\n  _bzip2_bin='lbzip2'\nelif (( $+commands[pbzip2] )); then\n  _bzip2_bin='pbzip2'\nelse\n  _bzip2_bin='bzip2'\nfi\n\n_zstd_bin='zstd'\n\ncase \"${archive_name}\" in\n  (*.tar.gz|*.tgz) tar -cvf \"${archive_name}\" --use-compress-program=\"${_gzip_bin}\" \"${=path_to_archive}\" ;;\n  (*.tar.bz2|*.tbz|*.tbz2) tar -cvf \"${archive_name}\" --use-compress-program=\"${_bzip2_bin}\" \"${=path_to_archive}\" ;;\n  (*.tar.xz|*.txz) tar -cvf \"${archive_name}\" --use-compress-program=\"${_xz_bin}\" \"${=path_to_archive}\" ;;\n  (*.tar.lzma|*.tlz) tar -cvf \"${archive_name}\" --lzma \"${=path_to_archive}\" ;;\n  (*.tar.zst|*.tzst) tar -cvf \"${archive_name}\" --use-compress-program=\"${_zstd_bin}\" \"${=path_to_archive}\" ;;\n  (*.tar) tar -cvf \"${archive_name}\" \"${=path_to_archive}\" ;;\n  (*.zip|*.jar) zip -r \"${archive_name}\" \"${=path_to_archive}\" ;;\n  (*.rar) rar a \"${archive_name}\" \"${=path_to_archive}\" ;;\n  (*.7z) 7za a \"${archive_name}\" \"${=path_to_archive}\" ;;\n  (*.gz) print \"\\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz\" ;;\n  (*.bz2) print \"\\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2\" ;;\n  (*.xz) print \"\\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz\" ;;\n  (*.lzma) print \"\\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma\" ;;\n  (*) print \"\\nunknown archive type for archive: ${archive_name}\" ;;\nesac\n\n# }\n"
  },
  {
    "path": "modules/archive/functions/lsarchive",
    "content": "#\n# Lists the contents of archives.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function lsarchive {\n\nlocal verbose\n\nif (( $# == 0 )); then\n  cat >&2 <<EOF\nusage: $0 [-option] [file ...]\n\noptions:\n    -v, --verbose    verbose archive listing\n\nReport bugs to <sorin.ionescu@gmail.com>.\nEOF\nfi\n\nif [[ \"$1\" == \"-v\" || \"$1\" == \"--verbose\" ]]; then\n  verbose=0\n  shift\nfi\n\nwhile (( $# > 0 )); do\n  if [[ ! -s \"$1\" ]]; then\n    print \"$0: file not valid: $1\" >&2\n    shift\n    continue\n  fi\n\n  case \"$1:l\" in\n    (*.tar.gz|*.tgz) tar t${verbose:+v}vzf \"$1\" ;;\n    (*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf \"$1\" ;;\n    (*.tar.xz|*.txz) tar --xz --help &> /dev/null \\\n      && tar --xz -t${verbose:+v}f \"$1\" \\\n      || xzcat \"$1\" | tar t${verbose:+v}f - ;;\n    (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \\\n      && tar --lzma -t${verbose:+v}f \"$1\" \\\n      || lzcat \"$1\" | tar x${verbose:+v}f - ;;\n    (*.tar.zst|*.tzst) tar -I zstd -t${verbose:+v}f \"$1\" ;;\n    (*.tar) tar t${verbose:+v}f \"$1\" ;;\n    (*.zip|*.jar) unzip -l${verbose:+v} \"$1\" ;;\n    (*.rar) ( (( $+commands[unrar] )) \\\n      && unrar ${${verbose:+v}:-l} \"$1\" ) \\\n      || ( (( $+commands[rar] )) \\\n      && rar ${${verbose:+v}:-l} \"$1\" ) \\\n      || lsar ${verbose:+-l} \"$1\" ;;\n    (*.7z) 7za l \"$1\" ;;\n    (*)\n      print \"$0: cannot list: $1\" >&2\n      success=1\n    ;;\n  esac\n\n  shift\ndone\n\n# }\n"
  },
  {
    "path": "modules/archive/functions/unarchive",
    "content": "#\n# Extracts the contents of archives.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function unarchive {\n\nlocal remove_archive\nlocal success\nlocal file_name\nlocal file_path\nlocal extract_dir\nlocal _gzip_bin _bzip2_bin _xz_bin _zstd_bin\n\nif (( $# == 0 )); then\n  cat >&2 <<EOF\nusage: $0 [-option] [file ...]\n\noptions:\n    -r, --remove    remove archive\n\nReport bugs to <sorin.ionescu@gmail.com>.\nEOF\nfi\n\nremove_archive=1\nif [[ \"$1\" == \"-r\" || \"$1\" == \"--remove\" ]]; then\n  remove_archive=0\n  shift\nfi\n\n# here, we check for dropin/multi-threaded replacements\n# this should eventually be moved to modules/archive/init.zsh\n# as a global alias\nif (( $+commands[unpigz] )); then\n  _gzip_bin='unpigz'\nelse\n  _gzip_bin='gunzip'\nfi\n\nif (( $+commands[pixz] )); then\n  _xz_bin='pixz -d'\nelse\n  _xz_bin='xz'\nfi\n\nif (( $+commands[lbunzip2] )); then\n  _bzip2_bin='lbunzip2'\nelif (( $+commands[pbunzip2] )); then\n  _bzip2_bin='pbunzip2'\nelse\n  _bzip2_bin='bunzip2'\nfi\n\n_zstd_bin='zstd'\n\nwhile (( $# > 0 )); do\n  if [[ ! -s \"$1\" ]]; then\n    print \"$0: file not valid: $1\" >&2\n    shift\n    continue\n  fi\n\n  success=0\n  file_name=\"${1:t}\"\n  file_path=\"${1:A}\"\n  extract_dir=\"${file_name:r}\"\n  case \"$1:l\" in\n    (*.tar.gz|*.tgz) tar -xvf \"$1\" --use-compress-program=\"${_gzip_bin}\" ;;\n    (*.tar.bz2|*.tbz|*.tbz2) tar -xvf \"$1\" --use-compress-program=\"${_bzip2_bin}\" ;;\n    (*.tar.xz|*.txz) tar -xvf \"$1\" --use-compress-program=\"${_xz_bin}\" ;;\n    (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \\\n      && tar --lzma -xvf \"$1\" \\\n      || lzcat \"$1\" | tar -xvf - ;;\n    (*.tar.zst|*.tzst) tar -xvf \"$1\" --use-compress-program=\"${_zstd_bin}\" ;;\n    (*.tar) tar -xvf \"$1\" ;;\n    (*.gz) gunzip \"$1\" ;;\n    (*.bz2) bunzip2 \"$1\" ;;\n    (*.xz) unxz \"$1\" ;;\n    (*.lzma) unlzma \"$1\" ;;\n    (*.Z) uncompress \"$1\" ;;\n    (*.zip|*.jar) unzip \"$1\" -d $extract_dir ;;\n    (*.rar) ( (( $+commands[unrar] )) \\\n      && unrar x -ad \"$1\" ) \\\n      || ( (( $+commands[rar] )) \\\n      && rar x -ad \"$1\" ) \\\n      || unar -d \"$1\" ;;\n    (*.7z) 7za x \"$1\" ;;\n    (*.deb)\n      mkdir -p \"$extract_dir/control\"\n      mkdir -p \"$extract_dir/data\"\n      cd \"$extract_dir\"; ar vx \"${file_path}\" > /dev/null\n      cd control; tar xvf ../control.tar.*\n      cd ../data; tar xvf ../data.tar.*\n      cd ..; rm control.tar.* data.tar.* debian-binary\n      cd ..\n    ;;\n    (*)\n      print \"$0: cannot extract: $1\" >&2\n      success=1\n    ;;\n  esac\n\n  (( success = $success > 0 ? $success : $? ))\n  (( $success == 0 )) && (( $remove_archive == 0 )) && rm \"$1\"\n  shift\ndone\n\n# }\n"
  },
  {
    "path": "modules/autosuggestions/README.md",
    "content": "# Autosuggestions\n\nIntegrates [zsh-autosuggestions][1] into Prezto, which implements the\n[Fish shell][2]'s autosuggestions feature, where the user can type in any part\nof a previously entered command and Zsh suggests commands as you type based on\nhistory and completions.\n\nIf this module is used in conjunction with the [_`syntax-highlighting`_][3]\nmodule, this module must be loaded _after_ the _`syntax-highlighting`_ module.\n\nAdditionally, if this module is used in conjunction with the\n[_`history-substring-search`_][4] module, this module must be loaded _after_ the\n_`history-substring-search`_ module as well.\n\nTo elaborate, the relative order of loading the modules would be\n_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.\n\n## Contributors\n\nNew features and bug fixes should be submitted to the [zsh-autosuggestions][1]\nproject according to its rules and regulations. This module will be synchronized\nagainst it.\n\n## Settings\n\n### Highlighting\n\nIf colors are enabled, _autosuggestions_ will automatically highlight\npositive results.\n\nTo enable highlighting for this module only, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:autosuggestions' color 'yes'\n```\n\nTo set the query found color, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:autosuggestions:color' found ''\n```\n\n## Troubleshooting\n\n### Autosuggestions from previous sessions don't show up\n\nFor autosuggestions from previous shell sessions to work, please make sure you\nalso have the `history` module enabled.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/tarruda/zsh-autosuggestions\n[2]: https://fishshell.com\n[3]: ../syntax-highlighting#readme\n[4]: ../history-substring-search#readme\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/autosuggestions/init.zsh",
    "content": "#\n# Integrates zsh-autosuggestions into Prezto.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'editor'\n\n# Source module files.\nsource \"${0:h}/external/zsh-autosuggestions.zsh\" || return 1\n\n#\n# Highlighting\n#\n\n# Set highlight color, default 'fg=8'.\nzstyle -s ':prezto:module:autosuggestions:color' found \\\n  'ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE' || ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'\n\n# Disable highlighting.\nif ! zstyle -t ':prezto:module:autosuggestions' color; then\n  ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=''\nfi\n\n#\n# Key Bindings\n#\n\nif [[ -n \"$key_info\" ]]; then\n  # vi\n  bindkey -M viins \"$key_info[Control]F\" vi-forward-word\n  bindkey -M viins \"$key_info[Control]E\" vi-add-eol\nfi\n"
  },
  {
    "path": "modules/command-not-found/README.md",
    "content": "# Command-Not-Found\n\nWhen you try to use a command that is not available locally, searches the\npackage manager for a package offering that command and suggests the proper\ninstall command.\n\nDebian and Arch Linux based distributions use the [`command-not-found`][1] tool.\n\nmacOS uses Homebrew's [`command-not-found` clone][2]. This module will\nautomatically load it without needing to manually source `handler.sh` from\n`.zshrc` per the [instructions][3].\n\nNote: Prior to [Homebrew 4.6.12][4], you may have also needed to tap the\n[`command-not-found` Homebrew repository][5]. This will still work as a\nfallback when the `command-not-found` handler can't be detected in Homebrew\ncore, but the repository has been deprecated and may print a warning. After\nupgrading Homebrew, it can be untapped.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][6]._\n\n- [Joseph Booker](https://github.com/sargas)\n- [Indrajit Raychaudhuri](https://github.com/indrajitr)\n\n[1]: https://code.launchpad.net/command-not-found\n[2]: https://docs.brew.sh/Command-Not-Found\n[3]: https://docs.brew.sh/Command-Not-Found#install\n[4]: https://github.com/Homebrew/brew/releases/tag/4.6.12\n[5]: https://github.com/Homebrew/homebrew-command-not-found\n[6]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/command-not-found/init.zsh",
    "content": "#\n# Displays installation information for not found commands.\n#\n# Authors:\n#   Joseph Jon Booker <joe@neoturbine.net>\n#   Indrajit Raychaudhuri <irc+code@indrajit.com>\n#\n\n# Load command-not-found on Debian-based distributions.\nif [[ -s /etc/zsh_command_not_found ]]; then\n  source /etc/zsh_command_not_found\n# Load command-not-found on Arch Linux-based distributions.\nelif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then\n  source /usr/share/doc/pkgfile/command-not-found.zsh\n# Load command-not-found on macOS when Homebrew is present. Check explicitly\n# for MacOS, since homebrew can be installed on Linux as a supplementary PM\nelif [[ \"$OSTYPE\" =~ ^darwin ]] && (( $+commands[brew] )); then\n  homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h/Library}\n  # Look for handler in Homebrew core (as of >=4.6.12), then in Taps (< 4.6.12)\n  for hb_cnf_handler in \"$homebrew_repo\"/{Homebrew/command-not-found/handler.sh,Taps/homebrew/homebrew-command-not-found/handler.sh}; do\n    if [ -f \"$hb_cnf_handler\" ]; then\n      source \"$hb_cnf_handler\"\n      unset hb_cnf_handler homebrew_repo\n      break\n    fi\n  done\n  if [ -n \"$hb_cnf_handler\" ]; then\n    unset hb_cnf_handler homebrew_repo\n    return 1\n  fi\n# Return if requirements are not found.\nelse\n  return 1\nfi\n"
  },
  {
    "path": "modules/completion/README.md",
    "content": "# Completion\n\nLoads and configures <kbd>TAB</kbd> completion and provides additional\ncompletions from the [zsh-completions][1] project.\n\nThis module must be loaded late _after_ the _`utility`_ module and all other\nmodules that provide completion definitions.\n\n## Options\n\n- `COMPLETE_IN_WORD` complete from both ends of a word.\n- `ALWAYS_TO_END` move cursor to the end of a completed word.\n- `PATH_DIRS` perform path search even on command names with slashes.\n- `AUTO_MENU` show completion menu on a successive <kbd>TAB</kbd> press.\n- `AUTO_LIST` automatically list choices on ambiguous completion.\n- `AUTO_PARAM_SLASH` if completed parameter is a directory, add a trailing\n  slash (`/`).\n- `EXTENDED_GLOB` needed for file modification glob modifiers with _compinit_.\n- `MENU_COMPLETE` do not autoselect the first completion entry.\n- `FLOW_CONTROL` disable start/stop characters in shell editor.\n\n## Variables\n\n- `LS_COLORS` used by default for Zsh [standard style][2] 'list-colors'.\n\n## Settings\n\n### Ignore _`/etc/hosts`_ Entries\n\nTo ignore certain entries from static _`/etc/hosts`_ for host completion, add\nthe following lines in _`${ZDOTDIR:-$HOME}/.zpreztorc`_ with the IP addresses of\nthe hosts as they appear in _`/etc/hosts`_. Both IP address and the associated\nhostname(s) will be ignored during host completion. However, some of the entries\nignored from _`/etc/hosts`_ still might appear during completion because of\ntheir presence in _ssh_ configuration or history).\n\n```sh\nzstyle ':prezto:module:completion:*:hosts' etc-host-ignores \\\n    '0.0.0.0' '127.0.0.1'\n```\n\n## Contributors\n\nCompletions should be submitted to the [zsh-completions][1] project according to\nits rules and regulations. This module will be synchronized against it.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/zsh-users/zsh-completions\n[2]: https://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/completion/init.zsh",
    "content": "#\n# Sets completion options.\n#\n# Authors:\n#   Robby Russell <robby@planetargon.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif [[ $TERM == dumb ]]; then\n  return 1\nfi\n\n# Add zsh-completions to $fpath.\nfpath=(${0:h}/external/src $fpath)\n\n# Add completion for keg-only brewed curl on macOS when available.\nif (( $+commands[brew] )); then\n  brew_prefix=${HOMEBREW_PREFIX:-${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}}\n  # $HOMEBREW_PREFIX defaults to $HOMEBREW_REPOSITORY but is explicitly set to\n  # /usr/local when $HOMEBREW_REPOSITORY is /usr/local/Homebrew.\n  # https://github.com/Homebrew/brew/blob/2a850e02d8f2dedcad7164c2f4b95d340a7200bb/bin/brew#L66-L69\n  [[ $brew_prefix == '/usr/local/Homebrew' ]] && brew_prefix=$brew_prefix:h\n  fpath=($brew_prefix/opt/curl/share/zsh/site-functions(/N) $fpath)\n  unset brew_prefix\nfi\n\n#\n# Options\n#\n\nsetopt COMPLETE_IN_WORD     # Complete from both ends of a word.\nsetopt ALWAYS_TO_END        # Move cursor to the end of a completed word.\nsetopt PATH_DIRS            # Perform path search even on command names with slashes.\nsetopt AUTO_MENU            # Show completion menu on a successive tab press.\nsetopt AUTO_LIST            # Automatically list choices on ambiguous completion.\nsetopt AUTO_PARAM_SLASH     # If completed parameter is a directory, add a trailing slash.\nsetopt EXTENDED_GLOB        # Needed for file modification glob modifiers with compinit.\nunsetopt MENU_COMPLETE      # Do not autoselect the first completion entry.\nunsetopt FLOW_CONTROL       # Disable start/stop characters in shell editor.\n\n#\n# Variables\n#\n\n# Standard style used by default for 'list-colors'\nLS_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:'}\n\n#\n# Initialization\n#\n\n# Load and initialize the completion system ignoring insecure directories with a\n# cache time of 20 hours, so it should almost always regenerate the first time a\n# shell is opened each day.\nautoload -Uz compinit\n_comp_path=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump\"\n# #q expands globs in conditional expressions\nif [[ $_comp_path(#qNmh-20) ]]; then\n  # -C (skip function check) implies -i (skip security check).\n  compinit -C -d \"$_comp_path\"\nelse\n  mkdir -p \"$_comp_path:h\"\n  compinit -i -d \"$_comp_path\"\n  # Keep $_comp_path younger than cache time even if it isn't regenerated.\n  touch \"$_comp_path\"\nfi\nunset _comp_path\n\n#\n# Styles\n#\n\n# Defaults.\nzstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}\nzstyle ':completion:*:default' list-prompt '%S%M matches%s'\n\n# Use caching to make completion for commands such as dpkg and apt usable.\nzstyle ':completion::complete:*' use-cache on\nzstyle ':completion::complete:*' cache-path \"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache\"\n\n# Case-insensitive (all), partial-word, and then substring completion.\nif zstyle -t ':prezto:module:completion:*' case-sensitive; then\n  zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'\n  setopt CASE_GLOB\nelse\n  zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'm:{[:upper:]}={[:lower:]}'  'r:|[._-]=* r:|=*' 'l:|=* r:|=*'\n  unsetopt CASE_GLOB\nfi\n\n# Group matches and describe.\nzstyle ':completion:*:*:*:*:*' menu select\nzstyle ':completion:*:matches' group 'yes'\nzstyle ':completion:*:options' description 'yes'\nzstyle ':completion:*:options' auto-description '%d'\nzstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'\nzstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'\nzstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'\nzstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'\nzstyle ':completion:*' format ' %F{yellow}-- %d --%f'\nzstyle ':completion:*' group-name ''\nzstyle ':completion:*' verbose yes\n\n# Fuzzy match mistyped completions.\nzstyle ':completion:*' completer _complete _match _approximate\nzstyle ':completion:*:match:*' original only\nzstyle ':completion:*:approximate:*' max-errors 1 numeric\n\n# Increase the number of errors based on the length of the typed word. But make\n# sure to cap (at 7) the max-errors to avoid hanging.\nzstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)'\n\n# Don't complete unavailable commands.\nzstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'\n\n# Array completion element sorting.\nzstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters\n\n# Directories\nzstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories\nzstyle ':completion:*:*:cd:*:directory-stack' menu yes select\nzstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'\nzstyle ':completion:*' squeeze-slashes true\n\n# History\nzstyle ':completion:*:history-words' stop yes\nzstyle ':completion:*:history-words' remove-all-dups yes\nzstyle ':completion:*:history-words' list false\nzstyle ':completion:*:history-words' menu yes\n\n# Environment Variables\nzstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}\n\n# Populate hostname completion. But allow ignoring custom entries from static\n# */etc/hosts* which might be uninteresting.\nzstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'\n\nzstyle -e ':completion:*:hosts' hosts 'reply=(\n  ${=${=${=${${(f)\"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)\"}%%[#| ]*}//\\]:[0-9]*/ }//,/ }//\\[/ }\n  ${=${(f)\"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))\"}%%(\\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*}\n  ${=${${${${(@M)${(f)\"$(cat ~/.ssh/config 2> /dev/null)\"}:#Host *}#Host }:#*\\**}:#*\\?*}}\n)'\n\n# Don't complete uninteresting users...\nzstyle ':completion:*:*:*:users' ignored-patterns \\\n  adm amanda apache avahi beaglidx bin cacti canna clamav daemon \\\n  dbus distcache dovecot fax ftp games gdm gkrellmd gopher \\\n  hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \\\n  mailman mailnull mldonkey mysql nagios \\\n  named netdump news nfsnobody nobody nscd ntp nut nx openvpn \\\n  operator pcap postfix postgres privoxy pulse pvm quagga radvd \\\n  rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'\n\n# ... unless we really want to.\nzstyle '*' single-ignored show\n\n# Ignore multiple entries.\nzstyle ':completion:*:(rm|kill|diff):*' ignore-line other\nzstyle ':completion:*:rm:*' file-patterns '*:all-files'\n\n# Kill\nzstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w'\nzstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'\nzstyle ':completion:*:*:kill:*' menu yes select\nzstyle ':completion:*:*:kill:*' force-list always\nzstyle ':completion:*:*:kill:*' insert-ids single\n\n# Man\nzstyle ':completion:*:manuals' separate-sections true\nzstyle ':completion:*:manuals.(^1*)' insert-sections true\n\n# Media Players\nzstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\\ files *(-/):directories'\nzstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\\ files *(-/):directories'\nzstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\\ files *(-/):directories'\nzstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\\ files *(-/):directories'\n\n# Mutt\nif [[ -s \"$HOME/.mutt/aliases\" ]]; then\n  zstyle ':completion:*:*:mutt:*' menu yes select\n  zstyle ':completion:*:mutt:*' users ${${${(f)\"$(<\"$HOME/.mutt/aliases\")\"}#alias[[:space:]]}%%[[:space:]]*}\nfi\n\n# SSH/SCP/RSYNC\nzstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\\ address *'\nzstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr\nzstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr\nzstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost\nzstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'\nzstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'\n"
  },
  {
    "path": "modules/directory/README.md",
    "content": "# Directory\n\nSets directory options and defines directory aliases.\n\n## Options\n\n- `AUTO_CD` auto changes to a directory without typing `cd`.\n- `AUTO_PUSHD` pushes the old directory onto the stack on `cd`.\n- `PUSHD_IGNORE_DUPS` does not store duplicates in the stack.\n- `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`.\n- `PUSHD_TO_HOME` pushes to the home directory when no argument is given.\n- `CDABLE_VARS` changes directory to a path stored in a variable.\n- `MULTIOS` writes to multiple descriptors.\n- `EXTENDED_GLOB` uses extended globbing syntax.\n- `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and\n  `>>!` to bypass.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:directory:alias' skip 'yes'\n```\n\n- `d` prints the contents of the directory stack.\n- `1 ... 9` changes the directory to the **n** previous one.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][1]._\n\n- [James Cox](https://github.com/imajes)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/directory/init.zsh",
    "content": "#\n# Sets directory options and defines directory aliases.\n#\n# Authors:\n#   James Cox <james@imaj.es>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Options\n#\n\nsetopt AUTO_CD              # Auto changes to a directory without typing cd.\nsetopt AUTO_PUSHD           # Push the old directory onto the stack on cd.\nsetopt PUSHD_IGNORE_DUPS    # Do not store duplicates in the stack.\nsetopt PUSHD_SILENT         # Do not print the directory stack after pushd or popd.\nsetopt PUSHD_TO_HOME        # Push to home directory when no argument is given.\nsetopt CDABLE_VARS          # Change directory to a path stored in a variable.\nsetopt MULTIOS              # Write to multiple descriptors.\nsetopt EXTENDED_GLOB        # Use extended globbing syntax.\nunsetopt CLOBBER            # Do not overwrite existing files with > and >>.\n                            # Use >! and >>! to bypass.\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:directory:alias' skip; then\n  alias -- -='cd -'\n  alias d='dirs -v'\n  for index ({1..9}) alias \"$index\"=\"cd +${index}\"; unset index\nfi\n"
  },
  {
    "path": "modules/dnf/README.md",
    "content": "# DNF\n\nDefines [dnf][1] aliases.\n\n## Aliases\n\n- `dnfc` removes package(s) and leaves.\n- `dnfi` installs package(s).\n- `dnfh` displays history.\n- `dnfl` lists packages.\n- `dnfL` lists installed packages.\n- `dnfq` displays package information.\n- `dnfr` removes package(s).\n- `dnfs` searches for a package.\n- `dnfu` updates packages.\n- `dnfU` upgrades packages.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://fedoraproject.org/wiki/Features/DNF\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/dnf/init.zsh",
    "content": "#\n# Defines dnf aliases.\n#\n# Authors:\n#   FireWave <firewave@free.fr>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[dnf] )); then\n  return 1\nfi\n\n#\n# Aliases\n#\n\nalias dnfc='sudo dnf clean all'    # Cleans the cache.\nalias dnfh='dnf history'           # Displays history.\nalias dnfi='sudo dnf install'      # Installs package(s).\nalias dnfl='dnf list'              # Lists packages.\nalias dnfL='dnf list installed'    # Lists installed packages.\nalias dnfq='dnf info'              # Displays package information.\nalias dnfr='sudo dnf remove'       # Removes package(s).\nalias dnfs='dnf search'            # Searches for a package.\nalias dnfu='sudo dnf update'       # Updates packages.\nalias dnfU='sudo dnf upgrade'      # Upgrades packages.\n\n"
  },
  {
    "path": "modules/docker/README.md",
    "content": "# Docker\n\nDefines [Docker][1] aliases and functions.\n\n## Aliases\n\n### Docker\n\n- `dk` is short for `docker`\n- `dka` Attach to a running container\n- `dkb` Build an image from a Dockerfile\n- `dkd` Inspect changes on a container's filesystem\n- `dkdf` Show docker filesystem usage\n- `dke` Run a command in a running container\n- `dkE` Run an interactive command in a running container\n- `dkh` Show the history of an image\n- `dki` List images\n- `dkin` Return low-level information on a container, image or task\n- `dkk` Kill a running container\n- `dkl` Fetch the logs of a container\n- `dkli` Log in to a Docker registry\n- `dklo` Log out from a Docker registry\n- `dkls` is alias for `dkps`\n- `dkp` Pause all processes within one or more containers\n- `dkP` Unpause all processes within one or more containers\n- `dkpl` Pull an image or a repository from a registry\n- `dkph` Push an image or a repository to a registry\n- `dkps` List containers\n- `dkpsa` List all containers (default lists just running)\n- `dkr` Run a command in a new container\n- `dkR` Run an interactive command in a new container and automatically remove\n  the container when it exits\n- `dkRe` like `dkR` and set entry point to `/bin/bash`\n- `dkrm` Remove one or more containers\n- `dkrmi` Remove one or more images\n- `dkrmC` Clean up exited containers\n- `dkrmI` Clean up dangling images\n- `dkrmV` Clean up unused volumes ( Docker >= 1.9 )\n- `dkrn` Rename a container\n- `dks` Start one or more stopped containers\n- `dkS` Restart a container\n- `dkss` Display a live stream of container(s) resource usage statistics\n- `dksv` Save one or more images to a tar archive (streamed to STDOUT by\n  default)\n- `dkt` Tag an image into a repository\n- `dktop` Display the running processes of a container\n- `dkup` Update configuration of one or more containers\n- `dkV` Manage Docker volumes\n- `dkv` Show the Docker version information\n- `dkw` Block until a container stops, then print its exit code\n- `dkx` Stop a running container\n\n#### container (C)\n\n- `dkC` Manage containers\n- `dkCa` Attach to a running container\n- `dkCcp` Copy files/folders between a container and the local filesystem\n- `dkCd` Inspect changes on a container's filesystem\n- `dkCe` Run a command in a running container\n- `dkCin` Display detailed information on one or more containers\n- `dkCk` Kill one or more running containers\n- `dkCl` Fetch the logs of a container\n- `dkCls` List containers\n- `dkCp` Pause all processes within one or more containers\n- `dkCpr` Remove all stopped containers\n- `dkCrn` Rename a container\n- `dkCS` Restart one or more containers\n- `dkCrm` Remove one or more containers\n- `dkCr` Run a command in a new container\n- `dkCR` Run an interactive command in a new container and automatically remove\n  the container when it exits\n- `dkCRe` like `dkCR` and set entry point to `/bin/bash`\n- `dkCs` Start one or more stopped containers\n- `dkCss` Display a live stream of container(s) resource usage statistics\n- `dkCx` Stop one or more running containers\n- `dkCtop` Display the running processes of a container\n- `dkCP` Unpause all processes within one or more containers\n- `dkCup` Update configuration of one or more containers\n- `dkCw` Block until one or more containers stop, then print their exit codes\n\n#### image (I)\n\n- `dkI` Manage images\n- `dkIb` Build an image from a Dockerfile\n- `dkIh` Show the history of an image\n- `dkIim` Import the contents from a tarball to create a filesystem image\n- `dkIin` Display detailed information on one or more images\n- `dkIls` List images\n- `dkIpr` Remove unused images\n- `dkIpl` Pull an image or a repository from a registry\n- `dkIph` Push an image or a repository to a registry\n- `dkIrm` Remove one or more images\n- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by\n  default)\n- `dkIt` Tag an image into a repository\n\n#### volume (V)\n\n- `dkV` Manage volumes\n- `dkVin` Display detailed information on one or more volumes\n- `dkVls` List volumes\n- `dkVpr` Remove all unused volumes\n- `dkVrm` Remove one or more volumes\n\n#### network (N)\n\n- `dkN` Manage networks\n- `dkNs` Connect a container to a network\n- `dkNx` Disconnects a container from a network\n- `dkNin` Displays detailed information on a network\n- `dkNls` Lists all the networks created by the user\n- `dkNpr` Remove all unused networks\n- `dkNrm` Deletes one or more networks\n\n#### system (Y)\n\n- `dkY` Manage Docker\n- `dkYdf` Show docker filesystem usage\n- `dkYpr` Remove unused data\n\n#### stack (K)\n\n- `dkK` Manage Docker stacks\n- `dkKls` List stacks\n- `dkKps` List the tasks in the stack\n- `dkKrm` Remove the stack\n\n#### swarm (W)\n\n- `dkW` Manage Docker Swarm\n\n### Docker Machine\n\n- `dkm` is short for `docker-machine`\n- `dkma` Get or set the active machine\n- `dkmcp` Copy files between machines\n- `dkmd` Set up the default machine ; alowing you to use `dkme` without\n  arguments\n- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to\n  toggle to staging)\n- `dkmin` Inspect information about a machine\n- `dkmip` Get the IP address of a machine\n- `dkmk` Kill a machine\n- `dkmls` List machines\n- `dkmpr` Re-provision existing machines\n- `dkmps` is alias for `dkmls`\n- `dkmrg` Regenerate TLS Certificates for a machine\n- `dkmrm` Remove a machine\n- `dkms` Start a machine\n- `dkmsh` Log into or run a command on a machine with SSH\n- `dkmst` Get the status of a machine\n- `dkmS` Restart a machine\n- `dkmu` Get the URL of a machine\n- `dkmup` Upgrade a machine to the latest version of Docker\n- `dkmV` Show the Docker Machine version or a machine docker version\n- `dkmx` Stop a machine\n\n### Docker Compose\n\n- `dkc` is short for `docker-compose`\n- `dkcb` Build or rebuild services\n- `dkcB` Build or rebuild services and do not use cache when building the image\n- `dkcd` Stop and remove containers, networks, images, and volumes\n- `dkce` Execute a command in a running container\n- `dkck` Kill containers\n- `dkcl` View output from containers\n- `dkcls` is alias for `dkcps`\n- `dkcp` Pause services\n- `dkcP` Unpause services\n- `dkcpl` Pull service images\n- `dkcph` Push service images\n- `dkcps` List containers\n- `dkcr` Run a one-off command\n- `dkcR` Run a one-off command and remove container after run.\n- `dkcrm` Remove stopped containers\n- `dkcs` Start services\n- `dkcsc` Set number of containers for a service\n- `dkcS` Restart services\n- `dkcu` Create and start containers\n- `dkcU` Create and start containers in detached mode: Run containers in the\n  background, print new container names\n- `dkcV` Show the Docker-Compose version information\n- `dkcx` Stop services\n\n## Support\n\nIf you're having problems, use the [Prezto issue tracker][2].\n\n## Acknowledgements\n\nThis module is a copy of [akarzim/zsh-docker-aliases][3] by [François Vantomme][4] (MIT License).\n\n[1]: https://www.docker.com/\n[2]: https://github.com/zsh-users/prezto/issues\n[3]: https://github.com/akarzim/zsh-docker-aliases\n[4]: https://github.com/akarzim\n"
  },
  {
    "path": "modules/docker/alias.zsh",
    "content": "#\n# Defines Docker aliases.\n#\n# Author:\n#   François Vantomme <akarzim@gmail.com>\n#\n\n#\n# Aliases\n#\n\n# Docker\nalias dk='docker'\nalias dka='docker attach'\nalias dkb='docker build'\nalias dkd='docker diff'\nalias dkdf='docker system df'\nalias dke='docker exec'\nalias dkE='docker exec -it'\nalias dkh='docker history'\nalias dki='docker images'\nalias dkin='docker inspect'\nalias dkim='docker import'\nalias dkk='docker kill'\nalias dkl='docker logs'\nalias dkli='docker login'\nalias dklo='docker logout'\nalias dkls='docker ps'\nalias dkp='docker pause'\nalias dkP='docker unpause'\nalias dkpl='docker pull'\nalias dkph='docker push'\nalias dkps='docker ps'\nalias dkpsa='docker ps -a'\nalias dkr='docker run'\nalias dkR='docker run -it --rm'\nalias dkRe='docker run -it --rm --entrypoint /bin/bash'\nalias dkRM='docker system prune'\nalias dkrm='docker rm'\nalias dkrmi='docker rmi'\nalias dkrn='docker rename'\nalias dks='docker start'\nalias dkS='docker restart'\nalias dkss='docker stats'\nalias dksv='docker save'\nalias dkt='docker tag'\nalias dktop='docker top'\nalias dkup='docker update'\nalias dkV='docker volume'\nalias dkv='docker version'\nalias dkw='docker wait'\nalias dkx='docker stop'\n\n## Container (C)\nalias dkC='docker container'\nalias dkCa='docker container attach'\nalias dkCcp='docker container cp'\nalias dkCd='docker container diff'\nalias dkCe='docker container exec'\nalias dkCin='docker container inspect'\nalias dkCk='docker container kill'\nalias dkCl='docker container logs'\nalias dkCls='docker container ls'\nalias dkCp='docker container pause'\nalias dkCpr='docker container prune'\nalias dkCrn='docker container rename'\nalias dkCS='docker container restart'\nalias dkCrm='docker container rm'\nalias dkCr='docker container run'\nalias dkCR='docker container run -it --rm'\nalias dkCRe='docker container run -it --rm --entrypoint /bin/bash'\nalias dkCs='docker container start'\nalias dkCss='docker container stats'\nalias dkCx='docker container stop'\nalias dkCtop='docker container top'\nalias dkCP='docker container unpause'\nalias dkCup='docker container update'\nalias dkCw='docker container wait'\n\n## Image (I)\nalias dkI='docker image'\nalias dkIb='docker image build'\nalias dkIh='docker image history'\nalias dkIim='docker image import'\nalias dkIin='docker image inspect'\nalias dkIls='docker image ls'\nalias dkIpr='docker image prune'\nalias dkIpl='docker image pull'\nalias dkIph='docker image push'\nalias dkIrm='docker image rm'\nalias dkIsv='docker image save'\nalias dkIt='docker image tag'\n\n## Volume (V)\nalias dkV='docker volume'\nalias dkVin='docker volume inspect'\nalias dkVls='docker volume ls'\nalias dkVpr='docker volume prune'\nalias dkVrm='docker volume rm'\n\n## Network (N)\nalias dkN='docker network'\nalias dkNs='docker network connect'\nalias dkNx='docker network disconnect'\nalias dkNin='docker network inspect'\nalias dkNls='docker network ls'\nalias dkNpr='docker network prune'\nalias dkNrm='docker network rm'\n\n## System (Y)\nalias dkY='docker system'\nalias dkYdf='docker system df'\nalias dkYpr='docker system prune'\n\n## Stack (K)\nalias dkK='docker stack'\nalias dkKls='docker stack ls'\nalias dkKps='docker stack ps'\nalias dkKrm='docker stack rm'\n\n## Swarm (W)\nalias dkW='docker swarm'\n\n## CleanUp (rm)\n# Clean up exited containers (docker < 1.13)\nalias dkrmC='docker rm $(docker ps -qaf status=exited)'\n# Clean up dangling images (docker < 1.13)\nalias dkrmI='docker rmi $(docker images -qf dangling=true)'\n# Clean up dangling volumes (docker < 1.13)\nalias dkrmV='docker volume rm $(docker volume ls -qf dangling=true)'\n\n\n# Docker Machine (m)\nalias dkm='docker-machine'\nalias dkma='docker-machine active'\nalias dkmcp='docker-machine scp'\nalias dkmin='docker-machine inspect'\nalias dkmip='docker-machine ip'\nalias dkmk='docker-machine kill'\nalias dkmls='docker-machine ls'\nalias dkmpr='docker-machine provision'\nalias dkmps='docker-machine ps'\nalias dkmrg='docker-machine regenerate-certs'\nalias dkmrm='docker-machine rm'\nalias dkms='docker-machine start'\nalias dkmsh='docker-machine ssh'\nalias dkmst='docker-machine status'\nalias dkmS='docker-machine restart'\nalias dkmu='docker-machine url'\nalias dkmup='docker-machine upgrade'\nalias dkmv='docker-machine version'\nalias dkmx='docker-machine stop'\n\n# Docker Compose (c)\nalias dkc='docker compose'\nalias dkcb='docker compose build'\nalias dkcB='docker compose build --no-cache'\nalias dkcd='docker compose down'\nalias dkce='docker compose exec'\nalias dkck='docker compose kill'\nalias dkcl='docker compose logs'\nalias dkcls='docker compose ps'\nalias dkcp='docker compose pause'\nalias dkcP='docker compose unpause'\nalias dkcpl='docker compose pull'\nalias dkcph='docker compose push'\nalias dkcps='docker compose ps'\nalias dkcr='docker compose run'\nalias dkcR='docker compose run --rm'\nalias dkcrm='docker compose rm'\nalias dkcs='docker compose start'\nalias dkcsc='docker compose scale'\nalias dkcS='docker compose restart'\nalias dkcu='docker compose up'\nalias dkcU='docker compose up -d'\nalias dkcv='docker compose version'\nalias dkcx='docker compose stop'\n"
  },
  {
    "path": "modules/docker/init.zsh",
    "content": "#\n# Defines Docker aliases.\n#\n# Author:\n#   François Vantomme <akarzim@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[docker] )); then\n  return 1\nfi\n\n#\n# Functions\n#\n\n# Set Docker Machine environment\nfunction dkme {\n  if (( ! $+commands[docker-machine] )); then\n    return 1\n  fi\n\n  eval $(docker-machine env $1)\n}\n\n# Set Docker Machine default machine\nfunction dkmd {\n  if (( ! $+commands[docker-machine] )); then\n    return 1\n  fi\n\n  pushd ~/.docker/machine/machines\n\n  if [[ ! -d $1 ]]; then\n    echo \"Docker machine '$1' does not exists. Abort.\"\n    popd\n    return 1\n  fi\n\n  if [[ -L default ]]; then\n    eval $(rm -f default)\n  elif [[ -d default ]]; then\n    echo \"A default machine already exists. Abort.\"\n    popd\n    return 1\n  elif [[ -e default ]]; then\n    echo \"A file named 'default' already exists. Abort.\"\n    popd\n    return 1\n  fi\n\n  eval $(ln -s $1 default)\n  popd\n}\n\n# Source module files.\nsource \"${0:h}/alias.zsh\"\n"
  },
  {
    "path": "modules/dpkg/README.md",
    "content": "# Dpkg\n\nDefines [_dpkg_][1] aliases and functions.\n\n## Aliases\n\n- `debc` cleans the cache.\n- `debf` displays a file's package.\n- `debi` installs packages from repositories.\n- `debI` installs packages from files.\n- `debq` displays package information.\n- `debu` updates the package lists.\n- `debU` upgrades outdated packages.\n- `debx` removes packages.\n- `debX` removes packages, their configuration, and unneeded dependencies.\n- `debs` searches for packages.\n- `deb-build` creates a basic deb package.\n- `deb-kclean` removes all kernel images and headers, except for the ones in\n  use.\n\n## Functions\n\n- `deb-clone` generates a script that can be used to duplicate a `dpkg`-based\n  system.\n- `deb-history` displays `dpkg` history.\n- `deb-kbuild` makes a `dpkg` Linux kernel package.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Daniel Bolton](https://github.com/dbb)\n- [Benjamin Boudreau](https://github.com/dreur)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://wiki.debian.org/Teams/Dpkg\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/dpkg/functions/deb-clone",
    "content": "#\n# Generates a script that can be used to duplicate a dpkg-based system.\n#\n# Authors:\n#   Daniel Bolton <danielbarrettbolton@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function deb-clone {\n\nlocal clone_script=\"${0}.sh\"\nlocal package_list=$(\n  perl \\\n    -m 'AptPkg::Cache' \\\n    -e '\n      $c=AptPkg::Cache->new;\n      for (keys %$c) {\n        push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';\n      }\n      print \"$_ \" for sort @a;\n    '\n)\n\nrm \"$clone_script\"\nprint '#!/bin/sh\\n' > \"$clone_script\"\nprint \"aptitude install ${package_list}\\n\" >> \"$clone_script\"\nchmod +x \"$clone_script\"\n\n# }\n"
  },
  {
    "path": "modules/dpkg/functions/deb-history",
    "content": "#\n# Displays dpkg history.\n#\n# Authors:\n#   Peter Leung <commandolinux@gmail.com>\n#   Benjamin Boudreau <boudreau.benjamin@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function deb-history {\n\ncase \"$1\" in\n  (install)\n    zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)\n  ;;\n  (upgrade|remove)\n    zgrep --no-filename \"$1\" $(ls -rt /var/log/dpkg*)\n  ;;\n  (rollback)\n    zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) \\\n      | grep \"$2\" -A10000000 \\\n      | grep \"$3\" -B10000000 \\\n      | awk '{print $4\"=\"$5}'\n  ;;\n  (list)\n    zcat $(ls -rt /var/log/dpkg*)\n  ;;\n  (*)\n    cat >&2 <<EOF\nCommands:\n    install - List installed packages\n    upgrade - List upgraded packages\n    remove - List removed packages\n    rollback - List rollback information\n    list - Display contents of dpkg logs\nEOF\n  ;;\nesac\n\n# }\n"
  },
  {
    "path": "modules/dpkg/functions/deb-kbuild",
    "content": "#\n# Makes a dpkg Linux kernel package.\n#\n# Authors:\n#   Daniel Bolton <dbb@9y.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function deb-kbuild {\n\nmake-kpkg clean\nMAKEFLAGS='' time fakeroot make-kpkg \\\n  --append-to-version '-custom' \\\n  --revision \"$(date +\"%Y%m%d\")\" \\\n  kernel_image \\\n  kernel_headers\n\n# }\n"
  },
  {
    "path": "modules/dpkg/init.zsh",
    "content": "#\n# Defines dpkg aliases.\n#\n# Authors:\n#   Daniel Bolton <dbb@9y.com>\n#   Benjamin Boudreau <boudreau.benjamin@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[dpkg] && ! $+commands[apt-get] )); then\n  return 1\nfi\n\n#\n# Aliases\n#\n\n# Cleans the cache.\nalias debc='sudo apt-get clean && sudo apt-get autoclean'\n\n# Displays a file's package.\nalias debf='apt-file search --regexp'\n\n# Installs packages from repositories.\nalias debi='sudo apt-get install'\n\n# Installs packages from files.\nalias debI='sudo dpkg -i'\n\n# Displays package information.\nalias debq='apt-cache show'\n\n# Updates the package lists.\nalias debu='sudo apt-get update'\n\n# Upgrades outdated packages.\nalias debU='sudo apt-get update && sudo apt-get dist-upgrade'\n\n# Removes packages.\nalias debx='sudo apt-get remove'\n\n# Removes packages, their configuration, and unneeded dependencies.\nalias debX='sudo apt-get remove --purge && sudo apt-get autoremove --purge'\n\n# Searches for packages.\nif (( $+commands[aptitude] )); then\n  alias debs='aptitude -F \"* %p -> %d \\n(%v/%V)\" --no-gui --disable-columns search'\nelse\n  alias debs='apt-cache search'\nfi\n\n# Creates a basic deb package.\nalias deb-build='time dpkg-buildpackage -rfakeroot -us -uc'\n\n# Removes all kernel images and headers, except for the ones in use.\nalias deb-kclean='sudo aptitude remove -P \"?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))\"'\n"
  },
  {
    "path": "modules/editor/README.md",
    "content": "# Editor\n\nSets editor specific key bindings options and variables.\n\n## Options\n\n- `BEEP` beep on error in line editor.\n\n## Variables\n\n- `WORDCHARS` treat a given set of characters as part of a word.\n\n## Settings\n\n### Wordchars\n\nTo change what characters are considered part of a word, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:editor' wordchars <chars>\n```\n\nDefaults to `*?_-.[]~&;!#$%^(){}<>`.\n\n### Key bindings\n\nTo enable key bindings, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_,\nand replace `'<bindings>'` with `'emacs'` or `'vi'`.\n\n```sh\nzstyle ':prezto:module:editor' key-bindings '<bindings>'\n```\n\n### Dot Expansion\n\nTo enable the auto conversion of .... to ../.., add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:editor' dot-expansion 'yes'\n```\n\n### PS Context\n\nTo enable the prompt context to be set, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:editor' ps-context 'yes'\n```\n\n## Theming\n\nTo indicate when the editor is in the primary keymap (emacs or viins), add\nthe following to your `theme_prompt_setup` function.\n\n```sh\nzstyle ':prezto:module:editor:info:keymap:primary' format '>>>'\n```\n\nTo indicate when the editor is in the primary keymap (emacs or viins) insert\nmode, add the following to your `theme_prompt_setup` function.\n\n```sh\nzstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I'\n```\n\nTo indicate when the editor is in the primary keymap (emacs or viins) overwrite\nmode, add the following to your `theme_prompt_setup` function.\n\n```sh\nzstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O'\n```\n\nTo indicate when the editor is in the alternate keymap (vicmd), add the\nfollowing to your `theme_prompt_setup` function.\n\n```sh\nzstyle ':prezto:module:editor:info:keymap:alternate' format '<<<'\n```\n\nTo indicate when the editor is completing, add the following to your\n`theme_prompt_setup` function.\n\n```sh\nzstyle ':prezto:module:editor:info:completing' format '...'\n```\n\nThen add `$editor_info[context]`, where context is _keymap_, _insert_, or\n_overwrite_, to `$PROMPT` or `$RPROMPT`.\n\n## Convenience Functions\n\n### bindkey-all\n\nProvides a function `bindkey-all` which can be useful for checking how all of\nthe keys are bound. Normal `bindkey` command will only list the keys bound for\none keymap, which is not as useful if you want to grep through the output. The\nkeymap's names go to stderr so when you grep through `bindkey-all`'s output you\nwill still see the headings and can tell which keymap each binding goes to.\n\nIt will also pass through arguments so you can use bindkey-all to set bindings\nfor all keymaps at once. If provided arguments it will _not_ print out the\nnames of each of the keymaps, and just run the command for each keymap.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][1]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/editor/init.zsh",
    "content": "#\n# Sets key bindings.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif [[ \"$TERM\" == 'dumb' ]]; then\n  return 1\nfi\n\n#\n# Options\n#\n\nsetopt BEEP                     # Beep on error in line editor.\n\n#\n# Variables\n#\n\n# Treat these characters as part of a word.\nzstyle -s ':prezto:module:editor' wordchars 'WORDCHARS' \\\n  || WORDCHARS='*?_-.[]~&;!#$%^(){}<>'\n\n# Use human-friendly identifiers.\nzmodload zsh/terminfo\ntypeset -gA key_info\nkey_info=(\n  'Control'         '\\C-'\n  'ControlLeft'     '\\e[1;5D \\e[5D \\e\\e[D \\eOd'\n  'ControlRight'    '\\e[1;5C \\e[5C \\e\\e[C \\eOc'\n  'ControlPageUp'   '\\e[5;5~'\n  'ControlPageDown' '\\e[6;5~'\n  'Escape'       '\\e'\n  'Meta'         '\\M-'\n  'Backspace'    \"^?\"\n  'Delete'       \"^[[3~\"\n  'F1'           \"$terminfo[kf1]\"\n  'F2'           \"$terminfo[kf2]\"\n  'F3'           \"$terminfo[kf3]\"\n  'F4'           \"$terminfo[kf4]\"\n  'F5'           \"$terminfo[kf5]\"\n  'F6'           \"$terminfo[kf6]\"\n  'F7'           \"$terminfo[kf7]\"\n  'F8'           \"$terminfo[kf8]\"\n  'F9'           \"$terminfo[kf9]\"\n  'F10'          \"$terminfo[kf10]\"\n  'F11'          \"$terminfo[kf11]\"\n  'F12'          \"$terminfo[kf12]\"\n  'Insert'       \"$terminfo[kich1]\"\n  'Home'         \"$terminfo[khome]\"\n  'PageUp'       \"$terminfo[kpp]\"\n  'End'          \"$terminfo[kend]\"\n  'PageDown'     \"$terminfo[knp]\"\n  'Up'           \"$terminfo[kcuu1]\"\n  'Left'         \"$terminfo[kcub1]\"\n  'Down'         \"$terminfo[kcud1]\"\n  'Right'        \"$terminfo[kcuf1]\"\n  'BackTab'      \"$terminfo[kcbt]\"\n)\n\n# Set empty $key_info values to an invalid UTF-8 sequence to induce silent\n# bindkey failure.\nfor key in \"${(k)key_info[@]}\"; do\n  if [[ -z \"$key_info[$key]\" ]]; then\n    key_info[$key]='�'\n  fi\ndone\n\n#\n# External Editor\n#\n\n# Allow command line editing in an external editor.\nautoload -Uz edit-command-line\nzle -N edit-command-line\n\n#\n# Functions\n#\n# Runs bindkey but for all of the keymaps. Running it with no arguments will\n# print out the mappings for all of the keymaps.\nfunction bindkey-all {\n  local keymap=''\n  for keymap in $(bindkey -l); do\n    [[ \"$#\" -eq 0 ]] && printf \"#### %s\\n\" \"${keymap}\" 1>&2\n    bindkey -M \"${keymap}\" \"$@\"\n  done\n}\n# Exposes information about the Zsh Line Editor via the $editor_info associative\n# array.\nfunction editor-info {\n  # Ensure that we're going to set the editor-info for prompts that\n  # are prezto managed and/or compatible.\n  if zstyle -t ':prezto:module:prompt' managed; then\n    # Clean up previous $editor_info.\n    unset editor_info\n    typeset -gA editor_info\n\n    if [[ \"$KEYMAP\" == 'vicmd' ]]; then\n      zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY'\n      editor_info[keymap]=\"$REPLY\"\n    else\n      zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY'\n      editor_info[keymap]=\"$REPLY\"\n\n      if [[ \"$ZLE_STATE\" == *overwrite* ]]; then\n        zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY'\n        editor_info[overwrite]=\"$REPLY\"\n      else\n        zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY'\n        editor_info[overwrite]=\"$REPLY\"\n      fi\n    fi\n\n    unset REPLY\n    zle zle-reset-prompt\n  fi\n}\nzle -N editor-info\n\n# Reset the prompt based on the current context and\n# the ps-context option.\nfunction zle-reset-prompt {\n  if zstyle -t ':prezto:module:editor' ps-context; then\n    # If we aren't within one of the specified contexts, then we want to reset\n    # the prompt with the appropriate editor_info[keymap] if there is one.\n    if [[ $CONTEXT != (select|cont) ]]; then\n      zle reset-prompt\n      zle -R\n    fi\n  else\n    zle reset-prompt\n    zle -R\n  fi\n}\nzle -N zle-reset-prompt\n\n# Updates editor information when the keymap changes.\nfunction zle-keymap-select {\n  zle editor-info\n}\nzle -N zle-keymap-select\n\n# Enables terminal application mode and updates editor information.\nfunction zle-line-init {\n  # The terminal must be in application mode when ZLE is active for $terminfo\n  # values to be valid.\n  if (( $+terminfo[smkx] )); then\n    # Enable terminal application mode.\n    echoti smkx\n  fi\n\n  # Update editor information.\n  zle editor-info\n}\nzle -N zle-line-init\n\n# Disables terminal application mode and updates editor information.\nfunction zle-line-finish {\n  # The terminal must be in application mode when ZLE is active for $terminfo\n  # values to be valid.\n  if (( $+terminfo[rmkx] )); then\n    # Disable terminal application mode.\n    echoti rmkx\n  fi\n\n  # Update editor information.\n  zle editor-info\n}\nzle -N zle-line-finish\n\n# Toggles emacs overwrite mode and updates editor information.\nfunction overwrite-mode {\n  zle .overwrite-mode\n  zle editor-info\n}\nzle -N overwrite-mode\n\n# Enters vi insert mode and updates editor information.\nfunction vi-insert {\n  zle .vi-insert\n  zle editor-info\n}\nzle -N vi-insert\n\n# Moves to the first non-blank character then enters vi insert mode and updates\n# editor information.\nfunction vi-insert-bol {\n  zle .vi-insert-bol\n  zle editor-info\n}\nzle -N vi-insert-bol\n\n# Enters vi replace mode and updates editor information.\nfunction vi-replace  {\n  zle .vi-replace\n  zle editor-info\n}\nzle -N vi-replace\n\n# Expands .... to ../..\nfunction expand-dot-to-parent-directory-path {\n  if [[ $LBUFFER = *.. ]]; then\n    LBUFFER+='/..'\n  else\n    LBUFFER+='.'\n  fi\n}\nzle -N expand-dot-to-parent-directory-path\n\n# Displays an indicator when completing.\nfunction expand-or-complete-with-indicator {\n  local indicator\n  zstyle -s ':prezto:module:editor:info:completing' format 'indicator'\n\n  # This is included to work around a bug in zsh which shows up when interacting\n  # with multi-line prompts.\n  if [[ -z \"$indicator\" ]]; then\n    zle expand-or-complete\n    return\n  fi\n\n  print -Pn \"$indicator\"\n  zle expand-or-complete\n  zle redisplay\n}\nzle -N expand-or-complete-with-indicator\n\n# Inserts 'sudo ' at the beginning of the line.\nfunction prepend-sudo {\n  if [[ \"$BUFFER\" != su(do|)\\ * ]]; then\n    BUFFER=\"sudo $BUFFER\"\n    (( CURSOR += 5 ))\n  fi\n}\nzle -N prepend-sudo\n\n# Expand aliases\nfunction glob-alias {\n  zle _expand_alias\n  zle expand-word\n  zle magic-space\n}\nzle -N glob-alias\n\n# Toggle the comment character at the start of the line. This is meant to work\n# around a buggy implementation of pound-insert in zsh.\n#\n# This is currently only used for the emacs keys because vi-pound-insert has\n# been reported to work properly.\nfunction pound-toggle {\n  if [[ \"$BUFFER\" = '#'* ]]; then\n    # Because of an oddity in how zsh handles the cursor when the buffer size\n    # changes, we need to make this check before we modify the buffer and let\n    # zsh handle moving the cursor back if it's past the end of the line.\n    if [[ $CURSOR != $#BUFFER ]]; then\n      (( CURSOR -= 1 ))\n    fi\n    BUFFER=\"${BUFFER:1}\"\n  else\n    BUFFER=\"#$BUFFER\"\n    (( CURSOR += 1 ))\n  fi\n}\nzle -N pound-toggle\n\n# Reset to default key bindings.\nbindkey -d\n\n#\n# Emacs Key Bindings\n#\n\nfor key in \"$key_info[Escape]\"{B,b} \"${(s: :)key_info[ControlLeft]}\" \\\n  \"${key_info[Escape]}${key_info[Left]}\"\n  bindkey -M emacs \"$key\" emacs-backward-word\nfor key in \"$key_info[Escape]\"{F,f} \"${(s: :)key_info[ControlRight]}\" \\\n  \"${key_info[Escape]}${key_info[Right]}\"\n  bindkey -M emacs \"$key\" emacs-forward-word\n\n# Kill to the beginning of the line.\nfor key in \"$key_info[Escape]\"{K,k}\n  bindkey -M emacs \"$key\" backward-kill-line\n\n# Redo.\nbindkey -M emacs \"$key_info[Escape]_\" redo\n\n# Search previous character.\nbindkey -M emacs \"$key_info[Control]X$key_info[Control]B\" vi-find-prev-char\n\n# Match bracket.\nbindkey -M emacs \"$key_info[Control]X$key_info[Control]]\" vi-match-bracket\n\n# Edit command in an external editor.\nbindkey -M emacs \"$key_info[Control]X$key_info[Control]E\" edit-command-line\n\nif (( $+widgets[history-incremental-pattern-search-backward] )); then\n  bindkey -M emacs \"$key_info[Control]R\" \\\n    history-incremental-pattern-search-backward\n  bindkey -M emacs \"$key_info[Control]S\" \\\n    history-incremental-pattern-search-forward\nfi\n\n# Toggle comment at the start of the line. Note that we use pound-toggle which\n# is similar to pount insert, but meant to work around some issues that were\n# being seen in iTerm.\nbindkey -M emacs \"$key_info[Escape];\" pound-toggle\n\n\n#\n# Vi Key Bindings\n#\n\n# Edit command in an external editor emacs style (v is used for visual mode)\nbindkey -M vicmd \"$key_info[Control]X$key_info[Control]E\" edit-command-line\n\n# Undo/Redo\nbindkey -M vicmd \"u\" undo\nbindkey -M viins \"$key_info[Control]_\" undo\nbindkey -M vicmd \"$key_info[Control]R\" redo\n\nif (( $+widgets[history-incremental-pattern-search-backward] )); then\n  bindkey -M vicmd \"?\" history-incremental-pattern-search-backward\n  bindkey -M vicmd \"/\" history-incremental-pattern-search-forward\nelse\n  bindkey -M vicmd \"?\" history-incremental-search-backward\n  bindkey -M vicmd \"/\" history-incremental-search-forward\nfi\n\n# Toggle comment at the start of the line.\nbindkey -M vicmd \"#\" vi-pound-insert\n\n#\n# Emacs and Vi Key Bindings\n#\n\n# Unbound keys in vicmd and viins mode will cause really odd things to happen\n# such as the casing of all the characters you have typed changing or other\n# undefined things. In emacs mode they just insert a tilde, but bind these keys\n# in the main keymap to a noop op so if there is no keybind in the users mode\n# it will fall back and do nothing.\nfunction _prezto-zle-noop {  ; }\nzle -N _prezto-zle-noop\nlocal -a unbound_keys\nunbound_keys=(\n  \"${key_info[F1]}\"\n  \"${key_info[F2]}\"\n  \"${key_info[F3]}\"\n  \"${key_info[F4]}\"\n  \"${key_info[F5]}\"\n  \"${key_info[F6]}\"\n  \"${key_info[F7]}\"\n  \"${key_info[F8]}\"\n  \"${key_info[F9]}\"\n  \"${key_info[F10]}\"\n  \"${key_info[F11]}\"\n  \"${key_info[F12]}\"\n  \"${key_info[PageUp]}\"\n  \"${key_info[PageDown]}\"\n  \"${key_info[ControlPageUp]}\"\n  \"${key_info[ControlPageDown]}\"\n)\nfor keymap in $unbound_keys; do\n  bindkey -M viins \"${keymap}\" _prezto-zle-noop\n  bindkey -M vicmd \"${keymap}\" _prezto-zle-noop\ndone\n\n# Keybinds for all keymaps\nfor keymap in 'emacs' 'viins' 'vicmd'; do\n  bindkey -M \"$keymap\" \"$key_info[Home]\" beginning-of-line\n  bindkey -M \"$keymap\" \"$key_info[End]\" end-of-line\ndone\n\n# Keybinds for all vi keymaps\nfor keymap in viins vicmd; do\n  # Ctrl + Left and Ctrl + Right bindings to forward/backward word\n  for key in \"${(s: :)key_info[ControlLeft]}\"\n    bindkey -M \"$keymap\" \"$key\" vi-backward-word\n  for key in \"${(s: :)key_info[ControlRight]}\"\n    bindkey -M \"$keymap\" \"$key\" vi-forward-word\ndone\n\n# Keybinds for emacs and vi insert mode\nfor keymap in 'emacs' 'viins'; do\n  bindkey -M \"$keymap\" \"$key_info[Insert]\" overwrite-mode\n  bindkey -M \"$keymap\" \"$key_info[Delete]\" delete-char\n  bindkey -M \"$keymap\" \"$key_info[Backspace]\" backward-delete-char\n\n  bindkey -M \"$keymap\" \"$key_info[Left]\" backward-char\n  bindkey -M \"$keymap\" \"$key_info[Right]\" forward-char\n\n  # Expand history on space.\n  bindkey -M \"$keymap\" ' ' magic-space\n\n  # Clear screen.\n  bindkey -M \"$keymap\" \"$key_info[Control]L\" clear-screen\n\n  # Expand command name to full path.\n  for key in \"$key_info[Escape]\"{E,e}\n    bindkey -M \"$keymap\" \"$key\" expand-cmd-path\n\n  # Duplicate the previous word.\n  for key in \"$key_info[Escape]\"{M,m}\n    bindkey -M \"$keymap\" \"$key\" copy-prev-shell-word\n\n  # Use a more flexible push-line.\n  for key in \"$key_info[Control]Q\" \"$key_info[Escape]\"{q,Q}\n    bindkey -M \"$keymap\" \"$key\" push-line-or-edit\n\n  # Bind Shift + Tab to go to the previous menu item.\n  bindkey -M \"$keymap\" \"$key_info[BackTab]\" reverse-menu-complete\n\n  # Complete in the middle of word.\n  bindkey -M \"$keymap\" \"$key_info[Control]I\" expand-or-complete\n\n  # Expand .... to ../..\n  if zstyle -t ':prezto:module:editor' dot-expansion; then\n    bindkey -M \"$keymap\" \".\" expand-dot-to-parent-directory-path\n  fi\n\n  # Display an indicator when completing.\n  bindkey -M \"$keymap\" \"$key_info[Control]I\" \\\n    expand-or-complete-with-indicator\n\n  # Insert 'sudo ' at the beginning of the line.\n  bindkey -M \"$keymap\" \"$key_info[Control]X$key_info[Control]S\" prepend-sudo\n\n  # control-space expands all aliases, including global\n  bindkey -M \"$keymap\" \"$key_info[Control] \" glob-alias\ndone\n\n# Delete key deletes character in vimcmd cmd mode instead of weird default functionality\nbindkey -M vicmd \"$key_info[Delete]\" delete-char\n\n# Do not expand .... to ../.. during incremental search.\nif zstyle -t ':prezto:module:editor' dot-expansion; then\n  bindkey -M isearch . self-insert 2> /dev/null\nfi\n\n#\n# Layout\n#\n\n# Set the key layout.\nzstyle -s ':prezto:module:editor' key-bindings 'key_bindings'\nif [[ \"$key_bindings\" == (emacs|) ]]; then\n  bindkey -e\nelif [[ \"$key_bindings\" == vi ]]; then\n  bindkey -v\nelse\n  print \"prezto: editor: invalid key bindings: $key_bindings\" >&2\nfi\n\nunset key{,map,_bindings}\n"
  },
  {
    "path": "modules/emacs/README.md",
    "content": "# Emacs\n\nEnables Emacs dependency management.\n\n## Dependency management\n\n[Carton][1] installs and manages Emacs packages for Emacs package development\nand Emacs configuration.\n\nThis module prepends the Carton directory to the path variable to enable the\nexecution of `carton`.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:emacs:alias' skip 'yes'\n```\n\n### Carton\n\n- `cai` installs dependencies.\n- `cau` updates dependencies.\n- `caI` initializes the current directory for dependency management.\n- `cae` executes a command which correct dependencies.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sebastian Wiesner](https://github.com/lunaryorn)\n\n[1]: https://github.com/rejeep/carton\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/emacs/init.zsh",
    "content": "#\n# Configures Emacs dependency management.\n#\n# Authors: Sebastian Wiesner <lunaryorn@gmail.com>\n#\n\n# Return if requirements are not found.\nif [[ ! -d \"$HOME/.cask\" ]]; then\n  return 1\nfi\n\n# Prepend Cask bin directory.\npath=($HOME/.cask/bin $path)\n\n# Load Carton completion\nsource \"$HOME/.cask/etc/cask_completion.zsh\" 2> /dev/null\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:emacs:alias' skip; then\n  alias cai='cask install'\n  alias cau='cask update'\n  alias caI='cask init'\n  alias cae='cask exec'\nfi\n"
  },
  {
    "path": "modules/environment/README.md",
    "content": "# Environment\n\nSets general shell options and defines environment variables.\n\nThis module must be loaded first.\n\n## Contributors\n\nThis module **MUST NOT** rely on any command that is not built in Zsh.\n\nNon-interactive environment variables should be defined in\n[_`${ZDOTDIR:-$HOME}/.zshenv`_][1].\n\n## Options\n\n### General\n\n- `COMBINING_CHARS` combine zero-length punctuation characters (accents) with\n  the base character.\n- `INTERACTIVE_COMMENTS` enable comments in interactive shell.\n- `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\\''s Garage'.\n- `MAIL_WARNING` don't print a warning message if a mail file has been accessed.\n\n### Jobs\n\n- `LONG_LIST_JOBS` list jobs in the long format by default.\n- `AUTO_RESUME` attempt to resume existing job before creating a new process.\n- `NOTIFY` report status of background jobs immediately.\n- `BG_NICE` don't run all background jobs at a lower priority.\n- `HUP` don't kill jobs on shell exit.\n- `CHECK_JOBS` don't report on jobs when shell exit.\n\n## Variables\n\n### Termcap\n\n- `LESS_TERMCAP_mb` begins blinking.\n- `LESS_TERMCAP_md` begins bold.\n- `LESS_TERMCAP_me` ends mode.\n- `LESS_TERMCAP_se` ends standout-mode.\n- `LESS_TERMCAP_so` begins standout-mode.\n- `LESS_TERMCAP_ue` ends underline.\n- `LESS_TERMCAP_us` begins underline.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: ../../runcoms#zshenv\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/environment/init.zsh",
    "content": "#\n# Sets general shell options and defines environment variables.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Smart URLs\n#\n\n# This logic comes from an old version of zim. Essentially, bracketed-paste was\n# added as a requirement of url-quote-magic in 5.1, but in 5.1.1 bracketed\n# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic\n# which is generally better than url-quote-magic so we load that when possible.\nautoload -Uz is-at-least\nif [[ $ZSH_VERSION != 5.1.1 && $TERM != dumb ]]; then\n  if is-at-least 5.2; then\n    autoload -Uz bracketed-paste-url-magic\n    zle -N bracketed-paste bracketed-paste-url-magic\n  elif is-at-least 5.1; then\n    autoload -Uz bracketed-paste-magic\n    zle -N bracketed-paste bracketed-paste-magic\n  fi\n  autoload -Uz url-quote-magic\n  zle -N self-insert url-quote-magic\nfi\n\n#\n# General\n#\n\nsetopt COMBINING_CHARS      # Combine zero-length punctuation characters (accents)\n                            # with the base character.\nsetopt INTERACTIVE_COMMENTS # Enable comments in interactive shell.\nsetopt RC_QUOTES            # Allow 'Henry''s Garage' instead of 'Henry'\\''s Garage'.\nunsetopt MAIL_WARNING       # Don't print a warning message if a mail file has\n                            # been accessed.\n\n# Allow mapping Ctrl+S and Ctrl+Q shortcuts\n[[ -r ${TTY:-} && -w ${TTY:-} && $+commands[stty] == 1 ]] && stty -ixon <$TTY >$TTY\n\n#\n# Jobs\n#\n\nsetopt LONG_LIST_JOBS       # List jobs in the long format by default.\nsetopt AUTO_RESUME          # Attempt to resume existing job before creating a new process.\nsetopt NOTIFY               # Report status of background jobs immediately.\nunsetopt BG_NICE            # Don't run all background jobs at a lower priority.\nunsetopt HUP                # Don't kill jobs on shell exit.\nunsetopt CHECK_JOBS         # Don't report on jobs when shell exit.\n\n#\n# Termcap\n#\n\nif zstyle -t ':prezto:environment:termcap' color; then\n  export LESS_TERMCAP_mb=$'\\E[01;31m'       # Begins blinking.\n  export LESS_TERMCAP_md=$'\\E[01;31m'       # Begins bold.\n  export LESS_TERMCAP_me=$'\\E[0m'           # Ends mode.\n  export LESS_TERMCAP_se=$'\\E[0m'           # Ends standout-mode.\n  export LESS_TERMCAP_so=$'\\E[00;47;30m'    # Begins standout-mode.\n  export LESS_TERMCAP_ue=$'\\E[0m'           # Ends underline.\n  export LESS_TERMCAP_us=$'\\E[01;32m'       # Begins underline.\nfi\n"
  },
  {
    "path": "modules/fasd/README.md",
    "content": "# Fasd\n\n[Fasd][1] is a command-line productivity booster, inspired by tools like\n[autojump][2], [z][3] and [v][4], it offers quick access to files and\ndirectories by keeping track of files and directories that were previously\naccessed.\n\nFor shell completion to work, this module must be loaded _after_ the\n[_`completion`_][5] module.\n\nThe Prezto Fasd configuration differs from the default. The default aliases have\nbeen disabled.\n\n## Installation\n\n`fasd` is bundled with prezto as a git submodule. Alternatively, you can\nmanually install `fasd`. If a manual installation is found, it will be used\ninstead of the bundled version.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:fasd:alias' skip 'yes'\n```\n\n- `j` changes the current working directory interactively.\n\n## Completion\n\nType `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`,\n`,,d` at the end of a comma-separated query then hit <kbd>TAB</kbd>.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][6]._\n\n- [Wei Dai](https://github.com/clvv)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/whjvenyl/fasd\n[2]: https://github.com/joelthelion/autojump\n[3]: https://github.com/rupa/z\n[4]: https://github.com/rupa/v\n[5]: ../completion#readme\n[6]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/fasd/init.zsh",
    "content": "#\n# Maintains a frequently used file and directory list for fast access.\n#\n# Authors:\n#   Wei Dai <x@wei23.net>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'editor'\n\n# If the command doesn't exist externally, we need to fall back to the bundled\n# submodule.\nif (( ! $+commands[fasd] )); then\n  source \"${0:h}/external/fasd\" || return 1\nfi\n\n#\n# Initialization\n#\n\ncache_file=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/fasd-cache.zsh\"\nif [[ \"${commands[fasd]}\" -nt \"$cache_file\" \\\n      || \"${ZDOTDIR:-$HOME}/.zpreztorc\" -nt \"$cache_file\" \\\n      || ! -s \"$cache_file\"  ]]; then\n  # Set the base init arguments.\n  init_args=(zsh-hook)\n\n  # Set fasd completion init arguments, if applicable.\n  if zstyle -t ':prezto:module:completion' loaded; then\n    init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install)\n  fi\n\n  mkdir -p \"$cache_file:h\"\n  # Cache init code.\n  fasd --init \"$init_args[@]\" >! \"$cache_file\" 2> /dev/null\nfi\n\nsource \"$cache_file\"\n\nunset cache_file init_args\n\nfunction fasd_cd {\n  local fasd_ret=\"$(fasd -d \"$@\")\"\n  if [[ -d \"$fasd_ret\" ]]; then\n    cd \"$fasd_ret\"\n  else\n    print \"$fasd_ret\"\n  fi\n}\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:fasd:alias' skip; then\n  # Changes the current working directory interactively.\n  alias j='fasd_cd -i'\nfi\n"
  },
  {
    "path": "modules/git/README.md",
    "content": "# Git\n\nEnhances the [Git][1] distributed version control system by providing aliases,\nfunctions and by exposing repository status information to prompts.\n\nThis module must be loaded _before_ the [_`completion`_][13] module so that the\nprovided completion definitions are loaded automatically by _`completion`_\nmodule.\n\n**Note:** Git **2.11** is the minimum required version for better\n[git-rev-list][7] and [git-submodule][14] support.\n\n## Settings\n\n### Log\n\nTo configure the format of the [git-log][8] output, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<context>'` with `'brief'`,\n`'oneline'`, and `'medium'`. This will be passed to the `--pretty=format:`\nswitch.\n\n```sh\nzstyle ':prezto:module:git:log:context' format '<context>'\n```\n\n### Status\n\nRetrieving the status of a repository with [git-submodule][9] can take a long\ntime. To configure the submodules to ignore, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<state>'` with `'dirty'`,\n`'untracked'`, `'all'`, or `'none'`.\n\n```sh\nzstyle ':prezto:module:git:status:ignore' submodules '<state>'\n```\n\nThis setting affects all aliases and functions that call `git-status`.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:git:alias' skip 'yes'\n```\n\n### Git\n\n- `g` is short for `git`.\n\n### Branch (b)\n\n- `gb` lists, creates, renames, and deletes branches.\n- `gbc` creates a new branch.\n- `gbl` lists branches and their commits. (also `gbv`)\n- `gbL` lists all local and remote branches and their commits.\n- `gbr` renames a branch. (also `gbm`)\n- `gbR` renames a branch even if the new branch name already exists. (also\n  `gbM`)\n- `gbs` lists branches and their commits with ancestry graphs.\n- `gbS` lists local and remote branches and their commits with ancestry graphs.\n- `gbV` lists branches with more verbose information about their commits.\n- `gbx` deletes a branch. (also `gbd`)\n- `gbX` deletes a branch irrespective of its merged status. (also `gbD`)\n\n### Commit (c)\n\n- `gc` records changes to the repository.\n- `gcS` records changes to the repository. (Signed)\n- `gca` stages all modified and deleted files.\n- `gcaS` stages all modified and deleted files. (Signed)\n- `gcm` records changes to the repository with the given message.\n- `gcmS` records changes to the repository with the given message. (Signed)\n- `gcam` stages all modified and deleted files, and records changes to the\n  repository with the given message.\n- `gco` checks out a branch or paths to work tree.\n- `gcO` checks out hunks from the index or the tree interactively.\n- `gcf` amends the tip of the current branch using the same log message as\n  _HEAD_.\n- `gcfS` amends the tip of the current branch using the same log message as\n  _HEAD_. (Signed)\n- `gcF` amends the tip of the current branch.\n- `gcFS` amends the tip of the current branch. (Signed)\n- `gcp` applies changes introduced by existing commits.\n- `gcP` applies changes introduced by existing commits without committing.\n- `gcr` reverts existing commits by reverting patches and recording new commits.\n- `gcR` removes the _HEAD_ commit.\n- `gcs` displays commits with various objects.\n- `gcsS` displays commits with GPG signature.\n- `gcl` lists lost commits.\n- `gcy` displays commits yet to be applied to upstream in the short format.\n- `gcY` displays commits yet to be applied to upstream.\n\n### Conflict (C)\n\n- `gCl` lists unmerged files.\n- `gCa` adds unmerged file contents to the index.\n- `gCe` executes merge-tool on all unmerged file.\n- `gCo` checks out our changes for unmerged paths.\n- `gCO` checks out our changes for all unmerged paths.\n- `gCt` checks out their changes for unmerged paths.\n- `gCT` checks out their changes for all unmerged paths.\n\n### Data (d)\n\n- `gd` displays information about files in the index and the work tree.\n- `gdc` lists cached files.\n- `gdx` lists deleted files.\n- `gdm` lists modified files.\n- `gdu` lists untracked files.\n- `gdk` lists killed files.\n- `gdi` lists ignored files.\n\n### Fetch (f)\n\n- `gf` downloads objects and references from another repository.\n- `gfa` downloads objects and references from all remote repositories.\n- `gfc` clones a repository into a new directory.\n- `gfcr` clones a repository into a new directory including all submodules.\n- `gfm` fetches from and merges with another repository or local branch.\n- `gfr` fetches from and rebases on another repository or local branch.\n\n### Flow (F)\n\n- `gFi` is short for `git flow init`\n\n#### Feature (Ff)\n\n- `gFf` is short for `git flow feature`\n- `gFfl` is short for `git flow feature list`\n- `gFfs` is short for `git flow feature start`\n- `gFff` is short for `git flow feature finish`\n- `gFfp` is short for `git flow feature publish`\n- `gFft` is short for `git flow feature track`\n- `gFfd` is short for `git flow feature diff`\n- `gFfr` is short for `git flow feature rebase`\n- `gFfc` is short for `git flow feature checkout`\n- `gFfm` is short for `git flow feature pull`\n- `gFfx` is short for `git flow feature delete`\n\n#### Bugfix (Fb)\n\n- `gFb` is short for `git flow bugfix`\n- `gFbl` is short for `git flow bugfix list`\n- `gFbs` is short for `git flow bugfix start`\n- `gFbf` is short for `git flow bugfix finish`\n- `gFbp` is short for `git flow bugfix publish`\n- `gFbt` is short for `git flow bugfix track`\n- `gFbd` is short for `git flow bugfix diff`\n- `gFbr` is short for `git flow bugfix rebase`\n- `gFbc` is short for `git flow bugfix checkout`\n- `gFbm` is short for `git flow bugfix pull`\n- `gFbx` is short for `git flow bugfix delete`\n\n#### Release (Fl)\n\n- `gFl` is short for `git flow release`\n- `gFll` is short for `git flow release list`\n- `gFls` is short for `git flow release start`\n- `gFlf` is short for `git flow release finish`\n- `gFlp` is short for `git flow release publish`\n- `gFlt` is short for `git flow release track`\n- `gFld` is short for `git flow release diff`\n- `gFlr` is short for `git flow release rebase`\n- `gFlc` is short for `git flow release checkout`\n- `gFlm` is short for `git flow release pull`\n- `gFlx` is short for `git flow release delete`\n\n#### Hotfix (Fh)\n\n- `gFh` is short for `git flow hotfix`\n- `gFhl` is short for `git flow hotfix list`\n- `gFhs` is short for `git flow hotfix start`\n- `gFhf` is short for `git flow hotfix finish`\n- `gFhp` is short for `git flow hotfix publish`\n- `gFht` is short for `git flow hotfix track`\n- `gFhd` is short for `git flow hotfix diff`\n- `gFhr` is short for `git flow hotfix rebase`\n- `gFhc` is short for `git flow hotfix checkout`\n- `gFhm` is short for `git flow hotfix pull`\n- `gFhx` is short for `git flow hotfix delete`\n\n#### Support (Fs)\n\n- `gFs` is short for `git flow support`\n- `gFsl` is short for `git flow support list`\n- `gFss` is short for `git flow support start`\n- `gFsf` is short for `git flow support finish`\n- `gFsp` is short for `git flow support publish`\n- `gFst` is short for `git flow support track`\n- `gFsd` is short for `git flow support diff`\n- `gFsr` is short for `git flow support rebase`\n- `gFsc` is short for `git flow support checkout`\n- `gFsm` is short for `git flow support pull`\n- `gFsx` is short for `git flow support delete`\n\n### Grep (g)\n\n- `gg` displays lines matching a pattern.\n- `ggi` displays lines matching a pattern ignoring case.\n- `ggl` lists files matching a pattern.\n- `ggL` lists files that are not matching a pattern.\n- `ggv` displays lines not matching a pattern.\n- `ggw` displays lines matching a pattern at word boundary.\n\n### Index (i)\n\n- `gia` adds file contents to the index.\n- `giA` adds file contents to the index interactively.\n- `giu` adds file contents to the index (updates only known files).\n- `gid` displays changes between the index and a named commit (diff).\n- `giD` displays changes between the index and a named commit (word diff).\n- `gii` temporarily ignore differences in a given file.\n- `giI` unignore differences in a given file.\n- `gir` resets the current HEAD to the specified state.\n- `giR` resets the current index interactively.\n- `gix` removes files/directories from the index (recursively).\n- `giX` removes files/directories from the index (recursively and forced).\n\n### Log (l)\n\n- `gl` displays the log.\n- `gls` displays the stats log.\n- `gld` displays the diff log.\n- `glo` displays the one line log.\n- `glg` displays the graph log.\n- `glb` displays the brief commit log.\n- `glc` displays the commit count for each contributor in descending order.\n- `glS` displays the log and checks the validity of signed commits.\n\n### Merge (m)\n\n- `gm` joins two or more development histories together.\n- `gmC` joins two or more development histories together but does not commit.\n- `gmF` joins two or more development histories together but does not commit\n  generating a merge commit even if the merge resolved as a fast-forward.\n- `gma` aborts the conflict resolution, and reconstructs the pre-merge state.\n- `gmt` runs the merge conflict resolution tools to resolve conflicts.\n\n### Push (p)\n\n- `gp` updates remote refs along with associated objects.\n- `gpf` forcefully updates remote refs along with associated objects using the\n  safer `--force-with-lease` option.\n- `gpF` forcefully updates remote refs along with associated objects using the\n  riskier `--force` option.\n- `gpa` updates remote branches along with associated objects.\n- `gpA` updates remote branches and tags along with associated objects.\n- `gpt` updates remote tags along with associated objects.\n- `gpc` updates remote refs along with associated objects and adds _origin_ as\n  an upstream reference for the current branch.\n- `gpp` pulls and pushes from origin to origin.\n\n### Rebase (r)\n\n- `gr` forward-ports local commits to the updated upstream _HEAD_.\n- `gra` aborts the rebase.\n- `grc` continues the rebase after merge conflicts are resolved.\n- `gri` makes a list of commits to be rebased and opens the editor.\n- `grs` skips the current patch.\n\n### Remote (R)\n\n- `gR` manages tracked repositories.\n- `gRl` lists remote names and their URLs.\n- `gRa` adds a new remote.\n- `gRx` removes a remote.\n- `gRm` renames a remote.\n- `gRu` fetches remotes updates.\n- `gRp` prunes all stale remote tracking branches.\n- `gRs` displays information about a given remote.\n- `gRb` opens a remote on [GitHub][3] in the default browser.\n\n### Stash (s)\n\n- `gs` stashes the changes of the dirty working directory.\n- `gsa` applies the changes recorded in a stash to the working directory.\n- `gsx` drops a stashed state.\n- `gsX` drops all the stashed states.\n- `gsl` lists stashed states.\n- `gsL` lists dropped stashed states.\n- `gsd` displays changes between the stash and its original parent.\n- `gsp` removes and applies a single stashed state from the stash list.\n- `gsr` recovers a given stashed state.\n- `gss` stashes the changes of the dirty working directory, including untracked.\n- `gsS` stashes the changes of the dirty working directory interactively.\n- `gsw` stashes the changes of the dirty working directory retaining the index.\n\n### Submodule (S)\n\n- `gS` initializes, updates, or inspects submodules.\n- `gSa` adds given a repository as a submodule.\n- `gSf` evaluates a shell command in each of checked out submodules.\n- `gSi` initializes submodules.\n- `gSI` initializes and clones submodules recursively.\n- `gSl` lists the commits of all submodules.\n- `gSm` moves a submodule.\n- `gSs` synchronizes submodules' remote URL to the value specified in\n  _.gitmodules_.\n- `gSu` fetches and merges the latest changes for all submodule.\n- `gSx` removes a submodule.\n\n### Tag (t)\n\n- `gt` lists tags or creates tag.\n- `gtl` lists tags matching pattern.\n- `gts` creates a signed tag.\n- `gtv` validate a signed tag.\n\n### Working directory (w)\n\n- `gws` displays working-tree status in the short format.\n- `gwS` displays working-tree status.\n- `gwd` displays changes between the working tree and the index (diff).\n- `gwD` displays changes between the working tree and the index (word diff).\n- `gwr` resets the current HEAD to the specified state, does not touch the\n  index nor the working tree.\n- `gwR` resets the current HEAD, index and working tree to the specified state.\n- `gwc` removes untracked files from the working tree (dry-run).\n- `gwC` removes untracked files from the working tree.\n- `gwx` removes files from the working tree and from the index recursively.\n- `gwX` removes files from the working tree and from the index recursively and\n  forcefully.\n\n### Shadows\n\nThe following aliases may shadow system commands:\n\n- `gb` shadows the [GB][10].\n- `gm` shadows the [GraphicsMagick image processor][11].\n- `gpt` shadows the [GUID partition table maintenance utility][4].\n- `gs` shadows the [Ghostscript interpreter and previewer][5].\n\nIf you frequently use the above commands, you may wish to remove said aliases\nfrom this module or to disable them at the bottom of the zshrc with `unalias`.\n\nYou can temporarily bypass an alias by prefixing it with a backward slash:\n`\\gpt`.\n\n## Functions\n\n- `git-branch-current` displays the current branch.\n- `git-commit-lost` lists lost commits.\n- `git-dir` displays the path to the Git directory.\n- `git-hub-browse` opens the [GitHub][3] repository in the default browser.\n- `git-hub-shorten-url` shortens [GitHub URLs][12].\n- `git-info` exposes repository information via the `$git_info` associative\n  array.\n- `git-root` displays the path to the working tree root.\n- `git-stash-clear-interactive` asks for confirmation before clearing the stash.\n- `git-stash-dropped` lists dropped stashed states.\n- `git-stash-recover` recovers given dropped stashed states.\n- `git-submodule-move` moves a submodule.\n- `git-submodule-remove` removes a submodule.\n\n## Theming\n\nTo display information about the current repository in a prompt, define the\nfollowing styles in the `prompt_name_setup` function, where the syntax for\nsetting a style is as follows.\n\n```sh\nzstyle ':prezto:module:git:info:context:subcontext' format 'string'\n```\n\n### Main Contexts\n\n| Name     | Format Code | Description                        |\n| -------- | :---------: | ---------------------------------- |\n| action   |     %s      | Special action name                |\n| ahead    |     %A      | Commits ahead of remote count      |\n| behind   |     %B      | Commits behind of remote count     |\n| branch   |     %b      | Branch name                        |\n| commit   |     %c      | Commit hash                        |\n| position |     %p      | Commits from the nearest tag count |\n| remote   |     %R      | Remote name                        |\n| stashed  |     %S      | Stashed states count               |\n\n### Concise Contexts\n\n| Name      | Format Code | Description           |\n| --------- | :---------: | --------------------- |\n| clean     |     %C      | Clean state           |\n| dirty     |     %D      | Dirty files count     |\n| indexed   |     %i      | Indexed files count   |\n| unindexed |     %I      | Unindexed files count |\n| untracked |     %u      | Untracked files count |\n\nThe following contexts must be enabled with the following zstyle:\n\n```sh\nzstyle ':prezto:module:git:info' verbose 'yes'\n```\n\n### Verbose Contexts\n\n| Name      | Format Code | Description           |\n| --------- | :---------: | --------------------- |\n| added     |     %a      | Added files count     |\n| clean     |     %C      | Clean state           |\n| deleted   |     %d      | Deleted files count   |\n| dirty     |     %D      | Dirty files count     |\n| modified  |     %m      | Modified files count  |\n| renamed   |     %r      | Renamed files count   |\n| unmerged  |     %U      | Unmerged files count  |\n| untracked |     %u      | Untracked files count |\n\n### Special Action Contexts\n\n| Name                 | Format | Description                  |\n| -------------------- | :----: | ---------------------------- |\n| apply                | value  | Applying patches             |\n| bisect               | value  | Binary searching for changes |\n| cherry-pick          | value  | Cherry picking               |\n| cherry-pick-sequence | value  | Cherry picking sequence      |\n| merge                | value  | Merging                      |\n| rebase               | value  | Rebasing                     |\n| rebase-interactive   | value  | Rebasing interactively       |\n| rebase-merge         | value  | Rebasing merge               |\n| revert               | value  | Reverting                    |\n| revert-sequence      | value  | Reverting sequence           |\n\nFirst, format the repository state attributes. For example, to format the branch\nand remote names, define the following styles.\n\n```sh\nzstyle ':prezto:module:git:info:branch' format 'branch:%b'\nzstyle ':prezto:module:git:info:remote' format 'remote:%R'\n```\n\nSecond, format how the above attributes are displayed in prompts.\n\n```sh\nzstyle ':prezto:module:git:info:keys' format \\\n  'prompt'  ' git(%b)' \\\n  'rprompt' '[%R]'\n```\n\nLast, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to\n`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook\nfunction.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][6]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Colin Hebert](https://github.com/ColinHebert)\n\n[1]: https://www.git-scm.com\n[2]: https://hub.github.com\n[3]: https://www.github.com\n[4]: https://www.manpagez.com/man/8/gpt/\n[5]: https://www.manpagez.com/man/1/gs/\n[6]: https://github.com/sorin-ionescu/prezto/issues\n[7]: https://github.com/sorin-ionescu/prezto/issues/219\n[8]: https://git-scm.com/docs/git-log\n[9]: https://git-scm.com/docs/git-submodule\n[10]: https://getgb.io/\n[11]: https://www.manpagez.com/man/1/gm/\n[12]: https://github.blog/2011-11-10-git-io-github-url-shortener\n[13]: ../completion#readme\n[14]: https://github.com/sorin-ionescu/prezto/pull/1929\n"
  },
  {
    "path": "modules/git/alias.zsh",
    "content": "#\n# Defines Git aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Settings\n#\n\n# Log\nzstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \\\n    || _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'\nzstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \\\n    || _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n'\nzstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \\\n    || _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n'\n\n# Status\nzstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \\\n    || _git_status_ignore_submodules='none'\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:git:alias' skip; then\n  # Git\n  alias g='git'\n\n  # Branch (b)\n  alias gb='git branch'\n  alias gba='git branch --all --verbose'\n  alias gbc='git checkout -b'\n  alias gbd='git branch --delete'\n  alias gbD='git branch --delete --force'\n  alias gbl='git branch --verbose'\n  alias gbL='git branch --all --verbose'\n  alias gbm='git branch --move'\n  alias gbM='git branch --move --force'\n  alias gbr='git branch --move'\n  alias gbR='git branch --move --force'\n  alias gbs='git show-branch'\n  alias gbS='git show-branch --all'\n  alias gbv='git branch --verbose'\n  alias gbV='git branch --verbose --verbose'\n  alias gbx='git branch --delete'\n  alias gbX='git branch --delete --force'\n\n  # Commit (c)\n  alias gc='git commit --verbose'\n  alias gcS='git commit --verbose --gpg-sign'\n  alias gca='git commit --verbose --all'\n  alias gcaS='git commit --verbose --all --gpg-sign'\n  alias gcm='git commit --message'\n  alias gcmS='git commit --message --gpg-sign'\n  alias gcam='git commit --all --message'\n  alias gco='git checkout'\n  alias gcO='git checkout --patch'\n  alias gcf='git commit --amend --reuse-message HEAD'\n  alias gcfS='git commit --amend --reuse-message HEAD --gpg-sign'\n  alias gcF='git commit --verbose --amend'\n  alias gcFS='git commit --verbose --amend --gpg-sign'\n  alias gcp='git cherry-pick --ff'\n  alias gcP='git cherry-pick --no-commit'\n  alias gcr='git revert'\n  alias gcR='git reset \"HEAD^\"'\n  alias gcs='git show'\n  alias gcsS='git show --pretty=short --show-signature'\n  alias gcl='git-commit-lost'\n  alias gcy='git cherry --verbose --abbrev'\n  alias gcY='git cherry --verbose'\n\n  # Conflict (C)\n  alias gCl='git --no-pager diff --name-only --diff-filter=U'\n  alias gCa='git add $(gCl)'\n  alias gCe='git mergetool $(gCl)'\n  alias gCo='git checkout --ours --'\n  alias gCO='gCo $(gCl)'\n  alias gCt='git checkout --theirs --'\n  alias gCT='gCt $(gCl)'\n\n  # Data (d)\n  alias gd='git ls-files'\n  alias gdc='git ls-files --cached'\n  alias gdx='git ls-files --deleted'\n  alias gdm='git ls-files --modified'\n  alias gdu='git ls-files --other --exclude-standard'\n  alias gdk='git ls-files --killed'\n  alias gdi='git status --porcelain --short --ignored | sed -n \"s/^!! //p\"'\n\n  # Fetch (f)\n  alias gf='git fetch'\n  alias gfa='git fetch --all'\n  alias gfc='git clone'\n  alias gfcr='git clone --recurse-submodules'\n  alias gfm='git pull'\n  alias gfma='git pull --autostash'\n  alias gfr='git pull --rebase'\n  alias gfra='git pull --rebase --autostash'\n\n  # Flow (F)\n  alias gFi='git flow init'\n  alias gFf='git flow feature'\n  alias gFb='git flow bugfix'\n  alias gFl='git flow release'\n  alias gFh='git flow hotfix'\n  alias gFs='git flow support'\n\n  alias gFfl='git flow feature list'\n  alias gFfs='git flow feature start'\n  alias gFff='git flow feature finish'\n  alias gFfp='git flow feature publish'\n  alias gFft='git flow feature track'\n  alias gFfd='git flow feature diff'\n  alias gFfr='git flow feature rebase'\n  alias gFfc='git flow feature checkout'\n  alias gFfm='git flow feature pull'\n  alias gFfx='git flow feature delete'\n\n  alias gFbl='git flow bugfix list'\n  alias gFbs='git flow bugfix start'\n  alias gFbf='git flow bugfix finish'\n  alias gFbp='git flow bugfix publish'\n  alias gFbt='git flow bugfix track'\n  alias gFbd='git flow bugfix diff'\n  alias gFbr='git flow bugfix rebase'\n  alias gFbc='git flow bugfix checkout'\n  alias gFbm='git flow bugfix pull'\n  alias gFbx='git flow bugfix delete'\n\n  alias gFll='git flow release list'\n  alias gFls='git flow release start'\n  alias gFlf='git flow release finish'\n  alias gFlp='git flow release publish'\n  alias gFlt='git flow release track'\n  alias gFld='git flow release diff'\n  alias gFlr='git flow release rebase'\n  alias gFlc='git flow release checkout'\n  alias gFlm='git flow release pull'\n  alias gFlx='git flow release delete'\n\n  alias gFhl='git flow hotfix list'\n  alias gFhs='git flow hotfix start'\n  alias gFhf='git flow hotfix finish'\n  alias gFhp='git flow hotfix publish'\n  alias gFht='git flow hotfix track'\n  alias gFhd='git flow hotfix diff'\n  alias gFhr='git flow hotfix rebase'\n  alias gFhc='git flow hotfix checkout'\n  alias gFhm='git flow hotfix pull'\n  alias gFhx='git flow hotfix delete'\n\n  alias gFsl='git flow support list'\n  alias gFss='git flow support start'\n  alias gFsf='git flow support finish'\n  alias gFsp='git flow support publish'\n  alias gFst='git flow support track'\n  alias gFsd='git flow support diff'\n  alias gFsr='git flow support rebase'\n  alias gFsc='git flow support checkout'\n  alias gFsm='git flow support pull'\n  alias gFsx='git flow support delete'\n\n  # Grep (g)\n  alias gg='git grep'\n  alias ggi='git grep --ignore-case'\n  alias ggl='git grep --files-with-matches'\n  alias ggL='git grep --files-without-matches'\n  alias ggv='git grep --invert-match'\n  alias ggw='git grep --word-regexp'\n\n  # Index (i)\n  alias gia='git add'\n  alias giA='git add --patch'\n  alias giu='git add --update'\n  alias gid='git diff --no-ext-diff --cached'\n  alias giD='git diff --no-ext-diff --cached --word-diff'\n  alias gii='git update-index --assume-unchanged'\n  alias giI='git update-index --no-assume-unchanged'\n  alias gir='git reset'\n  alias giR='git reset --patch'\n  alias gix='git rm -r --cached'\n  alias giX='git rm -r --force --cached'\n\n  # Log (l)\n  alias gl='git log --topo-order --pretty=format:\"$_git_log_medium_format\"'\n  alias gls='git log --topo-order --stat --pretty=format:\"$_git_log_medium_format\"'\n  alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:\"$_git_log_medium_format\"'\n  alias glo='git log --topo-order --pretty=format:\"$_git_log_oneline_format\"'\n  alias glg='git log --topo-order --graph --pretty=format:\"$_git_log_oneline_format\"'\n  alias glb='git log --topo-order --pretty=format:\"$_git_log_brief_format\"'\n  alias glc='git shortlog --summary --numbered'\n  alias glS='git log --show-signature'\n\n  # Merge (m)\n  alias gm='git merge'\n  alias gmC='git merge --no-commit'\n  alias gmF='git merge --no-ff'\n  alias gma='git merge --abort'\n  alias gmt='git mergetool'\n\n  # Push (p)\n  alias gp='git push'\n  alias gpf='git push --force-with-lease'\n  alias gpF='git push --force'\n  alias gpa='git push --all'\n  alias gpA='git push --all && git push --tags'\n  alias gpt='git push --tags'\n  alias gpc='git push --set-upstream origin \"$(git-branch-current 2> /dev/null)\"'\n  alias gpp='git pull origin \"$(git-branch-current 2> /dev/null)\" && git push origin \"$(git-branch-current 2> /dev/null)\"'\n\n  # Rebase (r)\n  alias gr='git rebase'\n  alias gra='git rebase --abort'\n  alias grc='git rebase --continue'\n  alias gri='git rebase --interactive'\n  alias grs='git rebase --skip'\n\n  # Remote (R)\n  alias gR='git remote'\n  alias gRl='git remote --verbose'\n  alias gRa='git remote add'\n  alias gRx='git remote rm'\n  alias gRm='git remote rename'\n  alias gRu='git remote update'\n  alias gRp='git remote prune'\n  alias gRs='git remote show'\n  alias gRb='git-hub-browse'\n\n  # Stash (s)\n  alias gs='git stash'\n  alias gsa='git stash apply'\n  alias gsx='git stash drop'\n  alias gsX='git-stash-clear-interactive'\n  alias gsl='git stash list'\n  alias gsL='git-stash-dropped'\n  alias gsd='git stash show --patch --stat'\n  alias gsp='git stash pop'\n  alias gsr='git-stash-recover'\n  alias gss='git stash save --include-untracked'\n  alias gsS='git stash save --patch --no-keep-index'\n  alias gsw='git stash save --include-untracked --keep-index'\n\n  # Submodule (S)\n  alias gS='git submodule'\n  alias gSa='git submodule add'\n  alias gSf='git submodule foreach'\n  alias gSi='git submodule init'\n  alias gSI='git submodule update --init --recursive'\n  alias gSl='git submodule status'\n  alias gSm='git-submodule-move'\n  alias gSs='git submodule sync'\n  alias gSu='git submodule update --remote --recursive'\n  alias gSx='git-submodule-remove'\n\n  # Tag (t)\n  alias gt='git tag'\n  alias gtl='git tag --list'\n  alias gts='git tag --sign'\n  alias gtv='git verify-tag'\n\n  # Working Copy (w)\n  alias gws='git status --ignore-submodules=$_git_status_ignore_submodules --short'\n  alias gwS='git status --ignore-submodules=$_git_status_ignore_submodules'\n  alias gwd='git diff --no-ext-diff'\n  alias gwD='git diff --no-ext-diff --word-diff'\n  alias gwr='git reset --soft'\n  alias gwR='git reset --hard'\n  alias gwc='git clean --dry-run'\n  alias gwC='git clean --force'\n  alias gwx='git rm -r'\n  alias gwX='git rm -r --force'\nfi\n"
  },
  {
    "path": "modules/git/functions/_git-hub-browse",
    "content": "#compdef git-hub-browse\n#autoload\n\n#\n# Completes git-hub-browse.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  return 1\nfi\n\nlocal state expl remotes remote branches_or_tags branches tags files ret=1\n\n_arguments -C -s -S \\\n  '1::args:->remote' \\\n  '2::args:->branch-or-tag' \\\n  '3::args:->file' && ret=0\n\ncase \"$state\" in\n  (remote)\n    remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2))\n\n    _describe -t branch 'remotes' remotes && ret=0\n  ;;\n  (branch-or-tag)\n    remote=\"$words[(($CURRENT - 1))]\"\n\n    branches_or_tags=($(\n      command git ls-remote --heads --tags \"$remote\" 2> /dev/null | cut -f2\n    ))\n\n    branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/})\n    tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/})\n\n    _describe -t branch 'branches' branches && ret=0\n    _describe -t tag 'tags' tags && ret=0\n  ;;\n  (file)\n    files=(${(0)\"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)\"})\n    _wanted file expl 'file' _multi_parts - / files && ret=0\n  ;;\nesac\n\nreturn $ret\n"
  },
  {
    "path": "modules/git/functions/_git-hub-shorten-url",
    "content": "#compdef git-hub-shorten-url\n#autoload\n\n#\n# Completes git-hub-shorten-url.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nlocal service=\"$service\"\n\nzstyle \":completion:*:${service}:*:prefixes\" ignored-patterns '^http(|s)://'\nzstyle \":completion:*:${service}:*:hosts\" ignored-patterns '^*github.com'\n\n_arguments '1::GitHub URL:_urls' '2::code:' && return 0\n"
  },
  {
    "path": "modules/git/functions/_git-info",
    "content": "#compdef git-info\n#autoload\n\n#\n# Completes git-info.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  return 1\nfi\n\n_arguments \"1:toggle:((\n  on\\:'enable in-prompt information for the current repository'\n  off\\:'disable in-prompt information for the current repository'\n))\" && return 0\n"
  },
  {
    "path": "modules/git/functions/_git-submodule-move",
    "content": "#compdef git-submodule-move\n#autoload\n\n#\n# Completes git-submodule-move.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  return 1\nfi\n\nlocal state expl ret=1\nlocal -a submodules\nlocal submodule\n\n_arguments -C -s -S \\\n  '1::args:->submodule' \\\n  '2::args:->directory' && ret=0\n\ncase \"$state\" in\n  (submodule)\n    while IFS=$'\\n' read submodule; do\n      submodules+=(\"$submodule\")\n    done < <(\n      command git config --file \"$(git-root)/.gitmodules\" --list \\\n        | grep '.path=' \\\n        | cut -d= -f2-\n    )\n\n    _describe -t submodule 'submodules' submodules && ret=0\n  ;;\n  (directory)\n    _wanted directories expl 'directory' _path_files -/ || _message 'directory'\n  ;;\nesac\n\nreturn $ret\n"
  },
  {
    "path": "modules/git/functions/_git-submodule-remove",
    "content": "#compdef git-submodule-remove\n#autoload\n\n#\n# Completes git-submodule-remove.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  return 1\nfi\n\nlocal -a submodules\nlocal submodule\n\nwhile IFS=$'\\n' read submodule; do\n  submodules+=(\"$submodule\")\ndone < <(\n  command git config --file \"$(git-root)/.gitmodules\" --list \\\n    | grep '.path=' \\\n    | cut -d= -f2-\n)\n\n_describe -t submodule 'submodules' submodules && return 0\n"
  },
  {
    "path": "modules/git/functions/git-branch-current",
    "content": "#\n# Displays the current Git branch.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-branch-current {\n\nif ! command git rev-parse 2> /dev/null; then\n  print \"$0: not a repository: $PWD\" >&2\n  return 1\nfi\n\nlocal ref=\"$(command git symbolic-ref HEAD 2> /dev/null)\"\n\nif [[ -n \"$ref\" ]]; then\n  print \"${ref#refs/heads/}\"\n  return 0\nelse\n  return 1\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-commit-lost",
    "content": "#\n# Lists lost Git commits.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-commit-lost {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\ncommand git fsck 2> /dev/null \\\n  | grep \"^dangling commit\" \\\n  | awk '{print $3}' \\\n  | command git log \\\n      --date-order \\\n      --no-walk \\\n      --stdin \\\n      --pretty=format:${_git_log_oneline_format}\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-dir",
    "content": "#\n# Displays the path to the Git directory.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-dir {\n\nlocal git_dir=\"${$(command git rev-parse --git-dir):A}\"\n\nif [[ -n \"$git_dir\" ]]; then\n  print \"$git_dir\"\n  return 0\nelse\n  print \"$0: not a repository: $PWD\" >&2\n  return 1\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-hub-browse",
    "content": "#\n# Opens a GitHub repository in the default browser.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-hub-browse {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\nlocal remotes remote references reference file url\n\nremote=\"${1:-origin}\"\nremotes=($(command git remote show))\n\nif (( $remotes[(i)$remote] == $#remotes + 1 )); then\n  print \"$0: remote not found: $remote\" >&2\n  return 1\nfi\n\nurl=$(\n  command git remote get-url \"$remote\" \\\n      | sed -En \"s#(git@|https?://)(github.com)(:|/)(.+)/(.+)\\.git#https://\\2/\\4/\\5#p\"\n)\n\nreference=\"${${2:-$(git-branch-current)}:-HEAD}\"\nreferences=(\n  HEAD\n  ${${(f)\"$(command git ls-remote --heads --tags \"$remote\")\"}##*refs/(heads|tags)/}\n)\n\nif (( $references[(i)$reference] == $#references + 1 )); then\n  print \"$0: branch or tag not found: $reference\" >&2\n  return 1\nfi\n\nif [[ \"$reference\" == 'HEAD' ]]; then\n  reference=\"$(command git rev-parse HEAD 2> /dev/null)\"\nfi\n\nfile=\"$3\"\n\nif [[ -n \"$url\" ]]; then\n  url=\"$url/tree/$reference/$file\"\n\n  if [[ -n \"$BROWSER\" ]]; then\n    \"$BROWSER\" \"$url\"\n    return 0\n  else\n    print \"$0: browser not set or set to a non-existent browser\" >&2\n    return 1\n  fi\nelse\n  print \"$0: not a Git repository or remote not set\" >&2\n  return 1\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-hub-shorten-url",
    "content": "#\n# Shortens GitHub URLs.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-hub-shorten-url {\n\nlocal url=\"$1\" code=\"$2\"\n\nif [[ \"$url\" == '-' ]]; then\n  read url <&0\nfi\n\nif [[ -z \"$url\" || ! \"$url\" =~ ^https?:\\/\\/.*github.com\\/ ]]; then\n  print \"usage: $0 [ url | - ] [code] ; url must be a github.com URL\" >&2\n  return 1\nfi\n\nif (( $+commands[curl] )); then\n  print \"${${(@M)${(f)\"$(curl -s -i 'https://git.io' -F \"url=$url\" ${(z)code:+ -F \"code=$code\"})\"}:#Location: *}#Location: }\"\nelse\n  print \"$0: command not found: curl\" >&2\n  return 1\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-info",
    "content": "#\n# Exposes Git repository information via the $git_info associative array.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Gets the Git special action (am, bisect, cherry, merge, rebase, revert).\n# Borrowed from vcs_info and edited.\nfunction _git-action {\n  local action_dir\n  local git_dir=\"$(git-dir)\"\n  local apply_formatted\n  local bisect_formatted\n  local cherry_pick_formatted\n  local cherry_pick_sequence_formatted\n  local merge_formatted\n  local rebase_formatted\n  local rebase_interactive_formatted\n  local rebase_merge_formatted\n  local revert_formatted\n  local revert_sequence_formatted\n\n  for action_dir in \\\n    \"$git_dir/rebase-apply\" \\\n    \"$git_dir/rebase\" \\\n    \"$git_dir/../.dotest\"\n  do\n    if [[ -d \"$action_dir\" ]] ; then\n      zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' \\\n          || apply_formatted='apply'\n      zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' \\\n          || rebase_formatted='rebase'\n\n      if [[ -f \"$action_dir/rebasing\" ]] ; then\n        print \"$rebase_formatted\"\n      elif [[ -f \"$action_dir/applying\" ]] ; then\n        print \"$apply_formatted\"\n      else\n        print \"$rebase_formatted/$apply_formatted\"\n      fi\n\n      return 0\n    fi\n  done\n\n  for action_dir in \\\n    \"$git_dir/rebase-merge/interactive\" \\\n    \"$git_dir/.dotest-merge/interactive\"\n  do\n    if [[ -f \"$action_dir\" ]]; then\n      zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' \\\n          || rebase_interactive_formatted='rebase-interactive'\n      print \"$rebase_interactive_formatted\"\n      return 0\n    fi\n  done\n\n  for action_dir in \\\n    \"$git_dir/rebase-merge\" \\\n    \"$git_dir/.dotest-merge\"\n  do\n    if [[ -d \"$action_dir\" ]]; then\n      zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' \\\n          || rebase_merge_formatted='rebase-merge'\n      print \"$rebase_merge_formatted\"\n      return 0\n    fi\n  done\n\n  if [[ -f \"$git_dir/MERGE_HEAD\" ]]; then\n    zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' \\\n        || merge_formatted='merge'\n    print \"$merge_formatted\"\n    return 0\n  fi\n\n  if [[ -f \"$git_dir/CHERRY_PICK_HEAD\" ]]; then\n    if [[ -d \"$git_dir/sequencer\" ]] ; then\n      zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' \\\n          || cherry_pick_sequence_formatted='cherry-pick-sequence'\n      print \"$cherry_pick_sequence_formatted\"\n    else\n      zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' \\\n          || cherry_pick_formatted='cherry-pick'\n      print \"$cherry_pick_formatted\"\n    fi\n\n    return 0\n  fi\n\n  if [[ -f \"$git_dir/REVERT_HEAD\" ]]; then\n    if [[ -d \"$git_dir/sequencer\" ]] ; then\n      zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' \\\n          || revert_sequence_formatted='revert-sequence'\n      print \"$revert_sequence_formatted\"\n    else\n      zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' \\\n          || revert_formatted='revert'\n      print \"$revert_formatted\"\n    fi\n\n    return 0\n  fi\n\n  if [[ -f \"$git_dir/BISECT_LOG\" ]]; then\n    zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' \\\n        || bisect_formatted='bisect'\n    print \"$bisect_formatted\"\n    return 0\n  fi\n\n  return 1\n}\n\n# Gets the Git status information.\nfunction git-info {\n  # Extended globbing is needed to parse repository status.\n  setopt LOCAL_OPTIONS\n  setopt EXTENDED_GLOB\n\n  local action\n  local action_format\n  local action_formatted\n  local added=0\n  local added_format\n  local added_formatted\n  local ahead=0\n  local ahead_and_behind\n  local ahead_and_behind_cmd\n  local ahead_format\n  local ahead_formatted\n  local ahead_or_behind\n  local behind=0\n  local behind_format\n  local behind_formatted\n  local branch\n  local branch_format\n  local branch_formatted\n  local branch_info\n  local clean\n  local clean_formatted\n  local commit\n  local commit_format\n  local commit_formatted\n  local deleted=0\n  local deleted_format\n  local deleted_formatted\n  local dirty=0\n  local dirty_format\n  local dirty_formatted\n  local ignore_submodules\n  local indexed=0\n  local indexed_format\n  local indexed_formatted\n  local -A info_formats\n  local info_format\n  local modified=0\n  local modified_format\n  local modified_formatted\n  local position\n  local position_format\n  local position_formatted\n  local remote\n  local remote_cmd\n  local remote_format\n  local remote_formatted\n  local renamed=0\n  local renamed_format\n  local renamed_formatted\n  local stashed=0\n  local stashed_format\n  local stashed_formatted\n  local status_cmd\n  local status_mode\n  local unindexed=0\n  local unindexed_format\n  local unindexed_formatted\n  local unmerged=0\n  local unmerged_format\n  local unmerged_formatted\n  local untracked=0\n  local untracked_format\n  local untracked_formatted\n\n  # Clean up previous $git_info.\n  unset git_info\n  typeset -gA git_info\n\n  # Return if not inside a Git repository work tree.\n  if ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n    return 1\n  fi\n\n  if (( $# > 0 )); then\n    if [[ \"$1\" == [Oo][Nn] ]]; then\n      command git config --bool prompt.showinfo true\n    elif [[ \"$1\" == [Oo][Ff][Ff] ]]; then\n      command git config --bool prompt.showinfo false\n    else\n      print \"usage: $0 [ on | off ]\" >&2\n    fi\n    return 0\n  fi\n\n  # Return if git-info is disabled.\n  if ! is-true \"${$(command git config --bool prompt.showinfo):-true}\"; then\n    return 1\n  fi\n\n  # Ignore submodule status.\n  zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules'\n\n  # Format commit.\n  zstyle -s ':prezto:module:git:info:commit' format 'commit_format'\n  if [[ -n \"$commit_format\" ]]; then\n    commit=\"$(command git rev-parse HEAD 2> /dev/null)\"\n    if [[ -n \"$commit\" ]]; then\n      zformat -f commit_formatted \"$commit_format\" \"c:$commit\"\n    fi\n  fi\n\n  # Format stashed.\n  zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format'\n  if [[ -n \"$stashed_format\" ]]; then\n    commondir=\"\"\n    if [[ -f \"$(git-dir)/commondir\" ]]; then\n      commondir=\"$(<$(git-dir)/commondir)\"\n      [[ \"$commondir\" =~ ^/ ]] || commondir=\"$(git-dir)/$commondir\"\n    fi\n    if [[ -f \"$(git-dir)/refs/stash\" || ( -n \"$commondir\" && -f \"$commondir/refs/stash\" ) ]]; then\n      stashed=${#${(f)\"$(command git stash list 2> /dev/null)\"}}\n      if (( $stashed > 0 )); then\n        zformat -f stashed_formatted \"$stashed_format\" \"S:$stashed\"\n      fi\n    fi\n  fi\n\n  # Format action.\n  zstyle -s ':prezto:module:git:info:action' format 'action_format'\n  if [[ -n \"$action_format\" ]]; then\n    action=\"$(_git-action)\"\n    if [[ -n \"$action\" ]]; then\n      zformat -f action_formatted \"$action_format\" \"s:$action\"\n    fi\n  fi\n\n  # Get the branch.\n  branch=\"${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}\"\n\n  # Format branch.\n  zstyle -s ':prezto:module:git:info:branch' format 'branch_format'\n  if [[ -n \"$branch\" && -n \"$branch_format\" ]]; then\n    zformat -f branch_formatted \"$branch_format\" \"b:$branch\"\n  fi\n\n  # Format position.\n  zstyle -s ':prezto:module:git:info:position' format 'position_format'\n  if [[ -z \"$branch\" && -n \"$position_format\" ]]; then\n    position=\"$(command git describe --contains --all HEAD 2> /dev/null)\"\n    if [[ -n \"$position\" ]]; then\n      zformat -f position_formatted \"$position_format\" \"p:$position\"\n    fi\n  fi\n\n  # Format remote.\n  zstyle -s ':prezto:module:git:info:remote' format 'remote_format'\n  if [[ -n \"$branch\" && -n \"$remote_format\" ]]; then\n    # Gets the remote name.\n    remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}'\n    remote=\"${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}\"\n    if [[ -n \"$remote\" ]]; then\n      zformat -f remote_formatted \"$remote_format\" \"R:$remote\"\n    fi\n  fi\n\n  zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format'\n  zstyle -s ':prezto:module:git:info:behind' format 'behind_format'\n  if [[ -n \"$branch\" && ( -n \"$ahead_format\" || -n \"$behind_format\" ) ]]; then\n    # Gets the commit difference counts between local and remote.\n    ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}'\n\n    # Get ahead and behind counts.\n    ahead_and_behind=\"$(${(z)ahead_and_behind_cmd} 2> /dev/null)\"\n\n    # Format ahead.\n    if [[ -n \"$ahead_format\" ]]; then\n      ahead=\"$ahead_and_behind[(pws:\\t:)1]\"\n      if (( ahead > 0 )); then\n        zformat -f ahead_formatted \"$ahead_format\" \"A:$ahead\"\n      fi\n    fi\n\n    # Format behind.\n    if [[ -n \"$behind_format\" ]]; then\n      behind=\"$ahead_and_behind[(pws:\\t:)2]\"\n      if (( behind > 0 )); then\n        zformat -f behind_formatted \"$behind_format\" \"B:$behind\"\n      fi\n    fi\n  fi\n\n  # Get status type.\n  if ! zstyle -t ':prezto:module:git:info' verbose; then\n    # Format indexed.\n    zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format'\n    if [[ -n \"$indexed_format\" ]]; then\n      ((\n        indexed+=$(\n          command git diff-index \\\n            --no-ext-diff \\\n            --name-only \\\n            --cached \\\n            --ignore-submodules=${ignore_submodules:-none} \\\n            HEAD \\\n            2> /dev/null \\\n          | wc -l\n        )\n      ))\n      if (( indexed > 0 )); then\n        zformat -f indexed_formatted \"$indexed_format\" \"i:$indexed\"\n      fi\n    fi\n\n    # Format unindexed.\n    zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format'\n    if [[ -n \"$unindexed_format\" ]]; then\n      ((\n        unindexed+=$(\n          command git diff-files \\\n            --no-ext-diff \\\n            --name-only \\\n            --ignore-submodules=${ignore_submodules:-none} \\\n            2> /dev/null \\\n          | wc -l\n        )\n      ))\n      if (( unindexed > 0 )); then\n        zformat -f unindexed_formatted \"$unindexed_format\" \"I:$unindexed\"\n      fi\n    fi\n\n    # Format untracked.\n    zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'\n    if [[ -n \"$untracked_format\" ]]; then\n      ((\n        untracked+=$(\n          command git ls-files \\\n            --other \\\n            --exclude-standard \\\n            2> /dev/null \\\n          | wc -l\n        )\n      ))\n      if (( untracked > 0 )); then\n        zformat -f untracked_formatted \"$untracked_format\" \"u:$untracked\"\n      fi\n    fi\n\n    (( dirty = indexed + unindexed + untracked ))\n  else\n    # Use porcelain status for easy parsing.\n    status_cmd=\"command git status --porcelain --ignore-submodules=${ignore_submodules:-none}\"\n\n    # Get current status.\n    while IFS=$'\\n' read line; do\n      # Count added, deleted, modified, renamed, unmerged, untracked, dirty.\n      # T (type change) is undocumented, see http://git.io/FnpMGw.\n      # For a table of scenarii, see http://i.imgur.com/2YLu1.png.\n      [[ \"$line\" == ([ACDMT][\\ MT]|[ACMT]D)\\ * ]] && (( added++ ))\n      [[ \"$line\" == [\\ ACMRT]D\\ * ]] && (( deleted++ ))\n      [[ \"$line\" == ?[MT]\\ * ]] && (( modified++ ))\n      [[ \"$line\" == R?\\ * ]] && (( renamed++ ))\n      [[ \"$line\" == (AA|DD|U?|?U)\\ * ]] && (( unmerged++ ))\n      [[ \"$line\" == \\?\\?\\ * ]] && (( untracked++ ))\n      (( dirty++ ))\n    done < <(${(z)status_cmd} 2> /dev/null)\n\n    # Format added.\n    if (( added > 0 )); then\n      zstyle -s ':prezto:module:git:info:added' format 'added_format'\n      zformat -f added_formatted \"$added_format\" \"a:$added\"\n    fi\n\n    # Format deleted.\n    if (( deleted > 0 )); then\n      zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format'\n      zformat -f deleted_formatted \"$deleted_format\" \"d:$deleted\"\n    fi\n\n    # Format modified.\n    if (( modified > 0 )); then\n      zstyle -s ':prezto:module:git:info:modified' format 'modified_format'\n      zformat -f modified_formatted \"$modified_format\" \"m:$modified\"\n    fi\n\n    # Format renamed.\n    if (( renamed > 0 )); then\n      zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format'\n      zformat -f renamed_formatted \"$renamed_format\" \"r:$renamed\"\n    fi\n\n    # Format unmerged.\n    if (( unmerged > 0 )); then\n      zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format'\n      zformat -f unmerged_formatted \"$unmerged_format\" \"U:$unmerged\"\n    fi\n\n    # Format untracked.\n    if (( untracked > 0 )); then\n      zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format'\n      zformat -f untracked_formatted \"$untracked_format\" \"u:$untracked\"\n    fi\n  fi\n\n  # Format dirty and clean.\n  if (( dirty > 0 )); then\n    zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format'\n    zformat -f dirty_formatted \"$dirty_format\" \"D:$dirty\"\n    # Overwrite branch format to use dirty-branch format\n    zstyle -s ':prezto:module:git:info:dirty-branch' format 'branch_format'\n    if [[ -n \"$branch\" && -n \"$branch_format\" ]]; then\n      zformat -f branch_formatted \"$branch_format\" \"b:$branch\"\n    fi\n  else\n    zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'\n  fi\n\n  # Format info.\n  zstyle -a ':prezto:module:git:info:keys' format 'info_formats'\n  for info_format in ${(k)info_formats}; do\n    zformat -f REPLY \"$info_formats[$info_format]\" \\\n      \"a:$added_formatted\" \\\n      \"A:$ahead_formatted\" \\\n      \"B:$behind_formatted\" \\\n      \"b:$branch_formatted\" \\\n      \"C:$clean_formatted\" \\\n      \"c:$commit_formatted\" \\\n      \"d:$deleted_formatted\" \\\n      \"D:$dirty_formatted\" \\\n      \"i:$indexed_formatted\" \\\n      \"I:$unindexed_formatted\" \\\n      \"m:$modified_formatted\" \\\n      \"p:$position_formatted\" \\\n      \"R:$remote_formatted\" \\\n      \"r:$renamed_formatted\" \\\n      \"s:$action_formatted\" \\\n      \"S:$stashed_formatted\" \\\n      \"U:$unmerged_formatted\" \\\n      \"u:$untracked_formatted\"\n    git_info[$info_format]=\"$REPLY\"\n  done\n\n  unset REPLY\n\n  return 0\n}\n\ngit-info \"$@\"\n"
  },
  {
    "path": "modules/git/functions/git-root",
    "content": "#\n# Displays the path to the working tree root.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-root {\n\nlocal root=\"$(command git rev-parse --show-toplevel 2> /dev/null)\"\n\nif [[ -n \"$root\" ]]; then\n  print \"$root\"\n  return 0\nelse\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-stash-clear-interactive",
    "content": "#\n# Asks for confirmation before clearing the Git stash.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-stash-clear-interactive {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\nlocal stashed\n\nif [[ -f \"$(git-dir)/refs/stash\" ]]; then\n  stashed=${#${(f)\"$(command git stash list 2> /dev/null)\"}}\n  if (( $stashed > 0 )); then\n    if read -q \"?Clear $stashed stashed state(s) [y/N]? \"; then\n      command git stash clear\n    fi\n  fi\nfi\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-stash-dropped",
    "content": "#\n# Lists dropped Git stashed states.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-stash-dropped {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\ncommand git fsck --unreachable 2> /dev/null \\\n  | grep 'commit' \\\n  | awk '{print $3}' \\\n  | command git log \\\n      --pretty=format:$_git_log_oneline_format \\\n      --extended-regexp \\\n      --grep=\"${1:-(WIP )?[Oo]n [^:]+:}\" \\\n      --merges \\\n      --no-walk \\\n      --stdin\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-stash-recover",
    "content": "#\n# Recovers dropped Git stashed states.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-stash-recover {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nfi\n\nlocal commit\n\nfor commit in \"$@\"; do\n  command git update-ref \\\n    -m \"$(command git log -1 --pretty=\"format:%s\" \"$commit\")\" refs/stash \"$commit\"\ndone\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-submodule-move",
    "content": "#\n# Moves a Git submodule.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-submodule-move {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nelif [[ \"$PWD\" != \"$(git-root)\" ]]; then\n  print \"$0: must be run from the root of the work tree\" >&2\n  return 1\nfi\n\nlocal src=\"$1\"\nlocal dst=\"$2\"\nlocal url\n\nurl=\"$(command git config --file \"$(git-root)/.gitmodules\" --get \"submodule.${src}.url\")\"\n\nif [[ -z \"$url\" ]]; then\n  print \"$0: submodule not found: $src\" >&2\n  return 1\nfi\n\nmkdir -p \"$dst:h\"\n\ngit-submodule-remove \"$src\"\ncommand git submodule add \"$url\" \"$dst\"\n\nreturn 0\n\n# }\n"
  },
  {
    "path": "modules/git/functions/git-submodule-remove",
    "content": "#\n# Removes a Git submodule.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function git-submodule-remove {\n\nif ! is-true \"$(command git rev-parse --is-inside-work-tree 2> /dev/null)\"; then\n  print \"$0: not a repository work tree: $PWD\" >&2\n  return 1\nelif [[ \"$PWD\" != \"$(git-root)\" ]]; then\n  print \"$0: must be run from the root of the work tree\" >&2\n  return 1\nelif ! command git config --file .gitmodules --get \"submodule.${1}.path\" &> /dev/null; then\n  print \"$0: submodule not found: $1\" >&2\n  return 1\nfi\n\ncommand git config --file \"$(git-dir)/config\" --remove-section \"submodule.${1}\" &> /dev/null\ncommand git config --file \"$(git-root)/.gitmodules\" --remove-section \"submodule.${1}\" &> /dev/null\ncommand git add .gitmodules\n\ncommand git rm --cached -rf \"$1\"\nrm -rf \"$1\"\nrm -rf \"$(git-dir)/modules/$1\"\n\nreturn 0\n\n# }\n"
  },
  {
    "path": "modules/git/init.zsh",
    "content": "#\n# Provides Git aliases and functions.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[git] )); then\n  return 1\nfi\n\n# Load dependencies.\npmodload 'helper'\n\n# Load 'run-help' function.\nautoload -Uz run-help-git\n\n# Source module files.\nsource \"${0:h}/alias.zsh\"\n"
  },
  {
    "path": "modules/gnu-utility/README.md",
    "content": "# GNU Utility\n\nProvides for the interactive use of GNU utilities on BSD systems.\n\nInstalling GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e.,\n`ls` instead of `gls`, is not recommended since scripts that target other\nutilities will be broken.\n\nThis module wraps GNU utilities in functions without a prefix for interactive\nuse.\n\nThis module must be loaded _before_ the [_`utility`_][1] module so that GNU\nutilities enabled in this module are available for configuration in _`utility`_\nmodule.\n\n## Settings\n\n### Prefix\n\nTo use a different prefix, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'g'` with the desired prefix.\n\n```sh\nzstyle ':prezto:module:gnu-utility' prefix 'g'\n```\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: ../utility#readme\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/gnu-utility/init.zsh",
    "content": "#\n# Provides for the interactive use of GNU utilities on BSD systems.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Get the prefix or use the default.\nzstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' \\\n    || _gnu_utility_p='g'\n\n# Return if requirements are not found.\nif (( ! $+commands[${_gnu_utility_p}whoami] )); then\n  return 1\nfi\n\n_gnu_utility_cmds=(\n  # Coreutils\n  '[' 'b2sum' 'base32' 'base64' 'basename' 'basenc' 'cat' 'chcon' 'chgrp'\n  'chmod' 'chown' 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut'\n  'date' 'dd' 'df' 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr'\n  'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' 'install' 'join'\n  'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' 'mkfifo'\n  'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' 'numfmt' 'od'\n  'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' 'pwd'\n  'readlink' 'realpath' 'rm' 'rmdir' 'runcon'\n  'seq' 'sha1sum' 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf'\n  'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail'\n  'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' 'tty'\n  'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir'\n  'wc' 'who' 'whoami' 'yes'\n\n  # The following utilities are not part of Coreutils but installed separately.\n\n  # Binutils\n  'addr2line' 'ar' 'c++filt' 'coffdump' 'dlltool' 'dllwrap' 'elfedit' 'nm'\n  'objcopy' 'objdump' 'ranlib' 'readelf'\n  'size' 'srconv' 'strings' 'strip' 'sysdump' 'windmc' 'windres'\n\n  # Findutils\n  'find' 'locate' 'oldfind' 'updatedb' 'xargs'\n\n  # Libtool\n  'libtool' 'libtoolize'\n\n  # Miscellaneous\n  'awk' 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which'\n)\n\n# Wrap GNU utilities in functions.\nfor _gnu_utility_cmd in \"${_gnu_utility_cmds[@]}\"; do\n  _gnu_utility_pcmd=\"${_gnu_utility_p}${_gnu_utility_cmd}\"\n  if (( $+commands[$_gnu_utility_pcmd] \\\n        && ! $+builtins[$_gnu_utility_cmd] )); then\n    eval \"\n      function $_gnu_utility_cmd {\n        '$commands[$_gnu_utility_pcmd]' \\\"\\$@\\\"\n      }\n    \"\n  fi\ndone\n\nunset _gnu_utility_{p,cmds,cmd,pcmd}\n"
  },
  {
    "path": "modules/gpg/README.md",
    "content": "# GPG\n\nProvides for an easier use of [GPG][1] by setting up [gpg-agent][2].\n\n## Settings\n\n### SSH\n\nTo enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in\nreplacement for `ssh-agent`, add the following line to\n_`$GNUPGHOME/gpg-agent.conf`_ or _`$$HOME/.gnupg/gpg-agent.conf`_:\n\n```conf\nenable-ssh-support\n```\n\nWhen OpenSSH Agent protocol emulation is enabled, this module will load the SSH\nmodule for additional processing.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.gnupg.org\n[2]: https://linux.die.net/man/1/gpg-agent\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/gpg/init.zsh",
    "content": "#\n# Provides for an easier use of GPG by setting up gpg-agent.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[gpg-agent] )); then\n  return 1\nfi\n\n# Set the default paths to gpg-agent files.\n_gpg_agent_conf=\"${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf\"\n_gpg_agent_env=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/gpg-agent.env\"\n\n# Load environment variables from previous run\nsource \"$_gpg_agent_env\" 2> /dev/null\n\n# Start gpg-agent if not started.\nif [[ -z \"$GPG_AGENT_INFO\" && ! -S \"${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent\" ]]; then\n  # Start gpg-agent if not started.\n  if ! ps -U \"$LOGNAME\" -o pid,ucomm | grep -q -- \"${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent\"; then\n    mkdir -p \"$_gpg_agent_env:h\"\n    eval \"$(gpg-agent --daemon | tee \"$_gpg_agent_env\")\"\n  fi\nfi\n\n# Inform gpg-agent of the current TTY for user prompts.\nexport GPG_TTY=$TTY\n\n# Integrate with the SSH module.\nif grep '^enable-ssh-support' \"$_gpg_agent_conf\" &> /dev/null; then\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Override the ssh-agent environment file default path.\n  _ssh_agent_env=\"$_gpg_agent_env\"\n\n  # Load the SSH module for additional processing.\n  pmodload 'ssh'\n\n  # Updates the GPG-Agent TTY before every command since SSH does not set it.\n  function _gpg-agent-update-tty {\n    gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null\n  }\n  add-zsh-hook preexec _gpg-agent-update-tty\nfi\n\n# Clean up.\nunset _gpg_agent_{conf,env}\n\n# Disable GUI prompts inside SSH.\nif [[ -n \"$SSH_CONNECTION\" ]]; then\n  export PINENTRY_USER_DATA='USE_CURSES=1'\nfi\n"
  },
  {
    "path": "modules/haskell/README.md",
    "content": "# Haskell\n\nEnables local Haskell package installation.\n\n## Per-user Package Installation\n\n[Cabal][1], the Haskell package manager, can install packages into per user\ndirectories.\n\nThis module prepends per user directories to the relevant path variables to\nenable the execution of user installed executables and the reading of\ndocumentation.\n\n### Usage\n\nInstall packages into per user directories with `cabal install --user`.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sebastian Wiesner](https://github.com/lunaryorn)\n\n[1]: https://www.haskell.org/cabal/\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/haskell/init.zsh",
    "content": "#\n# Enables local Haskell package installation.\n#\n# Authors:\n#   Sebastian Wiesner <lunaryorn@googlemail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[ghc] )); then\n  return 1\nfi\n\n# Load dependencies.\npmodload 'helper'\n\n# Prepend Cabal per user directories to PATH.\nif is-darwin && [[  -d $HOME/Library/Haskell ]]; then\n  path=($HOME/Library/Haskell/bin(/N) $path)\nelse\n  path=($HOME/.cabal/bin(/N) $path)\nfi\n"
  },
  {
    "path": "modules/helper/README.md",
    "content": "# Helper\n\nProvides helper functions for developing modules.\n\n## Functions\n\n- `add-zsh-trap` adds a function name to a list to be called when a trap is\n  triggered.\n- `is-autoloadable` checks if a file can be autoloaded by trying to load it in\n  a subshell.\n- `is-callable` checks if a name is a command, function, or alias.\n- `is-true` checks a boolean variable for \"true\".\n- `coalesce` prints the first non-empty string in the arguments array.\n- `is-darwin` checks if running on macOS Darwin.\n- `is-linux` checks if running on Linux.\n- `is-bsd` checks if running on BSD.\n- `is-cygwin` checks if running on Cygwin (Windows).\n- `is-termux` checks if running on Termux (Android).\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][1]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/helper/functions/add-zsh-trap",
    "content": "#\n# Provides for trapping UNIX signals and calling callback functions when a trap\n# is triggered.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Adds a function name to a list to be called when a trap is triggered.\nfunction add-zsh-trap {\n  if (( $# < 2 )); then\n    print \"usage: $0 type function\" >&2\n    return 1\n  fi\n\n  if [[ -z \"$signals[(r)$1]\" ]]; then\n    print \"$0: unknown signal: $1\" >&2\n    return 1\n  fi\n\n  local trap_functions=\"TRAP${1}_FUNCTIONS\"\n  if (( ! ${(P)+trap_functions} )); then\n    typeset -gaU \"$trap_functions\"\n  fi\n  eval \"$trap_functions+=\"$2\"\"\n\n  if (( ! $+functions[TRAP${1}] )); then\n    eval \"\n      function TRAP${1} {\n        for trap_function in \\\"\\$TRAP${1}_FUNCTIONS[@]\\\"; do\n          if (( \\$+functions[\\$trap_function] )); then\n            \\\"\\$trap_function\\\" \\\"\\$1\\\"\n          fi\n        done\n        return \\$(( 128 + \\$1 ))\n      }\n    \"\n  fi\n}\n\nadd-zsh-trap \"$@\"\n"
  },
  {
    "path": "modules/helper/init.zsh",
    "content": "#\n# Defines helper functions.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Checks if a file can be autoloaded by trying to load it in a subshell.\nfunction is-autoloadable {\n  ( unfunction $1 ; autoload -U +X $1 ) &> /dev/null\n}\n\n# Checks if a name is a command, function, or alias.\nfunction is-callable {\n  (( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] ))\n}\n\n# Checks a boolean variable for \"true\".\n# Case insensitive: \"1\", \"y\", \"yes\", \"t\", \"true\", \"o\", and \"on\".\nfunction is-true {\n  [[ -n \"$1\" && \"$1\" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]]\n}\n\n# Prints the first non-empty string in the arguments array.\nfunction coalesce {\n  for arg in $argv; do\n    print \"$arg\"\n    return 0\n  done\n  return 1\n}\n\n# Checks if running on macOS Darwin.\nfunction is-darwin {\n  [[ \"$OSTYPE\" == darwin* ]]\n}\n\n# Checks if running on Linux.\nfunction is-linux {\n  [[ \"$OSTYPE\" == linux* ]]\n}\n\n# Checks if running on BSD.\nfunction is-bsd {\n  [[ \"$OSTYPE\" == *bsd* ]]\n}\n\n# Checks if running on Cygwin (Windows).\nfunction is-cygwin {\n  [[ \"$OSTYPE\" == cygwin* ]]\n}\n\n# Checks if running on termux (Android).\nfunction is-termux {\n  [[ \"$OSTYPE\" == linux-android ]]\n}\n"
  },
  {
    "path": "modules/history/README.md",
    "content": "# History\n\nSets [history][1] options and defines history aliases.\n\n**Note:** Default path of `HISTFILE` has changed from\n_`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_. The file\nwill be automatically renamed if possible (when the new one doesn't exist).\nOtherwise, if you want to preserve previous history, you will need to move them\nfrom _`${ZDOTDIR:-$HOME}/.zhistory`_ to _`${ZDOTDIR:-$HOME}/.zsh_history`_.\n\nAlternately, you can set `HISTFILE` manually to _`${ZDOTDIR:-$HOME}/.zhistory`_.\n\n## Options\n\n- `BANG_HIST` treats the **!** character specially during expansion.\n- `EXTENDED_HISTORY` writes the history file in the _:start:elapsed;command_\n  format.\n- `SHARE_HISTORY` shares history between all sessions. Note that\n  `SHARE_HISTORY`, `INC_APPEND_HISTORY`, and `INC_APPEND_HISTORY_TIME` are\n  mutually exclusive.\n- `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history.\n- `HIST_IGNORE_DUPS` does not record an event that was just recorded again.\n- `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a\n  duplicate.\n- `HIST_FIND_NO_DUPS` does not display a previously found event.\n- `HIST_IGNORE_SPACE` does not record an event starting with a space.\n- `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file.\n- `HIST_VERIFY` does not execute immediately upon history expansion.\n- `HIST_BEEP` beeps when accessing non-existent history.\n\n## Variables\n\n- `HISTFILE` stores the path to the history file.\n- `HISTSIZE` stores the maximum number of events to save in the internal history.\n- `SAVEHIST` stores the maximum number of events to save in the history file.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:history:alias' skip 'yes'\n```\n\n- `history-stat` lists the ten most used commands\n\n## Settings\n\n### histfile\n\nCan be configured either by setting HISTFILE manually before loading this\nmodule or by using zstyle:\n\n```sh\nzstyle ':prezto:module:history' histfile \"<file_name>\"\n```\n\ndefaults to \"${ZDOTDIR:-$HOME}/.zsh_history\".\n\n### histsize\n\n```sh\nzstyle ':prezto:module:history' histsize <number>\n```\n\ndefaults to 10000.\n\n### savehist\n\n```sh\nzstyle ':prezto:module:history' savehist <number>\n```\n\ndefaults to histsize\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Robby Russell](https://github.com/robbyrussell)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Indrajit Raychaudhuri](https://github.com/indrajitr)\n\n[1]: https://zsh.sourceforge.net/Guide/zshguide02.html#l16\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/history/init.zsh",
    "content": "#\n# Sets history options and defines history aliases.\n#\n# Authors:\n#   Robby Russell <robby@planetargon.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Options\n#\n\nsetopt BANG_HIST              # Treat the '!' character specially during expansion.\nsetopt EXTENDED_HISTORY       # Write the history file in the ':start:elapsed;command' format.\nsetopt SHARE_HISTORY          # Share history between all sessions.\nsetopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history.\nsetopt HIST_IGNORE_DUPS       # Do not record an event that was just recorded again.\nsetopt HIST_IGNORE_ALL_DUPS   # Delete an old recorded event if a new event is a duplicate.\nsetopt HIST_FIND_NO_DUPS      # Do not display a previously found event.\nsetopt HIST_IGNORE_SPACE      # Do not record an event starting with a space.\nsetopt HIST_SAVE_NO_DUPS      # Do not write a duplicate event to the history file.\nsetopt HIST_VERIFY            # Do not execute immediately upon history expansion.\nsetopt HIST_BEEP              # Beep when accessing non-existent history.\n\n#\n# Variables\n#\n\nzstyle -s ':prezto:module:history' histfile 'HISTFILE' \\\n    || HISTFILE=\"${HISTFILE:-${ZDOTDIR:-$HOME}/.zsh_history}\" # The path to the history file.\nzstyle -s ':prezto:module:history' histsize 'HISTSIZE' \\\n    || HISTSIZE=10000                                         # The maximum number of events to save in the internal history.\nzstyle -s ':prezto:module:history' savehist 'SAVEHIST' \\\n    || SAVEHIST=$HISTSIZE                                     # The maximum number of events to save in the history file.\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:history:alias' skip; then\n  # Lists the ten most used commands.\n  alias history-stat=\"history 0 | awk '{print \\$2}' | sort | uniq -c | sort -n -r | head\"\nfi\n"
  },
  {
    "path": "modules/history-substring-search/README.md",
    "content": "# History Substring Search\n\nIntegrates [`zsh-history-substring-search`][1] into Prezto, which implements the\n[Fish shell][2]'s history search feature, where the user can type in any part of\na previously entered command and press up and down to cycle through matching\ncommands.\n\nIf this module is used in conjunction with the [_`syntax-highlighting`_][3]\nmodule, this module must be loaded _after_ the _`syntax-highlighting`_ module.\n\nAdditionally, if this module is used in conjunction with the\n[_`autosuggestions`_][4] module, this module must be loaded _before_ the\n_`autosuggestions`_ module.\n\nTo elaborate, the relative order of loading the modules would be\n_`syntax-highlighting`_, _`history-substring-search`_ and _`autosuggestions`_.\n\n## Contributors\n\nNew features and bug fixes should be submitted to the\n[`zsh-history-substring-search`][1] project according to its rules and\nregulations. This module will be synchronized against it.\n\n## Settings\n\n### Case Sensitivity\n\nTo enable case-sensitivity for this module only, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' case-sensitive 'yes'\n```\n\n### Highlighting\n\nIf colors are enabled, _history-substring-search_ will automatically highlight\npositive results.\n\nTo disable highlighting for this module only, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' color 'no'\n```\n\nTo set the query found color, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search:color' found ''\n```\n\nTo set the query not found color, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search:color' not-found ''\n```\n\nTo set the search globbing flags, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' globbing-flags ''\n```\n\n### Case sensitive search\n\nTo set the search case-sensitivity, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' case-sensitive 'yes'\n```\n\n### Fuzzy search\n\nTo enable search for fuzzy matches, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' fuzzy 'yes'\n```\n\n### Unique results\n\nTo enable unique results, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' unique 'yes'\n```\n\n### Prefixed search\n\nTo enable prefixed search matches, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:history-substring-search' prefixed 'yes'\n```\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Suraj N. Kurapati](https://github.com/sunaku)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/zsh-users/zsh-history-substring-search\n[2]: https://fishshell.com\n[3]: ../syntax-highlighting#readme\n[4]: ../autosuggestions#readme\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/history-substring-search/init.zsh",
    "content": "#\n# Integrates history-substring-search into Prezto.\n#\n# Authors:\n#   Suraj N. Kurapati <sunaku@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'editor'\n\n# Source module files.\nif (( ! $+functions[history-substring-search-up] )); then\n  source \"${0:h}/external/zsh-history-substring-search.zsh\" || return 1\nfi\n\n#\n# Search\n#\n\nzstyle -s ':prezto:module:history-substring-search:color' found \\\n  'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \\\n    || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'\n\nzstyle -s ':prezto:module:history-substring-search:color' not-found \\\n  'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \\\n    || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'\n\nzstyle -s ':prezto:module:history-substring-search' globbing-flags \\\n  'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \\\n    || HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'\n\nif zstyle -t ':prezto:module:history-substring-search' case-sensitive; then\n  HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS=\"${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}\"\nfi\n\nif ! zstyle -t ':prezto:module:history-substring-search' color; then\n  unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND}\nfi\n\nif zstyle -t ':prezto:module:history-substring-search' fuzzy; then\n  HISTORY_SUBSTRING_SEARCH_FUZZY=1\nfi\n\nif zstyle -t ':prezto:module:history-substring-search' unique; then\n  HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=1\nfi\n\nif zstyle -t ':prezto:module:history-substring-search' prefixed; then\n  HISTORY_SUBSTRING_SEARCH_PREFIXED=1\nfi\n\n#\n# Key Bindings\n#\n\nif [[ -n \"$key_info\" ]]; then\n  # Emacs\n  bindkey -M emacs \"$key_info[Control]P\" history-substring-search-up\n  bindkey -M emacs \"$key_info[Control]N\" history-substring-search-down\n\n  # Vi\n  bindkey -M vicmd \"k\" history-substring-search-up\n  bindkey -M vicmd \"j\" history-substring-search-down\n\n  # Emacs and Vi\n  for keymap in 'emacs' 'viins'; do\n    bindkey -M \"$keymap\" \"$key_info[Up]\" history-substring-search-up\n    bindkey -M \"$keymap\" \"$key_info[Down]\" history-substring-search-down\n  done\n\n  unset keymap\nfi\n"
  },
  {
    "path": "modules/homebrew/README.md",
    "content": "# Homebrew\n\nDefines Homebrew specific environment variables and aliases.\n\n## Variables\n\nExecute the following to list the environment variables loaded in the shell:\n\n```sh\nbrew shellenv\n```\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:homebrew:alias' skip 'yes'\n```\n\n### Homebrew Core\n\n- `brewc` cleans outdated brews and their cached archives.\n- `brewi` installs a formula.\n- `brewL` lists installed formulae that are not dependencies of another\n  installed formula.\n- `brewl` lists installed formulae.\n- `brewo` lists brews which have an update available.\n- `brews` searches for a formula.\n- `brewu` upgrades outdated formulae.\n- `brewx` uninstalls a formula.\n\n### Homebrew Cask\n\n- `caski` installs a cask.\n- `caskl` lists installed casks.\n- `casko` lists casks which have an update available.\n- `casks` searches for a cask.\n- `casku` upgrades outdated casks.\n- `caskx` uninstalls a cask.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][1]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Griffin Yourick](https://github.com/tough-griff)\n\n[1]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/homebrew/init.zsh",
    "content": "#\n# Defines Homebrew aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'helper'\n\n# Return if requirements are not found.\nif ! is-darwin && ! is-linux; then\n  return 1\nfi\n\n#\n# Variables\n#\n\n# Load standard Homebrew shellenv into the shell session.\n# Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related\n# variables as they are already handled in standard zsh configuration.\nif (( $+commands[brew] )); then\n  cache_file=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-shellenv-cache.zsh\"\n  if [[ \"$commands[brew]\" -nt \"$cache_file\" \\\n      || \"${ZDOTDIR:-$HOME}/.zpreztorc\" -nt \"$cache_file\" \\\n      || ! -s \"$cache_file\" ]]; then\n    mkdir -p \"$cache_file:h\"\n    # Cache the result.\n    echo \"${(@M)${(f)\"$(brew shellenv 2> /dev/null)\"}:#export HOMEBREW*}\" >! \"$cache_file\" 2> /dev/null\n  fi\n\n  source \"$cache_file\"\n  unset cache_file\nfi\n\n#\n# Aliases\n#\n\n# Homebrew\nif ! zstyle -t ':prezto:module:homebrew:alias' skip; then\n  alias brewc='brew cleanup'\n  alias brewi='brew install'\n  alias brewL='brew leaves'\n  alias brewl='brew list'\n  alias brewo='brew outdated'\n  alias brews='brew search'\n  alias brewu='brew upgrade'\n  alias brewx='brew uninstall'\n\n  # Homebrew Cask\n  alias caski='brew install --cask'\n  alias caskl='brew list --cask'\n  alias casko='brew outdated --cask'\n  alias casks='brew search --cask'\n  alias casku='brew upgrade --cask'\n  alias caskx='brew uninstall --cask'\nfi\n"
  },
  {
    "path": "modules/macports/README.md",
    "content": "# MacPorts\n\nDefines MacPorts aliases and adds MacPorts directories to path variables.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:macports:alias' skip 'yes'\n```\n\n- `portc` cleans the files used to build ports.\n- `porti` installs a port.\n- `ports` searches for a port.\n- `portu` upgrades a port.\n- `portU` upgrades MacPorts, the ports collection, and outdated ports.\n- `portx` uninstalls a port.\n- `portX` uninstalls inactive ports.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][1]._\n\n- [Matt Cable](https://github.com/curiousstranger)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/macports/init.zsh",
    "content": "#\n# Defines MacPorts aliases and adds MacPorts directories to path variables.\n#\n# Authors:\n#   Matt Cable <wozz@wookie.net>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'helper'\n\n# Return if requirements are not found.\nif ! is-darwin; then\n  return 1\nfi\n\n#\n# Paths\n#\n\n# Set the list of directories that Zsh searches for programs.\npath=(\n  /opt/local/{bin,sbin}\n  $path\n)\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:macports:alias' skip; then\n  alias portc='sudo port clean --all installed'\n  alias porti='sudo port install'\n  alias ports='port search'\n  alias portU='sudo port selfupdate && sudo port upgrade outdated'\n  alias portu='sudo port upgrade'\n  alias portX='sudo port -u uninstall'\n  alias portx='sudo port uninstall'\nfi\n"
  },
  {
    "path": "modules/node/README.md",
    "content": "# Node.js\n\nProvides utility functions for [Node.js][1], loads the Node Version Manager, and\nenables [_npm_][2] completion.\n\nThis module must be loaded _before_ the _`completion`_ module so that the\nprovided completion definitions are loaded.\n\n## nodenv\n\n[_nodenv_][5] does one thing well - it is concerned solely with switching\nNode versions. It is simple and predictable, Just Works, and is rock solid in\nproduction. nodenv is forked from the popular [_rbenv_][6].\n\nThis will be loaded automatically if nodenv is installed in `$NODENV_ROOT`,\n_`$XDG_CONFIG_HOME/nodenv`_, _`~/.nodenv`_, or `nodenv` is on the path.\n\n## nvm\n\n[_nvm_][7] allows for managing multiple, isolated Node.js installations in the\nhome directory.\n\nThis will be loaded automatically if nvm is installed in `$NVM_DIR`,\n_`$XDG_CONFIG_HOME/nvm`_, _`~/.nvm`_, or is installed with homebrew.\n\n## Variables\n\n- `N_PREFIX` stores the path to [_n_][8] cache.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:node:alias' skip 'yes'\n```\n\n### npm\n\n- `npmi` install a package.\n- `npml` list installed packages.\n- `npmo` check for outdated packages.\n- `npmp` publish a package.\n- `npmP` remove extraneous packages.\n- `npmr` run arbitrary package scripts.\n- `npms` search for packages.\n- `npmt` test a package.\n- `npmu` update packages.\n- `npmx` uninstalls a package.\n\n- `npmci` install a project with a clean slate.\n- `npmcit` install a project with a clean slate and run tests.\n- `npmit` install package(s) and run tests.\n\n## Functions\n\n- `node-doc` opens the Node.js online [API documentation][3] in the default\n  browser.\n- `node-info` exposes information about the Node.js environment via the\n  `$node_info` associative array.\n\n## Theming\n\nTo display the version number of the current Node.js version, define the\nfollowing style inside the `prompt_name_setup` function.\n\n```sh\n# %v - Node.js version.\nzstyle ':prezto:module:node:info:version' format 'version:%v'\n```\n\nThen add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call\n`node-info` in `prompt_name_preexec` hook function.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][4]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Zeh Rizzatti](https://github.com/zehrizzatti)\n- [Indrajit Raychaudhuri](https://github.com/indrajitr)\n\n[1]: http://nodejs.org\n[2]: http://npmjs.org\n[3]: http://nodejs.org/api\n[4]: https://github.com/sorin-ionescu/prezto/issues\n[5]: https://github.com/nodenv/nodenv\n[6]: https://github.com/sstephenson/rbenv\n[7]: https://github.com/nvm-sh/nvm\n[8]: https://github.com/tj/n\n"
  },
  {
    "path": "modules/node/functions/_grunt",
    "content": "#compdef grunt\n#autoload\n\n#\n# Grunt completion, delegating to grunt to do all the completion work.\n#\n# Authors:\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\nif (( $+commands[grunt] )); then\n  eval \"$(grunt --completion=zsh)\"\n\n  _grunt_completion \"$@\"\nfi\n"
  },
  {
    "path": "modules/node/functions/_gulp",
    "content": "#compdef gulp\n#autoload\n\n#\n# Gulp completion, delegating to gulp to do all the completion work.\n#\n# Authors:\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\nif (( $+commands[gulp] )); then\n  eval \"$(gulp --completion=zsh)\"\n\n  _gulp_completion \"$@\"\nfi\n"
  },
  {
    "path": "modules/node/functions/node-doc",
    "content": "#\n# Opens the Node.js online API documentation in the default browser.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function node-doc {\n\nif [[ -z \"$BROWSER\" ]]; then\n  print \"$0: no web browser defined\" >&2\n  return 1\nfi\n\n# TODO: Make the sections easier to use.\n\"$BROWSER\" \"https://nodejs.org/docs/${$(node --version 2> /dev/null)/%-*}/api/all.html#${1}\"\n\n# }\n"
  },
  {
    "path": "modules/node/functions/node-info",
    "content": "#\n# Exposes information about the Node.js environment via the $node_info\n# associative array.\n#\n# Authors:\n#   Zeh Rizzatti <zehrizzatti@gmail.com>\n#\n\n# function node-info {\n\nlocal version\nlocal version_format\nlocal version_formatted\n\nunset node_info\ntypeset -gA node_info\n\nif (( $+commands[nodenv] )); then\n  version=\"${${$(nodenv version)#v}[(w)0]}\"\nelif (( $+functions[nvm_version] )); then\n  version=\"${$(nvm_version)#v}\"\nelif (( $+commands[node] )) ; then\n  version=\"${$(node -v)#v}\"\nfi\n\nif [[ \"$version\" != (none|system) ]]; then\n  zstyle -s ':prezto:module:node:info:version' format 'version_format'\n  zformat -f version_formatted \"$version_format\" \"v:$version\"\n  node_info[version]=\"$version_formatted\"\nfi\n\n# }\n"
  },
  {
    "path": "modules/node/init.zsh",
    "content": "#\n# Configures Node local installation, loads version managers, and defines\n# variables and aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Zeh Rizzatti <zehrizzatti@gmail.com>\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\n# Possible lookup locations for manually installed nodenv and nvm.\nlocal_nodenv_paths=({$NODENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}nodenv}/bin/nodenv(N))\nlocal_nvm_paths=({$NVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}nvm}/nvm.sh(N))\n\n# Load manually installed or package manager installed nodenv into the shell\n# session.\nif (( $#local_nodenv_paths || $+commands[nodenv] )); then\n\n  # Ensure manually installed nodenv is added to path when present.\n  [[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path)\n\n  eval \"$(nodenv init - zsh)\"\n\n# Load manually installed nvm into the shell session.\nelif (( $#local_nvm_paths )); then\n  source \"$local_nvm_paths[1]\" --no-use\n\n# Load package manager installed nvm into the shell session.\nelif (( $+commands[brew] )) \\\n      && [[ -d \"${nvm_path::=\"$(brew --prefix 2> /dev/null)\"/opt/nvm}\" ]]; then\n  source \"$nvm_path/nvm.sh\" --no-use\nfi\n\nunset local_n{odenv,vm}_paths nvm_path\n\n# Return if requirements are not found.\nif (( ! $+commands[node] && ! $#functions[(i)n(odenv|vm)] )); then\n  return 1\nfi\n\n#\n# Variables\n#\n\nN_PREFIX=\"${XDG_CONFIG_HOME:-$HOME/.config}/n\"  # The path to 'n' cache.\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:node:alias' skip; then\n  # npm\n  alias npmi='npm install'\n  alias npml='npm list'\n  alias npmo='npm outdated'\n  alias npmp='npm publish'\n  alias npmP='npm prune'\n  alias npmr='npm run'\n  alias npms='npm search'\n  alias npmt='npm test'\n  alias npmu='npm update'\n  alias npmx='npm uninstall'\n\n  alias npmci='npm ci'\n  alias npmcit='npm cit'\n  alias npmit='npm it'\nfi\n"
  },
  {
    "path": "modules/ocaml/README.md",
    "content": "# OCaml\n\nInitializes [OCaml][1] package management.\n\n## OPAM\n\n[OPAM][2] is a package manager for OCaml.\n\nThis module enables local package installation with OPAM by extending the\nrelevant path and OCaml variables.\n\n### Usage\n\nInstall packages to your local package directory with `opam install`.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Sebastian Wiesner](https://github.com/lunaryorn)\n\n[1]: https://ocaml.org/\n[2]: http://opam.ocamlpro.com/\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/ocaml/init.zsh",
    "content": "#\n# Initializes OCaml package management.\n#\n# Authors:\n#   Sebastian Wiesner <lunaryorn@gmail.com>\n#\n\n# Return if requirements are not found.\nif [[ ! -f \"$HOME/.opam/opam-init/init.zsh\" ]]; then\n  return 1\nfi\n\n# Initialize OPAM.\nsource \"$HOME/.opam/opam-init/init.zsh\"\n"
  },
  {
    "path": "modules/osx/README.md",
    "content": "# OSX\n\nDefines [macOS][1] aliases and functions.\n\nThis module must be loaded _before_ the [_`completion`_][2] module so that the\nprovided completion definitions are loaded automatically by _`completion`_\nmodule.\n\n## Settings\n\n### Dash Keyword\n\nTo change the keyword used by `mand` to open man pages in [_Dash.app_][3] from\nits default value of 'manpages', add the following line in\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_ and replace the **keyword** with the one\nconfigured in [_Dash.app_][3].\n\n```sh\nzstyle ':prezto:module:osx:man' dash-keyword 'keyword'\n```\n\n## Aliases\n\n- `cdf` changes the current working director to the current _Finder_ directory.\n- `pushdf` pushes the current working directory onto the directory queue and\n  changes the current working director to the current _Finder_ directory.\n\n## Functions\n\n- `mand` opens _man_ pages in [_Dash.app_][3].\n- `manp` opens _man_ pages in _Preview.app_.\n- `pfd` prints the current _Finder_ directory.\n- `pfs` prints the current _Finder_ selection.\n- `tab` creates a new tab (works in both _Terminal_ and [_iTerm.app_][4]).\n- `ql` previews files in Quick Look.\n- `osx-rm-dir-metadata` deletes _`.DS_Store`_, _`__MACOSX`_ cruft.\n- `osx-ls-download-history` displays the macOS download history.\n- `osx-rm-download-history` deletes the macOS download history.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.apple.com/macos/\n[2]: ../completion#readme\n[3]: https://kapeli.com/dash\n[4]: https://www.iterm2.com/\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/osx/functions/_mand_manp",
    "content": "#compdef mand manp\n#autoload\n\n#\n# Completes mand and manp.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_man\n"
  },
  {
    "path": "modules/osx/functions/mand",
    "content": "#\n# Opens man pages in Dash.app.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nfunction mand {\n  if (( $# > 0 )); then\n    zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages'\n    open \"dash://$dashkw%3A$1\" 2> /dev/null\n    if (( $? != 0 )); then\n      print \"$0: Dash is not installed\" >&2\n      break\n    fi\n  else\n    print 'What manual page do you want?' >&2\n  fi\n\n  unset dashkw\n}\n\nmand \"$@\"\n"
  },
  {
    "path": "modules/osx/functions/manp",
    "content": "#\n# Opens man pages in Preview.app.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nfunction manp {\n  local page\n  if (( $# > 0 )); then\n    for page in \"$@\"; do\n      mandoc -T pdf \"$(/usr/bin/man -w $page)\" | open -fa Preview\n    done\n  else\n    print 'What manual page do you want?' >&2\n  fi\n}\n\nmanp \"$@\"\n"
  },
  {
    "path": "modules/osx/functions/osx-ls-download-history",
    "content": "#\n# Displays the macOS download history.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function osx-ls-download-history {\n\nlocal db\nfor db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do\n  if grep -q 'LSQuarantineEvent' < <(sqlite3 \"$db\" .tables); then\n    sqlite3 \"$db\" 'SELECT LSQuarantineDataURLString FROM LSQuarantineEvent'\n  fi\ndone\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/osx-rm-dir-metadata",
    "content": "#\n# Deletes .DS_Store and __MACOSX directories.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function osx-rm-dir-metadata {\n\nfind \"${@:-$PWD}\" \\( \\\n  -type f -name '.DS_Store' -o \\\n  -type d -name '__MACOSX' \\\n\\) -print0 | xargs -0 rm -rf\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/osx-rm-download-history",
    "content": "#\n# Deletes the macOS download history.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function osx-rm-download-history {\n\nlocal db\nfor db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do\n  if grep -q 'LSQuarantineEvent' < <(sqlite3 \"$db\" .tables); then\n    sqlite3 \"$db\" 'DELETE FROM LSQuarantineEvent; VACUUM'\n  fi\ndone\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/pfd",
    "content": "#\n# Displays the current Finder.app directory.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pfd {\n\nosascript 2> /dev/null <<EOF\n  tell application \"Finder\"\n    return POSIX path of (target of first window as text)\n  end tell\nEOF\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/pfs",
    "content": "#\n# Displays the current Finder.app selection.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pfs {\n\nosascript 2>&1 <<EOF\n  tell application \"Finder\" to set the_selection to selection\n  if the_selection is not {}\n    repeat with an_item in the_selection\n      log POSIX path of (an_item as text)\n    end repeat\n  end if\nEOF\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/ql",
    "content": "#\n# Previews files in Quick Look.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function ql {\n\nif (( $# > 0 )); then\n  qlmanage -p \"$@\" &> /dev/null\nfi\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/tab",
    "content": "#\n# Opens a new Terminal.app/iTerm.app tab in the current directory.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function tab {\n\nlocal command=\"cd \\\\\\\"$PWD\\\\\\\"\"\n(( $# > 0 )) && command=\"${command}; $*\"\n\nthe_app=$(\n  osascript 2> /dev/null <<EOF\n    tell application \"System Events\"\n      name of first item of (every process whose frontmost is true)\n    end tell\nEOF\n)\n\n[[ \"$the_app\" == 'Terminal' ]] && {\n  osascript 2> /dev/null <<EOF\n    tell application \"System Events\"\n      tell process \"Terminal\" to keystroke \"t\" using command down\n      tell application \"Terminal\" to do script \"${command}\" in front window\n    end tell\nEOF\n}\n\n[[ \"$the_app\" == 'iTerm' ]] && {\n  osascript 2> /dev/null <<EOF\n    tell application \"iTerm\"\n      set current_terminal to current terminal\n      tell current_terminal\n        launch session \"Default Session\"\n        set current_session to current session\n        tell current_session\n          write text \"${command}\"\n        end tell\n      end tell\n    end tell\nEOF\n}\n\n[[ \"$the_app\" == 'iTerm2' ]] && {\n  osascript 2> /dev/null <<EOF\n    tell application \"iTerm2\"\n      tell current window\n        create tab with default profile\n        tell current session to write text \"${command}\"\n      end tell\n    end tell\nEOF\n}\n\n# }\n"
  },
  {
    "path": "modules/osx/functions/trash",
    "content": "#\n# Moves files to the macOS trash.\n#\n\n# function trash {\n\nemulate -L zsh\nsetopt LOCAL_OPTIONS EXTENDED_GLOB\n\nlocal file\nlocal -a files=()\nfor file in $@; do\n  if [[ -e $file ]]; then\n    # ':a' gets the full path (do not use ':A', which would resolve symlinks)\n    files+=(\"the POSIX file \\\"${file:a}\\\"\")\n  else\n    print \"trash: No such file or directory '$file'.\" >&2\n    return 1\n  fi\ndone\n\nif (( $#files == 0 )); then\n  print 'usage: trash <files...>' >&2\n  return 64  # Match rm's return code.\nfi\n\n# Join file list with commas, and tell Finder to trash that list.\nlocal file_list=\"${(pj., .)files}\"\nosascript 2>&1 > /dev/null -e \"tell app \\\"Finder\\\" to move { \"${file_list}\" } to trash\"\n\n# }\n"
  },
  {
    "path": "modules/osx/init.zsh",
    "content": "#\n# Defines macOS aliases and functions.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'helper'\n\n# Return if requirements are not found.\nif ! is-darwin; then\n  return 1\nfi\n\n#\n# Aliases\n#\n\n# Changes directory to the current Finder directory.\nalias cdf='cd \"$(pfd)\"'\n\n# Pushes directory to the current Finder directory.\nalias pushdf='pushd \"$(pfd)\"'\n"
  },
  {
    "path": "modules/pacman/README.md",
    "content": "# Pacman\n\nProvides aliases and functions for the [Pacman][1] package manager and\nfrontends.\n\n## Settings\n\nIt is possible to use a Pacman frontend with the pacman aliases provided by this\npackage as long as that frontend supports the same command line options (The\n[AUR Helpers][2] page has a good comparison which lists if the command line\noptions are pacman compatible).\n\nPlease note that installing packages with an AUR Helper is not officially\nsupported by Archlinux. It is currently recommended to manually build AUR\npackages using the [provided instructions][3]. The [aurutils][4] project has a\nset of small utilities to make this easier.\n\nTo enable a different Pacman frontend, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<frontend>'` with the name\nof the preferred frontend.\n\n```sh\nzstyle ':prezto:module:pacman' frontend '<frontend>'\n```\n\n## Aliases\n\n### Pacman\n\n- `pac` is short for `pacman`.\n- `paci` installs packages from repositories.\n- `pacI` installs packages from files.\n- `pacx` removes packages and unneeded dependencies.\n- `pacX` removes packages, their configuration, and unneeded dependencies.\n- `pacq` displays information about a package from the repositories.\n- `pacQ` displays information about a package from the local database.\n- `pacs` searches for packages in the repositories.\n- `pacS` searches for packages in the local database.\n- `pacu` synchronizes the local package and Arch Build System (requires `abs`)\n  databases against the repositories.\n- `pacU` synchronizes the local package database against the repositories then\n  upgrades outdated packages.\n- `pacman-list-orphans` lists orphan packages.\n- `pacman-remove-orphans` removes orphan packages.\n\n### Frontends\n\n## Functions\n\n- `aurget` clone an aur package.\n- `pacman-list-explicit` lists explicitly installed pacman packages.\n- `pacman-list-disowned` lists pacman disowned files.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Benjamin Boudreau](https://github.com/dreur)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.archlinux.org/pacman/\n[2]: https://wiki.archlinux.org/title/AUR_helpers#Comparison_tables\n[3]: https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages\n[4]: https://github.com/AladW/aurutils\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/pacman/functions/pacman-list-disowned",
    "content": "#\n# Lists Pacman disowned files.\n#\n# Authors:\n#   Benjamin Boudreau <dreurmail@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pacman-list-disowned {\n\nlocal tmp=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/pacman-disowned-$$\"\nlocal db=\"$tmp/db\"\nlocal fs=\"$tmp/fs\"\n\nmkdir -p \"$tmp\"\ntrap  'rm -rf \"$tmp\"' EXIT\n\npacman --quiet --query --list | sort --unique > \"$db\"\n\nfind /bin /etc /lib /sbin /usr \\\n  ! -name lost+found \\\n    \\( -type d -printf '%p/\\n' -o -print \\) | sort > \"$fs\"\n\ncomm -23 \"$fs\" \"$db\"\n\n# }\n"
  },
  {
    "path": "modules/pacman/functions/pacman-list-explicit",
    "content": "#\n# Lists explicitly installed Pacman packages.\n#\n# Authors:\n#   Benjamin Boudreau <dreurmail@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function pacman-list-explicit {\n\npacman --query --explicit --info \\\n  | awk '\n      BEGIN {\n        FS=\":\"\n      }\n      /^Name/ {\n        print $2\n      }\n      /^Description/ {\n        print $2\n      }\n    '\n\n# }\n"
  },
  {
    "path": "modules/pacman/init.zsh",
    "content": "#\n# Defines Pacman aliases.\n#\n# Authors:\n#   Benjamin Boudreau <dreurmail@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Tips:\n#   https://wiki.archlinux.org/index.php/Pacman_Tips\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[pacman] )); then\n  return 1\nfi\n\n#\n# Frontend\n#\n\n# Get the Pacman frontend.\nzstyle -s ':prezto:module:pacman' frontend '_pacman_frontend'\n\nif (( $+commands[$_pacman_frontend] )); then\n  alias pacman=\"$_pacman_frontend\"\nelse\n  _pacman_frontend='pacman'\n  _pacman_sudo='sudo '\nfi\n\n#\n# Aliases\n#\n\n# Pacman.\nalias pac=\"${_pacman_frontend}\"\n\n# Installs packages from repositories.\nalias paci=\"${_pacman_sudo}${_pacman_frontend} --sync\"\n\n# Installs packages from files.\nalias pacI=\"${_pacman_sudo}${_pacman_frontend} --upgrade\"\n\n# Removes packages and unneeded dependencies.\nalias pacx=\"${_pacman_sudo}${_pacman_frontend} --remove\"\n\n# Removes packages, their configuration, and unneeded dependencies.\nalias pacX=\"${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive\"\n\n# Displays information about a package from the repositories.\nalias pacq=\"${_pacman_frontend} --sync --info\"\n\n# Displays information about a package from the local database.\nalias pacQ=\"${_pacman_frontend} --query --info\"\n\n# Searches for packages in the repositories.\nalias pacs=\"${_pacman_frontend} --sync --search\"\n\n# Searches for packages in the local database.\nalias pacS=\"${_pacman_frontend} --query --search\"\n\n# Lists orphan packages.\nalias pacman-list-orphans=\"${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired\"\n\n# Removes orphan packages.\nalias pacman-remove-orphans=\"${_pacman_sudo}${_pacman_frontend} --remove --recursive \\$(${_pacman_frontend} --quiet --query --deps --unrequired)\"\n\n# Synchronizes the local package and Arch Build System databases against the\n# repositories using the asp tool.\nif (( $+commands[asp] )); then\n  alias pacu=\"${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo asp update\"\nelse\n  alias pacu=\"${_pacman_sudo}${_pacman_frontend} --sync --refresh\"\nfi\n\n# Synchronizes the local package database against the repositories then\n# upgrades outdated packages.\nalias pacU=\"${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade\"\n\nfunction aurget {\n  local target_dir=\"$1\"\n  if [[ -n \"$2\" ]]; then\n    target_dir=\"$2\"\n  fi\n  git clone \"https://aur.archlinux.org/$1\" \"$target_dir\"\n}\n\nunset _pacman_{frontend,sudo}\n"
  },
  {
    "path": "modules/perl/README.md",
    "content": "# Perl\n\nEnables local [Perl][1] module installation on macOS and defines aliases.\n\n## Local Module Installation\n\nPerl versions older than 5.14 do not support the local installation of Perl\nmodules natively. This module allows for local installation of Perl modules on\nmacOS in _`~/Library/Perl/5.12`_ by altering the environment.\n\n### Usage\n\nFor Perl versions older than 5.14, install _`local::lib`_.\n\n```console\ncurl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz\ntar xvf local-lib-1.008004.tar.gz\ncd local-lib-1.008004\nperl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12\nmake && make test && make install\n```\n\nInstall _cpanminus_:\n\n```console\ncurl -L http://cpanmin.us | perl - --self-upgrade\n```\n\n## Perlbrew\n\nAn alternative to the above is to use [Perlbrew][2], which allows for the\nmanagement of multiple, isolated Perl installations in the home directory.\n\n## plenv\n\nYet another alternative is [_plenv_][3]. This is inspired from _rbenv_ and\nenables switching between multiple binary installations.\n\nThe subcommands of _plenv_ is similar with _rbenv_.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:perl:alias' skip 'yes'\n```\n\n### General\n\n- `pl` is short for `perl`.\n- `pld` looks up Perl documentation (`perldoc`).\n- `ple` executes a one line program in a loop (`perl -wlne`).\n\n### Perlbrew (plb)\n\n- `plb` manages Perl environments.\n- `plba` lists available Perl versions.\n- `plbi` installs a Perl version.\n- `plbl` lists installed Perl versions.\n- `plbo` temporarily turns off Perlbrew.\n- `plbO` turns off Perlbrew.\n- `plbs` switches to a Perl version.\n- `plbu` uninstalls a Perl version.\n- `plbx` temporarily sets the Perl version to use.\n\n### plenv (plv)\n\n- `plv` manages Perl environments.\n- `plvc` List all available plenv commands.\n- `plvl` Set or show the local application-specific Perl version.\n- `plvg` Set or show the global Perl version.\n- `plvs` Set or show the shell-specific Perl version.\n- `plvi` Install a Perl version using the perl-build plugin.\n- `plvu` Uninstall a specific Perl version.\n- `plvr` Rehash plenv shims (run this after installing executables).\n- `plvv` Show the current Perl version and its origin.\n- `plvV` List all Perl versions available to plenv.\n- `plvw` Display the full path to an executable.\n- `plvW` List all Perl versions that contain the given executable.\n- `plvm` List cpan modules in current perl.\n- `plvM` Migrate cpan modules from other version.\n- `plvI` Install cpanm.\n\n## Functions\n\n- `perl-info` exposes information about the Perl environment via the\n  `$perl_info` associative array.\n\n## Theming\n\nTo display the name of the current Perl version in a prompt, define the\nfollowing style in the `prompt_name_setup` function.\n\n```sh\n# %v - perl version.\nzstyle ':prezto:module:perl:info:version' format 'version:%v'\n```\n\nThen add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call\n`perl-info` in the `prompt_name_precmd` hook function.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][4]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.perl.org\n[2]: https://perlbrew.pl\n[3]: https://github.com/tokuhirom/plenv\n[4]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/perl/functions/perl-info",
    "content": "#\n# Exposes information about the Perl environment via the $perl_info associative\n# array.\n#\n# Authors:\n#   JINNOUCHI Yasushi <delphinus@remora.cx>\n#\n\n# function perl-info {\n\nlocal version\nlocal version_format\nlocal version_formatted\n\n# Clean up previous $perl_info.\nunset perl_info\ntypeset -gA perl_info\n\nif (( $+commands[perlbrew] )); then\n  version=\"${PERLBREW_PERL##*perl-}\"\nelif (( $+commands[plenv] )); then\n  version=$(plenv version-name)\nelif (( $+commands[perl] )); then\n  version=$(perl -e 'printf \"%vd\", $^V')\nfi\n\n# Format version.\nif [[ -n \"$version\" ]]; then\n  zstyle -s ':prezto:module:perl:info:version' format 'version_format'\n  zformat -f version_formatted \"$version_format\" \"v:$version\"\n  perl_info[version]=\"$version_formatted\"\nfi\n\n# }\n"
  },
  {
    "path": "modules/perl/init.zsh",
    "content": "#\n# Enables local Perl module installation on macOS and defines aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[perl] )); then\n  return 1\nfi\n\n# Load dependencies.\npmodload 'helper'\n\n#\n# Load Perlbrew or plenv\n#\n\n# Load Perlbrew into the shell session.\nif [[ -s \"${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc\" ]]; then\n  source \"${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc\"\n\n  # Load Perlbrew completion.\n  if [[ -s \"${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash\" ]]; then\n    source \"${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash\"\n  fi\n\n# Load manually installed plenv into the shell session.\nelif [[ -s \"$HOME/.plenv/bin/plenv\" ]]; then\n  path=(\"$HOME/.plenv/bin\" $path)\n  eval \"$(plenv init - --no-rehash zsh)\"\n\n# Load package manager installed plenv into the shell session.\nelif (( $+commands[plenv] )); then\n  eval \"$(plenv init - --no-rehash zsh)\"\nfi\n\n#\n# Local Module Installation\n#\n\nif is-darwin; then\n  # Perl is slow; cache its output.\n  cache_file=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/perl-cache.zsh\"\n  perl_path=\"$HOME/Library/Perl/5.12\"\n\n  if [[ -f \"$perl_path/lib/perl5/local/lib.pm\" ]]; then\n    if [[ \"${ZDOTDIR:-$HOME}/.zpreztorc\" -nt \"$cache_file\" || ! -s \"$cache_file\" ]]; then\n      mkdir -p \"$cache_file:h\"\n      perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! \"$cache_file\"\n    fi\n\n    source \"$cache_file\"\n  fi\n\n  unset cache_file perl_path\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:perl:alias' skip; then\n  # General\n  alias pl='perl'\n  alias pld='perldoc'\n  alias ple='perl -wlne'\n\n  # Perlbrew\n  if (( $+commands[perlbrew] )); then\n    alias plb='perlbrew'\n    alias plba='perlbrew available'\n    alias plbi='perlbrew install'\n    alias plbl='perlbrew list'\n    alias plbo='perlbrew off'\n    alias plbO='perlbrew switch-off'\n    alias plbs='perlbrew switch'\n    alias plbu='perlbrew use'\n    alias plbx='perlbrew uninstall'\n\n  elif (( $+commands[plenv] )); then\n    alias plv='plenv'\n    alias plvc='plenv commands'\n    alias plvl='plenv local'\n    alias plvg='plenv global'\n    alias plvs='plenv shell'\n    alias plvi='plenv install'\n    alias plvu='plenv uninstall'\n    alias plvr='plenv rehash'\n    alias plvv='plenv version'\n    alias plvV='plenv versions'\n    alias plvw='plenv which'\n    alias plvW='plenv whence'\n    alias plvm='plenv list-modules'\n    alias plvM='plenv migrate-modules'\n    alias plvI='plenv install-cpanm'\n  fi\nfi\n"
  },
  {
    "path": "modules/prompt/README.md",
    "content": "# Prompt\n\nLoads prompt [themes][1].\n\n## Settings\n\n### Prompt Theme\n\nTo select a prompt theme, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_,\nand replace `'<name>'` with the name of the theme you wish to load. Setting it\nto `'random'` will load a random theme every time.\n\n```sh\nzstyle ':prezto:module:prompt' theme '<name>'\n```\n\n### Prompt Display Length\n\nTo change working directory prompt display length from 'short', set the\nfollowing to 'long' (without `~` expansion) or 'full' (with `~` expansion) in\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:prompt' pwd-length 'short'\n```\n\n### Display Return Value\n\nSome prompts display the return value in the prompt. If a prompt has support,\nthis can be disabled with the following snippet.\n\n```sh\nzstyle ':prezto:module:prompt' show-return-val 'no'\n```\n\n## Theming\n\nA prompt theme is an autoloadable function file with a special name,\n`prompt_name_setup`, placed anywhere in `$fpath`, but for the purpose of this\nproject, themes **should** be placed in the _modules/prompt/functions_\ndirectory.\n\n### Required Variables\n\nTo ensure that your function works with the editor-info module you'll need to\nset the following variable in _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\n# Tell prezto we can manage this prompt\nzstyle ':prezto:module:prompt' managed 'yes'\n```\n\nThis is to ensure compatibility with outside prompts, while allowing prezto\nand prezto-compatible prompts to take full advantage of the editor module.\nThis should be set in the `prompt_name_setup` function after you've added\nany additional hooks with `add-zsh-hook precmd prompt_name_precmd`. See below\nfor additional information about functions and hooks.\n\n### Theme Functions\n\nThere are three theme functions, a setup function, a help function, and\na preview function. The setup function **must** always be defined. The help\nfunction and the preview functions are optional.\n\n#### `prompt_name_setup`\n\nThis function is called by the `prompt` function to install the theme. This\nfunction may define other functions as necessary to maintain the prompt,\nincluding a function that displays help or a function used to preview it.\n\n**Do not call this function directly.**\n\nThe most basic example of this function can be seen below.\n\n```sh\nfunction prompt_name_setup {\n  PROMPT='%m%# '\n  RPROMPT=''\n}\n```\n\n#### `prompt_name_help`\n\nIf the `prompt_name_setup` function is customizable via parameters, a help\nfunction **should** be defined. The user will access it via `prompt -h name`.\n\nThe most basic example of this function can be seen below.\n\n```sh\nfunction prompt_name_help {\n  cat <<EOH\nThis prompt is color-scheme-able. You can invoke it thus:\n\n  prompt theme [<color1>] [<color2>]\n\nwhere the color is for the left-hand prompt.\nEOH\n}\n```\n\n#### `prompt_name_preview`\n\nIf the `prompt_name_setup` function is customizable via parameters, a preview\nfunction **should** be defined. The user will access it via `prompt -p name`.\n\nThe most basic example of this function can be seen below.\n\n```sh\nfunction prompt_name_preview {\n  if (( $# > 0 )); then\n    prompt_preview_theme theme \"$@\"\n  else\n    prompt_preview_theme theme red green blue\n    print\n    prompt_preview_theme theme yellow magenta black\n  fi\n}\n```\n\n### Hook Functions\n\nThere are many Zsh [hook][2] functions, but mostly the _precmd_ hook will be\nused.\n\n#### `prompt_name_precmd`\n\nThis hook is called before the prompt is displayed and is useful for getting\ninformation to display in a prompt.\n\nWhen calling functions to get information to display in a prompt, do not assume\nthat all the dependencies have been loaded. Always check for the availability of\na function before you calling it.\n\n**Do not register hook functions. They will be automatically registered by the\n`prompt` function.**\n\nThe most basic example of this function can be seen below.\n\n```sh\nfunction prompt_name_precmd {\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n}\n```\n\n## Troubleshooting\n\n### Fonts aren't displaying properly\n\nOn most systems, themes which use special characters need to have a patched font\ninstalled and configured properly.\n\nPowerline provides some information on [terminal support][4] and [how to install\npatched fonts][5] which should fix most font issues.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes\n[2]: https://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions\n[3]: https://github.com/sorin-ionescu/prezto/issues\n[4]: https://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements\n[5]: https://powerline.readthedocs.io/en/latest/installation.html#fonts-installation\n"
  },
  {
    "path": "modules/prompt/functions/prompt-pwd",
    "content": "#\n# Prompt setup function commonly used by prompt themes.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function prompt-pwd {\n\nsetopt localoptions extendedglob\n\nlocal current_pwd=\"${PWD/#$HOME/~}\"\nlocal ret_directory\n\nif [[ \"$current_pwd\" == (#m)[/~] ]]; then\n  ret_directory=\"$MATCH\"\n  unset MATCH\nelif zstyle -m ':prezto:module:prompt' pwd-length 'full'; then\n  ret_directory=${PWD}\nelif zstyle -m ':prezto:module:prompt' pwd-length 'long'; then\n  ret_directory=${current_pwd}\nelse\n  ret_directory=\"${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\\%/%%}/${${current_pwd:t}//\\%/%%}\"\nfi\n\nunset current_pwd\n\nprint \"$ret_directory\"\n\n# }\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_cloud_setup",
    "content": "#\n# A minimal two-color theme.\n#\n# Authors:\n#   Kevin Laude <nerfyoda@gmail.com>\n#\n# Features:\n#   - One line, left aligned.\n#   - The prompt is prefixed by a character sequence of your choice.\n#   - Only displays the current directory instead of the full path.\n#   - Displays the current branch when in a git project (this requires loading\n#     the git module before prompt in ${ZDOTDIR:-$HOME}/.zpreztorc).\n#   - Displays a character at the end of the prompt when in a git project with\n#     \"dirty\" files.\n#\n# Usage:\n#   This prompt's prefix symbol and colors are customizable:\n#     prompt cloud [<symbol>] [<color1>] [<color2>]\n#\n#   In ${ZDOTDIR:-$HOME}/.zpreztorc:\n#     zstyle ':prezto:module:prompt' theme 'cloud' \\\n#       ['<symbol>'] \\\n#       ['<color1>'] \\\n#       ['<color2>']\n#\n#   If these options are not provided, the symbol defaults to \"☁\" with colors\n#   cyan and green.\n#\n# Screenshots:\n#   http://i.imgur.com/mJCZ8rE.png\n#\n# Note:\n#   This is a port of the oh-my-zsh cloud theme, originally written by Phillip\n#   Ridlen <p@rdln.net> and Mark Drago <markdrago@gmail.com>\n#\n\n# Load dependencies.\npmodload 'helper'\n\nfunction prompt_cloud_precmd {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n      git-info\n  fi\n}\n\nfunction prompt_cloud_help {\n  cat <<EOT\nThis prompt's prefix symbol and colors are customizable:\n\n  prompt cloud [<symbol>] [<color1>] [<color2>]\n\nIn ${ZDOTDIR:-$HOME}/.zpreztorc:\n  zstyle ':prezto:module:prompt' theme 'cloud' ['<symbol>'] ['<color1>'] ['<color2>']\n\nIf these options are not provided, the symbol defaults to ☁ with colors cyan\nand green.\nEOT\n}\n\nfunction prompt_cloud_preview {\n  if (( $# > 0 )); then\n    prompt_preview_theme 'cloud' \"$@\"\n  else\n    prompt_preview_theme 'cloud'\n    print\n    prompt_preview_theme 'cloud' \"✯\"\n    print\n    prompt_preview_theme 'cloud' \">\" \"yellow\" \"red\"\n  fi\n}\n\nfunction prompt_cloud_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Set the theme prefix to a cloud or to the user's given characters.\n  if [[ -n \"$1\" ]]; then\n    prefix=\"$1\"\n  else\n    prefix='☁'\n  fi\n\n  # Assign colors.\n  if [[ -n \"$2\" ]]; then\n    primary_color=\"$2\"\n  else\n    primary_color='cyan'\n  fi\n\n  if [[ -n \"$3\" ]]; then\n    secondary_color=\"$3\"\n  else\n    secondary_color='green'\n  fi\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Add hook for calling git-info before each command.\n  add-zsh-hook precmd prompt_cloud_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:dirty' format \"%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f\"\n  zstyle ':prezto:module:git:info:clean' format \"%B%F{$secondary_color}]%f%b\"\n  zstyle ':prezto:module:git:info:branch' format \"%%B%F{$secondary_color}[%f%%b%%B%F{$primary_color}%b%f%%b\"\n  zstyle ':prezto:module:git:info:keys' format \\\n    'prompt' '%b%C%D' \\\n    'rprompt' ''\n\n  # Define prompts.\n  PROMPT='%B%F{$primary_color}${prefix}%f%b  %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} '\n  RPROMPT=''\n}\n\nprompt_cloud_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_damoekri_setup",
    "content": "#\n# A simple theme inspired by the Sorin and PeepCode themes.\n#\n# Authors:\n#   Daniel Møller Kristensen <damoekri@icloud.com>\n#\n# Screenshots:\n#   http://i.imgur.com/AX9HnPF.png\n#\n\n# Load dependencies.\npmodload 'helper'\n\nprompt_damoekri_precmd() {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Format PWD.\n  _prompt_damoekri_pwd=$(prompt-pwd)\n\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Ruby version information.\n  if (( $+functions[ruby-info] )); then\n    ruby-info\n  fi\n}\n\nfunction prompt_damoekri_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Add hook for calling git-info and ruby-info before each command.\n  add-zsh-hook precmd prompt_damoekri_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f'\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:action' format ':%F{magenta}%s%f'\n  zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f'\n  zstyle ':prezto:module:git:info:clean' format ' %F{green}✔%f'\n  zstyle ':prezto:module:git:info:dirty' format ' %F{red}✗%f'\n  zstyle ':prezto:module:git:info:commit' format '%F{blue}%.7c%f'\n  zstyle ':prezto:module:git:info:position' format '%F{blue}%p%f'\n  zstyle ':prezto:module:git:info:keys' format \\\n    'rprompt' ' $(coalesce \"%b\" \"%p\" \"%c\")%s%C%D'\n\n  # Set ruby-info parameters.\n  zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f'\n\n  # Define prompts.\n  PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} '\n  RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}'\n}\n\nprompt_damoekri_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_giddie_setup",
    "content": "#\n# A colorful, friendly, multiline theme with some handy features.\n#\n# Authors:\n#   Paul Gideon Dann <pdgiddie@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Features:\n#   - Simple VCS branch, staged, and unstaged indication.\n#   - Prompt character is different in a VCS repository.\n#   - Last command exit status is displayed when non-zero.\n#\n# Screenshots:\n#   http://i.imgur.com/rCo3S.png\n#\n\nfunction +vi-set_novcs_prompt_symbol {\n  _prompt_giddie_symbol=')'\n}\n\nfunction +vi-set_vcs_prompt_symbol {\n  _prompt_giddie_symbol='±'\n}\n\nfunction +vi-git_precmd {\n  # Check for untracked files, since vcs_info does not.\n  if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then\n    hook_com[unstaged]+='%F{green}?%f'\n  fi\n}\n\nfunction prompt_giddie_precmd {\n  # Replace '/home/<user>' with '~'.\n  _prompt_giddie_pwd=\"${PWD/#$HOME/~}\"\n  vcs_info\n}\n\nfunction prompt_giddie_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz vcs_info\n  autoload -Uz add-zsh-hook\n\n  # Add hook to set up prompt parameters before each command.\n  add-zsh-hook precmd prompt_giddie_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f'\n  zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f'\n\n  # Set vcs_info parameters.\n  zstyle ':vcs_info:*' check-for-changes true\n  zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u'\n  zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f'\n  zstyle ':vcs_info:*' stagedstr '%F{green}+%f'\n  zstyle ':vcs_info:*' unstagedstr '%F{green}!%f'\n\n  # Set vcs_info hooks.\n  # NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd\n  #       function, and no 'no-vcs' hook.\n  zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol\n  zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd\n  zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol\n\n  # Define prompts.\n  PROMPT='%(?..%F{red}%B-> [%?]%b%f\n)%F{magenta}%n%f@%F{yellow}%m%f|%F{green}${_prompt_giddie_pwd}%f${vcs_info_msg_0_}\n%F{blue}${_prompt_giddie_symbol}%f '\n  RPROMPT='${editor_info[keymap]}'\n  SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? '\n}\n\nprompt_giddie_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_kylewest_setup",
    "content": "#\n# A single line theme with Git information on the left and Ruby on the right.\n#\n# Authors:\n#   Kyle West <kswest@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Features:\n#   - Indicates dirty Git repository.\n#   - Indicates the Ruby version.\n#   - Indicates vi modes.\n#\n# Screenshots:\n#   http://i.imgur.com/dCwhynn.png\n#\n\nfunction prompt_kylewest_precmd {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Ruby information.\n  if (( $+functions[ruby-info] )); then\n    ruby-info\n  fi\n}\n\nfunction prompt_kylewest_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Add hook for calling git-info before each command.\n  add-zsh-hook precmd prompt_kylewest_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'\n  zstyle ':prezto:module:editor:info:keymap:primary' format \"%B%F{green}❯%f%b\"\n  zstyle ':prezto:module:editor:info:keymap:alternate' format \"%B%F{magenta}❮%f%b\"\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'no'\n  zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f'\n  zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b'\n  zstyle ':prezto:module:git:info:indexed' format ' '\n  zstyle ':prezto:module:git:info:unindexed' format ' '\n  zstyle ':prezto:module:git:info:untracked' format ' '\n  zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D '\n\n  # Set ruby-info parameters.\n  zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f'\n\n  # Define prompts.\n  PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} '\n  RPROMPT='${ruby_info[version]}'\n}\n\nprompt_kylewest_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_minimal_setup",
    "content": "#\n# A monochrome theme that displays basic information.\n#\n# Authors:\n#   Brian Tse <briankftse@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/zLZNK.png\n#\n\nfunction +vi-git_status {\n  # Check for untracked files or updated submodules since vcs_info does not.\n  if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then\n    hook_com[unstaged]='%F{red}●%f'\n  fi\n}\n\nfunction prompt_minimal_precmd {\n  vcs_info\n}\n\nfunction prompt_minimal_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n  autoload -Uz vcs_info\n\n  # Add hook for calling vcs_info before each command.\n  add-zsh-hook precmd prompt_minimal_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set vcs_info parameters.\n  zstyle ':vcs_info:*' enable bzr git hg svn\n  zstyle ':vcs_info:*' check-for-changes true\n  zstyle ':vcs_info:*' stagedstr '%F{green}●%f'\n  zstyle ':vcs_info:*' unstagedstr '%F{yellow}●%f'\n  zstyle ':vcs_info:*' formats ' - [%b%c%u]'\n  zstyle ':vcs_info:*' actionformats \" - [%b%c%u|%F{cyan}%a%f]\"\n  zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f'\n  zstyle ':vcs_info:git*+set-message:*' hooks git_status\n\n  # Define prompts.\n  PROMPT='%2~${vcs_info_msg_0_} » '\n  RPROMPT=''\n}\n\nfunction prompt_minimal_preview {\n  local +h PROMPT=''\n  local +h RPROMPT=''\n  local +h SPROMPT=''\n\n  editor-info 2> /dev/null\n  prompt_preview_theme 'minimal'\n}\n\nprompt_minimal_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_nicoulaj_setup",
    "content": "#\n# A simple theme that displays only relevant information.\n#\n# Authors:\n#   Julien Nicoulaud <julien.nicoulaud@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Features:\n#   - One line.\n#   - VCS information in the right prompt.\n#   - Only shows the path on the left prompt by default.\n#   - Crops the path to a defined length and only shows the path relative to\n#     the current VCS repository root.\n#   - Uses a different color depending on if the last command succeeded/failed.\n#   - Shows user@hostname if connected through SSH.\n#   - Shows if logged in as root or not.\n#\n# Screenshots:\n#   http://i.imgur.com/Xe1bu.png\n#\n\nfunction prompt_nicoulaj_precmd {\n  vcs_info\n}\n\nfunction prompt_nicoulaj_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n  autoload -Uz vcs_info\n\n  # Add hook for calling vcs_info before each command.\n  add-zsh-hook precmd prompt_nicoulaj_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Customizable parameters.\n  local max_path_chars=30\n  local user_char='❯'\n  local root_char='❯❯❯'\n  local success_color='%F{071}'\n  local failure_color='%F{124}'\n  local vcs_info_color='%F{242}'\n\n  # Set vcs_info parameters.\n  zstyle ':vcs_info:*' enable bzr git hg svn\n  zstyle ':vcs_info:*' check-for-changes true\n  zstyle ':vcs_info:*' unstagedstr '!'\n  zstyle ':vcs_info:*' stagedstr '+'\n  zstyle ':vcs_info:*' actionformats \"%S\" \"%r/%s/%b %u%c (%a)\"\n  zstyle ':vcs_info:*' formats \"%S\" \"%r/%s/%b %u%c\"\n  zstyle ':vcs_info:*' nvcsformats \"%~\" \"\"\n\n  # Define prompts.\n  PROMPT=\"%(?.${success_color}.${failure_color})${SSH_TTY:+[%n@%m]}%B%${max_path_chars}<...<\"'${vcs_info_msg_0_%%.}'\"%<<%(!.${root_char}.${user_char})%b%f \"\n  RPROMPT=\"${vcs_info_color}\"'${vcs_info_msg_1_}'\"%f\"\n}\n\nprompt_nicoulaj_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_paradox_setup",
    "content": "#\n# A two-line, Powerline-inspired theme that displays contextual information.\n#\n# This theme requires a patched Powerline font, get them from\n# https://github.com/Lokaltog/powerline-fonts.\n#\n# Authors:\n#   Isaac Wolkerstorfer <i@agnoster.net>\n#   Jeff Sandberg <paradox460@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Patrick Bos <egpbos@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/0XIWX.png\n#\n\n# Load dependencies.\npmodload 'helper'\n\n# Define variables.\n_prompt_paradox_current_bg='NONE'\n_prompt_paradox_segment_separator=''\n_prompt_paradox_start_time=$SECONDS\n\nfunction prompt_paradox_start_segment {\n  local bg fg\n  [[ -n \"$1\" ]] && bg=\"%K{$1}\" || bg=\"%k\"\n  [[ -n \"$2\" ]] && fg=\"%F{$2}\" || fg=\"%f\"\n  if [[ \"$_prompt_paradox_current_bg\" != 'NONE' && \"$1\" != \"$_prompt_paradox_current_bg\" ]]; then\n    print -n \" $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg \"\n  else\n    print -n \"$bg$fg \"\n  fi\n  _prompt_paradox_current_bg=\"$1\"\n  [[ -n \"$3\" ]] && print -n \"$3\"\n}\n\nfunction prompt_paradox_end_segment {\n  if [[ -n \"$_prompt_paradox_current_bg\" ]]; then\n    print -n \" %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator\"\n  else\n    print -n \"%k\"\n  fi\n  print -n \"%f\"\n  _prompt_paradox_current_bg=''\n}\n\nfunction prompt_paradox_build_prompt {\n  prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f'\n  prompt_paradox_start_segment blue black '$_prompt_paradox_pwd'\n\n  if [[ -n \"$git_info\" ]]; then\n    prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}'\n  fi\n\n  if [[ -n \"$python_info\" ]]; then\n    prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}'\n  fi\n\n  prompt_paradox_end_segment\n}\n\nprompt_paradox_print_elapsed_time() {\n  local end_time=$(( SECONDS - _prompt_paradox_start_time ))\n  local hours minutes seconds remainder\n\n  if (( end_time >= 3600 )); then\n    hours=$(( end_time / 3600 ))\n    remainder=$(( end_time % 3600 ))\n    minutes=$(( remainder / 60 ))\n    seconds=$(( remainder % 60 ))\n    print -P \"%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b\"\n  elif (( end_time >= 60 )); then\n    minutes=$(( end_time / 60 ))\n    seconds=$(( end_time % 60 ))\n    print -P \"%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b\"\n  elif (( end_time > 10 )); then\n    print -P \"%B%F{green}>>> elapsed time ${end_time}s%b\"\n  fi\n}\n\nfunction prompt_paradox_precmd {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Format PWD.\n  _prompt_paradox_pwd=$(prompt-pwd)\n\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Python environment information.\n  if (( $+functions[python-info] )); then\n    python-info\n  fi\n\n  # Calculate and print the elapsed time.\n  prompt_paradox_print_elapsed_time\n}\n\nfunction prompt_paradox_preexec {\n  _prompt_paradox_start_time=\"$SECONDS\"\n}\n\nfunction prompt_paradox_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Add hook for calling git-info before each command.\n  add-zsh-hook preexec prompt_paradox_preexec\n  add-zsh-hook precmd prompt_paradox_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'\n  zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b'\n  zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f'\n  zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b'\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:action' format ' ⁝ %s'\n  zstyle ':prezto:module:git:info:added' format ' ✚'\n  zstyle ':prezto:module:git:info:ahead' format ' ⬆'\n  zstyle ':prezto:module:git:info:behind' format ' ⬇'\n  zstyle ':prezto:module:git:info:branch' format ' %b'\n  zstyle ':prezto:module:git:info:commit' format '➦ %.7c'\n  zstyle ':prezto:module:git:info:deleted' format ' ✖'\n  zstyle ':prezto:module:git:info:dirty' format ' ⁝'\n  zstyle ':prezto:module:git:info:modified' format ' ✱'\n  zstyle ':prezto:module:git:info:position' format '%p'\n  zstyle ':prezto:module:git:info:renamed' format ' ➙'\n  zstyle ':prezto:module:git:info:stashed' format ' S'\n  zstyle ':prezto:module:git:info:unmerged' format ' ═'\n  zstyle ':prezto:module:git:info:untracked' format ' ?'\n  zstyle ':prezto:module:git:info:keys' format \\\n    'ref' '$(coalesce \"%b\" \"%p\" \"%c\")' \\\n    'status' '%s%D%A%B%S%a%d%m%r%U%u'\n\n  # %v - virtualenv name.\n  zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'\n\n  # Define prompts.\n  PROMPT='\n${(e)$(prompt_paradox_build_prompt)}\n ${editor_info[keymap]} '\n  RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f'\n  SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '\n}\n\nprompt_paradox_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_peepcode_setup",
    "content": "#\n# A simple theme from PeepCode.\n# http://peepcode.com/blog/2012/my-command-line-prompt\n#\n# Authors:\n#   Geoffrey Grosenbach <boss@topfunky.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/LhgmW.png\n#\n\nfunction prompt_peepcode_precmd {\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Ruby information.\n  if (( $+functions[ruby-info] )); then\n    ruby-info\n  fi\n}\n\nfunction prompt_peepcode_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n  autoload -Uz vcs_info\n\n  # Add a hook for calling info functions before each command.\n  add-zsh-hook precmd prompt_peepcode_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'no'\n  zstyle ':prezto:module:git:info:action' format ' +%s'\n  zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f'\n  zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f'\n  zstyle ':prezto:module:git:info:indexed' format ' '\n  zstyle ':prezto:module:git:info:unindexed' format ' '\n  zstyle ':prezto:module:git:info:untracked' format ' '\n  zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f'\n  zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D'\n\n  # Set ruby-info parameters.\n  zstyle ':prezto:module:ruby:info:version' format ' %F{white}%v%f'\n\n  # Define prompts.\n  PROMPT=\"\n%~\n%(?.%F{green}${1:-☻ }%f.%F{red}${1:-☻ }%f) \"\nRPROMPT='${ruby_info[version]}${git_info[rprompt]}'\n\n}\n\nfunction prompt_peepcode_help {\n  cat <<EOH\nThis prompt's last command exit status symbol is customizable:\n\n  prompt peepcode [<symbol>]\n\nIf this option is not provided, the symbol defaults to ☻.\nEOH\n}\n\nfunction prompt_peepcode_preview {\n  local +h PROMPT='%# '\n  local +h RPROMPT=''\n  local +h SPROMPT=''\n\n  if (( $# > 0 )); then\n    prompt_preview_theme 'peepcode' \"$@\"\n  else\n    prompt_preview_theme 'peepcode'\n    print\n    prompt_preview_theme 'peepcode' \"❯\"\n    print\n    prompt_preview_theme 'peepcode' \"$\"\n  fi\n}\n\nprompt_peepcode_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_skwp_setup",
    "content": "#\n# A single line theme with Git information on the left and Ruby on the right.\n#\n# Authors:\n#   Steve Losh <steve@stevelosh.com>\n#   Bart Trojanowski <bart@jukie.net>\n#   Brian Carper <brian@carper.ca>\n#   steeef <steeef@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Yan Pritzker <yan@pritzker.ws>\n#\n# Screenshots:\n#   http://i.imgur.com/gLgVp6Y.png\n#\n\nfunction prompt_skwp_precmd {\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Ruby information.\n  if (( $+functions[ruby-info] )); then\n    ruby-info\n  fi\n}\n\nfunction prompt_skwp_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n\n  # Add hook to set up prompt parameters before each command.\n  add-zsh-hook precmd prompt_skwp_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Use extended color pallete if available.\n  if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then\n    _prompt_skwp_colors=(\n      \"%F{81}\"  # Turquoise\n      \"%F{166}\" # Orange\n      \"%F{135}\" # Purple\n      \"%F{161}\" # Hotpink\n      \"%F{118}\" # Limegreen\n    )\n  else\n    _prompt_skwp_colors=(\n      \"%F{cyan}\"\n      \"%F{yellow}\"\n      \"%F{magenta}\"\n      \"%F{red}\"\n      \"%F{green}\"\n    )\n  fi\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:branch' format \"${_prompt_skwp_colors[1]}%b%f\"\n  zstyle ':prezto:module:git:info:added' format \"${_prompt_skwp_colors[5]}●%f\"\n  zstyle ':prezto:module:git:info:deleted' format \"${_prompt_skwp_colors[2]}●%f\"\n  zstyle ':prezto:module:git:info:modified' format \"${_prompt_skwp_colors[4]}●%f\"\n  zstyle ':prezto:module:git:info:untracked' format \"${_prompt_skwp_colors[3]}●%f\"\n  zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)'\n\n  # Set ruby-info parameters.\n  zstyle ':prezto:module:ruby:info:version' format '[%v]'\n\n  # Define prompts.\n  PROMPT=\"${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f \"'${git_info:+${(e)git_info[prompt]}}'\"$ \"\n  RPROMPT='%F{blue}${ruby_info[version]}'\n}\n\nprompt_skwp_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_smiley_setup",
    "content": "#\n# A simple theme that displays:\n#   - Python virtual environment.\n#   - Git branch.\n#   - Git state.\n#   - Last command exit state (smiley/X).\n#\n# Authors:\n#   Nadav Shatz <nadavshatz@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/ijycV6n.png\n#\n\n# Load dependencies.\npmodload 'helper'\n\nfunction prompt_smiley_precmd {\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Get Git repository information.\n  if (( $+functions[git-info] )); then\n    git-info\n  fi\n\n  # Get Python environment information.\n  if (( $+functions[python-info] )); then\n    python-info\n  fi\n\n  # Get Ruby version information.\n  if (( $+functions[ruby-info] )); then\n    ruby-info\n  fi\n}\n\nfunction prompt_smiley_setup {\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Add hook for calling git-info before each command.\n  add-zsh-hook precmd prompt_smiley_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'\n\n  # Set python-info parameters.\n  zstyle ':prezto:module:python:info:virtualenv' format '%F{yellow}[%v]%f '\n\n  # Set ruby-info parameters.\n  zstyle ':prezto:module:ruby:info:version' format '%F{yellow}[%v]%f '\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f'\n  zstyle ':prezto:module:git:info:dirty' format '%%B%F{red} ±%f%%b'\n  zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)'\n\n  # Define prompts.\n  PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) '\n  RPROMPT='${editor_info[overwrite]}${VIM:+\" %B%F{green}V%f%b\"}'\n  SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '\n}\n\nprompt_smiley_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_sorin_setup",
    "content": "#\n# A simple theme that displays relevant, contextual information.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/nrGV6pg.png\n#\n\n#\n# 16 Terminal Colors\n# -- ---------------\n#  0 black\n#  1 red\n#  2 green\n#  3 yellow\n#  4 blue\n#  5 magenta\n#  6 cyan\n#  7 white\n#  8 bright black\n#  9 bright red\n# 10 bright green\n# 11 bright yellow\n# 12 bright blue\n# 13 bright magenta\n# 14 bright cyan\n# 15 bright white\n#\n\n# Load dependencies.\npmodload 'helper'\n\nfunction prompt_sorin_async_callback {\n  case $1 in\n    prompt_sorin_async_git)\n      # We can safely split on ':' because it isn't allowed in ref names.\n      IFS=':' read _git_target _git_post_target <<<\"$3\"\n\n      # The target actually contains 3 space separated possibilities, so we need to\n      # make sure we grab the first one.\n      _git_target=$(coalesce ${(@)${(z)_git_target}})\n\n      if [[ -z \"$_git_target\" ]]; then\n        # No git target detected, flush the git fragment and redisplay the prompt.\n        if [[ -n \"$_prompt_sorin_git\" ]]; then\n          _prompt_sorin_git=''\n          zle && zle reset-prompt\n        fi\n      else\n        # Git target detected, update the git fragment and redisplay the prompt.\n        _prompt_sorin_git=\"${_git_target}${_git_post_target}\"\n        zle && zle reset-prompt\n      fi\n      ;;\n    \"[async]\")\n      # Code is 1 for corrupted worker output and 2 for dead worker.\n      if [[ $2 -eq 2 ]]; then\n\t  # Our worker died unexpectedly.\n          typeset -g prompt_prezto_async_init=0\n      fi\n      ;;\n  esac\n}\n\nfunction prompt_sorin_async_git {\n  cd -q \"$1\"\n  if (( $+functions[git-info] )); then\n    git-info\n    print ${git_info[status]}\n  fi\n}\n\nfunction prompt_sorin_async_tasks {\n  # Initialize async worker. This needs to be done here and not in\n  # prompt_sorin_setup so the git formatting can be overridden by other prompts.\n  if (( !${prompt_prezto_async_init:-0} )); then\n    async_start_worker prompt_sorin -n\n    async_register_callback prompt_sorin prompt_sorin_async_callback\n    typeset -g prompt_prezto_async_init=1\n  fi\n\n  # Kill the old process of slow commands if it is still running.\n  async_flush_jobs prompt_sorin\n\n  # Compute slow commands in the background.\n  async_job prompt_sorin prompt_sorin_async_git \"$PWD\"\n}\n\nfunction prompt_sorin_precmd {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n\n  # Format PWD.\n  _prompt_sorin_pwd=$(prompt-pwd)\n\n  # Handle updating git data. We also clear the git prompt data if we're in a\n  # different git root now.\n  if (( $+functions[git-dir] )); then\n    local new_git_root=\"$(git-dir 2> /dev/null)\"\n    if [[ $new_git_root != $_sorin_cur_git_root ]]; then\n      _prompt_sorin_git=''\n      _sorin_cur_git_root=$new_git_root\n    fi\n  fi\n\n  # Run python info (this should be fast and not require any async)\n  if (( $+functions[python-info] )); then\n    python-info\n  fi\n\n  prompt_sorin_async_tasks\n}\n\nfunction prompt_sorin_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n  autoload -Uz async && async\n\n  # Add hook for calling git-info before each command.\n  add-zsh-hook precmd prompt_sorin_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b'\n  zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b'\n  zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f'\n  zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b'\n\n  # Set git-info parameters.\n  zstyle ':prezto:module:git:info' verbose 'yes'\n  zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b'\n  zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b'\n  zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b'\n  zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b'\n  zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b'\n  zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b'\n  zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b'\n  zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b'\n  zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b'\n  zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b'\n  zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b'\n  zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b'\n  zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b'\n  zstyle ':prezto:module:git:info:keys' format \\\n    'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u'\n\n  # Set python-info parameters.\n  zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} '\n\n  # Set up non-zero return value display\n  local show_return=\"✘ \"\n  # Default is to show the return value\n  if zstyle -T ':prezto:module:prompt' show-return-val; then\n    show_return+='%? '\n  fi\n\n  # Get the async worker set up.\n  _sorin_cur_git_root=''\n\n  _prompt_sorin_git=''\n  _prompt_sorin_pwd=''\n\n  # Define prompts.\n  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]} '\n  RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}'\n  RPROMPT+=${show_return}\n  RPROMPT+='%f)${VIM:+\" %B%F{6}V%f%b\"}${_prompt_sorin_git}'\n  SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? '\n}\n\nfunction prompt_sorin_preview {\n  local +h PROMPT=''\n  local +h RPROMPT=''\n  local +h SPROMPT=''\n\n  editor-info 2> /dev/null\n  prompt_preview_theme 'sorin'\n}\n\nprompt_sorin_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/functions/prompt_steeef_setup",
    "content": "#\n# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration.\n#\n# Authors:\n#   Steve Losh <steve@stevelosh.com>\n#   Bart Trojanowski <bart@jukie.net>\n#   Brian Carper <brian@carper.ca>\n#   steeef <steeef@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n# Screenshots:\n#   http://i.imgur.com/HyRvv.png\n#\n\nfunction prompt_steeef_precmd {\n  # Check for untracked files or updated submodules since vcs_info does not.\n  if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then\n    branch_format=\"(${_prompt_steeef_colors[1]}%b%f%u%c${_prompt_steeef_colors[4]}●%f)\"\n  else\n    branch_format=\"(${_prompt_steeef_colors[1]}%b%f%u%c)\"\n  fi\n\n  zstyle ':vcs_info:*:prompt:*' formats \"${branch_format}\"\n\n  vcs_info 'prompt'\n\n  if (( $+functions[python-info] )); then\n    python-info\n  fi\n}\n\nfunction prompt_steeef_setup {\n  setopt LOCAL_OPTIONS\n  unsetopt XTRACE KSH_ARRAYS\n  prompt_opts=(cr percent sp subst)\n\n  # Load required functions.\n  autoload -Uz add-zsh-hook\n  autoload -Uz vcs_info\n\n  # Add hook for calling vcs_info before each command.\n  add-zsh-hook precmd prompt_steeef_precmd\n\n  # Tell prezto we can manage this prompt\n  zstyle ':prezto:module:prompt' managed 'yes'\n\n  # Use extended color pallete if available.\n  if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then\n    _prompt_steeef_colors=(\n      \"%F{81}\"  # Turquoise\n      \"%F{166}\" # Orange\n      \"%F{135}\" # Purple\n      \"%F{161}\" # Hotpink\n      \"%F{118}\" # Limegreen\n    )\n  else\n    _prompt_steeef_colors=(\n      \"%F{cyan}\"\n      \"%F{yellow}\"\n      \"%F{magenta}\"\n      \"%F{red}\"\n      \"%F{green}\"\n    )\n  fi\n\n  # Formats:\n  #   %b - branchname\n  #   %u - unstagedstr (see below)\n  #   %c - stagedstr (see below)\n  #   %a - action (e.g. rebase-i)\n  #   %R - repository path\n  #   %S - path in the repository\n  local branch_format=\"(${_prompt_steeef_colors[1]}%b%f%u%c)\"\n  local action_format=\"(${_prompt_steeef_colors[5]}%a%f)\"\n  local unstaged_format=\"${_prompt_steeef_colors[2]}●%f\"\n  local staged_format=\"${_prompt_steeef_colors[5]}●%f\"\n\n  # Set editor-info parameters.\n  zstyle ':prezto:module:editor:info:keymap:primary' format '$'\n\n  # Set vcs_info parameters.\n  zstyle ':vcs_info:*' enable bzr git hg svn\n  zstyle ':vcs_info:*:prompt:*' check-for-changes true\n  zstyle ':vcs_info:*:prompt:*' unstagedstr \"${unstaged_format}\"\n  zstyle ':vcs_info:*:prompt:*' stagedstr \"${staged_format}\"\n  zstyle ':vcs_info:*:prompt:*' actionformats \"${branch_format}${action_format}\"\n  zstyle ':vcs_info:*:prompt:*' formats \"${branch_format}\"\n  zstyle ':vcs_info:*:prompt:*' nvcsformats   \"\"\n\n  # Set python-info parameters.\n  zstyle ':prezto:module:python:info:virtualenv' format '(%v)'\n\n  # Define prompts.\n  PROMPT=\"\n${_prompt_steeef_colors[3]}%n%f at ${_prompt_steeef_colors[2]}%m%f in ${_prompt_steeef_colors[5]}%~%f \"'${vcs_info_msg_0_}'\"\n\"'$python_info[virtualenv]${editor_info[keymap]} '\n  RPROMPT=''\n}\n\nfunction prompt_steeef_preview {\n  local +h PROMPT=''\n  local +h RPROMPT=''\n  local +h SPROMPT=''\n\n  editor-info 2> /dev/null\n  prompt_preview_theme 'steeef'\n}\n\nprompt_steeef_setup \"$@\"\n# vim: ft=zsh\n"
  },
  {
    "path": "modules/prompt/init.zsh",
    "content": "#\n# Loads prompt themes.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load and execute the prompt theming system.\nautoload -Uz promptinit && promptinit\n\n# Load the prompt theme.\nzstyle -a ':prezto:module:prompt' theme 'prompt_argv'\nif [[ $TERM == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then\n  prompt 'off'\nelse\n  prompt \"$prompt_argv[@]\"\nfi\nunset prompt_argv\n"
  },
  {
    "path": "modules/python/README.md",
    "content": "# Python\n\nEnables local Python and local Python package installation.\n\n## Settings\n\nThis module supports virtual environments from conda and\n[_virtualenvwrapper_][2]. By default, only _virtualenvwrapper_ is enabled. To\ndisable _virtualenvwrapper_, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:python:virtualenv' initialize 'no'\n```\n\nConda support can be enabled by adding the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:python' conda-init 'on'\n```\n\nCaution: using conda and virtualenvwrapper at the same time may cause conflicts.\n\n## Local Python Installation\n\n[_pyenv_][4] builds and installs multiple Python versions locally in the home\ndirectory.\n\nThis module prepends the _pyenv_ directory to the path variable to enable the\nexecution of `pyenv`.\n\n### Usage\n\nInstall Python versions with `pyenv install` into _`~/.pyenv/versions`_.\n\nThis will be loaded automatically if pyenv is installed to `$PYENV_ROOT`,\n_`~/.pyenv`_, or if the `pyenv` command is on the path. By default, `PYENV_ROOT`\nis set to _`$HOME/.pyenv`_. You can set it to an alternate location and export\nit in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6].\n\n## Local Package Installation\n\nSince version 2.6, Python supports per user package installation, as defined in\n[PEP 370][1].\n\nThis module prepends per user site directories to the relevant path variables\nto enable the execution of user installed scripts and the reading of\ndocumentation.\n\n### Usage\n\nInstall packages into the per user site directory with `pip install --user`.\n\n## virtualenvwrapper\n\n[_virtualenvwrapper_][2] is a frontend to the popular [_virtualenv_][3] utility.\n\n`virtualenv` creates isolated Python environments and `virtualenvwrapper`\nprovides convenient shell functions to create, switch, and manage them.\n\n### Usage\n\nInstall `virtualenvwrapper`.\n\nVirtual environments are stored in _`~/.virtualenvs`_.\n\nThere are configuration variables that have to be set to enable certain\nfeatures. If you wish to use these features, export the variables in\n[_`${ZDOTDIR:-$HOME}/.zshenv`_][6].\n\nThe variable `$PROJECT_HOME` tells `virtualenvwrapper` where to place project\nworking directories. It must be set and the directory created before `mkproject`\nis used. Replace _Developer_ with your projects directory.\n\n```sh\nexport PROJECT_HOME=\"$HOME/Developer\"\n```\n\nThe variable `VIRTUALENVWRAPPER_PYTHON` tells `virtualenvwrapper` to use the\nspecified full path of the `python` interpreter overriding the `$PATH` search.\n\n```sh\nexport VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python\n```\n\nThe variable `VIRTUALENVWRAPPER_VIRTUALENV` tells `virtualenvwrapper` to use the\nspecified full path of `virtualenv` binary overriding the `$PATH` search.\n\n```sh\nexport VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv\n```\n\nThe variable `$VIRTUALENVWRAPPER_VIRTUALENV_ARGS` tells `virtualenvwrapper` what\narguments to pass to `virtualenv`. For example, set the value to\n`--system-site-packages` to ensure that all new environments have access to the\nsystem site-packages directory.\n\n```sh\nexport VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages'\n```\n\n### Additional Options\n\nThere is a hook to enable auto-switching to virtualenvs when switching into a\ndirectory where the root of the project matches a virtualenv name.\n\nThis can be enabled with:\n\n```sh\nzstyle ':prezto:module:python:virtualenv' auto-switch 'yes'\n```\n\n`virtualenvwrapper` is automatically initialized if pre-requisites are met\n(`$VIRTUALENVWRAPPER_VIRTUALENV` is explicitly set or `virtualenv` is in\n`$PATH`). This can be disabled with:\n\n```sh\nzstyle ':prezto:module:python:virtualenv' initialize 'no'\n```\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:python:alias' skip 'yes'\n```\n\n- `py` is short for `python`.\n- `py2` is short for `python2`.\n- `py3` is short for `python3`.\n\n## Functions\n\n- `python-info` exposes information about the Python environment via the\n  `$python_info` associative array.\n\n## Theming\n\nTo display the name of the current virtual environment in a prompt, define the\nfollowing style in the `prompt_name_setup` function.\n\n```sh\n# %v - virtualenv name.\nzstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v'\n```\n\nThen add `$python_info[virtualenv]` to `$PROMPT` or `$RPROMPT` and call\n`python-info` in the `prompt_name_preexec` hook function.\n\nSimilarly, you can use `:prezto:module:python:info:version:format` with `%v` for\nthe version and add `$python_info[version]` to your prompt for the current\npython version.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Sebastian Wiesner](https://github.com/lunaryorn)\n\n[1]: https://www.python.org/dev/peps/pep-0370/\n[2]: https://www.doughellmann.com/projects/virtualenvwrapper/\n[3]: https://pypi.org/project/virtualenv/\n[4]: https://github.com/yyuu/pyenv\n[5]: https://github.com/sorin-ionescu/prezto/issues\n[6]: ../../runcoms#zshenv\n"
  },
  {
    "path": "modules/python/functions/python-info",
    "content": "#\n# Exposes information about the Python environment via the $python_info\n# associative array.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Patrick Bos <egpbos@gmail.com>\n#\n\n# function python-info {\n\nlocal virtualenv_format\nlocal virtualenv_formatted\nlocal version_format\nlocal version_formatted\nlocal version\n\n# Clean up previous $python_info.\nunset python_info\ntypeset -gA python_info\n\n# Grab the styling we might have to do\nzstyle -s ':prezto:module:python:info:virtualenv' format 'virtualenv_format'\nzstyle -s ':prezto:module:python:info:version' format 'version_format'\n\n# Format virtualenv.\nif [[ -n \"$virtualenv_format\" ]]; then\n  if [[ -n \"$VIRTUAL_ENV\" ]]; then\n    zformat -f virtualenv_formatted \"$virtualenv_format\" \"v:${VIRTUAL_ENV:t}\"\n    python_info[virtualenv]=\"$virtualenv_formatted\"\n  fi\n\n  # Do the same for Conda virtual environments\n  if [[ -n \"$CONDA_DEFAULT_ENV\" ]]; then\n    zformat -f virtualenv_formatted \"$virtualenv_format\" \"v:${CONDA_DEFAULT_ENV:t}\"\n    python_info[virtualenv]=\"$virtualenv_formatted\"\n  fi\nfi\n\nif [[ -n \"$version_format\" ]]; then\n  if (( $+commands[pyenv] )); then\n    version=\"${\"$(pyenv version)\"%% *}\"\n  elif (( $+commands[python] )); then\n    version=\"${$(python3 --version)#Python }\"\n  fi\n\n  if [[ -n \"$version\" && \"$version\" != \"system\" ]]; then\n    zformat -f version_formatted \"$version_format\" \"v:$version\"\n    python_info[version]=\"$version_formatted\"\n  fi\nfi\n\n# }\n"
  },
  {
    "path": "modules/python/init.zsh",
    "content": "#\n# Enables local Python package installation.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Sebastian Wiesner <lunaryorn@googlemail.com>\n#   Patrick Bos <egpbos@gmail.com>\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\n#\n# Options\n#\n\nsetopt EXTENDED_GLOB\n\n# Load dependencies.\npmodload 'helper'\n\n# Load manually installed or package manager installed pyenv into the shell\n# session.\nif [[ -s \"${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}\" ]] \\\n      || (( $+commands[pyenv] )); then\n\n  # Ensure manually installed pyenv is added to path when present.\n  [[ -s $local_pyenv ]] && path=($local_pyenv:h $path)\n\n  # Load pyenv into the shell session.\n  eval \"$(pyenv init - zsh)\"\n\n# Prepend PEP 370 per user site packages directory, which defaults to\n# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The\n# path can be overridden using PYTHONUSERBASE.\nelse\n  if [[ -n \"$PYTHONUSERBASE\" ]]; then\n    path=($PYTHONUSERBASE/bin(N) $path)\n  elif is-darwin; then\n    path=($HOME/Library/Python/*/bin(N) $path)\n  else\n    # This is subject to change.\n    path=($HOME/.local/bin(N) $path)\n  fi\nfi\n\nunset local_pyenv\n\n# Return if requirements are not found.\nif (( ! $+commands[(i)python[0-9.]#] && ! $+functions[pyenv] && ! $+commands[conda] )); then\n  return 1\nfi\n\nfunction _python-workon-cwd {\n  # Check if this is a Git repo.\n  local GIT_REPO_ROOT=\"$(git rev-parse --show-toplevel 2> /dev/null)\"\n  # Get absolute path, resolving symlinks.\n  local PROJECT_ROOT=\"$PWD:A\"\n  while [[ \"$PROJECT_ROOT\" != \"/\" && ! -e \"$PROJECT_ROOT/.venv\" \\\n        && ! -d \"$PROJECT_ROOT/.git\"  && \"$PROJECT_ROOT\" != \"$GIT_REPO_ROOT\" ]]; do\n    PROJECT_ROOT=\"$PROJECT_ROOT:h\"\n  done\n  if [[ $PROJECT_ROOT == \"/\" ]]; then\n    PROJECT_ROOT=\".\"\n  fi\n  # Check for virtualenv name override.\n  local ENV_NAME=\"\"\n  if [[ -f \"$PROJECT_ROOT/.venv\" ]]; then\n    ENV_NAME=\"$(<$PROJECT_ROOT/.venv)\"\n  elif [[ -f \"$PROJECT_ROOT/.venv/bin/activate\" ]]; then\n    ENV_NAME=\"$PROJECT_ROOT/.venv\"\n  elif [[ $PROJECT_ROOT != \".\" ]]; then\n    ENV_NAME=\"$PROJECT_ROOT:t\"\n  fi\n  if [[ -n $CD_VIRTUAL_ENV && \"$ENV_NAME\" != \"$CD_VIRTUAL_ENV\" ]]; then\n    # We've just left the repo, deactivate the environment.\n    # Note: this only happens if the virtualenv was activated automatically.\n    deactivate && unset CD_VIRTUAL_ENV\n  fi\n  if [[ $ENV_NAME != \"\" ]]; then\n    # Activate the environment only if it is not already active.\n    if [[ \"$VIRTUAL_ENV\" != \"$WORKON_HOME/$ENV_NAME\" ]]; then\n      if [[ -n \"$WORKON_HOME\" && -e \"$WORKON_HOME/$ENV_NAME/bin/activate\" ]]; then\n        workon \"$ENV_NAME\" && export CD_VIRTUAL_ENV=\"$ENV_NAME\"\n      elif [[ -e \"$ENV_NAME/bin/activate\" ]]; then\n        source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV=\"$ENV_NAME\"\n      fi\n    fi\n  fi\n}\n\n# Load auto workon cwd hook.\nif zstyle -t ':prezto:module:python:virtualenv' auto-switch; then\n  # Auto workon when changing directory.\n  autoload -Uz add-zsh-hook\n  add-zsh-hook chpwd _python-workon-cwd\nfi\n\n# Load virtualenvwrapper into the shell session, if pre-requisites are met\n# and unless explicitly requested not to\nif (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) \\\n      && zstyle -T ':prezto:module:python:virtualenv' initialize ; then\n  # Set the directory where virtual environments are stored.\n  export WORKON_HOME=\"${WORKON_HOME:-$HOME/.virtualenvs}\"\n\n  # Disable the virtualenv prompt. Note that we use the magic value used by the\n  # pure prompt because there's some additional logic in that prompt which tries\n  # to figure out if a user set this variable and disable the python portion of\n  # that prompt based on it which is the exact opposite of what we want to do.\n  export VIRTUAL_ENV_DISABLE_PROMPT=12\n\n  # Create a sorted array of available virtualenv related 'pyenv' commands to\n  # look for plugins of interest. Scanning shell '$path' isn't enough as they\n  # can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead.\n  local -a pyenv_plugins\n  local pyenv_virtualenvwrapper_plugin_found\n  if (( $+commands[pyenv] )); then\n    pyenv_plugins=(${(@oM)${(f)\"$(pyenv commands --no-sh 2> /dev/null)\"}:#virtualenv*})\n\n    # Optionally activate 'virtualenv-init' plugin when available.\n    if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then\n      eval \"$(pyenv virtualenv-init - zsh)\"\n    fi\n\n    # Optionally activate 'virtualenvwrapper' plugin when available.\n    if (( $pyenv_plugins[(i)virtualenvwrapper(_lazy|)] <= $#pyenv_plugins )); then\n      pyenv \"$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]\"\n      pyenv_virtualenvwrapper_plugin_found=\"true\"\n    fi\n\n    unset pyenv_plugins\n  fi\n\n  if [[ $pyenv_virtualenvwrapper_plugin_found != \"true\" ]]; then\n    # Fallback to standard 'virtualenvwrapper' if 'python' is available in '$path'.\n    if (( ! $+VIRTUALENVWRAPPER_PYTHON )) && (( $+commands[(i)python[0-9.]#] )); then\n      VIRTUALENVWRAPPER_PYTHON=$commands[(i)python[0-9.]#]\n    fi\n\n    virtualenvwrapper_sources=(\n      ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]}\n      /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN)\n    )\n    if (( $#virtualenvwrapper_sources )); then\n      source \"$virtualenvwrapper_sources[1]\"\n    fi\n\n    unset virtualenvwrapper_sources\n  fi\n\n  unset pyenv_virtualenvwrapper_plugin_found\nfi\n\n# Load conda into the shell session, if requested.\nzstyle -T ':prezto:module:python' conda-init\nif (( $? && $+commands[conda] )); then\n  if (( $(conda ..changeps1) )); then\n    echo \"To make sure Conda doesn't change your prompt (should do that in the prompt module) run:\\n  conda config --set changeps1 false\"\n    # TODO:\n    # We could just run this ourselves. In an exit hook\n    # (add zsh-hook zshexit [(anonymous) function]) we could then set it back\n    # to the way it was before we changed it. However, I'm not sure if this is\n    # exception safe, so left it like this for now.\n  fi\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:python:alias' skip; then\n  alias py='python'\n  alias py2='python2'\n  alias py3='python3'\nfi\n"
  },
  {
    "path": "modules/rails/README.md",
    "content": "# Ruby on Rails\n\nDefines [Ruby on Rails][1] aliases.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:rails:alias' skip 'yes'\n```\n\n- `ror` is short for `rails`.\n- `rorc` starts the Rails console.\n- `rordc` starts the Rails console connected to the database.\n- `rordm` migrates the database.\n- `rordM` migrates the database and recreates the test database.\n- `rordr` rolls the database schema back to the previous version.\n- `rorg` generates new code.\n- `rorl` displays the log.\n- `rorlc` truncates logs to zero bytes.\n- `rorp` installs a plugin.\n- `rorr` runs code in the application environment.\n- `rors` starts the Rails server.\n- `rorsd` starts the Rails server with the debugger.\n- `rorx` destroys newly generated code.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Robby Russell](https://github.com/robbyrussell)\n- [Jake Bell](https://github.com/theunraveler)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://rubyonrails.org\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/rails/init.zsh",
    "content": "#\n# Defines Ruby on Rails aliases.\n#\n# Authors:\n#   Robby Russell <robby@planetargon.com>\n#   Jake Bell <jake.b.bell@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'ruby'\n\n# Return if requirements are not found.\nif (( ! $+commands[bundle] )); then\n  return 1\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:rails:alias' skip; then\n  alias ror='bundle exec rails'\n  alias rorc='bundle exec rails console'\n  alias rordc='bundle exec rails dbconsole'\n  alias rordm='bundle exec rake db:migrate'\n  alias rordM='bundle exec rake db:migrate db:test:clone'\n  alias rordr='bundle exec rake db:rollback'\n  alias rorg='bundle exec rails generate'\n  alias rorl='tail -f \"$(ruby-app-root)/log/development.log\"'\n  alias rorlc='bundle exec rake log:clear'\n  alias rorp='bundle exec rails plugin'\n  alias rorr='bundle exec rails runner'\n  alias rors='bundle exec rails server'\n  alias rorsd='bundle exec rails server --debugger'\n  alias rorx='bundle exec rails destroy'\nfi\n"
  },
  {
    "path": "modules/rsync/README.md",
    "content": "# Rsync\n\nDefines [rsync][1] aliases.\n\nmacOS users are encouraged to use _rsync_ from [Homebrew][2] or [MacPorts][3],\nwhich has additional enhancements including patches from [Bombich][4].\n\n## Aliases\n\n- `rsync-copy` copies files and directories from _source_ to _destination_.\n- `rsync-move` moves files and directories from _source_ to _destination_.\n- `rsync-update` updates files and directories on _destination_.\n- `rsync-synchronize` synchronizes files and directories between _source_ and\n  _destination_.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://rsync.samba.org\n[2]: https://github.com/Homebrew/homebrew-core\n[3]: https://ports.macports.org/port/rsync\n[4]: https://bombich.com/kb/ccc5/credits#rsync\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/rsync/init.zsh",
    "content": "#\n# Defines Rsync aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[rsync] )); then\n  return 1\nfi\n\n# Load dependencies.\npmodload 'helper'\n\n#\n# Aliases\n#\n\n_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive \\\n  --hard-links --one-file-system'\n\nautoload -Uz is-at-least\nif is-at-least 3.1 ${\"$(rsync --version 2>&1)\"[(w)3]}; then\n\n  # ACL and extended attributes support\n  if grep -q 'xattrs' <(rsync --help 2>&1); then\n    _rsync_cmd=\"${_rsync_cmd} --acls --xattrs\"\n  fi\n\n  # macOS Enhancements\n  # https://bombich.com/kb/ccc5/credits\n  if is-darwin && grep -q 'file-flags' <(rsync --help 2>&1); then\n    _rsync_cmd=\"${_rsync_cmd} --crtimes --fileflags --force-change\"\n  fi\nfi\n\nalias rsync-copy=\"${_rsync_cmd}\"\nalias rsync-move=\"${_rsync_cmd} --remove-source-files\"\nalias rsync-update=\"${_rsync_cmd} --update\"\nalias rsync-synchronize=\"${_rsync_cmd} --update --delete\"\n\nunset _rsync_cmd\n"
  },
  {
    "path": "modules/ruby/README.md",
    "content": "# Ruby\n\nConfigures [Ruby][1] local gem installation, loads version managers, and defines\naliases.\n\n## Local Gem Installation\n\nWhen a Ruby version manager is not detected, local gems are installed in\n_`~/.gem`_; otherwise, they are installed according to the manager.\n\n## rbenv\n\nAn alternative RVM is to use [_rbenv_][2], which allows for switching between\nmultiple, isolated Ruby installations in the home directory.\n\nWhile it is not as feature rich as RVM, it is not loaded into the shell and is\nnot known to cause conflicts with shell scripts.\n\nThis will be loaded automatically if _rbenv_ is installed to `$RBENV_ROOT`,\n_`~/.rbenv`_, or if the `rbenv` command is on the path.\n\n## rvm\n\nAn alternative to the above is to use [The Ruby Version Manager (_rvm_)][3],\nwhich allows for managing multiple, isolated Ruby installations and gem sets in\nthe home directory.\n\nSince RVM is loaded into the shell and is known to override shell commands, it\nmay conflict with shell scripts.\n\nLoad this module as late as possible when using RVM since RVM will complain if\nit is not first in `$PATH`.\n\n## chruby\n\nYet another alternative is [_chruby_][4], which is simpler than both _rvm_ and\n_rbenv_.\n\n### Settings\n\n#### Auto-Switch\n\nTo enable auto switching the Ruby version on directory change based on the\n`.ruby-version` file, add the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:ruby:chruby' auto-switch 'yes'\n```\n\n## Bundler\n\nManage gems that are not meant to be used as commands, such as application\ndependencies, with [Bundler][5].\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:ruby:alias' skip 'yes'\n```\n\n### General\n\n- `rb` is short for `ruby`.\n\n### Bundler\n\n- `rbb` manages ruby dependencies (`bundle`).\n- `rbbc` cleans up unused gems in your bundler directory.\n- `rbbe` executes a script in the context of the current bundle.\n- `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`.\n- `rbbI` installs the following:\n  - gems specified in the `Gemfile` in `vendor/bundle`.\n  - packages the gems into `vendor/cache`.\n  - appends bundler directories to `.gitignore`.\n- `rbbl` lists all gems in the current bundle.\n- `rbbo` opens an installed gem in the editor.\n- `rbbp` packages gem files into `vendor/cache`.\n- `rbbu` updates gems to their latest version.\n\n## Functions\n\n- `ruby-app-root` displays the path to the Ruby application root directory.\n- `ruby-info` exposes information about the Ruby environment via the\n  `$ruby_info` associative array.\n\n## Theming\n\nTo display the name of the current Ruby version in a prompt, define the\nfollowing style in the `prompt_name_setup` function.\n\n```sh\n# %v - ruby version.\nzstyle ':prezto:module:ruby:info:version' format 'version:%v'\n```\n\nThen add `$ruby_info[version]` to `$PROMPT` or `$RPROMPT` and call\n`ruby-info` in the `prompt_name_preexec` hook function.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][6]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.ruby-lang.org\n[2]: https://github.com/rbenv/rbenv\n[3]: https://rvm.io\n[4]: https://github.com/postmodern/chruby\n[5]: https://gembundler.com\n[6]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/ruby/functions/ruby-app-root",
    "content": "#\n# Displays the path to the Ruby application root directory.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function ruby-app-root {\n\nlocal root_dir=\"$PWD\"\n\nwhile [[ \"$root_dir\" != '/' ]]; do\n  if [[ -f \"$root_dir/Gemfile\" ]]; then\n    print \"$root_dir\"\n    break\n  fi\n  root_dir=\"$root_dir:h\"\ndone\n\nreturn 1\n\n# }\n"
  },
  {
    "path": "modules/ruby/functions/ruby-info",
    "content": "#\n# Exposes information about the Ruby environment via the $ruby_info associative\n# array.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function ruby-info {\n\nlocal version\nlocal version_format\nlocal version_formatted\n\n# Clean up previous $ruby_info.\nunset ruby_info\ntypeset -gA ruby_info\n\n# Grab formatting for anything we might have to do\nzstyle -s ':prezto:module:ruby:info:version' format 'version_format'\n\nif [[ -n \"$version_format\" ]]; then\n  if (( $+commands[rvm-prompt] )); then\n    version=\"$(rvm-prompt)\"\n  elif (( $+commands[rbenv] )); then\n    version=\"$(rbenv version-name)\"\n  elif (( $+commands[ruby] )); then\n    version=\"${${$(ruby --version)[(w)1,(w)2]}/ /-}\"\n  fi\n\n  # Format version.\n  if [[ -n \"$version\" && \"$version\" != \"system\" ]]; then\n    zformat -f version_formatted \"$version_format\" \"v:$version\"\n    ruby_info[version]=\"$version_formatted\"\n  fi\nfi\n\n# }\n"
  },
  {
    "path": "modules/ruby/init.zsh",
    "content": "#\n# Configures Ruby local installation, loads version managers, and defines\n# aliases.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\n# Possible lookup locations for manually installed rbenv and rvm.\nlocal_rbenv_paths=({$RBENV_ROOT,{$XDG_CONFIG_HOME/,$HOME/.}rbenv}/bin/rbenv(N))\nlocal_rvm_paths=({$RVM_DIR,{$XDG_CONFIG_HOME/,$HOME/.}rvm}/scripts/rvm(N))\n\n# Load manually installed or package manager installed rbenv into the shell\n# session.\nif (( $#local_rbenv_paths || $+commands[rbenv] )); then\n\n  # Ensure manually installed rbenv is added to path when present.\n  [[ -s $local_rbenv_paths[1] ]] && path=($local_rbenv_paths[1]:h $path)\n\n  eval \"$(rbenv init - zsh)\"\n\n# Load manually installed rvm into the shell session.\nelif (( $#local_rvm_paths )); then\n  # Unset AUTO_NAME_DIRS since auto adding variable-stored paths to ~ list\n  # conflicts with rvm.\n  unsetopt AUTO_NAME_DIRS\n\n  source \"$local_rvm_paths[1]\"\n\n# Load package manager installed chruby into the shell session.\nelif (( $+commands[chruby-exec] )); then\n  if (( ! $+functions[chruby] )); then\n    source \"${commands[chruby-exec]:h:h}/share/chruby/chruby.sh\"\n  fi\n\n  if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then\n    if (( ! $+functions[chruby_auto] )); then\n      source \"${commands[chruby-exec]:h:h}/share/chruby/auto.sh\"\n    fi\n\n    # If a default ruby is set, switch to it.\n    chruby_auto\n  fi\n\n# Prepend local gems bin directories to PATH.\nelse\n  path=($HOME/.gem/ruby/*/bin(N) $path)\nfi\n\nunset local_rbenv\n\n# Return if requirements are not found.\nif (( ! $+commands[ruby] && ! $#functions[(i)r(benv|vm)] )); then\n  return 1\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:ruby:alias' skip; then\n  # General\n  alias rb='ruby'\n\n  # Bundler\n  if (( $+commands[bundle] )); then\n    alias rbb='bundle'\n    alias rbbc='bundle clean'\n    alias rbbe='bundle exec'\n    alias rbbi='bundle install --path vendor/bundle'\n    alias rbbl='bundle list'\n    alias rbbo='bundle open'\n    alias rbbp='bundle package'\n    alias rbbu='bundle update'\n    alias rbbI='rbbi \\\n      && bundle package \\\n      && print .bundle       >>! .gitignore \\\n      && print vendor/assets >>! .gitignore \\\n      && print vendor/bundle >>! .gitignore \\\n      && print vendor/cache  >>! .gitignore'\n  fi\nfi\n"
  },
  {
    "path": "modules/screen/README.md",
    "content": "# GNU Screen\n\nDefines [GNU Screen][1] aliases and provides for auto launching it at start-up.\n\n## Settings\n\n### Auto-Start\n\nStarts a GNU Screen session automatically when Zsh is launched.\n\nTo enable this feature when launching Zsh in a local terminal, add the following\nline to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:screen:auto-start' local 'yes'\n```\n\nTo enable this feature when launching Zsh in a SSH connection, add the following\nline to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:screen:auto-start' remote 'yes'\n```\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:screen:alias' skip 'yes'\n```\n\n- `scr` is short for `screen`.\n- `scrl` lists sessions/socket directory.\n- `scrn` starts a new session.\n- `scrr` attaches to a session if one exists or start a new one.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Georges Discry](https://github.com/gdiscry)\n\n[1]: https://www.gnu.org/software/screen/\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/screen/init.zsh",
    "content": "#\n# Defines GNU Screen aliases and provides for auto launching it at start-up.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Georges Discry <georges@discry.be>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[screen] )); then\n  return 1\nfi\n\n#\n# Auto Start\n#\n\nif [[ -z \"$STY\" && -z \"$EMACS\" && -z \"$VIM\" ]] && ( \\\n  ( [[ -n \"$SSH_TTY\" ]] && zstyle -t ':prezto:module:screen:auto-start' remote ) ||\n  ( [[ -z \"$SSH_TTY\" ]] && zstyle -t ':prezto:module:screen:auto-start' local ) \\\n); then\n  session=\"$(\n    screen -list 2> /dev/null \\\n      | sed '1d;$d' \\\n      | awk '!/Dead/ {print $1}' \\\n      | head -1)\"\n\n  if [[ -n \"$session\" ]]; then\n    exec screen -x \"$session\"\n  else\n    exec screen -a -A -U -D -R -m \"$SHELL\" -l\n  fi\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:screen:alias' skip; then\n  alias scr='screen'\n  alias scrl='screen -list'\n  alias scrn='screen -U -S'\n  alias scrr='screen -a -A -U -D -R'\nfi\n"
  },
  {
    "path": "modules/spectrum/README.md",
    "content": "# Spectrum\n\nProvides for easier use of 256 colors and effects.\n\nTo learn more about text formatting, read [A Guide to 256 Color Codes][1].\n\n## Variables\n\n- `BG` provides background colors.\n- `FG` provides foreground colors.\n- `FX` provides effects.\n\n### Background and Foreground\n\nTerminals support 8, 16, 88, and 256 colors. Check if a terminal supports 256\ncolors with `tput colors` before use.\n\nThe following colors are supported.\n\n- 0 to 255\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n\n### Effects\n\nThough there are many effects, most terminals support at least bold formatting.\n\n**Not all effects work on all terminals; use them sparingly.**\n\n| Enable                    | Disable                      |\n| ------------------------- | ---------------------------- |\n|                           | none                         |\n|                           | normal                       |\n| bold                      | no-bold                      |\n| faint                     | no-faint                     |\n| standout                  | no-standout                  |\n| underline                 | no-underline                 |\n| blink                     | no-blink                     |\n| fast-blink                | no-fast-blink                |\n| reverse                   | no-reverse                   |\n| conceal                   | no-conceal                   |\n| strikethrough             | no-strikethrough             |\n| gothic                    | no-gothic                    |\n| double-underline          | no-double-underline          |\n| proportional              | no-proportional              |\n| overline                  | no-overline                  |\n|                           |                              |\n|                           | no-border                    |\n| border-rectangle          | no-border-rectangle          |\n| border-circle             | no-border-circle             |\n|                           |                              |\n|                           | no-ideogram-marking          |\n| underline-or-right        | no-underline-or-right        |\n| double-underline-or-right | no-double-underline-or-right |\n| overline-or-left          | no-overline-or-left          |\n| double-overline-or-left   | no-double-overline-or-left   |\n| stress                    | no-stress                    |\n|                           |                              |\n|                           | font-default                 |\n| font-first                | no-font-first                |\n| font-second               | no-font-second               |\n| font-third                | no-font-third                |\n| font-fourth               | no-font-fourth               |\n| font-fifth                | no-font-fifth                |\n| font-sixth                | no-font-sixth                |\n| font-seventh              | no-font-seventh              |\n| font-eighth               | no-font-eighth               |\n| font-ninth                | no-font-ninth                |\n\n### Plain Text\n\nUse `$BG[none]`, `$FG[none]`, or `$FX[none]` to turn off formatting.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [P.C. Shyamshankar](https://github.com/sykora)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: http://lucentbeing.com/writing/archives/a-guide-to-256-color-codes/\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/spectrum/init.zsh",
    "content": "#\n# Provides for easier use of 256 colors and effects.\n#\n# Authors:\n#   P.C. Shyamshankar <sykora@lucentbeing.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif [[ $TERM == dumb ]]; then\n  return 1\nfi\n\ntypeset -gA FX FG BG\n\nFX=(\n                                        none                         \"\\e[00m\"\n                                        normal                       \"\\e[22m\"\n  bold                      \"\\e[01m\"    no-bold                      \"\\e[22m\"\n  faint                     \"\\e[02m\"    no-faint                     \"\\e[22m\"\n  standout                  \"\\e[03m\"    no-standout                  \"\\e[23m\"\n  underline                 \"\\e[04m\"    no-underline                 \"\\e[24m\"\n  blink                     \"\\e[05m\"    no-blink                     \"\\e[25m\"\n  fast-blink                \"\\e[06m\"    no-fast-blink                \"\\e[25m\"\n  reverse                   \"\\e[07m\"    no-reverse                   \"\\e[27m\"\n  conceal                   \"\\e[08m\"    no-conceal                   \"\\e[28m\"\n  strikethrough             \"\\e[09m\"    no-strikethrough             \"\\e[29m\"\n  gothic                    \"\\e[20m\"    no-gothic                    \"\\e[22m\"\n  double-underline          \"\\e[21m\"    no-double-underline          \"\\e[22m\"\n  proportional              \"\\e[26m\"    no-proportional              \"\\e[50m\"\n  overline                  \"\\e[53m\"    no-overline                  \"\\e[55m\"\n\n                                        no-border                    \"\\e[54m\"\n  border-rectangle          \"\\e[51m\"    no-border-rectangle          \"\\e[54m\"\n  border-circle             \"\\e[52m\"    no-border-circle             \"\\e[54m\"\n\n                                        no-ideogram-marking          \"\\e[65m\"\n  underline-or-right        \"\\e[60m\"    no-underline-or-right        \"\\e[65m\"\n  double-underline-or-right \"\\e[61m\"    no-double-underline-or-right \"\\e[65m\"\n  overline-or-left          \"\\e[62m\"    no-overline-or-left          \"\\e[65m\"\n  double-overline-or-left   \"\\e[63m\"    no-double-overline-or-left   \"\\e[65m\"\n  stress                    \"\\e[64m\"    no-stress                    \"\\e[65m\"\n\n                                        font-default                 \"\\e[10m\"\n  font-first                \"\\e[11m\"    no-font-first                \"\\e[10m\"\n  font-second               \"\\e[12m\"    no-font-second               \"\\e[10m\"\n  font-third                \"\\e[13m\"    no-font-third                \"\\e[10m\"\n  font-fourth               \"\\e[14m\"    no-font-fourth               \"\\e[10m\"\n  font-fifth                \"\\e[15m\"    no-font-fifth                \"\\e[10m\"\n  font-sixth                \"\\e[16m\"    no-font-sixth                \"\\e[10m\"\n  font-seventh              \"\\e[17m\"    no-font-seventh              \"\\e[10m\"\n  font-eighth               \"\\e[18m\"    no-font-eighth               \"\\e[10m\"\n  font-ninth                \"\\e[19m\"    no-font-ninth                \"\\e[10m\"\n)\n\nFG[none]=\"$FX[none]\"\nBG[none]=\"$FX[none]\"\ncolors=(black red green yellow blue magenta cyan white)\nfor color in {0..255}; do\n  if (( $color >= 0 )) && (( $color < $#colors )); then\n    index=$(( $color + 1 ))\n    FG[$colors[$index]]=\"\\e[38;5;${color}m\"\n    BG[$colors[$index]]=\"\\e[48;5;${color}m\"\n  fi\n\n  FG[$color]=\"\\e[38;5;${color}m\"\n  BG[$color]=\"\\e[48;5;${color}m\"\ndone\nunset color{s,} index\n"
  },
  {
    "path": "modules/ssh/README.md",
    "content": "# SSH\n\nProvides for an easier use of [SSH][1] by setting up [_ssh-agent_][2].\n\n## Settings\n\n### Identities\n\nTo load multiple identities, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github'\n```\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n[Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://www.openssh.com\n[2]: https://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/ssh/init.zsh",
    "content": "#\n# Provides for an easier use of SSH by setting up ssh-agent.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[ssh-agent] )); then\n  return 1\nfi\n\n# Set the path to the SSH directory.\n_ssh_dir=\"$HOME/.ssh\"\n\n# Set the path to the environment file if not set by another module.\n_ssh_agent_env=\"${_ssh_agent_env:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.env}\"\n\n# Set the path to the persistent authentication socket if not set by another module.\n_ssh_agent_sock=\"${_ssh_agent_sock:-${XDG_CACHE_HOME:-$HOME/.cache}/prezto/ssh-agent.sock}\"\n\n# Start ssh-agent if not started.\nif [[ ! -S \"$SSH_AUTH_SOCK\" ]]; then\n  # Export environment variables.\n  source \"$_ssh_agent_env\" 2> /dev/null\n\n  # Start ssh-agent if not started.\n  if ! ps -U \"$LOGNAME\" -o pid,ucomm | grep -q -- \"${SSH_AGENT_PID:--1} ssh-agent\"; then\n    mkdir -p \"$_ssh_agent_env:h\"\n    eval \"$(ssh-agent | sed '/^echo /d' | tee \"$_ssh_agent_env\")\"\n  fi\nfi\n\n# Create a persistent SSH authentication socket.\nif [[ -S \"$SSH_AUTH_SOCK\" && \"$SSH_AUTH_SOCK\" != \"$_ssh_agent_sock\" ]]; then\n  mkdir -p \"$_ssh_agent_sock:h\"\n  ln -sf \"$SSH_AUTH_SOCK\" \"$_ssh_agent_sock\"\n  export SSH_AUTH_SOCK=\"$_ssh_agent_sock\"\nfi\n\n# Load identities.\nif ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then\n  zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities'\n  # ssh-add has strange requirements for running SSH_ASKPASS, so we duplicate\n  # them here. Essentially, if the other requirements are met, we redirect stdin\n  # from /dev/null in order to meet the final requirement.\n  #\n  # From ssh-add(1):\n  # If ssh-add needs a passphrase, it will read the passphrase from the current\n  # terminal if it was run from a terminal. If ssh-add does not have a terminal\n  # associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the\n  # program specified by SSH_ASKPASS and open an X11 window to read the\n  # passphrase.\n  if [[ -n \"$DISPLAY\" && -x \"$SSH_ASKPASS\" ]]; then\n    ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} < /dev/null 2> /dev/null\n  else\n    ssh-add ${_ssh_identities:+$_ssh_dir/${^~_ssh_identities[@]}} 2> /dev/null\n  fi\nfi\n\n# Clean up.\nunset _ssh_{dir,identities} _ssh_agent_{env,sock}\n"
  },
  {
    "path": "modules/syntax-highlighting/README.md",
    "content": "# Syntax Highlighting\n\nIntegrates [zsh-syntax-highlighting][1] into Prezto.\n\nThis module must be loaded _before_ the _`prompt`_ module.\n\nIf this module is used in conjunction with the [_`history-substring-search`_][2]\nmodule, this module must be loaded _before_ the _`history-substring-search`_\nmodule.\n\nAdditionally, if this module is used in conjunction with the\n[_`autosuggestions`_][3] module, this module must be loaded _before_ the\n_`autosuggestions`_ module as well.\n\nTo elaborate, the relative order of loading the modules would be\n_`syntax-highlighting`_, _`history-substring-search`_, _`autosuggestions`_ and\n_`prompt`_.\n\n## Contributors\n\nNew features and bug fixes should be submitted to the\n[zsh-syntax-highlighting][1] project according to its rules and regulations.\nThis module will be synchronized against it.\n\n## Settings\n\n### Highlighting\n\nTo enable highlighting for this module only, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:syntax-highlighting' color 'yes'\n```\n\n### Highlighters\n\nSyntax highlighting is accomplished by pluggable [highlighters][4]. This module\nonly enables the _main_ highlighter by default.\n\nTo enable all highlighters, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:syntax-highlighting' highlighters \\\n  'main' \\\n  'brackets' \\\n  'pattern' \\\n  'line' \\\n  'cursor' \\\n  'root'\n```\n\n### Highlighting Styles\n\nEach syntax highlighter defines styles used to highlight tokens.\n\nTo highlight, for example, builtins, commands, and functions in blue instead of\ngreen, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:syntax-highlighting' styles \\\n  'builtin' 'bg=blue' \\\n  'command' 'bg=blue' \\\n  'function' 'bg=blue'\n```\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: https://github.com/zsh-users/zsh-syntax-highlighting\n[2]: ../history-substring-search#readme\n[3]: ../autosuggestions#readme\n[4]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/syntax-highlighting/init.zsh",
    "content": "#\n# Integrates zsh-syntax-highlighting into Prezto.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif ! zstyle -t ':prezto:module:syntax-highlighting' color; then\n  return 1\nfi\n\n# Source module files.\nsource \"${0:h}/external/zsh-syntax-highlighting.zsh\" || return 1\n\n# Set highlighters.\nzstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'\nif (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then\n  ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)\nfi\n\n# Set highlighting styles.\ntypeset -A syntax_highlighting_styles\nzstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles'\nfor syntax_highlighting_style in \"${(k)syntax_highlighting_styles[@]}\"; do\n  ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]=\"$syntax_highlighting_styles[$syntax_highlighting_style]\"\ndone\nunset syntax_highlighting_style{s,}\n\n# Set pattern highlighting styles.\ntypeset -A syntax_pattern_styles\nzstyle -a ':prezto:module:syntax-highlighting' pattern 'syntax_pattern_styles'\nfor syntax_pattern_style in \"${(k)syntax_pattern_styles[@]}\"; do\n  ZSH_HIGHLIGHT_PATTERNS[$syntax_pattern_style]=\"$syntax_pattern_styles[$syntax_pattern_style]\"\ndone\nunset syntax_pattern_style{s,}\n"
  },
  {
    "path": "modules/terminal/README.md",
    "content": "# Terminal\n\nSets terminal window and tab titles.\n\n## Settings\n\n### Auto-Title\n\nTo auto set the terminal window and tab titles with the current command or\ndirectory, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:terminal' auto-title 'yes'\n```\n\nAuto titling is disabled inside terminal multiplexers (except inside dvtm) since\nit interferes with window names defined in configuration files and profile\nmanagers. This can be overridden by setting it to `always`.\n\n```sh\nzstyle ':prezto:module:terminal' auto-title 'always'\n```\n\n### Title formats\n\nTo format terminal window and tab titles, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'\nzstyle ':prezto:module:terminal:tab-title' format '%m: %s'\nzstyle ':prezto:module:terminal:multiplexer-title' format '%s'\n```\n\n`%s` will be replaced with the current working directory path or the currently\nexecuting program name.\n\nFor a list of sequences, see [Expansion of Prompt Sequences][1].\n\n## Functions\n\n- `set-tab-title` sets the terminal tab title.\n- `set-window-title` sets the terminal window title.\n- `set-multiplexer-title` sets the terminal multiplexer title.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Olaf Conradi](https://github.com/oohlaf)\n\n[1]: https://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/terminal/init.zsh",
    "content": "#\n# Sets terminal window and tab titles.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Olaf Conradi <olaf@conradi.org>\n#\n\n# Return if requirements are not found.\nif [[ $TERM == (dumb|linux|*bsd*|eterm*) ]]; then\n  return 1\nfi\n\n# Sets the terminal window title.\nfunction set-window-title {\n  local title_format{,ted}\n  zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format=\"%s\"\n  zformat -f title_formatted \"$title_format\" \"s:$argv\"\n  printf '\\e]2;%s\\a' \"${(V%)title_formatted}\"\n}\n\n# Sets the terminal tab title.\nfunction set-tab-title {\n  local title_format{,ted}\n  zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format=\"%s\"\n  zformat -f title_formatted \"$title_format\" \"s:$argv\"\n  printf '\\e]1;%s\\a' \"${(V%)title_formatted}\"\n}\n\n# Sets the terminal multiplexer tab title.\nfunction set-multiplexer-title {\n  local title_format{,ted}\n  zstyle -s ':prezto:module:terminal:multiplexer-title' format 'title_format' || title_format=\"%s\"\n  zformat -f title_formatted \"$title_format\" \"s:$argv\"\n  printf '\\ek%s\\e\\\\' \"${(V%)title_formatted}\"\n}\n\n# Sets the tab and window titles with a given command.\nfunction _terminal-set-titles-with-command {\n  emulate -L zsh\n  setopt EXTENDED_GLOB\n\n  # Get the command name that is under job control.\n  if [[ \"${2[(w)1]}\" == (fg|%*)(\\;|) ]]; then\n    # Get the job name, and, if missing, set it to the default %+.\n    local job_name=\"${${2[(wr)%*(\\;|)]}:-%+}\"\n\n    # Make a local copy for use in the subshell.\n    local -A jobtexts_from_parent_shell\n    jobtexts_from_parent_shell=(${(kv)jobtexts})\n\n    jobs \"$job_name\" 2> /dev/null > >(\n      read index discarded\n      # The index is already surrounded by brackets: [1].\n      _terminal-set-titles-with-command \"${(e):-\\$jobtexts_from_parent_shell$index}\"\n    )\n  else\n    # Set the command name, or in the case of sudo or ssh, the next command.\n    local cmd=\"${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}\"\n    local truncated_cmd=\"${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}\"\n    unset MATCH\n\n    if [[ $TERM == screen* ]]; then\n      set-multiplexer-title \"$truncated_cmd\"\n    fi\n    set-tab-title \"$truncated_cmd\"\n    set-window-title \"$cmd\"\n  fi\n}\n\n# Sets the tab and window titles with a given path.\nfunction _terminal-set-titles-with-path {\n  emulate -L zsh\n  setopt EXTENDED_GLOB\n\n  local absolute_path=\"${${1:a}:-$PWD}\"\n  local abbreviated_path=\"${absolute_path/#$HOME/~}\"\n  local truncated_path=\"${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}\"\n  unset MATCH\n\n  if [[ $TERM == screen* ]]; then\n    set-multiplexer-title \"$truncated_path\"\n  fi\n  set-tab-title \"$truncated_path\"\n  set-window-title \"$abbreviated_path\"\n}\n\n# Do not override precmd/preexec; append to the hook array.\nautoload -Uz add-zsh-hook\n\n# Set up the Apple Terminal.\nif [[ $TERM_PROGRAM == Apple_Terminal ]] \\\n  && ( ! [[ -n \"$STY\" || -n \"$TMUX\" || -n \"$DVTM\" ]] )\nthen\n  # Sets the Terminal.app current working directory before the prompt is\n  # displayed.\n  function _terminal-set-terminal-app-proxy-icon {\n    printf '\\e]7;%s\\a' \"file://${HOST}${PWD// /%20}\"\n  }\n  add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon\n\n  # Unsets the Terminal.app current working directory when a terminal\n  # multiplexer or remote connection is started since it can no longer be\n  # updated, and it becomes confusing when the directory displayed in the title\n  # bar is no longer synchronized with real current working directory.\n  function _terminal-unset-terminal-app-proxy-icon {\n    if [[ \"${2[(w)1]:t}\" == (screen|tmux|dvtm|ssh|mosh) ]]; then\n      print '\\e]7;\\a'\n    fi\n  }\n  add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon\n\n  # Do not set the tab and window titles in Terminal.app since it sets the tab\n  # title to the currently running process by default and the current working\n  # directory is set separately.\n  return\nfi\n\n# Set up non-Apple terminals.\nif zstyle -t ':prezto:module:terminal' auto-title 'always' \\\n  || (zstyle -t ':prezto:module:terminal' auto-title \\\n    && ( ! [[ -n \"$STY\" || -n \"$TMUX\" ]] ))\nthen\n  # Sets titles before the prompt is displayed.\n  add-zsh-hook precmd _terminal-set-titles-with-path\n\n  # Sets titles before command execution.\n  add-zsh-hook preexec _terminal-set-titles-with-command\nfi\n"
  },
  {
    "path": "modules/tmux/README.md",
    "content": "# Tmux\n\nDefines [_tmux_][1] aliases and provides for auto launching it at start-up.\n\n## Settings\n\n### Auto-Start\n\nStarts a tmux session automatically when Zsh is launched.\n\nTo enable this feature when launching Zsh in a local terminal, add the following\nline to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:tmux:auto-start' local 'yes'\n```\n\nTo enable this feature when launching Zsh in a SSH connection, add the following\nline to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:tmux:auto-start' remote 'yes'\n```\n\nIn both cases, it will create a background session named _prezto_ if the tmux\nserver is not started.\n\nYou can change the default session name with:\n\n```sh\nzstyle ':prezto:module:tmux:session' name '<YOUR DEFAULT SESSION NAME>'\n```\n\nWith `auto-start` enabled, you may want to control how multiple sessions are\nmanaged. The `destroy-unattached` option of tmux controls if the unattached\nsessions must be kept alive, making sessions available for later use, configured\nin _tmux.conf_:\n\n```conf\nset-option -g destroy-unattached [on | off]\n```\n\n#### iTerm2 Integration\n\n[iTerm2][6] offers significant integration with tmux. This can be enabled by\nadding the following line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:tmux:iterm' integrate 'yes'\n```\n\nRead [iTerm2 and tmux Integration][7] for more information.\n\n## Aliases\n\nAliases are enabled by default. To disable them, add the following to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_.\n\n```sh\nzstyle ':prezto:module:tmux:alias' skip 'yes'\n```\n\n- `tmuxa` attaches or switches to a tmux session.\n- `tmuxl` lists sessions managed by the tmux server.\n\n## Caveats\n\nOn macOS, launching tmux can cause the error **launch_msg(...): Socket is not\nconnected** to be displayed, which can be fixed by installing\n[reattach-to-user-namespace][3], available in [Homebrew][4], and adding the\nfollowing to _tmux.conf_:\n\n```conf\nset-option -g default-command \"reattach-to-user-namespace -l $SHELL -l\"\n```\n\nFurthermore, tmux is known to cause **kernel panics** on macOS. A discussion\nabout this and Prezto has already been [opened][2].\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Colin Hebert](https://github.com/ColinHebert)\n- [Georges Discry](https://github.com/gdiscry)\n- [Xavier Cambar](https://github.com/xcambar)\n\n[1]: https://tmux.github.io/\n[2]: https://github.com/sorin-ionescu/prezto/issues/62\n[3]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard\n[4]: https://github.com/mxcl/homebrew\n[5]: https://github.com/sorin-ionescu/prezto/issues\n[6]: https://iterm2.com\n[7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration\n"
  },
  {
    "path": "modules/tmux/init.zsh",
    "content": "#\n# Defines tmux aliases and provides for auto launching it at start-up.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Colin Hebert <hebert.colin@gmail.com>\n#   Georges Discry <georges@discry.be>\n#   Xavier Cambar <xcambar@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[tmux] )); then\n  return 1\nfi\n\n#\n# Auto Start\n#\n\nif ([[ \"$TERM_PROGRAM\" = 'iTerm.app' ]] && \\\n  zstyle -t ':prezto:module:tmux:iterm' integrate \\\n); then\n  _tmux_iterm_integration='-CC'\nfi\n\nif [[ -z \"$TMUX\" && -z \"$EMACS\" && -z \"$VIM\" && -z \"$INSIDE_EMACS\" && -z \"$VSCODE_RESOLVING_ENVIRONMENT\" && \"$TERM_PROGRAM\" != \"vscode\" && \"$TERMINAL_EMULATOR\" != \"JetBrains-JediTerm\" ]] && ( \\\n  ( [[ -n \"$SSH_TTY\" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) ||\n  ( [[ -z \"$SSH_TTY\" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \\\n); then\n  tmux start-server\n\n  # Create a 'prezto' session if no session has been defined in tmux.conf.\n  if ! tmux has-session 2> /dev/null; then\n    zstyle -s ':prezto:module:tmux:session' name tmux_session || tmux_session='prezto'\n    tmux \\\n      new-session -d -s \"$tmux_session\" \\; \\\n      set-option -t \"$tmux_session\" destroy-unattached off &> /dev/null\n  fi\n\n  # Attach to the 'prezto' session or to the last session used. (detach first)\n  exec tmux $_tmux_iterm_integration attach-session -d\nfi\n\n#\n# Aliases\n#\n\nif ! zstyle -t ':prezto:module:tmux:alias' skip; then\n  alias tmuxa=\"tmux $_tmux_iterm_integration new-session -A\"\n  alias tmuxl='tmux list-sessions'\nfi\n"
  },
  {
    "path": "modules/utility/README.md",
    "content": "# Utility\n\nDefines general aliases and functions.\n\nThis module must be loaded _before_ the [_`completion`_][1] module so that the\nprovided completion definitions are loaded automatically by _`completion`_\nmodule.\n\n**Note:** Some of the utilities configured in this module might be provided via\nGNU utilities with incompatible arguments on non-GNU systems. In such cases,\nusing [_`gnu-utility`_][2] module is recommended and it must be loaded\n_before_ this module.\n\nTo elaborate, the relative order of loading the modules would be\n_`gnu-utility`_, _`utility`_ and _`completion`_.\n\n## Settings\n\n### Highlighting\n\nIf you have enabled color globally in _`${ZDOTDIR:-$HOME}/.zpreztorc`_, you may\ndisable it selectively for certain commands.\n\nTo disable `ls` color, add the following to _`${ZDOTDIR:-$HOME}/.zpreztorc`_.\nWhen coloring is disabled, type indicators (`\\*`, `/`, `=>`, `@`, `=`, `|`, `%`)\nwill be appended to entries.\n\n```sh\nzstyle ':prezto:module:utility:ls' color 'no'\n```\n\nTo disable GNU coreutils `ls` to list directories grouped first, add the\nfollowing line to _`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility:ls' dirs-first 'no'\n```\n\nTo disable `grep` highlighting, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility:grep' color 'no'\n```\n\nTo disable `diff` highlighting, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility:diff' color 'no'\n```\n\nTo disable `wdiff` highlighting, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility:wdiff' color 'no'\n```\n\nTo disable `make` highlighting, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility:make' color 'no'\n```\n\n### Download Helper\n\nTo configure the download helper to be used with alias `get`, add the following\nto _`${ZDOTDIR:-$HOME}/.zpreztorc`_, and replace `'<helper>'` with `'curl'`,\n`'wget'` or `'aria2c'`.\n\n```sh\nzstyle -s ':prezto:module:utility:download' helper '<helper>'\n```\n\n## Aliases\n\n### Disabled Spelling Correction\n\n- `ack`\n- `cd`\n- `cp`\n- `ebuild`\n- `gcc`\n- `gist`\n- `grep`\n- `heroku`\n- `ln`\n- `man`\n- `mkdir`\n- `mv`\n- `mysql`\n- `rm`\n\nTo disable all spelling corrections, add the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility' correct 'no'\n```\n\n### Disabled File Globbing\n\n- `bower`\n- `fc`\n- `find`\n- `ftp`\n- `history`\n- `locate`\n- `rake`\n- `rsync` (selectively enabled for local files)\n- `scp` (selectively enabled for local files)\n- `sftp`\n\n### General\n\n- `_` executes a command as another user (`sudo`).\n- `b` opens the default web browser.\n- `diffu` shorthand for `diff --unified`.\n- `e` opens the default editor.\n- `mkdir` creates directories, including intermediary directories.\n- `p` opens the default pager.\n- `po` removes a directory from the stack and changes to it (`popd`).\n- `pu` changes the directory and pushes the old directory onto the stack\n  (`pushd`).\n- `sa` search aliases for a word.\n- `type` displays all the attribute values of a shell parameter.\n\n### Files and Directories\n\n- `ls` lists with directories grouped first (GNU only).\n- `l` lists in one column, hidden files.\n- `ll` lists human readable sizes.\n- `lr` lists human readable sizes, recursively.\n- `la` lists human readable sizes, hidden files.\n- `lm` lists human readable sizes, hidden files through pager.\n- `lx` lists sorted by extension (GNU only).\n- `lk` lists sorted by size, largest last.\n- `lt` lists sorted by date, most recent last.\n- `lc` lists sorted by date, most recent last, shows change time.\n- `lu` lists sorted by date, most recent last, shows access time.\n\n### macOS Everywhere\n\n- `o` opens files and directories (`open` or `xdg-open`).\n- `get` downloads files (`curl`, `wget` or `aria2c`).\n- `pbcopy` copies to the pasteboard (`pbcopy`, `xclip` or `xsel`).\n- `pbpaste` pastes from the pasteboard (`pbcopy`, `xclip` or `xsel`).\n- `pbc` copies to the pasteboard (`pbcopy`).\n- `pbp` pastes from the pasteboard (`pbpaste`).\n\n### Resource Usage\n\n- `df` displays free disk space using human readable units (aliases to `pydf`,\n  if installed).\n- `du` displays disk usage using human readable units.\n- `top` displays information about processes.\n- `topc` displays information about processes sorted by CPU usage.\n- `topm` displays information about processes sorted by RAM usage.\n\n### Safe ops\n\nBy default, `cp`,`ln`, `mv` and `rm` are aliased to their interactive variants.\nIf this is not desired, it can be disabled by adding the following line to\n_`${ZDOTDIR:-$HOME}/.zpreztorc`_:\n\n```sh\nzstyle ':prezto:module:utility' safe-ops 'no'.\n```\n\nIn addition, the following aliases have been added:\n\n- `cpi` copies files and directories interactively.\n- `lni` links files and directories interactively.\n- `mvi` moves files and directories interactively.\n- `rmi` removes files and directories interactively.\n\n### Miscellaneous\n\n- `http-serve` serves a directory via HTTP.\n\n## Functions\n\n### General\n\n- `slit` prints columns _1, 2, 3 ... n_.\n\n### Files and Directories\n\n- `cdls` changes to a directory and lists its contents.\n- `dut` displays the grand total disk usage using human readable units.\n- `find-exec` finds files and executes a command on them.\n- `mkdcd` makes a directory and changes to it.\n- `popdls` pops an entry off the directory stack and lists its contents.\n- `pushdls` pushes an entry onto the directory stack and lists its contents.\n- `noremoteglob` enable local path globbing but disable remote path globbing.\n\n### Developer\n\n- `diff` highlights diff output (requires `colordiff`).\n- `make` highlights make output (requires `colormake`).\n- `wdiff` highlights wdiff output (requires `wdiff` or `git`).\n\n### Resource usage\n\n- `psu` displays user owned processes status.\n\n### Search and Replace\n\n- `prep` provides a grep-like pattern search.\n- `psub` provides a sed-like pattern substitution.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][3]._\n\n- [Robby Russell](https://github.com/robbyrussell)\n- [Suraj N. Kurapati](https://github.com/sunaku)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: ../completion#readme\n[2]: ../gnu-utility#readme\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/utility/functions/_cdls_popdls_pushdls",
    "content": "#compdef cdls popdls pushdls\n#autoload\n\n#\n# Completes cdls, popdls, and pushdls.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_cd\n"
  },
  {
    "path": "modules/utility/functions/_dut",
    "content": "#compdef dut\n#autoload\n\n#\n# Completes dut.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_du\n"
  },
  {
    "path": "modules/utility/functions/_mkdcd",
    "content": "#compdef mkdcd\n#autoload\n\n#\n# Completes mkdcd.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\nlocal expl\n\n_wanted directories expl 'directory' _path_files -/ || _message 'directory'\n"
  },
  {
    "path": "modules/utility/functions/_noremoteglob",
    "content": "#compdef noremoteglob\n#autoload\n\n#\n# Completes noremoteglob.\n#\n# Authors:\n#   Indrajit Raychaudhuri <irc+code@indrajit.com>\n#\n\n_precommand\n"
  },
  {
    "path": "modules/utility/functions/_prep",
    "content": "#compdef prep\n#autoload\n\n#\n# Completes prep.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n  '-i[ignore case]' \\\n  '-m[^ and $ match the start and the end of a line]' \\\n  '-s[. matches newline]' \\\n  '-v[invert match]' \\\n  '-x[ignore whitespace and comments]' \\\n  '1::pattern:' \\\n  '2::files:_files' && return 0\n"
  },
  {
    "path": "modules/utility/functions/_psub",
    "content": "#compdef psub\n#autoload\n\n#\n# Completes psub.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \\\n  '-g[match globally]' \\\n  '-i[ignore case]' \\\n  '-m[^ and $ match the start and the end of a line]' \\\n  '-s[. matches newline]' \\\n  '-x[ignore whitespace and comments]' \\\n  '1::pattern:' \\\n  '2::replacement:' \\\n  '3::files:_files' && return 0\n"
  },
  {
    "path": "modules/utility/functions/diff",
    "content": "#\n# Highlights diff output.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function diff {\n\nif zstyle -t ':prezto:module:utility:diff' color \\\n      && [[ -t 1 ]] \\\n      && (( $+commands[colordiff] )); then\n  command diff \"$@\" | colordiff\n  return \"${pipestatus[1]}\"\nelse\n  command diff \"$@\"\nfi\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/dut",
    "content": "#\n# Displays the grand total disk usage using human readable units.\n#\n# Authors:\n#   Suraj N. Kurapati <sunaku@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function dut {\n\n(( $# == 0 )) && set -- *\n\nif [[ ${(@M)${(f)\"$(du --version 2>&1)\"}:#*GNU *} ]]; then\n  du -khsc \"$@\" | sort -h -r\nelse\n  local line size name\n  local -a record\n\n  while IFS=$'\\n' read line; do\n    record=(${(z)line})\n    size=\"$(($record[1] / 1024.0))\"\n    name=\"$record[2,-1]\"\n    printf \"%9.1LfM    %s\\n\" \"$size\" \"$name\"\n  done < <(du -kcs \"$@\") | sort -n -r\nfi\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/make",
    "content": "#\n# Highlights make output.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function make {\n\nif zstyle -t ':prezto:module:utility:make' color \\\n      && (( $+commands[colormake] )); then\n  command colormake \"$@\"\nelse\n  command make \"$@\"\nfi\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/prep",
    "content": "#\n# Provides a grep-like pattern search.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function prep {\n\nlocal usage pattern modifiers invert\n\nusage=\"$(\ncat <<EOF\nusage: $0 [-option ...] [--] pattern [file ...]\n\noptions:\n  -i    ignore case\n  -m    ^ and $ match the start and the end of a line\n  -s    . matches newline\n  -v    invert match\n  -x    ignore whitespace and comments\nEOF\n)\"\n\nwhile getopts ':imsxv' opt; do\n  case \"$opt\" in\n    (i) modifiers=\"${modifiers}i\" ;;\n    (m) modifiers=\"${modifiers}m\" ;;\n    (s) modifiers=\"${modifiers}s\" ;;\n    (x) modifiers=\"${modifiers}x\" ;;\n    (v) invert=\"yes\" ;;\n    (:)\n      print \"$0: option requires an argument: $OPTARG\" >&2\n      print \"$usage\" >&2\n      return 1\n    ;;\n    ([?])\n      print \"$0: unknown option: $OPTARG\" >&2\n      print \"$usage\" >&2\n      return 1\n    ;;\n  esac\ndone\nshift $(( $OPTIND - 1 ))\n\nif (( $# < 1 )); then\n  print \"$usage\" >&2\n  return 1\nfi\n\npattern=\"$1\"\nshift\n\nperl -n -l -e \"print if ${invert:+not} m/${pattern//\\//\\\\/}/${modifiers}\" \"$@\"\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/psub",
    "content": "#\n# Provides a sed-like pattern substitution.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function psub {\n\nlocal usage pattern replacement modifiers\n\nusage=\"$(\ncat <<EOF\nusage: $0 [-option ...] [--] pattern replacement [file ...]\n\noptions:\n  -g    match globally\n  -i    ignore case\n  -m    ^ and $ match the start and the end of a line\n  -s    . matches newline\n  -x    ignore whitespace and comments\nEOF\n)\"\n\nwhile getopts ':gimsx' opt; do\n  case \"$opt\" in\n    (g) modifiers=\"${modifiers}g\" ;;\n    (i) modifiers=\"${modifiers}i\" ;;\n    (m) modifiers=\"${modifiers}m\" ;;\n    (s) modifiers=\"${sodifiers}s\" ;;\n    (x) modifiers=\"${modifiers}x\" ;;\n    (:)\n      print \"$0: option requires an argument: $OPTARG\" >&2\n      print \"$usage\" >&2\n      return 1\n    ;;\n    ([?])\n      print \"$0: unknown option: $OPTARG\" >&2\n      print \"$usage\" >&2\n      return 1\n    ;;\n  esac\ndone\nshift $(( $OPTIND - 1 ))\n\nif (( $# < 2 )); then\n  print \"$usage\" >&2\n  return 1\nfi\n\npattern=\"$1\"\nreplacement=\"$2\"\nrepeat 2 shift\n\nperl -i'.orig' -n -l -e \"s/${pattern//\\//\\\\/}/${replacement//\\//\\\\/}/${modifiers}; print\" \"$@\"\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/wdiff",
    "content": "#\n# Highlights wdiff output.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#   Indrajit Raychaudhuri <irc@indrajit.com>\n#\n\n# function wdiff {\n\nif zstyle -t ':prezto:module:utility:wdiff' color; then\n  if (( $+commands[wdiff] )); then\n    command wdiff \\\n          --avoid-wraps \\\n          --start-delete=\"$(print -n $FG[red])\" \\\n          --end-delete=\"$(print -n $FG[none])\" \\\n          --start-insert=\"$(print -n $FG[green])\" \\\n          --end-insert=\"$(print -n $FG[none])\" \\\n          \"$@\" \\\n      | sed 's/^\\(@@\\( [+-][[:digit:]]*,[[:digit:]]*\\)\\{2\\} @@\\)$/;5;6m\\10m/g'\n  elif (( $+commands[git] )); then\n    command git --no-pager diff --no-ext-diff --no-index --color=auto --color-words \"$@\"\n  else\n    command wdiff \"$@\"\n  fi\nelif (( ! $+commands[wdiff] && $+commands[git] )); then\n    command git --no-pager diff --no-ext-diff --no-index --color=never \"$@\"\nelse\n  command wdiff \"$@\"\nfi\n\n# }\n"
  },
  {
    "path": "modules/utility/functions/zsh-help",
    "content": "#\n# Provides a much easier way to search and access ZSH's manual. First checks for\n# terms at the start of the manual, then checks if it's at start of a line allowing\n# whitespace.\n#\n# Authors:\n#   Samantha McVey <samantham@posteo.net>\n#\n\n# function zsh-help {\n\nlocal usage=\"$(\ncat <<EOF\nusage: $0 [--help] [--zsh-help-debug] [--all] search term(s)\nOptions:\n    --all - search for the term anywhere, not just at the start of a line.\n    --help - show this help message\n    --zsh-help-debug - print out the regex search choosenq instead of searching\nLooks up things in the zsh documentation. --all must come after --zsh-help-debug\nif used together.\nUses less as the pager. Press 'n' to search forward 'N' to search backwards.\nCase is ignored unless capital letters appear in the search term.\nEOF\n)\"\n#function zsh-help {\n    function _zsh-help-join { # Joins the arguments into a string delimited by $separator\n        local separator=$1;\n        local arr=$*;\n        arr=${arr:${#separator}+1}; # < Line needed so result doesn't start with\n        arr=${arr// /$separator};   # a separator.\n        <<<$arr\n    }\n    local case='-i'; local section='ZSHALL'; local debug=''; local pattern=''\n    function _zsh-help-try-query {\n        local case=\"$1\"; local pattern=\"$2\"; local i=''\n        local array=( ZSHBUILTINS ZSHALL ZSHMODULES )\n        for i in ${array}; do\n            if [[ ${debug} ]]; then printf \"Looking in %s for: %s %s\\n\" \"${i}\" \"${case}\" \"${pattern}\" 1>&2; fi\n            if man --pager='' ${i} | grep -E ${case} \"${pattern}\" > /dev/null; then\n                printf \"%s\" \"${i}\"; return 0;\n            fi\n        done\n        return 1\n    }\n    # By default search only things at start of line\n    local first_prefix='^'\n    local prefix='^\\s*'\n    if [[ ${1} == '--zsh-help-debug' ]]; then\n        shift; debug=1\n    fi\n    if [[ ${1} == \"--all\" ]]; then\n        shift; first_prefix='' # We're searching everything, so remove the prefix\n    fi\n    if [[ $# < 1 || $1 == \"--help\" ]]; then\n        printf \"%s\\n\" \"${usage}\"\n        unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope\n        return 1\n    fi\n    if [[ ${1} == \"test\" && $# == 1 ]]; then\n        case=''\n        pattern='^CONDITIONAL EXPRESSIONS$'\n    elif [[ ($1 == \"-eq\" || $1 == \"-ne\" || $1 == \"-lt\" || $1 == \"-gt\" || $1 == \"-le\" || $1 == \"-ge\") && $# == 1 ]]; then\n        case=''\n        pattern=\"${prefix}exp1\\s+${1}\\s+exp2\"\n    elif [[ $1 == 'zstyle' ]]; then\n        pattern=$(_zsh-help-join '\\s+' \"$@\")\n        section=ZSHMODULES\n    fi\n    # If it wasn't one of the special-cased things, check ZSHBUILTINS first. If\n    # not found there, we will search ZSHALL\n    if [[ ${pattern} == \"\" ]]; then\n        pattern=\"$(_zsh-help-join '\\s+' \"$@\")\"\n        # search for sections at the start of the man page first\n        section=$(_zsh-help-try-query \"${case}\" \"${first_prefix}${pattern}\")\n        # If it exists there, keep ZSHBUILTINS as the section\n        if (( $? == 0 )); then\n            pattern=\"${first_prefix}${pattern}\"\n        elif [[ \"${prefix}\" ]]; then\n            # if not found, search for the term preceeded by whitetext\n            section=$(_zsh-help-try-query \"${case}\" \"${prefix}${pattern}\")\n            if (( $? == 0 )); then\n                pattern=\"${prefix}${pattern}\"\n            else\n                pattern=\"\"\n            fi\n        fi\n        if [[ ! ${pattern} ]]; then  # Otherwise we use zshall\n            printf \"Can't find term\\n\" 2>&1\n            unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope\n            return 1;\n        fi\n    fi\n    local command=\"man --pager=\\\"less ${case} -p '${pattern}'\\\" \\\"${section}\\\"\"\n    if [[ ${debug} ]]; then\n        printf \"\\nFinal search term is:\\n\"; printf \"%s\\n\" \"${command}\";\n    else\n        eval $command\n    fi\n    local rtrn=$?\n    unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope\n    return $?\n#}\n"
  },
  {
    "path": "modules/utility/init.zsh",
    "content": "#\n# Defines general aliases and functions.\n#\n# Authors:\n#   Robby Russell <robby@planetargon.com>\n#   Suraj N. Kurapati <sunaku@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Load dependencies.\npmodload 'helper' 'spectrum'\n\n# Correct commands.\nif zstyle -T ':prezto:module:utility' correct; then\n  setopt CORRECT\nfi\n\n# Load 'run-help' function.\nautoload -Uz run-help-{ip,openssl,sudo}\n\n#\n# Aliases\n#\n\n# Disable correction.\nalias ack='nocorrect ack'\nalias cd='nocorrect cd'\nalias cp='nocorrect cp'\nalias ebuild='nocorrect ebuild'\nalias gcc='nocorrect gcc'\nalias gist='nocorrect gist'\nalias grep='nocorrect grep'\nalias heroku='nocorrect heroku'\nalias ln='nocorrect ln'\nalias man='nocorrect man'\nalias mkdir='nocorrect mkdir'\nalias mv='nocorrect mv'\nalias mysql='nocorrect mysql'\nalias rm='nocorrect rm'\n\n# Disable globbing.\nalias bower='noglob bower'\nalias fc='noglob fc'\nalias find='noglob find'\nalias ftp='noglob ftp'\nalias history='noglob history'\nalias locate='noglob locate'\nalias rake='noglob rake'\nalias rsync='noglob rsync'\nalias scp='noglob scp'\nalias sftp='noglob sftp'\n\n# Define general aliases.\nalias _='sudo'\nalias b='${(z)BROWSER}'\n\nalias diffu=\"diff --unified\"\nalias e='${(z)VISUAL:-${(z)EDITOR}}'\nalias mkdir=\"${aliases[mkdir]:-mkdir} -p\"\nalias p='${(z)PAGER}'\nalias po='popd'\nalias pu='pushd'\nalias sa='alias | grep -i'\nalias type='type -a'\n\n# Safe ops. Ask the user before doing anything destructive.\nalias cpi=\"${aliases[cp]:-cp} -i\"\nalias lni=\"${aliases[ln]:-ln} -i\"\nalias mvi=\"${aliases[mv]:-mv} -i\"\nalias rmi=\"${aliases[rm]:-rm} -i\"\nif zstyle -T ':prezto:module:utility' safe-ops; then\n  alias cp=\"${aliases[cp]:-cp} -i\"\n  alias ln=\"${aliases[ln]:-ln} -i\"\n  alias mv=\"${aliases[mv]:-mv} -i\"\n  alias rm=\"${aliases[rm]:-rm} -i\"\nfi\n\n# ls\nif [[ ${(@M)${(f)\"$(ls --version 2>&1)\"}:#*(GNU|lsd|uutils) *} ]]; then\n  # GNU Core Utilities\n\n  if zstyle -T ':prezto:module:utility:ls' dirs-first; then\n    alias ls=\"${aliases[ls]:-ls} --group-directories-first\"\n  fi\n\n  if zstyle -t ':prezto:module:utility:ls' color; then\n    # Define colors for GNU ls if they're not already defined\n    if (( ! $+LS_COLORS )); then\n      # Try dircolors when available\n      if is-callable 'dircolors'; then\n        eval \"$(dircolors --sh $HOME/.dir_colors(N))\"\n      else\n        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:'\n      fi\n    fi\n\n    alias ls=\"${aliases[ls]:-ls} --color=auto\"\n  else\n    alias ls=\"${aliases[ls]:-ls} -F\"\n  fi\nelse\n  # BSD Core Utilities\n\n  if zstyle -t ':prezto:module:utility:ls' color; then\n    # Define colors for BSD ls if they're not already defined\n    if (( ! $+LSCOLORS )); then\n      export LSCOLORS='exfxcxdxbxGxDxabagacad'\n    fi\n\n    alias ls=\"${aliases[ls]:-ls} -G\"\n  else\n    alias ls=\"${aliases[ls]:-ls} -F\"\n  fi\nfi\n\nalias l='ls -1A'         # Lists in one column, hidden files.\nalias ll='ls -lh'        # Lists human readable sizes.\nalias lr='ll -R'         # Lists human readable sizes, recursively.\nalias la='ll -A'         # Lists human readable sizes, hidden files.\nalias lm='la | \"$PAGER\"' # Lists human readable sizes, hidden files through pager.\nalias lk='ll -Sr'        # Lists sorted by size, largest last.\nalias lt='ll -tr'        # Lists sorted by date, most recent last.\nalias lc='lt -c'         # Lists sorted by date, most recent last, shows change time.\nalias lu='lt -u'         # Lists sorted by date, most recent last, shows access time.\n\nif [[ ${(@M)${(f)\"$(ls --version 2>&1)\"}:#*GNU *} ]]; then\n  alias lx='ll -XB'      # Lists sorted by extension (GNU only).\nfi\n\n# Grep\nif zstyle -t ':prezto:module:utility:grep' color; then\n  export GREP_COLOR=${GREP_COLOR:-'37;45'}            # BSD.\n  export GREP_COLORS=${GREP_COLORS:-\"mt=$GREP_COLOR\"} # GNU.\n\n  alias grep=\"${aliases[grep]:-grep} --color=auto\"\nfi\n\n# macOS Everywhere\nif is-darwin; then\n  alias o='open'\nelif is-cygwin; then\n  alias o='cygstart'\n  alias pbcopy='tee > /dev/clipboard'\n  alias pbpaste='cat /dev/clipboard'\nelif is-termux; then\n  alias o='termux-open'\n  alias pbcopy='termux-clipboard-set'\n  alias pbpaste='termux-clipboard-get'\nelse\n  alias o='xdg-open'\n\n  if (( $+commands[xclip] )); then\n    alias pbcopy='xclip -selection clipboard -in'\n    alias pbpaste='xclip -selection clipboard -out'\n  elif (( $+commands[xsel] )); then\n    alias pbcopy='xsel --clipboard --input'\n    alias pbpaste='xsel --clipboard --output'\n  fi\nfi\n\nalias pbc='pbcopy'\nalias pbp='pbpaste'\n\n# File Download\nzstyle -s ':prezto:module:utility:download' helper '_download_helper' || _download_helper='curl'\n\ntypeset -A _download_helpers=(\n  aria2c  'aria2c --continue --remote-time --max-tries=0'\n  curl    'curl --continue-at - --location --progress-bar --remote-name --remote-time'\n  wget    'wget --continue --progress=bar --timestamping'\n)\n\nif (( $+commands[$_download_helper] && $+_download_helpers[$_download_helper] )); then\n  alias get=\"$_download_helpers[$_download_helper]\"\nelif (( $+commands[curl] )); then\n  alias get=\"$_download_helpers[curl]\"\nfi\n\nunset _download_helper{,s}\n\n# Resource Usage\nalias df='df -kh'\nalias du='du -kh'\n\nif is-darwin || is-bsd; then\n  alias topc='top -o cpu'\n  alias topm='top -o vsize'\nelse\n  alias topc='top -o %CPU'\n  alias topm='top -o %MEM'\nfi\n\n# Miscellaneous\n\n# Serves a directory via HTTP.\nif (( $#commands[(i)python(|[23])] )); then\n  autoload -Uz is-at-least\n  if (( $+commands[python3] )); then\n    alias http-serve='python3 -m http.server'\n  elif (( $+commands[python2] )); then\n    alias http-serve='python2 -m SimpleHTTPServer'\n  elif is-at-least 3 ${\"$(python --version 2>&1)\"[(w)2]}; then\n    alias http-serve='python -m http.server'\n  else\n    alias http-serve='python -m SimpleHTTPServer'\n  fi\nfi\n\n#\n# Functions\n#\n\n# Makes a directory and changes to it.\nfunction mkdcd {\n  [[ -n \"$1\" ]] && mkdir -p \"$1\" && builtin cd \"$1\"\n}\n\n# Changes to a directory and lists its contents.\nfunction cdls {\n  builtin cd \"$argv[-1]\" && ls \"${(@)argv[1,-2]}\"\n}\n\n# Pushes an entry onto the directory stack and lists its contents.\nfunction pushdls {\n  builtin pushd \"$argv[-1]\" && ls \"${(@)argv[1,-2]}\"\n}\n\n# Pops an entry off the directory stack and lists its contents.\nfunction popdls {\n  builtin popd \"$argv[-1]\" && ls \"${(@)argv[1,-2]}\"\n}\n\n# Prints columns 1 2 3 ... n.\nfunction slit {\n  awk \"{ print ${(j:,:):-\\$${^@}} }\"\n}\n\n# Finds files and executes a command on them.\nfunction find-exec {\n  find . -type f -iname \"*${1:-}*\" -exec \"${2:-file}\" '{}' \\;\n}\n\n# Displays user owned processes status.\nfunction psu {\n  ps -U \"${1:-$LOGNAME}\" -o 'pid,%cpu,%mem,command' \"${(@)argv[2,-1]}\"\n}\n\n# Enables globbing selectively on path arguments.\n# Globbing is enabled on local paths (starting in '/' and './') and disabled\n# on remote paths (containing ':' but not starting in '/' and './'). This is\n# useful for programs that have their own globbing for remote paths.\n# Currently, this is used by default for 'rsync' and 'scp'.\n# Example:\n#   - Local: '*.txt', './foo:2017*.txt', '/var/*:log.txt'\n#   - Remote: user@localhost:foo/\n#\n# NOTE: This function is buggy and is not used anywhere until we can make sure\n# it's fixed. See https://github.com/sorin-ionescu/prezto/issues/1443 and\n# https://github.com/sorin-ionescu/prezto/issues/1521 for more information.\nfunction noremoteglob {\n  local -a argo\n  local cmd=\"$1\"\n  for arg in ${argv:2}; do case $arg in\n    ( ./* ) argo+=( ${~arg} ) ;; # local relative, glob\n    (  /* ) argo+=( ${~arg} ) ;; # local absolute, glob\n    ( *:* ) argo+=( ${arg}  ) ;; # remote, noglob\n    (  *  ) argo+=( ${~arg} ) ;; # default, glob\n  esac; done\n  command $cmd \"${(@)argo}\"\n}\n"
  },
  {
    "path": "modules/wakeonlan/README.md",
    "content": "# Wake-on-LAN\n\nThis module provides a wrapper around the [wakeonlan][1] tool.\n\n## Usage\n\nTo use this wrapper, create the _`~/.wakeonlan`_ directory, and place in it one\nfile for each device you would like to be able to wake. Give the file a name\nthat describes the device, such as its hostname.\n\nEach file should contain a line with the MAC address of the target device and\nthe network broadcast address. For instance, there might be a file\n_`~/.wakeonlan/leto`_ with the following contents:\n\n```conf\n00:11:22:33:44:55:66 192.168.0.255\n```\n\nTo wake that device, use the following command:\n\n```console\nwake leto\n```\n\nFor more information on the configuration file format, read the\n[wakeonlan man page][2].\n\n## Authors\n\n_The authors of this module should be contacted via [issue tracker][3]._\n\n- [Paul Dann](https://github.com/giddie)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: http://gsd.di.uminho.pt/jpo/software/wakeonlan/\n[2]: https://man.cx/wakeonlan\n[3]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/wakeonlan/functions/_wake",
    "content": "#compdef wake\n#autoload\n\n#\n# Completes wake.\n#\n# Authors:\n#   Paul Gideon Dann <pdgiddie@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n_arguments \"1:device to wake:_files -W '$HOME/.wakeonlan'\" && return 0\n"
  },
  {
    "path": "modules/wakeonlan/functions/wake",
    "content": "#\n# Wakes devices via wakeonlan.\n#\n# Authors:\n#   Paul Gideon Dann <pdgiddie@gmail.com>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# function wake {\n\nlocal config_file=\"$HOME/.wakeonlan/$1\"\nif [[ ! -s \"$config_file\" ]]; then\n  print \"$0: invalid device file: $1\" >&2\n  return 1\nfi\n\nif (( ! $+commands[wakeonlan] )); then\n  print \"$0: command not found: wakeonlan\" >&2\n  return 1\nfi\n\nwakeonlan -f \"$config_file\"\n\n# }\n"
  },
  {
    "path": "modules/yum/README.md",
    "content": "# Yum\n\nDefines [_yum_][1] aliases.\n\n## Aliases\n\n- `yumc` removes package(s) and leaves.\n- `yumi` installs package(s).\n- `yumh` displays history.\n- `yuml` lists packages.\n- `yumL` lists installed packages.\n- `yumq` displays package information.\n- `yumr` removes package(s).\n- `yums` searches for a package.\n- `yumu` updates packages.\n- `yumU` upgrades packages.\n\n## Authors\n\n_The authors of this module should be contacted via the [issue tracker][2]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: http://yum.baseurl.org\n[2]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "modules/yum/init.zsh",
    "content": "#\n# Defines yum aliases.\n#\n# Authors:\n#   Simon <contact@saimon.org>\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Return if requirements are not found.\nif (( ! $+commands[yum] )); then\n  return 1\nfi\n\n#\n# Aliases\n#\n\nalias yumc='sudo yum clean all'    # Cleans the cache.\nalias yumh='yum history'           # Displays history.\nalias yumi='sudo yum install'      # Installs package(s).\nalias yuml='yum list'              # Lists packages.\nalias yumL='yum list installed'    # Lists installed packages.\nalias yumq='yum info'              # Displays package information.\nalias yumr='sudo yum remove'       # Removes package(s).\nalias yums='yum search'            # Searches for a package.\nalias yumu='sudo yum update'       # Updates packages.\nalias yumU='sudo yum upgrade'      # Upgrades packages.\n"
  },
  {
    "path": "runcoms/README.md",
    "content": "# Configuration Files\n\nZsh has several system-wide and user-local configuration files.\n\nAdditionally, Prezto has one user-local configuration file.\n\nSystem-wide configuration files are installation-dependent but are installed\nin _`/etc`_ by default.\n\nUser-local configuration files have the same name as their global counterparts\nbut are prefixed with a dot (hidden). Zsh looks for these files in the path\nstored in the `$ZDOTDIR` environment variable. However, if said variable is\nnot defined, Zsh will use the user's home directory.\n\n## File Descriptions\n\nThe [configuration files][1] are read in the following order:\n\n1.  _`/etc/zshenv`_\n2.  _`${ZDOTDIR:-$HOME}/.zshenv`_\n3.  _`/etc/zprofile`_\n4.  _`${ZDOTDIR:-$HOME}/.zprofile`_\n5.  _`/etc/zshrc`_\n6.  _`${ZDOTDIR:-$HOME}/.zshrc`_\n7.  _`${ZDOTDIR:-$HOME}/.zpreztorc`_\n8.  _`/etc/zlogin`_\n9.  _`${ZDOTDIR:-$HOME}/.zlogin`_\n10. _`${ZDOTDIR:-$HOME}/.zlogout`_\n11. _`/etc/zlogout`_\n\n### zshenv\n\nThis file is sourced by all instances of Zsh, and thus, it should be kept as\nsmall as possible and should only define environment variables.\n\n### zprofile\n\nThis file is similar to _zlogin_, but it is sourced before _zshrc_. It was added\nfor [KornShell][2] fans. See the description of _zlogin_ below for what it may\ncontain.\n\n_zprofile_ and _zlogin_ are not meant to be used together but can be done so.\n\n### zshrc\n\nThis file is sourced by interactive shells. It should define aliases, functions,\nshell options, and key bindings.\n\n### zpreztorc\n\nThis file configures Prezto.\n\n### zlogin\n\nThis file is sourced by login shells after _zshrc_. Thus, it should contain\ncommands that need to execute at login. It is usually used for messages such as\n[_`fortune`_][3], [_`msgs`_][4], or for the creation of files.\n\nThis is not the file to define aliases, functions, shell options, and key\nbindings. It should not change the shell environment.\n\n### zlogout\n\nThis file is sourced by login shells during logout. It should be used for\ndisplaying messages and for deletion of files.\n\n## Authors\n\n_The authors of these files should be contacted via the [issue tracker][5]._\n\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n\n[1]: http://zsh.sourceforge.net/Intro/intro_3.html#SEC3\n[2]: https://www.kornshell.com\n[3]: https://en.wikipedia.org/wiki/Fortune_(Unix)\n[4]: https://www.manpagez.com/man/1/msgs\n[5]: https://github.com/sorin-ionescu/prezto/issues\n"
  },
  {
    "path": "runcoms/zlogin",
    "content": "#\n# Executes commands at login post-zshrc.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Execute code that does not affect the current session in the background.\n{\n  # Compile the completion dump to increase startup speed.\n  zcompdump=\"${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump\"\n  if [[ -s \"$zcompdump\" && (! -s \"${zcompdump}.zwc\" || \"$zcompdump\" -nt \"${zcompdump}.zwc\") ]]; then\n    if command mkdir \"${zcompdump}.zwc.lock\" 2>/dev/null; then\n      zcompile \"$zcompdump\"\n      command rmdir  \"${zcompdump}.zwc.lock\" 2>/dev/null\n    fi\n  fi\n} &!\n\n# Execute code only if STDERR is bound to a TTY.\nif [[ -o INTERACTIVE && -t 2 ]]; then\n\n  # Print a random, hopefully interesting, adage.\n  if (( $+commands[fortune] )); then\n    fortune -s\n    print\n  fi\n\nfi >&2\n"
  },
  {
    "path": "runcoms/zlogout",
    "content": "#\n# Executes commands at logout.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Execute code only if STDERR is bound to a TTY.\n[[ -o INTERACTIVE && -t 2 ]] && {\n\nSAYINGS=(\n    \"So long and thanks for all the fish.\\n  -- Douglas Adams\"\n    \"Good morning! And in case I don't see ya, good afternoon, good evening and goodnight.\\n  --Truman Burbank\"\n)\n\n# Print a randomly-chosen message:\necho $SAYINGS[$(($RANDOM % $#SAYINGS + 1))]\n\n} >&2\n"
  },
  {
    "path": "runcoms/zpreztorc",
    "content": "#\n# Sets Prezto options.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# General\n#\n\n# Set case-sensitivity for completion, history lookup, etc.\n# zstyle ':prezto:*:*' case-sensitive 'yes'\n\n# Color output (auto set to 'no' on dumb terminals).\nzstyle ':prezto:*:*' color 'yes'\n\n# Add additional directories to load prezto modules from\n# zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib\n\n# Allow module overrides when pmodule-dirs causes module name collisions\n# zstyle ':prezto:load' pmodule-allow-overrides 'yes'\n\n# Set the Zsh modules to load (man zshmodules).\n# zstyle ':prezto:load' zmodule 'attr' 'stat'\n\n# Set the Zsh functions to load (man zshcontrib).\n# zstyle ':prezto:load' zfunction 'zargs' 'zmv'\n\n# Set the Prezto modules to load (browse modules).\n# The order matters.\nzstyle ':prezto:load' pmodule \\\n  'environment' \\\n  'terminal' \\\n  'editor' \\\n  'history' \\\n  'directory' \\\n  'spectrum' \\\n  'utility' \\\n  'completion' \\\n  'history-substring-search' \\\n  'prompt'\n\n#\n# Autosuggestions\n#\n\n# Set the query found color.\n# zstyle ':prezto:module:autosuggestions:color' found ''\n\n#\n# Completions\n#\n\n# Set the entries to ignore in static '/etc/hosts' for host completion.\n# zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \\\n#   '0.0.0.0' '127.0.0.1'\n\n#\n# Editor\n#\n\n# Set the characters that are considered to be part of a word.\n# zstyle ':prezto:module:editor' wordchars '*?_-.[]~&;!#$%^(){}<>'\n\n# Set the key mapping style to 'emacs' or 'vi'.\nzstyle ':prezto:module:editor' key-bindings 'emacs'\n\n# Auto convert .... to ../..\n# zstyle ':prezto:module:editor' dot-expansion 'yes'\n\n# Allow the zsh prompt context to be shown.\n#zstyle ':prezto:module:editor' ps-context 'yes'\n\n#\n# Git\n#\n\n# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'.\n# zstyle ':prezto:module:git:status:ignore' submodules 'all'\n\n#\n# GNU Utility\n#\n\n# Set the command prefix on non-GNU systems.\n# zstyle ':prezto:module:gnu-utility' prefix 'g'\n\n#\n# History\n#\n\n# Set the file to save the history in when an interactive shell exits.\n# zstyle ':prezto:module:history' histfile \"${ZDOTDIR:-$HOME}/.zsh_history\"\n\n# Set the maximum  number  of  events  stored  in  the  internal history list.\n# zstyle ':prezto:module:history' histsize 10000\n\n# Set the maximum number of history events to save in the history file.\n# zstyle ':prezto:module:history' savehist 10000\n\n#\n# History Substring Search\n#\n\n# Set the query found color.\n# zstyle ':prezto:module:history-substring-search:color' found ''\n\n# Set the query not found color.\n# zstyle ':prezto:module:history-substring-search:color' not-found ''\n\n# Set the search globbing flags.\n# zstyle ':prezto:module:history-substring-search' globbing-flags ''\n\n# Enable search case-sensitivity.\n# zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'\n\n# Enable search for fuzzy matches.\n# zstyle ':prezto:module:history-substring-search' fuzzy 'yes'\n\n# Enable search uniqueness.\n# zstyle ':prezto:module:history-substring-search' unique 'yes'\n\n# Enable prefixed search.\n# zstyle ':prezto:module:history-substring-search' prefixed 'yes'\n\n#\n# macOS\n#\n\n# Set the keyword used by `mand` to open man pages in Dash.app\n# zstyle ':prezto:module:osx:man' dash-keyword 'manpages'\n\n#\n# Pacman\n#\n\n# Set the Pacman frontend.\n# zstyle ':prezto:module:pacman' frontend 'yaourt'\n\n#\n# Prompt\n#\n\n# Set the prompt theme to load.\n# Setting it to 'random' loads a random theme.\n# Auto set to 'off' on dumb terminals.\nzstyle ':prezto:module:prompt' theme 'sorin'\n\n# Set the working directory prompt display length.\n# By default, it is set to 'short'. Set it to 'long' (without '~' expansion)\n# for longer or 'full' (with '~' expansion) for even longer prompt display.\n# zstyle ':prezto:module:prompt' pwd-length 'short'\n\n# Set the prompt to display the return code along with an indicator for non-zero\n# return codes. This is not supported by all prompts.\n# zstyle ':prezto:module:prompt' show-return-val 'yes'\n\n#\n# Python\n#\n\n# Auto switch the Python virtualenv on directory change.\n# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'\n\n# Automatically initialize virtualenvwrapper if pre-requisites are met.\n# zstyle ':prezto:module:python:virtualenv' initialize 'yes'\n\n#\n# Ruby\n#\n\n# Auto switch the Ruby version on directory change.\n# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes'\n\n#\n# Screen\n#\n\n# Auto start a session when Zsh is launched in a local terminal.\n# zstyle ':prezto:module:screen:auto-start' local 'yes'\n\n# Auto start a session when Zsh is launched in a SSH connection.\n# zstyle ':prezto:module:screen:auto-start' remote 'yes'\n\n#\n# SSH\n#\n\n# Set the SSH identities to load into the agent.\n# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github'\n\n#\n# Syntax Highlighting\n#\n\n# Set syntax highlighters.\n# By default, only the main highlighter is enabled.\n# zstyle ':prezto:module:syntax-highlighting' highlighters \\\n#   'main' \\\n#   'brackets' \\\n#   'pattern' \\\n#   'line' \\\n#   'cursor' \\\n#   'root'\n#\n# Set syntax highlighting styles.\n# zstyle ':prezto:module:syntax-highlighting' styles \\\n#   'builtin' 'bg=blue' \\\n#   'command' 'bg=blue' \\\n#   'function' 'bg=blue'\n#\n# Set syntax pattern styles.\n# zstyle ':prezto:module:syntax-highlighting' pattern \\\n#   'rm*-rf*' 'fg=white,bold,bg=red'\n\n#\n# Terminal\n#\n\n# Auto set the tab and window titles.\n# zstyle ':prezto:module:terminal' auto-title 'yes'\n\n# Set the window title format.\n# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'\n\n# Set the tab title format.\n# zstyle ':prezto:module:terminal:tab-title' format '%m: %s'\n\n# Set the terminal multiplexer title format.\n# zstyle ':prezto:module:terminal:multiplexer-title' format '%s'\n\n#\n# Tmux\n#\n\n# Auto start a session when Zsh is launched in a local terminal.\n# zstyle ':prezto:module:tmux:auto-start' local 'yes'\n\n# Auto start a session when Zsh is launched in a SSH connection.\n# zstyle ':prezto:module:tmux:auto-start' remote 'yes'\n\n# Integrate with iTerm2.\n# zstyle ':prezto:module:tmux:iterm' integrate 'yes'\n\n# Set the default session name:\n# zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME'\n\n#\n# Utility\n#\n\n# Enabled safe options. This aliases cp, ln, mv and rm so that they prompt\n# before deleting or overwriting files. Set to 'no' to disable this safer\n# behavior.\n# zstyle ':prezto:module:utility' safe-ops 'yes'\n"
  },
  {
    "path": "runcoms/zprofile",
    "content": "#\n# Executes commands at login pre-zshrc.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n#\n# Browser\n#\n\nif [[ -z \"$BROWSER\" && \"$OSTYPE\" == darwin* ]]; then\n  export BROWSER='open'\nfi\n\n#\n# Editors\n#\n\nif [[ -z \"$EDITOR\" ]]; then\n  export EDITOR='nano'\nfi\nif [[ -z \"$VISUAL\" ]]; then\n  export VISUAL='nano'\nfi\nif [[ -z \"$PAGER\" ]]; then\n  export PAGER='less'\nfi\n\n#\n# Language\n#\n\nif [[ -z \"$LANG\" ]]; then\n  export LANG='en_US.UTF-8'\nfi\n\n#\n# Paths\n#\n\n# Ensure path arrays do not contain duplicates.\ntypeset -gU cdpath fpath mailpath path\n\n# Set the list of directories that cd searches.\n# cdpath=(\n#   $cdpath\n# )\n\n# Set the list of directories that Zsh searches for programs.\npath=(\n  $HOME/{,s}bin(N)\n  /opt/{homebrew,local}/{,s}bin(N)\n  /usr/local/{,s}bin(N)\n  $path\n)\n\n#\n# Less\n#\n\n# Set the default Less options.\n# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).\n# Remove -X to enable it.\nif [[ -z \"$LESS\" ]]; then\n  export LESS='-g -i -M -R -S -w -X -z-4'\nfi\n\n# Set the Less input preprocessor.\n# Try both `lesspipe` and `lesspipe.sh` as either might exist on a system.\nif [[ -z \"$LESSOPEN\" ]] && (( $#commands[(i)lesspipe(|.sh)] )); then\n  export LESSOPEN=\"| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-\"\nfi\n"
  },
  {
    "path": "runcoms/zshenv",
    "content": "#\n# Defines environment variables.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Ensure that a non-login, non-interactive shell has a defined environment.\nif [[ ( \"$SHLVL\" -eq 1 && ! -o LOGIN ) && -s \"${ZDOTDIR:-$HOME}/.zprofile\" ]]; then\n  source \"${ZDOTDIR:-$HOME}/.zprofile\"\nfi\n"
  },
  {
    "path": "runcoms/zshrc",
    "content": "#\n# Executes commands at the start of an interactive session.\n#\n# Authors:\n#   Sorin Ionescu <sorin.ionescu@gmail.com>\n#\n\n# Source Prezto.\nif [[ -s \"${ZDOTDIR:-$HOME}/.zprezto/init.zsh\" ]]; then\n  source \"${ZDOTDIR:-$HOME}/.zprezto/init.zsh\"\nfi\n\n# Customize to your needs...\n"
  }
]