diff --git a/.gitignore b/.gitignore index 2179469..b8c5ae7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ cache/ log/ -vim/.vim/plugged/** -vim/.vim/autoload/plug.vim -prezto -bash-it-fork +*.zwc +*.zwc.old +prezto/.zprezto/modules/*/cache.zsh +prezto/.zprezto/contrib \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 689cc22..0a8aa28 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,42 @@ [submodule "vim/.vim/bundle/Vundle.vim"] path = vim/.vim/bundle/Vundle.vim url = https://github.com/VundleVim/Vundle.vim.git +[submodule "modules/autosuggestions/external"] + path = prezto/.zprezto/modules/autosuggestions/external + url = https://github.com/zsh-users/zsh-autosuggestions.git +[submodule "modules/history-substring-search/external"] + path = prezto/.zprezto/modules/history-substring-search/external + url = https://github.com/zsh-users/zsh-history-substring-search.git +[submodule "modules/syntax-highlighting/external"] + path = prezto/.zprezto/modules/syntax-highlighting/external + url = https://github.com/zsh-users/zsh-syntax-highlighting.git +[submodule "modules/completion/external"] + path = prezto/.zprezto/modules/completion/external + url = https://github.com/zsh-users/zsh-completions.git +[submodule "modules/prompt/external/powerline"] + path = prezto/.zprezto/modules/prompt/external/powerline + url = https://github.com/davidjrice/prezto_powerline.git +[submodule "modules/prompt/external/agnoster"] + path = prezto/.zprezto/modules/prompt/external/agnoster + url = https://github.com/agnoster/agnoster-zsh-theme.git +[submodule "modules/prompt/functions/pure"] + path = prezto/.zprezto/modules/prompt/external/pure + url = https://github.com/sindresorhus/pure.git +[submodule "modules/fasd/external"] + path = prezto/.zprezto/modules/fasd/external + url = https://github.com/clvv/fasd.git +[submodule "modules/prompt/external/powerlevel9k"] + path = prezto/.zprezto/modules/prompt/external/powerlevel9k + url = https://github.com/bhilburn/powerlevel9k.git +[submodule "modules/history-search-multi-word"] + path = prezto/.zprezto/modules/history-search-multi-word + url = https://github.com/zdharma/history-search-multi-word +[submodule "modules/should-use/external"] + path = prezto/.zprezto/modules/should-use/external + url = https://github.com/MichaelAquilina/zsh-you-should-use.git +[submodule "modules/z/external"] + path = prezto/.zprezto/modules/z/external + url = https://github.com/sjl/z-zsh.git +[submodule "modules/q/q"] + path = prezto/.zprezto/modules/q/q + url = https://github.com/cal2195/q diff --git a/init.sh b/init.sh index 1337cb4..f0003fc 100755 --- a/init.sh +++ b/init.sh @@ -25,19 +25,19 @@ then fi #install spacevim +echo "Installing Space VIM!" mv "$HOME/.vim" "$HOME/.vimim_bk" mv "$HOME/.vimrc" "$HOME/.vimrc_bk" -curl -sLf https://spacevim.org/install.sh | bash -ln -sf ~/stevset/vim/init.toml ~/.SpaceVim.d/init.toml +bash <(curl -fsSL https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh) -#Install fonts -#if [[ -n "$SSH_CLIENT" ]] -#then -# echo "no fonts to install over ssh" -#else -# echo "Installing fonts for powerline" -# ./fonts.zsh -#fi +Install fonts +if [[ -n "$SSH_CLIENT" ]] +then + echo "no fonts to install over ssh" +else + echo "Installing fonts for powerline" + ./fonts.zsh +fi #init spacemacs in the background #if [ ! -d ~/.emacs.d ] diff --git a/prezto.zsh b/prezto.zsh index 218e955..edc5c5d 100755 --- a/prezto.zsh +++ b/prezto.zsh @@ -2,7 +2,7 @@ #Initializes Prezto # Clone Prezto -git clone --recursive https://Stefenauris@bitbucket.org/Stefenauris/prezto-fork.git "${ZDOTDIR:-$HOME}/stevset/prezto/.zprezto" +#git clone --recursive https://github.com/steveokard/prezto.git "${ZDOTDIR:-$HOME}/stevset/prezto/.zprezto" #Remove old stuff rm -rf ~/.zshrc ~/.zsh ~/.zprofile diff --git a/prezto/.zprezto/CONTRIBUTING.md b/prezto/.zprezto/CONTRIBUTING.md new file mode 100644 index 0000000..f4dc0d6 --- /dev/null +++ b/prezto/.zprezto/CONTRIBUTING.md @@ -0,0 +1,75 @@ +Contributing +------------ + +This project would not exist without all of its users and [contributors][1]. + +If you have ideas on how to make the configuration easier to maintain or +improve its performance, do not hesitate to fork and send pull requests. + +### Issue Reporting + + - Check that the issue has not already been reported. + - Check that the issue has not already been fixed in the latest code. + - Open an issue with a clear title and description in grammatically correct, + complete sentences. + +### Pull Request + + - Read [how to properly contribute to open source projects on GitHub][2]. + - Use a topic branch to easily amend a pull request later, if necessary. + - Write [good commit messages][3]. + - Squash commits on the topic branch before opening a pull request. + - Use the same coding style and spacing. + - Open a [pull request][4] that relates to but one subject with a clear + title and description in grammatically correct, complete sentences. + +#### Code Style + +This project follows the [Google Shell Style Guide][5] when possible. However, +there are a number of additional things to keep in mind. + + - Local variables should be used whenever possible. + - Prefer `zstyle` over environment variables for configuration. + - Prefer (( ... )) over [[ ... ]] for arithmetic expression. + - Use the function keyword to define functions. + - The 80 character hard limit can be waived for readability. + +#### Using an Alternative zprezto Directory + +To work on zprezto without messing with your current configuration: + +```sh +mkdir devel-zprezto +cd devel-zprezto +git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto +ZDOTDIR=$(pwd) +echo "Your development ZDOTDIR is $ZDOTDIR" +setopt EXTENDED_GLOB +for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do + ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" +done +``` + +Then to start zsh in this development environment you will run: + +```sh +ZDOTDIR=/path/to/devel-zprezto zsh +``` + +#### Modules + + - A *README.md* must be present. + - Large functions must be placed in a *functions* directory. + - Functions that take arguments must have completion. + +#### Themes + + - A screenshots section must be present in the file header. + - The pull request description must have [embedded screenshots][6]. + +[1]: https://github.com/sorin-ionescu/prezto/contributors +[2]: http://gun.io/blog/how-to-github-fork-branch-and-pull-request +[3]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +[4]: https://help.github.com/articles/using-pull-requests +[5]: https://google.github.io/styleguide/shell.xml +[6]: http://daringfireball.net/projects/markdown/syntax#img diff --git a/prezto/.zprezto/LICENSE b/prezto/.zprezto/LICENSE new file mode 100644 index 0000000..d417147 --- /dev/null +++ b/prezto/.zprezto/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2009-2011 Robby Russell and contributors +Copyright (c) 2011-2017 Sorin Ionescu and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/prezto/.zprezto/README.md b/prezto/.zprezto/README.md new file mode 100644 index 0000000..552784b --- /dev/null +++ b/prezto/.zprezto/README.md @@ -0,0 +1,136 @@ +Prezto — Instantly Awesome Zsh +============================== + +Prezto is the configuration framework for [Zsh][1]; it enriches the command line +interface environment with sane defaults, aliases, functions, auto completion, +and prompt themes. + +Installation +------------ + +Prezto will work with any recent release of Zsh, but the minimum required +version is 4.3.11. + + 1. Launch Zsh: + + ```console + zsh + ``` + + 2. Clone the repository: + + ```console + git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" + ``` + + 3. Create a new Zsh configuration by copying the Zsh configuration files + provided: + + ```sh + setopt EXTENDED_GLOB + for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do + ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" + done + ``` + + Note: If you already have any of the given configuration files, `ln` will + cause error. In simple cases you can load prezto by adding the line + `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to the bottom of your + `.zshrc` and keep the rest of your Zsh configuration intact. For more + complicated setups, it is recommended that you back up your original + configs and replace them with the provided prezto runcoms. + + 4. Set Zsh as your default shell: + + ```console + chsh -s /bin/zsh + ``` + + 5. Open a new Zsh terminal window or tab. + +### Troubleshooting + +If you are not able to find certain commands after switching to *Prezto*, +modify the `PATH` variable in *~/.zprofile* then open a new Zsh terminal +window or tab. + +Updating +-------- + +Run `zprezto-update` to automatically check if there is an update to zprezto. +If there are no file conflicts, zprezto and its submodules will be +automatically updated. If there are conflicts you will instructed to go into +the `$ZPREZTODIR` directory and resolve them yourself. + +To pull the latest changes and update submodules manually: + +```console +cd $ZPREZTODIR +git pull +git submodule update --init --recursive +``` + +Usage +----- + +Prezto has many features disabled by default. Read the source code and +accompanying README files to learn of what is available. + +### Modules + + 1. Browse */modules* to see what is available. + 2. Load the modules you need in *~/.zpreztorc* then open a new Zsh terminal + window or tab. + +### Themes + + 1. For a list of themes, type `prompt -l`. + 2. To preview a theme, type `prompt -p name`. + 3. Load the theme you like in *~/.zpreztorc* then open a new Zsh terminal + window or tab. + + ![sorin theme][2] + Note that the 'git' module may be required for special symbols to appear, + such as those on the right of the above image. Add `'git'` to the `pmodule` + list (under `zstyle ':prezto:load' pmodule \` in your *~/.zpreztorc*) to + enable this module. + +### External Modules + + 1. By default modules will be loaded from */modules* and */contrib*. + 2. Additional module directories can be added to the + `:prezto:load:pmodule-dirs` setting in *~/.zpreztorc*. + + Note that module names need to be unique or they will cause an error when + loading. + + ```sh + zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib + ``` + +Customization +------------- + +The project is managed via [Git][3]. It is highly recommended that you fork this +project; so, that you can commit your changes and push them to [GitHub][4] to +not lose them. If you do not know how to use Git, follow this [tutorial][5] and +bookmark this [reference][6]. + +Resources +--------- + +The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable. + +License +------- + +This project is licensed under the MIT License. + +[1]: http://www.zsh.org +[2]: http://i.imgur.com/nrGV6pg.png "sorin theme" +[3]: http://git-scm.com +[4]: https://github.com +[5]: http://gitimmersion.com +[6]: https://git.github.io/git-reference/ +[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf +[8]: http://grml.org/zsh/zsh-lovers.html diff --git a/prezto/.zprezto/init.zsh b/prezto/.zprezto/init.zsh new file mode 100644 index 0000000..99254bd --- /dev/null +++ b/prezto/.zprezto/init.zsh @@ -0,0 +1,191 @@ +# +# Initializes Prezto. +# +# Authors: +# Sorin Ionescu +# + +# +# Version Check +# + +# Check for the minimum supported version. +min_zsh_version='4.3.11' +if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then + printf "prezto: old shell detected, minimum required: %s\n" "$min_zsh_version" >&2 + return 1 +fi +unset min_zsh_version + +# zprezto convenience updater +# The function is surrounded by ( ) instead of { } so it starts in a subshell +# and won't affect the environment of the calling shell +function zprezto-update { + ( + function cannot-fast-forward { + local STATUS="$1" + [[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}" + printf "Unable to fast-forward the changes. You can fix this by " + printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}" + printf "to manually pull and possibly merge in changes\n" + } + cd -q -- "${ZPREZTODIR}" || return 7 + local orig_branch="$(git symbolic-ref HEAD 2> /dev/null | cut -d '/' -f 3)" + if [[ "$orig_branch" == "master" ]]; then + git fetch || return "$?" + local UPSTREAM=$(git rev-parse '@{u}') + local LOCAL=$(git rev-parse HEAD) + local REMOTE=$(git rev-parse "$UPSTREAM") + local BASE=$(git merge-base HEAD "$UPSTREAM") + if [[ $LOCAL == $REMOTE ]]; then + printf "There are no updates.\n" + return 0 + elif [[ $LOCAL == $BASE ]]; then + printf "There is an update available. Trying to pull.\n\n" + if git pull --ff-only; then + printf "Syncing submodules\n" + git submodule update --recursive + return $? + else + cannot-fast-forward + return 1 + fi + elif [[ $REMOTE == $BASE ]]; then + cannot-fast-forward "Commits in master that aren't in upstream." + return 1 + else + cannot-fast-forward "Upstream and local have diverged." + return 1 + fi + else + printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}" + printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}" + return 1 + fi + return 1 + ) +} +# +# Module Loader +# + +# Loads Prezto modules. +function pmodload { + local -a pmodules + local -a pmodule_dirs + local -a locations + local pmodule + local pmodule_location + local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)' + + # Load in any additional directories and warn if they don't exist + zstyle -a ':prezto:load' pmodule-dirs 'user_pmodule_dirs' + for user_dir in "$user_pmodule_dirs[@]"; do + if [[ ! -d "$user_dir" ]]; then + echo "$0: Missing user module dir: $user_dir" + fi + done + + pmodule_dirs=("$ZPREZTODIR/modules" "$ZPREZTODIR/contrib" "$user_pmodule_dirs[@]") + + # $argv is overridden in the anonymous function. + pmodules=("$argv[@]") + + # Load Prezto modules. + for pmodule in "$pmodules[@]"; do + if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then + continue + else + locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)}) + if (( ${#locations} > 1 )); then + print "$0: conflicting module locations: $locations" + continue + elif (( ${#locations} < 1 )); then + print "$0: no such module: $pmodule" + continue + fi + + # Grab the full path to this module + pmodule_location=${locations[1]} + + # Add functions to $fpath. + fpath=(${pmodule_location}/functions(/FN) $fpath) + + function { + local pfunction + + # Extended globbing is needed for listing autoloadable function directories. + setopt LOCAL_OPTIONS EXTENDED_GLOB + + # Load Prezto functions. + for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do + autoload -Uz "$pfunction" + done + } + + if [[ -s "${pmodule_location}/init.zsh" ]]; then + source "${pmodule_location}/init.zsh" + elif [[ -s "${pmodule_location}/${pmodule}.plugin.zsh" ]]; then + source "${pmodule_location}/${pmodule}.plugin.zsh" + fi + + if (( $? == 0 )); then + zstyle ":prezto:module:$pmodule" loaded 'yes' + else + # Remove the $fpath entry. + fpath[(r)${pmodule_location}/functions]=() + + function { + local pfunction + + # Extended globbing is needed for listing autoloadable function + # directories. + setopt LOCAL_OPTIONS EXTENDED_GLOB + + # Unload Prezto functions. + for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do + unfunction "$pfunction" + done + } + + zstyle ":prezto:module:$pmodule" loaded 'no' + fi + fi + done +} + +# +# Prezto Initialization +# + +# This finds the directory prezto is installed to so plugin managers don't need +# to rely on dirty hacks to force prezto into a directory. Additionally, it +# needs to be done here because inside the pmodload function ${0:h} evaluates to +# the current directory of the shell rather than the prezto dir. +ZPREZTODIR=${0:h} + +# Source the Prezto configuration file. +if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then + source "${ZDOTDIR:-$HOME}/.zpreztorc" +fi + +# Disable color and theme in dumb terminals. +if [[ "$TERM" == 'dumb' ]]; then + zstyle ':prezto:*:*' color 'no' + zstyle ':prezto:module:prompt' theme 'off' +fi + +# Load Zsh modules. +zstyle -a ':prezto:load' zmodule 'zmodules' +for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}" +unset zmodule{s,} + +# Autoload Zsh functions. +zstyle -a ':prezto:load' zfunction 'zfunctions' +for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction" +unset zfunction{s,} + +# Load Prezto modules. +zstyle -a ':prezto:load' pmodule 'pmodules' +pmodload "$pmodules[@]" +unset pmodules diff --git a/prezto/.zprezto/modules/README.md b/prezto/.zprezto/modules/README.md new file mode 100644 index 0000000..1ff4e61 --- /dev/null +++ b/prezto/.zprezto/modules/README.md @@ -0,0 +1,206 @@ +Modules +======= + +Load modules in *zpreztorc*. The order matters. + +```sh +zstyle ':prezto:load' pmodule 'environment' 'terminal' +``` + +Archive +------- + +Provides functions to list and extract archives. + +Autosuggestions +--------------- + +Integrates zsh-autosuggestions into Prezto. + +Command-Not-Found +----------------- + +Loads the command-not-found tool on macOS or Debian-based distributions. + +Completion +---------- + +Loads and configures tab completion and provides additional completions from +the zsh-completions project. + +Directory +--------- + +Sets directory options and defines directory aliases. + +DNF +--- + +Defines dnf aliases. + +Dpkg +---- + +Defines dpkg aliases and functions. + +Editor +------ + +Sets key bindings. + +Emacs +----- + +Enables Emacs dependency management. + +Environment +----------- + +Sets general shell options and defines environment variables. + +Fasd +---- + +Maintains a frequently used file and directory list for fast access. + +Git +--- + +Enhances the Git distributed version control system by providing aliases, +functions and by exposing repository status information to prompts. + +GNU Utility +----------- + +Provides for the interactive use of GNU utilities on non-GNU systems. + +GPG +--- + +Provides for an easier use of GPG by setting up gpg-agent. + +Haskell +------- + +Enables local Haskell package installation. + +Helper +------ + +Provides helper functions for developing modules. + +History +------- + +Sets history options and defines history aliases. + +History Substring Search +------------------------ + +Integrates zsh-history-substring-search into Prezto. + +Homebrew +-------- + +Defines Homebrew aliases. + +MacPorts +-------- + +Defines MacPorts aliases and adds MacPorts directories to path variables. + +Node.js +------- + +Provides utility functions for Node.js and loads npm completion. + +OCaml +----- + +Initializes OCaml package management. + +OSX +--- + +Defines macOS aliases and functions. + +Pacman +------ + +Provides aliases and functions for the Pacman package manager and frontends. + +Perl +---- + +Enables local Perl module installation on macOS and defines alises. + +Prompt +------ + +Loads prompt themes. + +Python +------ + +Enables local Python and local Python package installation. + +Ruby on Rails +------------- + +Defines Ruby on Rails aliases. + +Rsync +----- + +Defines rsync aliases. + +Ruby +---- + +Configures Ruby local gem installation, loads version managers, and defines +aliases. + +GNU Screen +---------- + +Defines GNU Screen aliases and provides for auto launching it at start-up. + +Spectrum +-------- + +Provides for easier use of 256 colors and effects. + +SSH +--- + +Provides for an easier use of SSH by setting up ssh-agent. + +Syntax Highlighting +------------------- + +Integrates zsh-syntax-highlighting into Prezto. + +Terminal +-------- + +Sets terminal window and tab titles. + +Tmux +---- + +Defines tmux aliases and provides for auto launching it at start-up. + +Utility +------- + +Defines general aliases and functions. + +Wake-on-LAN +----------- + +This module provides a wrapper around the wakeonlan tool. + +Yum +--- + +Defines yum aliases. diff --git a/prezto/.zprezto/modules/aliases/init.zsh b/prezto/.zprezto/modules/aliases/init.zsh new file mode 100644 index 0000000..9ce5b7d --- /dev/null +++ b/prezto/.zprezto/modules/aliases/init.zsh @@ -0,0 +1,36 @@ +#Readability aliases +alias lss='ls -alh --color=auto' +alias mount='mount |column -t' +alias df='df -H' + +#Shell Function aliases +alias dirs="dirs -v" +alias h='history' +alias j='jobs -l' + +#shortcuts aliases +alias please="sudo !!" +alias ping='ping -c 5' +alias ax="chmod a+x" +alias wmip="curl icanhazip.com" + +#git aliases +alias gitS='git status' +alias gitL='git log' +alias gitD='git diff' +alias gitC='git commit -a' + +#Apt aliases +alias aptup="sudo apt update && sudo apt upgrade" +alias aptrm="sudo apt autoremove && sudo apt autoclean" + +#Combo aliases +mcd() { mkdir -p "$1"; cd "$1";} #make a directory and cd into it +cls() { cd "$1"; ls;} #cd into directory and list contents +md5check() { md5sum "$1" | grep "$2";} #md5sum file, compare to md5sum as second parameter + +#ssh aliases +alias sagent="eval `ssh-agent`" + +#Command Replacement aliases +alias less='less -imJMW' diff --git a/prezto/.zprezto/modules/archive/README.md b/prezto/.zprezto/modules/archive/README.md new file mode 100644 index 0000000..c9806ea --- /dev/null +++ b/prezto/.zprezto/modules/archive/README.md @@ -0,0 +1,52 @@ +Archive +======= + +Provides functions to create, list, and extract archives. + +Functions +--------- + + - `archive` creates an archive based on the provided archive name. + - `lsarchive` lists the contents of one or more archives. + - `unarchive` extracts the contents of one or more archives. + +Supported Formats +----------------- + +The following archive formats are supported when the required utilities are +installed: + + - *.tar.gz*, *.tgz* require `tar` (optionally `pigz`). + - *.tar.bz2*, *.tbz* require `tar` (optionally `pbzip2`). + - *.tar.xz*, *.txz* require `tar` with *xz* support. + - *.tar.zma*, *.tlz* require `tar` with *lzma* support. + - *.tar* requires `tar`. + - *.gz* requires `gunzip`. + - *.bz2* requires `bunzip2`. + - *.xz* requires `unxz`. + - *.lzma* requires `unlzma`. + - *.Z* requires `uncompress`. + - *.zip*, *.jar* requires `unzip`. + - *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`. + - *.7z* requires `7za`. + - *.deb* requires `ar`, `tar`. + +Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them +over their traditional counterparts, `gzip` and `bzip2` respectively, to take +full advantage of all available CPU cores for compression. + +Alternatives +------------ + +Specifically on macOS, [The Unarchiver][1] provides a similar command line tool +which doesn't depend on a number of other programs being installed. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Matt Hamilton](https://github.com/Eriner) + +[1]: https://theunarchiver.com/command-line diff --git a/prezto/.zprezto/modules/archive/functions/_lsarchive b/prezto/.zprezto/modules/archive/functions/_lsarchive new file mode 100644 index 0000000..f2cee88 --- /dev/null +++ b/prezto/.zprezto/modules/archive/functions/_lsarchive @@ -0,0 +1,13 @@ +#compdef lsarchive +#autoload + +# +# Completes lsarchive. +# +# Authors: +# Sorin Ionescu +# + +_arguments \ + '(-v --verbose)'{-v,--remove}'[verbose archive listing]' \ + "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z)(-.)'" && return 0 diff --git a/prezto/.zprezto/modules/archive/functions/_unarchive b/prezto/.zprezto/modules/archive/functions/_unarchive new file mode 100644 index 0000000..90e32f1 --- /dev/null +++ b/prezto/.zprezto/modules/archive/functions/_unarchive @@ -0,0 +1,13 @@ +#compdef unarchive +#autoload + +# +# Completes unarchive. +# +# Authors: +# Sorin Ionescu +# + +_arguments \ + '(-r --remove)'{-r,--remove}'[remove archive]' \ + "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|jar|rar|7z|deb)(-.)'" && return 0 diff --git a/prezto/.zprezto/modules/archive/functions/archive b/prezto/.zprezto/modules/archive/functions/archive new file mode 100644 index 0000000..fab409e --- /dev/null +++ b/prezto/.zprezto/modules/archive/functions/archive @@ -0,0 +1,65 @@ +#!/usr/bin/env zsh +# +# Creates archive file +# +# Authors: +# Matt Hamilton +# + +# function archive { + +local archive_name path_to_archive _gzip_bin _bzip2_bin + +if (( $# < 2 )); then + cat >&2 < +# + +# function lsarchive { + +local verbose + +if (( $# == 0 )); then + cat >&2 <. +EOF +fi + +if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then + verbose=0 + shift +fi + +while (( $# > 0 )); do + if [[ ! -s "$1" ]]; then + print "$0: file not valid: $1" >&2 + shift + continue + fi + + case "$1:l" in + (*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;; + (*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;; + (*.tar.xz|*.txz) tar --xz --help &> /dev/null \ + && tar --xz -t${verbose:+v}f "$1" \ + || xzcat "$1" | tar t${verbose:+v}f - ;; + (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ + && tar --lzma -t${verbose:+v}f "$1" \ + || lzcat "$1" | tar x${verbose:+v}f - ;; + (*.tar) tar t${verbose:+v}f "$1" ;; + (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; + (*.rar) ( (( $+commands[unrar] )) \ + && unrar ${${verbose:+v}:-l} "$1" ) \ + || ( (( $+commands[rar] )) \ + && rar ${${verbose:+v}:-l} "$1" ) \ + || lsar ${verbose:+-l} "$1" ;; + (*.7z) 7za l "$1" ;; + (*) + print "$0: cannot list: $1" >&2 + success=1 + ;; + esac + + shift +done + +# } diff --git a/prezto/.zprezto/modules/archive/functions/unarchive b/prezto/.zprezto/modules/archive/functions/unarchive new file mode 100644 index 0000000..53a24dd --- /dev/null +++ b/prezto/.zprezto/modules/archive/functions/unarchive @@ -0,0 +1,86 @@ +# +# Extracts the contents of archives. +# +# Authors: +# Sorin Ionescu +# + +# function unarchive { + +local remove_archive +local success +local file_name +local file_path +local extract_dir + +if (( $# == 0 )); then + cat >&2 <. +EOF +fi + +remove_archive=1 +if [[ "$1" == "-r" || "$1" == "--remove" ]]; then + remove_archive=0 + shift +fi + +while (( $# > 0 )); do + if [[ ! -s "$1" ]]; then + print "$0: file not valid: $1" >&2 + shift + continue + fi + + success=0 + file_name="${1:t}" + file_path="${1:A}" + extract_dir="${file_name:r}" + case "$1:l" in + (*.tar.gz|*.tgz) tar xvzf "$1" ;; + (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;; + (*.tar.xz|*.txz) tar --xz --help &> /dev/null \ + && tar --xz -xvf "$1" \ + || xzcat "$1" | tar xvf - ;; + (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ + && tar --lzma -xvf "$1" \ + || lzcat "$1" | tar xvf - ;; + (*.tar) tar xvf "$1" ;; + (*.gz) gunzip "$1" ;; + (*.bz2) bunzip2 "$1" ;; + (*.xz) unxz "$1" ;; + (*.lzma) unlzma "$1" ;; + (*.Z) uncompress "$1" ;; + (*.zip|*.jar) unzip "$1" -d $extract_dir ;; + (*.rar) ( (( $+commands[unrar] )) \ + && unrar x -ad "$1" ) \ + || ( (( $+commands[rar] )) \ + && rar x -ad "$1" ) \ + || unar -d "$1" ;; + (*.7z) 7za x "$1" ;; + (*.deb) + mkdir -p "$extract_dir/control" + mkdir -p "$extract_dir/data" + cd "$extract_dir"; ar vx "${file_path}" > /dev/null + cd control; tar xvf ../control.tar.* + cd ../data; tar xvf ../data.tar.* + cd ..; rm control.tar.* data.tar.* debian-binary + cd .. + ;; + (*) + print "$0: cannot extract: $1" >&2 + success=1 + ;; + esac + + (( success = $success > 0 ? $success : $? )) + (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1" + shift +done + +# } diff --git a/prezto/.zprezto/modules/autosuggestions/README.md b/prezto/.zprezto/modules/autosuggestions/README.md new file mode 100644 index 0000000..48f9852 --- /dev/null +++ b/prezto/.zprezto/modules/autosuggestions/README.md @@ -0,0 +1,61 @@ +Autosuggestions +=============== + +Integrates [zsh-autosuggestions][1] into Prezto, which implements the +[Fish shell][2]'s autosuggestions feature, where the user can type in any part +of a previously entered command and Zsh suggests commands as you type based on +history and completions. + +If this module is used in conjunction with the *syntax-highlighting* module, +this module must be loaded **after** the *syntax-highlighting* module. + +If this module is used in conjunction with the *history-substring-search* +module, this module must be loaded **after** the *history-substring-search* +module. + +Contributors +------------ + +New features and bug fixes should be submitted to the [zsh-autosuggestions][1] +project according to its rules and regulations. This module will be synchronized +against it. + +Settings +-------- + +### Highlighting + +If colors are enabled, *autosuggestions* will automatically highlight +positive results. + +To enable highlighting for this module only, add the following line to +*zpreztorc*: + +```sh +zstyle ':prezto:module:autosuggestions' color 'yes' +``` + +To set the query found color, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:autosuggestions:color' found '' +``` + +Troubleshooting +--------------- + +### Autosuggestions from previous sessions don't show up + +For autosuggestions from previous shell sessions to work, please make sure you +also have the `history` module enabled. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/tarruda/zsh-autosuggestions +[2]: http://fishshell.com +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/autosuggestions/external b/prezto/.zprezto/modules/autosuggestions/external new file mode 160000 index 0000000..15931f0 --- /dev/null +++ b/prezto/.zprezto/modules/autosuggestions/external @@ -0,0 +1 @@ +Subproject commit 15931f04ffac91a2f9a1a044b6b3ee4050751064 diff --git a/prezto/.zprezto/modules/autosuggestions/init.zsh b/prezto/.zprezto/modules/autosuggestions/init.zsh new file mode 100644 index 0000000..a3a772e --- /dev/null +++ b/prezto/.zprezto/modules/autosuggestions/init.zsh @@ -0,0 +1,35 @@ +# +# Integrates zsh-autosuggestions into Prezto. +# +# Authors: +# Sorin Ionescu +# + +# Load dependencies. +pmodload 'editor' + +# Source module files. +source "${0:h}/external/zsh-autosuggestions.zsh" || return 1 + +# +# Highlighting +# + +# Set highlight color, default 'fg=8'. +zstyle -s ':prezto:module:autosuggestions:color' found \ + 'ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE' || ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' + +# Disable highlighting. +if ! zstyle -t ':prezto:module:autosuggestions' color; then + ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='' +fi + +# +# Key Bindings +# + +if [[ -n "$key_info" ]]; then + # vi + bindkey -M viins "$key_info[Control]F" vi-forward-word + bindkey -M viins "$key_info[Control]E" vi-add-eol +fi diff --git a/prezto/.zprezto/modules/command-not-found/README.md b/prezto/.zprezto/modules/command-not-found/README.md new file mode 100644 index 0000000..ee5a94d --- /dev/null +++ b/prezto/.zprezto/modules/command-not-found/README.md @@ -0,0 +1,24 @@ +Command-Not-Found +================= + +When you try to use a command that is not available locally, searches +the package manager for a package offering that command and suggests +the proper install command. + +Debian and Arch Linux based distributions use the [`command-not-found`][1] tool. + +macOS uses Homebrew's [`command-not-found` clone][2]. Note that you also need to +[follow the instructions][3] to tap the `command-not-found` homebrew repository. + + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][4].* + + - [Joseph Booker](https://github.com/sargas) + +[1]: https://code.launchpad.net/command-not-found +[2]: https://github.com/Homebrew/homebrew-command-not-found +[3]: https://github.com/Homebrew/homebrew-command-not-found#install +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/command-not-found/init.zsh b/prezto/.zprezto/modules/command-not-found/init.zsh new file mode 100644 index 0000000..f3d7ea6 --- /dev/null +++ b/prezto/.zprezto/modules/command-not-found/init.zsh @@ -0,0 +1,42 @@ +# +# Displays installation information for not found commands. +# +# Authors: +# Joseph Jon Booker +# Indrajit Raychaudhuri +# + +# Load command-not-found on Debian-based distributions. +if [[ -s '/etc/zsh_command_not_found' ]]; then + source '/etc/zsh_command_not_found' +# Load command-not-found on Arch Linux-based distributions. +elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then + source '/usr/share/doc/pkgfile/command-not-found.zsh' +# Load command-not-found on macOS when Homebrew tap is configured. +# To avoid performance penalty, we do not use Homebrew's ruby based command +# lookup mechanism (viz., `brew command command-not-found-init`) and instead +# `find` it ourselves from `TAP_DIRECTORY` defined internally in Homebrew. +elif (( $+commands[brew] )); then + cnf_command=( + "$(brew --repository 2> /dev/null)"/Library/Taps/*/*/cmd/brew-command-not-found-init(|.rb)(.N) + ) + if (( $#cnf_command )); then + cache_file="${TMPDIR:-/tmp}/prezto-brew-command-not-found-cache.$UID.zsh" + + if [[ "${${(@o)cnf_command}[1]}" -nt "$cache_file" \ + || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ + || ! -s "$cache_file" ]]; then + # brew command-not-found-init is slow; cache its output. + brew command-not-found-init >! "$cache_file" 2> /dev/null + fi + + source "$cache_file" + + unset cache_file + fi + + unset cnf_command +# Return if requirements are not found. +else + return 1 +fi diff --git a/prezto/.zprezto/modules/completion/README.md b/prezto/.zprezto/modules/completion/README.md new file mode 100644 index 0000000..dc2b9b8 --- /dev/null +++ b/prezto/.zprezto/modules/completion/README.md @@ -0,0 +1,53 @@ +Completion +========== + +Loads and configures tab completion and provides additional completions from +the [zsh-completions][1] project. + +This module must be loaded **after** the *utility* module. + +Options +------- + + - `COMPLETE_IN_WORD` complete from both ends of a word. + - `ALWAYS_TO_END` move cursor to the end of a completed word. + - `PATH_DIRS` perform path search even on command names with slashes. + - `AUTO_MENU` show completion menu on a successive tab press. + - `AUTO_LIST` automatically list choices on ambiguous completion. + - `AUTO_PARAM_SLASH` if completed parameter is a directory, add a trailing slash. + - `EXTENDED_GLOB` needed for file modification glob modifiers with compinit. + - `MENU_COMPLETE` do not autoselect the first completion entry. + - `FLOW_CONTROL` disable start/stop characters in shell editor. + +Settings +-------- + +### Ignore */etc/hosts* Entries + +To ignore certain entries from static */etc/hosts* for host completion, add the +following lines in *zpreztorc* with the IP addresses of the hosts as they +appear in */etc/hosts*. Both IP address and the corresponding hostname will be +ignored during host completion. However, some of the entries ignored from +*/etc/hosts* still might appear during completion because of their presence in +*ssh* configuration or history). + +```sh +zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \ + '0.0.0.0' '127.0.0.1' +``` + +Contributors +------------ + +Completions should be submitted to the [zsh-completions][1] project according +to its rules and regulations. This module will be synchronized against it. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/zsh-users/zsh-completions +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/completion/external b/prezto/.zprezto/modules/completion/external new file mode 160000 index 0000000..2a30b05 --- /dev/null +++ b/prezto/.zprezto/modules/completion/external @@ -0,0 +1 @@ +Subproject commit 2a30b05a5cf724a2d1c4c140c302dbf93f6aa6f6 diff --git a/prezto/.zprezto/modules/completion/init.zsh b/prezto/.zprezto/modules/completion/init.zsh new file mode 100644 index 0000000..07acf13 --- /dev/null +++ b/prezto/.zprezto/modules/completion/init.zsh @@ -0,0 +1,161 @@ +# +# Sets completion options. +# +# Authors: +# Robby Russell +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$TERM" == 'dumb' ]]; then + return 1 +fi + +# Add zsh-completions to $fpath. +fpath=("${0:h}/external/src" $fpath) + +# +# Options +# + +setopt COMPLETE_IN_WORD # Complete from both ends of a word. +setopt ALWAYS_TO_END # Move cursor to the end of a completed word. +setopt PATH_DIRS # Perform path search even on command names with slashes. +setopt AUTO_MENU # Show completion menu on a successive tab press. +setopt AUTO_LIST # Automatically list choices on ambiguous completion. +setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. +setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit +unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. +unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. + +# Load and initialize the completion system ignoring insecure directories with a +# cache time of 20 hours, so it should almost always regenerate the first time a +# shell is opened each day. +autoload -Uz compinit +_comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20)) +if (( $#_comp_files )); then + compinit -i -C +else + compinit -i +fi +unset _comp_files + +# +# Styles +# + +# Use caching to make completion for commands such as dpkg and apt usable. +zstyle ':completion::complete:*' use-cache on +zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache" + +# Case-insensitive (all), partial-word, and then substring completion. +if zstyle -t ':prezto:module:completion:*' case-sensitive; then + zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + setopt CASE_GLOB +else + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + unsetopt CASE_GLOB +fi + +# Group matches and describe. +zstyle ':completion:*:*:*:*:*' menu select +zstyle ':completion:*:matches' group 'yes' +zstyle ':completion:*:options' description 'yes' +zstyle ':completion:*:options' auto-description '%d' +zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f' +zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f' +zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f' +zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f' +zstyle ':completion:*:default' list-prompt '%S%M matches%s' +zstyle ':completion:*' format ' %F{yellow}-- %d --%f' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' verbose yes + +# Fuzzy match mistyped completions. +zstyle ':completion:*' completer _complete _match _approximate +zstyle ':completion:*:match:*' original only +zstyle ':completion:*:approximate:*' max-errors 1 numeric + +# Increase the number of errors based on the length of the typed word. But make +# sure to cap (at 7) the max-errors to avoid hanging. +zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)' + +# Don't complete unavailable commands. +zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' + +# Array completion element sorting. +zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters + +# Directories +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories +zstyle ':completion:*:*:cd:*:directory-stack' menu yes select +zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' +zstyle ':completion:*' squeeze-slashes true + +# History +zstyle ':completion:*:history-words' stop yes +zstyle ':completion:*:history-words' remove-all-dups yes +zstyle ':completion:*:history-words' list false +zstyle ':completion:*:history-words' menu yes + +# Environment Variables +zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} + +# Populate hostname completion. But allow ignoring custom entries from static +# */etc/hosts* which might be uninteresting. +zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' + +zstyle -e ':completion:*:hosts' hosts 'reply=( + ${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } + ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*} + ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} +)' + +# Don't complete uninteresting users... +zstyle ':completion:*:*:*:users' ignored-patterns \ + adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ + dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ + hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ + mailman mailnull mldonkey mysql nagios \ + named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ + operator pcap postfix postgres privoxy pulse pvm quagga radvd \ + rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*' + +# ... unless we really want to. +zstyle '*' single-ignored show + +# Ignore multiple entries. +zstyle ':completion:*:(rm|kill|diff):*' ignore-line other +zstyle ':completion:*:rm:*' file-patterns '*:all-files' + +# Kill +zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' +zstyle ':completion:*:*:kill:*' menu yes select +zstyle ':completion:*:*:kill:*' force-list always +zstyle ':completion:*:*:kill:*' insert-ids single + +# Man +zstyle ':completion:*:manuals' separate-sections true +zstyle ':completion:*:manuals.(^1*)' insert-sections true + +# Media Players +zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' +zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' +zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories' +zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories' + +# Mutt +if [[ -s "$HOME/.mutt/aliases" ]]; then + zstyle ':completion:*:*:mutt:*' menu yes select + zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*} +fi + +# SSH/SCP/RSYNC +zstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' +zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr +zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr +zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost +zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*' +zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*' diff --git a/prezto/.zprezto/modules/directory/README.md b/prezto/.zprezto/modules/directory/README.md new file mode 100644 index 0000000..47c1bc2 --- /dev/null +++ b/prezto/.zprezto/modules/directory/README.md @@ -0,0 +1,35 @@ +Directory +========= + +Sets directory options and defines directory aliases. + +Options +------- + + - `AUTO_CD` auto changes to a directory without typing `cd`. + - `AUTO_PUSHD` pushes the old directory onto the stack on `cd`. + - `PUSHD_IGNORE_DUPS` does not store duplicates in the stack. + - `PUSHD_SILENT` does not print the directory stack after `pushd` or `popd`. + - `PUSHD_TO_HOME` pushes to the home directory when no argument is given. + - `CDABLE_VARS` changes directory to a path stored in a variable. + - `AUTO_NAME_DIRS` auto adds variable-stored paths to `~` list. + - `MULTIOS` writes to multiple descriptors. + - `EXTENDED_GLOB` uses extended globbing syntax. + - `CLOBBER` does not overwrite existing files with `>` and `>>`. Use `>!` and + `>>!` to bypass. + +Aliases +------- + + - `d` prints the contents of the directory stack. + - `1 ... 9` changes the directory to the **n** previous one. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [James Cox](https://github.com/imajes) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/directory/init.zsh b/prezto/.zprezto/modules/directory/init.zsh new file mode 100644 index 0000000..8abc1e2 --- /dev/null +++ b/prezto/.zprezto/modules/directory/init.zsh @@ -0,0 +1,29 @@ +# +# Sets directory options and defines directory aliases. +# +# Authors: +# James Cox +# Sorin Ionescu +# + +# +# Options +# + +setopt AUTO_CD # Auto changes to a directory without typing cd. +setopt AUTO_PUSHD # Push the old directory onto the stack on cd. +setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack. +setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd. +setopt PUSHD_TO_HOME # Push to home directory when no argument is given. +setopt CDABLE_VARS # Change directory to a path stored in a variable. +setopt MULTIOS # Write to multiple descriptors. +setopt EXTENDED_GLOB # Use extended globbing syntax. +unsetopt CLOBBER # Do not overwrite existing files with > and >>. + # Use >! and >>! to bypass. + +# +# Aliases +# + +alias d='dirs -v' +for index ({1..9}) alias "$index"="cd +${index}"; unset index diff --git a/prezto/.zprezto/modules/dnf/README.md b/prezto/.zprezto/modules/dnf/README.md new file mode 100644 index 0000000..bbf1c92 --- /dev/null +++ b/prezto/.zprezto/modules/dnf/README.md @@ -0,0 +1,29 @@ +DNF +=== + +Defines [dnf][1] aliases. + +Aliases +------- + + - `dnfc` removes package(s) and leaves. + - `dnfi` installs package(s). + - `dnfh` displays history. + - `dnfl` lists packages. + - `dnfL` lists installed packages. + - `dnfq` displays package information. + - `dnfr` removes package(s). + - `dnfs` searches for a package. + - `dnfu` updates packages. + - `dnfU` upgrades packages. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://fedoraproject.org/wiki/Features/DNF +[2]: https://github.com/sorin-ionescu/prezto/issues + diff --git a/prezto/.zprezto/modules/dnf/init.zsh b/prezto/.zprezto/modules/dnf/init.zsh new file mode 100644 index 0000000..7a40142 --- /dev/null +++ b/prezto/.zprezto/modules/dnf/init.zsh @@ -0,0 +1,28 @@ +# +# Defines dnf aliases. +# +# Authors: +# FireWave +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[dnf] )); then + return 1 +fi + +# +# Aliases +# + +alias dnfc='sudo dnf clean all' # Cleans the cache. +alias dnfh='dnf history' # Displays history. +alias dnfi='sudo dnf install' # Installs package(s). +alias dnfl='dnf list' # Lists packages. +alias dnfL='dnf list installed' # Lists installed packages. +alias dnfq='dnf info' # Displays package information. +alias dnfr='sudo dnf remove' # Removes package(s). +alias dnfs='dnf search' # Searches for a package. +alias dnfu='sudo dnf update' # Updates packages. +alias dnfU='sudo dnf upgrade' # Upgrades packages. + diff --git a/prezto/.zprezto/modules/docker/README.md b/prezto/.zprezto/modules/docker/README.md new file mode 100644 index 0000000..335f77a --- /dev/null +++ b/prezto/.zprezto/modules/docker/README.md @@ -0,0 +1,190 @@ +# ZSH Docker Aliases + +Defines [Docker][1] aliases and functions. + +## Aliases + +### Docker + +- `dk` is short for `docker` +- `dka` Attach to a running container +- `dkb` Build an image from a Dockerfile +- `dkd` Inspect changes on a container's filesystem +- `dkdf` Show docker filesystem usage +- `dke` Run a command in a running container +- `dkE` Run an interactive command in a running container +- `dkh` Show the history of an image +- `dki` List images +- `dkin` Return low-level information on a container, image or task +- `dkk` Kill a running container +- `dkl` Fetch the logs of a container +- `dkli` Log in to a Docker registry +- `dklo` Log out from a Docker registry +- `dkls` is alias for `dkps` +- `dkp` Pause all processes within one or more containers +- `dkP` Unpause all processes within one or more containers +- `dkpl` Pull an image or a repository from a registry +- `dkph` Push an image or a repository to a registry +- `dkps` List containers +- `dkpsa` List all containers (default lists just running) +- `dkr` Run a command in a new container +- `dkR` Run an interactive command in a new container and automatically remove the container when it exits +- `dkRe` like `dkR` and set entry point to `/bin/bash` +- `dkrm` Remove one or more containers +- `dkrmi` Remove one or more images +- `dkrmC` Clean up exited containers +- `dkrmI` Clean up dangling images +- `dkrmV` Clean up unused volumes ( Docker >= 1.9 ) +- `dkrn` Rename a container +- `dks` Start one or more stopped containers +- `dkS` Restart a container +- `dkss` Display a live stream of container(s) resource usage statistics +- `dksv` Save one or more images to a tar archive (streamed to STDOUT by default) +- `dkt` Tag an image into a repository +- `dktop` Display the running processes of a container +- `dkup` Update configuration of one or more containers +- `dkV` Manage Docker volumes +- `dkv` Show the Docker version information +- `dkw` Block until a container stops, then print its exit code +- `dkx` Stop a running container + +#### container (C) + +- `dkC` Manage containers +- `dkCa` Attach to a running container +- `dkCcp` Copy files/folders between a container and the local filesystem +- `dkCd` Inspect changes on a container's filesystem +- `dkCe` Run a command in a running container +- `dkCin` Display detailed information on one or more containers +- `dkCk` Kill one or more running containers +- `dkCl` Fetch the logs of a container +- `dkCls` List containers +- `dkCp` Pause all processes within one or more containers +- `dkCpr` Remove all stopped containers +- `dkCrn` Rename a container +- `dkCS` Restart one or more containers +- `dkCrm` Remove one or more containers +- `dkCr` Run a command in a new container +- `dkCR` Run an interactive command in a new container and automatically remove the container when it exits +- `dkCRe` like `dkCR` and set entry point to `/bin/bash` +- `dkCs` Start one or more stopped containers +- `dkCss` Display a live stream of container(s) resource usage statistics +- `dkCx` Stop one or more running containers +- `dkCtop` Display the running processes of a container +- `dkCP` Unpause all processes within one or more containers +- `dkCup` Update configuration of one or more containers +- `dkCw` Block until one or more containers stop, then print their exit codes + +#### image (I) + +- `dkI` Manage images +- `dkIb` Build an image from a Dockerfile +- `dkIh` Show the history of an image +- `dkIim` Import the contents from a tarball to create a filesystem image +- `dkIin` Display detailed information on one or more images +- `dkIls` List images +- `dkIpr` Remove unused images +- `dkIpl` Pull an image or a repository from a registry +- `dkIph` Push an image or a repository to a registry +- `dkIrm` Remove one or more images +- `dkIsv` Save one or more images to a tar archive (streamed to STDOUT by default) +- `dkIt` Tag an image into a repository + +#### volume (V) + +- `dkV` Manage volumes +- `dkVin` Display detailed information on one or more volumes +- `dkVls` List volumes +- `dkVpr` Remove all unused volumes +- `dkVrm` Remove one or more volumes + +#### network (N) + +- `dkN` Manage networks +- `dkNs` Connect a container to a network +- `dkNx` Disconnects a container from a network +- `dkNin` Displays detailed information on a network +- `dkNls` Lists all the networks created by the user +- `dkNpr` Remove all unused networks +- `dkNrm` Deletes one or more networks + +#### system (Y) + +- `dkY` Manage Docker +- `dkYdf` Show docker filesystem usage +- `dkYpr` Remove unused data + +#### stack (K) + +- `dkK` Manage Docker stacks +- `dkKls` List stacks +- `dkKps` List the tasks in the stack +- `dkKrm` Remove the stack + +#### swarm (W) + +- `dkW` Manage Docker Swarm + +### Docker Machine + +- `dkm` is short for `docker-machine` +- `dkma` Get or set the active machine +- `dkmcp` Copy files between machines +- `dkmd` Set up the default machine ; alowing you to use `dkme` without arguments +- `dkme` Set up the environment for the Docker client (eg: `dkme staging` to toggle to staging) +- `dkmin` Inspect information about a machine +- `dkmip` Get the IP address of a machine +- `dkmk` Kill a machine +- `dkmls` List machines +- `dkmpr` Re-provision existing machines +- `dkmps` is alias for `dkmls` +- `dkmrg` Regenerate TLS Certificates for a machine +- `dkmrm` Remove a machine +- `dkms` Start a machine +- `dkmsh` Log into or run a command on a machine with SSH +- `dkmst` Get the status of a machine +- `dkmS` Restart a machine +- `dkmu` Get the URL of a machine +- `dkmup` Upgrade a machine to the latest version of Docker +- `dkmV` Show the Docker Machine version or a machine docker version +- `dkmx` Stop a machine + +### Docker Compose + +- `dkc` is short for `docker-compose` +- `dkcb` Build or rebuild services +- `dkcB` Build or rebuild services and do not use cache when building the image +- `dkcd` Stop and remove containers, networks, images, and volumes +- `dkce` Execute a command in a running container +- `dkck` Kill containers +- `dkcl` View output from containers +- `dkcls` is alias for `dkcps` +- `dkcp` Pause services +- `dkcP` Unpause services +- `dkcpl` Pull service images +- `dkcph` Push service images +- `dkcps` List containers +- `dkcr` Run a one-off command +- `dkcR` Run a one-off command and remove container after run. +- `dkcrm` Remove stopped containers +- `dkcs` Start services +- `dkcsc` Set number of containers for a service +- `dkcS` Restart services +- `dkcu` Create and start containers +- `dkcU` Create and start containers in detached mode: + Run containers in the background, print new container names +- `dkcV` Show the Docker-Compose version information +- `dkcx` Stop services + +## Support + +If you're having problems, use the [Prezto issue tracker][2]. + +## Acknowledgements + +This module is a copy of [akarzim/zsh-docker-aliases][3] by [François Vantomme][4] (MIT License). + +[1]: https://www.docker.com/ +[2]: https://github.com/zsh-users/prezto/issues +[3]: https://github.com/akarzim/zsh-docker-aliases +[4]: https://github.com/akarzim diff --git a/prezto/.zprezto/modules/docker/alias.zsh b/prezto/.zprezto/modules/docker/alias.zsh new file mode 100644 index 0000000..cdd9f7c --- /dev/null +++ b/prezto/.zprezto/modules/docker/alias.zsh @@ -0,0 +1,177 @@ +# +# Defines Docker aliases. +# +# Author: +# François Vantomme +# + +# +# Aliases +# + +# Docker +alias dk='docker' +alias dka='docker attach' +alias dkb='docker build' +alias dkd='docker diff' +alias dkdf='docker system df' +alias dke='docker exec' +alias dkE='docker exec -it' +alias dkh='docker history' +alias dki='docker images' +alias dkin='docker inspect' +alias dkim='docker import' +alias dkk='docker kill' +alias dkl='docker logs' +alias dkli='docker login' +alias dklo='docker logout' +alias dkls='docker ps' +alias dkp='docker pause' +alias dkP='docker unpause' +alias dkpl='docker pull' +alias dkph='docker push' +alias dkps='docker ps' +alias dkpsa='docker ps -a' +alias dkr='docker run' +alias dkR='docker run -it --rm' +alias dkRe='docker run -it --rm --entrypoint /bin/bash' +alias dkRM='docker system prune' +alias dkrm='docker rm' +alias dkrmi='docker rmi' +alias dkrn='docker rename' +alias dks='docker start' +alias dkS='docker restart' +alias dkss='docker stats' +alias dksv='docker save' +alias dkt='docker tag' +alias dktop='docker top' +alias dkup='docker update' +alias dkV='docker volume' +alias dkv='docker version' +alias dkw='docker wait' +alias dkx='docker stop' + +## Container (C) +alias dkC='docker container' +alias dkCa='docker container attach' +alias dkCcp='docker container cp' +alias dkCd='docker container diff' +alias dkCe='docker container exec' +alias dkCin='docker container inspect' +alias dkCk='docker container kill' +alias dkCl='docker container logs' +alias dkCls='docker container ls' +alias dkCp='docker container pause' +alias dkCpr='docker container prune' +alias dkCrn='docker container rename' +alias dkCS='docker container restart' +alias dkCrm='docker container rm' +alias dkCr='docker container run' +alias dkCR='docker container run -it --rm' +alias dkCRe='docker container run -it --rm --entrypoint /bin/bash' +alias dkCs='docker container start' +alias dkCss='docker container stats' +alias dkCx='docker container stop' +alias dkCtop='docker container top' +alias dkCP='docker container unpause' +alias dkCup='docker container update' +alias dkCw='docker container wait' + +## Image (I) +alias dkI='docker image' +alias dkIb='docker image build' +alias dkIh='docker image history' +alias dkIim='docker image import' +alias dkIin='docker image inspect' +alias dkIls='docker image ls' +alias dkIpr='docker image prune' +alias dkIpl='docker image pull' +alias dkIph='docker image push' +alias dkIrm='docker image rm' +alias dkIsv='docker image save' +alias dkIt='docker image tag' + +## Volume (V) +alias dkV='docker volume' +alias dkVin='docker volume inspect' +alias dkVls='docker volume ls' +alias dkVpr='docker volume prune' +alias dkVrm='docker volume rm' + +## Network (N) +alias dkN='docker network' +alias dkNs='docker network connect' +alias dkNx='docker network disconnect' +alias dkNin='docker network inspect' +alias dkNls='docker network ls' +alias dkNpr='docker network prune' +alias dkNrm='docker network rm' + +## System (Y) +alias dkY='docker system' +alias dkYdf='docker system df' +alias dkYpr='docker system prune' + +## Stack (K) +alias dkK='docker stack' +alias dkKls='docker stack ls' +alias dkKps='docker stack ps' +alias dkKrm='docker stack rm' + +## Swarm (W) +alias dkW='docker swarm' + +## CleanUp (rm) +# Clean up exited containers (docker < 1.13) +alias dkrmC='docker rm $(docker ps -qaf status=exited)' +# Clean up dangling images (docker < 1.13) +alias dkrmI='docker rmi $(docker images -qf dangling=true)' +# Clean up dangling volumes (docker < 1.13) +alias dkrmV='docker volume rm $(docker volume ls -qf dangling=true)' + + +# Docker Machine (m) +alias dkm='docker-machine' +alias dkma='docker-machine active' +alias dkmcp='docker-machine scp' +alias dkmin='docker-machine inspect' +alias dkmip='docker-machine ip' +alias dkmk='docker-machine kill' +alias dkmls='docker-machine ls' +alias dkmpr='docker-machine provision' +alias dkmps='docker-machine ps' +alias dkmrg='docker-machine regenerate-certs' +alias dkmrm='docker-machine rm' +alias dkms='docker-machine start' +alias dkmsh='docker-machine ssh' +alias dkmst='docker-machine status' +alias dkmS='docker-machine restart' +alias dkmu='docker-machine url' +alias dkmup='docker-machine upgrade' +alias dkmv='docker-machine version' +alias dkmx='docker-machine stop' + +# Docker Compose (c) +alias dkc='docker-compose' +alias dkcb='docker-compose build' +alias dkcB='docker-compose build --no-cache' +alias dkcd='docker-compose down' +alias dkce='docker-compose exec' +alias dkck='docker-compose kill' +alias dkcl='docker-compose logs' +alias dkcls='docker-compose ps' +alias dkcp='docker-compose pause' +alias dkcP='docker-compose unpause' +alias dkcpl='docker-compose pull' +alias dkcph='docker-compose push' +alias dkcps='docker-compose ps' +alias dkcr='docker-compose run' +alias dkcR='docker-compose run --rm' +alias dkcrm='docker-compose rm' +alias dkcs='docker-compose start' +alias dkcsc='docker-compose scale' +alias dkcS='docker-compose restart' +alias dkcu='docker-compose up' +alias dkcU='docker-compose up -d' +alias dkcv='docker-compose version' +alias dkcx='docker-compose stop' diff --git a/prezto/.zprezto/modules/docker/init.zsh b/prezto/.zprezto/modules/docker/init.zsh new file mode 100644 index 0000000..8ad6bfd --- /dev/null +++ b/prezto/.zprezto/modules/docker/init.zsh @@ -0,0 +1,57 @@ +# +# Defines Docker aliases. +# +# Author: +# François Vantomme +# + +# Return if requirements are not found. +if (( ! $+commands[docker] )); then + return 1 +fi + +# +# Functions +# + +# Set Docker Machine environment +function dkme { + if (( ! $+commands[docker-machine] )); then + return 1 + fi + + eval $(docker-machine env $1) +} + +# Set Docker Machine default machine +function dkmd { + if (( ! $+commands[docker-machine] )); then + return 1 + fi + + pushd ~/.docker/machine/machines + + if [[ ! -d $1 ]]; then + echo "Docker machine '$1' does not exists. Abort." + popd + return 1 + fi + + if [[ -L default ]]; then + eval $(rm -f default) + elif [[ -d default ]]; then + echo "A default machine already exists. Abort." + popd + return 1 + elif [[ -e default ]]; then + echo "A file named 'default' already exists. Abort." + popd + return 1 + fi + + eval $(ln -s $1 default) + popd +} + +# Source module files. +source "${0:h}/alias.zsh" diff --git a/prezto/.zprezto/modules/dpkg/README.md b/prezto/.zprezto/modules/dpkg/README.md new file mode 100644 index 0000000..6290c05 --- /dev/null +++ b/prezto/.zprezto/modules/dpkg/README.md @@ -0,0 +1,41 @@ +Dpkg +==== + +Defines [dpkg][1] aliases and functions. + +Aliases +------- + +- `debc` cleans the cache. +- `debf` displays a file's package. +- `debi` installs packages from repositories. +- `debI` installs packages from files. +- `debq` displays package information. +- `debu` updates the package lists. +- `debU` upgrades outdated packages. +- `debx` removes packages. +- `debX` removes packages, their configuration, and unneeded dependencies. +- `debs` searches for packages. +- `deb-build` creates a basic deb package. +- `deb-kclean` removes all kernel images and headers, except for the ones in + use. + +Functions +--------- + +- `deb-clone` generates a script that can be used to duplicate a dpkg-based + system. +- `deb-history` displays dpkg history. +- `deb-kbuild` makes a dpkg Linux kernel package. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Daniel Bolton](https://github.com/dbb) + - [Benjamin Boudreau](https://github.com/dreur) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://wiki.debian.org/Teams/Dpkg +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/dpkg/functions/deb-clone b/prezto/.zprezto/modules/dpkg/functions/deb-clone new file mode 100644 index 0000000..a767bd3 --- /dev/null +++ b/prezto/.zprezto/modules/dpkg/functions/deb-clone @@ -0,0 +1,29 @@ +# +# Generates a script that can be used to duplicate a dpkg-based system. +# +# Authors: +# Daniel Bolton +# Sorin Ionescu +# + +# function deb-clone { + +local clone_script="${0}.sh" +local package_list=$( + perl \ + -m 'AptPkg::Cache' \ + -e ' + $c=AptPkg::Cache->new; + for (keys %$c) { + push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed'; + } + print "$_ " for sort @a; + ' +) + +rm "$clone_script" +print '#!/bin/sh\n' > "$clone_script" +print "aptitude install ${package_list}\n" >> "$clone_script" +chmod +x "$clone_script" + +# } diff --git a/prezto/.zprezto/modules/dpkg/functions/deb-history b/prezto/.zprezto/modules/dpkg/functions/deb-history new file mode 100644 index 0000000..a1369de --- /dev/null +++ b/prezto/.zprezto/modules/dpkg/functions/deb-history @@ -0,0 +1,40 @@ +# +# Displays dpkg history. +# +# Authors: +# Peter Leung +# Benjamin Boudreau +# Sorin Ionescu +# + +# function deb-history { + +case "$1" in + (install) + zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*) + ;; + (upgrade|remove) + zgrep --no-filename "$1" $(ls -rt /var/log/dpkg*) + ;; + (rollback) + zgrep --no-filename upgrade $(ls -rt /var/log/dpkg*) \ + | grep "$2" -A10000000 \ + | grep "$3" -B10000000 \ + | awk '{print $4"="$5}' + ;; + (list) + zcat $(ls -rt /var/log/dpkg*) + ;; + (*) + cat >&2 < +# Sorin Ionescu +# + +# function deb-kbuild { + +make-kpkg clean +MAKEFLAGS='' time fakeroot make-kpkg \ + --append-to-version '-custom' \ + --revision "$(date +"%Y%m%d")" \ + kernel_image \ + kernel_headers + +# } diff --git a/prezto/.zprezto/modules/dpkg/init.zsh b/prezto/.zprezto/modules/dpkg/init.zsh new file mode 100644 index 0000000..69d524f --- /dev/null +++ b/prezto/.zprezto/modules/dpkg/init.zsh @@ -0,0 +1,57 @@ +# +# Defines dpkg aliases. +# +# Authors: +# Daniel Bolton +# Benjamin Boudreau +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[dpkg] && ! $+commands[apt-get] )); then + return 1 +fi + +# +# Aliases +# + +# Cleans the cache. +alias debc='sudo apt-get clean && sudo apt-get autoclean' + +# Displays a file's package. +alias debf='apt-file search --regexp' + +# Installs packages from repositories. +alias debi='sudo apt-get install' + +# Installs packages from files. +alias debI='sudo dpkg -i' + +# Displays package information. +alias debq='apt-cache show' + +# Updates the package lists. +alias debu='sudo apt-get update' + +# Upgrades outdated packages. +alias debU='sudo apt-get update && sudo apt-get dist-upgrade' + +# Removes packages. +alias debx='sudo apt-get remove' + +# Removes packages, their configuration, and unneeded dependencies. +alias debX='sudo apt-get remove --purge && sudo apt-get autoremove --purge' + +# Searches for packages. +if (( $+commands[aptitude] )); then + alias debs='aptitude -F "* %p -> %d \n(%v/%V)" --no-gui --disable-columns search' +else + alias debs='apt-cache search' +fi + +# Creates a basic deb package. +alias deb-build='time dpkg-buildpackage -rfakeroot -us -uc' + +# Removes all kernel images and headers, except for the ones in use. +alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"' diff --git a/prezto/.zprezto/modules/editor/README.md b/prezto/.zprezto/modules/editor/README.md new file mode 100644 index 0000000..d5280c4 --- /dev/null +++ b/prezto/.zprezto/modules/editor/README.md @@ -0,0 +1,109 @@ +Editor +====== + +Sets editor specific key bindings options and variables. + +Options +------- + + - `BEEP` beep on error in line editor. + +Variables +--------- + + - `WORDCHARS` treat a given set of characters as part of a word. + +Settings +-------- + +### Key bindings + +To enable key bindings, add the following to *zpreztorc*, and replace 'bindings' +with 'emacs' or 'vi'. + +```sh +zstyle ':prezto:module:editor' key-bindings 'bindings' +``` + +### Dot Expansion + +To enable the auto conversion of .... to ../.., add the following to +*zpreztorc*. + +```sh +zstyle ':prezto:module:editor' dot-expansion 'yes' +``` + +### PS Context + +To enable the prompt context to be set, add the following to your +*zpreztorc*. + +```sh +zstyle ':prezto:module:editor' ps-context 'yes' +``` + +Theming +------- + +To indicate when the editor is in the primary keymap (emacs or viins), add +the following to your `theme_prompt_setup` function. + +```sh +zstyle ':prezto:module:editor:info:keymap:primary' format '>>>' +``` + +To indicate when the editor is in the primary keymap (emacs or viins) insert +mode, add the following to your `theme_prompt_setup` function. + +```sh +zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I' +``` + +To indicate when the editor is in the primary keymap (emacs or viins) overwrite +mode, add the following to your `theme_prompt_setup` function. + +```sh +zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O' +``` + +To indicate when the editor is in the alternate keymap (vicmd), add the +following to your `theme_prompt_setup` function. + +```sh +zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<' +``` + +To indicate when the editor is completing, add the following to your +`theme_prompt_setup` function. + +```sh +zstyle ':prezto:module:editor:info:completing' format '...' +``` + +Then add `$editor_info[context]`, where context is *keymap*, *insert*, or +*overwrite*, to `$PROMPT` or `$RPROMPT`. + +Convenience Functions +--------------------- + +### bindkey-all + +Provides a function `bindkey-all` which can be useful for checking how all of the +keys are bound. Normal `bindkey` command will only list the keys bound for one +keymap, which is not as useful if you want to grep through the output. The +keymap's names go to stderr so when you grep through bindkey-all's output you +will still see the headings and can tell which keymap each binding goes to. + +It will also pass through arguments so you can use bindkey-all to set bindings +for all keymaps at once. If provided arguments it will *not* print out the +names of each of the keymaps, and just run the command for each keymap. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/oh-my-zsh/issues diff --git a/prezto/.zprezto/modules/editor/init.zsh b/prezto/.zprezto/modules/editor/init.zsh new file mode 100644 index 0000000..085947e --- /dev/null +++ b/prezto/.zprezto/modules/editor/init.zsh @@ -0,0 +1,449 @@ +# +# Sets key bindings. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$TERM" == 'dumb' ]]; then + return 1 +fi + +# +# Options +# + +setopt BEEP # Beep on error in line editor. + +# +# Variables +# + +# Treat these characters as part of a word. +WORDCHARS='*?_-.[]~&;!#$%^(){}<>' + +# Use human-friendly identifiers. +zmodload zsh/terminfo +typeset -gA key_info +key_info=( + 'Control' '\C-' + 'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd' + 'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc' + 'ControlPageUp' '\e[5;5~' + 'ControlPageDown' '\e[6;5~' + 'Escape' '\e' + 'Meta' '\M-' + 'Backspace' "^?" + 'Delete' "^[[3~" + 'F1' "$terminfo[kf1]" + 'F2' "$terminfo[kf2]" + 'F3' "$terminfo[kf3]" + 'F4' "$terminfo[kf4]" + 'F5' "$terminfo[kf5]" + 'F6' "$terminfo[kf6]" + 'F7' "$terminfo[kf7]" + 'F8' "$terminfo[kf8]" + 'F9' "$terminfo[kf9]" + 'F10' "$terminfo[kf10]" + 'F11' "$terminfo[kf11]" + 'F12' "$terminfo[kf12]" + 'Insert' "$terminfo[kich1]" + 'Home' "$terminfo[khome]" + 'PageUp' "$terminfo[kpp]" + 'End' "$terminfo[kend]" + 'PageDown' "$terminfo[knp]" + 'Up' "$terminfo[kcuu1]" + 'Left' "$terminfo[kcub1]" + 'Down' "$terminfo[kcud1]" + 'Right' "$terminfo[kcuf1]" + 'BackTab' "$terminfo[kcbt]" +) + +# Set empty $key_info values to an invalid UTF-8 sequence to induce silent +# bindkey failure. +for key in "${(k)key_info[@]}"; do + if [[ -z "$key_info[$key]" ]]; then + key_info[$key]='�' + fi +done + +# +# External Editor +# + +# Allow command line editing in an external editor. +autoload -Uz edit-command-line +zle -N edit-command-line + +# +# Functions +# +# Runs bindkey but for all of the keymaps. Running it with no arguments will +# print out the mappings for all of the keymaps. +function bindkey-all { + local keymap='' + for keymap in $(bindkey -l); do + [[ "$#" -eq 0 ]] && printf "#### %s\n" "${keymap}" 1>&2 + bindkey -M "${keymap}" "$@" + done +} +# Exposes information about the Zsh Line Editor via the $editor_info associative +# array. +function editor-info { + # Clean up previous $editor_info. + unset editor_info + typeset -gA editor_info + + if [[ "$KEYMAP" == 'vicmd' ]]; then + zstyle -s ':prezto:module:editor:info:keymap:alternate' format 'REPLY' + editor_info[keymap]="$REPLY" + else + zstyle -s ':prezto:module:editor:info:keymap:primary' format 'REPLY' + editor_info[keymap]="$REPLY" + + if [[ "$ZLE_STATE" == *overwrite* ]]; then + zstyle -s ':prezto:module:editor:info:keymap:primary:overwrite' format 'REPLY' + editor_info[overwrite]="$REPLY" + else + zstyle -s ':prezto:module:editor:info:keymap:primary:insert' format 'REPLY' + editor_info[overwrite]="$REPLY" + fi + fi + + unset REPLY + zle zle-reset-prompt +} +zle -N editor-info + +# Reset the prompt based on the current context and +# the ps-context option. +function zle-reset-prompt { + if zstyle -t ':prezto:module:editor' ps-context; then + # If we aren't within one of the specified contexts, then we want to reset + # the prompt with the appropriate editor_info[keymap] if there is one. + if [[ $CONTEXT != (select|cont) ]]; then + zle reset-prompt + zle -R + fi + else + zle reset-prompt + zle -R + fi +} +zle -N zle-reset-prompt + +# Updates editor information when the keymap changes. +function zle-keymap-select { + zle editor-info +} +zle -N zle-keymap-select + +# Enables terminal application mode and updates editor information. +function zle-line-init { + # The terminal must be in application mode when ZLE is active for $terminfo + # values to be valid. + if (( $+terminfo[smkx] )); then + # Enable terminal application mode. + echoti smkx + fi + + # Update editor information. + zle editor-info +} +zle -N zle-line-init + +# Disables terminal application mode and updates editor information. +function zle-line-finish { + # The terminal must be in application mode when ZLE is active for $terminfo + # values to be valid. + if (( $+terminfo[rmkx] )); then + # Disable terminal application mode. + echoti rmkx + fi + + # Update editor information. + zle editor-info +} +zle -N zle-line-finish + +# Toggles emacs overwrite mode and updates editor information. +function overwrite-mode { + zle .overwrite-mode + zle editor-info +} +zle -N overwrite-mode + +# Enters vi insert mode and updates editor information. +function vi-insert { + zle .vi-insert + zle editor-info +} +zle -N vi-insert + +# Moves to the first non-blank character then enters vi insert mode and updates +# editor information. +function vi-insert-bol { + zle .vi-insert-bol + zle editor-info +} +zle -N vi-insert-bol + +# Enters vi replace mode and updates editor information. +function vi-replace { + zle .vi-replace + zle editor-info +} +zle -N vi-replace + +# Expands .... to ../.. +function expand-dot-to-parent-directory-path { + if [[ $LBUFFER = *.. ]]; then + LBUFFER+='/..' + else + LBUFFER+='.' + fi +} +zle -N expand-dot-to-parent-directory-path + +# Displays an indicator when completing. +function expand-or-complete-with-indicator { + local indicator + zstyle -s ':prezto:module:editor:info:completing' format 'indicator' + + # This is included to work around a bug in zsh which shows up when interacting + # with multi-line prompts. + if [[ -z "$indicator" ]]; then + zle expand-or-complete + return + fi + + print -Pn "$indicator" + zle expand-or-complete + zle redisplay +} +zle -N expand-or-complete-with-indicator + +# Inserts 'sudo ' at the beginning of the line. +function prepend-sudo { + if [[ "$BUFFER" != su(do|)\ * ]]; then + BUFFER="sudo $BUFFER" + (( CURSOR += 5 )) + fi +} +zle -N prepend-sudo + +# Expand aliases +function glob-alias { + zle _expand_alias + zle expand-word + zle magic-space +} +zle -N glob-alias + +# Toggle the comment character at the start of the line. This is meant to work +# around a buggy implementation of pound-insert in zsh. +# +# This is currently only used for the emacs keys because vi-pound-insert has +# been reported to work properly. +function pound-toggle { + if [[ "$BUFFER" = '#'* ]]; then + # Because of an oddity in how zsh handles the cursor when the buffer size + # changes, we need to make this check before we modify the buffer and let + # zsh handle moving the cursor back if it's past the end of the line. + if [[ $CURSOR != $#BUFFER ]]; then + (( CURSOR -= 1 )) + fi + BUFFER="${BUFFER:1}" + else + BUFFER="#$BUFFER" + (( CURSOR += 1 )) + fi +} +zle -N pound-toggle + +# Reset to default key bindings. +bindkey -d + +# +# Emacs Key Bindings +# + +for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}" + bindkey -M emacs "$key" emacs-backward-word +for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}" + bindkey -M emacs "$key" emacs-forward-word + +# Kill to the beginning of the line. +for key in "$key_info[Escape]"{K,k} + bindkey -M emacs "$key" backward-kill-line + +# Redo. +bindkey -M emacs "$key_info[Escape]_" redo + +# Search previous character. +bindkey -M emacs "$key_info[Control]X$key_info[Control]B" vi-find-prev-char + +# Match bracket. +bindkey -M emacs "$key_info[Control]X$key_info[Control]]" vi-match-bracket + +# Edit command in an external editor. +bindkey -M emacs "$key_info[Control]X$key_info[Control]E" edit-command-line + +if (( $+widgets[history-incremental-pattern-search-backward] )); then + bindkey -M emacs "$key_info[Control]R" \ + history-incremental-pattern-search-backward + bindkey -M emacs "$key_info[Control]S" \ + history-incremental-pattern-search-forward +fi + +# Toggle comment at the start of the line. Note that we use pound-toggle which +# is similar to pount insert, but meant to work around some issues that were +# being seen in iTerm. +bindkey -M emacs "$key_info[Escape];" pound-toggle + + +# +# Vi Key Bindings +# + +# Edit command in an external editor emacs style (v is used for visual mode) +bindkey -M vicmd "$key_info[Control]X$key_info[Control]E" edit-command-line + +# Undo/Redo +bindkey -M vicmd "u" undo +bindkey -M vicmd "$key_info[Control]R" redo + +if (( $+widgets[history-incremental-pattern-search-backward] )); then + bindkey -M vicmd "?" history-incremental-pattern-search-backward + bindkey -M vicmd "/" history-incremental-pattern-search-forward +else + bindkey -M vicmd "?" history-incremental-search-backward + bindkey -M vicmd "/" history-incremental-search-forward +fi + +# Toggle comment at the start of the line. +bindkey -M vicmd "#" vi-pound-insert + +# +# Emacs and Vi Key Bindings +# + +# Unbound keys in vicmd and viins mode will cause really odd things to happen +# such as the casing of all the characters you have typed changing or other +# undefined things. In emacs mode they just insert a tilde, but bind these keys +# in the main keymap to a noop op so if there is no keybind in the users mode +# it will fall back and do nothing. +function _prezto-zle-noop { ; } +zle -N _prezto-zle-noop +local -a unbound_keys +unbound_keys=( + "${key_info[F1]}" + "${key_info[F2]}" + "${key_info[F3]}" + "${key_info[F4]}" + "${key_info[F5]}" + "${key_info[F6]}" + "${key_info[F7]}" + "${key_info[F8]}" + "${key_info[F9]}" + "${key_info[F10]}" + "${key_info[F11]}" + "${key_info[F12]}" + "${key_info[PageUp]}" + "${key_info[PageDown]}" + "${key_info[ControlPageUp]}" + "${key_info[ControlPageDown]}" +) +for keymap in $unbound_keys; do + bindkey -M viins "${keymap}" _prezto-zle-noop + bindkey -M vicmd "${keymap}" _prezto-zle-noop +done + +# Keybinds for all keymaps +for keymap in 'emacs' 'viins' 'vicmd'; do + bindkey -M "$keymap" "$key_info[Home]" beginning-of-line + bindkey -M "$keymap" "$key_info[End]" end-of-line +done + +# Keybinds for all vi keymaps +for keymap in viins vicmd; do + # Ctrl + Left and Ctrl + Right bindings to forward/backward word + for key in "${(s: :)key_info[ControlLeft]}" + bindkey -M "$keymap" "$key" vi-backward-word + for key in "${(s: :)key_info[ControlRight]}" + bindkey -M "$keymap" "$key" vi-forward-word +done + +# Keybinds for emacs and vi insert mode +for keymap in 'emacs' 'viins'; do + bindkey -M "$keymap" "$key_info[Insert]" overwrite-mode + bindkey -M "$keymap" "$key_info[Delete]" delete-char + bindkey -M "$keymap" "$key_info[Backspace]" backward-delete-char + + bindkey -M "$keymap" "$key_info[Left]" backward-char + bindkey -M "$keymap" "$key_info[Right]" forward-char + + # Expand history on space. + bindkey -M "$keymap" ' ' magic-space + + # Clear screen. + bindkey -M "$keymap" "$key_info[Control]L" clear-screen + + # Expand command name to full path. + for key in "$key_info[Escape]"{E,e} + bindkey -M "$keymap" "$key" expand-cmd-path + + # Duplicate the previous word. + for key in "$key_info[Escape]"{M,m} + bindkey -M "$keymap" "$key" copy-prev-shell-word + + # Use a more flexible push-line. + for key in "$key_info[Control]Q" "$key_info[Escape]"{q,Q} + bindkey -M "$keymap" "$key" push-line-or-edit + + # Bind Shift + Tab to go to the previous menu item. + bindkey -M "$keymap" "$key_info[BackTab]" reverse-menu-complete + + # Complete in the middle of word. + bindkey -M "$keymap" "$key_info[Control]I" expand-or-complete + + # Expand .... to ../.. + if zstyle -t ':prezto:module:editor' dot-expansion; then + bindkey -M "$keymap" "." expand-dot-to-parent-directory-path + fi + + # Display an indicator when completing. + bindkey -M "$keymap" "$key_info[Control]I" \ + expand-or-complete-with-indicator + + # Insert 'sudo ' at the beginning of the line. + bindkey -M "$keymap" "$key_info[Control]X$key_info[Control]S" prepend-sudo + + # control-space expands all aliases, including global + bindkey -M "$keymap" "$key_info[Control] " glob-alias +done + +# Delete key deletes character in vimcmd cmd mode instead of weird default functionality +bindkey -M vicmd "$key_info[Delete]" delete-char + +# Do not expand .... to ../.. during incremental search. +if zstyle -t ':prezto:module:editor' dot-expansion; then + bindkey -M isearch . self-insert 2> /dev/null +fi + +# +# Layout +# + +# Set the key layout. +zstyle -s ':prezto:module:editor' key-bindings 'key_bindings' +if [[ "$key_bindings" == (emacs|) ]]; then + bindkey -e +elif [[ "$key_bindings" == vi ]]; then + bindkey -v +else + print "prezto: editor: invalid key bindings: $key_bindings" >&2 +fi + +unset key{,map,_bindings} diff --git a/prezto/.zprezto/modules/emacs/README.md b/prezto/.zprezto/modules/emacs/README.md new file mode 100644 index 0000000..fa9a514 --- /dev/null +++ b/prezto/.zprezto/modules/emacs/README.md @@ -0,0 +1,33 @@ +Emacs +===== + +Enables Emacs dependency management. + +Dependency management +--------------------- + +[Carton][1] installs and manages Emacs packages for Emacs package development +and Emacs configuration. + +This module prepends the Carton directory to the path variable to enable the +execution of `carton`. + +Aliases +------- + +### Carton + + - `cai` installs dependencies. + - `cau` updates dependencies. + - `caI` initializes the current directory for dependency management. + - `cae` executes a command which correct dependencies. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sebastian Wiesner](https://github.com/lunaryorn) + +[1]: https://github.com/rejeep/carton +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/emacs/init.zsh b/prezto/.zprezto/modules/emacs/init.zsh new file mode 100644 index 0000000..3acc965 --- /dev/null +++ b/prezto/.zprezto/modules/emacs/init.zsh @@ -0,0 +1,25 @@ +# +# Configures Emacs dependency management. +# +# Authors: Sebastian Wiesner +# + +# Return if requirements are not found. +if [[ ! -d "$HOME/.cask" ]]; then + return 1 +fi + +# Prepend Cask bin directory. +path=($HOME/.cask/bin $path) + +# Load Carton completion +source "$HOME/.cask/etc/cask_completion.zsh" 2> /dev/null + +# +# Aliases +# + +alias cai='cask install' +alias cau='cask update' +alias caI='cask init' +alias cae='cask exec' diff --git a/prezto/.zprezto/modules/environment/README.md b/prezto/.zprezto/modules/environment/README.md new file mode 100644 index 0000000..15ee959 --- /dev/null +++ b/prezto/.zprezto/modules/environment/README.md @@ -0,0 +1,56 @@ +Environment +=========== + +Sets general shell options and defines environment variables. + +This module must be loaded first. + +Contributors +------------ + +This module **MUST NOT** rely on any command not built in Zsh. + +Non-interactive environment variables should be defined in [`zshenv`][1]. + +Options +------- + +### General + + - `COMBINING_CHARS` combine zero-length punctuation characters (accents) with + the base character. + - `INTERACTIVE_COMMENTS` enable comments in interactive shell. + - `RC_QUOTES` allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. + - `MAIL_WARNING` don't print a warning message if a mail file has been accessed. + +### Jobs + + - `LONG_LIST_JOBS` list jobs in the long format by default. + - `AUTO_RESUME` attempt to resume existing job before creating a new process. + - `NOTIFY` report status of background jobs immediately. + - `BG_NICE` don't run all background jobs at a lower priority. + - `HUP` don't kill jobs on shell exit. + - `CHECK_JOBS` don't report on jobs when shell exit. + +Variables +--------- + +### Termcap + + - `LESS_TERMCAP_mb` begins blinking. + - `LESS_TERMCAP_md` begins bold. + - `LESS_TERMCAP_me` ends mode. + - `LESS_TERMCAP_se` ends standout-mode. + - `LESS_TERMCAP_so` begins standout-mode. + - `LESS_TERMCAP_ue` ends underline. + - `LESS_TERMCAP_us` begins underline. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/environment/init.zsh b/prezto/.zprezto/modules/environment/init.zsh new file mode 100644 index 0000000..7ae8c4f --- /dev/null +++ b/prezto/.zprezto/modules/environment/init.zsh @@ -0,0 +1,64 @@ +# +# Sets general shell options and defines environment variables. +# +# Authors: +# Sorin Ionescu +# + +# +# Smart URLs +# + +# This logic comes from an old version of zim. Essentially, bracketed-paste was +# added as a requirement of url-quote-magic in 5.1, but in 5.1.1 bracketed +# paste had a regression. Additionally, 5.2 added bracketed-paste-url-magic +# which is generally better than url-quote-magic so we load that when possible. +autoload -Uz is-at-least +if [[ ${ZSH_VERSION} != 5.1.1 && ${TERM} != "dumb" ]]; then + if is-at-least 5.2; then + autoload -Uz bracketed-paste-url-magic + zle -N bracketed-paste bracketed-paste-url-magic + else + if is-at-least 5.1; then + autoload -Uz bracketed-paste-magic + zle -N bracketed-paste bracketed-paste-magic + fi + fi + autoload -Uz url-quote-magic + zle -N self-insert url-quote-magic +fi + +# +# General +# + +setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents) + # with the base character. +setopt INTERACTIVE_COMMENTS # Enable comments in interactive shell. +setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. +unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed. + +# +# Jobs +# + +setopt LONG_LIST_JOBS # List jobs in the long format by default. +setopt AUTO_RESUME # Attempt to resume existing job before creating a new process. +setopt NOTIFY # Report status of background jobs immediately. +unsetopt BG_NICE # Don't run all background jobs at a lower priority. +unsetopt HUP # Don't kill jobs on shell exit. +unsetopt CHECK_JOBS # Don't report on jobs when shell exit. + +# +# Termcap +# + +if zstyle -t ':prezto:environment:termcap' color; then + export LESS_TERMCAP_mb=$'\E[01;31m' # Begins blinking. + export LESS_TERMCAP_md=$'\E[01;31m' # Begins bold. + export LESS_TERMCAP_me=$'\E[0m' # Ends mode. + export LESS_TERMCAP_se=$'\E[0m' # Ends standout-mode. + export LESS_TERMCAP_so=$'\E[00;47;30m' # Begins standout-mode. + export LESS_TERMCAP_ue=$'\E[0m' # Ends underline. + export LESS_TERMCAP_us=$'\E[01;32m' # Begins underline. +fi diff --git a/prezto/.zprezto/modules/fasd/README.md b/prezto/.zprezto/modules/fasd/README.md new file mode 100644 index 0000000..cb3fc20 --- /dev/null +++ b/prezto/.zprezto/modules/fasd/README.md @@ -0,0 +1,44 @@ +Fasd +==== + +[Fasd][1] is a command-line productivity booster, inspired by tools like +[autojump][2], [z][3] and [v][4], it offers quick access to files and +directories by keeping track of files and directories that were previously +accessed. + +For completion to work, this module must be loaded **after** the *completion* +module. + +The Prezto Fasd configuration differs from the default. The default aliases have +been disabled. + +Installation +------------ + +`fasd` is bundled with prezto as a git submodule. Alternatively, you can manually install `fasd`. +If a manual install is found, it will be used instead of the bundled version. + +Aliases +------- + + - `j` changes the current working directory interactively. + +Completion +---------- + +Type `,`, `f,`, `d,` in front of a comma-separated query or type `,,`, `,,f`, +`,,d` at the end of a comma-separated query then hit tab. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][5].* + + - [Wei Dai](https://github.com/clvv) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/clvv/fasd +[2]: https://github.com/joelthelion/autojump +[3]: https://github.com/rupa/z +[4]: https://github.com/rupa/v +[5]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/fasd/external b/prezto/.zprezto/modules/fasd/external new file mode 160000 index 0000000..4822024 --- /dev/null +++ b/prezto/.zprezto/modules/fasd/external @@ -0,0 +1 @@ +Subproject commit 48220241e764fdf46b075cd7fe723468aaadde58 diff --git a/prezto/.zprezto/modules/fasd/init.zsh b/prezto/.zprezto/modules/fasd/init.zsh new file mode 100644 index 0000000..37babd8 --- /dev/null +++ b/prezto/.zprezto/modules/fasd/init.zsh @@ -0,0 +1,56 @@ +# +# Maintains a frequently used file and directory list for fast access. +# +# Authors: +# Wei Dai +# Sorin Ionescu +# + +# Load dependencies. +pmodload 'editor' + +# If the command doesn't exist externally, we need to fall back to the bundled +# submodule. +if (( ! $+commands[fasd] )); then + source "${0:h}/external/fasd" || return 1 +fi + +# +# Initialization +# + +cache_file="${TMPDIR:-/tmp}/prezto-fasd-cache.$UID.zsh" +if [[ "${commands[fasd]}" -nt "$cache_file" \ + || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ + || ! -s "$cache_file" ]]; then + # Set the base init arguments. + init_args=(zsh-hook) + + # Set fasd completion init arguments, if applicable. + if zstyle -t ':prezto:module:completion' loaded; then + init_args+=(zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcomp-install) + fi + + # Cache init code. + fasd --init "$init_args[@]" >! "$cache_file" 2> /dev/null +fi + +source "$cache_file" + +unset cache_file init_args + +function fasd_cd { + local fasd_ret="$(fasd -d "$@")" + if [[ -d "$fasd_ret" ]]; then + cd "$fasd_ret" + else + print "$fasd_ret" + fi +} + +# +# Aliases +# + +# Changes the current working directory interactively. +alias j='fasd_cd -i' diff --git a/prezto/.zprezto/modules/git/README.md b/prezto/.zprezto/modules/git/README.md new file mode 100644 index 0000000..e4425fa --- /dev/null +++ b/prezto/.zprezto/modules/git/README.md @@ -0,0 +1,456 @@ +Git +=== + +Enhances the [Git][1] distributed version control system by providing aliases, +functions and by exposing repository status information to prompts. + +Git **1.7.2** is the [minimum required version][7]. + +Settings +-------- + +### Log + +The format of the [git-log][8] output is configurable via the following style, +where context is *brief*, *oneline*, and *medium*, which will be passed to the +`--pretty=format:` switch. + +```sh +zstyle ':prezto:module:git:log:context' format '' +``` + +### Status + +Retrieving the status of a repository with submodules can take a long time. +Submodules may be ignored when they are *dirty*, *untracked*, *all*, or *none*. + +```sh +zstyle ':prezto:module:git:status:ignore' submodules 'all' +``` + +This setting affects all aliases and functions that call `git-status`. + +Aliases +------- + +Aliases are enabled by default. You can disable them with: + +```sh +zstyle ':prezto:module:git:alias' skip 'yes' +``` + +### Git + + - `g` is short for `git`. + +### Branch + + - `gb` lists, creates, renames, and deletes branches. + - `gbc` creates a new branch. + - `gbl` lists branches and their commits. (also `gbv`) + - `gbL` lists all local and remote branches and their commits. + - `gbr` renames a branch. (also `gbm`) + - `gbR` renames a branch even if the new branch name already exists. (also + `gbM`) + - `gbs` lists branches and their commits with ancestry graphs. + - `gbS` lists local and remote branches and their commits with ancestry + graphs. + - `gbV` lists branches with more verbose information about their commits. + - `gbx` deletes a branch. (also `gbd`) + - `gbX` deletes a branch irrespective of its merged status. (also `gbD`) + + +### Commit + + - `gc` records changes to the repository. + - `gca` stages all modified and deleted files. + - `gcm` records changes to the repository with the given message. + - `gcS` records changes to the repository. (Signed) + - `gcSa` stages all modified and deleted files. (Signed) + - `gcSm` records changes to the repository with the given message. (Signed) + - `gcam` stages all modified and deleted files, and records changes to the repository with the given message. + - `gco` checks out a branch or paths to work tree. + - `gcO` checks out hunks from the index or the tree interactively. + - `gcf` amends the tip of the current branch using the same log message as *HEAD*. + - `gcSf` amends the tip of the current branch using the same log message as *HEAD*. (Signed) + - `gcF` amends the tip of the current branch. + - `gcSF` amends the tip of the current branch. (Signed) + - `gcp` applies changes introduced by existing commits. + - `gcP` applies changes introduced by existing commits without committing. + - `gcr` reverts existing commits by reverting patches and recording new + commits. + - `gcR` removes the *HEAD* commit. + - `gcs` displays various types of objects. + - `gcsS` displays commits with GPG signature. + - `gcl` lists lost commits. + - `gcy` displays commits yet to be applied to upstream in the short format. + - `gcY` displays commits yet to be applied to upstream. + +### Conflict + + - `gCl` lists unmerged files. + - `gCa` adds unmerged file contents to the index. + - `gCe` executes merge-tool on all unmerged file. + - `gCo` checks out our changes for unmerged paths. + - `gCO` checks out our changes for all unmerged paths. + - `gCt` checks out their changes for unmerged paths. + - `gCT` checks out their changes for all unmerged paths. + +### Data + + - `gd` displays information about files in the index and the work tree. + - `gdc` lists cached files. + - `gdx` lists deleted files. + - `gdm` lists modified files. + - `gdu` lists untracked files. + - `gdk` lists killed files. + - `gdi` lists ignored files. + +### Fetch + + - `gf` downloads objects and references from another repository. + - `gfa` downloads objects and references from all remote repositories. + - `gfc` clones a repository into a new directory. + - `gfcr` clones a repository into a new directory including all submodules. + - `gfm` fetches from and merges with another repository or local branch. + - `gfr` fetches from and rebases on another repository or local branch. + +### Flow + + - `gFi` is short for `git flow init` + +#### Feature + + - `gFf` is short for `git flow feature` + - `gFfl` is short for `git flow feature list` + - `gFfs` is short for `git flow feature start` + - `gFff` is short for `git flow feature finish` + - `gFfp` is short for `git flow feature publish` + - `gFft` is short for `git flow feature track` + - `gFfd` is short for `git flow feature diff` + - `gFfr` is short for `git flow feature rebase` + - `gFfc` is short for `git flow feature checkout` + - `gFfm` is short for `git flow feature pull` + - `gFfx` is short for `git flow feature delete` + +#### Bugfix + + - `gFb` is short for `git flow bugfix` + - `gFbl` is short for `git flow bugfix list` + - `gFbs` is short for `git flow bugfix start` + - `gFbf` is short for `git flow bugfix finish` + - `gFbp` is short for `git flow bugfix publish` + - `gFbt` is short for `git flow bugfix track` + - `gFbd` is short for `git flow bugfix diff` + - `gFbr` is short for `git flow bugfix rebase` + - `gFbc` is short for `git flow bugfix checkout` + - `gFbm` is short for `git flow bugfix pull` + - `gFbx` is short for `git flow bugfix delete` + +#### Release + + - `gFl` is short for `git flow release` + - `gFll` is short for `git flow release list` + - `gFls` is short for `git flow release start` + - `gFlf` is short for `git flow release finish` + - `gFlp` is short for `git flow release publish` + - `gFlt` is short for `git flow release track` + - `gFld` is short for `git flow release diff` + - `gFlr` is short for `git flow release rebase` + - `gFlc` is short for `git flow release checkout` + - `gFlm` is short for `git flow release pull` + - `gFlx` is short for `git flow release delete` + +#### Hotfix + + - `gFh` is short for `git flow hotfix` + - `gFhl` is short for `git flow hotfix list` + - `gFhs` is short for `git flow hotfix start` + - `gFhf` is short for `git flow hotfix finish` + - `gFhp` is short for `git flow hotfix publish` + - `gFht` is short for `git flow hotfix track` + - `gFhd` is short for `git flow hotfix diff` + - `gFhr` is short for `git flow hotfix rebase` + - `gFhc` is short for `git flow hotfix checkout` + - `gFhm` is short for `git flow hotfix pull` + - `gFhx` is short for `git flow hotfix delete` + +#### Support + + - `gFs` is short for `git flow support` + - `gFsl` is short for `git flow support list` + - `gFss` is short for `git flow support start` + - `gFsf` is short for `git flow support finish` + - `gFsp` is short for `git flow support publish` + - `gFst` is short for `git flow support track` + - `gFsd` is short for `git flow support diff` + - `gFsr` is short for `git flow support rebase` + - `gFsc` is short for `git flow support checkout` + - `gFsm` is short for `git flow support pull` + - `gFsx` is short for `git flow support delete` + +### Grep + + - `gg` displays lines matching a pattern. + - `ggi` displays lines matching a pattern ignoring case. + - `ggl` lists files matching a pattern. + - `ggL` lists files that are not matching a pattern. + - `ggv` displays lines not matching a pattern. + - `ggw` displays lines matching a pattern at word boundary. + +### Index + + - `gia` adds file contents to the index. + - `giA` adds file contents to the index interactively. + - `giu` adds file contents to the index (updates only known files). + - `gid` displays changes between the index and a named commit (diff). + - `giD` displays changes between the index and a named commit (word diff). + - `gii` temporarily ignore differences in a given file. + - `giI` unignore differences in a given file. + - `gir` resets the current HEAD to the specified state. + - `giR` resets the current index interactively. + - `gix` removes files/directories from the index (recursively). + - `giX` removes files/directories from the index (recursively and forced). + +### Log + + - `gl` displays the log. + - `gls` displays the stats log. + - `gld` displays the diff log. + - `glo` displays the one line log. + - `glg` displays the graph log. + - `glb` displays the brief commit log. + - `glc` displays the commit count for each contributor in descending order. + - `glS` displays the log and checks the validity of signed commits. + +### Merge + + - `gm` joins two or more development histories together. + - `gmC` joins two or more development histories together but does not commit. + - `gmF` joins two or more development histories together but does not commit + generating a merge commit even if the merge resolved as a fast-forward. + - `gma` aborts the conflict resolution, and reconstructs the pre-merge state. + - `gmt` runs the merge conflict resolution tools to resolve conflicts. + +### Push + + - `gp` updates remote refs along with associated objects. + - `gpf` forcefully updates remote refs along with associated objects using the safer `--force-with-lease` option. + - `gpF` forcefully updates remote refs along with associated objects using the riskier `--force` option. + - `gpa` updates remote branches along with associated objects. + - `gpA` updates remote branches and tags along with associated objects. + - `gpt` updates remote tags along with associated objects. + - `gpc` updates remote refs along with associated objects and adds *origin* + as an upstream reference for the current branch. + - `gpp` pulls and pushes from origin to origin. + +### Rebase + + - `gr` forward-ports local commits to the updated upstream head. + - `gra` aborts the rebase. + - `grc` continues the rebase after merge conflicts are resolved. + - `gri` makes a list of commits to be rebased and opens the editor. + - `grs` skips the current patch. + +### Remote + + - `gR` manages tracked repositories. + - `gRl` lists remote names and their URLs. + - `gRa` adds a new remote. + - `gRx` removes a remote. + - `gRm` renames a remote. + - `gRu` fetches remotes updates. + - `gRp` prunes all stale remote tracking branches. + - `gRs` displays information about a given remote. + - `gRb` opens a remote on [GitHub][3] in the default browser. + +### Stash + + - `gs` stashes the changes of the dirty working directory. + - `gsa` applies the changes recorded in a stash to the working directory. + - `gsx` drops a stashed state. + - `gsX` drops all the stashed states. + - `gsl` lists stashed states. + - `gsL` lists dropped stashed states. + - `gsd` displays changes between the stash and its original parent. + - `gsp` removes and applies a single stashed state from the stash list. + - `gsr` recovers a given stashed state. + - `gss` stashes the changes of the dirty working directory, including untracked. + - `gsS` stashes the changes of the dirty working directory interactively. + - `gsw` stashes the changes of the dirty working directory retaining the index. + +### Submodule + + - `gS` initializes, updates, or inspects submodules. + - `gSa` adds given a repository as a submodule. + - `gSf` evaluates a shell command in each of checked out submodules. + - `gSi` initializes submodules. + - `gSI` initializes and clones submodules recursively. + - `gSl` lists the commits of all submodules. + - `gSm` moves a submodule. + - `gSs` synchronizes submodules' remote URL to the value specified in + .gitmodules. + - `gSu` fetches and merges the latest changes for all submodule. + - `gSx` removes a submodule. + +### Tag + + - `gt` lists tags or creates tag. + - `gtl` lists tags matching pattern. + - `gts` creates a signed tag. + - `gtv` validate a signed tag. + +### Working directory + + - `gws` displays working-tree status in the short format. + - `gwS` displays working-tree status. + - `gwd` displays changes between the working tree and the index (diff). + - `gwD` displays changes between the working tree and the index (word diff). + - `gwr` resets the current HEAD to the specified state, does not touch the + index nor the working tree. + - `gwR` resets the current HEAD, index and working tree to the specified state. + - `gwc` removes untracked files from the working tree (dry-run). + - `gwC` removes untracked files from the working tree. + - `gwx` removes files from the working tree and from the index recursively. + - `gwX` removes files from the working tree and from the index recursively and + forcefully. + +### Shadows + +The following aliases may shadow system commands: + + - `gb` shadows the [GB][9]. + - `gm` shadows the [Graphics Magick image processor][11]. + - `gpt` shadows the [GUID partition table maintenance utility][4]. + - `gs` shadows the [Ghostscript interpreter and previewer][5]. + +If you frequently use the above commands, you may wish to remove said aliases +from this module or to disable them at the bottom of the zshrc with `unalias`. + +You can temporarily bypass an alias by prefixing it with a backward slash: +`\gpt`. + +Functions +--------- + + - `git-branch-current` displays the current branch. + - `git-commit-lost` lists lost commits. + - `git-dir` displays the path to the Git directory. + - `git-hub-browse` opens the [GitHub][3] repository in the default browser. + - `git-hub-shorten-url` shortens [GitHub URLs][10]. + - `git-info` exposes repository information via the `$git_info` associative + array. + - `git-root` displays the path to the working tree root. + - `git-stash-clear-interactive` asks for confirmation before clearing the stash. + - `git-stash-dropped` lists dropped stashed states. + - `git-stash-recover` recovers given dropped stashed states. + - `git-submodule-move` moves a submodule. + - `git-submodule-remove` removes a submodule. + +Theming +------- + +To display information about the current repository in a prompt, define the +following styles in the `prompt_name_setup` function, where the syntax for +setting a style is as follows. + +```sh +zstyle ':prezto:module:git:info:context:subcontext' format 'string' +``` + +### Main Contexts + +| Name | Format Code | Description +| --------- | :---------: | --------------------------------------------------- +| action | %s | Special action name +| ahead | %A | Commits ahead of remote count +| behind | %B | Commits behind of remote count +| branch | %b | Branch name +| commit | %c | Commit hash +| position | %p | Commits from the nearest tag count +| remote | %R | Remote name +| stashed | %S | Stashed states count + +### Concise Contexts + +| Name | Format Code | Description +| --------- | :---------: | --------------------------------------------------- +| clean | %C | Clean state +| dirty | %D | Dirty files count +| indexed | %i | Indexed files count +| unindexed | %I | Unindexed files count +| untracked | %u | Untracked files count + +The following contexts must be enabled with the following zstyle: + +```sh +zstyle ':prezto:module:git:info' verbose 'yes' +``` + +### Verbose Contexts + +| Name | Format Code | Description +| --------- | :---------: | --------------------------------------------------- +| added | %a | Added files count +| clean | %C | Clean state +| deleted | %d | Deleted files count +| dirty | %D | Dirty files count +| modified | %m | Modified files count +| renamed | %r | Renamed files count +| unmerged | %U | Unmerged files count +| untracked | %u | Untracked files count + +### Special Action Contexts + +| Name | Format | Description +| -------------------- | :---------: | ----------------------------------------- +| apply | value | Applying patches +| bisect | value | Binary searching for changes +| cherry-pick | value | Cherry picking +| cherry-pick-sequence | value | Cherry picking sequence +| merge | value | Merging +| rebase | value | Rebasing +| rebase-interactive | value | Rebasing interactively +| rebase-merge | value | Rebasing merge +| revert | value | Reverting +| revert-sequence | value | Reverting sequence + +First, format the repository state attributes. For example, to format the branch +and remote names, define the following styles. + +```sh +zstyle ':prezto:module:git:info:branch' format 'branch:%b' +zstyle ':prezto:module:git:info:remote' format 'remote:%R' +``` + +Second, format how the above attributes are displayed in prompts. + +```sh +zstyle ':prezto:module:git:info:keys' format \ + 'prompt' ' git(%b)' \ + 'rprompt' '[%R]' +``` + +Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[rprompt]` to +`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook +function. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][6].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Colin Hebert](https://github.com/ColinHebert) + +[1]: http://www.git-scm.com +[2]: https://github.com/defunkt/hub +[3]: https://www.github.com +[4]: http://www.manpagez.com/man/8/gpt/ +[5]: http://www.manpagez.com/man/1/gs/ +[6]: https://github.com/sorin-ionescu/prezto/issues +[7]: https://github.com/sorin-ionescu/prezto/issues/219 +[8]: http://www.kernel.org/pub/software/scm/git/docs/git-log.html +[9]: https://getgb.io/ +[10]: https://github.com/blog/985-git-io-github-url-shortener +[11]: http://www.manpagez.com/man/1/gm/ diff --git a/prezto/.zprezto/modules/git/alias.zsh b/prezto/.zprezto/modules/git/alias.zsh new file mode 100644 index 0000000..89ba558 --- /dev/null +++ b/prezto/.zprezto/modules/git/alias.zsh @@ -0,0 +1,274 @@ +# +# Defines Git aliases. +# +# Authors: +# Sorin Ionescu +# + +# +# Settings +# +# + +# Log +zstyle -s ':prezto:module:git:log:medium' format '_git_log_medium_format' \ + || _git_log_medium_format='%C(bold)Commit:%C(reset) %C(green)%H%C(red)%d%n%C(bold)Author:%C(reset) %C(cyan)%an <%ae>%n%C(bold)Date:%C(reset) %C(blue)%ai (%ar)%C(reset)%n%+B' +zstyle -s ':prezto:module:git:log:oneline' format '_git_log_oneline_format' \ + || _git_log_oneline_format='%C(green)%h%C(reset) %s%C(red)%d%C(reset)%n' +zstyle -s ':prezto:module:git:log:brief' format '_git_log_brief_format' \ + || _git_log_brief_format='%C(green)%h%C(reset) %s%n%C(blue)(%ar by %an)%C(red)%d%C(reset)%n' + +# Status +zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_submodules' \ + || _git_status_ignore_submodules='none' + +# +# Aliases +# + +if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then + # Git + alias g='git' + + # Branch (b) + alias gb='git branch' + alias gba='git branch --all --verbose' + alias gbc='git checkout -b' + alias gbd='git branch --delete' + alias gbD='git branch --delete --force' + alias gbl='git branch --verbose' + alias gbL='git branch --all --verbose' + alias gbm='git branch --move' + alias gbM='git branch --move --force' + alias gbr='git branch --move' + alias gbR='git branch --move --force' + alias gbs='git show-branch' + alias gbS='git show-branch --all' + alias gbv='git branch --verbose' + alias gbV='git branch --verbose --verbose' + alias gbx='git branch --delete' + alias gbX='git branch --delete --force' + + # Commit (c) + alias gc='git commit --verbose' + alias gca='git commit --verbose --all' + alias gcm='git commit --message' + alias gcS='git commit -S --verbose' + alias gcSa='git commit -S --verbose --all' + alias gcSm='git commit -S --message' + alias gcam='git commit --all --message' + alias gco='git checkout' + alias gcO='git checkout --patch' + alias gcf='git commit --amend --reuse-message HEAD' + alias gcSf='git commit -S --amend --reuse-message HEAD' + alias gcF='git commit --verbose --amend' + alias gcSF='git commit -S --verbose --amend' + alias gcp='git cherry-pick --ff' + alias gcP='git cherry-pick --no-commit' + alias gcr='git revert' + alias gcR='git reset "HEAD^"' + alias gcs='git show' + alias gcsS='git show --pretty=short --show-signature' + alias gcl='git-commit-lost' + alias gcy='git cherry -v --abbrev' + alias gcY='git cherry -v' + + # Conflict (C) + alias gCl='git --no-pager diff --name-only --diff-filter=U' + alias gCa='git add $(gCl)' + alias gCe='git mergetool $(gCl)' + alias gCo='git checkout --ours --' + alias gCO='gCo $(gCl)' + alias gCt='git checkout --theirs --' + alias gCT='gCt $(gCl)' + + # Data (d) + alias gd='git ls-files' + alias gdc='git ls-files --cached' + alias gdx='git ls-files --deleted' + alias gdm='git ls-files --modified' + alias gdu='git ls-files --other --exclude-standard' + alias gdk='git ls-files --killed' + alias gdi='git status --porcelain --short --ignored | sed -n "s/^!! //p"' + + # Fetch (f) + alias gf='git fetch' + alias gfa='git fetch --all' + alias gfc='git clone' + alias gfcr='git clone --recurse-submodules' + alias gfm='git pull' + alias gfr='git pull --rebase' + + # Flow (F) + alias gFi='git flow init' + alias gFf='git flow feature' + alias gFb='git flow bugfix' + alias gFl='git flow release' + alias gFh='git flow hotfix' + alias gFs='git flow support' + + alias gFfl='git flow feature list' + alias gFfs='git flow feature start' + alias gFff='git flow feature finish' + alias gFfp='git flow feature publish' + alias gFft='git flow feature track' + alias gFfd='git flow feature diff' + alias gFfr='git flow feature rebase' + alias gFfc='git flow feature checkout' + alias gFfm='git flow feature pull' + alias gFfx='git flow feature delete' + + alias gFbl='git flow bugfix list' + alias gFbs='git flow bugfix start' + alias gFbf='git flow bugfix finish' + alias gFbp='git flow bugfix publish' + alias gFbt='git flow bugfix track' + alias gFbd='git flow bugfix diff' + alias gFbr='git flow bugfix rebase' + alias gFbc='git flow bugfix checkout' + alias gFbm='git flow bugfix pull' + alias gFbx='git flow bugfix delete' + + alias gFll='git flow release list' + alias gFls='git flow release start' + alias gFlf='git flow release finish' + alias gFlp='git flow release publish' + alias gFlt='git flow release track' + alias gFld='git flow release diff' + alias gFlr='git flow release rebase' + alias gFlc='git flow release checkout' + alias gFlm='git flow release pull' + alias gFlx='git flow release delete' + + alias gFhl='git flow hotfix list' + alias gFhs='git flow hotfix start' + alias gFhf='git flow hotfix finish' + alias gFhp='git flow hotfix publish' + alias gFht='git flow hotfix track' + alias gFhd='git flow hotfix diff' + alias gFhr='git flow hotfix rebase' + alias gFhc='git flow hotfix checkout' + alias gFhm='git flow hotfix pull' + alias gFhx='git flow hotfix delete' + + alias gFsl='git flow support list' + alias gFss='git flow support start' + alias gFsf='git flow support finish' + alias gFsp='git flow support publish' + alias gFst='git flow support track' + alias gFsd='git flow support diff' + alias gFsr='git flow support rebase' + alias gFsc='git flow support checkout' + alias gFsm='git flow support pull' + alias gFsx='git flow support delete' + + # Grep (g) + alias gg='git grep' + alias ggi='git grep --ignore-case' + alias ggl='git grep --files-with-matches' + alias ggL='git grep --files-without-matches' + alias ggv='git grep --invert-match' + alias ggw='git grep --word-regexp' + + # Index (i) + alias gia='git add' + alias giA='git add --patch' + alias giu='git add --update' + alias gid='git diff --no-ext-diff --cached' + alias giD='git diff --no-ext-diff --cached --word-diff' + alias gii='git update-index --assume-unchanged' + alias giI='git update-index --no-assume-unchanged' + alias gir='git reset' + alias giR='git reset --patch' + alias gix='git rm -r --cached' + alias giX='git rm -rf --cached' + + # Log (l) + alias gl='git log --topo-order --pretty=format:"${_git_log_medium_format}"' + alias gls='git log --topo-order --stat --pretty=format:"${_git_log_medium_format}"' + alias gld='git log --topo-order --stat --patch --full-diff --pretty=format:"${_git_log_medium_format}"' + alias glo='git log --topo-order --pretty=format:"${_git_log_oneline_format}"' + alias glg='git log --topo-order --all --graph --pretty=format:"${_git_log_oneline_format}"' + alias glb='git log --topo-order --pretty=format:"${_git_log_brief_format}"' + alias glc='git shortlog --summary --numbered' + alias glS='git log --show-signature' + + # Merge (m) + alias gm='git merge' + alias gmC='git merge --no-commit' + alias gmF='git merge --no-ff' + alias gma='git merge --abort' + alias gmt='git mergetool' + + # Push (p) + alias gp='git push' + alias gpf='git push --force-with-lease' + alias gpF='git push --force' + alias gpa='git push --all' + alias gpA='git push --all && git push --tags' + alias gpt='git push --tags' + alias gpc='git push --set-upstream origin "$(git-branch-current 2> /dev/null)"' + alias gpp='git pull origin "$(git-branch-current 2> /dev/null)" && git push origin "$(git-branch-current 2> /dev/null)"' + + # Rebase (r) + alias gr='git rebase' + alias gra='git rebase --abort' + alias grc='git rebase --continue' + alias gri='git rebase --interactive' + alias grs='git rebase --skip' + + # Remote (R) + alias gR='git remote' + alias gRl='git remote --verbose' + alias gRa='git remote add' + alias gRx='git remote rm' + alias gRm='git remote rename' + alias gRu='git remote update' + alias gRp='git remote prune' + alias gRs='git remote show' + alias gRb='git-hub-browse' + + # Stash (s) + alias gs='git stash' + alias gsa='git stash apply' + alias gsx='git stash drop' + alias gsX='git-stash-clear-interactive' + alias gsl='git stash list' + alias gsL='git-stash-dropped' + alias gsd='git stash show --patch --stat' + alias gsp='git stash pop' + alias gsr='git-stash-recover' + alias gss='git stash save --include-untracked' + alias gsS='git stash save --patch --no-keep-index' + alias gsw='git stash save --include-untracked --keep-index' + + # Submodule (S) + alias gS='git submodule' + alias gSa='git submodule add' + alias gSf='git submodule foreach' + alias gSi='git submodule init' + alias gSI='git submodule update --init --recursive' + alias gSl='git submodule status' + alias gSm='git-submodule-move' + alias gSs='git submodule sync' + alias gSu='git submodule foreach git pull origin master' + alias gSx='git-submodule-remove' + + # Tag (t) + alias gt='git tag' + alias gtl='git tag -l' + alias gts='git tag -s' + alias gtv='git verify-tag' + + # Working Copy (w) + alias gws='git status --ignore-submodules=${_git_status_ignore_submodules} --short' + alias gwS='git status --ignore-submodules=${_git_status_ignore_submodules}' + alias gwd='git diff --no-ext-diff' + alias gwD='git diff --no-ext-diff --word-diff' + alias gwr='git reset --soft' + alias gwR='git reset --hard' + alias gwc='git clean -n' + alias gwC='git clean -f' + alias gwx='git rm -r' + alias gwX='git rm -rf' +fi diff --git a/prezto/.zprezto/modules/git/functions/_git-hub-browse b/prezto/.zprezto/modules/git/functions/_git-hub-browse new file mode 100644 index 0000000..075314b --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/_git-hub-browse @@ -0,0 +1,47 @@ +#compdef git-hub-browse +#autoload + +# +# Completes git-hub-browse. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +local state expl remotes remote branches_or_tags branches tags files ret=1 + +_arguments -C -s -S \ + '1::args:->remote' \ + '2::args:->branch-or-tag' \ + '3::args:->file' && ret=0 + +case "$state" in + (remote) + remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2)) + + _describe -t branch 'remotes' remotes && ret=0 + ;; + (branch-or-tag) + remote="$words[(($CURRENT - 1))]" + + branches_or_tags=($( + command git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2 + )) + + branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/}) + tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/}) + + _describe -t branch 'branches' branches && ret=0 + _describe -t tag 'tags' tags && ret=0 + ;; + (file) + files=(${(0)"$(_call_program files command git ls-files -z --exclude-standard 2> /dev/null)"}) + _wanted file expl 'file' _multi_parts - / files && ret=0 + ;; +esac + +return $ret diff --git a/prezto/.zprezto/modules/git/functions/_git-hub-shorten-url b/prezto/.zprezto/modules/git/functions/_git-hub-shorten-url new file mode 100644 index 0000000..7e65ded --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/_git-hub-shorten-url @@ -0,0 +1,16 @@ +#compdef git-hub-shorten-url +#autoload + +# +# Completes git-hub-shorten-url. +# +# Authors: +# Sorin Ionescu +# + +local service="$service" + +zstyle ":completion:*:${service}:*:prefixes" ignored-patterns '^http(|s)://' +zstyle ":completion:*:${service}:*:hosts" ignored-patterns '^*github.com' + +_arguments '1::GitHub URL:_urls' '2::code:' && return 0 diff --git a/prezto/.zprezto/modules/git/functions/_git-info b/prezto/.zprezto/modules/git/functions/_git-info new file mode 100644 index 0000000..ef6d970 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/_git-info @@ -0,0 +1,18 @@ +#compdef git-info +#autoload + +# +# Completes git-info. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +_arguments "1:toggle:(( + on\:'enable in-prompt information for the current repository' + off\:'disable in-prompt information for the current repository' +))" && return 0 diff --git a/prezto/.zprezto/modules/git/functions/_git-submodule-move b/prezto/.zprezto/modules/git/functions/_git-submodule-move new file mode 100644 index 0000000..5f2122c --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/_git-submodule-move @@ -0,0 +1,40 @@ +#compdef git-submodule-move +#autoload + +# +# Completes git-submodule-move. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +local state expl ret=1 +local -a submodules +local submodule + +_arguments -C -s -S \ + '1::args:->submodule' \ + '2::args:->directory' && ret=0 + +case "$state" in + (submodule) + while IFS=$'\n' read submodule; do + submodules+=("$submodule") + done < <( + command git config --file "$(git-root)/.gitmodules" --list \ + | grep '.path=' \ + | cut -d= -f2- + ) + + _describe -t submodule 'submodules' submodules && ret=0 + ;; + (directory) + _wanted directories expl 'directory' _path_files -/ || _message 'directory' + ;; +esac + +return $ret diff --git a/prezto/.zprezto/modules/git/functions/_git-submodule-remove b/prezto/.zprezto/modules/git/functions/_git-submodule-remove new file mode 100644 index 0000000..819dfd8 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/_git-submodule-remove @@ -0,0 +1,26 @@ +#compdef git-submodule-remove +#autoload + +# +# Completes git-submodule-remove. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +local -a submodules +local submodule + +while IFS=$'\n' read submodule; do + submodules+=("$submodule") +done < <( + command git config --file "$(git-root)/.gitmodules" --list \ + | grep '.path=' \ + | cut -d= -f2- +) + +_describe -t submodule 'submodules' submodules && return 0 diff --git a/prezto/.zprezto/modules/git/functions/git-branch-current b/prezto/.zprezto/modules/git/functions/git-branch-current new file mode 100644 index 0000000..3cf2e19 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-branch-current @@ -0,0 +1,24 @@ +# +# Displays the current Git branch. +# +# Authors: +# Sorin Ionescu +# + +# function git-branch-current { + +if ! command git rev-parse 2> /dev/null; then + print "$0: not a repository: $PWD" >&2 + return 1 +fi + +local ref="$(command git symbolic-ref HEAD 2> /dev/null)" + +if [[ -n "$ref" ]]; then + print "${ref#refs/heads/}" + return 0 +else + return 1 +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-commit-lost b/prezto/.zprezto/modules/git/functions/git-commit-lost new file mode 100644 index 0000000..1f086d3 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-commit-lost @@ -0,0 +1,24 @@ +# +# Lists lost Git commits. +# +# Authors: +# Sorin Ionescu +# + +# function git-commit-lost { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +command git fsck 2> /dev/null \ + | grep "^dangling commit" \ + | awk '{print $3}' \ + | command git log \ + --date-order \ + --no-walk \ + --stdin \ + --pretty=format:${_git_log_oneline_format} + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-dir b/prezto/.zprezto/modules/git/functions/git-dir new file mode 100644 index 0000000..aacaaa8 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-dir @@ -0,0 +1,20 @@ +# +# Displays the path to the Git directory. +# +# Authors: +# Sorin Ionescu +# + +# function git-dir { + +local git_dir="${$(command git rev-parse --git-dir):A}" + +if [[ -n "$git_dir" ]]; then + print "$git_dir" + return 0 +else + print "$0: not a repository: $PWD" >&2 + return 1 +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-hub-browse b/prezto/.zprezto/modules/git/functions/git-hub-browse new file mode 100644 index 0000000..cb3fc60 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-hub-browse @@ -0,0 +1,62 @@ +# +# Opens a GitHub repository in the default browser. +# +# Authors: +# Sorin Ionescu +# + +# function git-hub-browse { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +local remotes remote references reference file url + +remote="${1:-origin}" +remotes=($(command git config --get-regexp 'remote.*.url' | cut -d. -f2)) + +if (( $remotes[(i)$remote] == $#remotes + 1 )); then + print "$0: remote not found: $remote" >&2 + return 1 +fi + +url=$( + command git config --get "remote.${remote}.url" \ + | sed -En "s/(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p" +) + +reference="${${2:-$(git-branch-current)}:-HEAD}" +references=( + HEAD + ${$(command git ls-remote --heads --tags "$remote" | awk '{print $2}')##refs/(heads|tags)/} +) + +if (( $references[(i)$reference] == $#references + 1 )); then + print "$0: branch or tag not found: $reference" >&2 + return 1 +fi + +if [[ "$reference" == 'HEAD' ]]; then + reference="$(command git rev-parse HEAD 2> /dev/null)" +fi + +file="$3" + +if [[ -n "$url" ]]; then + url="${url}/tree/${reference}/${file}" + + if (( $+commands[$BROWSER] )); then + "$BROWSER" "$url" + return 0 + else + print "$0: browser not set or set to a non-existent browser" >&2 + return 1 + fi +else + print "$0: not a Git repository or remote not set" >&2 + return 1 +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-hub-shorten-url b/prezto/.zprezto/modules/git/functions/git-hub-shorten-url new file mode 100644 index 0000000..470c093 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-hub-shorten-url @@ -0,0 +1,28 @@ +# +# Shortens GitHub URLs. +# +# Authors: +# Sorin Ionescu +# + +# function git-hub-shorten-url { + +local url="$1" code="$2" + +if [[ "$url" == '-' ]]; then + read url <&0 +fi + +if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then + print "usage: $0 [ url | - ] [code] ; url must be a github.com URL" >&2 + return 1 +fi + +if (( $+commands[curl] )); then + curl -s -i 'https://git.io' -F "url=$url" ${(s: :)code:+ -F "code=$code"} | sed -n 's/^Location: //p' +else + print "$0: command not found: curl" >&2 + return 1 +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-info b/prezto/.zprezto/modules/git/functions/git-info new file mode 100644 index 0000000..fe8ca2a --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-info @@ -0,0 +1,444 @@ +# +# Exposes Git repository information via the $git_info associative array. +# +# Authors: +# Sorin Ionescu +# + +# Gets the Git special action (am, bisect, cherry, merge, rebase, revert). +# Borrowed from vcs_info and edited. +function _git-action { + local action_dir + local git_dir="$(git-dir)" + local apply_formatted + local bisect_formatted + local cherry_pick_formatted + local cherry_pick_sequence_formatted + local merge_formatted + local rebase_formatted + local rebase_interactive_formatted + local rebase_merge_formatted + local revert_formatted + local revert_sequence_formatted + + for action_dir in \ + "${git_dir}/rebase-apply" \ + "${git_dir}/rebase" \ + "${git_dir}/../.dotest" + do + if [[ -d "$action_dir" ]] ; then + zstyle -s ':prezto:module:git:info:action:apply' format 'apply_formatted' || apply_formatted='apply' + zstyle -s ':prezto:module:git:info:action:rebase' format 'rebase_formatted' || rebase_formatted='rebase' + + if [[ -f "${action_dir}/rebasing" ]] ; then + print "$rebase_formatted" + elif [[ -f "${action_dir}/applying" ]] ; then + print "$apply_formatted" + else + print "${rebase_formatted}/${apply_formatted}" + fi + + return 0 + fi + done + + for action_dir in \ + "${git_dir}/rebase-merge/interactive" \ + "${git_dir}/.dotest-merge/interactive" + do + if [[ -f "$action_dir" ]]; then + zstyle -s ':prezto:module:git:info:action:rebase-interactive' format 'rebase_interactive_formatted' || rebase_interactive_formatted='rebase-interactive' + print "$rebase_interactive_formatted" + return 0 + fi + done + + for action_dir in \ + "${git_dir}/rebase-merge" \ + "${git_dir}/.dotest-merge" + do + if [[ -d "$action_dir" ]]; then + zstyle -s ':prezto:module:git:info:action:rebase-merge' format 'rebase_merge_formatted' || rebase_merge_formatted='rebase-merge' + print "$rebase_merge_formatted" + return 0 + fi + done + + if [[ -f "${git_dir}/MERGE_HEAD" ]]; then + zstyle -s ':prezto:module:git:info:action:merge' format 'merge_formatted' || merge_formatted='merge' + print "$merge_formatted" + return 0 + fi + + if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then + if [[ -d "${git_dir}/sequencer" ]] ; then + zstyle -s ':prezto:module:git:info:action:cherry-pick-sequence' format 'cherry_pick_sequence_formatted' || cherry_pick_sequence_formatted='cherry-pick-sequence' + print "$cherry_pick_sequence_formatted" + else + zstyle -s ':prezto:module:git:info:action:cherry-pick' format 'cherry_pick_formatted' || cherry_pick_formatted='cherry-pick' + print "$cherry_pick_formatted" + fi + + return 0 + fi + + if [[ -f "${git_dir}/REVERT_HEAD" ]]; then + if [[ -d "${git_dir}/sequencer" ]] ; then + zstyle -s ':prezto:module:git:info:action:revert-sequence' format 'revert_sequence_formatted' || revert_sequence_formatted='revert-sequence' + print "$revert_sequence_formatted" + else + zstyle -s ':prezto:module:git:info:action:revert' format 'revert_formatted' || revert_formatted='revert' + print "$revert_formatted" + fi + + return 0 + fi + + if [[ -f "${git_dir}/BISECT_LOG" ]]; then + zstyle -s ':prezto:module:git:info:action:bisect' format 'bisect_formatted' || bisect_formatted='bisect' + print "$bisect_formatted" + return 0 + fi + + return 1 +} + +# Gets the Git status information. +function git-info { + # Extended globbing is needed to parse repository status. + setopt LOCAL_OPTIONS + setopt EXTENDED_GLOB + + local action + local action_format + local action_formatted + local added=0 + local added_format + local added_formatted + local ahead=0 + local ahead_and_behind + local ahead_and_behind_cmd + local ahead_format + local ahead_formatted + local ahead_or_behind + local behind=0 + local behind_format + local behind_formatted + local branch + local branch_format + local branch_formatted + local branch_info + local clean + local clean_formatted + local commit + local commit_format + local commit_formatted + local deleted=0 + local deleted_format + local deleted_formatted + local dirty=0 + local dirty_format + local dirty_formatted + local ignore_submodules + local indexed=0 + local indexed_format + local indexed_formatted + local -A info_formats + local info_format + local modified=0 + local modified_format + local modified_formatted + local position + local position_format + local position_formatted + local remote + local remote_cmd + local remote_format + local remote_formatted + local renamed=0 + local renamed_format + local renamed_formatted + local stashed=0 + local stashed_format + local stashed_formatted + local status_cmd + local status_mode + local unindexed=0 + local unindexed_format + local unindexed_formatted + local unmerged=0 + local unmerged_format + local unmerged_formatted + local untracked=0 + local untracked_format + local untracked_formatted + + # Clean up previous $git_info. + unset git_info + typeset -gA git_info + + # Return if not inside a Git repository work tree. + if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 + fi + + if (( $# > 0 )); then + if [[ "$1" == [Oo][Nn] ]]; then + command git config --bool prompt.showinfo true + elif [[ "$1" == [Oo][Ff][Ff] ]]; then + command git config --bool prompt.showinfo false + else + print "usage: $0 [ on | off ]" >&2 + fi + return 0 + fi + + # Return if git-info is disabled. + if ! is-true "${$(command git config --bool prompt.showinfo):-true}"; then + return 1 + fi + + # Ignore submodule status. + zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules' + + # Format commit. + zstyle -s ':prezto:module:git:info:commit' format 'commit_format' + if [[ -n "$commit_format" ]]; then + commit="$(command git rev-parse HEAD 2> /dev/null)" + if [[ -n "$commit" ]]; then + zformat -f commit_formatted "$commit_format" "c:$commit" + fi + fi + + # Format stashed. + zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' + if [[ -n "$stashed_format" ]]; then + commondir="" + if [[ -f "$(git-dir)/commondir" ]]; then + commondir="$(<$(git-dir)/commondir)" + [[ "$commondir" =~ ^/ ]] || commondir="$(git-dir)/$commondir" + fi + if [[ -f "$(git-dir)/refs/stash" || ( -n "$commondir" && -f "$commondir/refs/stash" ) ]]; then + stashed="$(command git stash list 2> /dev/null | wc -l | awk '{print $1}')" + if [[ -n "$stashed" ]]; then + zformat -f stashed_formatted "$stashed_format" "S:$stashed" + fi + fi + fi + + # Format action. + zstyle -s ':prezto:module:git:info:action' format 'action_format' + if [[ -n "$action_format" ]]; then + action="$(_git-action)" + if [[ -n "$action" ]]; then + zformat -f action_formatted "$action_format" "s:$action" + fi + fi + + # Get the branch. + branch="${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" + + # Format branch. + zstyle -s ':prezto:module:git:info:branch' format 'branch_format' + if [[ -n "$branch" && -n "$branch_format" ]]; then + zformat -f branch_formatted "$branch_format" "b:$branch" + fi + + # Format position. + zstyle -s ':prezto:module:git:info:position' format 'position_format' + if [[ -z "$branch" && -n "$position_format" ]]; then + position="$(command git describe --contains --all HEAD 2> /dev/null)" + if [[ -n "$position" ]]; then + zformat -f position_formatted "$position_format" "p:$position" + fi + fi + + # Format remote. + zstyle -s ':prezto:module:git:info:remote' format 'remote_format' + if [[ -n "$branch" && -n "$remote_format" ]]; then + # Gets the remote name. + remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}' + remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" + if [[ -n "$remote" ]]; then + zformat -f remote_formatted "$remote_format" "R:$remote" + fi + fi + + zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format' + zstyle -s ':prezto:module:git:info:behind' format 'behind_format' + if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then + # Gets the commit difference counts between local and remote. + ahead_and_behind_cmd='command git rev-list --count --left-right HEAD...@{upstream}' + + # Get ahead and behind counts. + ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" + + # Format ahead. + if [[ -n "$ahead_format" ]]; then + ahead="$ahead_and_behind[(w)1]" + if (( ahead > 0 )); then + zformat -f ahead_formatted "$ahead_format" "A:$ahead" + fi + fi + + # Format behind. + if [[ -n "$behind_format" ]]; then + behind="$ahead_and_behind[(w)2]" + if (( behind > 0 )); then + zformat -f behind_formatted "$behind_format" "B:$behind" + fi + fi + fi + + # Get status type. + if ! zstyle -t ':prezto:module:git:info' verbose; then + # Format indexed. + zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format' + if [[ -n "$indexed_format" ]]; then + (( + indexed+=$( + command git diff-index \ + --no-ext-diff \ + --name-only \ + --cached \ + --ignore-submodules=${ignore_submodules:-none} \ + HEAD \ + 2> /dev/null \ + | wc -l + ) + )) + if (( indexed > 0 )); then + zformat -f indexed_formatted "$indexed_format" "i:$indexed" + fi + fi + + # Format unindexed. + zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format' + if [[ -n "$unindexed_format" ]]; then + (( + unindexed+=$( + command git diff-files \ + --no-ext-diff \ + --name-only \ + --ignore-submodules=${ignore_submodules:-none} \ + 2> /dev/null \ + | wc -l + ) + )) + if (( unindexed > 0 )); then + zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed" + fi + fi + + # Format untracked. + zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' + if [[ -n "$untracked_format" ]]; then + (( + untracked+=$( + command git ls-files \ + --other \ + --exclude-standard \ + 2> /dev/null \ + | wc -l + ) + )) + if (( untracked > 0 )); then + zformat -f untracked_formatted "$untracked_format" "u:$untracked" + fi + fi + + (( dirty = indexed + unindexed + untracked )) + else + # Use porcelain status for easy parsing. + status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}" + + # Get current status. + while IFS=$'\n' read line; do + # Count added, deleted, modified, renamed, unmerged, untracked, dirty. + # T (type change) is undocumented, see http://git.io/FnpMGw. + # For a table of scenarii, see http://i.imgur.com/2YLu1.png. + [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) + [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) + [[ "$line" == ?[MT]\ * ]] && (( modified++ )) + [[ "$line" == R?\ * ]] && (( renamed++ )) + [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) + [[ "$line" == \?\?\ * ]] && (( untracked++ )) + (( dirty++ )) + done < <(${(z)status_cmd} 2> /dev/null) + + # Format added. + if (( added > 0 )); then + zstyle -s ':prezto:module:git:info:added' format 'added_format' + zformat -f added_formatted "$added_format" "a:$added" + fi + + # Format deleted. + if (( deleted > 0 )); then + zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' + zformat -f deleted_formatted "$deleted_format" "d:$deleted" + fi + + # Format modified. + if (( modified > 0 )); then + zstyle -s ':prezto:module:git:info:modified' format 'modified_format' + zformat -f modified_formatted "$modified_format" "m:$modified" + fi + + # Format renamed. + if (( renamed > 0 )); then + zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' + zformat -f renamed_formatted "$renamed_format" "r:$renamed" + fi + + # Format unmerged. + if (( unmerged > 0 )); then + zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' + zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" + fi + + # Format untracked. + if (( untracked > 0 )); then + zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' + zformat -f untracked_formatted "$untracked_format" "u:$untracked" + fi + fi + + # Format dirty and clean. + if (( dirty > 0 )); then + zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format' + zformat -f dirty_formatted "$dirty_format" "D:$dirty" + else + zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted' + fi + + # Format info. + zstyle -a ':prezto:module:git:info:keys' format 'info_formats' + for info_format in ${(k)info_formats}; do + zformat -f REPLY "$info_formats[$info_format]" \ + "a:$added_formatted" \ + "A:$ahead_formatted" \ + "B:$behind_formatted" \ + "b:$branch_formatted" \ + "C:$clean_formatted" \ + "c:$commit_formatted" \ + "d:$deleted_formatted" \ + "D:$dirty_formatted" \ + "i:$indexed_formatted" \ + "I:$unindexed_formatted" \ + "m:$modified_formatted" \ + "p:$position_formatted" \ + "R:$remote_formatted" \ + "r:$renamed_formatted" \ + "s:$action_formatted" \ + "S:$stashed_formatted" \ + "U:$unmerged_formatted" \ + "u:$untracked_formatted" + git_info[$info_format]="$REPLY" + done + + unset REPLY + + return 0 +} + +git-info "$@" diff --git a/prezto/.zprezto/modules/git/functions/git-root b/prezto/.zprezto/modules/git/functions/git-root new file mode 100644 index 0000000..643f346 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-root @@ -0,0 +1,20 @@ +# +# Displays the path to the working tree root. +# +# Authors: +# Sorin Ionescu +# + +# function git-root { + +local root="$(command git rev-parse --show-toplevel 2> /dev/null)" + +if [[ -n "$root" ]]; then + print "$root" + return 0 +else + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-stash-clear-interactive b/prezto/.zprezto/modules/git/functions/git-stash-clear-interactive new file mode 100644 index 0000000..cc665a1 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-stash-clear-interactive @@ -0,0 +1,26 @@ +# +# Asks for confirmation before clearing the Git stash. +# +# Authors: +# Sorin Ionescu +# + +# function git-stash-clear-interactive { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +local stashed + +if [[ -f "$(git-dir)/refs/stash" ]]; then + stashed="$(command git stash list 2> /dev/null | wc -l | awk '{print $1}')" + if (( $stashed > 0 )); then + if read -q "?Clear $stashed stashed state(s) [y/N]? "; then + command git stash clear + fi + fi +fi + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-stash-dropped b/prezto/.zprezto/modules/git/functions/git-stash-dropped new file mode 100644 index 0000000..d9e759e --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-stash-dropped @@ -0,0 +1,26 @@ +# +# Lists dropped Git stashed states. +# +# Authors: +# Sorin Ionescu +# + +# function git-stash-dropped { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +command git fsck --unreachable 2> /dev/null \ + | grep 'commit' \ + | awk '{print $3}' \ + | command git log \ + --pretty=format:${_git_log_oneline_format} \ + --extended-regexp \ + --grep="${1:-(WIP )?[Oo]n [^:]+:}" \ + --merges \ + --no-walk \ + --stdin + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-stash-recover b/prezto/.zprezto/modules/git/functions/git-stash-recover new file mode 100644 index 0000000..6cb5416 --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-stash-recover @@ -0,0 +1,22 @@ +# +# Recovers dropped Git stashed states. +# +# Authors: +# Sorin Ionescu +# + +# function git-stash-recover { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +fi + +local commit + +for commit in "$@"; do + command git update-ref \ + -m "$(command git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit" +done + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-submodule-move b/prezto/.zprezto/modules/git/functions/git-submodule-move new file mode 100644 index 0000000..746f46e --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-submodule-move @@ -0,0 +1,36 @@ +# +# Moves a Git submodule. +# +# Authors: +# Sorin Ionescu +# + +# function git-submodule-move { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +elif [[ "$PWD" != "$(git-root)" ]]; then + print "$0: must be run from the root of the work tree" >&2 + return 1 +fi + +local src="$1" +local dst="$2" +local url + +url="$(command git config --file "$(git-root)/.gitmodules" --get "submodule.${src}.url")" + +if [[ -z "$url" ]]; then + print "$0: submodule not found: $src" >&2 + return 1 +fi + +mkdir -p "${dst:h}" + +git-submodule-remove "$src" +command git submodule add "$url" "$dst" + +return 0 + +# } diff --git a/prezto/.zprezto/modules/git/functions/git-submodule-remove b/prezto/.zprezto/modules/git/functions/git-submodule-remove new file mode 100644 index 0000000..c8c11aa --- /dev/null +++ b/prezto/.zprezto/modules/git/functions/git-submodule-remove @@ -0,0 +1,31 @@ +# +# Removes a Git submodule. +# +# Authors: +# Sorin Ionescu +# + +# function git-submodule-remove { + +if ! is-true "$(command git rev-parse --is-inside-work-tree 2> /dev/null)"; then + print "$0: not a repository work tree: $PWD" >&2 + return 1 +elif [[ "$PWD" != "$(git-root)" ]]; then + print "$0: must be run from the root of the work tree" >&2 + return 1 +elif ! command git config --file .gitmodules --get "submodule.${1}.path" &> /dev/null; then + print "$0: submodule not found: $1" >&2 + return 1 +fi + +command git config --file "$(git-dir)/config" --remove-section "submodule.${1}" &> /dev/null +command git config --file "$(git-root)/.gitmodules" --remove-section "submodule.${1}" &> /dev/null +command git add .gitmodules + +command git rm --cached -rf "${1}" +rm -rf "${1}" +rm -rf "$(git-dir)/modules/${1}" + +return 0 + +# } diff --git a/prezto/.zprezto/modules/git/init.zsh b/prezto/.zprezto/modules/git/init.zsh new file mode 100644 index 0000000..ba54082 --- /dev/null +++ b/prezto/.zprezto/modules/git/init.zsh @@ -0,0 +1,17 @@ +# +# Provides Git aliases and functions. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[git] )); then + return 1 +fi + +# Load dependencies. +pmodload 'helper' + +# Source module files. +source "${0:h}/alias.zsh" diff --git a/prezto/.zprezto/modules/gnu-utility/README.md b/prezto/.zprezto/modules/gnu-utility/README.md new file mode 100644 index 0000000..7e62a17 --- /dev/null +++ b/prezto/.zprezto/modules/gnu-utility/README.md @@ -0,0 +1,34 @@ +GNU Utility +=========== + +Provides for the interactive use of GNU utilities on BSD systems. + +Installing GNU utilities on non-GNU systems in `$PATH` without a prefix, i.e. +`ls` instead of `gls`, is not recommended since scripts that target other +utilities will be broken. + +This module wraps GNU utilities in functions without a prefix for interactive +use. + +This module must be loaded **before** the *utility* module. + +Settings +-------- + +### Prefix + +To use a different prefix, add the following to *zpreztorc*, and replace 'g' with +the desired prefix: + +```sh +zstyle ':prezto:module:gnu-utility' prefix 'g' +``` + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/gnu-utility/init.zsh b/prezto/.zprezto/modules/gnu-utility/init.zsh new file mode 100644 index 0000000..4675a3c --- /dev/null +++ b/prezto/.zprezto/modules/gnu-utility/init.zsh @@ -0,0 +1,60 @@ +# +# Provides for the interactive use of GNU utilities on BSD systems. +# +# Authors: +# Sorin Ionescu +# + +# Get the prefix or use the default. +zstyle -s ':prezto:module:gnu-utility' prefix '_gnu_utility_p' || _gnu_utility_p='g' + +# Return if requirements are not found. +if (( ! ${+commands[${_gnu_utility_p}whoami]} )); then + return 1 +fi + +_gnu_utility_cmds=( + # Coreutils + '[' 'b2sum' 'base32' 'base64' 'basename' 'cat' 'chcon' 'chgrp' 'chmod' 'chown' + 'chroot' 'cksum' 'comm' 'cp' 'csplit' 'cut' 'date' 'dd' 'df' + 'dir' 'dircolors' 'dirname' 'du' 'echo' 'env' 'expand' 'expr' + 'factor' 'false' 'fmt' 'fold' 'groups' 'head' 'hostid' 'id' + 'install' 'join' 'kill' 'link' 'ln' 'logname' 'ls' 'md5sum' 'mkdir' + 'mkfifo' 'mknod' 'mktemp' 'mv' 'nice' 'nl' 'nohup' 'nproc' + 'numfmt' 'od' 'paste' 'pathchk' 'pinky' 'pr' 'printenv' 'printf' 'ptx' + 'pwd' 'readlink' 'realpath' 'rm' 'rmdir' 'runcon' 'seq' 'sha1sum' + 'sha224sum' 'sha256sum' 'sha384sum' 'sha512sum' 'shred' 'shuf' + 'sleep' 'sort' 'split' 'stat' 'stdbuf' 'stty' 'sum' 'sync' 'tac' 'tail' + 'tee' 'test' 'timeout' 'touch' 'tr' 'true' 'truncate' 'tsort' + 'tty' 'uname' 'unexpand' 'uniq' 'unlink' 'uptime' 'users' 'vdir' + 'wc' 'who' 'whoami' 'yes' + + # The following utilities are not part of Coreutils but installed separately. + + # Binutils + 'addr2line' 'ar' 'c++filt' 'elfedit' 'nm' 'objcopy' 'objdump' + 'ranlib' 'readelf' 'size' 'strings' 'strip' + + # Findutils + 'find' 'locate' 'oldfind' 'updatedb' 'xargs' + + # Libtool + 'libtool' 'libtoolize' + + # Miscellaneous + 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which' +) + +# Wrap GNU utilities in functions. +for _gnu_utility_cmd in "${_gnu_utility_cmds[@]}"; do + _gnu_utility_pcmd="${_gnu_utility_p}${_gnu_utility_cmd}" + if (( ${+commands[${_gnu_utility_pcmd}]} && ! ${+builtins[${_gnu_utility_cmd}]} )); then + eval " + function ${_gnu_utility_cmd} { + '${commands[${_gnu_utility_pcmd}]}' \"\$@\" + } + " + fi +done + +unset _gnu_utility_{p,cmds,cmd,pcmd} diff --git a/prezto/.zprezto/modules/gpg/README.md b/prezto/.zprezto/modules/gpg/README.md new file mode 100644 index 0000000..be3c1a9 --- /dev/null +++ b/prezto/.zprezto/modules/gpg/README.md @@ -0,0 +1,28 @@ +GPG +=== + +Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. + +### SSH + +To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in +replacement for `ssh-agent`, add the following line to +*~/.gnupg/gpg-agent.conf*: + +```conf +enable-ssh-support +``` + +When OpenSSH Agent protocol emulation is enabled, this module will load the SSH +module for additional processing. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.gnupg.org +[2]: http://linux.die.net/man/1/gpg-agent +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/gpg/init.zsh b/prezto/.zprezto/modules/gpg/init.zsh new file mode 100644 index 0000000..7976fd7 --- /dev/null +++ b/prezto/.zprezto/modules/gpg/init.zsh @@ -0,0 +1,55 @@ +# +# Provides for an easier use of GPG by setting up gpg-agent. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[gpg-agent] )); then + return 1 +fi + +# Set the default paths to gpg-agent files. +_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf" +_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID" + +# Load environment variables from previous run +source "$_gpg_agent_env" 2> /dev/null + +# Start gpg-agent if not started. +if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then + # Start gpg-agent if not started. + if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then + eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")" + fi +fi + +# Inform gpg-agent of the current TTY for user prompts. +export GPG_TTY="$(tty)" + +# Integrate with the SSH module. +if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then + # Load required functions. + autoload -Uz add-zsh-hook + + # Override the ssh-agent environment file default path. + _ssh_agent_env="$_gpg_agent_env" + + # Load the SSH module for additional processing. + pmodload 'ssh' + + # Updates the GPG-Agent TTY before every command since SSH does not set it. + function _gpg-agent-update-tty { + gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null + } + add-zsh-hook preexec _gpg-agent-update-tty +fi + +# Clean up. +unset _gpg_agent_{conf,env} + +# Disable GUI prompts inside SSH. +if [[ -n "$SSH_CONNECTION" ]]; then + export PINENTRY_USER_DATA='USE_CURSES=1' +fi diff --git a/prezto/.zprezto/modules/haskell/README.md b/prezto/.zprezto/modules/haskell/README.md new file mode 100644 index 0000000..dcf144c --- /dev/null +++ b/prezto/.zprezto/modules/haskell/README.md @@ -0,0 +1,28 @@ +Haskell +======= + +Enables local Haskell package installation. + +Per-user Package Installation +----------------------------- + +[Cabal][1], the Haskell package manager, can install packages into per user +directories. + +This module prepends per user directories to the relevant path variables to +enable the execution of user installed executables and the reading of +documentation. + +### Usage + +Install packages into per user directories with `cabal install --user`. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sebastian Wiesner](https://github.com/lunaryorn) + +[1]: http://www.haskell.org/cabal/ +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/haskell/init.zsh b/prezto/.zprezto/modules/haskell/init.zsh new file mode 100644 index 0000000..c1c78ca --- /dev/null +++ b/prezto/.zprezto/modules/haskell/init.zsh @@ -0,0 +1,18 @@ +# +# Enables local Haskell package installation. +# +# Authors: +# Sebastian Wiesner +# + +# Return if requirements are not found. +if (( ! $+commands[ghc] )); then + return 1 +fi + +# Prepend Cabal per user directories to PATH. +if [[ "$OSTYPE" == darwin* && -d $HOME/Library/Haskell ]]; then + path=($HOME/Library/Haskell/bin(/N) $path) +else + path=($HOME/.cabal/bin(/N) $path) +fi diff --git a/prezto/.zprezto/modules/helper/README.md b/prezto/.zprezto/modules/helper/README.md new file mode 100644 index 0000000..9f10d6e --- /dev/null +++ b/prezto/.zprezto/modules/helper/README.md @@ -0,0 +1,24 @@ +Helper +====== + +Provides helper functions for developing modules. + +Functions +--------- + + - `add-zsh-trap` adds a function name to a list to be called when a trap is + triggered. + - `is-autoloadable` checks if a file can be autoloaded by trying to load it + in a subshell. + - `is-callable` checks if a name is a command, function, or alias. + - `is-true` checks a boolean variable for "true". + - `coalesce` prints the first non-empty string in the arguments array. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/helper/functions/add-zsh-trap b/prezto/.zprezto/modules/helper/functions/add-zsh-trap new file mode 100644 index 0000000..07663e9 --- /dev/null +++ b/prezto/.zprezto/modules/helper/functions/add-zsh-trap @@ -0,0 +1,41 @@ +# +# Provides for trapping UNIX signals and calling callback functions when a trap +# is triggered. +# +# Authors: +# Sorin Ionescu +# + +# Adds a function name to a list to be called when a trap is triggered. +function add-zsh-trap { + if (( $# < 2 )); then + print "usage: $0 type function" >&2 + return 1 + fi + + if [[ -z "$signals[(r)$1]" ]]; then + print "$0: unknown signal: $1" >&2 + return 1 + fi + + local trap_functions="TRAP${1}_FUNCTIONS" + if (( ! ${(P)+trap_functions} )); then + typeset -gaU "$trap_functions" + fi + eval "$trap_functions+="$2"" + + if (( ! $+functions[TRAP${1}] )); then + eval " + function TRAP${1} { + for trap_function in \"\$TRAP${1}_FUNCTIONS[@]\"; do + if (( \$+functions[\$trap_function] )); then + \"\$trap_function\" \"\$1\" + fi + done + return \$(( 128 + \$1 )) + } + " + fi +} + +add-zsh-trap "$@" diff --git a/prezto/.zprezto/modules/helper/init.zsh b/prezto/.zprezto/modules/helper/init.zsh new file mode 100644 index 0000000..328bed4 --- /dev/null +++ b/prezto/.zprezto/modules/helper/init.zsh @@ -0,0 +1,31 @@ +# +# Defines helper functions. +# +# Authors: +# Sorin Ionescu +# + +# Checks if a file can be autoloaded by trying to load it in a subshell. +function is-autoloadable { + ( unfunction $1 ; autoload -U +X $1 ) &> /dev/null +} + +# Checks if a name is a command, function, or alias. +function is-callable { + (( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] )) +} + +# Checks a boolean variable for "true". +# Case insensitive: "1", "y", "yes", "t", "true", "o", and "on". +function is-true { + [[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]] +} + +# Prints the first non-empty string in the arguments array. +function coalesce { + for arg in $argv; do + print "$arg" + return 0 + done + return 1 +} diff --git a/prezto/.zprezto/modules/history-search-multi-word b/prezto/.zprezto/modules/history-search-multi-word new file mode 160000 index 0000000..2a59378 --- /dev/null +++ b/prezto/.zprezto/modules/history-search-multi-word @@ -0,0 +1 @@ +Subproject commit 2a593787b2645c941c6aabfabca7dfd00721d56b diff --git a/prezto/.zprezto/modules/history-substring-search/README.md b/prezto/.zprezto/modules/history-substring-search/README.md new file mode 100644 index 0000000..050a5c2 --- /dev/null +++ b/prezto/.zprezto/modules/history-substring-search/README.md @@ -0,0 +1,71 @@ +History Substring Search +======================== + +Integrates [zsh-history-substring-search][1] into Prezto, which implements +the [Fish shell][2]'s history search feature, where the user can type in any +part of a previously entered command and press up and down to cycle through +matching commands. + +If this module is used in conjunction with the *syntax-highlighting* module, +this module must be loaded **after** the *syntax-highlighting* module. + +Contributors +------------ + +New features and bug fixes should be submitted to the +[zsh-history-substring-search][1] project according to its rules and +regulations. This module will be synchronized against it. + +Settings +-------- + +### Case Sensitivity + +To enable case-sensitivity for this module only, add the following line to +*zpreztorc*: + +```sh +zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' +``` + +### Highlighting + +If colors are enabled, *history-substring-search* will automatically highlight +positive results. + +To enable highlighting for this module only, add the following line to +*zpreztorc*: + +```sh +zstyle ':prezto:module:history-substring-search' color 'yes' +``` + +To set the query found color, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:history-substring-search:color' found '' +``` + +To set the query not found color, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:history-substring-search:color' not-found '' +``` + +To set the search globbing flags, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:history-substring-search' globbing-flags '' +``` + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Suraj N. Kurapati](https://github.com/sunaku) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/zsh-users/zsh-history-substring-search +[2]: http://fishshell.com +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/history-substring-search/external b/prezto/.zprezto/modules/history-substring-search/external new file mode 160000 index 0000000..aae3388 --- /dev/null +++ b/prezto/.zprezto/modules/history-substring-search/external @@ -0,0 +1 @@ +Subproject commit aae3388491c2312c4efb2e86bcb999927bb2900e diff --git a/prezto/.zprezto/modules/history-substring-search/init.zsh b/prezto/.zprezto/modules/history-substring-search/init.zsh new file mode 100644 index 0000000..d3ee3a1 --- /dev/null +++ b/prezto/.zprezto/modules/history-substring-search/init.zsh @@ -0,0 +1,59 @@ +# +# Integrates history-substring-search into Prezto. +# +# Authors: +# Suraj N. Kurapati +# Sorin Ionescu +# + +# Load dependencies. +pmodload 'editor' + +# Source module files. +source "${0:h}/external/zsh-history-substring-search.zsh" || return 1 + +# +# Search +# + +zstyle -s ':prezto:module:history-substring-search:color' found \ + 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \ + || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold' + +zstyle -s ':prezto:module:history-substring-search:color' not-found \ + 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \ + || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold' + +zstyle -s ':prezto:module:history-substring-search' globbing-flags \ + 'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \ + || HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i' + +if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then + HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS="${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" +fi + +if ! zstyle -t ':prezto:module:history-substring-search' color; then + unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND} +fi + +# +# Key Bindings +# + +if [[ -n "$key_info" ]]; then + # Emacs + bindkey -M emacs "$key_info[Control]P" history-substring-search-up + bindkey -M emacs "$key_info[Control]N" history-substring-search-down + + # Vi + bindkey -M vicmd "k" history-substring-search-up + bindkey -M vicmd "j" history-substring-search-down + + # Emacs and Vi + for keymap in 'emacs' 'viins'; do + bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up + bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down + done + + unset keymap +fi diff --git a/prezto/.zprezto/modules/history/README.md b/prezto/.zprezto/modules/history/README.md new file mode 100644 index 0000000..a5a4acb --- /dev/null +++ b/prezto/.zprezto/modules/history/README.md @@ -0,0 +1,44 @@ +History +======= + +Sets [history][1] options and defines history aliases. + +Options +------- + + - `BANG_HIST` treats the **!** character specially during expansion. + - `EXTENDED_HISTORY` writes the history file in the *:start:elapsed;command* format. + - `SHARE_HISTORY` shares history between all sessions. Note that + `SHARE_HISTORY`, `INC_APPEND_HISTORY`, and `INC_APPEND_HISTORY_TIME` are + mutually exclusive. + - `HIST_EXPIRE_DUPS_FIRST` expires a duplicate event first when trimming history. + - `HIST_IGNORE_DUPS` does not record an event that was just recorded again. + - `HIST_IGNORE_ALL_DUPS` deletes an old recorded event if a new event is a duplicate. + - `HIST_FIND_NO_DUPS` does not display a previously found event. + - `HIST_IGNORE_SPACE` does not record an event starting with a space. + - `HIST_SAVE_NO_DUPS` does not write a duplicate event to the history file. + - `HIST_VERIFY` does not execute immediately upon history expansion. + - `HIST_BEEP` beeps when accessing non-existent history. + +Variables +--------- + + - `HISTFILE` stores the path to the history file. + - `HISTSIZE` stores the maximum number of events to save in the internal history. + - `SAVEHIST` stores the maximum number of events to save in the history file. + +Aliases +------- + + - `history-stat` lists the ten most used commands + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Robby Russell](https://github.com/robbyrussell) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://zsh.sourceforge.net/Guide/zshguide02.html#l16 +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/history/init.zsh b/prezto/.zprezto/modules/history/init.zsh new file mode 100644 index 0000000..a26f3c9 --- /dev/null +++ b/prezto/.zprezto/modules/history/init.zsh @@ -0,0 +1,38 @@ +# +# Sets history options and defines history aliases. +# +# Authors: +# Robby Russell +# Sorin Ionescu +# + +# +# Options +# + +setopt BANG_HIST # Treat the '!' character specially during expansion. +setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. +setopt SHARE_HISTORY # Share history between all sessions. +setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. +setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. +setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. +setopt HIST_FIND_NO_DUPS # Do not display a previously found event. +setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. +setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. +setopt HIST_VERIFY # Do not execute immediately upon history expansion. +setopt HIST_BEEP # Beep when accessing non-existent history. + +# +# Variables +# + +HISTFILE="${ZDOTDIR:-$HOME}/.zhistory" # The path to the history file. +HISTSIZE=10000 # The maximum number of events to save in the internal history. +SAVEHIST=10000 # The maximum number of events to save in the history file. + +# +# Aliases +# + +# Lists the ten most used commands. +alias history-stat="history 0 | awk '{print \$2}' | sort | uniq -c | sort -n -r | head" diff --git a/prezto/.zprezto/modules/homebrew/README.md b/prezto/.zprezto/modules/homebrew/README.md new file mode 100644 index 0000000..2a37553 --- /dev/null +++ b/prezto/.zprezto/modules/homebrew/README.md @@ -0,0 +1,45 @@ +Homebrew +======== + +Defines Homebrew specific environment variables and aliases. + +Variables +--------- + +Execute the following to list the environment variables loaded in the shell: + +```sh +brew shellenv +``` + +Aliases +------- + +### Homebrew + + - `brewc` cleans outdated brews and their cached archives. + - `brewC` cleans outdated brews, including keg-only, and their cached archives. + - `brewi` installs a formula. + - `brewl` lists installed formulae. + - `brewo` lists brews which have an update available. + - `brews` searches for a formula. + - `brewu` updates and upgrades Homebrew packages and formulae. + - `brewx` uninstalls a formula. + +### Homebrew Cask + + - `cask` is aliased to `brew cask`. + - `caski` installs a cask. + - `caskl` lists installed casks. + - `casko` lists casks which have an update available. + - `caskx` uninstalls a cask. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Griffin Yourick](https://github.com/tough-griff) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/homebrew/init.zsh b/prezto/.zprezto/modules/homebrew/init.zsh new file mode 100644 index 0000000..056f1fb --- /dev/null +++ b/prezto/.zprezto/modules/homebrew/init.zsh @@ -0,0 +1,56 @@ +# +# Defines Homebrew aliases. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$OSTYPE" != (darwin|linux)* ]]; then + return 1 +fi + +# +# Variables +# + +# Load standard Homebrew shellenv into the shell session. +# Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related +# variables as they are already handled in standard zsh configuration. +if (( $+commands[brew] )); then + eval "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" +fi + +# +# Aliases +# + +# Homebrew +alias brewc='brew cleanup' +alias brewC='brew cleanup --force' +alias brewi='brew install' +alias brewl='brew list' +alias brewo='brew outdated' +alias brews='brew search' +alias brewu='brew upgrade' +alias brewx='brew uninstall' + +# Homebrew Cask +alias cask='brew cask' +alias caskc='hb_deprecated brew cask cleanup' +alias caskC='hb_deprecated brew cask cleanup' +alias caski='brew cask install' +alias caskl='brew cask list' +alias casko='brew cask outdated' +alias casks='hb_deprecated brew cask search' +alias caskx='brew cask uninstall' + +function hb_deprecated { + local cmd="${@[3]}" + local cmd_args="${@:4}" + + printf "'brew cask %s' has been deprecated, " "${cmd}" + printf "using 'brew %s' instead\n" "${cmd}" + + command brew "${cmd}" "${=cmd_args}" +} diff --git a/prezto/.zprezto/modules/macports/README.md b/prezto/.zprezto/modules/macports/README.md new file mode 100644 index 0000000..70e4b8b --- /dev/null +++ b/prezto/.zprezto/modules/macports/README.md @@ -0,0 +1,25 @@ +MacPorts +======== + +Defines MacPorts aliases and adds MacPorts directories to path variables. + +Aliases +------- + + - `portc` cleans the files used to build ports. + - `porti` installs a port. + - `ports` searches for a port. + - `portu` upgrades a port. + - `portU` upgrades MacPorts, the ports collection, and outdated ports. + - `portx` uninstalls a port. + - `portX` uninstalls inactive ports. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Matt Cable](https://github.com/curiousstranger) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/macports/init.zsh b/prezto/.zprezto/modules/macports/init.zsh new file mode 100644 index 0000000..d55744a --- /dev/null +++ b/prezto/.zprezto/modules/macports/init.zsh @@ -0,0 +1,34 @@ +# +# Defines MacPorts aliases and adds MacPorts directories to path variables. +# +# Authors: +# Matt Cable +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$OSTYPE" != darwin* ]]; then + return 1 +fi + +# +# Paths +# + +# Set the list of directories that Zsh searches for programs. +path=( + /opt/local/{bin,sbin} + $path +) + +# +# Aliases +# + +alias portc='sudo port clean --all installed' +alias porti='sudo port install' +alias ports='port search' +alias portU='sudo port selfupdate && sudo port upgrade outdated' +alias portu='sudo port upgrade' +alias portX='sudo port -u uninstall' +alias portx='sudo port uninstall' diff --git a/prezto/.zprezto/modules/node/README.md b/prezto/.zprezto/modules/node/README.md new file mode 100644 index 0000000..951f2a7 --- /dev/null +++ b/prezto/.zprezto/modules/node/README.md @@ -0,0 +1,56 @@ +Node.js +======= + +Provides utility functions for [Node.js][1], loads the Node Version Manager, and +enables [npm][2] completion. + +nvm +--- + +[nvm][5] allows for managing multiple, isolated Node.js installations in the +home directory. + +nodenv +------ + +[nodenv][6] does one thing well. nodenv is concerned solely with switching +Node versions. It's simple and predictable, Just Works, and is rock solid in +production. nodenv is forked from the popular [rbenv][7]. + +Functions +--------- + + - `node-doc` opens the Node.js online [API documentation][3] in the default + browser. + - `node-info` exposes information about the Node.js environment via the + `$node_info` associative array. + +Theming +------- + +To display the version number of the current Node.js version, define the +following style inside the `prompt_name_setup` function. + +```sh +# %v - Node.js version. +zstyle ':prezto:module:node:info:version' format 'version:%v' +``` + +Then add `$node_info[version]` to either `$PROMPT` or `$RPROMPT` and call +`node-info` in `prompt_name_preexec` hook function. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][4].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Zeh Rizzatti](https://github.com/zehrizzatti) + +[1]: http://nodejs.org +[2]: http://npmjs.org +[3]: http://nodejs.org/api +[4]: https://github.com/sorin-ionescu/prezto/issues +[5]: https://github.com/creationix/nvm +[6]: https://github.com/nodenv/nodenv +[7]: https://github.com/sstephenson/rbenv diff --git a/prezto/.zprezto/modules/node/functions/node-doc b/prezto/.zprezto/modules/node/functions/node-doc new file mode 100644 index 0000000..b1a048b --- /dev/null +++ b/prezto/.zprezto/modules/node/functions/node-doc @@ -0,0 +1,18 @@ +# +# Opens the Node.js online API documentation in the default browser. +# +# Authors: +# Sorin Ionescu +# + +# function node-doc { + +if [[ -z "$BROWSER" ]]; then + print "$0: no web browser defined" >&2 + return 1 +fi + +# TODO: Make the sections easier to use. +"$BROWSER" "http://nodejs.org/docs/$(node --version | sed 's/-.*//')/api/all.html#${1}" + +# } diff --git a/prezto/.zprezto/modules/node/functions/node-info b/prezto/.zprezto/modules/node/functions/node-info new file mode 100644 index 0000000..9feca3e --- /dev/null +++ b/prezto/.zprezto/modules/node/functions/node-info @@ -0,0 +1,32 @@ +# +# Exposes information about the Node.js environment via the $node_info +# associative array. +# +# Authors: +# Zeh Rizzatti +# + +# function node-info { + +local version +local version_format +local version_formatted + +unset node_info +typeset -gA node_info + +if (( $+functions[nvm_version] )); then + version="${$(nvm_version)#v}" +elif (( $+commands[nodenv] )); then + version="${${$(nodenv version)#v}[(w)0]}" +elif (( $+commands[node] )) ; then + version="${$(node -v)#v}" +fi + +if [[ "$version" != (none|) ]]; then + zstyle -s ':prezto:module:node:info:version' format 'version_format' + zformat -f version_formatted "$version_format" "v:$version" + node_info[version]="$version_formatted" +fi + +# } diff --git a/prezto/.zprezto/modules/node/init.zsh b/prezto/.zprezto/modules/node/init.zsh new file mode 100644 index 0000000..d8eea14 --- /dev/null +++ b/prezto/.zprezto/modules/node/init.zsh @@ -0,0 +1,57 @@ +# +# Loads the Node Version Manager and enables npm completion. +# +# Authors: +# Sorin Ionescu +# Zeh Rizzatti +# + +# Load manually installed NVM into the shell session. +if [[ -s "$HOME/.nvm/nvm.sh" ]]; then + source "$HOME/.nvm/nvm.sh" + +# Load package manager installed NVM into the shell session. +elif (( $+commands[brew] )) && \ + [[ -d "${nvm_prefix::="$(brew --prefix 2> /dev/null)"/opt/nvm}" ]]; then + source "$(brew --prefix nvm)/nvm.sh" + unset nvm_prefix + +# Load manually installed nodenv into the shell session. +elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then + path=("$HOME/.nodenv/bin" $path) + eval "$(nodenv init - --no-rehash zsh)" + +# Load package manager installed nodenv into the shell session. +elif (( $+commands[nodenv] )); then + eval "$(nodenv init - --no-rehash zsh)" + +# Return if requirements are not found. +elif (( ! $+commands[node] )); then + return 1 +fi + +# Load NPM and known helper completions. +typeset -A compl_commands=( + npm 'npm completion' + grunt 'grunt --completion=zsh' + gulp 'gulp --completion=zsh' +) + +for compl_command in "${(k)compl_commands[@]}"; do + if (( $+commands[$compl_command] )); then + cache_file="${TMPDIR:-/tmp}/prezto-$compl_command-cache.$UID.zsh" + + # Completion commands are slow; cache their output if old or missing. + if [[ "$commands[$compl_command]" -nt "$cache_file" \ + || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ + || ! -s "$cache_file" ]]; then + command ${=compl_commands[$compl_command]} >! "$cache_file" 2> /dev/null + fi + + source "$cache_file" + + unset cache_file + fi +done + +unset compl_command{s,} diff --git a/prezto/.zprezto/modules/ocaml/README.md b/prezto/.zprezto/modules/ocaml/README.md new file mode 100644 index 0000000..e170158 --- /dev/null +++ b/prezto/.zprezto/modules/ocaml/README.md @@ -0,0 +1,27 @@ +OCaml +===== + +Initializes [OCaml][1] package management. + +OPAM +---- + +[OPAM][2] is a package manager for OCaml. + +This module enables local package installation with OPAM by extending the +relevant path and OCaml variables. + +### Usage + +Install packages to your local package directory with `opam install`. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sebastian Wiesner](https://github.com/lunaryorn) + +[1]: http://ocaml.org/ +[2]: http://opam.ocamlpro.com/ +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/ocaml/init.zsh b/prezto/.zprezto/modules/ocaml/init.zsh new file mode 100644 index 0000000..b09c7eb --- /dev/null +++ b/prezto/.zprezto/modules/ocaml/init.zsh @@ -0,0 +1,14 @@ +# +# Initializes OCaml package management. +# +# Authors: +# Sebastian Wiesner +# + +# Return if requirements are not found. +if [[ ! -f "$HOME/.opam/opam-init/init.zsh" ]]; then + return 1 +fi + +# Initialize OPAM. +source "$HOME/.opam/opam-init/init.zsh" diff --git a/prezto/.zprezto/modules/osx/README.md b/prezto/.zprezto/modules/osx/README.md new file mode 100644 index 0000000..1f93a2c --- /dev/null +++ b/prezto/.zprezto/modules/osx/README.md @@ -0,0 +1,50 @@ +OSX +=== + +Defines [macOS][1] aliases and functions. + +Settings +-------- + +### Dash Keyword + +To change the keyword used by `mand` to open man pages in [_Dash.app_][2] from +its default value of 'manpages', add the following line in *zpreztorc* and +replace the **keyword** with the one configured in [_Dash.app_][2]. + +```sh +zstyle ':prezto:module:osx:man' dash-keyword 'keyword' +``` + +Aliases +------- + + - `cdf` changes the current working director to the current _Finder_ + directory. + - `pushdf` pushes the current working directory onto the directory queue and + changes the current working director to the current _Finder_ directory. + +Functions +--------- + + - `mand` opens _man_ pages in [_Dash.app_][2]. + - `manp` opens _man_ pages in _Preview.app_. + - `pfd` prints the current _Finder_ directory. + - `pfs` prints the current _Finder_ selection. + - `tab` creates a new tab (works in both _Terminal_ and [_iTerm_][3]). + - `ql` previews files in Quick Look. + - `osx-rm-dir-metadata` deletes .DS\_Store, \_\_MACOSX cruft. + - `osx-ls-download-history` displays the macOS download history. + - `osx-rm-download-history` deletes the macOS download history. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][4].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.apple.com/macosx/ +[2]: http://kapeli.com/dash +[3]: http://www.iterm2.com/ +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/osx/functions/_mand_manp b/prezto/.zprezto/modules/osx/functions/_mand_manp new file mode 100644 index 0000000..8ea1e56 --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/_mand_manp @@ -0,0 +1,11 @@ +#compdef mand manp +#autoload + +# +# Completes mand and manp. +# +# Authors: +# Sorin Ionescu +# + +_man diff --git a/prezto/.zprezto/modules/osx/functions/mand b/prezto/.zprezto/modules/osx/functions/mand new file mode 100644 index 0000000..2902c76 --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/mand @@ -0,0 +1,23 @@ +# +# Opens man pages in Dash.app. +# +# Authors: +# Sorin Ionescu +# + +function mand { + if (( $# > 0 )); then + zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages' + open "dash://$dashkw:$1" 2> /dev/null + if (( $? != 0 )); then + print "$0: Dash is not installed" >&2 + break + fi + else + print 'What manual page do you want?' >&2 + fi + + unset dashkw +} + +mand "$@" diff --git a/prezto/.zprezto/modules/osx/functions/manp b/prezto/.zprezto/modules/osx/functions/manp new file mode 100644 index 0000000..fcb2a02 --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/manp @@ -0,0 +1,19 @@ +# +# Opens man pages in Preview.app. +# +# Authors: +# Sorin Ionescu +# + +function manp { + local page + if (( $# > 0 )); then + for page in "$@"; do + man -t "$page" | open -f -a Preview + done + else + print 'What manual page do you want?' >&2 + fi +} + +manp "$@" diff --git a/prezto/.zprezto/modules/osx/functions/osx-ls-download-history b/prezto/.zprezto/modules/osx/functions/osx-ls-download-history new file mode 100644 index 0000000..8b6eaab --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/osx-ls-download-history @@ -0,0 +1,17 @@ +# +# Displays the macOS download history. +# +# Authors: +# Sorin Ionescu +# + +# function osx-ls-download-history { + +local db +for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do + if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then + sqlite3 "$db" 'SELECT LSQuarantineDataURLString FROM LSQuarantineEvent' + fi +done + +# } diff --git a/prezto/.zprezto/modules/osx/functions/osx-rm-dir-metadata b/prezto/.zprezto/modules/osx/functions/osx-rm-dir-metadata new file mode 100644 index 0000000..f15f4ed --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/osx-rm-dir-metadata @@ -0,0 +1,15 @@ +# +# Deletes .DS_Store and __MACOSX directories. +# +# Authors: +# Sorin Ionescu +# + +# function osx-rm-dir-metadata { + +find "${@:-$PWD}" \( \ + -type f -name '.DS_Store' -o \ + -type d -name '__MACOSX' \ +\) -print0 | xargs -0 rm -rf + +# } diff --git a/prezto/.zprezto/modules/osx/functions/osx-rm-download-history b/prezto/.zprezto/modules/osx/functions/osx-rm-download-history new file mode 100644 index 0000000..068ba3d --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/osx-rm-download-history @@ -0,0 +1,17 @@ +# +# Deletes the macOS download history. +# +# Authors: +# Sorin Ionescu +# + +# function osx-rm-download-history { + +local db +for db in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*; do + if grep -q 'LSQuarantineEvent' < <(sqlite3 "$db" .tables); then + sqlite3 "$db" 'DELETE FROM LSQuarantineEvent; VACUUM' + fi +done + +# } diff --git a/prezto/.zprezto/modules/osx/functions/pfd b/prezto/.zprezto/modules/osx/functions/pfd new file mode 100644 index 0000000..264b40b --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/pfd @@ -0,0 +1,16 @@ +# +# Displays the current Finder.app directory. +# +# Authors: +# Sorin Ionescu +# + +# function pfd { + +osascript 2> /dev/null < +# + +# function pfs { + +osascript 2>&1 < +# + +# function ql { + +if (( $# > 0 )); then + qlmanage -p "$@" &> /dev/null +fi + +# } diff --git a/prezto/.zprezto/modules/osx/functions/tab b/prezto/.zprezto/modules/osx/functions/tab new file mode 100644 index 0000000..c39a6a8 --- /dev/null +++ b/prezto/.zprezto/modules/osx/functions/tab @@ -0,0 +1,56 @@ +# +# Opens a new Terminal.app/iTerm.app tab in the current directory. +# +# Authors: +# Sorin Ionescu +# + +# function tab { + +local command="cd \\\"$PWD\\\"" +(( $# > 0 )) && command="${command}; $*" + +the_app=$( + osascript 2> /dev/null < /dev/null < /dev/null < /dev/null < +# + +# Return if requirements are not found. +if [[ "$OSTYPE" != darwin* ]]; then + return 1 +fi + +# +# Aliases +# + +# Changes directory to the current Finder directory. +alias cdf='cd "$(pfd)"' + +# Pushes directory to the current Finder directory. +alias pushdf='pushd "$(pfd)"' diff --git a/prezto/.zprezto/modules/pacman/README.md b/prezto/.zprezto/modules/pacman/README.md new file mode 100644 index 0000000..a619a74 --- /dev/null +++ b/prezto/.zprezto/modules/pacman/README.md @@ -0,0 +1,69 @@ +Pacman +====== + +Provides aliases and functions for the [Pacman][1] package manager and +frontends. + +Settings +-------- + +It is possible to use a Pacman frontend with the pacman aliases provided by this +package as long as that frontend supports the same command line options (The +[AUR Helpers][2] page has a good comparison which lists if the command line +options are pacman compatible). + +Please note that installing packages with an AUR Helper is not officially +supported by Archlinux. It is currently recommended to manually build AUR +packages using the [provided instructions][3]. The [aurutils][4] project has a +set of small utilities to make this easier. + +To enable a Pacman frontend, add the following line to *zpreztorc*, substituting +`pacman_frontend` with the name of the frontent: + +```sh +zstyle ':prezto:module:pacman' frontend 'pacman_frontend' +``` + +Aliases +------- + +### Pacman + + - `pac` is short for `pacman`. + - `paci` installs packages from repositories. + - `pacI` installs packages from files. + - `pacx` removes packages and unneeded dependencies. + - `pacX` removes packages, their configuration, and unneeded dependencies. + - `pacq` displays information about a package from the repositories. + - `pacQ` displays information about a package from the local database. + - `pacs` searches for packages in the repositories. + - `pacS` searches for packages in the local database. + - `pacu` synchronizes the local package and Arch Build System (requires `abs`) + databases against the repositories. + - `pacU` synchronizes the local package database against the repositories then + upgrades outdated packages. + - `pacman-list-orphans` lists orphan packages. + - `pacman-remove-orphans` removes orphan packages. + +### Frontends + +Functions +--------- + + - `aurget` clone an aur package + - `pacman-list-explicit` lists explicitly installed pacman packages. + - `pacman-list-disowned` lists pacman disowned files. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][5].* + + - [Benjamin Boudreau](https://github.com/dreur) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.archlinux.org/pacman/ +[2]: https://wiki.archlinux.org/index.php/AUR_helpers#Comparison_table +[3]: https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages +[4]: https://github.com/AladW/aurutils +[5]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/pacman/functions/pacman-list-disowned b/prezto/.zprezto/modules/pacman/functions/pacman-list-disowned new file mode 100644 index 0000000..9c8f56a --- /dev/null +++ b/prezto/.zprezto/modules/pacman/functions/pacman-list-disowned @@ -0,0 +1,26 @@ +# +# Lists Pacman disowned files. +# +# Authors: +# Benjamin Boudreau +# Sorin Ionescu +# + +# function pacman-list-disowned { + +local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$" +local db="$tmp/db" +local fs="$tmp/fs" + +mkdir "$tmp" +trap 'rm -rf "$tmp"' EXIT + +pacman --quiet --query --list | sort --unique > "$db" + +find /bin /etc /lib /sbin /usr \ + ! -name lost+found \ + \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" + +comm -23 "$fs" "$db" + +# } diff --git a/prezto/.zprezto/modules/pacman/functions/pacman-list-explicit b/prezto/.zprezto/modules/pacman/functions/pacman-list-explicit new file mode 100644 index 0000000..7c9b08f --- /dev/null +++ b/prezto/.zprezto/modules/pacman/functions/pacman-list-explicit @@ -0,0 +1,24 @@ +# +# Lists explicitly installed Pacman packages. +# +# Authors: +# Benjamin Boudreau +# Sorin Ionescu +# + +# function pacman-list-explicit { + +pacman --query --explicit --info \ + | awk ' + BEGIN { + FS=":" + } + /^Name/ { + print $2 + } + /^Description/ { + print $2 + } + ' + +# } diff --git a/prezto/.zprezto/modules/pacman/init.zsh b/prezto/.zprezto/modules/pacman/init.zsh new file mode 100644 index 0000000..88c977f --- /dev/null +++ b/prezto/.zprezto/modules/pacman/init.zsh @@ -0,0 +1,88 @@ +# +# Defines Pacman aliases. +# +# Authors: +# Benjamin Boudreau +# Sorin Ionescu +# +# Tips: +# https://wiki.archlinux.org/index.php/Pacman_Tips +# + +# Return if requirements are not found. +if (( ! $+commands[pacman] )); then + return 1 +fi + +# +# Frontend +# + +# Get the Pacman frontend. +zstyle -s ':prezto:module:pacman' frontend '_pacman_frontend' + +if (( $+commands[$_pacman_frontend] )); then + alias pacman="$_pacman_frontend" +else + _pacman_frontend='pacman' + _pacman_sudo='sudo ' +fi + +# +# Aliases +# + +# Pacman. +alias pac="${_pacman_frontend}" + +# Installs packages from repositories. +alias paci="${_pacman_sudo}${_pacman_frontend} --sync" + +# Installs packages from files. +alias pacI="${_pacman_sudo}${_pacman_frontend} --upgrade" + +# Removes packages and unneeded dependencies. +alias pacx="${_pacman_sudo}${_pacman_frontend} --remove" + +# Removes packages, their configuration, and unneeded dependencies. +alias pacX="${_pacman_sudo}${_pacman_frontend} --remove --nosave --recursive" + +# Displays information about a package from the repositories. +alias pacq="${_pacman_frontend} --sync --info" + +# Displays information about a package from the local database. +alias pacQ="${_pacman_frontend} --query --info" + +# Searches for packages in the repositories. +alias pacs="${_pacman_frontend} --sync --search" + +# Searches for packages in the local database. +alias pacS="${_pacman_frontend} --query --search" + +# Lists orphan packages. +alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --unrequired" + +# Removes orphan packages. +alias pacman-remove-orphans="${_pacman_sudo}${_pacman_frontend} --remove --recursive \$(${_pacman_frontend} --quiet --query --deps --unrequired)" + +# Synchronizes the local package and Arch Build System databases against the +# repositories using the asp tool. +if (( $+commands[asp] )); then + alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo asp update" +else + alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh" +fi + +# Synchronizes the local package database against the repositories then +# upgrades outdated packages. +alias pacU="${_pacman_sudo}${_pacman_frontend} --sync --refresh --sysupgrade" + +function aurget { + local target_dir="$1" + if [[ -n "$2" ]]; then + target_dir="$2" + fi + git clone "https://aur.archlinux.org/$1" "$target_dir" +} + +unset _pacman_{frontend,sudo} diff --git a/prezto/.zprezto/modules/perl/README.md b/prezto/.zprezto/modules/perl/README.md new file mode 100644 index 0000000..67f2a17 --- /dev/null +++ b/prezto/.zprezto/modules/perl/README.md @@ -0,0 +1,114 @@ +Perl +==== + +Enables local [Perl][1] module installation on macOS and defines aliases. + +Local Module Installation +------------------------- + +Perl versions older than 5.14 do not support the local installation of Perl +modules natively. This module allows for local installation of Perl modules on +macOS in *~/Library/Perl/5.12* by altering the environment. + +### Usage + +For Perl versions older than 5.14, install *local::lib*. + +```console +curl -L -C - -O http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz +tar xvf local-lib-1.008004.tar.gz +cd local-lib-1.008004 +perl Makefile.PL --bootstrap=$HOME/Library/Perl/5.12 +make && make test && make install +``` + +Install *cpanminus*: + +```console +curl -L http://cpanmin.us | perl - --self-upgrade +``` + +Perlbrew +-------- + +An alternative to the above is to use [Perlbrew][2], which allows for the +management of multiple, isolated Perl installations in the home directory. + +plenv +----- + +Yet another alternative is [plenv][3]. This is inspired from rbenv and enables +switching between multiple binary installations. + +The subcommands of plenv is similar with rbenv. + +Aliases +------- + +### General + + - `pl` is short for `perl`. + - `pld` looks up Perl documentation (`perldoc`). + - `ple` executes a one line program in a loop (`perl -wlne`). + +### Perlbrew + + - `plb` manages Perl environments. + - `plba` lists available Perl versions. + - `plbi` installs a Perl version. + - `plbl` lists installed Perl versions. + - `plbo` temporarily turns off Perlbrew. + - `plbO` turns off Perlbrew. + - `plbs` switches to a Perl version. + - `plbu` uninstalls a Perl version. + - `plbx` temporarily sets the Perl version to use. + +### plenv + + - `plv` manages Perl environments. + - `plvc` List all available plenv commands. + - `plvl` Set or show the local application-specific Perl version. + - `plvg` Set or show the global Perl version. + - `plvs` Set or show the shell-specific Perl version. + - `plvi` Install a Perl version using the perl-build plugin. + - `plvu` Uninstall a specific Perl version. + - `plvr` Rehash plenv shims (run this after installing executables). + - `plvv` Show the current Perl version and its origin. + - `plvV` List all Perl versions available to plenv. + - `plvw` Display the full path to an executable. + - `plvW` List all Perl versions that contain the given executable. + - `plvm` List cpan modules in current perl. + - `plvM` Migrate cpan modules from other version. + - `plvI` Install cpanm. + +Functions +--------- + + - `perl-info` exposes information about the Perl environment via the + `$perl_info` associative array. + +Theming +------- + +To display the name of the current Perl version in a prompt, define the +following style in the `prompt_name_setup` function. + +```sh +# %v - perl version. +zstyle ':prezto:module:perl:info:version' format 'version:%v' +``` + +Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call +`perl-info` in the `prompt_name_precmd` hook function. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][4].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.perl.org +[2]: http://perlbrew.pl +[3]: https://github.com/tokuhirom/plenv +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/perl/functions/perl-info b/prezto/.zprezto/modules/perl/functions/perl-info new file mode 100644 index 0000000..b42e23d --- /dev/null +++ b/prezto/.zprezto/modules/perl/functions/perl-info @@ -0,0 +1,34 @@ +# +# Exposes information about the Perl environment via the $perl_info associative +# array. +# +# Authors: +# JINNOUCHI Yasushi +# + +# function perl-info { + +local version +local version_format +local version_formatted + +# Clean up previous $perl_info. +unset perl_info +typeset -gA perl_info + +if (( $+commands[perlbrew] )); then + version="${PERLBREW_PERL##*perl-}" +elif (( $+commands[plenv] )); then + version=$(plenv version-name) +elif (( $+commands[perl] )); then + version=$(perl -e 'printf "%vd", $^V') +fi + +# Format version. +if [[ -n "$version" ]]; then + zstyle -s ':prezto:module:perl:info:version' format 'version_format' + zformat -f version_formatted "$version_format" "v:$version" + perl_info[version]="$version_formatted" +fi + +# } diff --git a/prezto/.zprezto/modules/perl/init.zsh b/prezto/.zprezto/modules/perl/init.zsh new file mode 100644 index 0000000..b7a7947 --- /dev/null +++ b/prezto/.zprezto/modules/perl/init.zsh @@ -0,0 +1,93 @@ +# +# Enables local Perl module installation on macOS and defines aliases. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[perl] )); then + return 1 +fi + +# +# Load Perlbrew or plenv +# + +# Load Perlbrew into the shell session. +if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc" ]]; then + source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/bashrc" + + # Load Perlbrew completion. + if [[ -s "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash" ]]; then + source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}/etc/perlbrew-completion.bash" + fi + +# Load manually installed plenv into the shell session. +elif [[ -s "$HOME/.plenv/bin/plenv" ]]; then + path=("$HOME/.plenv/bin" $path) + eval "$(plenv init - --no-rehash zsh)" + +# Load package manager installed plenv into the shell session. +elif (( $+commands[plenv] )); then + eval "$(plenv init - --no-rehash zsh)" +fi + +# +# Local Module Installation +# + +if [[ "$OSTYPE" == darwin* ]]; then + # Perl is slow; cache its output. + cache_file="${TMPDIR:-/tmp}/prezto-perl-cache.$UID.zsh" + perl_path="$HOME/Library/Perl/5.12" + + if [[ -f "$perl_path/lib/perl5/local/lib.pm" ]]; then + if [[ "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" || ! -s "$cache_file" ]]; then + perl -I$perl_path/lib/perl5 -Mlocal::lib=$perl_path >! "$cache_file" + fi + + source "$cache_file" + fi + + unset cache_file perl_path +fi + +# +# Aliases +# + +# General +alias pl='perl' +alias pld='perldoc' +alias ple='perl -wlne' + +# Perlbrew +if (( $+commands[perlbrew] )); then + alias plb='perlbrew' + alias plba='perlbrew available' + alias plbi='perlbrew install' + alias plbl='perlbrew list' + alias plbo='perlbrew off' + alias plbO='perlbrew switch-off' + alias plbs='perlbrew switch' + alias plbu='perlbrew use' + alias plbx='perlbrew uninstall' + +elif (( $+commands[plenv] )); then + alias plv='plenv' + alias plvc='plenv commands' + alias plvl='plenv local' + alias plvg='plenv global' + alias plvs='plenv shell' + alias plvi='plenv install' + alias plvu='plenv uninstall' + alias plvr='plenv rehash' + alias plvv='plenv version' + alias plvV='plenv versions' + alias plvw='plenv which' + alias plvW='plenv whence' + alias plvm='plenv list-modules' + alias plvM='plenv migrate-modules' + alias plvI='plenv install-cpanm' +fi diff --git a/prezto/.zprezto/modules/prompt/README.md b/prezto/.zprezto/modules/prompt/README.md new file mode 100644 index 0000000..523c83e --- /dev/null +++ b/prezto/.zprezto/modules/prompt/README.md @@ -0,0 +1,156 @@ +Prompt +====== + +Loads prompt [themes][1]. + +Settings +-------- + +### Prompt Theme + +To select a prompt theme, add the following to *zpreztorc*, and replace **name** +with the name of the theme you wish to load. Setting it to **random** will load +a random theme. + +```sh +zstyle ':prezto:module:prompt' theme 'name' +``` + +### Prompt Display Length + +To change working directory prompt display length from 'short', set the +following to 'long' (without `~` expansion) or 'full' (with `~` expansion) +in *zpreztorc*. + +```sh +zstyle ':prezto:module:prompt' pwd-length 'short' +``` + +### Display Return Value + +Some prompts display the return value in the prompt. If a prompt has support, +this can be disabled with the following snippet. + +```sh +zstyle ':prezto:module:prompt' show-return-val 'no' +``` + +Theming +------- + +A prompt theme is an autoloadable function file with a special name, +`prompt_name_setup`, placed anywhere in `$fpath`, but for the purpose of this +project, themes **should** be placed in the *modules/prompt/functions* +directory. + +### Theme Functions + +There are three theme functions, a setup function, a help function, and +a preview function. The setup function **must** always be defined. The help +function and the preview functions are optional. + +#### `prompt_name_setup` + +This function is called by the `prompt` function to install the theme. This +function may define other functions as necessary to maintain the prompt, +including a function that displays help or a function used to preview it. + +**Do not call this function directly.** + +The most basic example of this function can be seen below. + +```sh +function prompt_name_setup { + PROMPT='%m%# ' + RPROMPT='' +} +``` + +#### `prompt_name_help` + +If the `prompt_name_setup` function is customizable via parameters, a help +function **should** be defined. The user will access it via `prompt -h name`. + +The most basic example of this function can be seen below. + +```sh +function prompt_name_help { + cat <] [] + +where the color is for the left-hand prompt. +EOH +} +``` + +#### `prompt_name_preview` + +If the `prompt_name_setup` function is customizable via parameters, a preview +function **should** be defined. The user will access it via `prompt -p name`. + +The most basic example of this function can be seen below. + +```sh +function prompt_name_preview { + if (( $# > 0 )); then + prompt_preview_theme theme "$@" + else + prompt_preview_theme theme red green blue + print + prompt_preview_theme theme yellow magenta black + fi +} +``` + +### Hook Functions + +There are many Zsh [hook][2] functions, but mostly the *precmd* hook will be +used. + +#### `prompt_name_precmd` + +This hook is called before the prompt is displayed and is useful for getting +information to display in a prompt. + +When calling functions to get information to display in a prompt, do not assume +that all the dependencies have been loaded. Always check for the availability of +a function before you calling it. + +**Do not register hook functions. They will be registered by the `prompt` function.** + +The most basic example of this function can be seen below. + +```sh +function prompt_name_precmd { + if (( $+functions[git-info] )); then + git-info + fi +} +``` + +Troubleshooting +--------------- + +### Fonts aren't displaying properly. + +On most systems, themes which use special characters need to have a patched font +installed and configured properly. + +Powerline provides some information on [terminal support][4] and [how to install +patched fonts][5] which should fix most font issues. + + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Prompt-Themes +[2]: http://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions +[3]: https://github.com/sorin-ionescu/prezto/issues +[4]: http://powerline.readthedocs.io/en/master/usage.html#terminal-emulator-requirements +[5]: http://powerline.readthedocs.io/en/latest/installation.html#fonts-installation diff --git a/prezto/.zprezto/modules/prompt/external/agnoster b/prezto/.zprezto/modules/prompt/external/agnoster new file mode 160000 index 0000000..6bba672 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/external/agnoster @@ -0,0 +1 @@ +Subproject commit 6bba672c7812a76defc3efed9b6369eeee2425dc diff --git a/prezto/.zprezto/modules/prompt/external/async b/prezto/.zprezto/modules/prompt/external/async new file mode 160000 index 0000000..b001fa5 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/external/async @@ -0,0 +1 @@ +Subproject commit b001fa529a874fbe8bd22a9d4526153138645289 diff --git a/prezto/.zprezto/modules/prompt/external/powerlevel9k b/prezto/.zprezto/modules/prompt/external/powerlevel9k new file mode 160000 index 0000000..17c069d --- /dev/null +++ b/prezto/.zprezto/modules/prompt/external/powerlevel9k @@ -0,0 +1 @@ +Subproject commit 17c069d25ac7b24af6b5dc7ecb9597cef881f582 diff --git a/prezto/.zprezto/modules/prompt/external/powerline b/prezto/.zprezto/modules/prompt/external/powerline new file mode 160000 index 0000000..c48e4c6 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/external/powerline @@ -0,0 +1 @@ +Subproject commit c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc diff --git a/prezto/.zprezto/modules/prompt/external/pure b/prezto/.zprezto/modules/prompt/external/pure new file mode 160000 index 0000000..a95d55c --- /dev/null +++ b/prezto/.zprezto/modules/prompt/external/pure @@ -0,0 +1 @@ +Subproject commit a95d55cc7d3a73fc562ac11e23c26113ed6d58cf diff --git a/prezto/.zprezto/modules/prompt/functions/async b/prezto/.zprezto/modules/prompt/functions/async new file mode 120000 index 0000000..ae0ec55 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/async @@ -0,0 +1 @@ +../external/async/async.zsh \ No newline at end of file diff --git a/prezto/.zprezto/modules/prompt/functions/prompt-pwd b/prezto/.zprezto/modules/prompt/functions/prompt-pwd new file mode 100644 index 0000000..53613e7 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt-pwd @@ -0,0 +1,30 @@ +# +# Prompt setup function commonly used by prompt themes. +# +# Authors: +# Sorin Ionescu +# + +# function prompt-pwd { + +setopt localoptions extendedglob + +local current_pwd="${PWD/#$HOME/~}" +local ret_directory + +if [[ "$current_pwd" == (#m)[/~] ]]; then + ret_directory="$MATCH" + unset MATCH +elif zstyle -m ':prezto:module:prompt' pwd-length 'full'; then + ret_directory=${PWD} +elif zstyle -m ':prezto:module:prompt' pwd-length 'long'; then + ret_directory=${current_pwd} +else + ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}" +fi + +unset current_pwd + +print "$ret_directory" + +# } diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_agnoster_setup b/prezto/.zprezto/modules/prompt/functions/prompt_agnoster_setup new file mode 120000 index 0000000..34d8bc6 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_agnoster_setup @@ -0,0 +1 @@ +../external/agnoster/agnoster.zsh-theme \ No newline at end of file diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_cloud_setup b/prezto/.zprezto/modules/prompt/functions/prompt_cloud_setup new file mode 100644 index 0000000..0637208 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_cloud_setup @@ -0,0 +1,121 @@ +# +# A minimal two-color theme. +# +# Authors: +# Kevin Laude +# +# Features: +# - One line, left aligned. +# - The prompt is prefixed by a character sequence of your choice. +# - Only displays the current directory instead of the full path. +# - Displays the current branch when in a git project (this requires loading +# the git module before prompt in ~/.zpreztorc). +# - Displays a character at the end of the prompt when in a git project with +# "dirty" files. +# +# Usage: +# This prompt's prefix symbol and colors are customizable: +# prompt cloud [] [] [] +# +# In ~/.zpreztorc: +# zstyle ':prezto:module:prompt' theme 'cloud' \ +# [''] \ +# [''] \ +# [''] +# +# If these options are not provided, the symbol defaults to "☁" with colors +# cyan and green. +# +# Screenshots: +# http://i.imgur.com/mJCZ8rE.png +# +# Note: +# This is a port of the oh-my-zsh cloud theme, originally written by Phillip +# Ridlen and Mark Drago +# + +# Load dependencies. +pmodload 'helper' + +function prompt_cloud_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi +} + +function prompt_cloud_help { + cat <] [] [] + +In ~/.zpreztorc: + zstyle ':prezto:module:prompt' theme 'cloud' [''] [''] [''] + +If these options are not provided, the symbol defaults to ☁ with colors cyan +and green. +EOT +} + +function prompt_cloud_preview { + if (( $# > 0 )); then + prompt_preview_theme 'cloud' "$@" + else + prompt_preview_theme 'cloud' + print + prompt_preview_theme 'cloud' "✯" + print + prompt_preview_theme 'cloud' ">" "yellow" "red" + fi +} + +function prompt_cloud_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Set the theme prefix to a cloud or to the user's given characters. + if [[ -n "$1" ]]; then + prefix="$1" + else + prefix='☁' + fi + + # Assign colors. + if [[ -n "$2" ]]; then + primary_color="$2" + else + primary_color='cyan' + fi + + if [[ -n "$3" ]]; then + secondary_color="$3" + else + secondary_color='green' + fi + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_cloud_precmd + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:dirty' format "%%B%F{$secondary_color}]%f%%b %F{yellow}⚡%f" + zstyle ':prezto:module:git:info:clean' format "%B%F{$secondary_color}]%f%b" + zstyle ':prezto:module:git:info:branch' format "%%B%F{$secondary_color}[%f%%b%%B%F{$primary_color}%b%f%%b" + zstyle ':prezto:module:git:info:keys' format \ + 'prompt' '%b%C%D' \ + 'rprompt' '' + + # Define prompts. + PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} ' + RPROMPT='' +} + +prompt_cloud_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_damoekri_setup b/prezto/.zprezto/modules/prompt/functions/prompt_damoekri_setup new file mode 100644 index 0000000..4fe132d --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_damoekri_setup @@ -0,0 +1,65 @@ +# +# A simple theme inspired by the Sorin and PeepCode themes. +# +# Authors: +# Daniel Møller Kristensen +# +# Screenshots: +# http://i.imgur.com/AX9HnPF.png +# + +# Load dependencies. +pmodload 'helper' + +prompt_damoekri_precmd() { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Format PWD. + _prompt_damoekri_pwd=$(prompt-pwd) + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby version information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_damoekri_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info and ruby-info before each command. + add-zsh-hook precmd prompt_damoekri_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:keymap:primary' format ' %F{green}»%f' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:action' format ':%F{magenta}%s%f' + zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' + zstyle ':prezto:module:git:info:clean' format ' %F{green}✔%f' + zstyle ':prezto:module:git:info:dirty' format ' %F{red}✗%f' + zstyle ':prezto:module:git:info:commit' format '%F{blue}%.7c%f' + zstyle ':prezto:module:git:info:position' format '%F{blue}%p%f' + zstyle ':prezto:module:git:info:keys' format \ + 'rprompt' ' $(coalesce "%b" "%p" "%c")%s%C%D' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format ' %F{yellow}%v%f' + + # Define prompts. + PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} ' + RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}' +} + +prompt_damoekri_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_giddie_setup b/prezto/.zprezto/modules/prompt/functions/prompt_giddie_setup new file mode 100644 index 0000000..3c194fb --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_giddie_setup @@ -0,0 +1,76 @@ +# +# A colorful, friendly, multiline theme with some handy features. +# +# Authors: +# Paul Gideon Dann +# Sorin Ionescu +# +# Features: +# - Simple VCS branch, staged, and unstaged indication. +# - Prompt character is different in a VCS repository. +# - Last command exit status is displayed when non-zero. +# +# Screenshots: +# http://i.imgur.com/rCo3S.png +# + +function +vi-set_novcs_prompt_symbol { + _prompt_giddie_symbol=')' +} + +function +vi-set_vcs_prompt_symbol { + _prompt_giddie_symbol='±' +} + +function +vi-git_precmd { + # Check for untracked files, since vcs_info does not. + if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + hook_com[unstaged]+='%F{green}?%f' + fi +} + +function prompt_giddie_precmd { + # Replace '/home/' with '~'. + _prompt_giddie_pwd="${PWD/#$HOME/~}" + vcs_info +} + +function prompt_giddie_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz vcs_info + autoload -Uz add-zsh-hook + + # Add hook to set up prompt parameters before each command. + add-zsh-hook precmd prompt_giddie_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f' + + # Set vcs_info parameters. + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u' + zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f' + zstyle ':vcs_info:*' stagedstr '%F{green}+%f' + zstyle ':vcs_info:*' unstagedstr '%F{green}!%f' + + # Set vcs_info hooks. + # NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd + # function, and no 'no-vcs' hook. + zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol + zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd + zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol + + # Define prompts. + PROMPT='%(?..%F{red}%B-> [%?]%b%f +)%F{magenta}%n%f@%F{yellow}%m%f|%F{green}${_prompt_giddie_pwd}%f${vcs_info_msg_0_} +%F{blue}${_prompt_giddie_symbol}%f ' + RPROMPT='${editor_info[keymap]}' + SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_giddie_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_kylewest_setup b/prezto/.zprezto/modules/prompt/functions/prompt_kylewest_setup new file mode 100644 index 0000000..70b6a54 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_kylewest_setup @@ -0,0 +1,65 @@ +# +# A single line theme with Git information on the left and Ruby on the right. +# +# Authors: +# Kyle West +# Sorin Ionescu +# +# Features: +# - Indicates dirty Git repository. +# - Indicates the Ruby version. +# - Indicates vi modes. +# +# Screenshots: +# http://i.imgur.com/dCwhynn.png +# + +function prompt_kylewest_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_kylewest_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_kylewest_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}❯%f%b" + zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}❮%f%b" + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'no' + zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f' + zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b' + zstyle ':prezto:module:git:info:indexed' format ' ' + zstyle ':prezto:module:git:info:unindexed' format ' ' + zstyle ':prezto:module:git:info:untracked' format ' ' + zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D ' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f' + + # Define prompts. + PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} ' + RPROMPT='${ruby_info[version]}' +} + +prompt_kylewest_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_minimal_setup b/prezto/.zprezto/modules/prompt/functions/prompt_minimal_setup new file mode 100644 index 0000000..b600768 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_minimal_setup @@ -0,0 +1,59 @@ +# +# A monochrome theme that displays basic information. +# +# Authors: +# Brian Tse +# Sorin Ionescu +# +# Screenshots: +# http://i.imgur.com/zLZNK.png +# + +function +vi-git_status { + # Check for untracked files or updated submodules since vcs_info does not. + if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + hook_com[unstaged]='%F{red}●%f' + fi +} + +function prompt_minimal_precmd { + vcs_info +} + +function prompt_minimal_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + # Add hook for calling vcs_info before each command. + add-zsh-hook precmd prompt_minimal_precmd + + # Set vcs_info parameters. + zstyle ':vcs_info:*' enable bzr git hg svn + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' stagedstr '%F{green}●%f' + zstyle ':vcs_info:*' unstagedstr '%F{yellow}●%f' + zstyle ':vcs_info:*' formats ' - [%b%c%u]' + zstyle ':vcs_info:*' actionformats " - [%b%c%u|%F{cyan}%a%f]" + zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b|%F{cyan}%r%f' + zstyle ':vcs_info:git*+set-message:*' hooks git_status + + # Define prompts. + PROMPT='%2~${vcs_info_msg_0_} » ' + RPROMPT='' +} + +function prompt_minimal_preview { + local +h PROMPT='' + local +h RPROMPT='' + local +h SPROMPT='' + + editor-info 2> /dev/null + prompt_preview_theme 'minimal' +} + +prompt_minimal_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_nicoulaj_setup b/prezto/.zprezto/modules/prompt/functions/prompt_nicoulaj_setup new file mode 100644 index 0000000..447ba1f --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_nicoulaj_setup @@ -0,0 +1,60 @@ +# +# A simple theme that displays only relevant information. +# +# Authors: +# Julien Nicoulaud +# Sorin Ionescu +# +# Features: +# - One line. +# - VCS information in the right prompt. +# - Only shows the path on the left prompt by default. +# - Crops the path to a defined length and only shows the path relative to +# the current VCS repository root. +# - Uses a different color depending on if the last command succeeded/failed. +# - Shows user@hostname if connected through SSH. +# - Shows if logged in as root or not. +# +# Screenshots: +# http://i.imgur.com/Xe1bu.png +# + +function prompt_nicoulaj_precmd { + vcs_info +} + +function prompt_nicoulaj_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + # Add hook for calling vcs_info before each command. + add-zsh-hook precmd prompt_nicoulaj_precmd + + # Customizable parameters. + local max_path_chars=30 + local user_char='❯' + local root_char='❯❯❯' + local success_color='%F{071}' + local failure_color='%F{124}' + local vcs_info_color='%F{242}' + + # Set vcs_info parameters. + zstyle ':vcs_info:*' enable bzr git hg svn + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' unstagedstr '!' + zstyle ':vcs_info:*' stagedstr '+' + zstyle ':vcs_info:*' actionformats "%S" "%r/%s/%b %u%c (%a)" + zstyle ':vcs_info:*' formats "%S" "%r/%s/%b %u%c" + zstyle ':vcs_info:*' nvcsformats "%~" "" + + # Define prompts. + PROMPT="%(?.${success_color}.${failure_color})${SSH_TTY:+[%n@%m]}%B%${max_path_chars}<...<"'${vcs_info_msg_0_%%.}'"%<<%(!.${root_char}.${user_char})%b%f " + RPROMPT="${vcs_info_color}"'${vcs_info_msg_1_}'"%f" +} + +prompt_nicoulaj_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_paradox_setup b/prezto/.zprezto/modules/prompt/functions/prompt_paradox_setup new file mode 100644 index 0000000..4f19989 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_paradox_setup @@ -0,0 +1,156 @@ +# +# A two-line, Powerline-inspired theme that displays contextual information. +# +# This theme requires a patched Powerline font, get them from +# https://github.com/Lokaltog/powerline-fonts. +# +# Authors: +# Isaac Wolkerstorfer +# Jeff Sandberg +# Sorin Ionescu +# Patrick Bos +# +# Screenshots: +# http://i.imgur.com/0XIWX.png +# + +# Load dependencies. +pmodload 'helper' + +# Define variables. +_prompt_paradox_current_bg='NONE' +_prompt_paradox_segment_separator='' +_prompt_paradox_start_time=$SECONDS + +function prompt_paradox_start_segment { + local bg fg + [[ -n "$1" ]] && bg="%K{$1}" || bg="%k" + [[ -n "$2" ]] && fg="%F{$2}" || fg="%f" + if [[ "$_prompt_paradox_current_bg" != 'NONE' && "$1" != "$_prompt_paradox_current_bg" ]]; then + print -n " $bg%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator$fg " + else + print -n "$bg$fg " + fi + _prompt_paradox_current_bg="$1" + [[ -n "$3" ]] && print -n "$3" +} + +function prompt_paradox_end_segment { + if [[ -n "$_prompt_paradox_current_bg" ]]; then + print -n " %k%F{$_prompt_paradox_current_bg}$_prompt_paradox_segment_separator" + else + print -n "%k" + fi + print -n "%f" + _prompt_paradox_current_bg='' +} + +function prompt_paradox_build_prompt { + prompt_paradox_start_segment black default '%(?::%F{red}✘ )%(!:%F{yellow}⚡ :)%(1j:%F{cyan}⚙ :)%F{blue}%n%F{red}@%F{green}%m%f' + prompt_paradox_start_segment blue black '$_prompt_paradox_pwd' + + if [[ -n "$git_info" ]]; then + prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}' + fi + + if [[ -n "$python_info" ]]; then + prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}' + fi + + prompt_paradox_end_segment +} + +prompt_paradox_print_elapsed_time() { + local end_time=$(( SECONDS - _prompt_paradox_start_time )) + local hours minutes seconds remainder + + if (( end_time >= 3600 )); then + hours=$(( end_time / 3600 )) + remainder=$(( end_time % 3600 )) + minutes=$(( remainder / 60 )) + seconds=$(( remainder % 60 )) + print -P "%B%F{red}>>> elapsed time ${hours}h${minutes}m${seconds}s%b" + elif (( end_time >= 60 )); then + minutes=$(( end_time / 60 )) + seconds=$(( end_time % 60 )) + print -P "%B%F{yellow}>>> elapsed time ${minutes}m${seconds}s%b" + elif (( end_time > 10 )); then + print -P "%B%F{green}>>> elapsed time ${end_time}s%b" + fi +} + +function prompt_paradox_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Format PWD. + _prompt_paradox_pwd=$(prompt-pwd) + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Python environment information. + if (( $+functions[python-info] )); then + python-info + fi + + # Calculate and print the elapsed time. + prompt_paradox_print_elapsed_time +} + +function prompt_paradox_preexec { + _prompt_paradox_start_time="$SECONDS" +} + +function prompt_paradox_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook for calling git-info before each command. + add-zsh-hook preexec prompt_paradox_preexec + add-zsh-hook precmd prompt_paradox_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b' + zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:action' format ' ⁝ %s' + zstyle ':prezto:module:git:info:added' format ' ✚' + zstyle ':prezto:module:git:info:ahead' format ' ⬆' + zstyle ':prezto:module:git:info:behind' format ' ⬇' + zstyle ':prezto:module:git:info:branch' format ' %b' + zstyle ':prezto:module:git:info:commit' format '➦ %.7c' + zstyle ':prezto:module:git:info:deleted' format ' ✖' + zstyle ':prezto:module:git:info:dirty' format ' ⁝' + zstyle ':prezto:module:git:info:modified' format ' ✱' + zstyle ':prezto:module:git:info:position' format '%p' + zstyle ':prezto:module:git:info:renamed' format ' ➙' + zstyle ':prezto:module:git:info:stashed' format ' S' + zstyle ':prezto:module:git:info:unmerged' format ' ═' + zstyle ':prezto:module:git:info:untracked' format ' ?' + zstyle ':prezto:module:git:info:keys' format \ + 'ref' '$(coalesce "%b" "%p" "%c")' \ + 'status' '%s%D%A%B%S%a%d%m%r%U%u' + + # %v - virtualenv name. + zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v' + + # Define prompts. + PROMPT=' +${(e)$(prompt_paradox_build_prompt)} + ${editor_info[keymap]} ' + RPROMPT='%F{blue}[%F{green}%D{%H:%M:%S}%F{blue}]%f' + SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_paradox_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_peepcode_setup b/prezto/.zprezto/modules/prompt/functions/prompt_peepcode_setup new file mode 100644 index 0000000..2081961 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_peepcode_setup @@ -0,0 +1,85 @@ +# +# A simple theme from PeepCode. +# http://peepcode.com/blog/2012/my-command-line-prompt +# +# Authors: +# Geoffrey Grosenbach +# Sorin Ionescu +# +# Screenshots: +# http://i.imgur.com/LhgmW.png +# + +function prompt_peepcode_precmd { + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_peepcode_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + # Add a hook for calling info functions before each command. + add-zsh-hook precmd prompt_peepcode_precmd + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'no' + zstyle ':prezto:module:git:info:action' format ' +%s' + zstyle ':prezto:module:git:info:branch' format ' %F{8}%b%f' + zstyle ':prezto:module:git:info:commit' format ' %F{white}%.7c%f' + zstyle ':prezto:module:git:info:indexed' format ' ' + zstyle ':prezto:module:git:info:unindexed' format ' ' + zstyle ':prezto:module:git:info:untracked' format ' ' + zstyle ':prezto:module:git:info:dirty' format ' %F{8}✗%f' + zstyle ':prezto:module:git:info:keys' format 'rprompt' '%b%c%s%D' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format ' %F{white}%v%f' + + # Define prompts. + PROMPT=" +%~ +%(?.%F{green}${1:-☻ }%f.%F{red}${1:-☻ }%f) " +RPROMPT='${ruby_info[version]}${git_info[rprompt]}' + +} + +function prompt_peepcode_help { + cat <] + +If this option is not provided, the symbol defaults to ☻. +EOH +} + +function prompt_peepcode_preview { + local +h PROMPT='%# ' + local +h RPROMPT='' + local +h SPROMPT='' + + if (( $# > 0 )); then + prompt_preview_theme 'peepcode' "$@" + else + prompt_preview_theme 'peepcode' + print + prompt_preview_theme 'peepcode' "❯" + print + prompt_preview_theme 'peepcode' "$" + fi +} + +prompt_peepcode_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup b/prezto/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup new file mode 120000 index 0000000..f692e0a --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup @@ -0,0 +1 @@ +../external/powerlevel9k/powerlevel9k.zsh-theme \ No newline at end of file diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_powerline_setup b/prezto/.zprezto/modules/prompt/functions/prompt_powerline_setup new file mode 120000 index 0000000..3715d75 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_powerline_setup @@ -0,0 +1 @@ +../external/powerline/prompt_powerline_setup \ No newline at end of file diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_pure_setup b/prezto/.zprezto/modules/prompt/functions/prompt_pure_setup new file mode 120000 index 0000000..1480fcf --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_pure_setup @@ -0,0 +1 @@ +../external/pure/pure.zsh \ No newline at end of file diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_skwp_setup b/prezto/.zprezto/modules/prompt/functions/prompt_skwp_setup new file mode 100644 index 0000000..f69dcdd --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_skwp_setup @@ -0,0 +1,75 @@ +# +# A single line theme with Git information on the left and Ruby on the right. +# +# Authors: +# Steve Losh +# Bart Trojanowski +# Brian Carper +# steeef +# Sorin Ionescu +# Yan Pritzker +# +# Screenshots: +# http://i.imgur.com/gLgVp6Y.png +# + +function prompt_skwp_precmd { + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Ruby information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_skwp_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + + # Add hook to set up prompt parameters before each command. + add-zsh-hook precmd prompt_skwp_precmd + + # Use extended color pallete if available. + if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then + _prompt_skwp_colors=( + "%F{81}" # Turquoise + "%F{166}" # Orange + "%F{135}" # Purple + "%F{161}" # Hotpink + "%F{118}" # Limegreen + ) + else + _prompt_skwp_colors=( + "%F{cyan}" + "%F{yellow}" + "%F{magenta}" + "%F{red}" + "%F{green}" + ) + fi + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:branch' format "${_prompt_skwp_colors[1]}%b%f" + zstyle ':prezto:module:git:info:added' format "${_prompt_skwp_colors[5]}●%f" + zstyle ':prezto:module:git:info:deleted' format "${_prompt_skwp_colors[2]}●%f" + zstyle ':prezto:module:git:info:modified' format "${_prompt_skwp_colors[4]}●%f" + zstyle ':prezto:module:git:info:untracked' format "${_prompt_skwp_colors[3]}●%f" + zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '[%v]' + + # Define prompts. + PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+${(e)git_info[prompt]}}'"$ " + RPROMPT='%F{blue}${ruby_info[version]}' +} + +prompt_skwp_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_smiley_setup b/prezto/.zprezto/modules/prompt/functions/prompt_smiley_setup new file mode 100644 index 0000000..3d41b3a --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_smiley_setup @@ -0,0 +1,65 @@ +# +# A simple theme that displays: +# - Python virtual environment. +# - Git branch. +# - Git state. +# - Last command exit state (smiley/X). +# +# Authors: +# Nadav Shatz +# +# Screenshots: +# http://i.imgur.com/ijycV6n.png +# + +# Load dependencies. +pmodload 'helper' + +function prompt_smiley_precmd { + unsetopt XTRACE KSH_ARRAYS + + # Get Git repository information. + if (( $+functions[git-info] )); then + git-info + fi + + # Get Python environment information. + if (( $+functions[python-info] )); then + python-info + fi + + # Get Ruby version information. + if (( $+functions[ruby-info] )); then + ruby-info + fi +} + +function prompt_smiley_setup { + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_smiley_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' + + # Set python-info parameters. + zstyle ':prezto:module:python:info:virtualenv' format '%F{yellow}[%v]%f ' + + # Set ruby-info parameters. + zstyle ':prezto:module:ruby:info:version' format '%F{yellow}[%v]%f ' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:branch' format '%F{blue}%b%f' + zstyle ':prezto:module:git:info:dirty' format '%%B%F{red} ±%f%%b' + zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)' + + # Define prompts. + PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) ' + RPROMPT='${editor_info[overwrite]}${VIM:+" %B%F{green}V%f%b"}' + SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' +} + +prompt_smiley_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_sorin_setup b/prezto/.zprezto/modules/prompt/functions/prompt_sorin_setup new file mode 100644 index 0000000..2df9212 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_sorin_setup @@ -0,0 +1,178 @@ +# +# A simple theme that displays relevant, contextual information. +# +# Authors: +# Sorin Ionescu +# +# Screenshots: +# http://i.imgur.com/nrGV6pg.png +# + +# +# 16 Terminal Colors +# -- --------------- +# 0 black +# 1 red +# 2 green +# 3 yellow +# 4 blue +# 5 magenta +# 6 cyan +# 7 white +# 8 bright black +# 9 bright red +# 10 bright green +# 11 bright yellow +# 12 bright blue +# 13 bright magenta +# 14 bright cyan +# 15 bright white +# + +# Load dependencies. +pmodload 'helper' + +function prompt_sorin_async_callback { + case $1 in + prompt_sorin_async_git) + # We can safely split on ':' because it isn't allowed in ref names. + IFS=':' read _git_target _git_post_target <<<"$3" + + # The target actually contains 3 space separated possibilities, so we need to + # make sure we grab the first one. + _git_target=$(coalesce ${(@)${(z)_git_target}}) + + if [[ -z "$_git_target" ]]; then + # No git target detected, flush the git fragment and redisplay the prompt. + if [[ -n "$_prompt_sorin_git" ]]; then + _prompt_sorin_git='' + zle && zle reset-prompt + fi + else + # Git target detected, update the git fragment and redisplay the prompt. + _prompt_sorin_git="${_git_target}${_git_post_target}" + zle && zle reset-prompt + fi + ;; + esac +} + +function prompt_sorin_async_git { + cd -q "$1" + if (( $+functions[git-info] )); then + git-info + print ${git_info[status]} + fi +} + +function prompt_sorin_async_tasks { + # Initialize async worker. This needs to be done here and not in + # prompt_sorin_setup so the git formatting can be overridden by other prompts. + if (( !${prompt_prezto_async_init:-0} )); then + async_start_worker prompt_sorin -n + async_register_callback prompt_sorin prompt_sorin_async_callback + typeset -g prompt_prezto_async_init=1 + fi + + # Kill the old process of slow commands if it is still running. + async_flush_jobs prompt_sorin + + # Compute slow commands in the background. + async_job prompt_sorin prompt_sorin_async_git "$PWD" +} + +function prompt_sorin_precmd { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + + # Format PWD. + _prompt_sorin_pwd=$(prompt-pwd) + + # Handle updating git data. We also clear the git prompt data if we're in a + # different git root now. + if (( $+functions[git-dir] )); then + local new_git_root="$(git-dir 2> /dev/null)" + if [[ $new_git_root != $_sorin_cur_git_root ]]; then + _prompt_sorin_git='' + _sorin_cur_git_root=$new_git_root + fi + fi + + # Run python info (this should be fast and not require any async) + if (( $+functions[python-info] )); then + python-info + fi + + prompt_sorin_async_tasks +} + +function prompt_sorin_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + autoload -Uz async && async + + # Add hook for calling git-info before each command. + add-zsh-hook precmd prompt_sorin_precmd + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:completing' format '%B%F{7}...%f%b' + zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{1}❯%F{3}❯%F{2}❯%f%b' + zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{3}♺%f' + zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{2}❮%F{3}❮%F{1}❮%f%b' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' + zstyle ':prezto:module:git:info:action' format '%F{7}:%f%%B%F{9}%s%f%%b' + zstyle ':prezto:module:git:info:added' format ' %%B%F{2}✚%f%%b' + zstyle ':prezto:module:git:info:ahead' format ' %%B%F{13}⬆%f%%b' + zstyle ':prezto:module:git:info:behind' format ' %%B%F{13}⬇%f%%b' + zstyle ':prezto:module:git:info:branch' format ' %%B%F{2}%b%f%%b' + zstyle ':prezto:module:git:info:commit' format ' %%B%F{3}%.7c%f%%b' + zstyle ':prezto:module:git:info:deleted' format ' %%B%F{1}✖%f%%b' + zstyle ':prezto:module:git:info:modified' format ' %%B%F{4}✱%f%%b' + zstyle ':prezto:module:git:info:position' format ' %%B%F{13}%p%f%%b' + zstyle ':prezto:module:git:info:renamed' format ' %%B%F{5}➜%f%%b' + zstyle ':prezto:module:git:info:stashed' format ' %%B%F{6}✭%f%%b' + zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{3}═%f%%b' + zstyle ':prezto:module:git:info:untracked' format ' %%B%F{7}◼%f%%b' + zstyle ':prezto:module:git:info:keys' format \ + 'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u' + + # Set python-info parameters. + zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} ' + + # Set up non-zero return value display + local show_return="✘ " + # Default is to show the return value + if zstyle -T ':prezto:module:prompt' show-return-val; then + show_return+='%? ' + fi + + # Get the async worker set up. + _sorin_cur_git_root='' + + _prompt_sorin_git='' + _prompt_sorin_pwd='' + + # Define prompts. + PROMPT='${SSH_TTY:+"%F{9}%n%f%F{7}@%f%F{3}%m%f "}%F{4}${_prompt_sorin_pwd}%(!. %B%F{1}#%f%b.)${editor_info[keymap]} ' + RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}' + RPROMPT+=${show_return} + RPROMPT+='%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' + SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' +} + +function prompt_sorin_preview { + local +h PROMPT='' + local +h RPROMPT='' + local +h SPROMPT='' + + editor-info 2> /dev/null + prompt_preview_theme 'sorin' +} + +prompt_sorin_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/functions/prompt_steeef_setup b/prezto/.zprezto/modules/prompt/functions/prompt_steeef_setup new file mode 100644 index 0000000..ca39f93 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/functions/prompt_steeef_setup @@ -0,0 +1,106 @@ +# +# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration. +# +# Authors: +# Steve Losh +# Bart Trojanowski +# Brian Carper +# steeef +# Sorin Ionescu +# +# Screenshots: +# http://i.imgur.com/HyRvv.png +# + +function prompt_steeef_precmd { + # Check for untracked files or updated submodules since vcs_info does not. + if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then + branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c${_prompt_steeef_colors[4]}●%f)" + else + branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)" + fi + + zstyle ':vcs_info:*:prompt:*' formats "${branch_format}" + + vcs_info 'prompt' + + if (( $+functions[python-info] )); then + python-info + fi +} + +function prompt_steeef_setup { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent sp subst) + + # Load required functions. + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + # Add hook for calling vcs_info before each command. + add-zsh-hook precmd prompt_steeef_precmd + + # Use extended color pallete if available. + if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then + _prompt_steeef_colors=( + "%F{81}" # Turquoise + "%F{166}" # Orange + "%F{135}" # Purple + "%F{161}" # Hotpink + "%F{118}" # Limegreen + ) + else + _prompt_steeef_colors=( + "%F{cyan}" + "%F{yellow}" + "%F{magenta}" + "%F{red}" + "%F{green}" + ) + fi + + # Formats: + # %b - branchname + # %u - unstagedstr (see below) + # %c - stagedstr (see below) + # %a - action (e.g. rebase-i) + # %R - repository path + # %S - path in the repository + local branch_format="(${_prompt_steeef_colors[1]}%b%f%u%c)" + local action_format="(${_prompt_steeef_colors[5]}%a%f)" + local unstaged_format="${_prompt_steeef_colors[2]}●%f" + local staged_format="${_prompt_steeef_colors[5]}●%f" + + # Set editor-info parameters. + zstyle ':prezto:module:editor:info:keymap:primary' format '$' + + # Set vcs_info parameters. + zstyle ':vcs_info:*' enable bzr git hg svn + zstyle ':vcs_info:*:prompt:*' check-for-changes true + zstyle ':vcs_info:*:prompt:*' unstagedstr "${unstaged_format}" + zstyle ':vcs_info:*:prompt:*' stagedstr "${staged_format}" + zstyle ':vcs_info:*:prompt:*' actionformats "${branch_format}${action_format}" + zstyle ':vcs_info:*:prompt:*' formats "${branch_format}" + zstyle ':vcs_info:*:prompt:*' nvcsformats "" + + # Set python-info parameters. + zstyle ':prezto:module:python:info:virtualenv' format '(%v)' + + # Define prompts. + PROMPT=" +${_prompt_steeef_colors[3]}%n%f at ${_prompt_steeef_colors[2]}%m%f in ${_prompt_steeef_colors[5]}%~%f "'${vcs_info_msg_0_}'" +"'$python_info[virtualenv]${editor_info[keymap]} ' + RPROMPT='' +} + +function prompt_steeef_preview { + local +h PROMPT='' + local +h RPROMPT='' + local +h SPROMPT='' + + editor-info 2> /dev/null + prompt_preview_theme 'steeef' +} + +prompt_steeef_setup "$@" diff --git a/prezto/.zprezto/modules/prompt/init.zsh b/prezto/.zprezto/modules/prompt/init.zsh new file mode 100644 index 0000000..30d9084 --- /dev/null +++ b/prezto/.zprezto/modules/prompt/init.zsh @@ -0,0 +1,23 @@ +# +# Loads prompt themes. +# +# Authors: +# Sorin Ionescu +# + +# Load and execute the prompt theming system. +autoload -Uz promptinit && promptinit + +# Load the prompt theme. +zstyle -a ':prezto:module:prompt' theme 'prompt_argv' +if [[ "$TERM" == (dumb|linux|*bsd*) ]] || (( $#prompt_argv < 1 )); then + prompt 'off' +else + prompt "$prompt_argv[@]" +fi +unset prompt_argv + +#Prompt Customizations +export POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir rbenv vcs ) +export POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(vi_mode root_indicator background_jobs context) +POWERLEVEL9K_VI_INSERT_MODE_STRING="MODE" diff --git a/prezto/.zprezto/modules/python/README.md b/prezto/.zprezto/modules/python/README.md new file mode 100644 index 0000000..121ea37 --- /dev/null +++ b/prezto/.zprezto/modules/python/README.md @@ -0,0 +1,161 @@ +Python +====== + +Enables local Python and local Python package installation. + +Settings +-------- + +This module supports virtual environments from conda and virtualenvwrapper. By +default, only virtualenvwrapper is enabled. To disable virtualenvwrapper, add +the following to *zpreztorc*. + +```sh +zstyle ':prezto:module:python' skip-virtualenvwrapper-init 'on' +``` + +Conda support is enabled by adding the following to *zpreztorc*. + +```sh +zstyle ':prezto:module:python' conda-init 'on' +``` + +Caution: using conda and virtualenvwrapper at the same time may cause conflicts. + +Local Python Installation +------------------------- + +[pyenv][4] builds and installs multiple Python versions locally in the home +directory. + +This module prepends the pyenv directory to the path variable to enable the +execution of `pyenv`. + +### Usage + +Install Python versions with `pyenv install` into `~/.pyenv/versions`. + +Local Package Installation +-------------------------- + +Since version 2.6, Python supports per user package installation, as defined in +[PEP 370][1]. + +This module prepends per user site directories to the relevant path variables +to enable the execution of user installed scripts and the reading of +documentation. + +### Usage + +Install packages into the per user site directory with `pip install --user`. + +virtualenvwrapper +----------------- + +[`virtualenvwrapper`][2] is a frontend to the popular [`virtualenv`][3] utility. + +`virtualenv` creates isolated Python environments and `virtualenvwrapper` +provides convenient shell functions to create, switch, and manage them. + +### Usage + +Install `virtualenvwrapper`. + +Virtual environments are stored in `~/.virtualenvs`. + +There are configuration variables that have to be set to enable certain features. +If you wish to use these features, export the variables in [`zshenv`][6]. + +The variable `$PROJECT_HOME` tells `virtualenvwrapper` where to place project +working directories. It must be set and the directory created before `mkproject` +is used. Replace *Developer* with your projects directory. + +```sh +export PROJECT_HOME="$HOME/Developer" +``` + +The variable `VIRTUALENVWRAPPER_PYTHON` tells `virtualenvwrapper` to use the +specified full path of the `python` interpreter overriding the `$PATH` search. + +```sh +export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python +``` + +The variable `VIRTUALENVWRAPPER_VIRTUALENV` tells `virtualenvwrapper` to use the +specified full path of `virtualenv` binary overriding the `$PATH` search. + +```sh +export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv +``` + +The variable `$VIRTUALENVWRAPPER_VIRTUALENV_ARGS` tells `virtualenvwrapper` what +arguments to pass to `virtualenv`. For example, set the value to +`--system-site-packages` to ensure that all new environments have access to the +system site-packages directory. + +```sh +export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages' +``` + +### Additional Options + +There is a hook to enable auto-switching to virtualenvs when switching into a +directory where the root of the project matches a virtualenv name. + +This can be enabled with: + +```sh +zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' +``` + +`virtualenvwrapper` is automatically initialized if pre-requisites are met +(`$VIRTUALENVWRAPPER_VIRTUALENV` is explicitly set or `virtualenv` is in +`$PATH`). This can be disabled with: + +```sh +zstyle ':prezto:module:python:virtualenv' initialize 'no' +``` + +Aliases +------- + + - `py` is short for `python`. + - `py2` is short for `python2`. + - `py3` is short for `python3`. + +Functions +--------- + + - `python-info` exposes information about the Python environment via the + `$python_info` associative array. + +Theming +------- + +To display the name of the current virtual enviroment in a prompt, define the +following style in the `prompt_name_setup` function. + + # %v - virtualenv name. + zstyle ':prezto:module:python:info:virtualenv' format 'virtualenv:%v' + +Then add `$python_info[virtualenv]` to `$PROMPT` or `$RPROMPT` and call +`python-info` in the `prompt_name_preexec` hook function. + +Similarly, you can use `:prezto:module:python:info:version:format` with `%v` for +the version and add `$python_info[version]` to your prompt for the current +python version/ + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][5].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Sebastian Wiesner](https://github.com/lunaryorn) + +[1]: http://www.python.org/dev/peps/pep-0370/ +[2]: http://www.doughellmann.com/projects/virtualenvwrapper/ +[3]: http://pypi.python.org/pypi/virtualenv +[4]: https://github.com/yyuu/pyenv +[5]: https://github.com/sorin-ionescu/prezto/issues +[6]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv diff --git a/prezto/.zprezto/modules/python/functions/python-info b/prezto/.zprezto/modules/python/functions/python-info new file mode 100644 index 0000000..144a5b6 --- /dev/null +++ b/prezto/.zprezto/modules/python/functions/python-info @@ -0,0 +1,53 @@ +# +# Exposes information about the Python environment via the $python_info +# associative array. +# +# Authors: +# Sorin Ionescu +# Patrick Bos +# + +# function python-info { + +local virtualenv_format +local virtualenv_formatted +local version_format +local version_formatted +local version + +# Clean up previous $python_info. +unset python_info +typeset -gA python_info + +# Grab the styling we might have to do +zstyle -s ':prezto:module:python:info:virtualenv' format 'virtualenv_format' +zstyle -s ':prezto:module:python:info:version' format 'version_format' + +# Format virtualenv. +if [[ -n "$virtualenv_format" ]]; then + if [[ -n "$VIRTUAL_ENV" ]]; then + zformat -f virtualenv_formatted "$virtualenv_format" "v:${VIRTUAL_ENV:t}" + python_info[virtualenv]="$virtualenv_formatted" + fi + + # Do the same for Conda virtual environments + if [[ -n "$CONDA_DEFAULT_ENV" ]]; then + zformat -f virtualenv_formatted "$virtualenv_format" "v:${CONDA_DEFAULT_ENV:t}" + python_info[virtualenv]="$virtualenv_formatted" + fi +fi + +if [[ -n "$version_format" ]]; then + if (( $+commands[pyenv] )); then + version="${"$(pyenv version)"%% *}" + elif (( $+commands[python] )); then + version="${$(python3 --version)#Python }" + fi + + if [[ -n "$version" && "$version" != "system" ]]; then + zformat -f version_formatted "$version_format" "v:$version" + python_info[version]="$version_formatted" + fi +fi + +# } diff --git a/prezto/.zprezto/modules/python/init.zsh b/prezto/.zprezto/modules/python/init.zsh new file mode 100644 index 0000000..44043f1 --- /dev/null +++ b/prezto/.zprezto/modules/python/init.zsh @@ -0,0 +1,192 @@ +# +# Enables local Python package installation. +# +# Authors: +# Sorin Ionescu +# Sebastian Wiesner +# Patrick Bos +# + +# Load manually installed pyenv into the path +if [[ -n "$PYENV_ROOT" && -s "$PYENV_ROOT/bin/pyenv" ]]; then + path=("$PYENV_ROOT/bin" $path) +elif [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then + path=("$HOME/.pyenv/bin" $path) +fi + +# Load pyenv into the current python session +if (( $+commands[pyenv] )); then + if [[ -z "$PYENV_ROOT" ]]; then + export PYENV_ROOT=$(pyenv root) + fi + eval "$(pyenv init - --no-rehash zsh)" + +# Prepend PEP 370 per user site packages directory, which defaults to +# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The +# path can be overridden using PYTHONUSERBASE. +else + if [[ -n "$PYTHONUSERBASE" ]]; then + path=($PYTHONUSERBASE/bin $path) + elif [[ "$OSTYPE" == darwin* ]]; then + path=($HOME/Library/Python/*/bin(N) $path) + else + # This is subject to change. + path=($HOME/.local/bin $path) + fi +fi + +# Return if requirements are not found. +if (( ! $+commands[python] && ! $+commands[pyenv] )); then + return 1 +fi + +function _python-workon-cwd { + # Check if this is a Git repo + local GIT_REPO_ROOT="" + local GIT_TOPLEVEL="$(git rev-parse --show-toplevel 2> /dev/null)" + if [[ $? == 0 ]]; then + GIT_REPO_ROOT="$GIT_TOPLEVEL" + fi + # Get absolute path, resolving symlinks + local PROJECT_ROOT="${PWD:A}" + while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \ + && ! -d "$PROJECT_ROOT/.git" && "$PROJECT_ROOT" != "$GIT_REPO_ROOT" ]]; do + PROJECT_ROOT="${PROJECT_ROOT:h}" + done + if [[ "$PROJECT_ROOT" == "/" ]]; then + PROJECT_ROOT="." + fi + # Check for virtualenv name override + local ENV_NAME="" + if [[ -f "$PROJECT_ROOT/.venv" ]]; then + ENV_NAME="$(cat "$PROJECT_ROOT/.venv")" + elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]]; then + ENV_NAME="$PROJECT_ROOT/.venv" + elif [[ "$PROJECT_ROOT" != "." ]]; then + ENV_NAME="${PROJECT_ROOT:t}" + fi + if [[ -n $CD_VIRTUAL_ENV && "$ENV_NAME" != "$CD_VIRTUAL_ENV" ]]; then + # We've just left the repo, deactivate the environment + # Note: this only happens if the virtualenv was activated automatically + deactivate && unset CD_VIRTUAL_ENV + fi + if [[ "$ENV_NAME" != "" ]]; then + # Activate the environment only if it is not already active + if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then + if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then + workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME" + elif [[ -e "$ENV_NAME/bin/activate" ]]; then + source $ENV_NAME/bin/activate && export CD_VIRTUAL_ENV="$ENV_NAME" + fi + fi + fi +} + +# Load auto workon cwd hook +if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then + # Auto workon when changing directory + autoload -Uz add-zsh-hook + add-zsh-hook chpwd _python-workon-cwd +fi + +# Load virtualenvwrapper into the shell session, if pre-requisites are met +# and unless explicitly requested not to +if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ + zstyle -T ':prezto:module:python:virtualenv' initialize ; then + # Set the directory where virtual environments are stored. + export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}" + + # Disable the virtualenv prompt. Note that we use the magic value used by the + # pure prompt because there's some additional logic in that prompt which tries + # to figure out if a user set this variable and disable the python portion of + # that prompt based on it which is the exact opposite of what we want to do. + export VIRTUAL_ENV_DISABLE_PROMPT=12 + + # Create a sorted array of available virtualenv related 'pyenv' commands to + # look for plugins of interest. Scanning shell '$path' isn't enough as they + # can exist in 'pyenv' synthesized paths (e.g., '~/.pyenv/plugins') instead. + local -a pyenv_plugins + if (( $+commands[pyenv] )); then + pyenv_plugins=(${(@oM)${(f)"$(pyenv commands --no-sh 2>/dev/null)"}:#virtualenv*}) + fi + + if (( $pyenv_plugins[(i)virtualenv-init] <= $#pyenv_plugins )); then + # Enable 'virtualenv' with 'pyenv'. + eval "$(pyenv virtualenv-init - zsh)" + + # Optionally activate 'virtualenvwrapper' plugin when available. + if (( $pyenv_plugins[(i)virtualenvwrapper(_lazy|)] <= $#pyenv_plugins )); then + pyenv "$pyenv_plugins[(R)virtualenvwrapper(_lazy|)]" + fi + else + # Fallback to 'virtualenvwrapper' without 'pyenv' wrapper if available + # in '$path' or in an alternative location on a Debian based system. + # + # If homebrew is installed and the python location wasn't overridden via + # environment variable we fall back to python3 then python2 in that order. + # This is needed to fix an issue with virtualenvwrapper as homebrew no + # longer shadows the system python. + if [[ -z "$VIRTUALENVWRAPPER_PYTHON" ]] && (( $+commands[brew] )); then + if (( $+commands[python3] )); then + export VIRTUALENVWRAPPER_PYTHON=$commands[python3] + elif (( $+commands[python2] )); then + export VIRTUALENVWRAPPER_PYTHON=$commands[python2] + fi + fi + + virtenv_sources=( + ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} + /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) + ) + if (( $#virtenv_sources )); then + source "${virtenv_sources[1]}" + fi + + unset virtenv_sources + fi + + unset pyenv_plugins +fi + +# Load PIP completion. +if (( $#commands[(i)pip(|[23])] )); then + cache_file="${TMPDIR:-/tmp}/prezto-pip-cache.$UID.zsh" + + # Detect and use one available from among 'pip', 'pip2', 'pip3' variants + pip_command="$commands[(i)pip(|[23])]" + + if [[ "$pip_command" -nt "$cache_file" \ + || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ + || ! -s "$cache_file" ]]; then + # pip is slow; cache its output. And also support 'pip2', 'pip3' variants + $pip_command completion --zsh \ + | sed -e "s/\(compctl -K [-_[:alnum:]]* pip\).*/\1{,2,3}{,.{0..9}}/" \ + >! "$cache_file" \ + 2> /dev/null + fi + + source "$cache_file" + + unset cache_file pip_command +fi + +# Load conda into the shell session, if requested +zstyle -T ':prezto:module:python' conda-init +if (( $? && $+commands[conda] )); then + if (( $(conda ..changeps1) )); then + echo "To make sure Conda doesn't change your prompt (should do that in the prompt module) run:\n conda config --set changeps1 false" + # TODO: + # We could just run this ourselves. In an exit hook + # (add zsh-hook zshexit [(anonymous) function]) we could then set it back + # to the way it was before we changed it. However, I'm not sure if this is + # exception safe, so left it like this for now. + fi +fi + +# +# Aliases +# + +alias py='python' +alias py2='python2' +alias py3='python3' diff --git a/prezto/.zprezto/modules/q/init.zsh b/prezto/.zprezto/modules/q/init.zsh new file mode 100755 index 0000000..418c011 --- /dev/null +++ b/prezto/.zprezto/modules/q/init.zsh @@ -0,0 +1,2 @@ +. $ZPREZTODIR/modules/q/q/q.plugin.zsh + diff --git a/prezto/.zprezto/modules/q/q b/prezto/.zprezto/modules/q/q new file mode 160000 index 0000000..d8fdd4f --- /dev/null +++ b/prezto/.zprezto/modules/q/q @@ -0,0 +1 @@ +Subproject commit d8fdd4f82fde2c20126793e7d7afc94a7c7f5d36 diff --git a/prezto/.zprezto/modules/rails/README.md b/prezto/.zprezto/modules/rails/README.md new file mode 100644 index 0000000..19bea1d --- /dev/null +++ b/prezto/.zprezto/modules/rails/README.md @@ -0,0 +1,34 @@ +Ruby on Rails +============= + +Defines [Ruby on Rails][1] aliases. + +Aliases +------- + + - `ror` is short for `rails`. + - `rorc` starts the Rails console. + - `rordc` starts the Rails console connected to the database. + - `rordm` migrates the database. + - `rordM` migrates the database and recreates the test database. + - `rordr` rolls the database schema back to the previous version. + - `rorg` generates new code. + - `rorl` displays the log. + - `rorlc` truncates logs to zero bytes. + - `rorp` installs a plugin. + - `rorr` runs code in the application environment. + - `rors` starts the Rails server. + - `rorsd` starts the Rails server with the debugger. + - `rorx` destroys newly generated code. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Robby Russell](https://github.com/robbyrussell) + - [Jake Bell](https://github.com/theunraveler) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://rubyonrails.org +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/rails/init.zsh b/prezto/.zprezto/modules/rails/init.zsh new file mode 100644 index 0000000..44b53e9 --- /dev/null +++ b/prezto/.zprezto/modules/rails/init.zsh @@ -0,0 +1,35 @@ +# +# Defines Ruby on Rails aliases. +# +# Authors: +# Robby Russell +# Jake Bell +# Sorin Ionescu +# + +# Load dependencies. +pmodload 'ruby' + +# Return if requirements are not found. +if (( ! $+commands[bundle] )); then + return 1 +fi + +# +# Aliases +# + +alias ror='bundle exec rails' +alias rorc='bundle exec rails console' +alias rordc='bundle exec rails dbconsole' +alias rordm='bundle exec rake db:migrate' +alias rordM='bundle exec rake db:migrate db:test:clone' +alias rordr='bundle exec rake db:rollback' +alias rorg='bundle exec rails generate' +alias rorl='tail -f "$(ruby-app-root)/log/development.log"' +alias rorlc='bundle exec rake log:clear' +alias rorp='bundle exec rails plugin' +alias rorr='bundle exec rails runner' +alias rors='bundle exec rails server' +alias rorsd='bundle exec rails server --debugger' +alias rorx='bundle exec rails destroy' diff --git a/prezto/.zprezto/modules/rsync/README.md b/prezto/.zprezto/modules/rsync/README.md new file mode 100644 index 0000000..77d78ea --- /dev/null +++ b/prezto/.zprezto/modules/rsync/README.md @@ -0,0 +1,27 @@ +Rsync +===== + +Defines [rsync][1] aliases. + +macOS users are encouraged to use [Bombich's rsync][2], which has HFS+ +enhancements. + +Aliases +------- + + - `rsync-copy` copies files and directories from *source* to *destination*. + - `rsync-move` moves files and directories from *source* to *destination*. + - `rsync-update` updates files and directories on *destination*. + - `rsync-synchronize` synchronizes files and directories between *source* and + *destination*. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://rsync.samba.org +[2]: https://bombich.com/kb/ccc5/credits#rsync +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/rsync/init.zsh b/prezto/.zprezto/modules/rsync/init.zsh new file mode 100644 index 0000000..b3010ed --- /dev/null +++ b/prezto/.zprezto/modules/rsync/init.zsh @@ -0,0 +1,35 @@ +# +# Defines Rsync aliases. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[rsync] )); then + return 1 +fi + +# +# Aliases +# + +_rsync_cmd='rsync --verbose --progress --human-readable --compress --archive \ + --hard-links --one-file-system' + +if grep -q 'xattrs' <(rsync --help 2>&1); then + _rsync_cmd="${_rsync_cmd} --acls --xattrs" +fi + +# macOS and HFS+ Enhancements +# https://bombich.com/kb/ccc5/credits +if [[ "$OSTYPE" == darwin* ]] && grep -q 'file-flags' <(rsync --help 2>&1); then + _rsync_cmd="${_rsync_cmd} --crtimes --fileflags --protect-decmpfs --force-change" +fi + +alias rsync-copy="${_rsync_cmd}" +alias rsync-move="${_rsync_cmd} --remove-source-files" +alias rsync-update="${_rsync_cmd} --update" +alias rsync-synchronize="${_rsync_cmd} --update --delete" + +unset _rsync_cmd diff --git a/prezto/.zprezto/modules/ruby/README.md b/prezto/.zprezto/modules/ruby/README.md new file mode 100644 index 0000000..12848d8 --- /dev/null +++ b/prezto/.zprezto/modules/ruby/README.md @@ -0,0 +1,112 @@ +Ruby +==== + +Configures [Ruby][1] local gem installation, loads version managers, and defines +aliases. + +Local Gem Installation +---------------------- + +When a Ruby version manager is not detected, local gems are installed in +`~/.gems`; otherwise, they are installed according to the manager. + +RVM +--- + +An alternative to the above is to use [The Ruby Version Manager (RVM)][2], which +allows for managing multiple, isolated Ruby installations and gem sets in the +home directory. + +Since RVM is loaded into the shell and is known to override shell commands, it +may conflict with shell scripts. + +Load this module as late as possible when using RVM since RVM will complain if +it is not first in `$PATH`. + +rbenv +----- + +An alternative RVM is to use [rbenv][3], which allows for switching between +multiple, isolated Ruby installations in the home directory. + +While it is not as feature rich as RVM, it is not loaded into the shell and is +not known to cause conflicts with shell scripts. + +chruby +------ + +Yet another alternative is [chruby][4], which is simpler than both RVM and +rbenv. + +### Settings + +#### Auto-Switch + +To enable auto switching the Ruby version on directory change based on the +`.ruby-version` file, add the following line to [`zpreztorc`][5]: + +```sh +zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' +``` + +Bundler +------- + +Manage gems that are not meant to be used as commands, such as application +dependencies, with [Bundler][6]. + +Aliases +------- + +### General + + - `rb` is short for `ruby`. + +### Bundler + + - `rbb` manages ruby dependencies (`bundle`). + - `rbbc` cleans up unused gems in your bundler directory. + - `rbbe` executes a script in the context of the current bundle. + - `rbbi` installs the gems specified in the `Gemfile` in `vendor/bundle`. + - `rbbI` installs the following: + - gems specified in the `Gemfile` in `vendor/bundle`. + - packages the gems into `vendor/cache`. + - appends bundler directories to `.gitignore`. + - `rbbl` lists all gems in the current bundle. + - `rbbo` opens an installed gem in the editor. + - `rbbp` packages gem files into `vendor/cache`. + - `rbbu` updates gems to their latest version. + +Functions +--------- + + - `ruby-app-root` displays the path to the Ruby application root directory. + - `ruby-info` exposes information about the Ruby environment via the + `$ruby_info` associative array. + +Theming +------- + +To display the name of the current Ruby version in a prompt, define the +following style in the `prompt_name_setup` function. + + # %v - ruby version. + zstyle ':prezto:module:ruby:info:version' format 'version:%v' + +Then add `$ruby_info[version]` to `$PROMPT` or `$RPROMPT` and call +`ruby-info` in the `prompt_name_preexec` hook function. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][7].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.ruby-lang.org +[2]: https://rvm.io +[3]: https://github.com/sstephenson/rbenv +[4]: https://github.com/postmodern/chruby +[5]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zpreztorc +[6]: http://gembundler.com +[7]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/ruby/functions/ruby-app-root b/prezto/.zprezto/modules/ruby/functions/ruby-app-root new file mode 100644 index 0000000..ef28c5b --- /dev/null +++ b/prezto/.zprezto/modules/ruby/functions/ruby-app-root @@ -0,0 +1,22 @@ +# +# Displays the path to the Ruby application root directory. +# +# Authors: +# Sorin Ionescu +# + +# function ruby-app-root { + +local root_dir="$PWD" + +while [[ "$root_dir" != '/' ]]; do + if [[ -f "$root_dir/Gemfile" ]]; then + print "$root_dir" + break + fi + root_dir="$root_dir:h" +done + +return 1 + +# } diff --git a/prezto/.zprezto/modules/ruby/functions/ruby-info b/prezto/.zprezto/modules/ruby/functions/ruby-info new file mode 100644 index 0000000..cba0188 --- /dev/null +++ b/prezto/.zprezto/modules/ruby/functions/ruby-info @@ -0,0 +1,38 @@ +# +# Exposes information about the Ruby environment via the $ruby_info associative +# array. +# +# Authors: +# Sorin Ionescu +# + +# function ruby-info { + +local version +local version_format +local version_formatted + +# Clean up previous $ruby_info. +unset ruby_info +typeset -gA ruby_info + +# Grab formatting for anything we might have to do +zstyle -s ':prezto:module:ruby:info:version' format 'version_format' + +if [[ -n "$version_format" ]]; then + if (( $+commands[rvm-prompt] )); then + version="$(rvm-prompt)" + elif (( $+commands[rbenv] )); then + version="$(rbenv version-name)" + elif (( $+commands[ruby] )); then + version="${${$(ruby --version)[(w)1,(w)2]}/ /-}" + fi + + # Format version. + if [[ -n "$version" && "$version" != "system" ]]; then + zformat -f version_formatted "$version_format" "v:$version" + ruby_info[version]="$version_formatted" + fi +fi + +# } diff --git a/prezto/.zprezto/modules/ruby/init.zsh b/prezto/.zprezto/modules/ruby/init.zsh new file mode 100644 index 0000000..4ede366 --- /dev/null +++ b/prezto/.zprezto/modules/ruby/init.zsh @@ -0,0 +1,74 @@ +# +# Configures Ruby local gem installation, loads version managers, and defines +# aliases. +# +# Authors: Sorin Ionescu +# + +# Load RVM into the shell session. +if [[ -s "$HOME/.rvm/scripts/rvm" ]]; then + # Unset AUTO_NAME_DIRS since auto adding variable-stored paths to ~ list + # conflicts with RVM. + unsetopt AUTO_NAME_DIRS + + # Source RVM. + source "$HOME/.rvm/scripts/rvm" + +# Load manually installed rbenv into the shell session. +elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then + path=("$HOME/.rbenv/bin" $path) + eval "$(rbenv init - --no-rehash zsh)" + +# Load package manager installed rbenv into the shell session. +elif (( $+commands[rbenv] )); then + eval "$(rbenv init - --no-rehash zsh)" + +# Load package manager installed chruby into the shell session. +elif (( $+commands[chruby-exec] )); then + if (( ! $+functions[chruby] )); then + source "${commands[chruby-exec]:h:h}/share/chruby/chruby.sh" + fi + + if zstyle -t ':prezto:module:ruby:chruby' auto-switch; then + if (( ! $+functions[chruby_auto] )); then + source "${commands[chruby-exec]:h:h}/share/chruby/auto.sh" + fi + + # If a default Ruby is set, switch to it. + chruby_auto + fi + +# Prepend local gems bin directories to PATH. +else + path=($HOME/.gem/ruby/*/bin(N) $path) +fi + +# Return if requirements are not found. +if (( ! $+commands[ruby] && ! ( $+commands[rvm] || $+commands[rbenv] ) )); then + return 1 +fi + +# +# Aliases +# + +# General +alias rb='ruby' + +# Bundler +if (( $+commands[bundle] )); then + alias rbb='bundle' + alias rbbc='bundle clean' + alias rbbe='bundle exec' + alias rbbi='bundle install --path vendor/bundle' + alias rbbl='bundle list' + alias rbbo='bundle open' + alias rbbp='bundle package' + alias rbbu='bundle update' + alias rbbI='rbbi \ + && bundle package \ + && print .bundle >>! .gitignore \ + && print vendor/assets >>! .gitignore \ + && print vendor/bundle >>! .gitignore \ + && print vendor/cache >>! .gitignore' +fi diff --git a/prezto/.zprezto/modules/screen/README.md b/prezto/.zprezto/modules/screen/README.md new file mode 100644 index 0000000..0a9ff07 --- /dev/null +++ b/prezto/.zprezto/modules/screen/README.md @@ -0,0 +1,44 @@ +GNU Screen +========== + +Defines [GNU Screen][1] aliases and provides for auto launching it at start-up. + +Settings +-------- + +### Auto-Start + +Starts a GNU Screen session automatically when Zsh is launched. + +To enable this feature when launching Zsh in a local terminal, add the +following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:screen:auto-start' local 'yes' +``` + +To enable this feature when launching Zsh in a SSH connection, add the +following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:screen:auto-start' remote 'yes' +``` + +Aliases +------- + + - `scr` is short for `screen`. + - `scrl` lists sessions/socket directory. + - `scrn` starts a new session. + - `scrr` attaches to a session if one exists or start a new one. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Georges Discry](https://github.com/gdiscry) + +[1]: http://www.gnu.org/software/screen/ +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/screen/init.zsh b/prezto/.zprezto/modules/screen/init.zsh new file mode 100644 index 0000000..0dee1c9 --- /dev/null +++ b/prezto/.zprezto/modules/screen/init.zsh @@ -0,0 +1,42 @@ +# +# Defines GNU Screen aliases and provides for auto launching it at start-up. +# +# Authors: +# Sorin Ionescu +# Georges Discry +# + +# Return if requirements are not found. +if (( ! $+commands[screen] )); then + return 1 +fi + +# +# Auto Start +# + +if [[ -z "$STY" && -z "$EMACS" && -z "$VIM" ]] && ( \ + ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' remote ) || + ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:screen:auto-start' local ) \ +); then + session="$( + screen -list 2> /dev/null \ + | sed '1d;$d' \ + | awk '{print $1}' \ + | head -1)" + + if [[ -n "$session" ]]; then + exec screen -x "$session" + else + exec screen -a -A -U -D -R -m "$SHELL" -l + fi +fi + +# +# Aliases +# + +alias scr='screen' +alias scrl='screen -list' +alias scrn='screen -U -S' +alias scrr='screen -a -A -U -D -R' diff --git a/prezto/.zprezto/modules/should-use/external b/prezto/.zprezto/modules/should-use/external new file mode 160000 index 0000000..79b9194 --- /dev/null +++ b/prezto/.zprezto/modules/should-use/external @@ -0,0 +1 @@ +Subproject commit 79b9194b1d412af0a5b635af20a81a27f0a82ee2 diff --git a/prezto/.zprezto/modules/should-use/init.zsh b/prezto/.zprezto/modules/should-use/init.zsh new file mode 100755 index 0000000..e7d57bc --- /dev/null +++ b/prezto/.zprezto/modules/should-use/init.zsh @@ -0,0 +1 @@ +source $ZPREZTODIR/modules/should-use/external/you-should-use.plugin.zsh diff --git a/prezto/.zprezto/modules/spectrum/README.md b/prezto/.zprezto/modules/spectrum/README.md new file mode 100644 index 0000000..66abcb2 --- /dev/null +++ b/prezto/.zprezto/modules/spectrum/README.md @@ -0,0 +1,91 @@ +Spectrum +======== + +Provides for easier use of 256 colors and effects. + +To learn more about text formatting, read [A Guide to 256 Color Codes][1]. + +Variables +--------- + + - `BG` provides background colors. + - `FG` provides foreground colors. + - `FX` provides effects. + +### Background and Foreground + +Terminals support 8, 16, 88, and 256 colors. Check if a terminal supports 256 +colors with `tput colors` before use. + +The following colors are supported. + +- 0 to 255 +- black +- red +- green +- yellow +- blue +- magenta +- cyan +- white + +### Effects + +Though there are many effects, most terminals support at least bold formatting. + +**Not all effects work on all terminals; use them sparingly.** + +| Enable | Disable | +| ------------------------- | ---------------------------- | +| | none | +| | normal | +| bold | no-bold | +| faint | no-faint | +| standout | no-standout | +| underline | no-underline | +| blink | no-blink | +| fast-blink | no-fast-blink | +| reverse | no-reverse | +| conceal | no-conceal | +| strikethrough | no-strikethrough | +| gothic | no-gothic | +| double-underline | no-double-underline | +| proportional | no-proportional | +| overline | no-overline | +| | | +| | no-border | +| border-rectangle | no-border-rectangle | +| border-circle | no-border-circle | +| | | +| | no-ideogram-marking | +| underline-or-right | no-underline-or-right | +| double-underline-or-right | no-double-underline-or-right | +| overline-or-left | no-overline-or-left | +| double-overline-or-left | no-double-overline-or-left | +| stress | no-stress | +| | | +| | font-default | +| font-first | no-font-first | +| font-second | no-font-second | +| font-third | no-font-third | +| font-fourth | no-font-fourth | +| font-fifth | no-font-fifth | +| font-sixth | no-font-sixth | +| font-seventh | no-font-seventh | +| font-eigth | no-font-eigth | +| font-ninth | no-font-ninth | + +### Plain Text + +Use `$BG[none]`, `$FG[none]`, or `$FX[none]` to turn off formatting. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [P.C. Shyamshankar](https://github.com/sykora) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://lucentbeing.com/writing/archives/a-guide-to-256-color-codes/ +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/spectrum/init.zsh b/prezto/.zprezto/modules/spectrum/init.zsh new file mode 100644 index 0000000..61e2262 --- /dev/null +++ b/prezto/.zprezto/modules/spectrum/init.zsh @@ -0,0 +1,69 @@ +# +# Provides for easier use of 256 colors and effects. +# +# Authors: +# P.C. Shyamshankar +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$TERM" == 'dumb' ]]; then + return 1 +fi + +typeset -gA FX FG BG + +FX=( + none "\e[00m" + normal "\e[22m" + bold "\e[01m" no-bold "\e[22m" + faint "\e[02m" no-faint "\e[22m" + standout "\e[03m" no-standout "\e[23m" + underline "\e[04m" no-underline "\e[24m" + blink "\e[05m" no-blink "\e[25m" + fast-blink "\e[06m" no-fast-blink "\e[25m" + reverse "\e[07m" no-reverse "\e[27m" + conceal "\e[08m" no-conceal "\e[28m" + strikethrough "\e[09m" no-strikethrough "\e[29m" + gothic "\e[20m" no-gothic "\e[22m" + double-underline "\e[21m" no-double-underline "\e[22m" + proportional "\e[26m" no-proportional "\e[50m" + overline "\e[53m" no-overline "\e[55m" + + no-border "\e[54m" + border-rectangle "\e[51m" no-border-rectangle "\e[54m" + border-circle "\e[52m" no-border-circle "\e[54m" + + no-ideogram-marking "\e[65m" + underline-or-right "\e[60m" no-underline-or-right "\e[65m" + double-underline-or-right "\e[61m" no-double-underline-or-right "\e[65m" + overline-or-left "\e[62m" no-overline-or-left "\e[65m" + double-overline-or-left "\e[63m" no-double-overline-or-left "\e[65m" + stress "\e[64m" no-stress "\e[65m" + + font-default "\e[10m" + font-first "\e[11m" no-font-first "\e[10m" + font-second "\e[12m" no-font-second "\e[10m" + font-third "\e[13m" no-font-third "\e[10m" + font-fourth "\e[14m" no-font-fourth "\e[10m" + font-fifth "\e[15m" no-font-fifth "\e[10m" + font-sixth "\e[16m" no-font-sixth "\e[10m" + font-seventh "\e[17m" no-font-seventh "\e[10m" + font-eigth "\e[18m" no-font-eigth "\e[10m" + font-ninth "\e[19m" no-font-ninth "\e[10m" +) + +FG[none]="$FX[none]" +BG[none]="$FX[none]" +colors=(black red green yellow blue magenta cyan white) +for color in {0..255}; do + if (( $color >= 0 )) && (( $color < $#colors )); then + index=$(( $color + 1 )) + FG[$colors[$index]]="\e[38;5;${color}m" + BG[$colors[$index]]="\e[48;5;${color}m" + fi + + FG[$color]="\e[38;5;${color}m" + BG[$color]="\e[48;5;${color}m" +done +unset color{s,} index diff --git a/prezto/.zprezto/modules/ssh/README.md b/prezto/.zprezto/modules/ssh/README.md new file mode 100644 index 0000000..a1727b9 --- /dev/null +++ b/prezto/.zprezto/modules/ssh/README.md @@ -0,0 +1,26 @@ +SSH +=== + +Provides for an easier use of [SSH][1] by setting up [ssh-agent][2]. + +Settings +-------- + +### Identities + +To load multiple identities, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github' +``` + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.openssh.com +[2]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1 +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/ssh/init.zsh b/prezto/.zprezto/modules/ssh/init.zsh new file mode 100644 index 0000000..08edce5 --- /dev/null +++ b/prezto/.zprezto/modules/ssh/init.zsh @@ -0,0 +1,60 @@ +# +# Provides for an easier use of SSH by setting up ssh-agent. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[ssh-agent] )); then + return 1 +fi + +# Set the path to the SSH directory. +_ssh_dir="$HOME/.ssh" + +# Set the path to the environment file if not set by another module. +_ssh_agent_env="${_ssh_agent_env:-${TMPDIR:-/tmp}/ssh-agent.env.$UID}" + +# Set the path to the persistent authentication socket. +_ssh_agent_sock="${TMPDIR:-/tmp}/ssh-agent.sock.$UID" + +# Start ssh-agent if not started. +if [[ ! -S "$SSH_AUTH_SOCK" ]]; then + # Export environment variables. + source "$_ssh_agent_env" 2> /dev/null + + # Start ssh-agent if not started. + if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then + eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")" + fi +fi + +# Create a persistent SSH authentication socket. +if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then + ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock" + export SSH_AUTH_SOCK="$_ssh_agent_sock" +fi + +# Load identities. +if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then + zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities' + # ssh-add has strange requirements for running SSH_ASKPASS, so we duplicate + # them here. Essentially, if the other requirements are met, we redirect stdin + # from /dev/null in order to meet the final requirement. + # + # From ssh-add(1): + # If ssh-add needs a passphrase, it will read the passphrase from the current + # terminal if it was run from a terminal. If ssh-add does not have a terminal + # associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the + # program specified by SSH_ASKPASS and open an X11 window to read the + # passphrase. + if [[ -n "$DISPLAY" && -x "$SSH_ASKPASS" ]]; then + ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} < /dev/null 2> /dev/null + else + ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} 2> /dev/null + fi +fi + +# Clean up. +unset _ssh_{dir,identities} _ssh_agent_{env,sock} diff --git a/prezto/.zprezto/modules/syntax-highlighting/README.md b/prezto/.zprezto/modules/syntax-highlighting/README.md new file mode 100644 index 0000000..7a5a30c --- /dev/null +++ b/prezto/.zprezto/modules/syntax-highlighting/README.md @@ -0,0 +1,74 @@ +Syntax Highlighting +=================== + +Integrates [zsh-syntax-highlighting][1] into Prezto. + +This module should be loaded before the *prompt* module. + +Additionally, if this module is used in conjunction with the +*history-substring-search* module, this module must be loaded **before** the +*history-substring-search* module. + +To elaborate: The relative order of loading the modules would be +'syntax-highlighting', 'history-substring-search' and 'prompt'. + +Contributors +------------ + +New features and bug fixes should be submitted to the +[zsh-syntax-highlighting][1] project according to its rules and regulations. +This module will be synchronized against it. + +Settings +-------- + +### Highlighting + +To enable highlighting for this module only, add the following line to +*zpreztorc*: + +```sh +zstyle ':prezto:module:syntax-highlighting' color 'yes' +``` + +### Highlighters + +Syntax highlighting is accomplished by pluggable [highlighters][2]. This module +only enables the *main* highlighter by default. + +To enable all highlighters, add the following to *zpreztorc*: + +```sh +zstyle ':prezto:module:syntax-highlighting' highlighters \ + 'main' \ + 'brackets' \ + 'pattern' \ + 'line' \ + 'cursor' \ + 'root' +``` + +### Highlighting Styles + +Each syntax highlighter defines styles used to highlight tokens. + +To highlight, for example, builtins, commands, and functions in blue instead of +green, add the following to *zpreztorc*: + +```sh +zstyle ':prezto:module:syntax-highlighting' styles \ + 'builtin' 'bg=blue' \ + 'command' 'bg=blue' \ + 'function' 'bg=blue' +``` + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/zsh-users/zsh-syntax-highlighting +[2]: https://github.com/zsh-users/zsh-syntax-highlighting/tree/master/highlighters +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/syntax-highlighting/external b/prezto/.zprezto/modules/syntax-highlighting/external new file mode 160000 index 0000000..434af7b --- /dev/null +++ b/prezto/.zprezto/modules/syntax-highlighting/external @@ -0,0 +1 @@ +Subproject commit 434af7b11dd33641231f1b48b8432e68eb472e46 diff --git a/prezto/.zprezto/modules/syntax-highlighting/init.zsh b/prezto/.zprezto/modules/syntax-highlighting/init.zsh new file mode 100644 index 0000000..52cc0c3 --- /dev/null +++ b/prezto/.zprezto/modules/syntax-highlighting/init.zsh @@ -0,0 +1,36 @@ +# +# Integrates zsh-syntax-highlighting into Prezto. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if ! zstyle -t ':prezto:module:syntax-highlighting' color; then + return 1 +fi + +# Source module files. +source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1 + +# Set highlighters. +zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' +if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then + ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) +fi + +# Set highlighting styles. +typeset -A syntax_highlighting_styles +zstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles' +for syntax_highlighting_style in "${(k)syntax_highlighting_styles[@]}"; do + ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]="$syntax_highlighting_styles[$syntax_highlighting_style]" +done +unset syntax_highlighting_style{s,} + +# Set pattern highlighting styles. +typeset -A syntax_pattern_styles +zstyle -a ':prezto:module:syntax-highlighting' pattern 'syntax_pattern_styles' +for syntax_pattern_style in "${(k)syntax_pattern_styles[@]}"; do + ZSH_HIGHLIGHT_PATTERNS[$syntax_pattern_style]="$syntax_pattern_styles[$syntax_pattern_style]" +done +unset syntax_pattern_style{s,} diff --git a/prezto/.zprezto/modules/terminal/README.md b/prezto/.zprezto/modules/terminal/README.md new file mode 100644 index 0000000..41a0885 --- /dev/null +++ b/prezto/.zprezto/modules/terminal/README.md @@ -0,0 +1,57 @@ +Terminal +======== + +Sets terminal window and tab titles. + +Settings +-------- + +### Auto-Title + +To auto set the terminal window and tab titles with the current command or +directory, add the following to *zpreztorc*: + +```sh +zstyle ':prezto:module:terminal' auto-title 'yes' +``` + +Auto titling is disabled inside terminal multiplexers (except inside dvtm) +since it interferes with window names defined in configuration files and +profile managers. This can be overridden by setting it to `always`. + +```sh +zstyle ':prezto:module:terminal' auto-title 'always' +``` + +### Title formats + +To format terminal window and tab titles, add the following to *zpreztorc*: + +```sh +zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s' +zstyle ':prezto:module:terminal:tab-title' format '%m: %s' +zstyle ':prezto:module:terminal:multiplexer-title' format '%s' +``` + +`%s` will be replaced with the current working directory path or the currently +executing program name. + +For a list of sequences, see [Expansion of Prompt Sequences][1]. + +Functions +--------- + +- `set-tab-title` sets the terminal tab title. +- `set-window-title` sets the terminal window title. +- `set-multiplexer-title` sets the terminal multiplexer title. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Olaf Conradi](https://github.com/oohlaf) + +[1]: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/terminal/init.zsh b/prezto/.zprezto/modules/terminal/init.zsh new file mode 100644 index 0000000..2a5b9be --- /dev/null +++ b/prezto/.zprezto/modules/terminal/init.zsh @@ -0,0 +1,129 @@ +# +# Sets terminal window and tab titles. +# +# Authors: +# Sorin Ionescu +# Olaf Conradi +# + +# Return if requirements are not found. +if [[ "$TERM" == (dumb|linux|*bsd*|eterm*) ]]; then + return 1 +fi + +# Sets the terminal window title. +function set-window-title { + local title_format{,ted} + zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s" + zformat -f title_formatted "$title_format" "s:$argv" + printf '\e]2;%s\a' "${(V%)title_formatted}" +} + +# Sets the terminal tab title. +function set-tab-title { + local title_format{,ted} + zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s" + zformat -f title_formatted "$title_format" "s:$argv" + printf '\e]1;%s\a' "${(V%)title_formatted}" +} + +# Sets the terminal multiplexer tab title. +function set-multiplexer-title { + local title_format{,ted} + zstyle -s ':prezto:module:terminal:multiplexer-title' format 'title_format' || title_format="%s" + zformat -f title_formatted "$title_format" "s:$argv" + printf '\ek%s\e\\' "${(V%)title_formatted}" +} + +# Sets the tab and window titles with a given command. +function _terminal-set-titles-with-command { + emulate -L zsh + setopt EXTENDED_GLOB + + # Get the command name that is under job control. + if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then + # Get the job name, and, if missing, set it to the default %+. + local job_name="${${2[(wr)%*(\;|)]}:-%+}" + + # Make a local copy for use in the subshell. + local -A jobtexts_from_parent_shell + jobtexts_from_parent_shell=(${(kv)jobtexts}) + + jobs "$job_name" 2> /dev/null > >( + read index discarded + # The index is already surrounded by brackets: [1]. + _terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}" + ) + else + # Set the command name, or in the case of sudo or ssh, the next command. + local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}" + local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}" + unset MATCH + + if [[ "$TERM" == screen* ]]; then + set-multiplexer-title "$truncated_cmd" + fi + set-tab-title "$truncated_cmd" + set-window-title "$cmd" + fi +} + +# Sets the tab and window titles with a given path. +function _terminal-set-titles-with-path { + emulate -L zsh + setopt EXTENDED_GLOB + + local absolute_path="${${1:a}:-$PWD}" + local abbreviated_path="${absolute_path/#$HOME/~}" + local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}" + unset MATCH + + if [[ "$TERM" == screen* ]]; then + set-multiplexer-title "$truncated_path" + fi + set-tab-title "$truncated_path" + set-window-title "$abbreviated_path" +} + +# Do not override precmd/preexec; append to the hook array. +autoload -Uz add-zsh-hook + +# Set up the Apple Terminal. +if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \ + && ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] ) +then + # Sets the Terminal.app current working directory before the prompt is + # displayed. + function _terminal-set-terminal-app-proxy-icon { + printf '\e]7;%s\a' "file://${HOST}${PWD// /%20}" + } + add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon + + # Unsets the Terminal.app current working directory when a terminal + # multiplexer or remote connection is started since it can no longer be + # updated, and it becomes confusing when the directory displayed in the title + # bar is no longer synchronized with real current working directory. + function _terminal-unset-terminal-app-proxy-icon { + if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then + print '\e]7;\a' + fi + } + add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon + + # Do not set the tab and window titles in Terminal.app since it sets the tab + # title to the currently running process by default and the current working + # directory is set separately. + return +fi + +# Set up non-Apple terminals. +if zstyle -t ':prezto:module:terminal' auto-title 'always' \ + || (zstyle -t ':prezto:module:terminal' auto-title \ + && ( ! [[ -n "$STY" || -n "$TMUX" ]] )) +then + # Sets titles before the prompt is displayed. + add-zsh-hook precmd _terminal-set-titles-with-path + + # Sets titles before command execution. + add-zsh-hook preexec _terminal-set-titles-with-command +fi diff --git a/prezto/.zprezto/modules/tmux/README.md b/prezto/.zprezto/modules/tmux/README.md new file mode 100644 index 0000000..0738d7c --- /dev/null +++ b/prezto/.zprezto/modules/tmux/README.md @@ -0,0 +1,93 @@ +Tmux +==== + +Defines [tmux][1] aliases and provides for auto launching it at start-up. + +Settings +-------- + +### Auto-Start + +Starts a tmux session automatically when Zsh is launched. + +To enable this feature when launching Zsh in a local terminal, add the +following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:tmux:auto-start' local 'yes' +``` + +To enable this feature when launching Zsh in a SSH connection, add the +following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:tmux:auto-start' remote 'yes' +``` + +In both cases, it will create a background session named _prezto_ if the tmux +server is not started. + +You can change the default session name with: + +```sh +zstyle ':prezto:module:tmux:session' name '' +``` + +With `auto-start` enabled, you may want to control how multiple sessions are +managed. The `destroy-unattached` option of tmux controls if the unattached +sessions must be kept alive, making sessions available for later use, configured +in *tmux.conf*: + +```conf +set-option -g destroy-unattached [on | off] +``` + +#### iTerm2 Integration + +[iTerm2][6] offers significant integration with tmux. This can be enabled by +adding the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:tmux:iterm' integrate 'yes' +``` + +Read [iTerm2 and tmux Integration][7] for more information. + +Aliases +------- + + - `tmuxa` attaches or switches to a tmux session. + - `tmuxl` lists sessions managed by the tmux server. + +Caveats +------- + +On macOS, launching tmux can cause the error **launch_msg(...): Socket is not +connected** to be displayed, which can be fixed by installing +[reattach-to-user-namespace][3], available in [Homebrew][4], and adding the +following to *tmux.conf*: + +```conf +set-option -g default-command "reattach-to-user-namespace -l $SHELL -l" +``` + +Furthermore, tmux is known to cause **kernel panics** on macOS. A discussion +about this and Prezto has already been [opened][2]. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][5].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + - [Colin Hebert](https://github.com/ColinHebert) + - [Georges Discry](https://github.com/gdiscry) + - [Xavier Cambar](https://github.com/xcambar) + +[1]: http://tmux.sourceforge.net +[2]: https://github.com/sorin-ionescu/prezto/issues/62 +[3]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard +[4]: https://github.com/mxcl/homebrew +[5]: https://github.com/sorin-ionescu/prezto/issues +[6]: http://iterm2.com +[7]: https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration diff --git a/prezto/.zprezto/modules/tmux/init.zsh b/prezto/.zprezto/modules/tmux/init.zsh new file mode 100644 index 0000000..fb56d07 --- /dev/null +++ b/prezto/.zprezto/modules/tmux/init.zsh @@ -0,0 +1,49 @@ +# +# Defines tmux aliases and provides for auto launching it at start-up. +# +# Authors: +# Sorin Ionescu +# Colin Hebert +# Georges Discry +# Xavier Cambar +# + +# Return if requirements are not found. +if (( ! $+commands[tmux] )); then + return 1 +fi + +# +# Auto Start +# + +if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \ + zstyle -t ':prezto:module:tmux:iterm' integrate \ +); then + _tmux_iterm_integration='-CC' +fi + +if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCODE_PID" ]] && ( \ + ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) || + ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \ +); then + tmux start-server + + # Create a 'prezto' session if no session has been defined in tmux.conf. + if ! tmux has-session 2> /dev/null; then + zstyle -s ':prezto:module:tmux:session' name tmux_session || tmux_session='prezto' + tmux \ + new-session -d -s "$tmux_session" \; \ + set-option -t "$tmux_session" destroy-unattached off &> /dev/null + fi + + # Attach to the 'prezto' session or to the last session used. (detach first) + exec tmux $_tmux_iterm_integration attach-session -d +fi + +# +# Aliases +# + +alias tmuxa="tmux $_tmux_iterm_integration new-session -A" +alias tmuxl='tmux list-sessions' diff --git a/prezto/.zprezto/modules/utility/README.md b/prezto/.zprezto/modules/utility/README.md new file mode 100644 index 0000000..3b25b3a --- /dev/null +++ b/prezto/.zprezto/modules/utility/README.md @@ -0,0 +1,185 @@ +Utility +======= + +Defines general aliases and functions. + +Settings +-------- + +### Highlighting + +If you have enabled color globally in *zpreztorc*, you may disable it for +certain commands. + +To disable `ls` color, add the following line to *zpreztorc*; when coloring is +disabled, type indicators (\*, /, =>, @, =, |, %) will be appended to entries. + +```sh +zstyle ':prezto:module:utility:ls' color 'no' +``` + +To disable GNU coreutils `ls` to list directories grouped first, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:utility:ls' dirs-first 'no' +``` + +To disable `diff` highlighting, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:utility:diff' color 'no' +``` + +To disable `wdiff` highlighting, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:utility:wdiff' color 'no' +``` + +To disable `make` highlighting, add the following line to *zpreztorc*: + +```sh +zstyle ':prezto:module:utility:make' color 'no' +``` + +Aliases +------- + +### Disabled Spelling Correction + + - `ack` + - `cd` + - `cp` + - `ebuild` + - `gcc` + - `gist` + - `grep` + - `heroku` + - `ln` + - `man` + - `mkdir` + - `mv` + - `mysql` + - `rm` + +### Disabled File Globbing + + - `bower` + - `fc` + - `find` + - `ftp` + - `history` + - `locate` + - `rake` + - `rsync` (selectively enabled for local files) + - `scp` (selectively enabled for local files) + - `sftp` + +### General + + - `_` executes a command as another user (`sudo`). + - `b` opens the default web browser. + - `diffu` shorthand for `diff --unified` + - `e` opens the default editor. + - `mkdir` creates directories, including intermediary directories. + - `p` opens the default pager. + - `po` removes a directory from the stack and changes to it (`popd`). + - `pu` changes the directory and pushes the old directory onto the stack + (`pushd`). + - `sa` search aliases for a word. + - `type` displays all the attribute values of a shell parameter. + +### Files and Directories + + - `ls` lists with directories grouped first (GNU only). + - `l` lists in one column, hidden files. + - `ll` lists human readable sizes. + - `lr` lists human readable sizes, recursively. + - `la` lists human readable sizes, hidden files. + - `lm` lists human readable sizes, hidden files through pager. + - `lx` lists sorted by extension (GNU only). + - `lk` lists sorted by size, largest last. + - `lt` lists sorted by date, most recent last. + - `lc` lists sorted by date, most recent last, shows change time. + - `lu` lists sorted by date, most recent last, shows access time. + - `sl` lists directory contents (`ls`). + +### macOS Everywhere + + - `o` opens files and directories (`open` or `xdg-open`). + - `get` downloads files (`curl` or `wget`). + - `pbcopy` copies to the pasteboard (`pbcopy`, `xclip` or `xsel`). + - `pbpaste` pastes from the pasteboard (`pbcopy`, `xclip` or `xsel`). + - `pbc` copies to the pasteboard (`pbcopy`). + - `pbp` pastes from the pasteboard (`pbpaste`). + +### Resource Usage + + - `df` displays free disk space using human readable units (aliases to `pydf`, + if installed). + - `du` displays disk usage using human readable units. + - `top` displays information about processes. + - `topc` displays information about processes sorted by CPU usage. + - `topm` displays information about processes sorted by RAM usage. + +### Safe ops + +By default, `cp`,`ln`, `mv` and `rm` are aliased to their interactive variants. +If this is not desired, it can be disabled by adding the following line to +*zpreztorc*: + + zstyle ':prezto:module:utility' safe-ops 'no'. + +In addition, the following aliases have been added: + + - `cpi` copies files and directories interactively. + - `lni` links files and directories interactively. + - `mvi` moves files and directories interactively. + - `rmi` removes files and directories interactively. + +### Miscellaneous + + - `http-serve` serves a directory via HTTP. + +Functions +--------- + +### General + + - `slit` prints columns *1, 2, 3 ... n*. + +### Files and Directories + + - `cdls` changes to a directory and lists its contents. + - `dut` displays the grand total disk usage using human readable units. + - `find-exec` finds files and executes a command on them. + - `mkdcd` makes a directory and changes to it. + - `popdls` pops an entry off the directory stack and lists its contents. + - `pushdls` pushes an entry onto the directory stack and lists its contents. + - `noremoteglob` enable local path globbing but disable remote path globbing. + +### Developer + + - `diff` highlights diff output (requires `colordiff`). + - `make` highlights make output (requires `colormake`). + - `wdiff` highlights wdiff output (requires `wdiff `or `Git`). + +### Resource usage + + - `psu` displays user owned processes status. + +### Search and Replace + + - `prep` provides a grep-like pattern search. + - `psub` provides a sed-like pattern substitution. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Robby Russell](https://github.com/robbyrussell) + - [Suraj N. Kurapati](https://github.com/sunaku) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/utility/functions/_cdls_popdls_pushdls b/prezto/.zprezto/modules/utility/functions/_cdls_popdls_pushdls new file mode 100644 index 0000000..5f0fe60 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_cdls_popdls_pushdls @@ -0,0 +1,11 @@ +#compdef cdls popdls pushdls +#autoload + +# +# Completes cdls, popdls, and pushdls. +# +# Authors: +# Sorin Ionescu +# + +_cd diff --git a/prezto/.zprezto/modules/utility/functions/_dut b/prezto/.zprezto/modules/utility/functions/_dut new file mode 100644 index 0000000..180dde7 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_dut @@ -0,0 +1,11 @@ +#compdef dut +#autoload + +# +# Completes dut. +# +# Authors: +# Sorin Ionescu +# + +_du diff --git a/prezto/.zprezto/modules/utility/functions/_mkdcd b/prezto/.zprezto/modules/utility/functions/_mkdcd new file mode 100644 index 0000000..5273651 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_mkdcd @@ -0,0 +1,13 @@ +#compdef mkdcd +#autoload + +# +# Completes mkdcd. +# +# Authors: +# Sorin Ionescu +# + +local expl + +_wanted directories expl 'directory' _path_files -/ || _message 'directory' diff --git a/prezto/.zprezto/modules/utility/functions/_noremoteglob b/prezto/.zprezto/modules/utility/functions/_noremoteglob new file mode 100644 index 0000000..de5290e --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_noremoteglob @@ -0,0 +1,11 @@ +#compdef noremoteglob +#autoload + +# +# Completes noremoteglob. +# +# Authors: +# Indrajit Raychaudhuri +# + +_precommand diff --git a/prezto/.zprezto/modules/utility/functions/_prep b/prezto/.zprezto/modules/utility/functions/_prep new file mode 100644 index 0000000..c9d6eda --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_prep @@ -0,0 +1,18 @@ +#compdef prep +#autoload + +# +# Completes prep. +# +# Authors: +# Sorin Ionescu +# + +_arguments \ + '-i[ignore case]' \ + '-m[^ and $ match the start and the end of a line]' \ + '-s[. matches newline]' \ + '-v[invert match]' \ + '-x[ignore whitespace and comments]' \ + '1::pattern:' \ + '2::files:_files' && return 0 diff --git a/prezto/.zprezto/modules/utility/functions/_psub b/prezto/.zprezto/modules/utility/functions/_psub new file mode 100644 index 0000000..c79899e --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/_psub @@ -0,0 +1,19 @@ +#compdef psub +#autoload + +# +# Completes psub. +# +# Authors: +# Sorin Ionescu +# + +_arguments \ + '-g[match globally]' \ + '-i[ignore case]' \ + '-m[^ and $ match the start and the end of a line]' \ + '-s[. matches newline]' \ + '-x[ignore whitespace and comments]' \ + '1::pattern:' \ + '2::replacement:' \ + '3::files:_files' && return 0 diff --git a/prezto/.zprezto/modules/utility/functions/diff b/prezto/.zprezto/modules/utility/functions/diff new file mode 100644 index 0000000..d614b28 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/diff @@ -0,0 +1,17 @@ +# +# Highlights diff output. +# +# Authors: +# Sorin Ionescu +# + +function diff { + if zstyle -t ':prezto:module:utility:diff' color \ + && (( $+commands[colordiff] )); then + command colordiff "$@" + else + command diff "$@" + fi +} + +diff "$@" diff --git a/prezto/.zprezto/modules/utility/functions/dut b/prezto/.zprezto/modules/utility/functions/dut new file mode 100644 index 0000000..6592280 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/dut @@ -0,0 +1,27 @@ +# +# Displays the grand total disk usage using human readable units. +# +# Authors: +# Suraj N. Kurapati +# Sorin Ionescu +# + +function dut { + (( $# == 0 )) && set -- * + + if grep -q -i 'GNU' < <(du --version 2>&1); then + du -khsc "$@" | sort -h -r + else + local line size name + local -a record + + while IFS=$'\n' read line; do + record=(${(z)line}) + size="$(($record[1] / 1024.0))" + name="$record[2,-1]" + printf "%9.1LfM %s\n" "$size" "$name" + done < <(du -kcs "$@") | sort -n -r + fi +} + +dut "$@" diff --git a/prezto/.zprezto/modules/utility/functions/make b/prezto/.zprezto/modules/utility/functions/make new file mode 100644 index 0000000..5ebab05 --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/make @@ -0,0 +1,20 @@ +# +# Highlights make output. +# +# Authors: +# Sorin Ionescu +# + +function make { + if zstyle -t ':prezto:module:utility:make' color; then + if (( $+commands[colormake] )); then + colormake "$@" + else + command make "$@" + fi + else + command make "$@" + fi +} + +make "$@" diff --git a/prezto/.zprezto/modules/utility/functions/prep b/prezto/.zprezto/modules/utility/functions/prep new file mode 100644 index 0000000..d6448ae --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/prep @@ -0,0 +1,56 @@ +# +# Provides a grep-like pattern search. +# +# Authors: +# Sorin Ionescu +# + +# function prep { + +local usage pattern modifiers invert + +usage="$( +cat <&2 + print "$usage" >&2 + return 1 + ;; + ([?]) + print "$0: unknown option: $OPTARG" >&2 + print "$usage" >&2 + return 1 + ;; + esac +done +shift $(( $OPTIND - 1 )) + +if (( $# < 1 )); then + print "$usage" >&2 + return 1 +fi + +pattern="$1" +shift + +perl -n -l -e "print if ${invert:+not} m/${pattern//\//\\/}/${modifiers}" "$@" + +# } diff --git a/prezto/.zprezto/modules/utility/functions/psub b/prezto/.zprezto/modules/utility/functions/psub new file mode 100644 index 0000000..af191fd --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/psub @@ -0,0 +1,57 @@ +# +# Provides a sed-like pattern substitution. +# +# Authors: +# Sorin Ionescu +# + +# function psub { + +local usage pattern replacement modifiers + +usage="$( +cat <&2 + print "$usage" >&2 + return 1 + ;; + ([?]) + print "$0: unknown option: $OPTARG" >&2 + print "$usage" >&2 + return 1 + ;; + esac +done +shift $(( $OPTIND - 1 )) + +if (( $# < 2 )); then + print "$usage" >&2 + return 1 +fi + +pattern="$1" +replacement="$2" +repeat 2 shift + +perl -i'.orig' -n -l -e "s/${pattern//\//\\/}/${replacement//\//\\/}/${modifiers}; print" "$@" + +# } diff --git a/prezto/.zprezto/modules/utility/functions/wdiff b/prezto/.zprezto/modules/utility/functions/wdiff new file mode 100644 index 0000000..ebfad0b --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/wdiff @@ -0,0 +1,29 @@ +# +# Highlights wdiff output. +# +# Authors: +# Sorin Ionescu +# + +function wdiff { + if zstyle -t ':prezto:module:utility:wdiff' color; then + if (( $+commands[wdiff] )); then + command wdiff \ + --avoid-wraps \ + --start-delete="$(print -n $FG[red])" \ + --end-delete="$(print -n $FG[none])" \ + --start-insert="$(print -n $FG[green])" \ + --end-insert="$(print -n $FG[none])" \ + "$@" \ + | sed 's/^\(@@\( [+-][[:digit:]]*,[[:digit:]]*\)\{2\} @@\)$/;5;6m\10m/g' + elif (( $+commands[git] )); then + command git --no-pager diff --color=auto --no-ext-diff --no-index --color-words "$@" + else + command wdiff "$@" + fi + else + command wdiff "$@" + fi +} + +wdiff "$@" diff --git a/prezto/.zprezto/modules/utility/functions/zsh-help b/prezto/.zprezto/modules/utility/functions/zsh-help new file mode 100644 index 0000000..f6605ea --- /dev/null +++ b/prezto/.zprezto/modules/utility/functions/zsh-help @@ -0,0 +1,102 @@ +# +# Provides a much easier way to search and access ZSH's manual. First checks for +# terms at the start of the manual, then checks if it's at start of a line allowing +# whitespace. +# +# Authors: +# Samantha McVey +# + +# function zsh-help { + +local usage="$( +cat <&2; fi + if man --pager='' ${i} | grep -E ${case} "${pattern}" > /dev/null; then + printf "%s" "${i}"; return 0; + fi + done + return 1 + } + # By default search only things at start of line + local first_prefix='^' + local prefix='^\s*' + if [[ ${1} == '--zsh-help-debug' ]]; then + shift; debug=1 + fi + if [[ ${1} == "--all" ]]; then + shift; first_prefix='' # We're searching everything, so remove the prefix + fi + if [[ $# < 1 || $1 == "--help" ]]; then + printf "%s\n" "${usage}" + unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope + return 1 + fi + if [[ ${1} == "test" && $# == 1 ]]; then + case='' + pattern='^CONDITIONAL EXPRESSIONS$' + elif [[ ($1 == "-eq" || $1 == "-ne" || $1 == "-lt" || $1 == "-gt" || $1 == "-le" || $1 == "-ge") && $# == 1 ]]; then + case='' + pattern="${prefix}exp1\s+${1}\s+exp2" + elif [[ $1 == 'zstyle' ]]; then + pattern=$(_zsh-help-join '\s+' "$@") + section=ZSHMODULES + fi + # If it wasn't one of the special-cased things, check ZSHBUILTINS first. If + # not found there, we will search ZSHALL + if [[ ${pattern} == "" ]]; then + pattern="$(_zsh-help-join '\s+' "$@")" + # search for sections at the start of the man page first + section=$(_zsh-help-try-query "${case}" "${first_prefix}${pattern}") + # If it exists there, keep ZSHBUILTINS as the section + if (( $? == 0 )); then + pattern="${first_prefix}${pattern}" + elif [[ "${prefix}" ]]; then + # if not found, search for the term preceeded by whitetext + section=$(_zsh-help-try-query "${case}" "${prefix}${pattern}") + if (( $? == 0 )); then + pattern="${prefix}${pattern}" + else + pattern="" + fi + fi + if [[ ! ${pattern} ]]; then # Otherwise we use zshall + printf "Can't find term\n" 2>&1 + unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope + return 1; + fi + fi + local command="man --pager=\"less ${case} -p '${pattern}'\" \"${section}\"" + if [[ ${debug} ]]; then + printf "\nFinal search term is:\n"; printf "%s\n" "${command}"; + else + eval $command + fi + local rtrn=$? + unfunction _zsh-help-join; unfunction _zsh-help-try-query; # unfunction so it's not in the global scope + return $? +#} diff --git a/prezto/.zprezto/modules/utility/init.zsh b/prezto/.zprezto/modules/utility/init.zsh new file mode 100644 index 0000000..9ef8353 --- /dev/null +++ b/prezto/.zprezto/modules/utility/init.zsh @@ -0,0 +1,245 @@ +# +# Defines general aliases and functions. +# +# Authors: +# Robby Russell +# Suraj N. Kurapati +# Sorin Ionescu +# + +# Load dependencies. +pmodload 'helper' 'spectrum' + +# Correct commands. +setopt CORRECT + +# +# Aliases +# + +# Disable correction. +alias ack='nocorrect ack' +alias cd='nocorrect cd' +alias cp='nocorrect cp' +alias ebuild='nocorrect ebuild' +alias gcc='nocorrect gcc' +alias gist='nocorrect gist' +alias grep='nocorrect grep' +alias heroku='nocorrect heroku' +alias ln='nocorrect ln' +alias man='nocorrect man' +alias mkdir='nocorrect mkdir' +alias mv='nocorrect mv' +alias mysql='nocorrect mysql' +alias rm='nocorrect rm' + +# Disable globbing. +alias bower='noglob bower' +alias fc='noglob fc' +alias find='noglob find' +alias ftp='noglob ftp' +alias history='noglob history' +alias locate='noglob locate' +alias rake='noglob rake' +alias rsync='noglob rsync' +alias scp='noglob scp' +alias sftp='noglob sftp' + +# Define general aliases. +alias _='sudo' +alias b='${(z)BROWSER}' + +alias diffu="diff --unified" +alias e='${(z)VISUAL:-${(z)EDITOR}}' +alias mkdir="${aliases[mkdir]:-mkdir} -p" +alias p='${(z)PAGER}' +alias po='popd' +alias pu='pushd' +alias sa='alias | grep -i' +alias type='type -a' + +# Safe ops. Ask the user before doing anything destructive. +#alias rmi="${aliases[rm]:-rm} -i" +alias mvi="${aliases[mv]:-mv} -i" +alias cpi="${aliases[cp]:-cp} -i" +alias lni="${aliases[ln]:-ln} -i" +if zstyle -T ':prezto:module:utility' safe-ops; then + #alias rm='rmi' + alias mv='mvi' + alias cp='cpi' + alias ln='lni' +fi + +# ls +if is-callable 'dircolors'; then + # GNU Core Utilities + + if zstyle -T ':prezto:module:utility:ls' dirs-first; then + alias ls="${aliases[ls]:-ls} --group-directories-first" + fi + + if zstyle -t ':prezto:module:utility:ls' color; then + # Call dircolors to define colors if they're missing + if [[ -z "$LS_COLORS" ]]; then + if [[ -s "$HOME/.dir_colors" ]]; then + eval "$(dircolors --sh "$HOME/.dir_colors")" + else + eval "$(dircolors --sh)" + fi + fi + + alias ls="${aliases[ls]:-ls} --color=auto" + else + alias ls="${aliases[ls]:-ls} -F" + fi +else + # BSD Core Utilities + if zstyle -t ':prezto:module:utility:ls' color; then + # Define colors for BSD ls if they're not already defined + if [[ -z "$LSCOLORS" ]]; then + export LSCOLORS='exfxcxdxbxGxDxabagacad' + fi + + # Define colors for the completion system if they're not already defined + if [[ -z "$LS_COLORS" ]]; then + export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:' + fi + + alias ls="${aliases[ls]:-ls} -G" + else + alias ls="${aliases[ls]:-ls} -F" + fi +fi + +alias l='ls -1A' # Lists in one column, hidden files. +alias ll='ls -lh' # Lists human readable sizes. +alias lr='ll -R' # Lists human readable sizes, recursively. +alias la='ll -A' # Lists human readable sizes, hidden files. +alias lm='la | "$PAGER"' # Lists human readable sizes, hidden files through pager. +alias lx='ll -XB' # Lists sorted by extension (GNU only). +alias lk='ll -Sr' # Lists sorted by size, largest last. +alias lt='ll -tr' # Lists sorted by date, most recent last. +alias lc='lt -c' # Lists sorted by date, most recent last, shows change time. +alias lu='lt -u' # Lists sorted by date, most recent last, shows access time. +alias sl='ls' # I often screw this up. + +# Grep +if zstyle -t ':prezto:module:utility:grep' color; then + export GREP_COLOR='37;45' # BSD. + export GREP_COLORS="mt=$GREP_COLOR" # GNU. + + alias grep="${aliases[grep]:-grep} --color=auto" +fi + +# macOS Everywhere +if [[ "$OSTYPE" == darwin* ]]; then + alias o='open' +elif [[ "$OSTYPE" == cygwin* ]]; then + alias o='cygstart' + alias pbcopy='tee > /dev/clipboard' + alias pbpaste='cat /dev/clipboard' +else + alias o='xdg-open' + + if (( $+commands[xclip] )); then + alias pbcopy='xclip -selection clipboard -in' + alias pbpaste='xclip -selection clipboard -out' + elif (( $+commands[xsel] )); then + alias pbcopy='xsel --clipboard --input' + alias pbpaste='xsel --clipboard --output' + fi +fi + +alias pbc='pbcopy' +alias pbp='pbpaste' + +# File Download +if (( $+commands[curl] )); then + alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time' +elif (( $+commands[wget] )); then + alias get='wget --continue --progress=bar --timestamping' +fi + +# Resource Usage +alias df='df -kh' +alias du='du -kh' + +if [[ "$OSTYPE" == (darwin*|*bsd*) ]]; then + alias topc='top -o cpu' + alias topm='top -o vsize' +else + alias topc='top -o %CPU' + alias topm='top -o %MEM' +fi + +# Miscellaneous + +# Serves a directory via HTTP. +if (( $+commands[python3] )); then + alias http-serve='python3 -m http.server' +else + alias http-serve='python -m SimpleHTTPServer' +fi + +# +# Functions +# + +# Makes a directory and changes to it. +function mkdcd { + [[ -n "$1" ]] && mkdir -p "$1" && builtin cd "$1" +} + +# Changes to a directory and lists its contents. +function cdls { + builtin cd "$argv[-1]" && ls "${(@)argv[1,-2]}" +} + +# Pushes an entry onto the directory stack and lists its contents. +function pushdls { + builtin pushd "$argv[-1]" && ls "${(@)argv[1,-2]}" +} + +# Pops an entry off the directory stack and lists its contents. +function popdls { + builtin popd "$argv[-1]" && ls "${(@)argv[1,-2]}" +} + +# Prints columns 1 2 3 ... n. +function slit { + awk "{ print ${(j:,:):-\$${^@}} }" +} + +# Finds files and executes a command on them. +function find-exec { + find . -type f -iname "*${1:-}*" -exec "${2:-file}" '{}' \; +} + +# Displays user owned processes status. +function psu { + ps -U "${1:-$LOGNAME}" -o 'pid,%cpu,%mem,command' "${(@)argv[2,-1]}" +} + +# Enables globbing selectively on path arguments. +# Globbing is enabled on local paths (starting in '/' and './') and disabled +# on remote paths (containing ':' but not starting in '/' and './'). This is +# useful for programs that have their own globbing for remote paths. +# Currently, this is used by default for 'rsync' and 'scp'. +# Example: +# - Local: '*.txt', './foo:2017*.txt', '/var/*:log.txt' +# - Remote: user@localhost:foo/ +# +# NOTE: This function is buggy and is not used anywhere until we can make sure +# it's fixed. See https://github.com/sorin-ionescu/prezto/issues/1443 and +# https://github.com/sorin-ionescu/prezto/issues/1521 for more information. +function noremoteglob { + local -a argo + local cmd="$1" + for arg in ${argv:2}; do case $arg in + ( ./* ) argo+=( ${~arg} ) ;; # local relative, glob + ( /* ) argo+=( ${~arg} ) ;; # local absolute, glob + ( *:* ) argo+=( ${arg} ) ;; # remote, noglob + ( * ) argo+=( ${~arg} ) ;; # default, glob + esac; done + command $cmd "${(@)argo}" +} diff --git a/prezto/.zprezto/modules/wakeonlan/README.md b/prezto/.zprezto/modules/wakeonlan/README.md new file mode 100644 index 0000000..dacfa52 --- /dev/null +++ b/prezto/.zprezto/modules/wakeonlan/README.md @@ -0,0 +1,40 @@ +Wake-on-LAN +=========== + +This module provides a wrapper around the [wakeonlan][1] tool. + +Usage +----- + +To use this wrapper, create the *~/.wakeonlan* directory, and place in it one +file for each device you would like to be able to wake. Give the file a name +that describes the device, such as its hostname. + +Each file should contain a line with the MAC address of the target device and +the network broadcast address. For instance, there might be a file +*~/.wakeonlan/leto* with the following contents: + +```conf +00:11:22:33:44:55:66 192.168.0.255 +``` + +To wake that device, use the following command: + +```sh +$ wake leto +``` + +For more information on the configuration file format, read the +[wakeonlan man page][2]. + +Authors +------- + +*The authors of this module should be contacted via [issue tracker][3].* + + - [Paul Dann](https://github.com/giddie) + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://gsd.di.uminho.pt/jpo/software/wakeonlan/ +[2]: http://man.cx/wakeonlan +[3]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/wakeonlan/functions/_wake b/prezto/.zprezto/modules/wakeonlan/functions/_wake new file mode 100644 index 0000000..87e1a36 --- /dev/null +++ b/prezto/.zprezto/modules/wakeonlan/functions/_wake @@ -0,0 +1,12 @@ +#compdef wake +#autoload + +# +# Completes wake. +# +# Authors: +# Paul Gideon Dann +# Sorin Ionescu +# + +_arguments "1:device to wake:_files -W '$HOME/.wakeonlan'" && return 0 diff --git a/prezto/.zprezto/modules/wakeonlan/functions/wake b/prezto/.zprezto/modules/wakeonlan/functions/wake new file mode 100644 index 0000000..6f7d6c5 --- /dev/null +++ b/prezto/.zprezto/modules/wakeonlan/functions/wake @@ -0,0 +1,24 @@ +# +# Wakes devices via wakeonlan. +# +# Authors: +# Paul Gideon Dann +# Sorin Ionescu +# + +# function wake { + +local config_file="$HOME/.wakeonlan/$1" +if [[ ! -s "$config_file" ]]; then + print "$0: invalid device file: $1" >&2 + return 1 +fi + +if (( ! $+commands[wakeonlan] )); then + print "$0: command not found: wakeonlan" >&2 + return 1 +fi + +wakeonlan -f "$config_file" + +# } diff --git a/prezto/.zprezto/modules/yum/README.md b/prezto/.zprezto/modules/yum/README.md new file mode 100644 index 0000000..fa944da --- /dev/null +++ b/prezto/.zprezto/modules/yum/README.md @@ -0,0 +1,28 @@ +Yum +=== + +Defines [yum][1] aliases. + +Aliases +------- + + - `yumc` removes package(s) and leaves. + - `yumi` installs package(s). + - `yumh` displays history. + - `yuml` lists packages. + - `yumL` lists installed packages. + - `yumq` displays package information. + - `yumr` removes package(s). + - `yums` searches for a package. + - `yumu` updates packages. + - `yumU` upgrades packages. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://yum.baseurl.org +[2]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/modules/yum/init.zsh b/prezto/.zprezto/modules/yum/init.zsh new file mode 100644 index 0000000..2f5427d --- /dev/null +++ b/prezto/.zprezto/modules/yum/init.zsh @@ -0,0 +1,27 @@ +# +# Defines yum aliases. +# +# Authors: +# Simon +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[yum] )); then + return 1 +fi + +# +# Aliases +# + +alias yumc='sudo yum clean all' # Cleans the cache. +alias yumh='yum history' # Displays history. +alias yumi='sudo yum install' # Installs package(s). +alias yuml='yum list' # Lists packages. +alias yumL='yum list installed' # Lists installed packages. +alias yumq='yum info' # Displays package information. +alias yumr='sudo yum remove' # Removes package(s). +alias yums='yum search' # Searches for a package. +alias yumu='sudo yum update' # Updates packages. +alias yumU='sudo yum upgrade' # Upgrades packages. diff --git a/prezto/.zprezto/runcoms/README.md b/prezto/.zprezto/runcoms/README.md new file mode 100644 index 0000000..29d9f8a --- /dev/null +++ b/prezto/.zprezto/runcoms/README.md @@ -0,0 +1,79 @@ +Configuration Files +=================== + +Zsh has several system-wide and user-local configuration files. + +Prezto has one user-local configuration file. + +System-wide configuration files are installation-dependent but are installed +in */etc* by default. + +User-local configuration files have the same name as their global counterparts +but are prefixed with a dot (hidden). Zsh looks for these files in the path +stored in the `$ZDOTDIR` environment variable. However, if said variable is +not defined, Zsh will use the user's home directory. + +File Descriptions +----------------- + +The configuration files are read in the following order: + + 01. /etc/zshenv + 02. ~/.zshenv + 03. /etc/zprofile + 04. ~/.zprofile + 05. /etc/zshrc + 06. ~/.zshrc + 07. ~/.zpreztorc + 08. /etc/zlogin + 09. ~/.zlogin + 10. ~/.zlogout + 11. /etc/zlogout + +### zshenv + +This file is sourced by all instances of Zsh, and thus, it should be kept as +small as possible and should only define environment variables. + +### zprofile + +This file is similar to zlogin, but it is sourced before zshrc. It was added +for [KornShell][1] fans. See the description of zlogin below for what it may +contain. + +zprofile and zlogin are not meant to be used concurrently but can be done so. + +### zshrc + +This file is sourced by interactive shells. It should define aliases, +functions, shell options, and key bindings. + +### zpreztorc + +This file configures Prezto. + +### zlogin + +This file is sourced by login shells after zshrc, and thus, it should contain +commands that need to execute at login. It is usually used for messages such as +[fortune][2], [msgs][3], or for the creation of files. + +This is not the file to define aliases, functions, shell options, and key +bindings. It should not change the shell environment. + +### zlogout + +This file is sourced by login shells during logout. It should be used for +displaying messages and the deletion of files. + +Authors +------- + +*The authors of these files should be contacted via the [issue tracker][4].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.kornshell.com +[2]: http://en.wikipedia.org/wiki/Fortune_(Unix) +[3]: http://www.manpagez.com/man/1/msgs +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/prezto/.zprezto/runcoms/zlogin b/prezto/.zprezto/runcoms/zlogin new file mode 100644 index 0000000..16fae45 --- /dev/null +++ b/prezto/.zprezto/runcoms/zlogin @@ -0,0 +1,26 @@ +# +# Executes commands at login post-zshrc. +# +# Authors: +# Sorin Ionescu +# + +# Execute code that does not affect the current session in the background. +{ + # Compile the completion dump to increase startup speed. + zcompdump="${ZDOTDIR:-$HOME}/.zcompdump" + if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then + zcompile "$zcompdump" + fi +} &! + +# Execute code only if STDERR is bound to a TTY. +[[ -o INTERACTIVE && -t 2 ]] && { + + # Print a random, hopefully interesting, adage. + if (( $+commands[fortune] )); then + fortune -s + print + fi + +} >&2 diff --git a/prezto/.zprezto/runcoms/zlogout b/prezto/.zprezto/runcoms/zlogout new file mode 100644 index 0000000..7dabcd3 --- /dev/null +++ b/prezto/.zprezto/runcoms/zlogout @@ -0,0 +1,19 @@ +# +# Executes commands at logout. +# +# Authors: +# Sorin Ionescu +# +rm -f ~/.zcompdump +# Execute code only if STDERR is bound to a TTY. +[[ -o INTERACTIVE && -t 2 ]] && { + +SAYINGS=( + "So long and thanks for all the fish.\n -- Douglas Adams" + "Good morning! And in case I don't see ya, good afternoon, good evening and goodnight.\n --Truman Burbank" +) + +# Print a randomly-chosen message: +echo $SAYINGS[$(($RANDOM % ${#SAYINGS} + 1))] + +} >&2 diff --git a/prezto/.zprezto/runcoms/zpreztorc b/prezto/.zprezto/runcoms/zpreztorc new file mode 100644 index 0000000..248b367 --- /dev/null +++ b/prezto/.zprezto/runcoms/zpreztorc @@ -0,0 +1,234 @@ +# +# Sets Prezto options. +# +# Authors: +# Sorin Ionescu +# + +# +# General +# +export TERM="xterm-256color" + +# Set case-sensitivity for completion, history lookup, etc. +# zstyle ':prezto:*:*' case-sensitive 'yes' + +# Color output (auto set to 'no' on dumb terminals). +zstyle ':prezto:*:*' color 'yes' + +# Add additional directories to load prezto modules from +# zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib + +# Set the Zsh modules to load (man zshmodules). +# zstyle ':prezto:load' zmodule 'attr' 'stat' + +# Set the Zsh functions to load (man zshcontrib). +# zstyle ':prezto:load' zfunction 'zargs' 'zmv' + +# Set the Prezto modules to load (browse modules). +# The order matters. +zstyle ':prezto:load' pmodule \ + 'environment' \ + 'terminal' \ + 'editor' \ + 'history' \ + 'directory' \ + 'spectrum' \ + 'utility' \ + 'completion' \ + 'aliases' \ + 'should-use' \ + 'q' \ + 'tmux' \ + 'fasd' \ + 'git' \ + 'autosuggestions' \ + 'syntax-highlighting' \ + 'history-search-multi-word' \ + 'prompt' + +# +# Autosuggestions +# + +# Set the query found color. +# zstyle ':prezto:module:autosuggestions:color' found '' + +# +# Completions +# + +# Set the entries to ignore in static */etc/hosts* for host completion. +# zstyle ':prezto:module:completion:*:hosts' etc-host-ignores \ +# '0.0.0.0' '127.0.0.1' + +# +# Editor +# + +# Set the key mapping style to 'emacs' or 'vi'. + zstyle ':prezto:module:editor' key-bindings 'emacs' + +# Auto convert .... to ../.. + zstyle ':prezto:module:editor' dot-expansion 'yes' + +# Allow the zsh prompt context to be shown. + zstyle ':prezto:module:editor' ps-context 'yes' + +# +# Git +# + +# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'. +# zstyle ':prezto:module:git:status:ignore' submodules 'all' + +# +# GNU Utility +# + +# Set the command prefix on non-GNU systems. +# zstyle ':prezto:module:gnu-utility' prefix 'g' + +# +# History Substring Search +# + +# Set the query found color. +# zstyle ':prezto:module:history-substring-search:color' found '' + +# Set the query not found color. +# zstyle ':prezto:module:history-substring-search:color' not-found '' + +# Set the search globbing flags. +# zstyle ':prezto:module:history-substring-search' globbing-flags '' + +# +# macOS +# + +# Set the keyword used by `mand` to open man pages in Dash.app +# zstyle ':prezto:module:osx:man' dash-keyword 'manpages' + +# +# Pacman +# + +# Set the Pacman frontend. +# zstyle ':prezto:module:pacman' frontend 'yaourt' + +# +# Prompt +# + +# Set the prompt theme to load. +# Setting it to 'random' loads a random theme. +# Auto set to 'off' on dumb terminals. + zstyle ':prezto:module:prompt' theme 'paradox' + +# Set the working directory prompt display length. +# By default, it is set to 'short'. Set it to 'long' (without '~' expansion) +# for longer or 'full' (with '~' expansion) for even longer prompt display. +# zstyle ':prezto:module:prompt' pwd-length 'short' + +# Set the prompt to display the return code along with an indicator for non-zero +# return codes. This is not supported by all prompts. +# zstyle ':prezto:module:prompt' show-return-val 'yes' + +# +# Python +# + +# Auto switch the Python virtualenv on directory change. +# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' + +# Automatically initialize virtualenvwrapper if pre-requisites are met. +# zstyle ':prezto:module:python:virtualenv' initialize 'yes' + +# +# Ruby +# + +# Auto switch the Ruby version on directory change. +# zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' + +# +# Screen +# + +# Auto start a session when Zsh is launched in a local terminal. +# zstyle ':prezto:module:screen:auto-start' local 'yes' + +# Auto start a session when Zsh is launched in a SSH connection. +# zstyle ':prezto:module:screen:auto-start' remote 'yes' + +# +# SSH +# + +# Set the SSH identities to load into the agent. +# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github' + +# +# Syntax Highlighting +# + +# Set syntax highlighters. +# By default, only the main highlighter is enabled. + zstyle ':prezto:module:syntax-highlighting' highlighters \ + 'main' \ + 'brackets' \ + 'pattern' \ + 'line' \ + 'cursor' \ + 'root' +# +# Set syntax highlighting styles. +# zstyle ':prezto:module:syntax-highlighting' styles \ +# 'builtin' 'bg=blue' \ +# 'command' 'bg=blue' \ +# 'function' 'bg=blue' +# +# Set syntax pattern styles. +# zstyle ':prezto:module:syntax-highlighting' pattern \ +# 'rm*-rf*' 'fg=white,bold,bg=red' + +# +# Terminal +# + +# Auto set the tab and window titles. +# zstyle ':prezto:module:terminal' auto-title 'yes' + +# Set the window title format. +# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s' + +# Set the tab title format. +# zstyle ':prezto:module:terminal:tab-title' format '%m: %s' + +# Set the terminal multiplexer title format. +# zstyle ':prezto:module:terminal:multiplexer-title' format '%s' + +# +# Tmux +# + +# Auto start a session when Zsh is launched in a local terminal. +# zstyle ':prezto:module:tmux:auto-start' local 'yes' + +# Auto start a session when Zsh is launched in a SSH connection. + zstyle ':prezto:module:tmux:auto-start' remote 'yes' + +# Integrate with iTerm2. +# zstyle ':prezto:module:tmux:iterm' integrate 'yes' + +# Set the default session name: +# zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' + +# +# Utility +# + +# Enabled safe options. This aliases cp, ln, mv and rm so that they prompt +# before deleting or overwriting files. Set to 'no' to disable this safer +# behavior. +# zstyle ':prezto:module:utility' safe-ops 'yes' diff --git a/prezto/.zprezto/runcoms/zprofile b/prezto/.zprezto/runcoms/zprofile new file mode 100644 index 0000000..66a6e6e --- /dev/null +++ b/prezto/.zprezto/runcoms/zprofile @@ -0,0 +1,63 @@ +# +# Executes commands at login pre-zshrc. +# +# Authors: +# Sorin Ionescu +# + +# +# Browser +# + +if [[ "$OSTYPE" == darwin* ]]; then + export BROWSER='open' +fi + +# +# Editors +# + +export EDITOR='vim' +export VISUAL='vim' +export PAGER='less' + +# +# Language +# + +if [[ -z "$LANG" ]]; then + export LANG='en_US.UTF-8' +fi + +# +# Paths +# + +# Ensure path arrays do not contain duplicates. +typeset -gU cdpath fpath mailpath path + +# Set the list of directories that cd searches. +# cdpath=( +# $cdpath +# ) + +# Set the list of directories that Zsh searches for programs. +path=( + /usr/local/{bin,sbin} + $path +) + +# +# Less +# + +# Set the default Less options. +# Mouse-wheel scrolling has been disabled by -X (disable screen clearing). +# Remove -X and -F (exit if the content fits on one screen) to enable it. +export LESS='-F -g -i -M -R -S -w -X -z-4' + +# Set the Less input preprocessor. +# Try both `lesspipe` and `lesspipe.sh` as either might exist on a system. +if (( $#commands[(i)lesspipe(|.sh)] )); then + export LESSOPEN="| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-" +fi diff --git a/prezto/.zprezto/runcoms/zshenv b/prezto/.zprezto/runcoms/zshenv new file mode 100644 index 0000000..0489f46 --- /dev/null +++ b/prezto/.zprezto/runcoms/zshenv @@ -0,0 +1,11 @@ +# +# Defines environment variables. +# +# Authors: +# Sorin Ionescu +# +skip_global_compinit=1 +# Ensure that a non-login, non-interactive shell has a defined environment. +if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then + source "${ZDOTDIR:-$HOME}/.zprofile" +fi diff --git a/prezto/.zprezto/runcoms/zshrc b/prezto/.zprezto/runcoms/zshrc new file mode 100644 index 0000000..652b1db --- /dev/null +++ b/prezto/.zprezto/runcoms/zshrc @@ -0,0 +1,187 @@ +# +# Executes commands at the start of an interactive session. +# +# Authors: +# Sorin Ionescu +# + +# Source Prezto. +if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then + source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" +fi + +# Customize to your needs... +# See http://zsh.sourceforge.net/Doc/Release/Options.html. + +# ============================================================================= +# Changing Directories +# ============================================================================= + +# If a command is issued that can't be executed as a normal command, and the +# command is the name of a directory, perform the cd command to that directory. +setopt auto_cd + +# Make cd push the old directory onto the directory stack. +setopt auto_pushd + +# Don't push multiple copies of the same directory onto the directory stack. +setopt pushd_ignore_dups + +# ============================================================================= +# Completion +# ============================================================================= + +# If a completion is performed with the cursor within a word, and a full +# completion is inserted, the cursor is moved to the end of the word. +setopt always_to_end + +# If unset, the cursor is set to the end of the word if completion is started. +# Otherwise it stays there and completion is done from both ends. +setopt complete_in_word + +# Don't beep on an ambiguous completion. +unsetopt list_beep + +# Characters which are also part of a word. +# See 4.3.4 of http://zsh.sourceforge.net/Guide/zshguide04.html. +WORDCHARS='' + +# See http://zsh.sourceforge.net/Doc/Release/Completion-System.html. +zmodload zsh/complist +autoload -Uz compinit +compinit + +# Menu selection will be started unconditionally. +zstyle ':completion:*' menu select + +# Try smart-case completion, then case-insensitive, then partial-word, and then +# substring completion. +# See http://zsh.sourceforge.net/Doc/Release/Completion-Widgets.html#Completion-Matching-Control. +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Z}{a-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + +# Make sure the terminal is in application mode, which zle is active. Only then +# are the values from $terminfo valid. +# See http://zshwiki.org/home/zle/bindkeys#reading_terminfo. +if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then + function zle-line-init() { + echoti smkx + } + + function zle-line-finish() { + echoti rmkx + } + zle -N zle-line-init + zle -N zle-line-finish +fi + +# Shift-Tab: Perform menu completion, like menu-complete, except that if a menu +# completion is already in progress, move to the previous completion rather than +# the next. +# See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Completion. +[ -n "${terminfo[kcbt]}" ] && bindkey "${terminfo[kcbt]}" reverse-menu-complete + +# Set LS_COLORS. +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" +fi +# If the zsh/complist module is loaded, this style can be used to set color +# specifications. +if [ -z "$LS_COLORS" ]; then + zstyle ':completion:*' list-colors 'di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43:' +else + zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +fi + +# ============================================================================= +# History +# ============================================================================= + +# If the internal history needs to be trimmed to add the current command line, +# setting this option will cause the oldest history event that has a duplicate +# to be lost before losing a unique event from the list. +setopt hist_expire_dups_first + +# When searching for history entries in the line editor, do not display +# duplicates of a line previously found, even if the duplicates are not +# contiguous. +setopt hist_find_no_dups + +# Do not enter command lines into the history list if they are duplicates of the +# previous event. +setopt hist_ignore_dups + +# Whenever the user enters a line with history expansion, don't execute the line +# directly; instead, perform history expansion and reload the line into the +# editing buffer. +setopt hist_verify + +# This options works like APPEND_HISTORY except that new history lines are added +# to the $HISTFILE incrementally (as soon as they are entered), rather than +# waiting until the shell exits. +setopt inc_append_history + +# See 2.5.4 of http://zsh.sourceforge.net/Guide/zshguide02.html. +[ -z "$HISTFILE" ] && HISTFILE=$HOME/.zsh_history +HISTSIZE=10000 +SAVEHIST=10000 + +# ============================================================================= +# Input/Output +# ============================================================================= + +# If this option is unset, output flow control via start/stop characters +# (usually assigned to ^S/^Q) is disabled in the shell's editor. +unsetopt flow_control + +# ============================================================================= +# Key Bindings +# ============================================================================= + +# See +# http://pubs.opengroup.org/onlinepubs/7908799/xcurses/terminfo.html#tag_002_001_003_003 +# for the table of terminfo, and see +# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets +# for standard widgets of zsh. + +# Home +[ -n "${terminfo[khome]}" ] && bindkey "${terminfo[khome]}" beginning-of-line +# End +[ -n "${terminfo[kend]}" ] && bindkey "${terminfo[kend]}" end-of-line +# Backspace +[ -n "${terminfo[kbs]}" ] && bindkey "${terminfo[kbs]}" backward-delete-char +# Delete +[ -n "${terminfo[kdch1]}" ] && bindkey "${terminfo[kdch1]}" delete-char +# Up-arrow +[ -n "${terminfo[kcuu1]}" ] && bindkey "${terminfo[kcuu1]}" up-line-or-history +# Down-arrow +[ -n "${terminfo[kcud1]}" ] && bindkey "${terminfo[kcud1]}" down-line-or-history +# Left-arrow +[ -n "${terminfo[kcub1]}" ] && bindkey "${terminfo[kcub1]}" backward-char +# Right-arrow +[ -n "${terminfo[kcuf1]}" ] && bindkey "${terminfo[kcuf1]}" forward-char + +# ============================================================================= +#https://github.com/willghatch/zsh-saneopt/blob/master/saneopt.plugin.zsh +# ============================================================================= +# no c-s/c-q output freezing +setopt noflowcontrol +# allow expansion in prompts +setopt prompt_subst + +# save each command's beginning timestamp and the duration to the history file +setopt extended_history +# display PID when suspending processes as well +setopt longlistjobs +# try to avoid the 'zsh: no matches found...' +setopt nonomatch +# report the status of backgrounds jobs immediately +setopt notify +# whenever a command completion is attempted, make sure the entire command path +# is hashed first. +setopt hash_list_all + + +# allow use of comments in interactive code +setopt interactivecomments + +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh