From b38ced856a4ffb3e159d855db701ae379b19dc76 Mon Sep 17 00:00:00 2001 From: "John P. Neumann" Date: Sun, 2 Apr 2017 14:09:58 -0500 Subject: [PATCH 001/213] Adds additional support for PS prompt context expansion --- modules/editor/README.md | 7 +++++++ modules/editor/init.zsh | 21 ++++++++++++++++++--- runcoms/zpreztorc | 3 +++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/modules/editor/README.md b/modules/editor/README.md index da0185fd..44bc829c 100644 --- a/modules/editor/README.md +++ b/modules/editor/README.md @@ -20,6 +20,13 @@ To enable the auto conversion of .... to ../.., add the following to zstyle ':prezto:module:editor' dot-expansion 'yes' +### PS Context + +To enable the prompt context to be set, add the following to your +*zpreztorc*. + + zstyle ':prezto:module:editor' ps-context 'yes' + Theming ------- diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 9aa64d64..e23fb0d7 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -103,12 +103,27 @@ function editor-info { fi unset REPLY - - zle reset-prompt - zle -R + 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 diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index e93ac6bf..d1d97d2c 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -51,6 +51,9 @@ 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 # From 7346efd206015609c64537310cf6e45bb392bc72 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 7 Mar 2017 17:42:41 -0800 Subject: [PATCH 002/213] Allow setting ZPREZTODIR to make prezto easier to integrate with --- init.zsh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/init.zsh b/init.zsh index 6b5254fb..b425b62a 100644 --- a/init.zsh +++ b/init.zsh @@ -31,7 +31,7 @@ function pmodload { pmodules=("$argv[@]") # Add functions to $fpath. - fpath=(${pmodules:+${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions(/FN)} $fpath) + fpath=(${pmodules:+$ZPREZTODIR/modules/${^pmodules}/functions(/FN)} $fpath) function { local pfunction @@ -40,7 +40,7 @@ function pmodload { setopt LOCAL_OPTIONS EXTENDED_GLOB # Load Prezto functions. - for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions/$~pfunction_glob; do + for pfunction in $ZPREZTODIR/modules/${^pmodules}/functions/$~pfunction_glob; do autoload -Uz "$pfunction" done } @@ -49,19 +49,19 @@ function pmodload { for pmodule in "$pmodules[@]"; do if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then continue - elif [[ ! -d "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule" ]]; then + elif [[ ! -d "$ZPREZTODIR/modules/$pmodule" ]]; then print "$0: no such module: $pmodule" >&2 continue else - if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh" ]]; then - source "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh" + if [[ -s "$ZPREZTODIR/modules/$pmodule/init.zsh" ]]; then + source "$ZPREZTODIR/modules/$pmodule/init.zsh" fi if (( $? == 0 )); then zstyle ":prezto:module:$pmodule" loaded 'yes' else # Remove the $fpath entry. - fpath[(r)${ZDOTDIR:-$HOME}/.zprezto/modules/${pmodule}/functions]=() + fpath[(r)${ZPREZTODIR}/modules/${pmodule}/functions]=() function { local pfunction @@ -71,7 +71,7 @@ function pmodload { setopt LOCAL_OPTIONS EXTENDED_GLOB # Unload Prezto functions. - for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/functions/$~pfunction_glob; do + for pfunction in $ZPREZTODIR/modules/$pmodule/functions/$~pfunction_glob; do unfunction "$pfunction" done } @@ -86,6 +86,9 @@ function pmodload { # Prezto Initialization # +# Find the dir Prezto is installed to +ZPREZTODIR=${ZPREZTODIR:-${ZDOTDIR:-$HOME}/.zprezto} + # Source the Prezto configuration file. if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then source "${ZDOTDIR:-$HOME}/.zpreztorc" From 0be0ff565aeb9d79d85b9db593f5ffef445cef35 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 8 Mar 2017 11:22:39 -0800 Subject: [PATCH 003/213] Set ZPREZTODIR to ${0:h} --- init.zsh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/init.zsh b/init.zsh index b425b62a..2ce20890 100644 --- a/init.zsh +++ b/init.zsh @@ -86,8 +86,11 @@ function pmodload { # Prezto Initialization # -# Find the dir Prezto is installed to -ZPREZTODIR=${ZPREZTODIR:-${ZDOTDIR:-$HOME}/.zprezto} +# 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 From 8820b71f3707d6d1fb1fe0a786572bdc80cda94b Mon Sep 17 00:00:00 2001 From: Plastix Date: Sat, 18 Mar 2017 12:36:46 -0400 Subject: [PATCH 004/213] Update pure prompt to v1.5.2 This fixes a security issue with malicious branch names --- modules/prompt/external/pure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure index fb4c37da..04fa7495 160000 --- a/modules/prompt/external/pure +++ b/modules/prompt/external/pure @@ -1 +1 @@ -Subproject commit fb4c37dad3c5cbdebca61a8ff5545397c11d450f +Subproject commit 04fa7495cf8fe3aff8ce286d4517df15066b820a From 2ba060a4264d5090c1d5c0618b6e472969d7aeea Mon Sep 17 00:00:00 2001 From: Andreas Grauel Date: Mon, 26 Dec 2016 09:31:17 +0100 Subject: [PATCH 005/213] update brewu method Homebrew decided to not change the behaviour of `brew upgrade` so `brew upgrade --all` is equivalent to `brew upgrade` without any other arguments (so the `--all` is a no-op and can be removed). --- modules/homebrew/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh index 1ebe793d..1196fa57 100644 --- a/modules/homebrew/init.zsh +++ b/modules/homebrew/init.zsh @@ -20,7 +20,7 @@ alias brewC='brew cleanup --force' alias brewi='brew install' alias brewl='brew list' alias brews='brew search' -alias brewu='brew update && brew upgrade --all' +alias brewu='brew update && brew upgrade' alias brewx='brew remove' # Homebrew Cask From 8913bcccd217e6935fff9f5ed73f4ea4a082fb05 Mon Sep 17 00:00:00 2001 From: Eduard Zintz Date: Mon, 3 Apr 2017 22:27:06 +0200 Subject: [PATCH 006/213] Use python3 for http-serve alias if available (#1193) --- modules/utility/init.zsh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index fd7aaf6e..ca547cbf 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -158,7 +158,11 @@ fi # Miscellaneous # Serves a directory via HTTP. -alias http-serve='python -m SimpleHTTPServer' +if (( $+commands[python3] )); then + alias http-serve='python3 -m http.server' +else + alias http-serve='python -m SimpleHTTPServer' +fi # # Functions From 5271af8180bf455ff194195c93261a7b877c602c Mon Sep 17 00:00:00 2001 From: Mateusz Lewko Date: Mon, 3 Apr 2017 22:29:58 +0200 Subject: [PATCH 007/213] Ensure code blocks are formatted properly for GitHub (#1271) --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d6b40af0..9724d5c5 100644 --- a/README.md +++ b/README.md @@ -13,23 +13,25 @@ version is 4.3.17. 1. Launch Zsh: - zsh + `zsh` 2. Clone the repository: - git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" + `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: + ``` setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done + ``` 4. Set Zsh as your default shell: - chsh -s /bin/zsh + `chsh -s /bin/zsh` 5. Open a new Zsh terminal window or tab. From a7729561e8f9b2efee6177aca74809b7c8d7e63f Mon Sep 17 00:00:00 2001 From: Calvin Smith Date: Mon, 3 Apr 2017 23:06:02 -0700 Subject: [PATCH 008/213] Add support for skipping VIRTUALENVWRAPPER init in modules/python (#598) * Support skip-virtualenvwrapper-init zstyle in python module to avoid auto-sourcing of virtualenvwrapper.sh * Don't overwrite the WORKON_HOME env var if the user has already set it --- modules/python/init.zsh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index da78ea79..458253b2 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -34,10 +34,11 @@ if (( ! $+commands[python] && ! $+commands[pyenv] )); then return 1 fi -# Load virtualenvwrapper into the shell session. -if (( $+commands[virtualenvwrapper.sh] )); then +# Load virtualenvwrapper into the shell session, unless requested not to +zstyle -t ':prezto:module:python' skip-virtualenvwrapper-init +if (( $? && $+commands[virtualenvwrapper.sh] )); then # Set the directory where virtual environments are stored. - export WORKON_HOME="$HOME/.virtualenvs" + export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}" # Disable the virtualenv prompt. VIRTUAL_ENV_DISABLE_PROMPT=1 From dcd85961926467647e015ef803df9bdaacbc3509 Mon Sep 17 00:00:00 2001 From: Paul Melnikow Date: Sat, 10 Sep 2016 10:41:37 -0400 Subject: [PATCH 009/213] Don't load pfunctions from vi swap files --- init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.zsh b/init.zsh index 2ce20890..665e6c40 100644 --- a/init.zsh +++ b/init.zsh @@ -25,7 +25,7 @@ unset min_zsh_version function pmodload { local -a pmodules local pmodule - local pfunction_glob='^([_.]*|prompt_*_setup|README*)(-.N:t)' + local pfunction_glob='^([_.]*|prompt_*_setup|README*|*~)(-.N:t)' # $argv is overridden in the anonymous function. pmodules=("$argv[@]") From 3a6ae0fc6c73963e5f6b0b77f32d219677c840b5 Mon Sep 17 00:00:00 2001 From: Jared Scott Date: Wed, 12 Oct 2016 00:54:11 -0400 Subject: [PATCH 010/213] Change $TMPDIR for non-interactive shells This commit changes the way $TMPDIR is set by using `mktemp` rather than a fixed string. --- runcoms/zprofile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/runcoms/zprofile b/runcoms/zprofile index d87cb3b0..052d5f98 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -67,8 +67,7 @@ fi # if [[ ! -d "$TMPDIR" ]]; then - export TMPDIR="/tmp/$LOGNAME" - mkdir -p -m 700 "$TMPDIR" + export TMPDIR="$(mktemp -d)" fi TMPPREFIX="${TMPDIR%/}/zsh" From 4e35f701ca30491518a32a42cad9a21a83388db2 Mon Sep 17 00:00:00 2001 From: Kyle Rich Date: Wed, 25 May 2016 17:31:11 -0600 Subject: [PATCH 011/213] Add "sa" alias to make it easy to search aliases --- modules/utility/README.md | 1 + modules/utility/init.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/modules/utility/README.md b/modules/utility/README.md index 5e7919ea..16b4317c 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -75,6 +75,7 @@ Aliases - `pu` changes the directory and pushes the old directory onto the stack (`pushd`). - `rm` removes files and directories interactively. + - `sa` search aliases for a word. - `type` displays all the attribute values of a shell parameter. ### Files and Directories diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index ca547cbf..961d917d 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -57,6 +57,7 @@ alias p='${(z)PAGER}' alias po='popd' alias pu='pushd' alias rm="${aliases[rm]:-rm} -i" +alias sa='alias | grep -i' alias type='type -a' # ls From 2c1ad5bed1014884917b0e5642912b5d3a701035 Mon Sep 17 00:00:00 2001 From: Dario Gjorgjevski Date: Wed, 5 Apr 2017 06:24:50 +0200 Subject: [PATCH 012/213] Avoid unsetting nonexistent variables (#1075) --- modules/editor/init.zsh | 2 +- modules/history-substring-search/init.zsh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 9aa64d64..c77e65c9 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -326,4 +326,4 @@ else print "prezto: editor: invalid key bindings: $key_bindings" >&2 fi -unset key{,map,bindings} +unset key{,map,_bindings} diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh index 67990a38..d3ee3a11 100644 --- a/modules/history-substring-search/init.zsh +++ b/modules/history-substring-search/init.zsh @@ -54,4 +54,6 @@ if [[ -n "$key_info" ]]; then bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down done + + unset keymap fi From 483447082b04c3e4830f52a69b23f5a696bf4da5 Mon Sep 17 00:00:00 2001 From: Jamie Rolfs Date: Thu, 16 Mar 2017 03:12:18 -0700 Subject: [PATCH 013/213] Add nodenv support to Node.js module - Implementation from https://github.com/sorin-ionescu/prezto/pull/1001 - Documentation from https://github.com/sorin-ionescu/prezto/pull/1178 --- modules/node/README.md | 9 +++++++++ modules/node/functions/node-info | 2 ++ modules/node/init.zsh | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/modules/node/README.md b/modules/node/README.md index 5f0c3caf..66e9784d 100644 --- a/modules/node/README.md +++ b/modules/node/README.md @@ -10,6 +10,13 @@ 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 --------- @@ -43,3 +50,5 @@ Authors [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/modules/node/functions/node-info b/modules/node/functions/node-info index 7742f904..e4cd52d0 100644 --- a/modules/node/functions/node-info +++ b/modules/node/functions/node-info @@ -15,6 +15,8 @@ typeset -gA node_info if (( $+functions[nvm_version] )); then version="${$(nvm_version)#v}" +elif (( $+commands[nodenv] )); then + version="${${$(nodenv version)#v}[(w)0]}" fi if [[ "$version" != (none|) ]]; then diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 6d600789..2eb297c1 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -14,6 +14,14 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then source $(brew --prefix nvm)/nvm.sh +# Load manually installed nodenv into the shell session. +elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then + eval "$($HOME/.nodenv/bin/nodenv init -)" + +# Load package manager installed nodenv into the shell session. +elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nodenv 2>/dev/null)" ]]; then + eval "$($(brew --prefix nodenv)/bin/nodenv init -)" + # Return if requirements are not found. elif (( ! $+commands[node] )); then return 1 From fb689449a76328ba23f60a5e07e22fc3bad55467 Mon Sep 17 00:00:00 2001 From: Matt Hamilton Date: Tue, 4 Apr 2017 21:30:48 -0700 Subject: [PATCH 014/213] Prefer $(COMMAND) syntax over backticks (#1012) --- modules/dpkg/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dpkg/init.zsh b/modules/dpkg/init.zsh index e1f479b0..69d524fc 100644 --- a/modules/dpkg/init.zsh +++ b/modules/dpkg/init.zsh @@ -54,4 +54,4 @@ fi 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`))"' +alias deb-kclean='sudo aptitude remove -P "?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))"' From 12d48dfcf9f8b082ee462242f0fde99bdde3c06d Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Wed, 5 Apr 2017 00:36:28 -0400 Subject: [PATCH 015/213] Remove extra use of grep in git-hub-shorten-url (#904) --- modules/git/functions/git-hub-shorten-url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/git/functions/git-hub-shorten-url b/modules/git/functions/git-hub-shorten-url index 77e4b0ba..d37b04eb 100644 --- a/modules/git/functions/git-hub-shorten-url +++ b/modules/git/functions/git-hub-shorten-url @@ -16,7 +16,7 @@ if [[ -z "$url" ]]; then fi if (( $+commands[curl] )); then - curl -s -i 'http://git.io' -F "url=$url" | grep 'Location:' | sed 's/Location: //' + curl -s -i 'http://git.io' -F "url=$url" | sed -n 's/^Location: //p' else print "$0: command not found: curl" >&2 fi From 65b05c0220b5b26bc913477a215b60de86d04f8a Mon Sep 17 00:00:00 2001 From: Wojciech Pietrzak Date: Wed, 5 Apr 2017 07:03:47 +0200 Subject: [PATCH 016/213] Add notice about potential shadowing of the gb command (#1124) --- modules/git/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/git/README.md b/modules/git/README.md index c2d0449c..65de1132 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -214,6 +214,7 @@ The following aliases may shadow system commands: - `gpt` shadows the [GUID partition table maintenance utility][4]. - `gs` shadows the [Ghostscript][5]. + - `gb` shadows the [GB][9]. 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`. @@ -332,3 +333,4 @@ Authors [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/ From ddfc870f9aae4f43da10863a175cee2c91485cde Mon Sep 17 00:00:00 2001 From: Justin Filip Date: Tue, 24 Nov 2015 20:13:31 -0500 Subject: [PATCH 017/213] Use less destructive git push --force-with-lease. --- modules/git/alias.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index ffa854dd..d6038308 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -117,7 +117,8 @@ alias gmt='git mergetool' # Push (p) alias gp='git push' -alias gpf='git push --force' +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' From 013668f484d1543cdadafac659a21e940df99957 Mon Sep 17 00:00:00 2001 From: Olaf Conradi Date: Mon, 28 Apr 2014 04:19:52 +0200 Subject: [PATCH 018/213] Improve and simplify titling functions. Multiplexer titles can be set independent of window and tab titles. Add auto-title always option to have dynamic titling inside terminal multiplexers. Setting auto-title to yes continues to ignore dynamic titling inside terminal multiplexers. This patch should not alter behavior under Apple terminals. --- modules/terminal/README.md | 15 ++++++++++---- modules/terminal/init.zsh | 40 +++++++++++++++++++++++--------------- runcoms/zpreztorc | 3 +++ 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/modules/terminal/README.md b/modules/terminal/README.md index 58f81be1..5a607880 100644 --- a/modules/terminal/README.md +++ b/modules/terminal/README.md @@ -13,14 +13,19 @@ directory, add the following to *zpreztorc*: 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. +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`. + + zstyle ':prezto:module:terminal' auto-title 'always' + +### Title formats To format terminal window and tab titles, add the following to *zpreztorc*: 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. @@ -31,7 +36,8 @@ Functions --------- - `set-tab-title` sets the terminal tab title. -- `set-window-title` sets the terminal or terminal multiplexer window title. +- `set-window-title` sets the terminal window title. +- `set-multiplexer-title` sets the terminal multiplexer title. Authors ------- @@ -39,6 +45,7 @@ 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/modules/terminal/init.zsh b/modules/terminal/init.zsh index b0be5023..c7b22b7a 100644 --- a/modules/terminal/init.zsh +++ b/modules/terminal/init.zsh @@ -3,6 +3,7 @@ # # Authors: # Sorin Ionescu +# Olaf Conradi # # Return if requirements are not found. @@ -10,19 +11,12 @@ if [[ "$TERM" == (dumb|linux|*bsd*|eterm*) ]]; then return 1 fi -# Sets the terminal or terminal multiplexer window title. +# 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" - - if [[ "$TERM" == screen* ]]; then - title_format="\ek%s\e\\" - else - title_format="\e]2;%s\a" - fi - - printf "$title_format" "${(V%)title_formatted}" + printf '\e]2;%s\a' "${(V%)title_formatted}" } # Sets the terminal tab title. @@ -30,8 +24,15 @@ 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}" +} - 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. @@ -59,8 +60,11 @@ function _terminal-set-titles-with-command { local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}" unset MATCH - set-window-title "$cmd" + if [[ "$TERM" == screen* ]]; then + set-multiplexer-title "$truncated_cmd" + fi set-tab-title "$truncated_cmd" + set-window-title "$cmd" fi } @@ -74,8 +78,11 @@ function _terminal-set-titles-with-path { local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}" unset MATCH - set-window-title "$abbreviated_path" + 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. @@ -110,12 +117,13 @@ then fi # Set up non-Apple terminals. -if zstyle -t ':prezto:module:terminal' auto-title \ - && ( ! [[ -n "$STY" || -n "$TMUX" ]] ) +if zstyle -t ':prezto:module:terminal' auto-title 'always' \ + || (zstyle -t ':prezto:module:terminal' auto-title \ + && ( ! [[ -n "$STY" || -n "$TMUX" ]] )) then - # Sets the tab and window titles before the prompt is displayed. + # Sets titles before the prompt is displayed. add-zsh-hook precmd _terminal-set-titles-with-path - # Sets the tab and window titles before command execution. + # Sets titles before command execution. add-zsh-hook preexec _terminal-set-titles-with-command fi diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index e93ac6bf..ab26ff8b 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -151,6 +151,9 @@ zstyle ':prezto:module:prompt' theme 'sorin' # 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 # From 076e29e97df3b15fd53f12d6d438cdae78f46773 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 4 Apr 2017 22:44:28 -0700 Subject: [PATCH 019/213] Update zsh-autosuggestions submodule location Thanks to @naibaf0. Closes #1096. --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 518a2795..64941492 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ +[submodule "modules/autosuggestions/external"] + path = modules/autosuggestions/external + url = https://github.com/zsh-users/zsh-autosuggestions [submodule "modules/history-substring-search/external"] path = modules/history-substring-search/external url = https://github.com/zsh-users/zsh-history-substring-search.git @@ -16,6 +19,3 @@ [submodule "modules/prompt/functions/pure"] path = modules/prompt/external/pure url = https://github.com/sindresorhus/pure.git -[submodule "modules/autosuggestions/external"] - path = modules/autosuggestions/external - url = https://github.com/tarruda/zsh-autosuggestions From fd0b627a8b19006585b74606306d32ef4168fa72 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 4 Apr 2017 22:49:59 -0700 Subject: [PATCH 020/213] Update zsh-users submodules to latest stable versions --- modules/autosuggestions/external | 2 +- modules/completion/external | 2 +- modules/history-substring-search/external | 2 +- modules/syntax-highlighting/external | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external index f0a74557..9cfaf5d3 160000 --- a/modules/autosuggestions/external +++ b/modules/autosuggestions/external @@ -1 +1 @@ -Subproject commit f0a745576ff69fa608421ee7214d4cd77b43e62f +Subproject commit 9cfaf5d3424ceb5fedd2c7e3253f823faae74383 diff --git a/modules/completion/external b/modules/completion/external index 3a2bb878..72af5d08 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit 3a2bb8781d32d05d1bf05deeeb476beb651e8272 +Subproject commit 72af5d08f1c07507d74103af039e98a2791fccb5 diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index 7a4b54b7..aae33884 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit 7a4b54b708ab88e0421097614f1acaa7a973c795 +Subproject commit aae3388491c2312c4efb2e86bcb999927bb2900e diff --git a/modules/syntax-highlighting/external b/modules/syntax-highlighting/external index 7044c198..15d45875 160000 --- a/modules/syntax-highlighting/external +++ b/modules/syntax-highlighting/external @@ -1 +1 @@ -Subproject commit 7044c1986e2f6b15eec27a03651207fccb0a2fbe +Subproject commit 15d4587514a3beaa13972093e335bf685b6726a9 From 27c2ccd8b9d189ca06f47e5618d6fd525dfda9c9 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 4 Apr 2017 22:51:17 -0700 Subject: [PATCH 021/213] Update external prompt modules --- modules/prompt/external/agnoster | 2 +- modules/prompt/external/powerline | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster index 43cb371f..f8ffdbfb 160000 --- a/modules/prompt/external/agnoster +++ b/modules/prompt/external/agnoster @@ -1 +1 @@ -Subproject commit 43cb371f361eecf62e9dac7afc73a1c16edf89c7 +Subproject commit f8ffdbfbe2c2d8cd1350eae1b68367802fe6df26 diff --git a/modules/prompt/external/powerline b/modules/prompt/external/powerline index 8e811523..c48e4c69 160000 --- a/modules/prompt/external/powerline +++ b/modules/prompt/external/powerline @@ -1 +1 @@ -Subproject commit 8e81152340c4beb2d941340d1feb2dc29bbcc309 +Subproject commit c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc From c0049855c51326e9b4eb595a970eb6d4c7ed3f9b Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Sun, 9 Aug 2015 12:40:04 +0200 Subject: [PATCH 022/213] Added option to skip git aliases definition Fixes #947 --- modules/git/README.md | 4 + modules/git/alias.zsh | 310 +++++++++++++++++++++--------------------- 2 files changed, 160 insertions(+), 154 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 65de1132..37194126 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -29,6 +29,10 @@ This setting affects all aliases and functions that call `git-status`. Aliases ------- +Aliases are enabled by default. You can disable them with: + + zstyle ':prezto:module:git:alias' skip 'yes' + ### Git - `g` is short for `git`. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index d6038308..48455147 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -26,157 +26,159 @@ zstyle -s ':prezto:module:git:status:ignore' submodules '_git_status_ignore_subm # Aliases # -# Git -alias g='git' - -# Branch (b) -alias gb='git branch' -alias gbc='git checkout -b' -alias gbl='git branch -v' -alias gbL='git branch -av' -alias gbx='git branch -d' -alias gbX='git branch -D' -alias gbm='git branch -m' -alias gbM='git branch -M' -alias gbs='git show-branch' -alias gbS='git show-branch -a' - -# Commit (c) -alias gc='git commit --verbose' -alias gca='git commit --verbose --all' -alias gcm='git commit --message' -alias gco='git checkout' -alias gcO='git checkout --patch' -alias gcf='git commit --amend --reuse-message HEAD' -alias gcF='git commit --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 gcl='git-commit-lost' - -# Conflict (C) -alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"' -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 gfc='git clone' -alias gfm='git pull' -alias gfr='git pull --rebase' - -# 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 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' - -# 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' - -# 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' +if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then + # Git + alias g='git' + + # Branch (b) + alias gb='git branch' + alias gbc='git checkout -b' + alias gbl='git branch -v' + alias gbL='git branch -av' + alias gbx='git branch -d' + alias gbX='git branch -D' + alias gbm='git branch -m' + alias gbM='git branch -M' + alias gbs='git show-branch' + alias gbS='git show-branch -a' + + # Commit (c) + alias gc='git commit --verbose' + alias gca='git commit --verbose --all' + alias gcm='git commit --message' + alias gco='git checkout' + alias gcO='git checkout --patch' + alias gcf='git commit --amend --reuse-message HEAD' + alias gcF='git commit --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 gcl='git-commit-lost' + + # Conflict (C) + alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"' + 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 gfc='git clone' + alias gfm='git pull' + alias gfr='git pull --rebase' + + # 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 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' + + # 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' + + # 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 From 95d19b37c12d0f4f1fb327adf310c1e14eeb8938 Mon Sep 17 00:00:00 2001 From: Kire Ledan Date: Sun, 29 Nov 2015 10:52:04 -0500 Subject: [PATCH 023/213] Added support for python venv display in paradox prompt --- modules/prompt/functions/prompt_paradox_setup | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index 36ae40ec..7e9b9493 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -52,6 +52,10 @@ function prompt_paradox_build_prompt { 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 } @@ -103,6 +107,7 @@ function prompt_paradox_precmd { function prompt_paradox_preexec { _prompt_paradox_start_time="$SECONDS" + python-info } function prompt_paradox_setup { @@ -143,6 +148,9 @@ function prompt_paradox_setup { '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)} From 464a8d20a1e05b256d2b0a9d05d231c30160835d Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Thu, 9 Jul 2015 17:53:58 -0700 Subject: [PATCH 024/213] utility module: fix/improve colordiff call in diff The new call is compatible with colordiff v1.0.8 - v.1.0.15 (might be compatible with even earlier versions, but not tested), while the original one breaks down under v1.0.14 and v1.0.15. See https://github.com/daveewart/colordiff/issues/22. --- modules/utility/functions/diff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utility/functions/diff b/modules/utility/functions/diff index 8347899e..d5dd360b 100644 --- a/modules/utility/functions/diff +++ b/modules/utility/functions/diff @@ -8,7 +8,7 @@ function diff { if zstyle -t ':prezto:module:utility:diff' color; then if (( $+commands[colordiff] )); then - command diff --unified "$@" | colordiff --difftype diffu + command colordiff --unified "$@" elif (( $+commands[git] )); then git --no-pager diff --color=auto --no-ext-diff --no-index "$@" else From 909006638dbe57517352497806f8094dc52a8c22 Mon Sep 17 00:00:00 2001 From: Paul Melnikow Date: Wed, 5 Apr 2017 12:34:31 -0400 Subject: [PATCH 025/213] Bump license years and tidy up readme (#1273) --- LICENSE | 20 ++++++++++++++++++++ README.md | 24 +----------------------- 2 files changed, 21 insertions(+), 23 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..d4171477 --- /dev/null +++ b/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/README.md b/README.md index 9724d5c5..05a40cdf 100644 --- a/README.md +++ b/README.md @@ -85,29 +85,7 @@ The [Zsh Reference Card][7] and the [zsh-lovers][8] man page are indispensable. License ------- -(The MIT License) - -Copyright (c) 2009-2011 Robby Russell and contributors. - -Copyright (c) 2011-2015 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. +This project is licensed under the MIT License. [1]: http://www.zsh.org [2]: http://i.imgur.com/nrGV6pg.png "sorin theme" From e413ef5a97c5beff41ca7c2b93ae431ee295790a Mon Sep 17 00:00:00 2001 From: Griffin Yourick Date: Mon, 10 Apr 2017 14:23:49 -0400 Subject: [PATCH 026/213] Add support for iTerm2 v3 in tab function --- modules/osx/functions/tab | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/osx/functions/tab b/modules/osx/functions/tab index e95afbf5..fb3b2479 100644 --- a/modules/osx/functions/tab +++ b/modules/osx/functions/tab @@ -39,3 +39,14 @@ EOF end tell EOF } + +[[ "$the_app" == 'iTerm2']] && { + osascript 2>/dev/null < Date: Mon, 10 Apr 2017 14:15:08 -0400 Subject: [PATCH 027/213] Use patterns from ruby module for initializing nodenv --- modules/node/init.zsh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 2eb297c1..643c7521 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -16,11 +16,12 @@ elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then # Load manually installed nodenv into the shell session. elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then - eval "$($HOME/.nodenv/bin/nodenv init -)" + path=("$HOME/.rbenv/bin $path") + eval "$(nodenv init - --no-rehash zsh)" # Load package manager installed nodenv into the shell session. -elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nodenv 2>/dev/null)" ]]; then - eval "$($(brew --prefix nodenv)/bin/nodenv init -)" +elif (( $+commands[nodenv] )); then + eval "$(nodenv init - --no-rehash zsh)" # Return if requirements are not found. elif (( ! $+commands[node] )); then From 94708f6b50ed7bc904e2e28a08cf628b568305bc Mon Sep 17 00:00:00 2001 From: Griffin Yourick Date: Mon, 10 Apr 2017 14:40:43 -0400 Subject: [PATCH 028/213] Fix path in node module --- modules/node/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 643c7521..46ab4411 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -16,7 +16,7 @@ elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then # Load manually installed nodenv into the shell session. elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then - path=("$HOME/.rbenv/bin $path") + path=("$HOME/.nodenv/bin $path") eval "$(nodenv init - --no-rehash zsh)" # Load package manager installed nodenv into the shell session. From ee249e50eedb86be7896b803ceb3156eb30a4856 Mon Sep 17 00:00:00 2001 From: nstCactus Date: Tue, 11 Apr 2017 13:37:12 +0200 Subject: [PATCH 029/213] FIXED: syntax error in osx module tab function --- modules/osx/functions/tab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/osx/functions/tab b/modules/osx/functions/tab index fb3b2479..e0f2dc24 100644 --- a/modules/osx/functions/tab +++ b/modules/osx/functions/tab @@ -40,7 +40,7 @@ EOF EOF } -[[ "$the_app" == 'iTerm2']] && { +[[ "$the_app" == 'iTerm2' ]] && { osascript 2>/dev/null < Date: Tue, 11 Apr 2017 15:12:09 -0700 Subject: [PATCH 030/213] Only try to run python-info if it exists for the paradox prompt --- modules/prompt/functions/prompt_paradox_setup | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index 7e9b9493..95444151 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -107,7 +107,9 @@ function prompt_paradox_precmd { function prompt_paradox_preexec { _prompt_paradox_start_time="$SECONDS" - python-info + if (( $+functions[python-info] )); then + python-info + fi } function prompt_paradox_setup { From 60c433d4ce680ddb2ca899b460e3714728cb221c Mon Sep 17 00:00:00 2001 From: Matt Hamilton Date: Tue, 29 Sep 2015 11:42:55 -0400 Subject: [PATCH 031/213] Move common promptpwd code to external function --- modules/prompt/functions/prompt_damoekri_setup | 15 ++------------- modules/prompt/functions/prompt_paradox_setup | 15 ++------------- modules/prompt/functions/prompt_sorin_setup | 15 ++------------- modules/prompt/functions/promptpwd | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 39 deletions(-) create mode 100644 modules/prompt/functions/promptpwd diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup index 58c4d352..89e4d758 100644 --- a/modules/prompt/functions/prompt_damoekri_setup +++ b/modules/prompt/functions/prompt_damoekri_setup @@ -11,23 +11,12 @@ # Load dependencies. pmodload 'helper' -function prompt_damoekri_pwd { - local pwd="${PWD/#$HOME/~}" - - if [[ "$pwd" == (#m)[/~] ]]; then - _prompt_damoekri_pwd="$MATCH" - unset MATCH - else - _prompt_damoekri_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" - fi -} - -function prompt_damoekri_precmd { +prompt_damoekri_precmd() { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS # Format PWD. - prompt_damoekri_pwd + _prompt_damoekri_pwd=$(promptpwd) # Get Git repository information. if (( $+functions[git-info] )); then diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index 95444151..c1a808d7 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -59,18 +59,7 @@ function prompt_paradox_build_prompt { prompt_paradox_end_segment } -function prompt_paradox_pwd { - local pwd="${PWD/#$HOME/~}" - - if [[ "$pwd" == (#m)[/~] ]]; then - _prompt_paradox_pwd="$MATCH" - unset MATCH - else - _prompt_paradox_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" - fi -} - -function prompt_paradox_print_elapsed_time { +prompt_paradox_print_elapsed_time() { local end_time=$(( SECONDS - _prompt_paradox_start_time )) local hours minutes seconds remainder @@ -94,7 +83,7 @@ function prompt_paradox_precmd { unsetopt XTRACE KSH_ARRAYS # Format PWD. - prompt_paradox_pwd + _prompt_paradox_pwd=$(promptpwd) # Get Git repository information. if (( $+functions[git-info] )); then diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index e339dffe..c4d12c34 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -32,18 +32,7 @@ # Load dependencies. pmodload 'helper' -function prompt_sorin_pwd { - local pwd="${PWD/#$HOME/~}" - - if [[ "$pwd" == (#m)[/~] ]]; then - _prompt_sorin_pwd="$MATCH" - unset MATCH - else - _prompt_sorin_pwd="${${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}//\%/%%}/${${pwd:t}//\%/%%}" - fi -} - -function prompt_sorin_git_info { +prompt_sorin_git_info() { if (( _prompt_sorin_precmd_async_pid > 0 )); then # Append Git status. if [[ -s "$_prompt_sorin_precmd_async_data" ]]; then @@ -77,7 +66,7 @@ function prompt_sorin_precmd { unsetopt XTRACE KSH_ARRAYS # Format PWD. - prompt_sorin_pwd + _prompt_sorin_pwd=$(promptpwd) # Define prompts. RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}' diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/promptpwd new file mode 100644 index 00000000..8a1b9094 --- /dev/null +++ b/modules/prompt/functions/promptpwd @@ -0,0 +1,14 @@ +# prompt setup function common to many prompts +# moved to external function to reduce code redundancy + +local current_pwd="${PWD/#$HOME/~}" +local ret_directory + +if [[ "$current_pwd" == (#m)[/~] ]]; then + ret_directory="$MATCH" + unset MATCH +else + ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}" +fi + +print "$ret_directory" From 8655cd543b517f66e31f1c37e20f5304d7f0fed7 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 13 Apr 2017 01:16:44 -0700 Subject: [PATCH 032/213] Ensure extendedglob is set in promptpwd --- modules/prompt/functions/promptpwd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/promptpwd index 8a1b9094..b8fcc0cb 100644 --- a/modules/prompt/functions/promptpwd +++ b/modules/prompt/functions/promptpwd @@ -1,6 +1,8 @@ # prompt setup function common to many prompts # moved to external function to reduce code redundancy +setopt localoptions extendedglob + local current_pwd="${PWD/#$HOME/~}" local ret_directory From 9a70a1675cc4e5e95da046d46095b5bc42ae393a Mon Sep 17 00:00:00 2001 From: Joel Kuzmarski Date: Tue, 9 Aug 2016 13:34:56 -0500 Subject: [PATCH 033/213] Remove manb from completion filename --- modules/osx/functions/{_manb_mand_manp => _mand_manp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/osx/functions/{_manb_mand_manp => _mand_manp} (100%) diff --git a/modules/osx/functions/_manb_mand_manp b/modules/osx/functions/_mand_manp similarity index 100% rename from modules/osx/functions/_manb_mand_manp rename to modules/osx/functions/_mand_manp From 95036c908c414569c59bc9b8a97108fa922ea656 Mon Sep 17 00:00:00 2001 From: Solitude Date: Thu, 13 Apr 2017 01:54:52 -0700 Subject: [PATCH 034/213] Update fasd README with basic installation information --- modules/fasd/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/fasd/README.md b/modules/fasd/README.md index 7d22626c..8d3cca14 100644 --- a/modules/fasd/README.md +++ b/modules/fasd/README.md @@ -12,6 +12,12 @@ module. The Prezto Fasd configuration differs from the default. The default aliases have been disabled. +Installation +------------ + +Since fasd is not an external module it needs to be installed. +`brew install fasd` + Aliases ------- From fb6f3f7ee96788fe19bf0cbf06ce59bcb1c28d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Vantomme?= Date: Sat, 14 May 2016 18:06:22 +0200 Subject: [PATCH 035/213] Feat (aliases): add aliases for git flow --- modules/git/README.md | 74 +++++++++++++++++++++++++++++++++++++++++++ modules/git/alias.zsh | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) diff --git a/modules/git/README.md b/modules/git/README.md index 37194126..81693f23 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -97,6 +97,80 @@ Aliases are enabled by default. You can disable them with: - `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. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 48455147..06e47b16 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -81,6 +81,69 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then 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' From 1c0f95c08ebcc22231bb849cc6566243a0ad39e9 Mon Sep 17 00:00:00 2001 From: Eduard Zintz Date: Thu, 13 Apr 2017 11:25:45 +0200 Subject: [PATCH 036/213] Allow syntax highlighting pattern styles (#1192) --- modules/syntax-highlighting/init.zsh | 8 ++++++++ runcoms/zpreztorc | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/modules/syntax-highlighting/init.zsh b/modules/syntax-highlighting/init.zsh index 25cd96b6..52cc0c36 100644 --- a/modules/syntax-highlighting/init.zsh +++ b/modules/syntax-highlighting/init.zsh @@ -26,3 +26,11 @@ 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/runcoms/zpreztorc b/runcoms/zpreztorc index cc884548..8b2af267 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -140,6 +140,10 @@ zstyle ':prezto:module:prompt' theme 'sorin' # '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 From 5c0e68f75fe9d45ef352b29976265780d11763b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20L=C3=B6fgren?= Date: Thu, 13 Apr 2017 11:47:51 +0200 Subject: [PATCH 037/213] completion: Cap max-errors at 7 to avoid hanging (#953) 7 is pretty arbitrarily chosen, but seems like a reasonable tradeoff, at least the completion no longer shows symptoms of exponential time-growth when trying to complete something completely wrong. This fixes #946. --- modules/completion/init.zsh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 023a90e7..620a9b38 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -66,8 +66,9 @@ 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. -zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))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))' From 2e20eb8571dde5bd3209441a69ec1ef589633738 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 13 Apr 2017 02:53:07 -0700 Subject: [PATCH 038/213] Add note about working around preexisting runcoms Closes #955 --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 05a40cdf..c7bf4809 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,12 @@ version is 4.3.17. done ``` + Note: If you already have any of the given config files, ln will error. In + simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to + the bottom of your `.zshrc` to load prezto but keep your config intact. For + more complicated setups, it is recommended that you back up your original + configs and replace them with the provided prezto runcoms. + 4. Set Zsh as your default shell: `chsh -s /bin/zsh` From 7011031a871918aece5670deee32e53671ea66a8 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 13 Apr 2017 03:02:07 -0700 Subject: [PATCH 039/213] Don't use a deprecated argument as a python example Thanks to @jeffwidman for pointing this out Closes #1141 --- modules/python/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/python/README.md b/modules/python/README.md index d9497d6f..4047d0ff 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -56,10 +56,10 @@ is used. Replace *Developer* with your projects directory. The variable `$VIRTUALENVWRAPPER_VIRTUALENV_ARGS` tells virtualenvwrapper what arguments to pass to `virtualenv`. For example, set the value to -*--no-site-packages* to ensure that all new environments are isolated from the +*--system-site-packages* to ensure that all new environments have access to the system site-packages directory. - export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' + export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages' Aliases ------- From 7c64584629df83046b5489087d4b86f4e0850947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20VANTOMME?= Date: Tue, 16 Feb 2016 10:47:57 +0100 Subject: [PATCH 040/213] Add bundle clean alias --- modules/ruby/init.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ruby/init.zsh b/modules/ruby/init.zsh index fd707d00..3f666c3e 100644 --- a/modules/ruby/init.zsh +++ b/modules/ruby/init.zsh @@ -53,6 +53,7 @@ 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' From bb168c588193c7f520405972500af8e69dd464b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20VANTOMME?= Date: Wed, 2 Mar 2016 09:28:47 +0100 Subject: [PATCH 041/213] Doc (ruby): add doc on bundle clean alias --- modules/ruby/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ruby/README.md b/modules/ruby/README.md index 1c955f5e..372d00f1 100644 --- a/modules/ruby/README.md +++ b/modules/ruby/README.md @@ -63,6 +63,7 @@ Aliases ### 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: From 8a4333103dc990400a5d800a49f48418d6a53449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20VANTOMME?= Date: Thu, 13 Apr 2017 12:14:23 +0200 Subject: [PATCH 042/213] Feat (docker): add docker aliases (#1147) Thanks to @malikoth and @saoula for their input. --- modules/docker/README.md | 190 +++++++++++++++++++++++++++++++++++++++ modules/docker/alias.zsh | 177 ++++++++++++++++++++++++++++++++++++ modules/docker/init.zsh | 57 ++++++++++++ 3 files changed, 424 insertions(+) create mode 100644 modules/docker/README.md create mode 100644 modules/docker/alias.zsh create mode 100644 modules/docker/init.zsh diff --git a/modules/docker/README.md b/modules/docker/README.md new file mode 100644 index 00000000..335f77ad --- /dev/null +++ b/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/modules/docker/alias.zsh b/modules/docker/alias.zsh new file mode 100644 index 00000000..cdd9f7c8 --- /dev/null +++ b/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/modules/docker/init.zsh b/modules/docker/init.zsh new file mode 100644 index 00000000..8ad6bfdd --- /dev/null +++ b/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" From d035e4cf1efe1d66d73c5eab54016bcf507eb4c9 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 13 Apr 2017 03:27:59 -0700 Subject: [PATCH 043/213] Fix indentation in README --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c7bf4809..fee70a49 100644 --- a/README.md +++ b/README.md @@ -29,11 +29,11 @@ version is 4.3.17. done ``` - Note: If you already have any of the given config files, ln will error. In - simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to - the bottom of your `.zshrc` to load prezto but keep your config intact. For - more complicated setups, it is recommended that you back up your original - configs and replace them with the provided prezto runcoms. + Note: If you already have any of the given config files, ln will error. In + simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to + the bottom of your `.zshrc` to load prezto but keep your config intact. For + more complicated setups, it is recommended that you back up your original + configs and replace them with the provided prezto runcoms. 4. Set Zsh as your default shell: From e606b09c9ee9c798a721d7e52fc10bf15514efca Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 13 Apr 2017 04:05:16 -0700 Subject: [PATCH 044/213] Update is-callable to also check builtins Fixes #1037 --- modules/helper/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/helper/init.zsh b/modules/helper/init.zsh index 9d792186..328bed4f 100644 --- a/modules/helper/init.zsh +++ b/modules/helper/init.zsh @@ -12,7 +12,7 @@ function is-autoloadable { # Checks if a name is a command, function, or alias. function is-callable { - (( $+commands[$1] )) || (( $+functions[$1] )) || (( $+aliases[$1] )) + (( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] )) } # Checks a boolean variable for "true". From 19d11ab1d057544d67a0c12172cbf28291bcc62d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 01:14:09 -0700 Subject: [PATCH 045/213] Add code style to CONTRIBUTING.md Closes #1296 --- CONTRIBUTING.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eec4c165..79d23f15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,6 +23,17 @@ improve its performance, do not hesitate to fork and send pull requests. - Open a [pull request][4] that relates to but one subject with a clear title and description in grammatically correct, complete sentences. +#### Code Style + + - Indent using 2 spaces. No tabs. + - Put `; do` and `; then` on the same line as the `while`, `for` or `if`. + - Local variables should be used whenever possible. + - Use `snake_case` for variable and function naming. + - Local variables should be lower cased. + - Global variables should be upper cased. + - Use `$(command)` instead of backticks. + - Avoid `eval` if possible. + #### Modules - A *README.md* must be present. From a8ce3da782903528d3bbd94b7525464c74109992 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 01:36:15 -0700 Subject: [PATCH 046/213] Add note to CONTRIBUTING.md about zstyle --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79d23f15..5079e641 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,6 +33,7 @@ improve its performance, do not hesitate to fork and send pull requests. - Global variables should be upper cased. - Use `$(command)` instead of backticks. - Avoid `eval` if possible. + - Prefer `zstyle` over environment variables for configuration. #### Modules From a622652f7327b2d97ba09344404f0a9052f60692 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 01:45:46 -0700 Subject: [PATCH 047/213] Add initial issue and pull request templates --- .github/ISSUE_TEMPLATE.md | 26 ++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 11 +++++++++++ 2 files changed, 37 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..5a65a918 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,26 @@ +Please check if a similar issue already exists or has been closed before before +opening your issue. + +### Description + +[Description of the bug or feature] + +### Expected behavior + +[What you expected to happen] + +### Actual behavior + +[What actually happened] + +### Steps to Reproduce + +1. [First Step] +2. [Second Step] +3. [and so on...] + +### Versions + + - Prezto commit: + - ZSH version: + - OS information: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..10326d62 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,11 @@ +Please be sure to check out our [contributing +guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) +before submitting your pull request. + +Fixes # + +## Proposed Changes + + - + - + - From 40853f23c2658f63105e3d8c72e510f95ef98fbe Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 01:47:58 -0700 Subject: [PATCH 048/213] Remove additional newlines in issue and pull request templates --- .github/ISSUE_TEMPLATE.md | 3 +-- .github/PULL_REQUEST_TEMPLATE.md | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 5a65a918..444379c1 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,4 @@ -Please check if a similar issue already exists or has been closed before before -opening your issue. +Please check if a similar issue already exists or has been closed before before opening your issue. ### Description diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 10326d62..2b2f70bf 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,4 @@ -Please be sure to check out our [contributing -guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) -before submitting your pull request. +Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) before submitting your pull request. Fixes # From 38f0d2f34e84ec3d02c589573a8e097d1807e762 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 14:06:05 -0700 Subject: [PATCH 049/213] Rework diff function This removes --unified from the default options to make it possible to pass -y without worrying about conflicting output formats. diffu has also been added as an alias to make it easier to get output as a unified diff. Fixes #1231 --- modules/utility/functions/diff | 8 +++----- modules/utility/init.zsh | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/utility/functions/diff b/modules/utility/functions/diff index d5dd360b..51806e81 100644 --- a/modules/utility/functions/diff +++ b/modules/utility/functions/diff @@ -8,14 +8,12 @@ function diff { if zstyle -t ':prezto:module:utility:diff' color; then if (( $+commands[colordiff] )); then - command colordiff --unified "$@" - elif (( $+commands[git] )); then - git --no-pager diff --color=auto --no-ext-diff --no-index "$@" + command colordiff "$@" else - command diff --unified "$@" + command diff "$@" fi else - command diff --unified "$@" + command diff "$@" fi } diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 961d917d..34ff578d 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -49,6 +49,7 @@ alias sftp='noglob sftp' alias _='sudo' alias b='${(z)BROWSER}' alias cp="${aliases[cp]:-cp} -i" +alias diffu="diff --unified" alias e='${(z)VISUAL:-${(z)EDITOR}}' alias ln="${aliases[ln]:-ln} -i" alias mkdir="${aliases[mkdir]:-mkdir} -p" From 600b4cc9e6246724ac6c8965296b638a78962ad3 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 15 Apr 2017 14:16:15 -0700 Subject: [PATCH 050/213] Add missing alias to utility README --- modules/utility/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/utility/README.md b/modules/utility/README.md index 16b4317c..2d276d6e 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -66,6 +66,7 @@ Aliases - `_` executes a command as another user (`sudo`). - `b` opens the default web browser. - `cp` copies files and directories interactively. + - `diffu` shorthand for `diff --unified` - `e` opens the default editor. - `ln` links files and directories interactively. - `mkdir` creates directories, including intermediary directories. From c38c2dd90910e808bbad02dfff269a790e5111f9 Mon Sep 17 00:00:00 2001 From: Patrick Bos Date: Sat, 15 Apr 2017 16:44:05 -0700 Subject: [PATCH 051/213] Move python-info call in paradox from preexec to precmd --- modules/prompt/functions/prompt_paradox_setup | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index c1a808d7..c5a87515 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -8,6 +8,7 @@ # Isaac Wolkerstorfer # Jeff Sandberg # Sorin Ionescu +# Patrick Bos # # Screenshots: # http://i.imgur.com/0XIWX.png @@ -90,15 +91,17 @@ function prompt_paradox_precmd { 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" - if (( $+functions[python-info] )); then - python-info - fi } function prompt_paradox_setup { From 7242b4ed49f83d0ad905a1a72d405d895ad56215 Mon Sep 17 00:00:00 2001 From: Khai Do Date: Mon, 17 Apr 2017 22:04:28 -0700 Subject: [PATCH 052/213] archive: add support for *.jar files (#1302) --- modules/archive/README.md | 2 +- modules/archive/functions/_lsarchive | 2 +- modules/archive/functions/_unarchive | 2 +- modules/archive/functions/lsarchive | 2 +- modules/archive/functions/unarchive | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/archive/README.md b/modules/archive/README.md index a1d49011..fca34cf1 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -25,7 +25,7 @@ installed: - *.xz* requires `unxz`. - *.lzma* requires `unlzma`. - *.Z* requires `uncompress`. - - *.zip* requires `unzip`. + - *.zip*, *.jar* requires `unzip`. - *.rar* requires `unrar` or `rar`. - *.7z* requires `7za`. - *.deb* requires `ar`, `tar`. diff --git a/modules/archive/functions/_lsarchive b/modules/archive/functions/_lsarchive index 00f83e05..f2cee881 100644 --- a/modules/archive/functions/_lsarchive +++ b/modules/archive/functions/_lsarchive @@ -10,4 +10,4 @@ _arguments \ '(-v --verbose)'{-v,--remove}'[verbose archive listing]' \ - "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z)(-.)'" && return 0 + "*::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/modules/archive/functions/_unarchive b/modules/archive/functions/_unarchive index aceb27b6..90e32f1a 100644 --- a/modules/archive/functions/_unarchive +++ b/modules/archive/functions/_unarchive @@ -10,4 +10,4 @@ _arguments \ '(-r --remove)'{-r,--remove}'[remove archive]' \ - "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0 + "*::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/modules/archive/functions/lsarchive b/modules/archive/functions/lsarchive index 7ac61450..6b1b321a 100644 --- a/modules/archive/functions/lsarchive +++ b/modules/archive/functions/lsarchive @@ -40,7 +40,7 @@ while (( $# > 0 )); do && tar --lzma -t${verbose:+v}f "$1" \ || lzcat "$1" | tar x${verbose:+v}f - ;; (*.tar) tar t${verbose:+v}f "$1" ;; - (*.zip) unzip -l${verbose:+v} "$1" ;; + (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; (*.rar) unrar &> /dev/null \ && unrar ${${verbose:+v}:-l} "$1" \ || rar ${${verbose:+v}:-l} "$1" ;; diff --git a/modules/archive/functions/unarchive b/modules/archive/functions/unarchive index 72dfbd1f..fac77ff6 100644 --- a/modules/archive/functions/unarchive +++ b/modules/archive/functions/unarchive @@ -54,7 +54,7 @@ while (( $# > 0 )); do (*.xz) unxz "$1" ;; (*.lzma) unlzma "$1" ;; (*.Z) uncompress "$1" ;; - (*.zip) unzip "$1" -d $extract_dir ;; + (*.zip|*.jar) unzip "$1" -d $extract_dir ;; (*.rar) unrar &> /dev/null \ && unrar x -ad "$1" \ || rar x -ad "$1" ;; From fb37539f439fc5e382d223c3f9b2abb2b4267cb3 Mon Sep 17 00:00:00 2001 From: Matt Hamilton Date: Mon, 5 Oct 2015 18:47:41 -0400 Subject: [PATCH 053/213] archive: add archive function --- modules/archive/README.md | 12 ++++-- modules/archive/functions/archive | 67 +++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 modules/archive/functions/archive diff --git a/modules/archive/README.md b/modules/archive/README.md index fca34cf1..28a2c3b1 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -1,11 +1,12 @@ Archive ======= -Provides functions to list and extract archives. +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. @@ -15,8 +16,8 @@ Supported Formats The following archive formats are supported when the required utilities are installed: - - *.tar.gz*, *.tgz* require `tar`. - - *.tar.bz2*, *.tbz* require `tar`. + - *.tar.gz*, *.tgz* require `tar` (optionally `pigz`). + - *.tar.bz2*, *.tbz* require `tar` (optionally `pbzip2`). - *.tar.xz*, *.txz* require `tar` with *xz* support. - *.tar.zma*, *.tlz* require `tar` with *lzma* support. - *.tar* requires `tar`. @@ -30,11 +31,16 @@ installed: - *.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. + 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://github.com/sorin-ionescu/prezto/issues diff --git a/modules/archive/functions/archive b/modules/archive/functions/archive new file mode 100644 index 00000000..ab0d56da --- /dev/null +++ b/modules/archive/functions/archive @@ -0,0 +1,67 @@ +#!/usr/bin/env zsh +# +# Creates archive file +# +# Authors: +# Matt Hamilton +# + +local archive_name dir_to_archive _gzip_bin _bzip2_bin + +if (( $# != 2 )); then + cat >&2 <&2 + return 1 +fi + +# here, we check for dropin/multi-threaded replacements +# this should eventually be moved to modules/archive/init.zsh +# as a global alias +if (( $+commands[pigz] )); then + _gzip_bin='pigz' +else + _gzip_bin='gzip' +fi + +if (( $+commands[pbzip2] )); then + _bzip2_bin='pbzip2' +else + _bzip2_bin='bzip2' +fi + +case "${archive_name}" in + (*.tar.gz|*.tgz) tar -cvf "${archive_name}" --use-compress-program="${_gzip_bin}" "${dir_to_archive}" ;; + (*.tar.bz2|*.tbz|*.tbz2) tar -cvf "${archive_name}" --use-compress-program="${_bzip2_bin}" "${dir_to_archive}" ;; + (*.tar.xz|*.txz) tar -cvJf "${archive_name}" "${dir_to_archive}" ;; + (*.tar.lzma|*.tlz) tar -cvf "${archive_name}" --lzma "${dir_to_archive}" ;; + (*.tar) tar -cvf "${archive_name}" "${dir_to_archive}" ;; + (*.zip|*.jar) zip -r "${archive_name}" "${dir_to_archive}" ;; + (*.rar) rar a "${archive_name}" "${dir_to_archive}" ;; + (*.7z) 7za a "${archive_name}" "${dir_to_archive}" ;; + (*.gz) print "\n.gz is only useful for single files, and does not capture permissions. Use .tar.gz" ;; + (*.bz2) print "\n.bzip2 is only useful for single files, and does not capture permissions. Use .tar.bz2" ;; + (*.xz) print "\n.xz is only useful for single files, and does not capture permissions. Use .tar.xz" ;; + (*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;; + (*) print "\nunknown archive type for archive: ${archive_name}" ;; +esac From cf7d3cffbdc201595c0c650798fab9f9e44b4d51 Mon Sep 17 00:00:00 2001 From: delphinus Date: Tue, 18 Apr 2017 17:57:35 +0900 Subject: [PATCH 054/213] Add perl-info function & plenv subcommand aliases (#1303) * Add perl-info function * Add alias for plenv subcommands * Load perlbrew if needed * Load plenv if needed * Use PERLBREW_ROOT as priority to detect Perlbrew --- modules/perl/README.md | 49 ++++++++++++++++++++++++-- modules/perl/functions/perl-info | 30 ++++++++++++++++ modules/perl/init.zsh | 60 +++++++++++++++++++++++++++----- 3 files changed, 128 insertions(+), 11 deletions(-) create mode 100644 modules/perl/functions/perl-info diff --git a/modules/perl/README.md b/modules/perl/README.md index 90af1ebe..cc5a9d32 100644 --- a/modules/perl/README.md +++ b/modules/perl/README.md @@ -30,6 +30,14 @@ 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 ------- @@ -51,13 +59,50 @@ Aliases - `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 currach Perl version in a prompt, define the +following style in the `prompt_name_setup` function. + + # %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][3].* +*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/sorin-ionescu/prezto/issues +[3]: https://github.com/tokuhirom/plenv +[4]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/perl/functions/perl-info b/modules/perl/functions/perl-info new file mode 100644 index 00000000..2c396ea5 --- /dev/null +++ b/modules/perl/functions/perl-info @@ -0,0 +1,30 @@ +# +# Exposes information about the Perl environment via the $perl_info associative +# array. +# +# Authors: +# JINNOUCHI Yasushi +# + +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/modules/perl/init.zsh b/modules/perl/init.zsh index a8d56031..d22a5f98 100644 --- a/modules/perl/init.zsh +++ b/modules/perl/init.zsh @@ -10,6 +10,29 @@ 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 # @@ -41,12 +64,31 @@ alias pld='perldoc' alias ple='perl -wlne' # Perlbrew -alias plb='perlbrew' -alias plba='perlbrew available' -alias plbi='perlbrew install' -alias plbl='perlbrew list' -alias plbo='perlbrew off' -alias plbO='perlbrew switch-off' -alias plbs='perlbrew switch' -alias plbu='perlbrew use' -alias plbx='perlbrew uninstall' +if (( $+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 From 81b41d2367542abc742d113dc4e43f8245d11c41 Mon Sep 17 00:00:00 2001 From: Guillaume Subiron Date: Fri, 18 Mar 2016 08:29:57 +0100 Subject: [PATCH 055/213] Add utility alias for pydf --- modules/utility/README.md | 2 +- modules/utility/init.zsh | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index 2d276d6e..c949a66d 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -105,7 +105,7 @@ Aliases ### Resource Usage - - `df` displays free disk space using human readable units. + - `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 (aliased to `htop`, if installed). - `topc` displays information about processes sorted by CPU usage (`htop` not diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 34ff578d..33ec1479 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -142,7 +142,12 @@ elif (( $+commands[wget] )); then fi # Resource Usage -alias df='df -kh' +if (( $+commands[pydf] )); then + alias df=pydf +else + alias df='df -kh' +fi + alias du='du -kh' if (( $+commands[htop] )); then From f15557159a0c7b8af3cb904f42644fadff3dc6a1 Mon Sep 17 00:00:00 2001 From: Sudarshan Wadkar Date: Fri, 14 Apr 2017 19:51:02 -0400 Subject: [PATCH 056/213] New `alias gfa=git fetch --all` for git module Also includes an updated README.md ! --- modules/git/README.md | 1 + modules/git/alias.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/modules/git/README.md b/modules/git/README.md index 81693f23..6e89d87e 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -93,6 +93,7 @@ Aliases are enabled by default. You can disable them with: ### 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. - `gfm` fetches from and merges with another repository or local branch. - `gfr` fetches from and rebases on another repository or local branch. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 06e47b16..79f27b21 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -77,6 +77,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then # Fetch (f) alias gf='git fetch' + alias gfa='git fetch --all' alias gfc='git clone' alias gfm='git pull' alias gfr='git pull --rebase' From 876f42658124379d3b2a8756f9169fc47839f8be Mon Sep 17 00:00:00 2001 From: Mathieu Chataigner Date: Tue, 8 Mar 2016 17:14:47 +0100 Subject: [PATCH 057/213] Update ssh module for multi session hosts create ssh_agent_env with current user id in file name to avoid collisions with other users create ssh_agent_sock with current user id in file name to avoid collisions with other users --- modules/ssh/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index f632328d..8caac92c 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -14,10 +14,10 @@ fi _ssh_dir="$HOME/.ssh" # Set the path to the environment file if not set by another module. -_ssh_agent_env="${_ssh_agent_env:-${TMPDIR:-/tmp}/ssh-agent.env}" +_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" +_ssh_agent_sock="${TMPDIR:-/tmp}/ssh-agent.sock.$UID" # Start ssh-agent if not started. if [[ ! -S "$SSH_AUTH_SOCK" ]]; then From 4f87376b507c712c0d401b43f1819604cb40833e Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 11 Feb 2017 16:39:48 -0600 Subject: [PATCH 058/213] Add support for 'pip', 'pip2', 'pip3' completion Since `pip completion --zsh` might be slow, we cache it beforehand. The implementation is along the lines of 'npm' completion in 'node' module. --- modules/python/init.zsh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 458253b2..8b63251a 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -46,6 +46,20 @@ if (( $? && $+commands[virtualenvwrapper.sh] )); then source "$commands[virtualenvwrapper.sh]" fi +# Load PIP completion. +if (( $+commands[pip] )); then + cache_file="${0:h}/cache.zsh" + + if [[ "$commands[pip]" -nt "$cache_file" || ! -s "$cache_file" ]]; then + # pip is slow; cache its output. And also support 'pip2', 'pip3' variants + pip completion --zsh | sed -e "s|compctl -K [-_[:alnum:]]* pip|& pip2 pip3|" >! "$cache_file" 2> /dev/null + fi + + source "$cache_file" + + unset cache_file +fi + # # Aliases # From 850ad42c96d22425e96c0d5a5eb3c641b7b53510 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Wed, 26 Apr 2017 12:58:54 -0500 Subject: [PATCH 059/213] rsync: Update reference to Bombich's rsync page Seems like Bombich's rsync page moved with the previous link doing 404. Adjusted to fix this. --- modules/rsync/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/rsync/README.md b/modules/rsync/README.md index 951e3c6a..a8c32e4d 100644 --- a/modules/rsync/README.md +++ b/modules/rsync/README.md @@ -23,5 +23,5 @@ Authors - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: http://rsync.samba.org -[2]: http://help.bombich.com/kb/overview/credits#opensource +[2]: https://bombich.com/kb/ccc4/credits#rsync [3]: https://github.com/sorin-ionescu/prezto/issues From 7c509a264fcca690d3da8e9589dc346db7f76ec0 Mon Sep 17 00:00:00 2001 From: Kyle Rich Date: Wed, 26 Apr 2017 10:07:34 -0600 Subject: [PATCH 060/213] Add zstyle option to show pwd in long format --- modules/prompt/functions/promptpwd | 2 ++ runcoms/zpreztorc | 3 +++ 2 files changed, 5 insertions(+) diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/promptpwd index b8fcc0cb..af30e7cb 100644 --- a/modules/prompt/functions/promptpwd +++ b/modules/prompt/functions/promptpwd @@ -9,6 +9,8 @@ local ret_directory if [[ "$current_pwd" == (#m)[/~] ]]; then ret_directory="$MATCH" unset MATCH +elif zstyle -t ':prezto:module:prompt' long-pwd; then + ret_directory=${current_pwd} else ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}" fi diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 8b2af267..3741a1ce 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -97,6 +97,9 @@ zstyle ':prezto:module:editor' key-bindings 'emacs' # Auto set to 'off' on dumb terminals. zstyle ':prezto:module:prompt' theme 'sorin' +# Display pwd in long format for themes that use promptpwd function +# zstyle ':prezto:module:prompt' long-pwd 'yes' + # # Ruby # From 723b3812e170975901fd371d549bc4ae78a88298 Mon Sep 17 00:00:00 2001 From: Kyle Rich Date: Thu, 27 Apr 2017 11:25:42 -0600 Subject: [PATCH 061/213] Convert long-pwd to pwd-length --- modules/prompt/functions/promptpwd | 4 +++- runcoms/zpreztorc | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/promptpwd index af30e7cb..d7659f9c 100644 --- a/modules/prompt/functions/promptpwd +++ b/modules/prompt/functions/promptpwd @@ -9,7 +9,9 @@ local ret_directory if [[ "$current_pwd" == (#m)[/~] ]]; then ret_directory="$MATCH" unset MATCH -elif zstyle -t ':prezto:module:prompt' long-pwd; then +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}//\%/%%}" diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 3741a1ce..e88ae3c7 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -97,8 +97,8 @@ zstyle ':prezto:module:editor' key-bindings 'emacs' # Auto set to 'off' on dumb terminals. zstyle ':prezto:module:prompt' theme 'sorin' -# Display pwd in long format for themes that use promptpwd function -# zstyle ':prezto:module:prompt' long-pwd 'yes' +# Set how themes that use promptpwd function display the pwd, can be 'short', 'long', or 'full' +# zstyle ':prezto:module:prompt' pwd-length 'short' # # Ruby From 1050a0a290324f3b96256d3b1fefe4a84ab402d0 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 18 Apr 2017 03:14:22 -0700 Subject: [PATCH 062/213] Add better support for pyenv virtualenvs --- modules/python/init.zsh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 8b63251a..e40bca6b 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -35,15 +35,20 @@ if (( ! $+commands[python] && ! $+commands[pyenv] )); then fi # Load virtualenvwrapper into the shell session, unless requested not to -zstyle -t ':prezto:module:python' skip-virtualenvwrapper-init -if (( $? && $+commands[virtualenvwrapper.sh] )); then +if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then # Set the directory where virtual environments are stored. export WORKON_HOME="${WORKON_HOME:-$HOME/.virtualenvs}" # Disable the virtualenv prompt. VIRTUAL_ENV_DISABLE_PROMPT=1 - source "$commands[virtualenvwrapper.sh]" + if (( $+commands[pyenv-virtualenvwrapper] )); then + pyenv virtualenvwrapper + elif (( $+commands[pyenv-virtualenv-init] )); then + eval "$(pyenv virtualenv-init -)" + elif (( $+commands[virtualenvwrapper.sh] )); then + source "$commands[virtualenvwrapper.sh]" + fi fi # Load PIP completion. From 3d7a8c28704fbe9ec0fbe842cb80f45003364a13 Mon Sep 17 00:00:00 2001 From: Kyle Rich Date: Mon, 1 May 2017 10:41:17 -0600 Subject: [PATCH 063/213] Add some new git aliases, modify a few more. (#1301) * Add some new git aliases, modify a few more. * Add `gbV` command to show more verbose git branch info. * Add `gcam` to make it possible to execute `gca; gcm ''` more simply. * Add `gii` command to temporarily untrack (ignore) a file. * Add `giI` command to uningore a file. * Change alias of `gbl` to `gbv`. Personally, I think aliases that include a switch in the command should include the switch in the alias if possible. This makes them easier to remember. * Change alias of `gbL` to `gba`. I think the `-a` switch is more salient to what this alias does than the `-v`. Furthermore, with this PR there are already `gbv` and `gbV` aliases, so those are out. * Change implementation of `gCl` alias to use built-in capabilities of git, rather than sed. * Rename gbx and gbX to gbd and gbD respectively * Mostly revert alias changes * Add gbr and gbR aliases to gbm and gbM commands --- modules/git/README.md | 16 ++++++++++------ modules/git/alias.zsh | 26 ++++++++++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 6e89d87e..f4297431 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -41,15 +41,16 @@ Aliases are enabled by default. You can disable them with: - `gb` lists, creates, renames, and deletes branches. - `gbc` creates a new branch. - - `gbl` lists branches and their commits. - - `gbL` lists local and remote branches and their commits. + - `gbl` lists branches and their commits. (also `gbv`) + - `gbL` lists all local and remote branches and their commits. + - `gbm` renames a branch. + - `gbM` renames a branch even if the new branch name already exists. - `gbs` lists branches and their commits with ancestry graphs. - `gbS` lists local and remote branches and their commits with ancestry graphs. - - `gbx` deletes a branch. - - `gbX` deletes a branch irrespective of its merged status. - - `gbm` renames a branch. - - `gbM` renames a branch even if the new branch name already exists. + - `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 @@ -57,6 +58,7 @@ Aliases are enabled by default. You can disable them with: - `gc` records changes to the repository. - `gca` stages all modified and deleted files. - `gcm` records changes to the repository with the given message. + - `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 @@ -188,6 +190,8 @@ Aliases are enabled by default. You can disable them with: - `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). diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 79f27b21..946ad32c 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -32,20 +32,28 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then # Branch (b) alias gb='git branch' + alias gba='git branch --all --verbose' alias gbc='git checkout -b' - alias gbl='git branch -v' - alias gbL='git branch -av' - alias gbx='git branch -d' - alias gbX='git branch -D' - alias gbm='git branch -m' - alias gbM='git branch -M' + 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 -a' + 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 gcam='git commit --all --message' alias gco='git checkout' alias gcO='git checkout --patch' alias gcf='git commit --amend --reuse-message HEAD' @@ -58,7 +66,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then alias gcl='git-commit-lost' # Conflict (C) - alias gCl='git status | sed -n "s/^.*both [a-z]*ed: *//p"' + 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 --' @@ -159,6 +167,8 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then 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' From 46a1ffaf7e9a3cddc12f5b88eeee1d94e5f02a47 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 1 May 2017 09:43:12 -0700 Subject: [PATCH 064/213] Add gbr and gbR aliases to module readme --- modules/git/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index f4297431..f7af33ae 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -43,8 +43,9 @@ Aliases are enabled by default. You can disable them with: - `gbc` creates a new branch. - `gbl` lists branches and their commits. (also `gbv`) - `gbL` lists all local and remote branches and their commits. - - `gbm` renames a branch. - - `gbM` renames a branch even if the new branch name already exists. + - `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. From 2794f95d3eb7d5b65be56710d9d9e9ac9d642ff8 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 2 May 2017 10:08:01 -0700 Subject: [PATCH 065/213] Use the lazy-loaded version of virtualenvwrapper if available This shouldn't cause problems for anyone and should improve startup times for anyone using python with virtualenvwrapper because it will wait for the first command to load rather than right away. --- modules/python/init.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index e40bca6b..4f67a081 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -46,6 +46,8 @@ if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then pyenv virtualenvwrapper elif (( $+commands[pyenv-virtualenv-init] )); then eval "$(pyenv virtualenv-init -)" + elif (( $+commands[virtualenvwrapper_lazy.sh] )); then + source "$commands[virtualenvwrapper_lazy.sh]" elif (( $+commands[virtualenvwrapper.sh] )); then source "$commands[virtualenvwrapper.sh]" fi From 42d9b78907d256061fe641eed83accab41d4ac0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20H-T=20Gold=C3=A1raz?= Date: Tue, 2 May 2017 20:38:19 +0200 Subject: [PATCH 066/213] broken $path and $PATH if nodenv exists (#1315) This change fixes a bug where no command can be found (e.g. `ls`) due to the $path array being set to two elements, one of them with all the previous paths separated by spaces. This makes zsh break $PATH, instead of colons there are spaces, and nothing works. The idea is to have the array be set leveraging the word splitting that we usually are told to avoid by quoting. --- modules/node/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 46ab4411..a15bace4 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -16,7 +16,7 @@ elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then # Load manually installed nodenv into the shell session. elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then - path=("$HOME/.nodenv/bin $path") + path=("$HOME/.nodenv/bin" $path) eval "$(nodenv init - --no-rehash zsh)" # Load package manager installed nodenv into the shell session. From 871b15663cbb8d6b13efc9ba734c6ee2781c7e07 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 2 May 2017 01:36:23 -0700 Subject: [PATCH 067/213] Cache the completion for a quicker startup The original idea was by @samjonester in #1210. This version aims to avoid relying on the stat or date programs because they have different flags depending on the OS and if it uses BSD or GNU coreutils. --- modules/completion/init.zsh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 620a9b38..912c586b 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -14,9 +14,6 @@ fi # Add zsh-completions to $fpath. fpath=("${0:h}/external/src" $fpath) -# Load and initialize the completion system ignoring insecure directories. -autoload -Uz compinit && compinit -i - # # Options # @@ -27,9 +24,21 @@ setopt PATH_DIRS # Perform path search even on command names with slas 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 +compfiles=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20)) +if [[ $#compfiles > 0 ]]; then + compinit -i -C +else + compinit -i +fi + # # Styles # From d02c2951b39ceee3e37dc163661df054fb641d8d Mon Sep 17 00:00:00 2001 From: Matt Henkel Date: Tue, 2 May 2017 17:57:00 -0700 Subject: [PATCH 068/213] Add the ability to specify tmux session name --- modules/tmux/README.md | 4 ++++ modules/tmux/init.zsh | 2 +- runcoms/zpreztorc | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/tmux/README.md b/modules/tmux/README.md index 11c8a08a..28695fa4 100644 --- a/modules/tmux/README.md +++ b/modules/tmux/README.md @@ -23,6 +23,10 @@ following line to *zpreztorc*: 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: + + zstyle ':prezto:module:tmux' session 'YOUR DEFAULT 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 diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index 070abcaf..0c3a78e8 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -31,7 +31,7 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ # Create a 'prezto' session if no session has been defined in tmux.conf. if ! tmux has-session 2> /dev/null; then - tmux_session='prezto' + zstyle -s ':prezto:module:tmux' tmux_session 'session' || tmux_session='prezto' tmux \ new-session -d -s "$tmux_session" \; \ set-option -t "$tmux_session" destroy-unattached off &> /dev/null diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index e88ae3c7..2ed618d4 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -176,3 +176,6 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Integrate with iTerm2. # zstyle ':prezto:module:tmux:iterm' integrate 'yes' + +# Set the default session name: +# zstyle ':prezto:module:tmux' session 'YOUR DEFAULT SESSION NAME' From 6975b119b643eaf574c1c429fee15fab6947309d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 2 May 2017 18:02:28 -0700 Subject: [PATCH 069/213] Change the zstyle config name for #607 --- modules/tmux/init.zsh | 2 +- runcoms/zpreztorc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index 0c3a78e8..aadf6bfc 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -31,7 +31,7 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ # 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' tmux_session 'session' || tmux_session='prezto' + 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 diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 2ed618d4..2ac6c58c 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -178,4 +178,4 @@ zstyle ':prezto:module:prompt' theme 'sorin' # zstyle ':prezto:module:tmux:iterm' integrate 'yes' # Set the default session name: -# zstyle ':prezto:module:tmux' session 'YOUR DEFAULT SESSION NAME' +# zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' From 658fffb3a67a1f951d9c413802844694359caa7e Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 5 May 2017 09:58:19 -0700 Subject: [PATCH 070/213] Allow ssh module to run on OSX --- modules/ssh/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index 8caac92c..3ead593f 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -6,7 +6,7 @@ # # Return if requirements are not found. -if [[ "$OSTYPE" == darwin* ]] || (( ! $+commands[ssh-agent] )); then +if (( ! $+commands[ssh-agent] )); then return 1 fi From 08e39a587fa130f04077201d050e72b2130d637e Mon Sep 17 00:00:00 2001 From: Matthew Crenshaw Date: Tue, 30 May 2017 20:26:18 -0400 Subject: [PATCH 071/213] Python virtualenv auto workon cwd hook (#1300) * Command to activate virtualenvs on changing directory Enables automatic activation of a virtualenv when jumping into a directory This is done by looking in the current directory for a file or directory named `.venv`. If it's not found in the current directory its parents will also be examined. `.venv` can be either: 1. A file containing the name of a virtualenv found in $WORKON_HOME 2. A directory containing bin/activate (meaning that the directory is assumed to be a virtualenv.) If $WORKON_HOME is set it is assumed that virtualenvwrapper is installed and the `workon` command will be issued. --- modules/python/init.zsh | 48 +++++++++++++++++++++++++++++++++++++++++ runcoms/zpreztorc | 7 ++++++ 2 files changed, 55 insertions(+) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 4f67a081..47f7b5a1 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -34,6 +34,48 @@ 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 virtualenvwrapper into the shell session, unless requested not to if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then # Set the directory where virtual environments are stored. @@ -65,6 +107,12 @@ if (( $+commands[pip] )); then source "$cache_file" unset cache_file + + # Load auto workon cwd hook + if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then + # Auto workon when changing directory + add-zsh-hook chpwd _python-workon-cwd + fi fi # diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 2ac6c58c..690add7a 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -107,6 +107,13 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Auto switch the Ruby version on directory change. # zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' +# +# Python +# + +# Auto switch the Python virtualenv on directory change. +# zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' + # # Screen # From 7ae7a0266c04f2645bdf9917378645fc505e7461 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 30 May 2017 17:29:32 -0700 Subject: [PATCH 072/213] Update python docs to include info on virtualenv auto-switching --- modules/python/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/python/README.md b/modules/python/README.md index 4047d0ff..a554bdf1 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -61,6 +61,15 @@ system site-packages directory. 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: + + zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' + Aliases ------- From 14670f40f0191a8dc219b98eae48d9e8113f16c9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Milano Oliveira Date: Thu, 8 Jun 2017 14:18:37 -0300 Subject: [PATCH 073/213] replace the deprecated abs call in the pacu alias. --- modules/pacman/init.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/pacman/init.zsh b/modules/pacman/init.zsh index 9d752a9b..a5cacf2c 100644 --- a/modules/pacman/init.zsh +++ b/modules/pacman/init.zsh @@ -70,9 +70,9 @@ alias pacman-list-orphans="${_pacman_sudo}${_pacman_frontend} --query --deps --u 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. -if (( $+commands[abs] )); then - alias pacu="${_pacman_sudo}${_pacman_frontend} --sync --refresh && sudo abs" +# 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 From 5bcc223e95abf7025f131b5aade44eb412ebd214 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 13 Jun 2017 10:51:23 +0200 Subject: [PATCH 074/213] zprofile: Use non-random static TMPDIR Closes #1319 --- runcoms/zprofile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/runcoms/zprofile b/runcoms/zprofile index 052d5f98..e5efb205 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -65,9 +65,14 @@ fi # # Temporary Files # +# +if [[ -z "$TMPDIR" ]]; then + export TMPDIR="/tmp/zsh-$UID" +fi if [[ ! -d "$TMPDIR" ]]; then - export TMPDIR="$(mktemp -d)" + mkdir "$TMPDIR" + chmod 700 "$TMPDIR" fi TMPPREFIX="${TMPDIR%/}/zsh" From 2f20a80f7255bffcf878de70192f6df126c6069f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 13 Jun 2017 10:55:49 +0200 Subject: [PATCH 075/213] sorin theme: Use a proper temp file for async data --- modules/prompt/functions/prompt_sorin_setup | 2 +- runcoms/zprofile | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index c4d12c34..fe1343db 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -87,7 +87,7 @@ function prompt_sorin_setup { unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent subst) _prompt_sorin_precmd_async_pid=0 - _prompt_sorin_precmd_async_data="${TMPPREFIX}-prompt_sorin_data" + _prompt_sorin_precmd_async_data=$(mktemp "${TMPDIR}/sorin-prompt-async-XXXXXXXXXX") # Load required functions. autoload -Uz add-zsh-hook diff --git a/runcoms/zprofile b/runcoms/zprofile index e5efb205..2fe10b57 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -74,5 +74,3 @@ if [[ ! -d "$TMPDIR" ]]; then mkdir "$TMPDIR" chmod 700 "$TMPDIR" fi - -TMPPREFIX="${TMPDIR%/}/zsh" From a0541ce7a5f3ee5b0d869f1cd2b5546558e3750d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 16 Jun 2017 10:37:51 -0700 Subject: [PATCH 076/213] Default sorin theme to /tmp when TMPDIR is not set Fixes #1331 --- modules/prompt/functions/prompt_sorin_setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index fe1343db..272e4f4e 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -87,7 +87,7 @@ function prompt_sorin_setup { unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent subst) _prompt_sorin_precmd_async_pid=0 - _prompt_sorin_precmd_async_data=$(mktemp "${TMPDIR}/sorin-prompt-async-XXXXXXXXXX") + _prompt_sorin_precmd_async_data=$(mktemp "${TMPDIR:-/tmp}/sorin-prompt-async-XXXXXXXXXX") # Load required functions. autoload -Uz add-zsh-hook From a75c63768c14f7315c87616d82b17690ae6e2630 Mon Sep 17 00:00:00 2001 From: Ihab Soliman Date: Mon, 19 Jun 2017 04:40:44 -0400 Subject: [PATCH 077/213] Add git aliases for signing commits (#1126) --- modules/git/README.md | 8 ++++++-- modules/git/alias.zsh | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index f7af33ae..fc4ce9e4 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -59,12 +59,16 @@ Aliases are enabled by default. You can disable them with: - `gc` records changes to the repository. - `gca` stages all modified and deleted files. - `gcm` records changes to the repository with the given message. + - `gcS` records changes to the repository. (Signed) + - `gcSa` stages all modified and deleted files. (Signed) + - `gcSm` records changes to the repository with the given message. (Signed) - `gco` checks out a branch or paths to work tree. - `gcam` stages all modified and deleted files, and records changes to the repository with the given message. - `gco` checks out a branch or paths to work tree. - `gcO` checks out hunks from the index or the tree interactively. - - `gcf` amends the tip of the current branch using the same log message as - *HEAD*. + - `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 diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 946ad32c..9a2a95b5 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -53,11 +53,16 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then 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' From d9a1380263bbeb27a9ed91b79e04e99b65760535 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 19 Jun 2017 14:18:14 -0700 Subject: [PATCH 078/213] Change print to printf in init.zsh error (#1335) When my zsh had issues, and I was debugging it, this line would end up being run but no output would be made to the screen. Changing it from print to printf caused the error to properly be displayed. --- init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.zsh b/init.zsh index 665e6c40..74d9edde 100644 --- a/init.zsh +++ b/init.zsh @@ -12,7 +12,7 @@ # Check for the minimum supported version. min_zsh_version='4.3.17' if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then - print "prezto: old shell detected, minimum required: $min_zsh_version" >&2 + printf "prezto: old shell detected, minimum required: %s\n" "$min_zsh_version" >&2 return 1 fi unset min_zsh_version From 1c041c04339eeb45556acef5e1ac43742b20bda1 Mon Sep 17 00:00:00 2001 From: Nargoth Date: Tue, 20 Jun 2017 00:52:54 +0200 Subject: [PATCH 079/213] fixed vivisual key binding (#1148) Fixes #1236 --- modules/editor/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index f1260021..be227cef 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -255,8 +255,8 @@ fi # Vi Key Bindings # -# Edit command in an external editor. -bindkey -M vicmd "v" edit-command-line +# 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 From ecc34e00511eee18501b39afd2998c416219849c Mon Sep 17 00:00:00 2001 From: Matthew Crenshaw Date: Wed, 21 Jun 2017 15:30:57 -0400 Subject: [PATCH 080/213] Move virtualenv auto-switch cwd hook optional loader out from inside unrelated if statement (#1338) --- modules/python/init.zsh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 47f7b5a1..859569d6 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -76,6 +76,12 @@ function _python-workon-cwd { fi } +# Load auto workon cwd hook +if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then + # Auto workon when changing directory + add-zsh-hook chpwd _python-workon-cwd +fi + # Load virtualenvwrapper into the shell session, unless requested not to if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then # Set the directory where virtual environments are stored. @@ -105,14 +111,7 @@ if (( $+commands[pip] )); then fi source "$cache_file" - unset cache_file - - # Load auto workon cwd hook - if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then - # Auto workon when changing directory - add-zsh-hook chpwd _python-workon-cwd - fi fi # From 7c172fc9a71d91c12bd14937875863c452d5c568 Mon Sep 17 00:00:00 2001 From: Diego Rabatone Oliveira Date: Wed, 21 Jun 2017 18:37:03 -0300 Subject: [PATCH 081/213] Fix #1337 by removing top alias to htop. (#1341) Fixes #1337 --- modules/utility/README.md | 8 +++----- modules/utility/init.zsh | 14 +++++--------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index c949a66d..57e3b07d 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -107,11 +107,9 @@ Aliases - `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 (aliased to `htop`, if installed). - - `topc` displays information about processes sorted by CPU usage (`htop` not - installed). - - `topm` displays information about processes sorted by RAM usage (`htop` not - installed). + - `top` displays information about processes. + - `topc` displays information about processes sorted by CPU usage. + - `topm` displays information about processes sorted by RAM usage. ### Miscellaneous diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 33ec1479..fb3de559 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -150,16 +150,12 @@ fi alias du='du -kh' -if (( $+commands[htop] )); then - alias top=htop +if [[ "$OSTYPE" == (darwin*|*bsd*) ]]; then + alias topc='top -o cpu' + alias topm='top -o vsize' else - 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 + alias topc='top -o %CPU' + alias topm='top -o %MEM' fi # Miscellaneous From f8f4953dcea8a43a21c381c0891e26842f3c3d47 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 21 Jun 2017 22:02:47 -0700 Subject: [PATCH 082/213] [completion] Bump external repository to version 0.25.0 8cdf60b Updated rkt commands and arguments f9d7d9d Implemented autocompletion for rkt pods and images (Fixes #465) 9feab39 Added completion for yarn a63a098 Update completion for mix, add completion for mix test, fix completion for mix help 6285e0e Add completions for bitcoin-cli 0ed2e86 Set proper description for gist -r df5a3a1 Try to follow the style guide d7a2972 Add gist completion for read flag b0cb2ad Added _rclone b7c11f4 drop ripgrep completion 907cba3 Update repository infos ccb53f4 Support newer versions of OpenSSL f02dc8f add licence information ceaff68 Add completion for ffind --- modules/completion/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/external b/modules/completion/external index 72af5d08..89dcaeb5 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit 72af5d08f1c07507d74103af039e98a2791fccb5 +Subproject commit 89dcaeb5624eeceabf41cfc00e79cce35cfd722b From d101b0a319e034fb0b171c3801fb18f9528e8849 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 21 Jun 2017 22:11:28 -0700 Subject: [PATCH 083/213] [autosuggestions] Bump external repository to version v0.4.0 14179d8 Bump version 281ed9b v0.4.0 changelog updates 83129dd Make asynchronous suggestions disabled by default a2f0ffb Enabling suggestions should not fetch a suggestion if buffer is empty 7d4a1d9 Add enable/disable/toggle widgets to disable suggestion functionality e1959d0 Put in a general fix for #219 - Handling input from `zle -U` c52c428 Fix issues with widgets wrapped by other plugins ea505b0 Add a spec for unlisted widgets fetching a new suggestion 502fb4a Make tmux_socket_name public so you can access easily from binding.pry ce36224 Use pry-byebug instead of pry for more functionality 39762ec Set up circle ci 468b740 Test should be passing block to RSpec wait_for c9a51e0 Handle dashes at the beginning of commands 48a21bf [cleanup] Remove an extra newline 4afbbba We only need to run the feature detection if starting async e3fa4e4 Don't do anything but re-bind widgets on each precmd 2cd99e6 Add a test for modifying widget list vars after sourcing plugin c70d685 Clean up widget list spec 255359d Use `+=` to be a bit more true to the spec language 4321fc0 We need to bind on every precmd to ensure we wrap other wrappers 75e8505 Gracefully handle being sourced multiple times a0fcd81 Destroy zpty on load if it already exists 39ca3da Use a different name for feature detection zpty dcce973 Remove support for long-deprecated options 0c940e7 Don't bind any zle-* methods 23ef16c Do not show suggestions if the buffer is empty 9381445 Fix tests c4bfd8e Need to prevent zpty feature detection from HUPing existing zptys c959408 Only wait a max of 2 seconds for content to match after clearing screen 06fca77 Readme updates for v0.4.0 9feac57 Do not show any error output from async zpty server process ed8056c Lots of async changes 38eb7cd Update license date 64e7ec5 Rename internal term session method 98f926d Clean up TerminalSession constructor a bit 51e8755 TerminalSession methods return self to support chaining 5151adf Make TerminalSession#clear block until the screen is cleared 2c465a9 Rename async pty name config var e3eb286 Lots of little async cleanups c342587 Wait for the terminal.clear to go through before continuing 89dd69d Add pry gem for debugging support 40bb2e7 little cleanup 16666da Handle versions of zsh where zpty does not set REPLY to fd of opened pty f33b605 Move async initialization into `start` function to keep in one place 78ba071 Add feature detection 3f57198 Only bind widgets once, on initial sourcing 2dbd261 Allow configuring of zsh binary to run integration tests against 6c5cd42 Go back to tracking last pid because `kill %1` didn't seem to be working 54e1eee Optimize case where manually typing in a suggestion 21d9eda Wrap suggestion fetch command in parens to actually run in background 50e6832 Escape the prefix passed into the match_prev_cmd strategy 0305908 Revert `fc` usage in calculating suggestion 8e06a54 Add test for string with "\n" in it b3208b0 Pass the chosen strategy into the suggestion server pty ab27425 Quote the suggestion to support sh_split_word option e5a5b0c Output only newlines in the pty 0337005 Disable word splitting while reading to preserve whitespace b530b0c Use `zpty -r` with pattern matching to fetch suggestion 5c891af Reset zsh options inside pty (from zsh-async) e33eb57 Send only the prefix to the suggestion server fba20b0 Use %1 instead of tracking pid 0308ed7 Rename worker to server e72c2d8 add a bunch of comments ab8f295 First pass at async functionality debbffc Add rspec test around accepting suggestions 4850119 Add separate test task for RSpec c22ab0e Implement suggestion integration tests in RSpec + tmux 07a6768 Add TerminalSession helper for managing a tmux session e6591d5 Add RSpec for high-level integration testing af671fb Add ruby settings to editor config --- modules/autosuggestions/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external index 9cfaf5d3..2cb6eb6e 160000 --- a/modules/autosuggestions/external +++ b/modules/autosuggestions/external @@ -1 +1 @@ -Subproject commit 9cfaf5d3424ceb5fedd2c7e3253f823faae74383 +Subproject commit 2cb6eb6e29852e64a146b0284275ecdc0661b082 From 7fe28574a8aa87526ed8e3d51f5e0f34a47e7529 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 21 Jun 2017 22:20:13 -0700 Subject: [PATCH 084/213] [syntax-highlighting] Bump external repository to get bug fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ad522a0 driver: Fix printing error message to file when cannot resolve highlighters directory location 73cb832 'main': Highlight mismatched 'if'/'fi'. be083d7 driver: Improve «unhandled ZLE widget 'foo'» error message. 237f89a 'main': Don't consider «$*» a glob. 835fec7 workaround for PAT_STATIC bug in zsh 9523d6d tests: zsh 5.4-to-be compatibility: Set a new "I am shooting myself in the foot" option. aac4a44 driver: Fix duplicated slash in error message 4f49c4a docs: Update zplug install instruction 5efd062 tests: Add a regression test for issue #392 (aliases beginning with a '+' are lost). 67be621 tests: Move some code in preparation for next commit. No functional change. 74949c2 driver: Don't undefine aliases that begin with a '+', to workaround an upstream bug. 8d5afe4 driver: Be immune to 'alias' having been redefined. 76ea9e1 'main': Highlight possible history expansions in double-quoted strings. 50fbb5f docs: Update Homebrew link. 2dce602 driver: Be immune to weird aliases in the calling scope. 347cf0e 'main': Add regression test for previous commit. 5625e30 'main': Fix bug: no start_pos=$end_pos in comment short path fed37a9 'main': Fix a bug concerning command word with embedded colon-space sequences. 626c034 Add FreeBSD port 3d74aa4 Add Fedora package 5398949 changelog: Update for changes pulled out of 0.5.x. --- modules/syntax-highlighting/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/syntax-highlighting/external b/modules/syntax-highlighting/external index 15d45875..ad522a09 160000 --- a/modules/syntax-highlighting/external +++ b/modules/syntax-highlighting/external @@ -1 +1 @@ -Subproject commit 15d4587514a3beaa13972093e335bf685b6726a9 +Subproject commit ad522a091429ba180c930f84b2a023b40de4dbcc From 961326f8e9f1afa6c2e2cd29404d9ca60b5c5dfb Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Fri, 23 Jun 2017 03:10:17 -0700 Subject: [PATCH 085/213] [editor] Set Delete key in vicmd mode to delete character Delete key deletes character in vimcmd cmd mode instead of weird default functionality. The default functionality in vicmd mode is the Delete key will change the case of many of the characters on the screen, which is not the default thing that vim does. This could be confusing and frustrating to users, so set it to delete a character instead. --- modules/editor/init.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index be227cef..6a14f621 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -322,6 +322,9 @@ for keymap in 'emacs' 'viins'; do bindkey -M "$keymap" "$key_info[Control]X$key_info[Control]S" prepend-sudo 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 From e52523204b69f18746a2d22f433c831919973bfa Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 26 Jun 2017 14:40:31 -0700 Subject: [PATCH 086/213] Remove redundant style rules from CONTRIBUTING.md --- CONTRIBUTING.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5079e641..3b8ae4fb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,15 +25,13 @@ improve its performance, do not hesitate to fork and send pull requests. #### Code Style - - Indent using 2 spaces. No tabs. - - Put `; do` and `; then` on the same line as the `while`, `for` or `if`. +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. - - Use `snake_case` for variable and function naming. - - Local variables should be lower cased. - - Global variables should be upper cased. - - Use `$(command)` instead of backticks. - - Avoid `eval` if possible. - Prefer `zstyle` over environment variables for configuration. + - Use the `my_func()` syntax for defining functions. + - The 80 character hard limit can be waved for readability. #### Modules @@ -44,10 +42,11 @@ improve its performance, do not hesitate to fork and send pull requests. #### Themes - A screenshots section must be present in the file header. - - The pull request description must have [embedded screenshots][5]. + - 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]: http://daringfireball.net/projects/markdown/syntax#img +[5]: https://google.github.io/styleguide/shell.xml +[6]: http://daringfireball.net/projects/markdown/syntax#img From a4ff6acd563b53e2afd997fd77fef7014619cebf Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 26 Jun 2017 14:52:59 -0700 Subject: [PATCH 087/213] [runcoms/zprofile+zshenv] Ensure TMPDIR is always set In some cases TMPDIR may not be set, in which case it could cause issues for zsh modules. This change was prompted by issue #1331. Also when creating a missing TMPDIR, use mkdir --mode=700 instead of creating the directory and then chmoding it afterward. --- runcoms/zprofile | 10 +++++----- runcoms/zshenv | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runcoms/zprofile b/runcoms/zprofile index 2fe10b57..04742d1f 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -66,11 +66,11 @@ fi # Temporary Files # # -if [[ -z "$TMPDIR" ]]; then - export TMPDIR="/tmp/zsh-$UID" +# Set TMPDIR if the variable is not set/empty or the directory doesn't exist +if [[ -z "${TMPDIR}" ]]; then + export TMPDIR="/tmp/zsh-${UID}" fi -if [[ ! -d "$TMPDIR" ]]; then - mkdir "$TMPDIR" - chmod 700 "$TMPDIR" +if [[ ! -d "${TMPDIR}" ]]; then + mkdir -m 700 "${TMPDIR}" fi diff --git a/runcoms/zshenv b/runcoms/zshenv index 2d972031..eb16f5d6 100644 --- a/runcoms/zshenv +++ b/runcoms/zshenv @@ -6,6 +6,6 @@ # # Ensure that a non-login, non-interactive shell has a defined environment. -if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then +if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN || -z "${TMPDIR}" ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then source "${ZDOTDIR:-$HOME}/.zprofile" fi From eb47b45a0d4a36545a2ed6cfb991d776cdcb0684 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 26 Jun 2017 15:24:46 -0700 Subject: [PATCH 088/213] [CONTRUBITING] Add section on using a secondary devel directory Add a section on how to use a separate directory than your normal ZDOTDIR for development with its own zprezto. --- CONTRIBUTING.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3b8ae4fb..488d08b9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,6 +33,28 @@ there are a number of additional things to keep in mind. - Use the `my_func()` syntax for defining functions. - The 80 character hard limit can be waved 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. From 87868441ebd1411ab3f257861c35b115830d71b3 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Thu, 29 Jun 2017 23:26:53 -0700 Subject: [PATCH 089/213] [zprezto-update] Add convenience function to update zprezto (#1344) * [zprezto-update] Add convenience function to update zprezto This function checks if there is any update to zprezto, and if so will pull in the changes. It will not attempt a pull unless it is fastforwardable. It also makes sure the user is on the master branch before attempting. * [zprezto-update] Improve resilience of the function Better error checking of status of the git repository and better error producing. Fit columns into mostly 80 width and add a missing printf argument. Use ( ) around the function so changing directory does not affect the outer scope. * [README] Add instructions on using zprezto-update function --- README.md | 11 +++++++++-- init.zsh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fee70a49..f90888c6 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,16 @@ window or tab. Updating -------- -Pull the latest changes and update submodules. +Run `zprezto-update` to automatically check if there is an update to zprezto. +If there are no file conflicts, zprezto its submodules will be automatically +be updated. If there are conflicts you will instructed to go +into the `$ZPREZTODIR` directory and resolve them yourself. - git pull && git submodule update --init --recursive +To pull the latest changes and update submodules manually: + + cd $ZPREZTODIR + git pull + git submodule update --init --recursive Usage ----- diff --git a/init.zsh b/init.zsh index 74d9edde..b2a79c83 100644 --- a/init.zsh +++ b/init.zsh @@ -17,6 +17,52 @@ if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then 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" + [[ "${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 @) + local REMOTE=$(git rev-parse "$UPSTREAM") + local BASE=$(git merge-base @ "$UPSTREAM") + if [[ $LOCAL == $REMOTE ]]; then + printf "There are no updates.\n" + return 0 + elif [[ $LOCAL == $BASE ]]; then + printf "There is an update availible. 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 # From 5ef10f765896d5849c4c98bb495f0c82c5533bda Mon Sep 17 00:00:00 2001 From: Philipp A Date: Mon, 19 Jun 2017 20:54:54 +0200 Subject: [PATCH 090/213] Fixed ssh-add not using SSH_ASKPASS --- modules/ssh/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index 3ead593f..6c073321 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -40,9 +40,9 @@ fi if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities' if (( ${#_ssh_identities} > 0 )); then - ssh-add "$_ssh_dir/${^_ssh_identities[@]}" 2> /dev/null + ssh-add "$_ssh_dir/${^_ssh_identities[@]}" < /dev/null 2> /dev/null else - ssh-add 2> /dev/null + ssh-add < /dev/null 2> /dev/null fi fi From dbe9a5ea28ebe3e09a48b703017f8d25d674bc19 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 3 Jul 2017 17:00:14 -0700 Subject: [PATCH 091/213] [editor] set forward/backward word for Ctrl+Right Ctrl+Left Set forward/backward word to be mapped the same as they are in vim, instead of having weird functionality when unset. --- modules/editor/init.zsh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 6a14f621..20760bd3 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -274,6 +274,14 @@ fi # Emacs and Vi Key Bindings # +# Ctrl + Left and Ctrl + Right bindings to forward/backward word +for keymap in viins vicmd; do + 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 + for keymap in 'emacs' 'viins'; do bindkey -M "$keymap" "$key_info[Home]" beginning-of-line bindkey -M "$keymap" "$key_info[End]" end-of-line From a876890afd14304fee06dd87d7ba70412e4780d2 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Sat, 1 Jul 2017 23:55:54 -0700 Subject: [PATCH 092/213] [utility] scp/rsync glob local paths but don't glob remote paths Adds a function which wraps rsync and scp so that remote paths are not globbed but local paths are globbed. This is because the programs have their own globbing for remote paths. The wrap function globs args starting in / and ./ and doesn't glob paths with : in it as these are interpreted as remote paths by these programs unless the path starts with / or ./ Fixes issue #1125 --- modules/utility/init.zsh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index fb3de559..8e319bbb 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -41,8 +41,26 @@ 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 rsync='noglob rsync_scp_wrap rsync' +alias scp='noglob rsync_scp_wrap scp' +# This function wraps rsync and scp so that remote paths are not globbed +# but local paths are globbed. This is because the programs have their own +# globbing for remote paths. The wrap function globs args starting in / and ./ +# and doesn't glob paths with : in it as these are interpreted as remote paths +# by these programs unless the path starts with / or ./ +function rsync_scp_wrap { + local args=( ) + local cmd="$1" + shift + local i + for i in "$@"; do case $i in + ( ./* ) args+=( ${~i} ) ;; # glob + ( /* ) args+=( ${~i} ) ;; # glob + ( *:* ) args+=( ${i} ) ;; # noglob + ( * ) args+=( ${~i} ) ;; # glob + esac; done + command $cmd "${(@)args}" +} alias sftp='noglob sftp' # Define general aliases. From 09b333eb4177c47929ba8ab309f489818af640d7 Mon Sep 17 00:00:00 2001 From: Luiz Gonzaga dos Santos Filho Date: Sun, 2 Jul 2017 03:40:22 +0200 Subject: [PATCH 093/213] Fix README example on tmux's default session name --- modules/tmux/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tmux/README.md b/modules/tmux/README.md index 28695fa4..87a83f48 100644 --- a/modules/tmux/README.md +++ b/modules/tmux/README.md @@ -25,7 +25,7 @@ server is not started. You can change the default session name with: - zstyle ':prezto:module:tmux' session 'YOUR DEFAULT SESSION NAME' + zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT 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 From c6124d4d37bd1571662d395a4d70f91610bc3139 Mon Sep 17 00:00:00 2001 From: "Brian K. Christensen" Date: Wed, 5 Jul 2017 15:42:35 +0200 Subject: [PATCH 094/213] Updater: fix bug regarding source init in new updater logic --- init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.zsh b/init.zsh index b2a79c83..eb160913 100644 --- a/init.zsh +++ b/init.zsh @@ -23,7 +23,7 @@ unset min_zsh_version function zprezto-update () ( function cannot-fast-forward { local STATUS="$1" - [[ "${STATUS}" ]] && printf "%s\n" "${STATUS}" + [[ -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" From 5cd3380d9ddaa45f912339e9cac00dc7457202cb Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 5 Jul 2017 11:56:41 -0700 Subject: [PATCH 095/213] [prompt/sorin] Fix branch code exploit vulnerability Escape all $ except the first $. Escape all backtick `'s. This prevents variable names or shell expansions placed as branch names from remotely exploiting code. Fixes issue #1267 for sorin prompt. --- modules/prompt/functions/prompt_sorin_setup | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 272e4f4e..3a2a9f71 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -54,7 +54,23 @@ function prompt_sorin_precmd_async { # Get Git repository information. if (( $+functions[git-info] )); then git-info - typeset -p git_info >! "$_prompt_sorin_precmd_async_data" + ### TODO XXX + # This section exists to patch over vulnerabilities when sourcing the + # file in $_prompt_sorin_precmd_async_data. Without it if a branch is named + # $foo it will expand if we have a $foo variable, and a branch named + # $(IFS=_;cmd=rm_-rf_~;$cmd) could delete the users home directory. + # This is a stopgap to prevent code execution and fix the vulnerability, + # but it eventually needs to be removed in favor of zsh_async and not using + # a file to store the prompt data in. + ### + local tmp_prompt_var=$(typeset -p git_info) + # Replace all $ with $\ to escape + tmp_prompt_var=${tmp_prompt_var//\$/\\$} + # Unescape the first \$ as it's our $( ) + tmp_prompt_var=${tmp_prompt_var:s/\\$/\$} + # Escape all backticks ` to \` + tmp_prompt_var=${tmp_prompt_var//\`/\\\`} + printf "%s\n" "$tmp_prompt_var" >! "$_prompt_sorin_precmd_async_data" fi # Signal completion to parent process. From 75a60bc7bff3281ce3aae8fb4b25b8b461ccc0f7 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 5 Jul 2017 23:05:31 -0700 Subject: [PATCH 096/213] [editor] Add bindkey-all function to show all bound keys (#1358) * [editor] Add bindkey-all function to show all bound keys Function which allows you to see all the bound keys for all of the different keymaps. It does accept arguments and passes them through to bindkey -m "$keymap" so you could set a shortcut to all keymaps as well if you wished. Makes it much easier to see and grep what keys are bound to each of the different keymaps. When no arguments are given it will print keymap headers to stderr, if given arguments it will not print anything extra to the screen. * [editor] Update README to include information about bindkey-all funct. --- modules/editor/README.md | 15 +++++++++++++++ modules/editor/init.zsh | 10 +++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/editor/README.md b/modules/editor/README.md index 44bc829c..78a7ea38 100644 --- a/modules/editor/README.md +++ b/modules/editor/README.md @@ -58,6 +58,21 @@ To indicate when the editor is completing, add the following to your 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 fear each keymap. + Authors ------- diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 20760bd3..93a7735a 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -78,7 +78,15 @@ 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 { From a70bce3ea6ab68d8a89459525133ca4e4d7f878e Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 6 Jul 2017 16:00:58 -0700 Subject: [PATCH 097/213] Ensure we use the same function definition syntax everywhere --- CONTRIBUTING.md | 2 +- init.zsh | 74 +++++++++++++++++++++++++------------------------ 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 488d08b9..377e6f0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,7 +30,7 @@ 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. - - Use the `my_func()` syntax for defining functions. + - Use the function keyword to define functions. - The 80 character hard limit can be waved for readability. #### Using an Alternative zprezto Directory diff --git a/init.zsh b/init.zsh index eb160913..be565663 100644 --- a/init.zsh +++ b/init.zsh @@ -20,49 +20,51 @@ 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 @) - local REMOTE=$(git rev-parse "$UPSTREAM") - local BASE=$(git merge-base @ "$UPSTREAM") - if [[ $LOCAL == $REMOTE ]]; then - printf "There are no updates.\n" - return 0 - elif [[ $LOCAL == $BASE ]]; then - printf "There is an update availible. Trying to pull.\n\n" - if git pull --ff-only; then - printf "Syncing submodules\n" - git submodule update --recursive - return $? +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 @) + local REMOTE=$(git rev-parse "$UPSTREAM") + local BASE=$(git merge-base @ "$UPSTREAM") + if [[ $LOCAL == $REMOTE ]]; then + printf "There are no updates.\n" + return 0 + elif [[ $LOCAL == $BASE ]]; then + printf "There is an update availible. 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 + cannot-fast-forward "Upstream and local have diverged." 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." + 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 - 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 # From 7d5beeab51627de9b68fb13b0359438da32dd6ac Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 6 Jul 2017 16:01:26 -0700 Subject: [PATCH 098/213] Add comments into each of the function files to make them easier to find --- modules/archive/functions/archive | 4 ++++ modules/archive/functions/lsarchive | 4 ++++ modules/archive/functions/unarchive | 4 ++++ modules/dpkg/functions/deb-clone | 4 ++++ modules/dpkg/functions/deb-history | 4 ++++ modules/dpkg/functions/deb-kbuild | 4 ++++ modules/git/functions/git-branch-current | 4 ++++ modules/git/functions/git-commit-lost | 4 ++++ modules/git/functions/git-dir | 4 ++++ modules/git/functions/git-hub-browse | 4 ++++ modules/git/functions/git-hub-shorten-url | 4 ++++ modules/git/functions/git-root | 4 ++++ modules/git/functions/git-stash-clear-interactive | 4 ++++ modules/git/functions/git-stash-dropped | 4 ++++ modules/git/functions/git-stash-recover | 4 ++++ modules/git/functions/git-submodule-move | 4 ++++ modules/git/functions/git-submodule-remove | 4 ++++ modules/node/functions/node-doc | 4 ++++ modules/node/functions/node-info | 4 ++++ modules/osx/functions/osx-ls-download-history | 4 ++++ modules/osx/functions/osx-rm-dir-metadata | 4 ++++ modules/osx/functions/osx-rm-download-history | 4 ++++ modules/osx/functions/pfd | 4 ++++ modules/osx/functions/pfs | 4 ++++ modules/osx/functions/ql | 4 ++++ modules/osx/functions/tab | 4 ++++ modules/pacman/functions/pacman-list-disowned | 4 ++++ modules/pacman/functions/pacman-list-explicit | 4 ++++ modules/perl/functions/perl-info | 4 ++++ modules/prompt/functions/promptpwd | 4 ++++ modules/python/functions/python-info | 4 ++++ modules/ruby/functions/ruby-app-root | 4 ++++ modules/ruby/functions/ruby-info | 4 ++++ modules/utility/functions/prep | 4 ++++ modules/utility/functions/psub | 4 ++++ modules/wakeonlan/functions/wake | 4 ++++ 36 files changed, 144 insertions(+) diff --git a/modules/archive/functions/archive b/modules/archive/functions/archive index ab0d56da..0e3bb616 100644 --- a/modules/archive/functions/archive +++ b/modules/archive/functions/archive @@ -6,6 +6,8 @@ # Matt Hamilton # +# function archive { + local archive_name dir_to_archive _gzip_bin _bzip2_bin if (( $# != 2 )); then @@ -65,3 +67,5 @@ case "${archive_name}" in (*.lzma) print "\n.lzma is only useful for single files, and does not capture permissions. Use .tar.lzma" ;; (*) print "\nunknown archive type for archive: ${archive_name}" ;; esac + +# } diff --git a/modules/archive/functions/lsarchive b/modules/archive/functions/lsarchive index 6b1b321a..d2bd8341 100644 --- a/modules/archive/functions/lsarchive +++ b/modules/archive/functions/lsarchive @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function lsarchive { + local verbose if (( $# == 0 )); then @@ -53,3 +55,5 @@ while (( $# > 0 )); do shift done + +# } diff --git a/modules/archive/functions/unarchive b/modules/archive/functions/unarchive index fac77ff6..c9ed1488 100644 --- a/modules/archive/functions/unarchive +++ b/modules/archive/functions/unarchive @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function unarchive { + local remove_archive local success local file_name @@ -78,3 +80,5 @@ while (( $# > 0 )); do (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1" shift done + +# } diff --git a/modules/dpkg/functions/deb-clone b/modules/dpkg/functions/deb-clone index a284c96f..a767bd32 100644 --- a/modules/dpkg/functions/deb-clone +++ b/modules/dpkg/functions/deb-clone @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function deb-clone { + local clone_script="${0}.sh" local package_list=$( perl \ @@ -23,3 +25,5 @@ rm "$clone_script" print '#!/bin/sh\n' > "$clone_script" print "aptitude install ${package_list}\n" >> "$clone_script" chmod +x "$clone_script" + +# } diff --git a/modules/dpkg/functions/deb-history b/modules/dpkg/functions/deb-history index 37376790..a1369dea 100644 --- a/modules/dpkg/functions/deb-history +++ b/modules/dpkg/functions/deb-history @@ -7,6 +7,8 @@ # Sorin Ionescu # +# function deb-history { + case "$1" in (install) zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*) @@ -34,3 +36,5 @@ Commands: EOF ;; esac + +# } diff --git a/modules/dpkg/functions/deb-kbuild b/modules/dpkg/functions/deb-kbuild index bdf7801e..a84a9b6d 100644 --- a/modules/dpkg/functions/deb-kbuild +++ b/modules/dpkg/functions/deb-kbuild @@ -6,9 +6,13 @@ # 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/modules/git/functions/git-branch-current b/modules/git/functions/git-branch-current index 944ffe25..cadb6f63 100644 --- a/modules/git/functions/git-branch-current +++ b/modules/git/functions/git-branch-current @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-branch-current { + if ! git rev-parse 2> /dev/null; then print "$0: not a repository: $PWD" >&2 return 1 @@ -18,3 +20,5 @@ if [[ -n "$ref" ]]; then else return 1 fi + +# } diff --git a/modules/git/functions/git-commit-lost b/modules/git/functions/git-commit-lost index 75ab5716..62789ac9 100644 --- a/modules/git/functions/git-commit-lost +++ b/modules/git/functions/git-commit-lost @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-commit-lost { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -18,3 +20,5 @@ git fsck 2> /dev/null \ --no-walk \ --stdin \ --pretty=format:${_git_log_oneline_format} + +# } diff --git a/modules/git/functions/git-dir b/modules/git/functions/git-dir index 7e16ca81..fdb515c5 100644 --- a/modules/git/functions/git-dir +++ b/modules/git/functions/git-dir @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-dir { + local git_dir="${$(git rev-parse --git-dir):A}" if [[ -n "$git_dir" ]]; then @@ -14,3 +16,5 @@ else print "$0: not a repository: $PWD" >&2 return 1 fi + +# } diff --git a/modules/git/functions/git-hub-browse b/modules/git/functions/git-hub-browse index 549a544a..4e7c314e 100644 --- a/modules/git/functions/git-hub-browse +++ b/modules/git/functions/git-hub-browse @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-hub-browse { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -56,3 +58,5 @@ else print "$0: not a Git repository or remote not set" >&2 return 1 fi + +# } diff --git a/modules/git/functions/git-hub-shorten-url b/modules/git/functions/git-hub-shorten-url index d37b04eb..78f2d7ba 100644 --- a/modules/git/functions/git-hub-shorten-url +++ b/modules/git/functions/git-hub-shorten-url @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-hub-shorten-url { + local url="$1" if [[ "$url" == '-' ]]; then @@ -20,3 +22,5 @@ if (( $+commands[curl] )); then else print "$0: command not found: curl" >&2 fi + +# } diff --git a/modules/git/functions/git-root b/modules/git/functions/git-root index 712e4fe6..f7494572 100644 --- a/modules/git/functions/git-root +++ b/modules/git/functions/git-root @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-root { + local root="$(git rev-parse --show-toplevel 2> /dev/null)" if [[ -n "$root" ]]; then @@ -14,3 +16,5 @@ else print "$0: not a repository work tree: $PWD" >&2 return 1 fi + +# } diff --git a/modules/git/functions/git-stash-clear-interactive b/modules/git/functions/git-stash-clear-interactive index e45165c4..71468aa0 100644 --- a/modules/git/functions/git-stash-clear-interactive +++ b/modules/git/functions/git-stash-clear-interactive @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-stash-clear-interactive { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -20,3 +22,5 @@ if [[ -f "$(git-dir)/refs/stash" ]]; then fi fi fi + +# } diff --git a/modules/git/functions/git-stash-dropped b/modules/git/functions/git-stash-dropped index 51580703..2a0b7a94 100644 --- a/modules/git/functions/git-stash-dropped +++ b/modules/git/functions/git-stash-dropped @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-stash-dropped { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -20,3 +22,5 @@ git fsck --unreachable 2> /dev/null \ --merges \ --no-walk \ --stdin + +# } diff --git a/modules/git/functions/git-stash-recover b/modules/git/functions/git-stash-recover index 6add26fd..5cc949a7 100644 --- a/modules/git/functions/git-stash-recover +++ b/modules/git/functions/git-stash-recover @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-stash-recover { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -16,3 +18,5 @@ for commit in "$@"; do git update-ref \ -m "$(git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit" done + +# } diff --git a/modules/git/functions/git-submodule-move b/modules/git/functions/git-submodule-move index 34c5e44a..ec6048e6 100644 --- a/modules/git/functions/git-submodule-move +++ b/modules/git/functions/git-submodule-move @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-submodule-move { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -30,3 +32,5 @@ git-submodule-remove "$src" git submodule add "$url" "$dst" return 0 + +# } diff --git a/modules/git/functions/git-submodule-remove b/modules/git/functions/git-submodule-remove index 852b9cdb..2490e78c 100644 --- a/modules/git/functions/git-submodule-remove +++ b/modules/git/functions/git-submodule-remove @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function git-submodule-remove { + if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then print "$0: not a repository work tree: $PWD" >&2 return 1 @@ -25,3 +27,5 @@ rm -rf "${1}" rm -rf "$(git-dir)/modules/${1}" return 0 + +# } diff --git a/modules/node/functions/node-doc b/modules/node/functions/node-doc index 24f56414..b1a048bd 100644 --- a/modules/node/functions/node-doc +++ b/modules/node/functions/node-doc @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function node-doc { + if [[ -z "$BROWSER" ]]; then print "$0: no web browser defined" >&2 return 1 @@ -12,3 +14,5 @@ fi # TODO: Make the sections easier to use. "$BROWSER" "http://nodejs.org/docs/$(node --version | sed 's/-.*//')/api/all.html#${1}" + +# } diff --git a/modules/node/functions/node-info b/modules/node/functions/node-info index e4cd52d0..22ac31bd 100644 --- a/modules/node/functions/node-info +++ b/modules/node/functions/node-info @@ -6,6 +6,8 @@ # Zeh Rizzatti # +# function node-info { + local version local version_format local version_formatted @@ -24,3 +26,5 @@ if [[ "$version" != (none|) ]]; then zformat -f version_formatted "$version_format" "v:$version" node_info[version]="$version_formatted" fi + +# } diff --git a/modules/osx/functions/osx-ls-download-history b/modules/osx/functions/osx-ls-download-history index 5727c1b3..ba6a40c7 100644 --- a/modules/osx/functions/osx-ls-download-history +++ b/modules/osx/functions/osx-ls-download-history @@ -5,9 +5,13 @@ # 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/modules/osx/functions/osx-rm-dir-metadata b/modules/osx/functions/osx-rm-dir-metadata index 0a91cedb..f15f4ed6 100644 --- a/modules/osx/functions/osx-rm-dir-metadata +++ b/modules/osx/functions/osx-rm-dir-metadata @@ -5,7 +5,11 @@ # 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/modules/osx/functions/osx-rm-download-history b/modules/osx/functions/osx-rm-download-history index 38377098..c6a368ca 100644 --- a/modules/osx/functions/osx-rm-download-history +++ b/modules/osx/functions/osx-rm-download-history @@ -5,9 +5,13 @@ # 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/modules/osx/functions/pfd b/modules/osx/functions/pfd index a4d4b686..41537698 100644 --- a/modules/osx/functions/pfd +++ b/modules/osx/functions/pfd @@ -5,8 +5,12 @@ # Sorin Ionescu # +# function pfd { + osascript 2>/dev/null < # +# function pfs { + osascript 2>&1 <&1 < # +# function ql { + if (( $# > 0 )); then qlmanage -p "$@" &> /dev/null fi + +# } diff --git a/modules/osx/functions/tab b/modules/osx/functions/tab index e0f2dc24..114c92ee 100644 --- a/modules/osx/functions/tab +++ b/modules/osx/functions/tab @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function tab { + local command="cd \\\"$PWD\\\"" (( $# > 0 )) && command="${command}; $*" @@ -50,3 +52,5 @@ EOF end tell EOF } + +# } diff --git a/modules/pacman/functions/pacman-list-disowned b/modules/pacman/functions/pacman-list-disowned index a097c9db..9c8f56a0 100644 --- a/modules/pacman/functions/pacman-list-disowned +++ b/modules/pacman/functions/pacman-list-disowned @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function pacman-list-disowned { + local tmp="${TMPDIR:-/tmp}/pacman-disowned-$UID-$$" local db="$tmp/db" local fs="$tmp/fs" @@ -20,3 +22,5 @@ find /bin /etc /lib /sbin /usr \ \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" comm -23 "$fs" "$db" + +# } diff --git a/modules/pacman/functions/pacman-list-explicit b/modules/pacman/functions/pacman-list-explicit index 2967834f..7c9b08f3 100644 --- a/modules/pacman/functions/pacman-list-explicit +++ b/modules/pacman/functions/pacman-list-explicit @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function pacman-list-explicit { + pacman --query --explicit --info \ | awk ' BEGIN { @@ -18,3 +20,5 @@ pacman --query --explicit --info \ print $2 } ' + +# } diff --git a/modules/perl/functions/perl-info b/modules/perl/functions/perl-info index 2c396ea5..b42e23d7 100644 --- a/modules/perl/functions/perl-info +++ b/modules/perl/functions/perl-info @@ -6,6 +6,8 @@ # JINNOUCHI Yasushi # +# function perl-info { + local version local version_format local version_formatted @@ -28,3 +30,5 @@ if [[ -n "$version" ]]; then zformat -f version_formatted "$version_format" "v:$version" perl_info[version]="$version_formatted" fi + +# } diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/promptpwd index d7659f9c..bf6e227d 100644 --- a/modules/prompt/functions/promptpwd +++ b/modules/prompt/functions/promptpwd @@ -1,6 +1,8 @@ # prompt setup function common to many prompts # moved to external function to reduce code redundancy +# function promptpwd { + setopt localoptions extendedglob local current_pwd="${PWD/#$HOME/~}" @@ -18,3 +20,5 @@ else fi print "$ret_directory" + +# } diff --git a/modules/python/functions/python-info b/modules/python/functions/python-info index 6a8c7589..a616814c 100644 --- a/modules/python/functions/python-info +++ b/modules/python/functions/python-info @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function python-info { + local virtualenv_format local virtualenv_formatted @@ -19,3 +21,5 @@ if [[ -n "$VIRTUAL_ENV" ]]; then zformat -f virtualenv_formatted "$virtualenv_format" "v:${VIRTUAL_ENV:t}" python_info[virtualenv]="$virtualenv_formatted" fi + +# } diff --git a/modules/ruby/functions/ruby-app-root b/modules/ruby/functions/ruby-app-root index ea35be60..ef28c5b0 100644 --- a/modules/ruby/functions/ruby-app-root +++ b/modules/ruby/functions/ruby-app-root @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function ruby-app-root { + local root_dir="$PWD" while [[ "$root_dir" != '/' ]]; do @@ -16,3 +18,5 @@ while [[ "$root_dir" != '/' ]]; do done return 1 + +# } diff --git a/modules/ruby/functions/ruby-info b/modules/ruby/functions/ruby-info index ebf0f7fe..d53435b4 100644 --- a/modules/ruby/functions/ruby-info +++ b/modules/ruby/functions/ruby-info @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function ruby-info { + local version local version_format local version_formatted @@ -28,3 +30,5 @@ if [[ -n "$version" ]]; then zformat -f version_formatted "$version_format" "v:$version" ruby_info[version]="$version_formatted" fi + +# } diff --git a/modules/utility/functions/prep b/modules/utility/functions/prep index 23028ec4..d6448aeb 100644 --- a/modules/utility/functions/prep +++ b/modules/utility/functions/prep @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function prep { + local usage pattern modifiers invert usage="$( @@ -50,3 +52,5 @@ pattern="$1" shift perl -n -l -e "print if ${invert:+not} m/${pattern//\//\\/}/${modifiers}" "$@" + +# } diff --git a/modules/utility/functions/psub b/modules/utility/functions/psub index ffc01088..af191fde 100644 --- a/modules/utility/functions/psub +++ b/modules/utility/functions/psub @@ -5,6 +5,8 @@ # Sorin Ionescu # +# function psub { + local usage pattern replacement modifiers usage="$( @@ -51,3 +53,5 @@ replacement="$2" repeat 2 shift perl -i'.orig' -n -l -e "s/${pattern//\//\\/}/${replacement//\//\\/}/${modifiers}; print" "$@" + +# } diff --git a/modules/wakeonlan/functions/wake b/modules/wakeonlan/functions/wake index 5259c95b..6f7d6c5a 100644 --- a/modules/wakeonlan/functions/wake +++ b/modules/wakeonlan/functions/wake @@ -6,6 +6,8 @@ # Sorin Ionescu # +# function wake { + local config_file="$HOME/.wakeonlan/$1" if [[ ! -s "$config_file" ]]; then print "$0: invalid device file: $1" >&2 @@ -18,3 +20,5 @@ if (( ! $+commands[wakeonlan] )); then fi wakeonlan -f "$config_file" + +# } From e6136a517b6b795ed71e7538f3a0d9ae8dfcce9a Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 7 Jul 2017 00:02:13 -0500 Subject: [PATCH 099/213] [git] Fix 'git-hub-shorten-url' helper Changes: - Use git.io over 'https' - Add extra check to conform to *.github.com URLs - Use built-in _urls function for completion - Update readme with GitHub blog URL --- modules/git/README.md | 3 ++- modules/git/functions/_git-hub-shorten-url | 2 +- modules/git/functions/git-hub-shorten-url | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index fc4ce9e4..d8491d62 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -317,7 +317,7 @@ Functions - `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. + - `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. @@ -422,3 +422,4 @@ Authors [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 \ No newline at end of file diff --git a/modules/git/functions/_git-hub-shorten-url b/modules/git/functions/_git-hub-shorten-url index dcc7bb38..1d811cae 100644 --- a/modules/git/functions/_git-hub-shorten-url +++ b/modules/git/functions/_git-hub-shorten-url @@ -8,4 +8,4 @@ # Sorin Ionescu # -_arguments '1:url:' && return 0 +_arguments '::GitHub URL:_urls' && return 0 diff --git a/modules/git/functions/git-hub-shorten-url b/modules/git/functions/git-hub-shorten-url index 78f2d7ba..f36662f4 100644 --- a/modules/git/functions/git-hub-shorten-url +++ b/modules/git/functions/git-hub-shorten-url @@ -13,12 +13,12 @@ if [[ "$url" == '-' ]]; then read url <&0 fi -if [[ -z "$url" ]]; then - print "usage: $0 [ url | - ]" >&2 +if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then + print "usage: $0 [ url | - ] ; must be a github.com URL" >&2 fi if (( $+commands[curl] )); then - curl -s -i 'http://git.io' -F "url=$url" | sed -n 's/^Location: //p' + curl -s -i 'https://git.io' -F "url=$url" | sed -n 's/^Location: //p' else print "$0: command not found: curl" >&2 fi From db48a22c741cc553da0e0699955ffe3952efd43f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Chr=C3=A9tien?= Date: Thu, 11 Feb 2016 21:35:09 +0900 Subject: [PATCH 100/213] gpg: fix enable-ssh-support detection That line may be commented in the config file. --- modules/gpg/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh index b969c7a5..f21c8cfb 100644 --- a/modules/gpg/init.zsh +++ b/modules/gpg/init.zsh @@ -29,7 +29,7 @@ fi export GPG_TTY="$(tty)" # Integrate with the SSH module. -if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then +if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then # Load required functions. autoload -Uz add-zsh-hook From e3520b737f8f6b908e3fc62934ede1a75a16e32b Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Fri, 7 Jul 2017 12:50:53 -0700 Subject: [PATCH 101/213] [editor] Fix undefined results with unbound keys in viins/vicmd Bind the remaining unbound keys in the main mode so that they don't result in undefined functionality when pressed. (Often this will change the casing of one/most/all of the characters you've typed or even stranger things). In emacs mode this usually just inserts a tilde, but this will fix that as well so nothing happens when unbound keys are pressed. Since there isn't any binding which does "nothing", create a noop ZLE widget and bind them to that. The user or other modules are still able to override these bindings either by overriding the main keymap or setting a keymap in one of the other modes which will take precedence over the main fallback. --- modules/editor/init.zsh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 93a7735a..a80cbbc9 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -282,6 +282,32 @@ fi # 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 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]}" +) +for keymap in $unbound_keys; do + bindkey -M main "${keymap}" _prezto-zle-noop +done # Ctrl + Left and Ctrl + Right bindings to forward/backward word for keymap in viins vicmd; do for key in "${(s: :)key_info[ControlLeft]}" From 3f9951902192be04b44ac96c533ffd155b88774b Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 7 Jul 2017 23:27:18 -0500 Subject: [PATCH 102/213] Prefer evaluation over test for arithmetic expression Usage of `(( ... ))` over `[[ ... ]]` is preferred for arithmetic expression since the former is less error prone. Also, unset local variable whenever possible. --- CONTRIBUTING.md | 1 + modules/completion/init.zsh | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 377e6f0f..7800b818 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,7 @@ 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 waved for readability. diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 912c586b..8b7634a8 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -32,12 +32,13 @@ unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. # cache time of 20 hours, so it should almost always regenerate the first time a # shell is opened each day. autoload -Uz compinit -compfiles=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20)) -if [[ $#compfiles > 0 ]]; then +_comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20)) +if (( $#_comp_files )); then compinit -i -C else compinit -i fi +unset _comp_files # # Styles From 899c176942e8217bb3b61dbea6551ff65031ef4e Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 10 Jul 2017 00:03:36 -0700 Subject: [PATCH 103/213] python: add ubuntu locations for virtualenvwrapper.sh --- modules/python/init.zsh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 859569d6..7ed3428f 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -98,6 +98,10 @@ if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then source "$commands[virtualenvwrapper_lazy.sh]" elif (( $+commands[virtualenvwrapper.sh] )); then source "$commands[virtualenvwrapper.sh]" + elif [[ -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ]]; then + source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh + elif [[ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]]; then + source /usr/share/virtualenvwrapper/virtualenvwrapper.sh fi fi From 7d109fb3fa9de41cbde2d860b2ca4595c3d31f8d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 10 Jul 2017 10:30:21 -0700 Subject: [PATCH 104/213] [editor] Ensure unbound_keys is defined as an array Somewhere around zsh 5.1, there was a change which turned typeset (and most likely local) into a keyword. In older versions of zsh, using `local x=()` will cause the () to be treated as a glob qualifier. Fixes #1373 --- modules/editor/init.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index a80cbbc9..4e373eea 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -289,7 +289,8 @@ fi # it will fall back and do nothing. function _prezto-zle-noop { ; } zle -N _prezto-zle-noop -local unbound_keys=( +local -a unbound_keys +unbound_keys=( "${key_info[F1]}" "${key_info[F2]}" "${key_info[F3]}" From 6e1f4ddd19dca2a02a79658fc8b9f8d230b591d0 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 8 Jul 2017 21:27:34 -0500 Subject: [PATCH 105/213] [completion] Minor cleanup of zstyle completion 'tag-order' De-duplicate common zstyle 'tag-order' for ssh, scp and rsync. --- modules/completion/init.zsh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 8b7634a8..ca2117b4 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -150,9 +150,8 @@ if [[ -s "$HOME/.mutt/aliases" ]]; then fi # SSH/SCP/RSYNC -zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' +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:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' 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:]]##)##' '*@*' From 2a75fba6a80b91a764fbd2e25123f69e22554232 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 10 Jul 2017 20:40:37 -0700 Subject: [PATCH 106/213] [utility] Add safe-ops zstyle option to disable safe rm/cp/ln/mv Currently rm/cp/ln/mv are aliased to rm/cp/ln/mv -i so that it will prompt before removing files. Some people would not like this functionality and wish for an easy way to disable it. This adds a new option: zstyle ':prezto:module:utility' safe-ops yes/no It is enabled by default even if zstyle is not set, but can be set to no to disable these aliases. This should resolve issue #205 --- modules/utility/init.zsh | 11 +++++++---- runcoms/zpreztorc | 5 +++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 8e319bbb..dd6158a6 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -66,16 +66,19 @@ alias sftp='noglob sftp' # Define general aliases. alias _='sudo' alias b='${(z)BROWSER}' -alias cp="${aliases[cp]:-cp} -i" + alias diffu="diff --unified" alias e='${(z)VISUAL:-${(z)EDITOR}}' -alias ln="${aliases[ln]:-ln} -i" alias mkdir="${aliases[mkdir]:-mkdir} -p" -alias mv="${aliases[mv]:-mv} -i" alias p='${(z)PAGER}' alias po='popd' alias pu='pushd' -alias rm="${aliases[rm]:-rm} -i" +if zstyle -T ':prezto:module:utility' safe-ops; then + alias rm="${aliases[rm]:-rm} -i" + alias mv="${aliases[mv]:-mv} -i" + alias cp="${aliases[cp]:-cp} -i" + alias ln="${aliases[ln]:-ln} -i" +fi alias sa='alias | grep -i' alias type='type -a' diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 690add7a..66f88d7f 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -171,6 +171,11 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Set the terminal multiplexer title format. # zstyle ':prezto:module:terminal:multiplexer-title' format '%s' +# safe-ops is enabled by default. This aliases rm, mv, cp, and ln so that they +# prompt before deleting or copying over files. Set to no to disable this safer +# behavior. +# zstyle ':prezto:module:utility' safe-ops yes + # # Tmux # From aad91beb3c60bab04a09a10fa56c56b469251cd3 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 11 Jul 2017 11:52:47 -0700 Subject: [PATCH 107/213] [utility] Move the safeops aliases into their own section and add XXi variants --- modules/utility/init.zsh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index dd6158a6..e9c20b21 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -73,15 +73,21 @@ alias mkdir="${aliases[mkdir]:-mkdir} -p" alias p='${(z)PAGER}' alias po='popd' alias pu='pushd' -if zstyle -T ':prezto:module:utility' safe-ops; then - alias rm="${aliases[rm]:-rm} -i" - alias mv="${aliases[mv]:-mv} -i" - alias cp="${aliases[cp]:-cp} -i" - alias ln="${aliases[ln]:-ln} -i" -fi 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="${aliases[rm]:-rm} -i" + alias mv="${aliases[mv]:-mv} -i" + alias cp="${aliases[cp]:-cp} -i" + alias ln="${aliases[ln]:-ln} -i" +fi + # ls if is-callable 'dircolors'; then # GNU Core Utilities From 17bc7530ba307a50fd197248b2b0697d2326ef66 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 11 Jul 2017 11:58:56 -0700 Subject: [PATCH 108/213] Update documentation on safeops --- modules/utility/README.md | 17 +++++++++++++---- runcoms/zpreztorc | 14 +++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index 57e3b07d..9e9e34ca 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -65,17 +65,13 @@ Aliases - `_` executes a command as another user (`sudo`). - `b` opens the default web browser. - - `cp` copies files and directories interactively. - `diffu` shorthand for `diff --unified` - `e` opens the default editor. - - `ln` links files and directories interactively. - `mkdir` creates directories, including intermediary directories. - - `mv` moves files and directories interactively. - `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`). - - `rm` removes files and directories interactively. - `sa` search aliases for a word. - `type` displays all the attribute values of a shell parameter. @@ -111,6 +107,19 @@ Aliases - `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, you can disable it by adding +`zstyle ':prezto:module:utility' safe-ops no` to your zpreztorc. + +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. diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 66f88d7f..fcf1204c 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -171,11 +171,6 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Set the terminal multiplexer title format. # zstyle ':prezto:module:terminal:multiplexer-title' format '%s' -# safe-ops is enabled by default. This aliases rm, mv, cp, and ln so that they -# prompt before deleting or copying over files. Set to no to disable this safer -# behavior. -# zstyle ':prezto:module:utility' safe-ops yes - # # Tmux # @@ -191,3 +186,12 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Set the default session name: # zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' + +# +# Utility +# + +# safe-ops is enabled by default. This aliases rm, mv, cp, and ln so that they +# prompt before deleting or copying over files. Set to no to disable this safer +# behavior. +# zstyle ':prezto:module:utility' safe-ops yes From 1221e4030d0315f66eb97e8df9add73513fc5624 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Thu, 6 Jul 2017 14:16:17 -0700 Subject: [PATCH 109/213] Add a .editorconfig file to setup tabstyle preferences With editors that support it it will setup preferences so that it will use 2 spaces as the indent, except in .gitignore and .gitmodules which in our files use tabs. For more info see http://EditorConfig.org --- .editorconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..74766921 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +[{.gitignore,.gitmodules}] +indent_style = tab From 86de7a8d2eae4466a62259b84c0946e57dd18805 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 11 Jul 2017 12:07:09 -0700 Subject: [PATCH 110/213] Small editorconfig file cleanup --- .editorconfig | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.editorconfig b/.editorconfig index 74766921..42dd37a6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,9 @@ -# EditorConfig is awesome: http://EditorConfig.org - -# Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 trim_trailing_whitespace = true -[{.gitignore,.gitmodules}] + +[{.gitattributes,.gitignore,.gitmodules}] indent_style = tab From d69070268afed774a055557942154e9cac2b0030 Mon Sep 17 00:00:00 2001 From: Khai Do Date: Mon, 17 Apr 2017 22:31:47 -0700 Subject: [PATCH 111/213] add alias for cloning a repo including all submodules --- modules/git/alias.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 9a2a95b5..e5071a8a 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -92,6 +92,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then alias gf='git fetch' alias gfa='git fetch --all' alias gfc='git clone' + alias gfcs='git clone --recurse-submodules' alias gfm='git pull' alias gfr='git pull --rebase' From ebae698f707c667cfd77143a1910246921041d11 Mon Sep 17 00:00:00 2001 From: Khai Do Date: Thu, 22 Jun 2017 13:18:16 -0700 Subject: [PATCH 112/213] change alias to gfcr --- modules/git/README.md | 1 + modules/git/alias.zsh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/git/README.md b/modules/git/README.md index d8491d62..4d37cbc4 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -102,6 +102,7 @@ Aliases are enabled by default. You can disable them with: - `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. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index e5071a8a..4a5789fe 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -92,7 +92,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip 'yes'; then alias gf='git fetch' alias gfa='git fetch --all' alias gfc='git clone' - alias gfcs='git clone --recurse-submodules' + alias gfcr='git clone --recurse-submodules' alias gfm='git pull' alias gfr='git pull --rebase' From 0f3a5f745e3dd66449f49b4defc101c5ea597a37 Mon Sep 17 00:00:00 2001 From: alan blount Date: Tue, 11 Jul 2017 15:15:24 -0400 Subject: [PATCH 113/213] Detach from tmux if attached, before attach (#1088) If you are in a tmux session, and auto-start is enabled Then you `sudo su` and then `su ` it will re-attach, in a loop. This resolves that problem, by forcing a detach before a (re)attach. --- modules/tmux/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index aadf6bfc..720fb04d 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -37,8 +37,8 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ set-option -t "$tmux_session" destroy-unattached off &> /dev/null fi - # Attach to the 'prezto' session or to the last session used. - exec tmux $_tmux_iterm_integration attach-session + # Attach to the 'prezto' session or to the last session used. (detach first) + exec tmux $_tmux_iterm_integration attach-session -d fi # From d25b251ef7fca67320e2a65f05b4a912c133a19e Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Sun, 17 Jan 2016 13:22:54 -0800 Subject: [PATCH 114/213] git: Add revert to special action contexts revert is very similar to cherry-pick and has a sequence variant. --- modules/git/README.md | 2 ++ modules/git/functions/git-info | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/git/README.md b/modules/git/README.md index 4d37cbc4..0a31e002 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -389,6 +389,8 @@ The following contexts must be enabled with the following zstyle: | 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. diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 8aaa4c32..d27365c2 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -5,7 +5,7 @@ # Sorin Ionescu # -# Gets the Git special action (am, bisect, cherry, merge, rebase). +# Gets the Git special action (am, bisect, cherry, merge, rebase, revert). # Borrowed from vcs_info and edited. function _git-action { local action_dir @@ -18,6 +18,8 @@ function _git-action { 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" \ @@ -80,6 +82,18 @@ function _git-action { 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" From 19990c80252a588ef0983fe16c2f001391775af8 Mon Sep 17 00:00:00 2001 From: Demjan Kaluzki Date: Thu, 12 Nov 2015 23:08:47 +0100 Subject: [PATCH 115/213] Add fasd as an external module --- .gitmodules | 3 +++ modules/fasd/external | 1 + modules/fasd/init.zsh | 6 ++---- 3 files changed, 6 insertions(+), 4 deletions(-) create mode 160000 modules/fasd/external diff --git a/.gitmodules b/.gitmodules index 64941492..ee6967de 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "modules/prompt/functions/pure"] path = modules/prompt/external/pure url = https://github.com/sindresorhus/pure.git +[submodule "modules/fasd/external"] + path = modules/fasd/external + url = https://github.com/clvv/fasd diff --git a/modules/fasd/external b/modules/fasd/external new file mode 160000 index 00000000..90b531a5 --- /dev/null +++ b/modules/fasd/external @@ -0,0 +1 @@ +Subproject commit 90b531a5daaa545c74c7d98974b54cbdb92659fc diff --git a/modules/fasd/init.zsh b/modules/fasd/init.zsh index fc214251..9a68d0d2 100644 --- a/modules/fasd/init.zsh +++ b/modules/fasd/init.zsh @@ -9,10 +9,8 @@ # Load dependencies. pmodload 'editor' -# Return if requirements are not found. -if (( ! $+commands[fasd] )); then - return 1 -fi +# Source module file. +source "${0:h}/external/fasd" || return 1 # # Initialization From 04bfb5131b63c626062af535a1c429f9ff303ca4 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 11 Jul 2017 12:42:55 -0700 Subject: [PATCH 116/213] fasd: fall back to submodule only if command is missing --- modules/fasd/init.zsh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/fasd/init.zsh b/modules/fasd/init.zsh index 9a68d0d2..44d62975 100644 --- a/modules/fasd/init.zsh +++ b/modules/fasd/init.zsh @@ -9,8 +9,11 @@ # Load dependencies. pmodload 'editor' -# Source module file. -source "${0:h}/external/fasd" || return 1 +# 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 From b0c85eddf6bee4d75ca9920c9c6180ab7ff1962a Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 4 Aug 2016 15:57:16 -0500 Subject: [PATCH 117/213] [command-not-found] Load brew 'command-not-found' if homebrew tap is available Homebrew has _official_ tap that supports `command-not-found`. Enable it when possible. --- modules/command-not-found/init.zsh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/command-not-found/init.zsh b/modules/command-not-found/init.zsh index 2d9236a0..0e778031 100644 --- a/modules/command-not-found/init.zsh +++ b/modules/command-not-found/init.zsh @@ -3,6 +3,7 @@ # # Authors: # Joseph Jon Booker +# Indrajit Raychaudhuri # # Load command-not-found on Debian-based distributions. @@ -11,6 +12,9 @@ if [[ -s '/etc/zsh_command_not_found' ]]; then # 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 Mac OS X when homebrew tap is configured. +elif (( $+commands[brew] )) && brew command command-not-found-init > /dev/null 2>&1; then + eval "$(brew command-not-found-init)" # Return if requirements are not found. else return 1 From c1a8fc0469312d4f2ee505a487964509bcf0e8cc Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 13 Jul 2017 16:41:33 -0500 Subject: [PATCH 118/213] Cleanup spurious whitespace --- modules/git/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 0a31e002..df41d2eb 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -65,7 +65,7 @@ Aliases are enabled by default. You can disable them with: - `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*. + - `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) @@ -425,4 +425,4 @@ Authors [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 \ No newline at end of file +[10]: https://github.com/blog/985-git-io-github-url-shortener From 90071d3ad062c4969b1d2e8512e9238524b90981 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 14 Jul 2017 13:28:29 -0700 Subject: [PATCH 119/213] utility: fix completion for rsync and scp --- modules/utility/init.zsh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index e9c20b21..a3cb240a 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -41,8 +41,8 @@ alias ftp='noglob ftp' alias history='noglob history' alias locate='noglob locate' alias rake='noglob rake' -alias rsync='noglob rsync_scp_wrap rsync' -alias scp='noglob rsync_scp_wrap scp' +alias rsync='noglob rsync_wrap' +alias scp='noglob scp_wrap' # This function wraps rsync and scp so that remote paths are not globbed # but local paths are globbed. This is because the programs have their own # globbing for remote paths. The wrap function globs args starting in / and ./ @@ -61,6 +61,15 @@ function rsync_scp_wrap { esac; done command $cmd "${(@)args}" } +function rsync_wrap { + rsync_scp_wrap "rsync" "$@" +} +function scp_wrap { + rsync_scp_wrap "scp" "$@" +} +compdef _rsync rsync_wrap +compdef _scp scp_wrap + alias sftp='noglob sftp' # Define general aliases. From f236344fc8929d63c576ccfb2e4909d9b6647a97 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 15 Jul 2017 00:53:22 -0500 Subject: [PATCH 120/213] [utility] Remove premature call to `compdef` This is a temporary fix to work-around a minor regression in 90071d3. --- modules/utility/init.zsh | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index a3cb240a..101e8a41 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -67,8 +67,6 @@ function rsync_wrap { function scp_wrap { rsync_scp_wrap "scp" "$@" } -compdef _rsync rsync_wrap -compdef _scp scp_wrap alias sftp='noglob sftp' From cb4be65d290e58917fc471281b3c06b6507a7d42 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Mon, 17 Jul 2017 01:14:26 -0500 Subject: [PATCH 121/213] [utility] Update documentation for 'safe-ops' Update formatting and wordings to be more consistent with rest of prezto documentation. --- modules/utility/README.md | 8 +++++--- runcoms/zpreztorc | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index 9e9e34ca..ed9db39e 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -109,9 +109,11 @@ Aliases ### Safe ops -By default, `cp`,`ln`, `mv`, and `rm` are aliased to their interactive variants. -If this is not desired, you can disable it by adding -`zstyle ':prezto:module:utility' safe-ops no` to your zpreztorc. +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: diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index fcf1204c..9fbc4f6a 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -191,7 +191,7 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Utility # -# safe-ops is enabled by default. This aliases rm, mv, cp, and ln so that they -# prompt before deleting or copying over files. Set to no to disable this safer +# 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 +# zstyle ':prezto:module:utility' safe-ops 'yes' From 46e34d30b8648cbd9309e05a657588aa8962fccf Mon Sep 17 00:00:00 2001 From: Karim Benbouali Date: Wed, 19 Jul 2017 10:28:58 +0200 Subject: [PATCH 122/213] module(homebrew): add outdated options for cask and brew commands --- modules/homebrew/init.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh index 1196fa57..19a38978 100644 --- a/modules/homebrew/init.zsh +++ b/modules/homebrew/init.zsh @@ -22,6 +22,7 @@ alias brewl='brew list' alias brews='brew search' alias brewu='brew update && brew upgrade' alias brewx='brew remove' +alias brewo='brew outdated' # Homebrew Cask alias cask='brew cask' @@ -31,3 +32,4 @@ alias caski='brew cask install' alias caskl='brew cask list' alias casks='brew cask search' alias caskx='brew cask uninstall' +alias casko='brew cask outdated' From 2db7f62c2b1ad2199e6e1a20369c62dd35e4b625 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 19 Jul 2017 10:41:39 -0700 Subject: [PATCH 123/213] [homebrew] Add documentation for brewo and casko --- modules/homebrew/README.md | 2 ++ modules/homebrew/init.zsh | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/homebrew/README.md b/modules/homebrew/README.md index 84b43865..98019fdf 100644 --- a/modules/homebrew/README.md +++ b/modules/homebrew/README.md @@ -12,6 +12,7 @@ Aliases - `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 Homebrew and formulae. - `brewx` uninstalls a formula. @@ -23,6 +24,7 @@ Aliases - `caskC` cleans up all cached downloads. - `caski` installs a cask. - `caskl` lists installed casks. + - `casko` lists casks which have an update available. - `casks` searches for a cask. - `caskx` uninstalls a cask. diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh index 19a38978..e517c0a5 100644 --- a/modules/homebrew/init.zsh +++ b/modules/homebrew/init.zsh @@ -19,10 +19,10 @@ alias brewc='brew cleanup' alias brewC='brew cleanup --force' alias brewi='brew install' alias brewl='brew list' +alias brewo='brew outdated' alias brews='brew search' alias brewu='brew update && brew upgrade' alias brewx='brew remove' -alias brewo='brew outdated' # Homebrew Cask alias cask='brew cask' @@ -30,6 +30,6 @@ alias caskc='brew cask cleanup --outdated' alias caskC='brew cask cleanup' alias caski='brew cask install' alias caskl='brew cask list' +alias casko='brew cask outdated' alias casks='brew cask search' alias caskx='brew cask uninstall' -alias casko='brew cask outdated' From 608f291ad3c5955f4b6c413adbef2b0a820ef65e Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 20 Jul 2017 23:11:00 -0500 Subject: [PATCH 124/213] [utility] Reuse interactive aliases when 'safe-ops' is set When `safe-ops` is set, we can reuse the aliases that are already available. --- modules/utility/init.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 101e8a41..aa815e64 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -89,10 +89,10 @@ 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="${aliases[rm]:-rm} -i" - alias mv="${aliases[mv]:-mv} -i" - alias cp="${aliases[cp]:-cp} -i" - alias ln="${aliases[ln]:-ln} -i" + alias rm='rmi' + alias mv='mvi' + alias cp='cpi' + alias ln='lni' fi # ls From bcbaea27aff98abcc7ba8d5088b2215977cd8597 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 22 Jul 2017 13:01:43 -0500 Subject: [PATCH 125/213] [python] Detect actual `pip` command available for generating completion cache We cannot always assume availability of `pip`, it can be `pip2` or `pip3` instead. We detect the first available one and use it for generating the completion cache. --- modules/python/init.zsh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 7ed3428f..d95b28a6 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -106,16 +106,21 @@ if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then fi # Load PIP completion. -if (( $+commands[pip] )); then +if (( $#commands[(i)pip(|[23])] )); then cache_file="${0:h}/cache.zsh" - if [[ "$commands[pip]" -nt "$cache_file" || ! -s "$cache_file" ]]; then + # Detect and use first one available among 'pip', 'pip2', 'pip3' variants + pip_command="$commands[(i)pip(|[23])]" + + if [[ "$pip_command" -nt "$cache_file" || ! -s "$cache_file" ]]; then # pip is slow; cache its output. And also support 'pip2', 'pip3' variants - pip completion --zsh | sed -e "s|compctl -K [-_[:alnum:]]* pip|& pip2 pip3|" >! "$cache_file" 2> /dev/null + $pip_command completion --zsh \ + | sed -e "s|compctl -K [-_[:alnum:]]* pip|& pip2 pip3|" >! "$cache_file" 2> /dev/null fi source "$cache_file" unset cache_file + unset pip_command fi # From ac628c9059af11a905240bd6c9500ea1d352032a Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 20 Jul 2017 20:07:29 -0500 Subject: [PATCH 126/213] [general] Switch code block formatting to use fence formatting Changes: * Indented code block doesn't support syntax highlighting, use fenced formatting (```) instead for better syntax highlighting * Wrap commands/functions in backticks * Typo fixes --- README.md | 32 +++++---- modules/README.md | 4 +- modules/autosuggestions/README.md | 8 ++- modules/editor/README.md | 32 ++++++--- modules/git/README.md | 34 ++++++--- modules/gnu-utility/README.md | 4 +- modules/gpg/README.md | 4 +- modules/history-substring-search/README.md | 20 ++++-- modules/node/README.md | 6 +- modules/pacman/README.md | 8 ++- modules/perl/README.md | 24 ++++--- modules/prompt/README.md | 82 ++++++++++++++-------- modules/python/README.md | 12 +++- modules/ruby/README.md | 4 +- modules/screen/README.md | 8 ++- modules/ssh/README.md | 4 +- modules/syntax-highlighting/README.md | 28 +++++--- modules/terminal/README.md | 16 +++-- modules/tmux/README.md | 24 +++++-- modules/utility/README.md | 16 +++-- modules/wakeonlan/README.md | 8 ++- 21 files changed, 260 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index f90888c6..2f382f9b 100644 --- a/README.md +++ b/README.md @@ -13,21 +13,25 @@ version is 4.3.17. 1. Launch Zsh: - `zsh` + ```console + zsh + ``` 2. Clone the repository: - `git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"` + ```console + git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" + ``` 3. Create a new Zsh configuration by copying the Zsh configuration files provided: - ``` - setopt EXTENDED_GLOB - for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do - ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" - done - ``` + ```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 config files, ln will error. In simple cases you can add `source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"` to @@ -37,7 +41,9 @@ version is 4.3.17. 4. Set Zsh as your default shell: - `chsh -s /bin/zsh` + ```console + chsh -s /bin/zsh + ``` 5. Open a new Zsh terminal window or tab. @@ -57,9 +63,11 @@ into the `$ZPREZTODIR` directory and resolve them yourself. To pull the latest changes and update submodules manually: - cd $ZPREZTODIR - git pull - git submodule update --init --recursive +```console +cd $ZPREZTODIR +git pull +git submodule update --init --recursive +``` Usage ----- diff --git a/modules/README.md b/modules/README.md index db851f36..1c2cdc54 100644 --- a/modules/README.md +++ b/modules/README.md @@ -3,7 +3,9 @@ Modules Load modules in *zpreztorc*. The order matters. - zstyle ':prezto:load' pmodule 'environment' 'terminal' +```sh +zstyle ':prezto:load' pmodule 'environment' 'terminal' +``` Archive ------- diff --git a/modules/autosuggestions/README.md b/modules/autosuggestions/README.md index 70243798..a94d2ae6 100644 --- a/modules/autosuggestions/README.md +++ b/modules/autosuggestions/README.md @@ -35,11 +35,15 @@ positive results. To enable highlighting for this module only, add the following line to *zpreztorc*: - zstyle ':prezto:module:autosuggestions' color 'yes' +```sh +zstyle ':prezto:module:autosuggestions' color 'yes' +``` To set the query found color, add the following line to *zpreztorc*: - zstyle ':prezto:module:autosuggestions:color' found '' +```sh +zstyle ':prezto:module:autosuggestions:color' found '' +``` Authors ------- diff --git a/modules/editor/README.md b/modules/editor/README.md index 78a7ea38..1bc97692 100644 --- a/modules/editor/README.md +++ b/modules/editor/README.md @@ -11,21 +11,27 @@ Settings To enable key bindings, add the following to *zpreztorc*, and replace 'bindings' with 'emacs' or 'vi'. - zstyle ':prezto:module:editor' key-bindings 'bindings' +```sh +zstyle ':prezto:module:editor' key-bindings 'bindings' +``` ### Dot Expansion To enable the auto conversion of .... to ../.., add the following to *zpreztorc*. - zstyle ':prezto:module:editor' dot-expansion 'yes' +```sh +zstyle ':prezto:module:editor' dot-expansion 'yes' +``` ### PS Context To enable the prompt context to be set, add the following to your *zpreztorc*. - zstyle ':prezto:module:editor' ps-context 'yes' +```sh +zstyle ':prezto:module:editor' ps-context 'yes' +``` Theming ------- @@ -33,27 +39,37 @@ Theming To indicate when the editor is in the primary keymap (emacs or viins), add the following to your `theme_prompt_setup` function. - zstyle ':prezto:module:editor:info:keymap:primary' format '>>>' +```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. - zstyle ':prezto:module:editor:info:keymap:primary:insert' format 'I' +```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. - zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format 'O' +```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. - zstyle ':prezto:module:editor:info:keymap:alternate' format '<<<' +```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. - zstyle ':prezto:module:editor:info:completing' format '...' +```sh +zstyle ':prezto:module:editor:info:completing' format '...' +``` Then add `$editor_info[context]`, where context is *keymap*, *insert*, or *overwrite*, to `$PROMPT` or `$RPROMPT`. diff --git a/modules/git/README.md b/modules/git/README.md index df41d2eb..bd67f712 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -15,14 +15,18 @@ 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. - zstyle ':prezto:module:git:log:context' format '' +```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*. - zstyle ':prezto:module:git:status:ignore' submodules 'all' +```sh +zstyle ':prezto:module:git:status:ignore' submodules 'all' +``` This setting affects all aliases and functions that call `git-status`. @@ -31,7 +35,9 @@ Aliases Aliases are enabled by default. You can disable them with: - zstyle ':prezto:module:git:alias' skip 'yes' +```sh +zstyle ':prezto:module:git:alias' skip 'yes' +``` ### Git @@ -335,7 +341,9 @@ 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. - zstyle ':prezto:module:git:info:context:subcontext' format 'string' +```sh +zstyle ':prezto:module:git:info:context:subcontext' format 'string' +``` ### Main Contexts @@ -362,7 +370,9 @@ setting a style is as follows. The following contexts must be enabled with the following zstyle: - zstyle ':prezto:module:git:info' verbose 'yes' +```sh +zstyle ':prezto:module:git:info' verbose 'yes' +``` ### Verbose Contexts @@ -395,14 +405,18 @@ The following contexts must be enabled with the following zstyle: First, format the repository state attributes. For example, to format the branch and remote names, define the following styles. - zstyle ':prezto:module:git:info:branch' format 'branch:%b' - zstyle ':prezto:module:git:info:remote' format 'remote:%R' +```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. - zstyle ':prezto:module:git:info:keys' format \ - 'prompt' ' git(%b)' \ - 'rprompt' '[%R]' +```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 diff --git a/modules/gnu-utility/README.md b/modules/gnu-utility/README.md index 34bc6635..7e62a176 100644 --- a/modules/gnu-utility/README.md +++ b/modules/gnu-utility/README.md @@ -20,7 +20,9 @@ Settings To use a different prefix, add the following to *zpreztorc*, and replace 'g' with the desired prefix: - zstyle ':prezto:module:gnu-utility' prefix 'g' +```sh +zstyle ':prezto:module:gnu-utility' prefix 'g' +``` Authors ------- diff --git a/modules/gpg/README.md b/modules/gpg/README.md index 80e91d0f..be3c1a92 100644 --- a/modules/gpg/README.md +++ b/modules/gpg/README.md @@ -9,7 +9,9 @@ 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*: - enable-ssh-support +```conf +enable-ssh-support +``` When OpenSSH Agent protocol emulation is enabled, this module will load the SSH module for additional processing. diff --git a/modules/history-substring-search/README.md b/modules/history-substring-search/README.md index 79714fa9..0da63dcc 100644 --- a/modules/history-substring-search/README.md +++ b/modules/history-substring-search/README.md @@ -24,7 +24,9 @@ Settings To enable case-sensitivity for this module only, add the following line to *zpreztorc*: - zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' +```sh +zstyle ':prezto:module:history-substring-search' case-sensitive 'yes' +``` ### Highlighting @@ -34,19 +36,27 @@ positive results. To enable highlighting for this module only, add the following line to *zpreztorc*: - zstyle ':prezto:module:history-substring-search' color 'yes' +```sh +zstyle ':prezto:module:history-substring-search' color 'yes' +``` To set the query found color, add the following line to *zpreztorc*: - zstyle ':prezto:module:history-substring-search:color' found '' +```sh +zstyle ':prezto:module:history-substring-search:color' found '' +``` To set the query not found color, add the following line to *zpreztorc*: - zstyle ':prezto:module:history-substring-search:color' not-found '' +```sh +zstyle ':prezto:module:history-substring-search:color' not-found '' +``` To set the search globbing flags, add the following line to *zpreztorc*: - zstyle ':prezto:module:history-substring-search' globbing-flags '' +```sh +zstyle ':prezto:module:history-substring-search' globbing-flags '' +``` Authors ------- diff --git a/modules/node/README.md b/modules/node/README.md index 66e9784d..951f2a74 100644 --- a/modules/node/README.md +++ b/modules/node/README.md @@ -31,8 +31,10 @@ Theming To display the version number of the current Node.js version, define the following style inside the `prompt_name_setup` function. - # %v - Node.js version. - zstyle ':prezto:module:node:info:version' format 'version:%v' +```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. diff --git a/modules/pacman/README.md b/modules/pacman/README.md index fb07407d..68ed9204 100644 --- a/modules/pacman/README.md +++ b/modules/pacman/README.md @@ -10,14 +10,18 @@ Settings To enable a Pacman frontend, for example, [Yaourt][2], add the following line to *zpreztorc*: - zstyle ':prezto:module:pacman' frontend 'yaourt' +```sh +zstyle ':prezto:module:pacman' frontend 'yaourt' +``` If you have enabled color globally in *zpreztorc*, you may disable it for certain commands. To disable `yaourt` highlighting, add the following line to *zpreztorc*: - zstyle ':prezto:module:pacman:yaourt' color 'no' +```sh +zstyle ':prezto:module:pacman:yaourt' color 'no' +``` Aliases ------- diff --git a/modules/perl/README.md b/modules/perl/README.md index cc5a9d32..092c9224 100644 --- a/modules/perl/README.md +++ b/modules/perl/README.md @@ -14,15 +14,19 @@ Mac OS X in *~/Library/Perl/5.12* by altering the environment. For Perl versions older than 5.14, install *local::lib*. - 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 +```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*: - curl -L http://cpanmin.us | perl - --self-upgrade +```console +curl -L http://cpanmin.us | perl - --self-upgrade +``` Perlbrew -------- @@ -86,11 +90,13 @@ Functions Theming ------- -To display the name of the currach Perl version in a prompt, define the +To display the name of the current Perl version in a prompt, define the following style in the `prompt_name_setup` function. - # %v - perl version. - zstyle ':prezto:module:perl:info:version' format 'version:%v' +```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. diff --git a/modules/prompt/README.md b/modules/prompt/README.md index dc024977..dd5349e2 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -6,11 +6,25 @@ 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. - zstyle ':prezto:module:prompt' theme 'name' +```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' +``` Theming ------- @@ -26,7 +40,7 @@ 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 +#### `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, @@ -36,51 +50,57 @@ including a function that displays help or a function used to preview it. The most basic example of this function can be seen below. - function prompt_name_setup { - PROMPT='%m%# ' - RPROMPT='' - } +```sh +function prompt_name_setup { + PROMPT='%m%# ' + RPROMPT='' +} +``` -#### prompt_name_help +#### `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. - function prompt_name_help { - cat <] [] + prompt theme [] [] - where the color is for the left-hand prompt. - EOH - } +where the color is for the left-hand prompt. +EOH +} +``` -#### prompt_name_preview +#### `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. - 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 - } +```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 +#### `prompt_name_precmd` This hook is called before the prompt is displayed and is useful for getting information to display in a prompt. @@ -93,11 +113,13 @@ a function before you calling it. The most basic example of this function can be seen below. - function prompt_name_precmd { - if (( $+functions[git-info] )); then - git-info - fi - } +```sh +function prompt_name_precmd { + if (( $+functions[git-info] )); then + git-info + fi +} +``` Authors ------- diff --git a/modules/python/README.md b/modules/python/README.md index a554bdf1..992af3b0 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -52,14 +52,18 @@ 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. - export PROJECT_HOME="$HOME/Developer" +```sh +export PROJECT_HOME="$HOME/Developer" +``` 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. - export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages' +```sh +export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--system-site-packages' +``` ### Additional Options @@ -68,7 +72,9 @@ directory where the root of the project matches a virtualenv name. This can be enabled with: - zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' +```sh +zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' +``` Aliases ------- diff --git a/modules/ruby/README.md b/modules/ruby/README.md index 372d00f1..aa4ab645 100644 --- a/modules/ruby/README.md +++ b/modules/ruby/README.md @@ -45,7 +45,9 @@ rbenv. To enable auto switching the Ruby version on directory change based on the .ruby-version file, add the following line to *zpreztorc*: - zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' +```sh +zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' +``` Bundler ------- diff --git a/modules/screen/README.md b/modules/screen/README.md index ef964049..0a9ff07c 100644 --- a/modules/screen/README.md +++ b/modules/screen/README.md @@ -13,12 +13,16 @@ 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*: - zstyle ':prezto:module:screen:auto-start' local 'yes' +```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*: - zstyle ':prezto:module:screen:auto-start' remote 'yes' +```sh +zstyle ':prezto:module:screen:auto-start' remote 'yes' +``` Aliases ------- diff --git a/modules/ssh/README.md b/modules/ssh/README.md index 7324ae9a..a0a69f06 100644 --- a/modules/ssh/README.md +++ b/modules/ssh/README.md @@ -14,7 +14,9 @@ Settings To load multiple identities, add the following line to *zpreztorc*: - zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github' +```sh +zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github' +``` Authors ------- diff --git a/modules/syntax-highlighting/README.md b/modules/syntax-highlighting/README.md index 87f85bea..67bbb200 100644 --- a/modules/syntax-highlighting/README.md +++ b/modules/syntax-highlighting/README.md @@ -22,7 +22,9 @@ Settings To enable highlighting for this module only, add the following line to *zpreztorc*: - zstyle ':prezto:module:syntax-highlighting' color 'yes' +```sh +zstyle ':prezto:module:syntax-highlighting' color 'yes' +``` ### Highlighters @@ -31,12 +33,14 @@ only enables the *main* highlighter by default. To enable all highlighters, add the following to *zpreztorc*: - zstyle ':prezto:module:syntax-highlighting' highlighters \ - 'main' \ - 'brackets' \ - 'pattern' \ - 'cursor' \ - 'root' +```sh +zstyle ':prezto:module:syntax-highlighting' highlighters \ + 'main' \ + 'brackets' \ + 'pattern' \ + 'cursor' \ + 'root' +``` ### Highlighting Styles @@ -45,10 +49,12 @@ 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*: - zstyle ':prezto:module:syntax-highlighting' styles \ - 'builtin' 'bg=blue' \ - 'command' 'bg=blue' \ - 'function' 'bg=blue' +```sh +zstyle ':prezto:module:syntax-highlighting' styles \ + 'builtin' 'bg=blue' \ + 'command' 'bg=blue' \ + 'function' 'bg=blue' +``` Authors ------- diff --git a/modules/terminal/README.md b/modules/terminal/README.md index 5a607880..41a08855 100644 --- a/modules/terminal/README.md +++ b/modules/terminal/README.md @@ -11,21 +11,27 @@ Settings To auto set the terminal window and tab titles with the current command or directory, add the following to *zpreztorc*: - zstyle ':prezto:module:terminal' auto-title 'yes' +```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`. - zstyle ':prezto:module:terminal' auto-title 'always' +```sh +zstyle ':prezto:module:terminal' auto-title 'always' +``` ### Title formats To format terminal window and tab titles, add the following to *zpreztorc*: - 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' +```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. diff --git a/modules/tmux/README.md b/modules/tmux/README.md index 87a83f48..3d742ba6 100644 --- a/modules/tmux/README.md +++ b/modules/tmux/README.md @@ -13,33 +13,43 @@ 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*: - zstyle ':prezto:module:tmux:auto-start' local 'yes' +```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*: - zstyle ':prezto:module:tmux:auto-start' remote 'yes' +```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: - zstyle ':prezto:module:tmux:session' name 'YOUR DEFAULT SESSION NAME' +```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*: - set-option -g destroy-unattached [on | off] +```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*: - zstyle ':prezto:module:tmux:iterm' integrate 'yes' +```sh +zstyle ':prezto:module:tmux:iterm' integrate 'yes' +``` Read [iTerm2 and tmux Integration][7] for more information. @@ -57,7 +67,9 @@ 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*: - set-option -g default-command "reattach-to-user-namespace -l $SHELL -l" +```conf +set-option -g default-command "reattach-to-user-namespace -l $SHELL -l" +``` Furthermore, tmux is known to cause **kernel panics** on Mac OS X. A discussion about this and Prezto has already been [opened][2]. diff --git a/modules/utility/README.md b/modules/utility/README.md index ed9db39e..5be6625e 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -14,19 +14,27 @@ commands. To disable `ls` color, add the following line to *zpreztorc*; when coloring is disabled, type indicators (\*, /, =>, @, =, |, %) will be appended to entries. - zstyle ':prezto:module:utility:ls' color 'no' +```sh +zstyle ':prezto:module:utility:ls' color 'no' +``` To disable `diff` highlighting, add the following line to *zpreztorc*: - zstyle ':prezto:module:utility:diff' color 'no' +```sh +zstyle ':prezto:module:utility:diff' color 'no' +``` To disable `wdiff` highlighting, add the following line to *zpreztorc*: - zstyle ':prezto:module:utility:wdiff' color 'no' +```sh +zstyle ':prezto:module:utility:wdiff' color 'no' +``` To disable `make` highlighting, add the following line to *zpreztorc*: - zstyle ':prezto:module:utility:make' color 'no' +```sh +zstyle ':prezto:module:utility:make' color 'no' +``` Aliases ------- diff --git a/modules/wakeonlan/README.md b/modules/wakeonlan/README.md index 9bde199e..dacfa52d 100644 --- a/modules/wakeonlan/README.md +++ b/modules/wakeonlan/README.md @@ -14,11 +14,15 @@ 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: - 00:11:22:33:44:55:66 192.168.0.255 +```conf +00:11:22:33:44:55:66 192.168.0.255 +``` To wake that device, use the following command: - wake leto +```sh +$ wake leto +``` For more information on the configuration file format, read the [wakeonlan man page][2]. From 17a59bada7d66461584349169d8f65ee606b1a33 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 20 Jul 2017 19:08:19 -0500 Subject: [PATCH 127/213] [prompt] Rename helper function `promptpwd` to `prompt-pwd` for consistency Changes: * In prezto, function names are hyphenated ('-') by convention, rename `promptpwd` to `prompt-pwd` accordingly. * Unset local variable `current_pwd` proactively. * Tweak additional documentation for `prompt-pwd`. --- modules/prompt/README.md | 8 ++++++++ modules/prompt/functions/{promptpwd => prompt-pwd} | 12 +++++++++--- modules/prompt/functions/prompt_damoekri_setup | 2 +- modules/prompt/functions/prompt_paradox_setup | 2 +- modules/prompt/functions/prompt_sorin_setup | 2 +- runcoms/zpreztorc | 4 +++- 6 files changed, 23 insertions(+), 7 deletions(-) rename modules/prompt/functions/{promptpwd => prompt-pwd} (75%) diff --git a/modules/prompt/README.md b/modules/prompt/README.md index dd5349e2..e106f2b8 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -26,6 +26,14 @@ in *zpreztorc*. zstyle ':prezto:module:prompt' pwd-length 'short' ``` +### 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*. + + zstyle ':prezto:module:prompt' pwd-length 'short' + Theming ------- diff --git a/modules/prompt/functions/promptpwd b/modules/prompt/functions/prompt-pwd similarity index 75% rename from modules/prompt/functions/promptpwd rename to modules/prompt/functions/prompt-pwd index bf6e227d..53613e72 100644 --- a/modules/prompt/functions/promptpwd +++ b/modules/prompt/functions/prompt-pwd @@ -1,7 +1,11 @@ -# prompt setup function common to many prompts -# moved to external function to reduce code redundancy +# +# Prompt setup function commonly used by prompt themes. +# +# Authors: +# Sorin Ionescu +# -# function promptpwd { +# function prompt-pwd { setopt localoptions extendedglob @@ -19,6 +23,8 @@ else ret_directory="${${${${(@j:/:M)${(@s:/:)current_pwd}##.#?}:h}%/}//\%/%%}/${${current_pwd:t}//\%/%%}" fi +unset current_pwd + print "$ret_directory" # } diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup index 89e4d758..ca3b09ec 100644 --- a/modules/prompt/functions/prompt_damoekri_setup +++ b/modules/prompt/functions/prompt_damoekri_setup @@ -16,7 +16,7 @@ prompt_damoekri_precmd() { unsetopt XTRACE KSH_ARRAYS # Format PWD. - _prompt_damoekri_pwd=$(promptpwd) + _prompt_damoekri_pwd=$(prompt-pwd) # Get Git repository information. if (( $+functions[git-info] )); then diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index c5a87515..088e77e4 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -84,7 +84,7 @@ function prompt_paradox_precmd { unsetopt XTRACE KSH_ARRAYS # Format PWD. - _prompt_paradox_pwd=$(promptpwd) + _prompt_paradox_pwd=$(prompt-pwd) # Get Git repository information. if (( $+functions[git-info] )); then diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 3a2a9f71..b37af7f8 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -82,7 +82,7 @@ function prompt_sorin_precmd { unsetopt XTRACE KSH_ARRAYS # Format PWD. - _prompt_sorin_pwd=$(promptpwd) + _prompt_sorin_pwd=$(prompt-pwd) # Define prompts. RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}' diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 9fbc4f6a..31368d1c 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -97,7 +97,9 @@ zstyle ':prezto:module:editor' key-bindings 'emacs' # Auto set to 'off' on dumb terminals. zstyle ':prezto:module:prompt' theme 'sorin' -# Set how themes that use promptpwd function display the pwd, can be 'short', 'long', or 'full' +# 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' # From a60fe47359fdef9cbf4798690e66efe973aab363 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Mon, 17 Jul 2017 00:15:45 -0500 Subject: [PATCH 128/213] [utility] Refactor rsync_scp wrapper function and add completion support Changes: - Rename `rsync_scp_wrap` to `noremoteglob` and make it more generally usable - Enable completion support for commands wrapped with `noremoteglob` - Tighten up internal variable usages - Update documentation for 'noremoteglob' function --- modules/utility/README.md | 5 ++- modules/utility/functions/_noremoteglob | 11 ++++++ modules/utility/init.zsh | 49 +++++++++++-------------- 3 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 modules/utility/functions/_noremoteglob diff --git a/modules/utility/README.md b/modules/utility/README.md index 5be6625e..eeb850d5 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -65,8 +65,8 @@ Aliases - `history` - `locate` - `rake` - - `rsync` - - `scp` + - `rsync` (selectively enabled for local files) + - `scp` (selectively enabled for local files) - `sftp` ### General @@ -149,6 +149,7 @@ Functions - `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 --git a/modules/utility/functions/_noremoteglob b/modules/utility/functions/_noremoteglob new file mode 100644 index 00000000..de5290e4 --- /dev/null +++ b/modules/utility/functions/_noremoteglob @@ -0,0 +1,11 @@ +#compdef noremoteglob +#autoload + +# +# Completes noremoteglob. +# +# Authors: +# Indrajit Raychaudhuri +# + +_precommand diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index aa815e64..75e72b26 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -41,33 +41,8 @@ alias ftp='noglob ftp' alias history='noglob history' alias locate='noglob locate' alias rake='noglob rake' -alias rsync='noglob rsync_wrap' -alias scp='noglob scp_wrap' -# This function wraps rsync and scp so that remote paths are not globbed -# but local paths are globbed. This is because the programs have their own -# globbing for remote paths. The wrap function globs args starting in / and ./ -# and doesn't glob paths with : in it as these are interpreted as remote paths -# by these programs unless the path starts with / or ./ -function rsync_scp_wrap { - local args=( ) - local cmd="$1" - shift - local i - for i in "$@"; do case $i in - ( ./* ) args+=( ${~i} ) ;; # glob - ( /* ) args+=( ${~i} ) ;; # glob - ( *:* ) args+=( ${i} ) ;; # noglob - ( * ) args+=( ${~i} ) ;; # glob - esac; done - command $cmd "${(@)args}" -} -function rsync_wrap { - rsync_scp_wrap "rsync" "$@" -} -function scp_wrap { - rsync_scp_wrap "scp" "$@" -} - +alias rsync='noglob noremoteglob rsync' +alias scp='noglob noremoteglob scp' alias sftp='noglob sftp' # Define general aliases. @@ -239,3 +214,23 @@ function find-exec { 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/ +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}" +} From 24b710f5455bb2218eed6777715d3f377d459282 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 22 Jul 2017 13:56:32 -0500 Subject: [PATCH 129/213] [general] Fix incorrect fenced code indentation --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2f382f9b..b31edd9f 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,9 @@ version is 4.3.17. 1. Launch Zsh: - ```console - zsh - ``` + ```console + zsh + ``` 2. Clone the repository: From eddbdd941656b591b27a554b119f16b3f01ef2c1 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 22 Jul 2017 14:09:20 -0500 Subject: [PATCH 130/213] Update submodules URLs to use git URLs explicitly Even though GitHub redirects git calls based on user-agent, using git URLs consistently is preferable. --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index ee6967de..46e6a0e6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "modules/autosuggestions/external"] path = modules/autosuggestions/external - url = https://github.com/zsh-users/zsh-autosuggestions + url = https://github.com/zsh-users/zsh-autosuggestions.git [submodule "modules/history-substring-search/external"] path = modules/history-substring-search/external url = https://github.com/zsh-users/zsh-history-substring-search.git @@ -21,4 +21,4 @@ url = https://github.com/sindresorhus/pure.git [submodule "modules/fasd/external"] path = modules/fasd/external - url = https://github.com/clvv/fasd + url = https://github.com/clvv/fasd.git From 8846db9d4d35758e91a427bca17120d216be99de Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 22 Jul 2017 23:42:51 -0500 Subject: [PATCH 131/213] [node] Always quote files when `source`-ing --- modules/node/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index a15bace4..c225b2fc 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -12,7 +12,7 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then # Load package manager installed NVM into the shell session. elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then - source $(brew --prefix nvm)/nvm.sh + source "$(brew --prefix nvm)/nvm.sh" # Load manually installed nodenv into the shell session. elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then From d6276e80254ddb42bc7263b67a8b73e0f2e52999 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sat, 22 Jul 2017 17:43:39 -0500 Subject: [PATCH 132/213] [osx] Support custom keyword used by `mand` to open man pages in Dash.app `zstyle` based customization is now avaialble in *zpreztorc*. --- modules/osx/README.md | 13 +++++++++++++ modules/osx/functions/mand | 5 ++++- runcoms/zpreztorc | 7 +++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/osx/README.md b/modules/osx/README.md index d8eff0ff..870b4864 100644 --- a/modules/osx/README.md +++ b/modules/osx/README.md @@ -3,6 +3,19 @@ OSX Defines [Mac OS X][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 ------- diff --git a/modules/osx/functions/mand b/modules/osx/functions/mand index 7a9653a1..b8e958ee 100644 --- a/modules/osx/functions/mand +++ b/modules/osx/functions/mand @@ -7,7 +7,8 @@ function mand { if (( $# > 0 )); then - open "dash://manpages:$1" 2>/dev/null + 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 @@ -15,6 +16,8 @@ function mand { else print 'What manual page do you want?' >&2 fi + + unset dashkw } mand "$@" diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 31368d1c..22b5b3d7 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -81,6 +81,13 @@ zstyle ':prezto:module:editor' key-bindings 'emacs' # Set the search globbing flags. # zstyle ':prezto:module:history-substring-search' globbing-flags '' +# +# OS X +# + +# Set the keyword used by `mand` to open man pages in Dash.app +# zstyle ':prezto:module:osx:man' dash-keyword 'manpages' + # # Pacman # From 9f1a41de9015e89c5553289173e2e1a7e5a0b35d Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Mon, 24 Jul 2017 04:00:54 -0700 Subject: [PATCH 133/213] Fix unbound keys in vicmd/viins mode Previously I made a change to try and bind these unbound keys to the main keymap in thoughts that in vicmd or viins mode it would fallback if it wasn't bound in vicmd/viins mode. This turned out not to be the case. Explicitly bind the keys in both viins and vicmd mode as works properly. --- modules/editor/init.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 4e373eea..40dbb8f0 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -307,7 +307,8 @@ unbound_keys=( "${key_info[PageDown]}" ) for keymap in $unbound_keys; do - bindkey -M main "${keymap}" _prezto-zle-noop + bindkey -M viins "${keymap}" _prezto-zle-noop + bindkey -M vicmd "${keymap}" _prezto-zle-noop done # Ctrl + Left and Ctrl + Right bindings to forward/backward word for keymap in viins vicmd; do From 9bdc1b35d51407515edb5e82dd3f8635fd771511 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 24 Jul 2017 11:55:02 -0700 Subject: [PATCH 134/213] Migrate sorin prompt to zsh-async (#1385) This includes some improvements by @indrajitr in addition to the main migration. The first step was to avoid PROMPT and RPROMPT modification when possible (which may help resolve some other issues as well relating to zsh crashes with the sorin prompt) then update the displayed git information in a separate variable rather than a command. We use zsh-async for creating and running background tasks. The sorin prompt uses it to update git info without blocking the prompt from displaying (because of how long it can take). In the future it may be worth moving more tasks and more prompts to using this. The move to zsh-async does make the git prompt slower in some circumstances (most noticeable in large repos), but this is a worthwhile tradeoff to avoid the cache file which had a number of potential security holes. We have also switched to adding zsh-async as an external submodule (rather than the version bundled with pure) which may cause some migration headaches, but it will be worth it in the long run. --- .gitmodules | 3 + modules/prompt/external/async | 1 + modules/prompt/functions/async | 2 +- modules/prompt/functions/prompt_sorin_setup | 86 ++++++++++----------- 4 files changed, 46 insertions(+), 46 deletions(-) create mode 160000 modules/prompt/external/async diff --git a/.gitmodules b/.gitmodules index 46e6a0e6..365b0592 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "modules/fasd/external"] path = modules/fasd/external url = https://github.com/clvv/fasd.git +[submodule "modules/prompt/external/async"] + path = modules/prompt/external/async + url = https://github.com/mafredri/zsh-async.git diff --git a/modules/prompt/external/async b/modules/prompt/external/async new file mode 160000 index 00000000..28c7a644 --- /dev/null +++ b/modules/prompt/external/async @@ -0,0 +1 @@ +Subproject commit 28c7a644227a5ad7249193525ef27734781f6a63 diff --git a/modules/prompt/functions/async b/modules/prompt/functions/async index d4b591e1..ae0ec558 120000 --- a/modules/prompt/functions/async +++ b/modules/prompt/functions/async @@ -1 +1 @@ -../external/pure/async.zsh \ No newline at end of file +../external/async/async.zsh \ No newline at end of file diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index b37af7f8..8eca6f6b 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -32,49 +32,33 @@ # Load dependencies. pmodload 'helper' -prompt_sorin_git_info() { - if (( _prompt_sorin_precmd_async_pid > 0 )); then - # Append Git status. - if [[ -s "$_prompt_sorin_precmd_async_data" ]]; then - alias typeset='typeset -g' - source "$_prompt_sorin_precmd_async_data" - RPROMPT+='${git_info:+${(e)git_info[status]}}' - unalias typeset +function prompt_sorin_git_info { + # 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 - - # Reset PID. - _prompt_sorin_precmd_async_pid=0 - - # Redisplay prompt. + 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 } -function prompt_sorin_precmd_async { - # Get Git repository information. +function prompt_sorin_async_git { + cd -q "$1" if (( $+functions[git-info] )); then git-info - ### TODO XXX - # This section exists to patch over vulnerabilities when sourcing the - # file in $_prompt_sorin_precmd_async_data. Without it if a branch is named - # $foo it will expand if we have a $foo variable, and a branch named - # $(IFS=_;cmd=rm_-rf_~;$cmd) could delete the users home directory. - # This is a stopgap to prevent code execution and fix the vulnerability, - # but it eventually needs to be removed in favor of zsh_async and not using - # a file to store the prompt data in. - ### - local tmp_prompt_var=$(typeset -p git_info) - # Replace all $ with $\ to escape - tmp_prompt_var=${tmp_prompt_var//\$/\\$} - # Unescape the first \$ as it's our $( ) - tmp_prompt_var=${tmp_prompt_var:s/\\$/\$} - # Escape all backticks ` to \` - tmp_prompt_var=${tmp_prompt_var//\`/\\\`} - printf "%s\n" "$tmp_prompt_var" >! "$_prompt_sorin_precmd_async_data" + print ${git_info[status]} fi - - # Signal completion to parent process. - kill -WINCH $$ } function prompt_sorin_precmd { @@ -84,18 +68,21 @@ function prompt_sorin_precmd { # Format PWD. _prompt_sorin_pwd=$(prompt-pwd) - # Define prompts. - RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}' - # Kill the old process of slow commands if it is still running. - if (( _prompt_sorin_precmd_async_pid > 0 )); then - kill -KILL "$_prompt_sorin_precmd_async_pid" &>/dev/null + async_flush_jobs async_sorin_git + + # 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 # Compute slow commands in the background. - trap prompt_sorin_git_info WINCH - prompt_sorin_precmd_async &! - _prompt_sorin_precmd_async_pid=$! + async_job async_sorin_git prompt_sorin_async_git "$PWD" } function prompt_sorin_setup { @@ -107,6 +94,7 @@ function prompt_sorin_setup { # 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 @@ -133,11 +121,19 @@ function prompt_sorin_setup { 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' '$(coalesce "%b" "%p" "%c")%s%A%B%S%a%d%m%r%U%u' + 'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u' + + # Get the async worker set up + async_start_worker async_sorin_git -n + async_register_callback async_sorin_git prompt_sorin_git_info + _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='' + RPROMPT='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' } From e364eac8f567376c602d7a992c6aa293d310f249 Mon Sep 17 00:00:00 2001 From: Stephen Larew Date: Sat, 22 Jul 2017 11:55:34 -0400 Subject: [PATCH 135/213] ssh: update README to reflect macOS changes --- modules/ssh/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/ssh/README.md b/modules/ssh/README.md index a0a69f06..a1727b9a 100644 --- a/modules/ssh/README.md +++ b/modules/ssh/README.md @@ -3,10 +3,6 @@ SSH Provides for an easier use of [SSH][1] by setting up [ssh-agent][2]. -This module is disabled on Mac OS X due to custom Apple SSH support rendering it -unnecessary. Use `ssh-add -K` to store identities in Keychain; they will be -added to `ssh-agent` automatically and persist between reboots. - Settings -------- From 0fc49ac4f0daba372ccc2162e97d284eaff15cd2 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 25 Jul 2017 03:07:59 -0600 Subject: [PATCH 136/213] Fix typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b31edd9f..f52a5835 100644 --- a/README.md +++ b/README.md @@ -57,9 +57,9 @@ Updating -------- Run `zprezto-update` to automatically check if there is an update to zprezto. -If there are no file conflicts, zprezto its submodules will be automatically -be updated. If there are conflicts you will instructed to go -into the `$ZPREZTODIR` directory and resolve them yourself. +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: From 7e7124e84a0fed90333065f7b6ce2a4dbf49cd1a Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 25 Jul 2017 14:15:04 -0700 Subject: [PATCH 137/213] Update agnoster prompt to include security fix Fixes #1267 --- modules/prompt/external/agnoster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster index f8ffdbfb..3ad94b65 160000 --- a/modules/prompt/external/agnoster +++ b/modules/prompt/external/agnoster @@ -1 +1 @@ -Subproject commit f8ffdbfbe2c2d8cd1350eae1b68367802fe6df26 +Subproject commit 3ad94b659910c775a6560c45b1524d23d8c83b09 From 19435b16eaf9af357da0bf547ded114f798d87ae Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Mon, 24 Jul 2017 19:34:11 -0500 Subject: [PATCH 138/213] [python] Improve and document `virtualenvwrapper` initialization flow Changes: * Simplify zstyle name `skip-virtualenvwrapper-init` to `initialize` avoiding double negation in name * Always perform `eval (pyenv virtualenv-init -)` at initialization * Prefer `virtualenvwrapper_lazy` over `virtualenvwrapper` when available * Honor `VIRTUALENVWRAPPER_VIRTUALENV` if it is defined. * Document about `VIRTUALENVWRAPPER_PYTHON` and `VIRTUALENVWRAPPER_VIRTUALENV` (this would be particularly important in macOS after recent homebrew update) * Add additional documentation for `initialize` in _README.md_ and _zpreztorc_ * Add aliases `py2`, `py3` as shortcut for `python2`, `python3` respectively --- modules/python/README.md | 24 +++++++++++++++++++++++ modules/python/init.zsh | 41 +++++++++++++++++++++++----------------- runcoms/zpreztorc | 3 +++ 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/modules/python/README.md b/modules/python/README.md index 992af3b0..d4cd5716 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -56,6 +56,20 @@ is used. Replace *Developer* with your projects directory. export PROJECT_HOME="$HOME/Developer" ``` +The variable `VIRTUALENVWRAPPER_PYTHON` tells virtualenvwrapper to use the +specified full path of `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 @@ -76,10 +90,20 @@ This can be enabled with: 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: + +``` +zstyle ':prezto:module:python:virtualenv' initialize 'no' +``` + Aliases ------- - `py` is short for `python`. + - `py2` is short for `python2`. + - `py3` is short for `python3`. Functions --------- diff --git a/modules/python/init.zsh b/modules/python/init.zsh index d95b28a6..759b903d 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -82,26 +82,32 @@ if zstyle -t ':prezto:module:python:virtualenv' auto-switch 'yes'; then add-zsh-hook chpwd _python-workon-cwd fi -# Load virtualenvwrapper into the shell session, unless requested not to -if zstyle -T ':prezto:module:python' skip-virtualenvwrapper-init; then +# 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. VIRTUAL_ENV_DISABLE_PROMPT=1 - if (( $+commands[pyenv-virtualenvwrapper] )); then - pyenv virtualenvwrapper - elif (( $+commands[pyenv-virtualenv-init] )); then - eval "$(pyenv virtualenv-init -)" - elif (( $+commands[virtualenvwrapper_lazy.sh] )); then - source "$commands[virtualenvwrapper_lazy.sh]" - elif (( $+commands[virtualenvwrapper.sh] )); then - source "$commands[virtualenvwrapper.sh]" - elif [[ -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ]]; then - source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh - elif [[ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]]; then - source /usr/share/virtualenvwrapper/virtualenvwrapper.sh + if (( $+commands[pyenv] )); then + if (( $+commands[pyenv-virtualenv-init] )); then + eval "$(pyenv virtualenv-init -)" + fi + if (( $#commands[(i)pyenv-virtualenvwrapper(_lazy|)] )); then + pyenv "${${(@O)commands[(I)pyenv-virtualenvwrapper(_lazy|)]}[1]#pyenv-}" + fi + else + # Try 'virtualenvwrapper' without 'pyenv' wrapper in '$path' and other + # known locations on a Debian based system. + virtenv_sources=( + ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} + /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) + ) + source "${virtenv_sources[1]}" + unset virtenv_sources fi fi @@ -109,7 +115,7 @@ fi if (( $#commands[(i)pip(|[23])] )); then cache_file="${0:h}/cache.zsh" - # Detect and use first one available among 'pip', 'pip2', 'pip3' variants + # Detect and use one available from among 'pip', 'pip2', 'pip3' variants pip_command="$commands[(i)pip(|[23])]" if [[ "$pip_command" -nt "$cache_file" || ! -s "$cache_file" ]]; then @@ -119,8 +125,7 @@ if (( $#commands[(i)pip(|[23])] )); then fi source "$cache_file" - unset cache_file - unset pip_command + unset cache_file pip_command fi # @@ -128,3 +133,5 @@ fi # alias py='python' +alias py2='python2' +alias py3='python3' diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 22b5b3d7..9a768df7 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -123,6 +123,9 @@ zstyle ':prezto:module:prompt' theme 'sorin' # 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' + # # Screen # From 9b6bf4a7cd0f05600fd5ea9c60d330136aebc666 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Wed, 26 Jul 2017 15:16:40 -0500 Subject: [PATCH 139/213] [completion] Support ignoring '/etc/hosts' entries in host completion Entries from static '/etc/hosts' can now be ignored via 'zstyle' based configuration. Both IP address and 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 ('~/.ssh/config') or history ('~/.ssh/ssh_hosts', '~/.ssh/known_hosts' etc.). --- modules/completion/README.md | 17 +++++++++++++++++ modules/completion/init.zsh | 9 +++++++-- runcoms/zpreztorc | 8 ++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/modules/completion/README.md b/modules/completion/README.md index aaa86fdd..7efb3d96 100644 --- a/modules/completion/README.md +++ b/modules/completion/README.md @@ -6,6 +6,23 @@ the [zsh-completions][1] project. This module must be loaded **after** the *utility* module. +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 ------------ diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index ca2117b4..e4f6a337 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -102,12 +102,17 @@ zstyle ':completion:*:history-words' menu yes # Environmental Variables zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} -# Populate hostname completion. +# 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' +etc_host_ignores=('\#' $etc_host_ignores) + zstyle -e ':completion:*:hosts' hosts 'reply=( ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } - ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} + ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%${(j:*|:)~etc_host_ignores}*} ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} )' +unset etc_host_ignores # Don't complete uninteresting users... zstyle ':completion:*:*:*:users' ignored-patterns \ diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 9a768df7..0b7a8376 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -41,6 +41,14 @@ zstyle ':prezto:load' pmodule \ # 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 # From 591d087ccc85e02e5321fa988bf2f7ecdd076839 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 27 Jul 2017 12:04:55 -0500 Subject: [PATCH 140/213] [completion] Allow ignores for '/etc/hosts' entries to be dynamic By keeping the variable `_etc_host_ignores` around, it can be resolved lazily which is turn should allow selective ignores on a per invocation basis. Also, `'\#'` doesn't need to be added to `_etc_host_ignores` anymore. It is enforced inline. --- modules/completion/init.zsh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index e4f6a337..8c509a68 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -104,15 +104,13 @@ zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-va # 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' -etc_host_ignores=('\#' $etc_host_ignores) +zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' zstyle -e ':completion:*:hosts' hosts 'reply=( ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } - ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%${(j:*|:)~etc_host_ignores}*} + ${=${(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 }:#*\**}:#*\?*}} )' -unset etc_host_ignores # Don't complete uninteresting users... zstyle ':completion:*:*:*:users' ignored-patterns \ From b3c7d21d31ba3f5b1444b1d20066377aae898542 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 28 Jul 2017 00:43:29 -0500 Subject: [PATCH 141/213] Adjust GitHub templates with commented lines --- .github/ISSUE_TEMPLATE.md | 9 ++++----- .github/PULL_REQUEST_TEMPLATE.md | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 444379c1..e39ca098 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,16 +1,15 @@ -Please check if a similar issue already exists or has been closed before before opening your issue. + ### Description - -[Description of the bug or feature] + ### Expected behavior -[What you expected to happen] + ### Actual behavior -[What actually happened] + ### Steps to Reproduce diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 2b2f70bf..b8548b6c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,5 @@ -Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) before submitting your pull request. +Please be sure to check out our [contributing guidelines](https://github.com/sorin-ionescu/prezto/blob/master/CONTRIBUTING.md) +before submitting your pull request. Fixes # From 3f556400e70a8003a484836b5c5d4a384468d1ca Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 28 Jul 2017 10:24:45 -0700 Subject: [PATCH 142/213] Avoid setting TMPDIR and make sure all modules handle that properly Fixes #1206 --- modules/gpg/init.zsh | 2 +- runcoms/zprofile | 13 ------------- runcoms/zshenv | 2 +- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh index f21c8cfb..3d80a46c 100644 --- a/modules/gpg/init.zsh +++ b/modules/gpg/init.zsh @@ -12,7 +12,7 @@ fi # Set the default paths to gpg-agent files. _gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf" -_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env" +_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID" # Start gpg-agent if not started. if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then diff --git a/runcoms/zprofile b/runcoms/zprofile index 04742d1f..b5eac2ee 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -61,16 +61,3 @@ export LESS='-F -g -i -M -R -S -w -X -z-4' if (( $#commands[(i)lesspipe(|.sh)] )); then export LESSOPEN="| /usr/bin/env $commands[(i)lesspipe(|.sh)] %s 2>&-" fi - -# -# Temporary Files -# -# -# Set TMPDIR if the variable is not set/empty or the directory doesn't exist -if [[ -z "${TMPDIR}" ]]; then - export TMPDIR="/tmp/zsh-${UID}" -fi - -if [[ ! -d "${TMPDIR}" ]]; then - mkdir -m 700 "${TMPDIR}" -fi diff --git a/runcoms/zshenv b/runcoms/zshenv index eb16f5d6..2dbf12a8 100644 --- a/runcoms/zshenv +++ b/runcoms/zshenv @@ -6,6 +6,6 @@ # # Ensure that a non-login, non-interactive shell has a defined environment. -if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN || -z "${TMPDIR}" ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then +if [[ ( "$SHLVL" -eq 1 && ! -o LOGIN ) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then source "${ZDOTDIR:-$HOME}/.zprofile" fi From 7b5196ca66a28c3555f3ab32b911d009277d49bd Mon Sep 17 00:00:00 2001 From: Mauro Locatelli Date: Thu, 27 Jul 2017 11:39:22 +0200 Subject: [PATCH 143/213] ssh: check ssh-askpass presence under Linux Check the presence of `ssh-askpass`, if `/usr/lib/ssh/x11-ssh-askpass` is present I use it otherwise I require the passphrase in the standard method --- modules/ssh/init.zsh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index 6c073321..c0316d24 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -39,10 +39,11 @@ 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' - if (( ${#_ssh_identities} > 0 )); then - ssh-add "$_ssh_dir/${^_ssh_identities[@]}" < /dev/null 2> /dev/null + # Check for Linux system and ssh-askpass presence + if [[ "$OSTYPE" == linux* ]] && [[ ! -a /usr/lib/ssh/x11-ssh-askpass ]]; then + ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" 2> /dev/null else - ssh-add < /dev/null 2> /dev/null + ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" < /dev/null 2> /dev/null fi fi From a60499f933c52f55dbb9c9f2f7d99cb82c3538de Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 4 Aug 2017 12:54:19 -0500 Subject: [PATCH 144/213] [general] Miscellaneous cleanup and formatting --- init.zsh | 2 +- modules/completion/init.zsh | 6 +++--- modules/git/functions/_git-hub-browse | 4 ++-- modules/git/functions/git-hub-browse | 2 +- modules/node/init.zsh | 2 +- modules/osx/functions/mand | 2 +- modules/osx/functions/pfd | 2 +- modules/osx/functions/tab | 8 ++++---- modules/perl/init.zsh | 3 +-- modules/prompt/functions/prompt_sorin_setup | 4 ++-- modules/terminal/init.zsh | 2 +- 11 files changed, 18 insertions(+), 19 deletions(-) diff --git a/init.zsh b/init.zsh index be565663..0c90299e 100644 --- a/init.zsh +++ b/init.zsh @@ -30,7 +30,7 @@ function zprezto-update { 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)" + 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}') diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 8c509a68..e2cc2d44 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -107,9 +107,9 @@ zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-va zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' zstyle -e ':completion:*:hosts' hosts 'reply=( - ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|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 }:#*\**}:#*\?*}} + ${=${=${=${${(f)"$(cat {/etc/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... diff --git a/modules/git/functions/_git-hub-browse b/modules/git/functions/_git-hub-browse index 54d223f2..9e6d6f0d 100644 --- a/modules/git/functions/_git-hub-browse +++ b/modules/git/functions/_git-hub-browse @@ -29,7 +29,7 @@ case "$state" in remote="$words[(($CURRENT - 1))]" branches_or_tags=($( - git ls-remote --heads --tags "$remote" 2>/dev/null | cut -f2 + git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2 )) branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/}) @@ -39,7 +39,7 @@ case "$state" in _describe -t tag 'tags' tags && ret=0 ;; (file) - files=(${(0)"$(_call_program files git ls-files -z --exclude-standard 2>/dev/null)"}) + files=(${(0)"$(_call_program files git ls-files -z --exclude-standard 2> /dev/null)"}) _wanted file expl 'file' _multi_parts - / files && ret=0 ;; esac diff --git a/modules/git/functions/git-hub-browse b/modules/git/functions/git-hub-browse index 4e7c314e..a365a5a9 100644 --- a/modules/git/functions/git-hub-browse +++ b/modules/git/functions/git-hub-browse @@ -39,7 +39,7 @@ if (( $references[(i)$reference] == $#references + 1 )); then fi if [[ "$reference" == 'HEAD' ]]; then - reference="$(git rev-parse HEAD 2>/dev/null)" + reference="$(git rev-parse HEAD 2> /dev/null)" fi file="$3" diff --git a/modules/node/init.zsh b/modules/node/init.zsh index c225b2fc..127dea72 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -11,7 +11,7 @@ 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 "$(brew --prefix nvm 2>/dev/null)" ]]; then +elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2> /dev/null)" ]]; then source "$(brew --prefix nvm)/nvm.sh" # Load manually installed nodenv into the shell session. diff --git a/modules/osx/functions/mand b/modules/osx/functions/mand index b8e958ee..2902c76b 100644 --- a/modules/osx/functions/mand +++ b/modules/osx/functions/mand @@ -8,7 +8,7 @@ function mand { if (( $# > 0 )); then zstyle -s ':prezto:module:osx:man' dash-keyword 'dashkw' || dashkw='manpages' - open "dash://$dashkw:$1" 2>/dev/null + open "dash://$dashkw:$1" 2> /dev/null if (( $? != 0 )); then print "$0: Dash is not installed" >&2 break diff --git a/modules/osx/functions/pfd b/modules/osx/functions/pfd index 41537698..264b40ba 100644 --- a/modules/osx/functions/pfd +++ b/modules/osx/functions/pfd @@ -7,7 +7,7 @@ # function pfd { -osascript 2>/dev/null < /dev/null < 0 )) && command="${command}; $*" the_app=$( - osascript 2>/dev/null < /dev/null </dev/null < /dev/null </dev/null < /dev/null </dev/null < /dev/null </dev/null + editor-info 2> /dev/null prompt_preview_theme 'sorin' } diff --git a/modules/terminal/init.zsh b/modules/terminal/init.zsh index c7b22b7a..2a5b9bed 100644 --- a/modules/terminal/init.zsh +++ b/modules/terminal/init.zsh @@ -49,7 +49,7 @@ function _terminal-set-titles-with-command { local -A jobtexts_from_parent_shell jobtexts_from_parent_shell=(${(kv)jobtexts}) - jobs "$job_name" 2>/dev/null > >( + 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}" From 8d7e3e27c7577175330241f0279a805c471d3bf8 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 4 Aug 2017 09:53:01 -0500 Subject: [PATCH 145/213] [python] Detect availability of virtualenv plugins as well as pyenv Just having 'pyenv' available doesn't imply availability of virtualenv pyenv plugins. Check for availability of virtualenv plugins as well before attempting to use pyenv wrapper for virtualenv. --- modules/python/init.zsh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 759b903d..715ca259 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -92,16 +92,16 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ # Disable the virtualenv prompt. VIRTUAL_ENV_DISABLE_PROMPT=1 - if (( $+commands[pyenv] )); then - if (( $+commands[pyenv-virtualenv-init] )); then - eval "$(pyenv virtualenv-init -)" - fi + # Enable 'virtualenv' with 'pyenv'. + if (( $+commands[pyenv] && $+commands[pyenv-virtualenv-init] )); then + eval "$(pyenv virtualenv-init -)" + # Optionall activate 'virtualenvwrapper' with 'pyenv' is available. if (( $#commands[(i)pyenv-virtualenvwrapper(_lazy|)] )); then pyenv "${${(@O)commands[(I)pyenv-virtualenvwrapper(_lazy|)]}[1]#pyenv-}" fi else - # Try 'virtualenvwrapper' without 'pyenv' wrapper in '$path' and other - # known locations on a Debian based system. + # Fallback to 'virtualenvwrapper' without 'pyenv' wrapper in '$path' + # and other known locations on a Debian based system. virtenv_sources=( ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) From 5e295b0835a724d0e94b5dc2aa9dbf17feacf70a Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Wed, 9 Aug 2017 15:07:38 -0500 Subject: [PATCH 146/213] [prompt] Remove spurious duplicate section Remove duplication 'Prompt Display Length' section. Also, adjust wrapping for `~`. --- modules/prompt/README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/modules/prompt/README.md b/modules/prompt/README.md index e106f2b8..f272f27f 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -19,21 +19,13 @@ 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) +following to 'long' (without `~` expansion) or 'full' (with `~` expansion) in *zpreztorc*. ```sh zstyle ':prezto:module:prompt' pwd-length 'short' ``` -### 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*. - - zstyle ':prezto:module:prompt' pwd-length 'short' - Theming ------- From 730fc4690e308208f591798ef992b9bb2f9e2134 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 10 Aug 2017 11:23:26 -0700 Subject: [PATCH 147/213] prompt: add sp option to prompt_setup functions This was a change in zsh 5.4.1 where prompt_sp is now reset on calls to prompt, unlike previous behavior where it was set by default. This restores the previous default behavior. Refs #1423, but is not a complete fix because we need to wait for external prompts to update as well. --- modules/prompt/functions/prompt_cloud_setup | 2 +- modules/prompt/functions/prompt_damoekri_setup | 2 +- modules/prompt/functions/prompt_giddie_setup | 2 +- modules/prompt/functions/prompt_kylewest_setup | 2 +- modules/prompt/functions/prompt_minimal_setup | 2 +- modules/prompt/functions/prompt_nicoulaj_setup | 2 +- modules/prompt/functions/prompt_paradox_setup | 2 +- modules/prompt/functions/prompt_peepcode_setup | 2 +- modules/prompt/functions/prompt_skwp_setup | 2 +- modules/prompt/functions/prompt_smiley_setup | 2 +- modules/prompt/functions/prompt_sorin_setup | 2 +- modules/prompt/functions/prompt_steeef_setup | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/prompt/functions/prompt_cloud_setup b/modules/prompt/functions/prompt_cloud_setup index 3b048df1..0637208b 100644 --- a/modules/prompt/functions/prompt_cloud_setup +++ b/modules/prompt/functions/prompt_cloud_setup @@ -76,7 +76,7 @@ function prompt_cloud_preview { function prompt_cloud_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Set the theme prefix to a cloud or to the user's given characters. if [[ -n "$1" ]]; then diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup index ca3b09ec..4fe132d6 100644 --- a/modules/prompt/functions/prompt_damoekri_setup +++ b/modules/prompt/functions/prompt_damoekri_setup @@ -32,7 +32,7 @@ prompt_damoekri_precmd() { function prompt_damoekri_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_giddie_setup b/modules/prompt/functions/prompt_giddie_setup index 5a14ffe0..3c194fb9 100644 --- a/modules/prompt/functions/prompt_giddie_setup +++ b/modules/prompt/functions/prompt_giddie_setup @@ -38,7 +38,7 @@ function prompt_giddie_precmd { function prompt_giddie_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz vcs_info diff --git a/modules/prompt/functions/prompt_kylewest_setup b/modules/prompt/functions/prompt_kylewest_setup index e4ee0c0e..70b6a54a 100644 --- a/modules/prompt/functions/prompt_kylewest_setup +++ b/modules/prompt/functions/prompt_kylewest_setup @@ -32,7 +32,7 @@ function prompt_kylewest_precmd { function prompt_kylewest_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_minimal_setup b/modules/prompt/functions/prompt_minimal_setup index 8c07e70e..7456ffdb 100644 --- a/modules/prompt/functions/prompt_minimal_setup +++ b/modules/prompt/functions/prompt_minimal_setup @@ -23,7 +23,7 @@ function prompt_minimal_precmd { function prompt_minimal_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_nicoulaj_setup b/modules/prompt/functions/prompt_nicoulaj_setup index 241c8b6e..447ba1f4 100644 --- a/modules/prompt/functions/prompt_nicoulaj_setup +++ b/modules/prompt/functions/prompt_nicoulaj_setup @@ -26,7 +26,7 @@ function prompt_nicoulaj_precmd { function prompt_nicoulaj_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index 088e77e4..4f19989d 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -107,7 +107,7 @@ function prompt_paradox_preexec { function prompt_paradox_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_peepcode_setup b/modules/prompt/functions/prompt_peepcode_setup index c70fb9a7..2081961c 100644 --- a/modules/prompt/functions/prompt_peepcode_setup +++ b/modules/prompt/functions/prompt_peepcode_setup @@ -25,7 +25,7 @@ function prompt_peepcode_precmd { function prompt_peepcode_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_skwp_setup b/modules/prompt/functions/prompt_skwp_setup index 1c8f0a90..f69dcddf 100644 --- a/modules/prompt/functions/prompt_skwp_setup +++ b/modules/prompt/functions/prompt_skwp_setup @@ -28,7 +28,7 @@ function prompt_skwp_precmd { function prompt_skwp_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup index 3066a2dc..3c78486d 100644 --- a/modules/prompt/functions/prompt_smiley_setup +++ b/modules/prompt/functions/prompt_smiley_setup @@ -36,7 +36,7 @@ function prompt_smiley_precmd { function prompt_smiley_setup { unsetopt XTRACE KSH_ARRAYS - prompt_opts=(percent subst) + prompt_opts=(percent sp subst) # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_smiley_precmd diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 9ecc1b09..6856de60 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -88,7 +88,7 @@ function prompt_sorin_precmd { function prompt_sorin_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) _prompt_sorin_precmd_async_pid=0 _prompt_sorin_precmd_async_data=$(mktemp "${TMPDIR:-/tmp}/sorin-prompt-async-XXXXXXXXXX") diff --git a/modules/prompt/functions/prompt_steeef_setup b/modules/prompt/functions/prompt_steeef_setup index 996331fd..b241f9aa 100644 --- a/modules/prompt/functions/prompt_steeef_setup +++ b/modules/prompt/functions/prompt_steeef_setup @@ -32,7 +32,7 @@ function prompt_steeef_precmd { function prompt_steeef_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) + prompt_opts=(cr percent sp subst) # Load required functions. autoload -Uz add-zsh-hook From 24e5e49ff299dab1e3f854c89009270fc8580e5c Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 10 Aug 2017 13:39:49 -0700 Subject: [PATCH 148/213] prompt: remove prompt_sp from prompt_smiley_setup as it is not needed --- modules/autosuggestions/external | 2 +- modules/prompt/external/agnoster | 2 +- modules/prompt/external/powerline | 2 +- modules/prompt/external/pure | 2 +- modules/prompt/functions/prompt_smiley_setup | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external index 2cb6eb6e..de795f7d 160000 --- a/modules/autosuggestions/external +++ b/modules/autosuggestions/external @@ -1 +1 @@ -Subproject commit 2cb6eb6e29852e64a146b0284275ecdc0661b082 +Subproject commit de795f7dd92382a8489bd355e1d1e648ecb4ad37 diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster index 3ad94b65..f740c1bf 160000 --- a/modules/prompt/external/agnoster +++ b/modules/prompt/external/agnoster @@ -1 +1 @@ -Subproject commit 3ad94b659910c775a6560c45b1524d23d8c83b09 +Subproject commit f740c1bf32dbca8c63293fd6c13998bb1d1988f2 diff --git a/modules/prompt/external/powerline b/modules/prompt/external/powerline index c48e4c69..c66beb01 160000 --- a/modules/prompt/external/powerline +++ b/modules/prompt/external/powerline @@ -1 +1 @@ -Subproject commit c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc +Subproject commit c66beb018948604d80419371a084590fade272ce diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure index 04fa7495..000a78b6 160000 --- a/modules/prompt/external/pure +++ b/modules/prompt/external/pure @@ -1 +1 @@ -Subproject commit 04fa7495cf8fe3aff8ce286d4517df15066b820a +Subproject commit 000a78b613e53ba7ac8f7770aa840cc2e528b7dd diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup index 3c78486d..3066a2dc 100644 --- a/modules/prompt/functions/prompt_smiley_setup +++ b/modules/prompt/functions/prompt_smiley_setup @@ -36,7 +36,7 @@ function prompt_smiley_precmd { function prompt_smiley_setup { unsetopt XTRACE KSH_ARRAYS - prompt_opts=(percent sp subst) + prompt_opts=(percent subst) # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_smiley_precmd From 2f867d6f22c5ca2e1855d7fa13e890c0f272f769 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 10 Aug 2017 16:21:46 -0700 Subject: [PATCH 149/213] Revert "prompt: remove prompt_sp from prompt_smiley_setup as it is not needed" This reverts commit 24e5e49ff299dab1e3f854c89009270fc8580e5c. --- modules/autosuggestions/external | 2 +- modules/prompt/external/agnoster | 2 +- modules/prompt/external/powerline | 2 +- modules/prompt/external/pure | 2 +- modules/prompt/functions/prompt_smiley_setup | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external index de795f7d..2cb6eb6e 160000 --- a/modules/autosuggestions/external +++ b/modules/autosuggestions/external @@ -1 +1 @@ -Subproject commit de795f7dd92382a8489bd355e1d1e648ecb4ad37 +Subproject commit 2cb6eb6e29852e64a146b0284275ecdc0661b082 diff --git a/modules/prompt/external/agnoster b/modules/prompt/external/agnoster index f740c1bf..3ad94b65 160000 --- a/modules/prompt/external/agnoster +++ b/modules/prompt/external/agnoster @@ -1 +1 @@ -Subproject commit f740c1bf32dbca8c63293fd6c13998bb1d1988f2 +Subproject commit 3ad94b659910c775a6560c45b1524d23d8c83b09 diff --git a/modules/prompt/external/powerline b/modules/prompt/external/powerline index c66beb01..c48e4c69 160000 --- a/modules/prompt/external/powerline +++ b/modules/prompt/external/powerline @@ -1 +1 @@ -Subproject commit c66beb018948604d80419371a084590fade272ce +Subproject commit c48e4c69ef5c368ea7cda961ed9d0e298a5ae1fc diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure index 000a78b6..04fa7495 160000 --- a/modules/prompt/external/pure +++ b/modules/prompt/external/pure @@ -1 +1 @@ -Subproject commit 000a78b613e53ba7ac8f7770aa840cc2e528b7dd +Subproject commit 04fa7495cf8fe3aff8ce286d4517df15066b820a diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup index 3066a2dc..3c78486d 100644 --- a/modules/prompt/functions/prompt_smiley_setup +++ b/modules/prompt/functions/prompt_smiley_setup @@ -36,7 +36,7 @@ function prompt_smiley_precmd { function prompt_smiley_setup { unsetopt XTRACE KSH_ARRAYS - prompt_opts=(percent subst) + prompt_opts=(percent sp subst) # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_smiley_precmd From dd1133d32eb559c66aa3b1f2aee8ad44a7e28942 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 10 Aug 2017 16:23:53 -0700 Subject: [PATCH 150/213] prompt: remove unneeded prompt_opts from smiley prompt --- modules/prompt/functions/prompt_smiley_setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup index 3c78486d..3066a2dc 100644 --- a/modules/prompt/functions/prompt_smiley_setup +++ b/modules/prompt/functions/prompt_smiley_setup @@ -36,7 +36,7 @@ function prompt_smiley_precmd { function prompt_smiley_setup { unsetopt XTRACE KSH_ARRAYS - prompt_opts=(percent sp subst) + prompt_opts=(percent subst) # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_smiley_precmd From e6af5f2e91199517bbcc486bd08a893cb80e0828 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Wed, 16 Aug 2017 11:47:58 -0700 Subject: [PATCH 151/213] Fix typo --- modules/editor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/README.md b/modules/editor/README.md index 1bc97692..c27e8642 100644 --- a/modules/editor/README.md +++ b/modules/editor/README.md @@ -87,7 +87,7 @@ 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 fear each keymap. +names of each of the keymaps, and just run the command for each keymap. Authors ------- From 9dfa8a67f6a4d667a8071eada5bce97f72737c5d Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Wed, 16 Aug 2017 14:57:54 -0700 Subject: [PATCH 152/213] Fix typo --- runcoms/zprofile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runcoms/zprofile b/runcoms/zprofile index b5eac2ee..acd77425 100644 --- a/runcoms/zprofile +++ b/runcoms/zprofile @@ -36,7 +36,7 @@ fi # Ensure path arrays do not contain duplicates. typeset -gU cdpath fpath mailpath path -# Set the the list of directories that cd searches. +# Set the list of directories that cd searches. # cdpath=( # $cdpath # ) From 3194442759d40e8b577615918340db332a3df589 Mon Sep 17 00:00:00 2001 From: Zach Whaley Date: Thu, 17 Aug 2017 15:37:08 -0500 Subject: [PATCH 153/213] Edit pyenv virtualenv-init check to support non-brew installations If the pyenv virtualenv plugin is installed using the [pyenv-installer][1] app script or directly via a [Git clone][2], then the pyenv-virtualenv-init executable, that the `pyenv virtualenv-init` command uses, will not exist in the user's PATH and therefore cannot be found using `$commands[pyenv-virtualenv-init]`. Installing the pyenv-virtualenv plugin in this manner is common among Linux users. Using the pyenv `commands` command, which lists all commands pyenv can run, we can find if the virtualenv-init command is available to pyenv and subsequently the virtualenv plugin, without relying on pyenv-virtualenv-init to exist in the user's PATH. [1]: https://github.com/pyenv/pyenv-installer [2]: https://github.com/pyenv/pyenv-virtualenv#installing-as-a-pyenv-plugin --- modules/python/init.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 715ca259..73637280 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -93,7 +93,9 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ VIRTUAL_ENV_DISABLE_PROMPT=1 # Enable 'virtualenv' with 'pyenv'. - if (( $+commands[pyenv] && $+commands[pyenv-virtualenv-init] )); then + if (( $+commands[pyenv] )) && \ + pyenv commands | command grep -q virtualenv-init + then eval "$(pyenv virtualenv-init -)" # Optionall activate 'virtualenvwrapper' with 'pyenv' is available. if (( $#commands[(i)pyenv-virtualenvwrapper(_lazy|)] )); then From 5b244eeadbfbd30b81fcd433f3e51072996c27c6 Mon Sep 17 00:00:00 2001 From: Jeef Date: Mon, 7 Aug 2017 15:02:20 -0400 Subject: [PATCH 154/213] Update prompt_sorin_setup Added python support --- modules/prompt/functions/prompt_sorin_setup | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 6856de60..74bd417a 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -81,6 +81,12 @@ function prompt_sorin_precmd { fi fi + + # Run python info (this should be fast and not require any async) + if (( $+functions[python-info] )); then + python-info + fi + # Compute slow commands in the background. async_job async_sorin_git prompt_sorin_async_git "$PWD" } @@ -123,6 +129,10 @@ function prompt_sorin_setup { zstyle ':prezto:module:git:info:keys' format \ 'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u' + + # Set python-info format + zstyle ':prezto:module:python:info:virtualenv' format '%f%F{208}(%v)%F{7}' + # Get the async worker set up async_start_worker async_sorin_git -n async_register_callback async_sorin_git prompt_sorin_git_info @@ -133,7 +143,7 @@ function prompt_sorin_setup { # 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='${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' + RPROMPT='$python_info[virtualenv] ${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_devel_git}' SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' } From 4c272a20f612ed81543ccb893ad3bc9d8bb76828 Mon Sep 17 00:00:00 2001 From: Jeef Date: Mon, 7 Aug 2017 15:17:51 -0400 Subject: [PATCH 155/213] Update prompt_sorin_setup Moved ` ` after the virtual env info into the `zstyle` call and out of `RPROMPT` --- modules/prompt/functions/prompt_sorin_setup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 74bd417a..d1d07ce7 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -131,7 +131,7 @@ function prompt_sorin_setup { # Set python-info format - zstyle ':prezto:module:python:info:virtualenv' format '%f%F{208}(%v)%F{7}' + zstyle ':prezto:module:python:info:virtualenv' format '%f%F{208}(%v)%F{7} ' # Get the async worker set up async_start_worker async_sorin_git -n @@ -143,7 +143,7 @@ function prompt_sorin_setup { # 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}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_devel_git}' + RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_devel_git}' SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' } From cab4ac54ece92bb6793c255fe2dc1851586a916e Mon Sep 17 00:00:00 2001 From: Jeef Date: Mon, 7 Aug 2017 19:03:02 -0400 Subject: [PATCH 156/213] Update prompt_sorin_setup Addressing a type - and switching from a custom orange to yellow (from default color list) for prompt. --- modules/prompt/functions/prompt_sorin_setup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index d1d07ce7..a6672a49 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -131,7 +131,7 @@ function prompt_sorin_setup { # Set python-info format - zstyle ':prezto:module:python:info:virtualenv' format '%f%F{208}(%v)%F{7} ' + zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} ' # Get the async worker set up async_start_worker async_sorin_git -n @@ -143,7 +143,7 @@ function prompt_sorin_setup { # 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}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_devel_git}' + RPROMPT='$python_info[virtualenv]${editor_info[overwrite]}%(?:: %F{1}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' SPROMPT='zsh: correct %F{1}%R%f to %F{2}%r%f [nyae]? ' } From 5ffc8a07f1a89146b7953b77569a3c50b0146889 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 18 Aug 2017 07:55:34 -0500 Subject: [PATCH 157/213] [python] Ensure availability of virtualenvwrapper file before sourcing it --- modules/python/init.zsh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 73637280..4b077706 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -108,7 +108,10 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) ) - source "${virtenv_sources[1]}" + if (( $#virtenv_sources )); then + source "${virtenv_sources[1]}" + fi + unset virtenv_sources fi fi From 83ab314b77d7e6bd92b7aed6275ad03018b378c1 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 17 Aug 2017 22:53:25 -0500 Subject: [PATCH 158/213] [python] Refine pyenv based virtualenv management Now that pyenv plugins availability is detected by directly probing 'pyenv', we need to rely on the same mechanism consistently. Further, we perform available pyenv plugin scan with native zsh techniques instead of relying on external commands. --- modules/python/init.zsh | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 4b077706..be484871 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -92,18 +92,25 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ # Disable the virtualenv prompt. VIRTUAL_ENV_DISABLE_PROMPT=1 - # Enable 'virtualenv' with 'pyenv'. - if (( $+commands[pyenv] )) && \ - pyenv commands | command grep -q virtualenv-init - then + # 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 -)" - # Optionall activate 'virtualenvwrapper' with 'pyenv' is available. - if (( $#commands[(i)pyenv-virtualenvwrapper(_lazy|)] )); then - pyenv "${${(@O)commands[(I)pyenv-virtualenvwrapper(_lazy|)]}[1]#pyenv-}" + + # 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 in '$path' - # and other known locations on a Debian based system. + # Fallback to 'virtualenvwrapper' without 'pyenv' wrapper if available + # in '$path' or in an alternative location on a Debian based system. virtenv_sources=( ${(@Ov)commands[(I)virtualenvwrapper(_lazy|).sh]} /usr/share/virtualenvwrapper/virtualenvwrapper(_lazy|).sh(OnN) @@ -114,6 +121,8 @@ if (( $+VIRTUALENVWRAPPER_VIRTUALENV || $+commands[virtualenv] )) && \ unset virtenv_sources fi + + unset pyenv_plugins fi # Load PIP completion. From 9c528efa607053eac234839e625cf5c3ec71751b Mon Sep 17 00:00:00 2001 From: Greg Anders Date: Sat, 26 Aug 2017 11:16:09 -0500 Subject: [PATCH 159/213] Explicitly set PYENV_ROOT --- modules/python/init.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/python/init.zsh b/modules/python/init.zsh index be484871..6f8ae7f1 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -9,10 +9,12 @@ # Load manually installed pyenv into the shell session. if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then path=("$HOME/.pyenv/bin" $path) + export PYENV_ROOT=$(pyenv root) eval "$(pyenv init -)" # Load package manager installed pyenv into the shell session. elif (( $+commands[pyenv] )); then + export PYENV_ROOT=$(pyenv root) eval "$(pyenv init -)" # Prepend PEP 370 per user site packages directory, which defaults to From a7fb175b20e89a17a4999681e34be35345f5652b Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Mon, 28 Aug 2017 22:17:45 -0400 Subject: [PATCH 160/213] Fix English mistakes in the autosuggestions module README.md (#1444) * Change 'conjuncture' to 'conjunction' * Fix ambiguous pronoun references --- modules/autosuggestions/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/autosuggestions/README.md b/modules/autosuggestions/README.md index a94d2ae6..4d18f916 100644 --- a/modules/autosuggestions/README.md +++ b/modules/autosuggestions/README.md @@ -11,11 +11,12 @@ Integrates [zsh-autosuggestions][1] into Prezto, which implements the of a previously entered command and Zsh suggests commands as you type based on history and completions. -If this module is used in conjuncture with the *syntax-highlighting* module, it -must be loaded **after** it. +If this module is used in conjunction with the *syntax-highlighting* module, +the *syntax-highlighting* module must be loaded **after** this module. -If this module is used in conjuncture with the *history-substring-search* -module, it must be loaded **after** it. +If this module is used in conjunction with the *history-substring-search* +module, the *history-substring-search* module must be loaded **after** this +module. Contributors ------------ From 98f37b3c2faf09b3d0b2387eacd40ff1c497bcde Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 14:13:39 -0700 Subject: [PATCH 161/213] Update reference to Bombich's rsync --- modules/rsync/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/rsync/README.md b/modules/rsync/README.md index a8c32e4d..b418780b 100644 --- a/modules/rsync/README.md +++ b/modules/rsync/README.md @@ -23,5 +23,5 @@ Authors - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: http://rsync.samba.org -[2]: https://bombich.com/kb/ccc4/credits#rsync +[2]: https://bombich.com/kb/ccc5/credits#rsync [3]: https://github.com/sorin-ionescu/prezto/issues From 58bcc43bf99ae01fac2e551c58d46dbb078ac77b Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 15:10:37 -0700 Subject: [PATCH 162/213] Fix typo --- modules/archive/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/archive/README.md b/modules/archive/README.md index 28a2c3b1..6df58d86 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -31,7 +31,7 @@ installed: - *.7z* requires `7za`. - *.deb* requires `ar`, `tar`. -Additionally, if `pigz' and/or `pbzip2` are installed, `archive` will use them over +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. From 8fa14ed72f58d14cc1d11a4b2a59edecd90188bc Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 16:04:44 -0700 Subject: [PATCH 163/213] Drop `easy_install` in docs, everyone now uses `pip` (#1436) --- modules/python/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/python/README.md b/modules/python/README.md index d4cd5716..bee2eb3b 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -28,8 +28,7 @@ documentation. ### Usage -Install packages into the per user site directory with `easy_install --user` or -`pip install --user`. +Install packages into the per user site directory with `pip install --user`. virtualenvwrapper ----------------- From 727f094b0fa8ca26f461a14200b1c241b8801c3a Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 16:47:06 -0700 Subject: [PATCH 164/213] [python] cleanup readme formatting Anyone want some backticks? :-) --- modules/python/README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/python/README.md b/modules/python/README.md index bee2eb3b..27d18e62 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -14,7 +14,7 @@ execution of `pyenv`. ### Usage -Install Python versions with `pyenv install` into *~/.pyenv/versions*. +Install Python versions with `pyenv install` into `~/.pyenv/versions`. Local Package Installation -------------------------- @@ -33,21 +33,21 @@ Install packages into the per user site directory with `pip install --user`. virtualenvwrapper ----------------- -[virtualenvwrapper][2] is a frontend to the popular [virtualenv][3] utility. +[`virtualenvwrapper`][2] is a frontend to the popular [`virtualenv`][3] utility. -virtualenv creates isolated Python environments and virtualenvwrapper provides +`virtualenv` creates isolated Python environments and `virtualenvwrapper` provides convenient shell functions to create, switch, and manage them. ### Usage -Install virtualenvwrapper. +Install `virtualenvwrapper`. -Virtual environments are stored in *~/.virtualenvs*. +Virtual environments are stored in `~/.virtualenvs`. There are configuration variables that have to be set to enable certain features. -If you wish to use these features, export the variables in *~/.zshenv* +If you wish to use these features, export the variables in [`zshenv`][6]. -The variable `$PROJECT_HOME` tells virtualenvwrapper where to place project +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. @@ -55,23 +55,23 @@ is used. Replace *Developer* with your projects directory. export PROJECT_HOME="$HOME/Developer" ``` -The variable `VIRTUALENVWRAPPER_PYTHON` tells virtualenvwrapper to use the -specified full path of `python` interpreter overriding the `$PATH` search. +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 +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 +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` to ensure that all new environments have access to the system site-packages directory. ```sh @@ -89,7 +89,7 @@ This can be enabled with: zstyle ':prezto:module:python:virtualenv' auto-switch 'yes' ``` -virtualenvwrapper is automatically initialized if pre-requisites are met +`virtualenvwrapper` is automatically initialized if pre-requisites are met (`$VIRTUALENVWRAPPER_VIRTUALENV` is explicitly set or `virtualenv` is in `$PATH`). This can be disabled with: @@ -135,3 +135,4 @@ Authors [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 From 38fb41d66ed6cfa69e337e987977046dcbd5f1d5 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 16:40:17 -0700 Subject: [PATCH 165/213] Use backticks rather than italics for paths This is more typical with what I observe elsewhere --- modules/ruby/README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/ruby/README.md b/modules/ruby/README.md index aa4ab645..12848d86 100644 --- a/modules/ruby/README.md +++ b/modules/ruby/README.md @@ -8,7 +8,7 @@ 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. +`~/.gems`; otherwise, they are installed according to the manager. RVM --- @@ -35,7 +35,7 @@ not known to cause conflicts with shell scripts. chruby ------ -Yet another alternative is [chruby][6], which is simpler than both RVM and +Yet another alternative is [chruby][4], which is simpler than both RVM and rbenv. ### Settings @@ -43,7 +43,7 @@ rbenv. #### Auto-Switch To enable auto switching the Ruby version on directory change based on the -.ruby-version file, add the following line to *zpreztorc*: +`.ruby-version` file, add the following line to [`zpreztorc`][5]: ```sh zstyle ':prezto:module:ruby:chruby' auto-switch 'yes' @@ -53,7 +53,7 @@ Bundler ------- Manage gems that are not meant to be used as commands, such as application -dependencies, with [Bundler][4]. +dependencies, with [Bundler][6]. Aliases ------- @@ -67,14 +67,14 @@ Aliases - `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 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*. + - 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*. + - `rbbp` packages gem files into `vendor/cache`. - `rbbu` updates gems to their latest version. Functions @@ -99,13 +99,14 @@ Then add `$ruby_info[version]` to `$PROMPT` or `$RPROMPT` and call Authors ------- -*The authors of this module should be contacted via the [issue tracker][5].* +*The authors of this module should be contacted via the [issue tracker][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]: http://gembundler.com -[5]: https://github.com/sorin-ionescu/prezto/issues -[6]: https://github.com/postmodern/chruby +[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 From 37c61a058c8ebbd98739505889f9f24f02e90a39 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 16:28:19 -0700 Subject: [PATCH 166/213] Document that `fasd` is now bundled with prezto Document that `fasd` is now bundled with prezto (19990c80252a588ef0983fe16c2f001391775af8) and that it's a fallback to a manually installed version (04bfb5131b63c626062af535a1c429f9ff303ca4). --- modules/fasd/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/fasd/README.md b/modules/fasd/README.md index 8d3cca14..cb3fc20b 100644 --- a/modules/fasd/README.md +++ b/modules/fasd/README.md @@ -15,8 +15,8 @@ been disabled. Installation ------------ -Since fasd is not an external module it needs to be installed. -`brew install fasd` +`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 ------- From 46de6fef773e1e02cc9550e5a8bf2a705e7d8e4d Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 16:13:38 -0700 Subject: [PATCH 167/213] Swap italics to code formatting and add hyperlink --- modules/environment/README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/environment/README.md b/modules/environment/README.md index b86cbc54..b0d579bb 100644 --- a/modules/environment/README.md +++ b/modules/environment/README.md @@ -13,13 +13,14 @@ Contributors This module **MUST NOT** rely on any command not built in Zsh. -Non-interactive environment variables should be defined in *zshenv*. +Non-interactive environment variables should be defined in [`zshenv`][1]. Authors ------- -*The authors of this module should be contacted via the [issue tracker][1].* +*The authors of this module should be contacted via the [issue tracker][2].* - [Sorin Ionescu](https://github.com/sorin-ionescu) -[1]: https://github.com/sorin-ionescu/prezto/issues +[1]: https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv +[2]: https://github.com/sorin-ionescu/prezto/issues From ba0cb8afd8c16b37f30c2e945400c836cfeb2148 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 15:00:41 -0700 Subject: [PATCH 168/213] Add missing highlighter to readme This was added to `.zpreztorc` in 4f19700919c8ebbaf75755fc0d03716d13183f49 but forgot to add it here. --- modules/syntax-highlighting/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/syntax-highlighting/README.md b/modules/syntax-highlighting/README.md index 67bbb200..5dad5bba 100644 --- a/modules/syntax-highlighting/README.md +++ b/modules/syntax-highlighting/README.md @@ -38,6 +38,7 @@ zstyle ':prezto:module:syntax-highlighting' highlighters \ 'main' \ 'brackets' \ 'pattern' \ + 'line' \ 'cursor' \ 'root' ``` From 6a8f1c6b16b7a8203ec8bc00628aa72dde669fdc Mon Sep 17 00:00:00 2001 From: Antoine Rahier Date: Thu, 31 Aug 2017 13:46:03 +0200 Subject: [PATCH 169/213] Add powerlevel9k theme --- .gitmodules | 3 +++ modules/prompt/external/powerlevel9k | 1 + modules/prompt/functions/prompt_powerlevel9k_setup | 1 + 3 files changed, 5 insertions(+) create mode 160000 modules/prompt/external/powerlevel9k create mode 120000 modules/prompt/functions/prompt_powerlevel9k_setup diff --git a/.gitmodules b/.gitmodules index 365b0592..051f2633 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "modules/prompt/external/async"] path = modules/prompt/external/async url = https://github.com/mafredri/zsh-async.git +[submodule "modules/prompt/external/powerlevel9k"] + path = modules/prompt/external/powerlevel9k + url = https://github.com/bhilburn/powerlevel9k.git diff --git a/modules/prompt/external/powerlevel9k b/modules/prompt/external/powerlevel9k new file mode 160000 index 00000000..688f6203 --- /dev/null +++ b/modules/prompt/external/powerlevel9k @@ -0,0 +1 @@ +Subproject commit 688f6203b4a1e048ee45bb9493069ab22840fd54 diff --git a/modules/prompt/functions/prompt_powerlevel9k_setup b/modules/prompt/functions/prompt_powerlevel9k_setup new file mode 120000 index 00000000..f692e0ae --- /dev/null +++ b/modules/prompt/functions/prompt_powerlevel9k_setup @@ -0,0 +1 @@ +../external/powerlevel9k/powerlevel9k.zsh-theme \ No newline at end of file From 76388a8cd11a858093b052fec04d7924d366af62 Mon Sep 17 00:00:00 2001 From: Antoine Rahier Date: Thu, 31 Aug 2017 21:09:34 +0200 Subject: [PATCH 170/213] Pin powerlevel9k submodule to latest release (v0.6.4) --- modules/prompt/external/powerlevel9k | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/powerlevel9k b/modules/prompt/external/powerlevel9k index 688f6203..17c069d2 160000 --- a/modules/prompt/external/powerlevel9k +++ b/modules/prompt/external/powerlevel9k @@ -1 +1 @@ -Subproject commit 688f6203b4a1e048ee45bb9493069ab22840fd54 +Subproject commit 17c069d25ac7b24af6b5dc7ecb9597cef881f582 From 808d9d3579270898b17b7dbf9d1ec91145aefd03 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 6 Sep 2017 11:11:19 -0700 Subject: [PATCH 171/213] Add zsh-help function for easily searching the zsh documentation (#1360) * Add zsh-help function for easily searching the zsh documentation Looks up things in the zsh documentation. Usage: zsh-help [--all] search term(s) Option --all will seach for the term anywhere, not just at the start of a line. When not using --all it will search nicely for terms at the beginning of the line, which in the zsh man pages is where terms that are explained are located, allowing you to search the zsh man pages easily. * Improve zsh-help to search section headings before other text 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. Clean up some of the code a bit and format it to have a proper header for the zprezto project with author/email and description of the function. --- modules/utility/functions/zsh-help | 102 +++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 modules/utility/functions/zsh-help diff --git a/modules/utility/functions/zsh-help b/modules/utility/functions/zsh-help new file mode 100644 index 00000000..f6605ea0 --- /dev/null +++ b/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 $? +#} From 2cfd366ba6fafbbb47215a45bc9629f709376e94 Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Wed, 6 Sep 2017 11:14:35 -0700 Subject: [PATCH 172/213] =?UTF-8?q?[prompt=5Fsorin]=20Use=20=E2=9C=98=20an?= =?UTF-8?q?d=20show=20return=20value=20for=20non-0=20rtrns=20(#1460)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If you do not want it to show the return code, you can set: `zstyle ':prezto:module:prompt' show-return-val false` --- modules/prompt/functions/prompt_sorin_setup | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index a6672a49..c2258867 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -129,10 +129,15 @@ function prompt_sorin_setup { zstyle ':prezto:module:git:info:keys' format \ 'status' '%b %p %c:%s%A%B%S%a%d%m%r%U%u' - + # Set up non-zero return value display + local show_return="✘ " + # Default is to show the return value + if zstyle -T ':prezto:module:prompt' show-return-val; then + show_return+='%? ' + fi # Set python-info format zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} ' - + # Get the async worker set up async_start_worker async_sorin_git -n async_register_callback async_sorin_git prompt_sorin_git_info @@ -143,7 +148,9 @@ function prompt_sorin_setup { # 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}⏎%f)${VIM:+" %B%F{6}V%f%b"}${_prompt_sorin_git}' + 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]? ' } From 34482cb325cfe8521f9dd462e956faf14d2d0ad8 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 6 Sep 2017 11:18:09 -0700 Subject: [PATCH 173/213] prompt: add documentation for return value display --- modules/prompt/README.md | 9 +++++++++ runcoms/zpreztorc | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/modules/prompt/README.md b/modules/prompt/README.md index f272f27f..4f9fd82c 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -26,6 +26,15 @@ in *zpreztorc*. 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 ------- diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 0b7a8376..cd92317f 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -117,6 +117,10 @@ zstyle ':prezto:module:prompt' theme 'sorin' # 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' + # # Ruby # From 3faaffe7e9de25d5c05b3b88c3d65d29b914139e Mon Sep 17 00:00:00 2001 From: Diego Rabatone Oliveira Date: Wed, 6 Sep 2017 10:03:48 -0300 Subject: [PATCH 174/213] Updating submodules Updating `completition`, prompt `async` and `syntax-highlighting`. All modules where checkout to their latest tag. --- modules/completion/external | 2 +- modules/prompt/external/async | 2 +- modules/syntax-highlighting/external | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/completion/external b/modules/completion/external index 89dcaeb5..2a30b05a 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit 89dcaeb5624eeceabf41cfc00e79cce35cfd722b +Subproject commit 2a30b05a5cf724a2d1c4c140c302dbf93f6aa6f6 diff --git a/modules/prompt/external/async b/modules/prompt/external/async index 28c7a644..d95adb7c 160000 --- a/modules/prompt/external/async +++ b/modules/prompt/external/async @@ -1 +1 @@ -Subproject commit 28c7a644227a5ad7249193525ef27734781f6a63 +Subproject commit d95adb7cb58ec9d45bf024951770d975e089ef1d diff --git a/modules/syntax-highlighting/external b/modules/syntax-highlighting/external index ad522a09..434af7b1 160000 --- a/modules/syntax-highlighting/external +++ b/modules/syntax-highlighting/external @@ -1 +1 @@ -Subproject commit ad522a091429ba180c930f84b2a023b40de4dbcc +Subproject commit 434af7b11dd33641231f1b48b8432e68eb472e46 From 34d4897d0e4573aee17bfdf5d564f16aeb94de86 Mon Sep 17 00:00:00 2001 From: Andrew Breckenridge Date: Wed, 6 Sep 2017 17:01:42 -0700 Subject: [PATCH 175/213] Updates outdate Mac OS X to macOS --- modules/utility/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index eeb850d5..a2b93be3 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -98,7 +98,7 @@ Aliases - `lu` lists sorted by date, most recent last, shows access time. - `sl` lists directory contents (`ls`). -### Mac OS X Everywhere +### macOS Everywhere - `o` opens files and directories (`open` or `xdg-open`). - `get` downloads files (`curl` or `wget`). From 00f1d92ed838fe7b75949c5eba19419728961b34 Mon Sep 17 00:00:00 2001 From: Damien Pollet Date: Fri, 8 Sep 2017 16:07:48 +0200 Subject: [PATCH 176/213] Fix typo in zprezto-update function --- init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.zsh b/init.zsh index 0c90299e..31cfc739 100644 --- a/init.zsh +++ b/init.zsh @@ -41,7 +41,7 @@ function zprezto-update { printf "There are no updates.\n" return 0 elif [[ $LOCAL == $BASE ]]; then - printf "There is an update availible. Trying to pull.\n\n" + 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 From 752f64f0852d369ab0970301fa55a565805df21e Mon Sep 17 00:00:00 2001 From: Samantha McVey Date: Fri, 8 Sep 2017 22:08:02 -0700 Subject: [PATCH 177/213] Bind more unbound keys in viins and vicmd to nothing Unbound keys in viins or vicmd mode have undefined results. Bind two more of these to nothing to avoid this. --- modules/editor/init.zsh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 40dbb8f0..e5fee927 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -28,9 +28,11 @@ WORDCHARS='*?_-.[]~&;!#$%^(){}<>' 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' + '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' "^?" @@ -305,6 +307,8 @@ unbound_keys=( "${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 From cd703d3c3c094e21fe2ce142601063f2920b479f Mon Sep 17 00:00:00 2001 From: Greg Anders Date: Thu, 24 Aug 2017 22:06:23 -0500 Subject: [PATCH 178/213] Add make to gnu-utility commands --- modules/gnu-utility/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gnu-utility/init.zsh b/modules/gnu-utility/init.zsh index 65560324..5df4fe33 100644 --- a/modules/gnu-utility/init.zsh +++ b/modules/gnu-utility/init.zsh @@ -42,7 +42,7 @@ _gnu_utility_cmds=( 'libtool' 'libtoolize' # Miscellaneous - 'getopt' 'grep' 'indent' 'sed' 'tar' 'time' 'units' 'which' + 'getopt' 'grep' 'indent' 'make' 'sed' 'tar' 'time' 'units' 'which' ) # Wrap GNU utilities in functions. From 9520f1be6f8ef13cdf599df09a286d21ec034dc7 Mon Sep 17 00:00:00 2001 From: Nicola Corna Date: Tue, 19 Sep 2017 01:27:31 +0200 Subject: [PATCH 179/213] archive: fix unrar-free and add support for unar (#1383) * archive: fix unrar check when using unrar-free unrar-free returns the error code 1 when run without arguments, thus failing the presence check. Replacing the current presence check with (( $+commands[unrar] )) fixes the problem. * archive: add unar support for lsarchive and unarchive No `archive` support with unar. --- modules/archive/README.md | 2 +- modules/archive/functions/lsarchive | 8 +++++--- modules/archive/functions/unarchive | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/archive/README.md b/modules/archive/README.md index 6df58d86..c2ab938a 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -27,7 +27,7 @@ installed: - *.lzma* requires `unlzma`. - *.Z* requires `uncompress`. - *.zip*, *.jar* requires `unzip`. - - *.rar* requires `unrar` or `rar`. + - *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`. - *.7z* requires `7za`. - *.deb* requires `ar`, `tar`. diff --git a/modules/archive/functions/lsarchive b/modules/archive/functions/lsarchive index d2bd8341..7f892d1f 100644 --- a/modules/archive/functions/lsarchive +++ b/modules/archive/functions/lsarchive @@ -43,9 +43,11 @@ while (( $# > 0 )); do || lzcat "$1" | tar x${verbose:+v}f - ;; (*.tar) tar t${verbose:+v}f "$1" ;; (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; - (*.rar) unrar &> /dev/null \ - && unrar ${${verbose:+v}:-l} "$1" \ - || rar ${${verbose:+v}:-l} "$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 diff --git a/modules/archive/functions/unarchive b/modules/archive/functions/unarchive index c9ed1488..53a24dd7 100644 --- a/modules/archive/functions/unarchive +++ b/modules/archive/functions/unarchive @@ -57,9 +57,11 @@ while (( $# > 0 )); do (*.lzma) unlzma "$1" ;; (*.Z) uncompress "$1" ;; (*.zip|*.jar) unzip "$1" -d $extract_dir ;; - (*.rar) unrar &> /dev/null \ - && unrar x -ad "$1" \ - || rar x -ad "$1" ;; + (*.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" From 1d0bee60989602c921251ab259327a2cf11b90d3 Mon Sep 17 00:00:00 2001 From: sergiorussia Date: Tue, 19 Sep 2017 10:38:24 +0300 Subject: [PATCH 180/213] Fix README.md for autosuggestions and history-substring-search (#1471) --- modules/autosuggestions/README.md | 4 ++-- modules/history-substring-search/README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/autosuggestions/README.md b/modules/autosuggestions/README.md index 4d18f916..ad0f7ece 100644 --- a/modules/autosuggestions/README.md +++ b/modules/autosuggestions/README.md @@ -12,10 +12,10 @@ 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, -the *syntax-highlighting* module must be loaded **after** this module. +this module must be loaded **after** the *syntax-highlighting* module. If this module is used in conjunction with the *history-substring-search* -module, the *history-substring-search* module must be loaded **after** this +module, this module must be loaded **after** the *history-substring-search* module. Contributors diff --git a/modules/history-substring-search/README.md b/modules/history-substring-search/README.md index 0da63dcc..050a5c2e 100644 --- a/modules/history-substring-search/README.md +++ b/modules/history-substring-search/README.md @@ -6,8 +6,8 @@ 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 conjuncture with the *syntax-highlighting* module, it -must be loaded **after** it. +If this module is used in conjunction with the *syntax-highlighting* module, +this module must be loaded **after** the *syntax-highlighting* module. Contributors ------------ From 63310f6403474e8b5c586627edf97b16c6e41aa4 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 4 Oct 2017 11:27:55 -0700 Subject: [PATCH 181/213] ssh: update SSH_ASKPASS workaround to more closely match what ssh-add needs Fixes #1478 --- modules/ssh/init.zsh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index c0316d24..6e37b698 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -39,11 +39,20 @@ 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' - # Check for Linux system and ssh-askpass presence - if [[ "$OSTYPE" == linux* ]] && [[ ! -a /usr/lib/ssh/x11-ssh-askpass ]]; then - ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" 2> /dev/null + # 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[@]}}" < /dev/null 2> /dev/null + ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" 2> /dev/null fi fi From 25d8db301d5939040ff4aa6e7211d27e74f2d0d9 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Mon, 9 Oct 2017 14:13:00 -0400 Subject: [PATCH 182/213] Clarify that brewu updates AND upgrades As homebrew includes both an update and upgrade command, it is beneficial to clarify that this performs both, rather than just the update. --- modules/homebrew/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/homebrew/README.md b/modules/homebrew/README.md index 98019fdf..98a3444c 100644 --- a/modules/homebrew/README.md +++ b/modules/homebrew/README.md @@ -14,7 +14,7 @@ Aliases - `brewl` lists installed formulae. - `brewo` lists brews which have an update available. - `brews` searches for a formula. - - `brewu` updates Homebrew and formulae. + - `brewu` updates and upgrades Homebrew packages and formulae. - `brewx` uninstalls a formula. ### Homebrew Cask From 6d5650eae78ca05256e4bad5e66b47aec1758b40 Mon Sep 17 00:00:00 2001 From: Manoel Vilela Date: Sat, 14 Oct 2017 06:50:50 -0300 Subject: [PATCH 183/213] [tmux] Avoid run tmux when the shell is executed on emacs This avoid weird bugs to try running zsh through C-x M-x and bug happens because obviously tmux is not designed to be executed inside emacs. --- modules/tmux/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index 720fb04d..a361a6a6 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -23,7 +23,7 @@ if ([[ "$TERM_PROGRAM" = 'iTerm.app' ]] && \ _tmux_iterm_integration='-CC' fi -if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" ]] && ( \ +if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" ]] && ( \ ( [[ -n "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' remote ) || ( [[ -z "$SSH_TTY" ]] && zstyle -t ':prezto:module:tmux:auto-start' local ) \ ); then From fb903cb0677f938a7c46a7e4aef92ad677593eb2 Mon Sep 17 00:00:00 2001 From: Jeff Widman Date: Tue, 29 Aug 2017 15:56:04 -0700 Subject: [PATCH 184/213] Document support for macOS This adds docs for b0c85eddf6bee4d75ca9920c9c6180ab7ff1962a which was added in https://github.com/sorin-ionescu/prezto/pull/1376/ --- modules/command-not-found/README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/command-not-found/README.md b/modules/command-not-found/README.md index e969b71a..7775c926 100644 --- a/modules/command-not-found/README.md +++ b/modules/command-not-found/README.md @@ -1,15 +1,23 @@ Command-Not-Found ================= -Displays installation information for not found commands by loading the -[command-not-found][1] tool on Debian-based and Arch Linux-based distributions. +When you try to use a command that is not available locally, searches +the package manager for a package offering that command and suggests +the proper install command. + +Debian-based and Arch Linux-based distributions use the [`command-not-found`][1] tool. + +macOS uses Homebrew's [`command-not-found` clone][2]. Note that you also need to [follow the instructions to tap the `command-not-found` homebrew repository][3]. + Authors ------- -*The authors of this module should be contacted via the [issue tracker][2].* +*The authors of this module should be contacted via the [issue tracker][4].* - [Joseph Booker](https://github.com/sargas) [1]: https://code.launchpad.net/command-not-found -[2]: https://github.com/sorin-ionescu/prezto/issues +[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 From b5d09e2da794086ab5715f3fdda2e9c4b6dd3d9d Mon Sep 17 00:00:00 2001 From: Parth Laxmikant Kolekar Date: Fri, 20 Oct 2017 23:08:48 +0530 Subject: [PATCH 185/213] Lower requirements down to 4.3.11 again (#1491) There was an update with the syntax-highlighting module which fixed compatibility with 4.3.11. --- README.md | 2 +- init.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f52a5835..f263a175 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Installation ------------ Prezto will work with any recent release of Zsh, but the minimum required -version is 4.3.17. +version is 4.3.11. 1. Launch Zsh: diff --git a/init.zsh b/init.zsh index 31cfc739..67a07cb6 100644 --- a/init.zsh +++ b/init.zsh @@ -10,7 +10,7 @@ # # Check for the minimum supported version. -min_zsh_version='4.3.17' +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 From 109864429cea5763e57c77f060835bfcdbefb09f Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Wed, 18 Oct 2017 17:30:16 -0700 Subject: [PATCH 186/213] ssh: fix loading of ssh identities when none are explicitly defined --- modules/ssh/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index 6e37b698..08edce57 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -50,9 +50,9 @@ if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then # program specified by SSH_ASKPASS and open an X11 window to read the # passphrase. if [[ -n "$DISPLAY" && -x "$SSH_ASKPASS" ]]; then - ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" < /dev/null 2> /dev/null + ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} < /dev/null 2> /dev/null else - ssh-add "${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}}" 2> /dev/null + ssh-add ${_ssh_identities:+$_ssh_dir/${^_ssh_identities[@]}} 2> /dev/null fi fi From cbcbedd69456376afec55881ef1beee1394eac87 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 24 Oct 2017 12:52:32 -0700 Subject: [PATCH 187/213] prompt: Add basic troubleshooting information for fonts This is related to #1495 and a number of other issues which have been filed about font issues. --- modules/prompt/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/prompt/README.md b/modules/prompt/README.md index 4f9fd82c..523c83e9 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -130,6 +130,18 @@ function prompt_name_precmd { } ``` +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 ------- @@ -140,3 +152,5 @@ Authors [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 From 87d39f5dd2965d38bd9b66fd31e5d6b4593f53ed Mon Sep 17 00:00:00 2001 From: Parth Laxmikant Kolekar Date: Thu, 26 Oct 2017 22:54:26 +0530 Subject: [PATCH 188/213] Update init.zsh It seems that my older git does not support '@' yet. --- init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.zsh b/init.zsh index 67a07cb6..18525ca8 100644 --- a/init.zsh +++ b/init.zsh @@ -34,9 +34,9 @@ function zprezto-update { if [[ "$orig_branch" == "master" ]]; then git fetch || return "$?" local UPSTREAM=$(git rev-parse '@{u}') - local LOCAL=$(git rev-parse @) + local LOCAL=$(git rev-parse HEAD) local REMOTE=$(git rev-parse "$UPSTREAM") - local BASE=$(git merge-base @ "$UPSTREAM") + local BASE=$(git merge-base HEAD "$UPSTREAM") if [[ $LOCAL == $REMOTE ]]; then printf "There are no updates.\n" return 0 From 4b0ecffacadec6c9553be894cdcd36ecafac7662 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sun, 29 Oct 2017 23:32:11 -0700 Subject: [PATCH 189/213] prompt: update pure to 1.6.0 Refs #1487 --- modules/prompt/external/pure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure index 04fa7495..a95d55cc 160000 --- a/modules/prompt/external/pure +++ b/modules/prompt/external/pure @@ -1 +1 @@ -Subproject commit 04fa7495cf8fe3aff8ce286d4517df15066b820a +Subproject commit a95d55cc7d3a73fc562ac11e23c26113ed6d58cf From ff9b9013947f210bc121018ea7911f621c1f791b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20VANTOMME?= Date: Thu, 2 Nov 2017 01:00:32 +0100 Subject: [PATCH 190/213] Set key binding (^space) to expand all aliases including global (#1500) --- modules/editor/init.zsh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index e5fee927..415d6530 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -226,6 +226,14 @@ function prepend-sudo { } zle -N prepend-sudo +# Expand aliases +function glob-alias { + zle _expand_alias + zle expand-word + zle magic-space +} +zle -N glob-alias + # Reset to default key bindings. bindkey -d @@ -368,6 +376,9 @@ for keymap in 'emacs' 'viins'; do # 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 From 7ebb5e9ddaedf15bd261772119268076f8965489 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Mon, 6 Nov 2017 11:58:05 -0800 Subject: [PATCH 191/213] environment: Fix logic around url quoting in zsh >= 5.1 Closes #1015, Fixes #978 Thanks to @Eriner for pointing us in right direction. The code for this comes from zim. This is the last commit with the code we're using: https://github.com/Eriner/zim/commit/537f07660376f6fd0b8103ee993bfc132ddcee90#diff-30465d78a41f73dc0f6967d3f34d7964 Note that we need this workaround because we currently support back to 4.3.11. I believe that originally came from here: https://github.com/robbyrussell/oh-my-zsh/pull/4473 --- modules/environment/init.zsh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh index 76655a6c..e77a107c 100644 --- a/modules/environment/init.zsh +++ b/modules/environment/init.zsh @@ -9,8 +9,24 @@ # Smart URLs # -autoload -Uz url-quote-magic -zle -N self-insert url-quote-magic +# 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 ]]; 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 From c7dcd21c9e557ca243bc213a711a18a7f38d5d56 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Thu, 9 Nov 2017 13:55:20 -0800 Subject: [PATCH 192/213] Don't show ruby info if using system version Based off https://github.com/chauncey-garrett/zsh-prezto/commit/a8fe1b3cb42c2a44349fa373ade5b46d5b9a57ee by @chauncey-garrett --- modules/ruby/functions/ruby-info | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ruby/functions/ruby-info b/modules/ruby/functions/ruby-info index d53435b4..7e64c279 100644 --- a/modules/ruby/functions/ruby-info +++ b/modules/ruby/functions/ruby-info @@ -20,6 +20,9 @@ if (( $+commands[rvm-prompt] )); then version="$(rvm-prompt)" elif (( $+commands[rbenv] )); then version="$(rbenv version-name)" + if [[ $version == "system" ]]; then + version="" + fi elif (( $+commands[ruby] )); then version="${${$(ruby --version)[(w)1,(w)2]}/ /-}" fi From 485ad9e704d9c912922cdabd951e1e0ec185ddc2 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 10 Nov 2017 10:38:15 -0800 Subject: [PATCH 193/213] Add Alternatives section to archive module README (Fixes #705) --- modules/archive/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/archive/README.md b/modules/archive/README.md index c2ab938a..600ff15d 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -35,6 +35,12 @@ Additionally, if `pigz` and/or `pbzip2` are installed, `archive` will use them o 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 ------- @@ -43,4 +49,4 @@ Authors - [Sorin Ionescu](https://github.com/sorin-ionescu) - [Matt Hamilton](https://github.com/Eriner) -[1]: https://github.com/sorin-ionescu/prezto/issues +[1]: https://theunarchiver.com/command-line From 79927ac73ad69e1cf69c1ee92a0fbd34e54321ac Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 10 Nov 2017 11:06:50 -0800 Subject: [PATCH 194/213] editor: Fix Home and End in vicmd mode Fixes #1160 --- modules/editor/init.zsh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 415d6530..96c87863 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -322,18 +322,24 @@ for keymap in $unbound_keys; do bindkey -M viins "${keymap}" _prezto-zle-noop bindkey -M vicmd "${keymap}" _prezto-zle-noop done -# Ctrl + Left and Ctrl + Right bindings to forward/backward word + +# 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[Home]" beginning-of-line - bindkey -M "$keymap" "$key_info[End]" end-of-line - 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 From 948d9b3aa51f9bbf320649801565dc9164181e5c Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 10 Nov 2017 11:37:11 -0800 Subject: [PATCH 195/213] Store cache files in a user-writable location Fixes #1122 --- modules/fasd/init.zsh | 2 +- modules/node/init.zsh | 2 +- modules/perl/init.zsh | 2 +- modules/python/init.zsh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/fasd/init.zsh b/modules/fasd/init.zsh index 44d62975..113a8716 100644 --- a/modules/fasd/init.zsh +++ b/modules/fasd/init.zsh @@ -19,7 +19,7 @@ fi # Initialization # -cache_file="${0:h}/cache.zsh" +cache_file="${TMPDIR:-/tmp}/prezto-fasd-cache.$UID.zsh" if [[ "${commands[fasd]}" -nt "$cache_file" || ! -s "$cache_file" ]]; then # Set the base init arguments. init_args=(zsh-hook) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 127dea72..578c6424 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -30,7 +30,7 @@ fi # Load NPM completion. if (( $+commands[npm] )); then - cache_file="${0:h}/cache.zsh" + cache_file="${TMPDIR:-/tmp}/prezto-node-cache.$UID.zsh" if [[ "$commands[npm]" -nt "$cache_file" || ! -s "$cache_file" ]]; then # npm is slow; cache its output. diff --git a/modules/perl/init.zsh b/modules/perl/init.zsh index 1624fbf9..ffd5f0df 100644 --- a/modules/perl/init.zsh +++ b/modules/perl/init.zsh @@ -39,7 +39,7 @@ fi if [[ "$OSTYPE" == darwin* ]]; then # Perl is slow; cache its output. - cache_file="${0:h}/cache.zsh" + 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 diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 6f8ae7f1..7aad5975 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -129,7 +129,7 @@ fi # Load PIP completion. if (( $#commands[(i)pip(|[23])] )); then - cache_file="${0:h}/cache.zsh" + cache_file="${TMPDIR:-/tmp}/prezto-python-cache.$UID.zsh" # Detect and use one available from among 'pip', 'pip2', 'pip3' variants pip_command="$commands[(i)pip(|[23])]" From 105e9658bb7a907b8f1d6080dc07aecb5058592d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 10 Nov 2017 11:54:51 -0800 Subject: [PATCH 196/213] gnu-utility: avoid overriding shell builtins Fixes #1263 --- modules/gnu-utility/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/gnu-utility/init.zsh b/modules/gnu-utility/init.zsh index 5df4fe33..cbf9a4ba 100644 --- a/modules/gnu-utility/init.zsh +++ b/modules/gnu-utility/init.zsh @@ -48,7 +48,7 @@ _gnu_utility_cmds=( # 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}]} )); then + if (( ${+commands[${_gnu_utility_pcmd}]} && ! ${+builtins[${_gnu_utility_cmd}]} )); then eval " function ${_gnu_utility_cmd} { '${commands[${_gnu_utility_pcmd}]}' \"\$@\" From f02dc1af5729db6749b4d9d71b8066036dfcec63 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 10 Nov 2017 12:23:37 -0800 Subject: [PATCH 197/213] gpg: potential fix for #1252 --- modules/gpg/init.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh index 3d80a46c..7976fd7d 100644 --- a/modules/gpg/init.zsh +++ b/modules/gpg/init.zsh @@ -14,11 +14,11 @@ fi _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 - # Export environment variables. - source "$_gpg_agent_env" 2> /dev/null - # 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")" From e159c1a439a648e2805898fbcd86227fa701ec0f Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 11 Nov 2017 15:18:31 -0800 Subject: [PATCH 198/213] prompt: update sorin prompt async usage to be closer to pure --- modules/prompt/functions/prompt_sorin_setup | 69 ++++++++++++--------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index c2258867..b070c56c 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -32,25 +32,29 @@ # Load dependencies. pmodload 'helper' -function prompt_sorin_git_info { - # 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 +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 { @@ -61,6 +65,22 @@ function prompt_sorin_async_git { 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 async_sorin_git + + # Compute slow commands in the background. + async_job async_sorin_git prompt_sorin_async_git "$PWD" +} + function prompt_sorin_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS @@ -68,9 +88,6 @@ function prompt_sorin_precmd { # Format PWD. _prompt_sorin_pwd=$(prompt-pwd) - # Kill the old process of slow commands if it is still running. - async_flush_jobs async_sorin_git - # 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 @@ -81,14 +98,12 @@ function prompt_sorin_precmd { fi fi - # Run python info (this should be fast and not require any async) if (( $+functions[python-info] )); then python-info fi - - # Compute slow commands in the background. - async_job async_sorin_git prompt_sorin_async_git "$PWD" + + prompt_sorin_async_tasks } function prompt_sorin_setup { @@ -139,8 +154,6 @@ function prompt_sorin_setup { zstyle ':prezto:module:python:info:virtualenv' format '%f%F{3}(%v)%F{7} ' # Get the async worker set up - async_start_worker async_sorin_git -n - async_register_callback async_sorin_git prompt_sorin_git_info _sorin_cur_git_root='' _prompt_sorin_git='' From ad79f78fbe143e38be421733713e562eccca018b Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sat, 11 Nov 2017 20:56:59 -0800 Subject: [PATCH 199/213] prompt: fix async usage in sorin prompt Fixes #1509 --- modules/prompt/functions/prompt_sorin_setup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index b070c56c..30e71a92 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -75,10 +75,10 @@ function prompt_sorin_async_tasks { fi # Kill the old process of slow commands if it is still running. - async_flush_jobs async_sorin_git + async_flush_jobs prompt_sorin # Compute slow commands in the background. - async_job async_sorin_git prompt_sorin_async_git "$PWD" + async_job prompt_sorin prompt_sorin_async_git "$PWD" } function prompt_sorin_precmd { From ce349dff81c6ca1f636c3ca9118d4d60b56617cd Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sun, 12 Nov 2017 16:01:39 -0800 Subject: [PATCH 200/213] Allow modules to be loaded from multiple places (#1458) * Allow modules to be loaded from multiple places * Add setting for user specified module dirs This is initial work for the contrib repo, mentioned in #1424 --- .gitignore | 1 + init.zsh | 62 ++++++++++++++++++++++++++++++++--------------- runcoms/zpreztorc | 3 +++ 3 files changed, 46 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index e05465fe..05e53b63 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.zwc *.zwc.old modules/*/cache.zsh +contrib diff --git a/init.zsh b/init.zsh index 18525ca8..66ac1b17 100644 --- a/init.zsh +++ b/init.zsh @@ -72,35 +72,57 @@ function zprezto-update { # 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)' - # $argv is overridden in the anonymous function. - pmodules=("$argv[@]") - - # Add functions to $fpath. - fpath=(${pmodules:+$ZPREZTODIR/modules/${^pmodules}/functions(/FN)} $fpath) - - function { - local pfunction + # 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 - # Extended globbing is needed for listing autoloadable function directories. - setopt LOCAL_OPTIONS EXTENDED_GLOB + pmodule_dirs=("$ZPREZTODIR/modules" "$ZPREZTODIR/contrib" "$user_pmodule_dirs[@]") - # Load Prezto functions. - for pfunction in $ZPREZTODIR/modules/${^pmodules}/functions/$~pfunction_glob; do - autoload -Uz "$pfunction" - done - } + # $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 - elif [[ ! -d "$ZPREZTODIR/modules/$pmodule" ]]; then - print "$0: no such module: $pmodule" >&2 - 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 "$ZPREZTODIR/modules/$pmodule/init.zsh" ]]; then source "$ZPREZTODIR/modules/$pmodule/init.zsh" fi @@ -109,7 +131,7 @@ function pmodload { zstyle ":prezto:module:$pmodule" loaded 'yes' else # Remove the $fpath entry. - fpath[(r)${ZPREZTODIR}/modules/${pmodule}/functions]=() + fpath[(r)${pmodule_location}/functions]=() function { local pfunction @@ -119,7 +141,7 @@ function pmodload { setopt LOCAL_OPTIONS EXTENDED_GLOB # Unload Prezto functions. - for pfunction in $ZPREZTODIR/modules/$pmodule/functions/$~pfunction_glob; do + for pfunction in ${pmodule_location}/functions/$~pfunction_glob; do unfunction "$pfunction" done } diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index cd92317f..c1091555 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -15,6 +15,9 @@ # 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' From 96bbb31cc814d415d974bf0229aa88f3215ce481 Mon Sep 17 00:00:00 2001 From: ickc Date: Sun, 12 Nov 2017 16:20:52 -0800 Subject: [PATCH 201/213] Added conda virtualenv support to python module. (#1505) * Added conda virtualenv support to python module * Added instructions for Python module options to README Thanks to @egpbos for the original feature and @ickc for fixing the merge conflicts. --- modules/python/README.md | 13 +++++++++++++ modules/python/functions/python-info | 8 ++++++++ modules/python/init.zsh | 14 ++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/modules/python/README.md b/modules/python/README.md index 27d18e62..900158d6 100644 --- a/modules/python/README.md +++ b/modules/python/README.md @@ -3,6 +3,19 @@ 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*. + + zstyle ':prezto:module:python' skip-virtualenvwrapper-init 'on' + +Conda support is enabled by adding the following to *zpreztorc*. + + zstyle ':prezto:module:python' conda-init 'on' + +Caution: using conda and virtualenvwrapper at the same time may cause conflicts. + Local Python Installation ------------------------- diff --git a/modules/python/functions/python-info b/modules/python/functions/python-info index a616814c..ccca9948 100644 --- a/modules/python/functions/python-info +++ b/modules/python/functions/python-info @@ -4,6 +4,7 @@ # # Authors: # Sorin Ionescu +# Patrick Bos # # function python-info { @@ -22,4 +23,11 @@ if [[ -n "$VIRTUAL_ENV" ]]; then python_info[virtualenv]="$virtualenv_formatted" fi +# Do the same for Conda virtual environments +if [[ -n "$CONDA_DEFAULT_ENV" ]]; then + zstyle -s ':prezto:module:python:info:virtualenv' format 'virtualenv_format' + zformat -f virtualenv_formatted "$virtualenv_format" "v:${CONDA_DEFAULT_ENV:t}" + python_info[virtualenv]="$virtualenv_formatted" +fi + # } diff --git a/modules/python/init.zsh b/modules/python/init.zsh index 7aad5975..0d15fc03 100644 --- a/modules/python/init.zsh +++ b/modules/python/init.zsh @@ -4,6 +4,7 @@ # Authors: # Sorin Ionescu # Sebastian Wiesner +# Patrick Bos # # Load manually installed pyenv into the shell session. @@ -144,6 +145,19 @@ if (( $#commands[(i)pip(|[23])] )); then 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 # From 2436806fce90c9c6dec5172cc77eaa4b06f58307 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Thu, 20 Jul 2017 22:58:29 -0500 Subject: [PATCH 202/213] [utility] Simplify enabling 'diff' color conditions in wrapper function Nested `if` can be removed for simple cases like these. Also, doc cleanup. --- modules/utility/README.md | 2 +- modules/utility/functions/diff | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/utility/README.md b/modules/utility/README.md index a2b93be3..84e81f5c 100644 --- a/modules/utility/README.md +++ b/modules/utility/README.md @@ -153,7 +153,7 @@ Functions ### Developer - - `diff` highlights diff output (requires `colordiff` or `Git`). + - `diff` highlights diff output (requires `colordiff`). - `make` highlights make output (requires `colormake`). - `wdiff` highlights wdiff output (requires `wdiff `or `Git`). diff --git a/modules/utility/functions/diff b/modules/utility/functions/diff index 51806e81..d614b28b 100644 --- a/modules/utility/functions/diff +++ b/modules/utility/functions/diff @@ -6,12 +6,9 @@ # function diff { - if zstyle -t ':prezto:module:utility:diff' color; then - if (( $+commands[colordiff] )); then + if zstyle -t ':prezto:module:utility:diff' color \ + && (( $+commands[colordiff] )); then command colordiff "$@" - else - command diff "$@" - fi else command diff "$@" fi From d725233bb1be2db83cbd6ee2a7aea5ef62ca90d1 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sun, 12 Nov 2017 17:53:10 -0800 Subject: [PATCH 203/213] Add basic documentation on external module directories --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index f263a175..54cb09bd 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,19 @@ accompanying README files to learn of what is available. ![sorin theme][2] +### 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. + + ```console + zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib + ``` + Customization ------------- From a3f40a7479c0161175ed8aa454897d326c739e9d Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sun, 12 Nov 2017 17:54:49 -0800 Subject: [PATCH 204/213] Fix README formatting --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54cb09bd..18bcfcce 100644 --- a/README.md +++ b/README.md @@ -96,8 +96,8 @@ accompanying README files to learn of what is available. 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. + Note that module names need to be unique or they will cause an error when + loading. ```console zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib From cbe48151896ef0f37ee2556eb4546198dee1ed60 Mon Sep 17 00:00:00 2001 From: Yutian Li Date: Mon, 13 Nov 2017 16:41:54 -0800 Subject: [PATCH 205/213] Allow module to be a symbolic link to a non-empty directory (#1510) --- init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.zsh b/init.zsh index 66ac1b17..347b387c 100644 --- a/init.zsh +++ b/init.zsh @@ -96,7 +96,7 @@ function pmodload { if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then continue else - locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(/FN)}) + locations=(${pmodule_dirs:+${^pmodule_dirs}/$pmodule(-/FN)}) if (( ${#locations} > 1 )); then print "$0: conflicting module locations: $locations" continue From 221c6cd1283654ba77db052ee27aef613395321c Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 14 Nov 2017 00:34:19 -0800 Subject: [PATCH 206/213] Remove BRACE_CCL as default Fixes #1162 --- modules/environment/init.zsh | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh index e77a107c..79e98a4a 100644 --- a/modules/environment/init.zsh +++ b/modules/environment/init.zsh @@ -32,7 +32,6 @@ fi # General # -setopt BRACE_CCL # Allow brace character class list expansion. setopt COMBINING_CHARS # Combine zero-length punctuation characters (accents) # with the base character. setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage'. From 64d6ae805ce8a02fda4f69ae90c757eba68acb5a Mon Sep 17 00:00:00 2001 From: Denys Digtiar Date: Tue, 28 Nov 2017 14:19:01 +1000 Subject: [PATCH 207/213] Source correct module's `init.zsh` Now that modules can be located in different directories, the `init.zsh` should be loaded from the `$module_location` and not `$ZPREZTODIR/modules/$pmodule` --- init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.zsh b/init.zsh index 347b387c..ccdfb013 100644 --- a/init.zsh +++ b/init.zsh @@ -123,8 +123,8 @@ function pmodload { done } - if [[ -s "$ZPREZTODIR/modules/$pmodule/init.zsh" ]]; then - source "$ZPREZTODIR/modules/$pmodule/init.zsh" + if [[ -s "${pmodule_location}/init.zsh" ]]; then + source "${pmodule_location}/init.zsh" fi if (( $? == 0 )); then From 65bcbae8bc2731f5e07690eb339c40c82fe9a855 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 28 Nov 2017 09:19:35 -0800 Subject: [PATCH 208/213] Update zsh-autosuggestions to v0.4.1 --- modules/autosuggestions/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/autosuggestions/external b/modules/autosuggestions/external index 2cb6eb6e..9f9237ab 160000 --- a/modules/autosuggestions/external +++ b/modules/autosuggestions/external @@ -1 +1 @@ -Subproject commit 2cb6eb6e29852e64a146b0284275ecdc0661b082 +Subproject commit 9f9237ab8a530eeff389161202bbc7283ad6af3e From df3468e957e9d171a81a7e8646714abd9d248ab0 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Tue, 28 Nov 2017 15:10:13 -0800 Subject: [PATCH 209/213] Update zsh-async to v1.6.0 --- modules/prompt/external/async | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/async b/modules/prompt/external/async index d95adb7c..b001fa52 160000 --- a/modules/prompt/external/async +++ b/modules/prompt/external/async @@ -1 +1 @@ -Subproject commit d95adb7cb58ec9d45bf024951770d975e089ef1d +Subproject commit b001fa529a874fbe8bd22a9d4526153138645289 From 043d09bbfe0c22656aa68819640d7fc323c8ba79 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Fri, 7 Jul 2017 17:04:30 -0500 Subject: [PATCH 210/213] [git] Support short-code and improve completion in 'git-hub-shorten-url' Changes: - Add optional short-code support - Improve completion for github.com URL (`http(s)://*.github.com` only) - Return with non-zero exit code appropriately --- modules/git/functions/_git-hub-shorten-url | 7 ++++++- modules/git/functions/git-hub-shorten-url | 8 +++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/git/functions/_git-hub-shorten-url b/modules/git/functions/_git-hub-shorten-url index 1d811cae..7e65ded3 100644 --- a/modules/git/functions/_git-hub-shorten-url +++ b/modules/git/functions/_git-hub-shorten-url @@ -8,4 +8,9 @@ # Sorin Ionescu # -_arguments '::GitHub URL:_urls' && return 0 +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/modules/git/functions/git-hub-shorten-url b/modules/git/functions/git-hub-shorten-url index f36662f4..470c093f 100644 --- a/modules/git/functions/git-hub-shorten-url +++ b/modules/git/functions/git-hub-shorten-url @@ -7,20 +7,22 @@ # function git-hub-shorten-url { -local url="$1" +local url="$1" code="$2" if [[ "$url" == '-' ]]; then read url <&0 fi if [[ -z "$url" || ! "$url" =~ ^https?:\/\/.*github.com\/ ]]; then - print "usage: $0 [ url | - ] ; must be a github.com URL" >&2 + 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" | sed -n 's/^Location: //p' + 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 # } From 8ed2c78de8d5094f9bc394c6cfd4e4c843420f0e Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 1 Dec 2017 10:55:54 -0800 Subject: [PATCH 211/213] editor: Avoid prompt redisplay on completion when there is no indicator Refs #1512 --- modules/editor/init.zsh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 96c87863..ed57a102 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -211,6 +211,14 @@ zle -N expand-dot-to-parent-directory-path 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 From 7cdde9b631fffd25ed0c91aaaf5180b86d832038 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 1 Dec 2017 14:51:05 -0800 Subject: [PATCH 212/213] pacman: Update README to recommend pacaur over yaourt --- modules/pacman/README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/pacman/README.md b/modules/pacman/README.md index 68ed9204..855c8efa 100644 --- a/modules/pacman/README.md +++ b/modules/pacman/README.md @@ -7,11 +7,15 @@ frontends. Settings -------- -To enable a Pacman frontend, for example, [Yaourt][2], add the following line to +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 (Such as +[Pacaur][2] or [Yaourt][3]). + +To enable a Pacman frontend, for example, [Pacaur][2], add the following line to *zpreztorc*: ```sh -zstyle ':prezto:module:pacman' frontend 'yaourt' +zstyle ':prezto:module:pacman' frontend 'pacaur' ``` If you have enabled color globally in *zpreztorc*, you may disable it for certain @@ -48,6 +52,9 @@ Aliases #### Yaourt +Note that there are currently potential security concerns relating to yaourt, so +other frontends are recommended. + - `pacc` manages *.pac\** files. Functions @@ -59,11 +66,12 @@ Functions Authors ------- -*The authors of this module should be contacted via the [issue tracker][3].* +*The authors of this module should be contacted via the [issue tracker][4].* - [Benjamin Boudreau](https://github.com/dreur) - [Sorin Ionescu](https://github.com/sorin-ionescu) [1]: http://www.archlinux.org/pacman/ -[2]: http://archlinux.fr/yaourt-en -[3]: https://github.com/sorin-ionescu/prezto/issues +[2]: https://github.com/rmarquis/pacaur +[3]: http://archlinux.fr/yaourt-en +[4]: https://github.com/sorin-ionescu/prezto/issues From 029414581e54f5b63156f81acd0d377e8eb78883 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Sun, 3 Dec 2017 00:41:25 -0800 Subject: [PATCH 213/213] Add support for loading plugins in the oh-my-zsh format Closes #1484 --- init.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.zsh b/init.zsh index ccdfb013..99254bdb 100644 --- a/init.zsh +++ b/init.zsh @@ -125,6 +125,8 @@ function pmodload { 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