From a1a2a370454488f0ef0031ed74c33a5de0319781 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 1 Mar 2013 00:04:01 -0500 Subject: [PATCH 01/35] Use the builtin $signals array --- modules/helper/functions/add-zsh-trap | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/modules/helper/functions/add-zsh-trap b/modules/helper/functions/add-zsh-trap index e5d4e82c27..c8796ca0d5 100644 --- a/modules/helper/functions/add-zsh-trap +++ b/modules/helper/functions/add-zsh-trap @@ -6,14 +6,6 @@ # Sorin Ionescu # -# Trap signals were generated with 'kill -l'. -# DEBUG, EXIT, and ZERR are Zsh signals. -_trap_signals=( - ABRT ALRM BUS CHLD CONT EMT FPE HUP ILL INFO INT IO KILL PIPE PROF QUIT - SEGV STOP SYS TERM TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ - DEBUG EXIT ZERR -) - # Adds a function name to a list to be called when a trap is triggered. function add-zsh-trap { if (( $# < 2 )); then @@ -21,7 +13,7 @@ function add-zsh-trap { return 1 fi - if [[ -z "$_trap_signals[(r)$1]" ]]; then + if [[ -z "$signals[(r)$1]" ]]; then print "$0: unknown signal: $1" >&2 return 1 fi From 579dfee6f71e99ea60cf2a4505152116319ba2f1 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 1 Mar 2013 00:20:51 -0500 Subject: [PATCH 02/35] [Fix #399] Only enable the main syntax highlighter --- modules/syntax-highlighting/init.zsh | 2 +- runcoms/zpreztorc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/syntax-highlighting/init.zsh b/modules/syntax-highlighting/init.zsh index d9bd414bd1..0d360174c1 100644 --- a/modules/syntax-highlighting/init.zsh +++ b/modules/syntax-highlighting/init.zsh @@ -16,6 +16,6 @@ source "${0:h}/external/zsh-syntax-highlighting.zsh" # Set the highlighters. zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then - ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets cursor) + ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) fi diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 27aad49b49..e0f5578728 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -103,7 +103,7 @@ zstyle ':prezto:module:prompt' theme 'sorin' # # Set syntax highlighters. -# By default main, brackets, and cursor are enabled. +# By default, only the main highlighter is enabled. # zstyle ':prezto:module:syntax-highlighting' highlighters \ # 'main' \ # 'brackets' \ From 18d239141dbae10591ac55bc3302c583a3e09a0e Mon Sep 17 00:00:00 2001 From: Colin Hebert Date: Thu, 18 Apr 2013 14:18:02 +0100 Subject: [PATCH 03/35] Update external completions --- modules/completion/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/external b/modules/completion/external index 2166ab8a6c..9cbd2b6762 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit 2166ab8a6c57d1d9115e34f51c3dc05ba15480c5 +Subproject commit 9cbd2b6762689cd92c194067ac51b376fcc91e1b From 9e23df814f0911ac3ea8d2a1df5f26b8b75491ab Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Wed, 24 Apr 2013 22:28:38 -0400 Subject: [PATCH 04/35] Update external syntax-highlighting --- 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 a0862053f5..e5d8a50d36 160000 --- a/modules/syntax-highlighting/external +++ b/modules/syntax-highlighting/external @@ -1 +1 @@ -Subproject commit a0862053f57e3d8d6e0dbc34e55be13d9e4fb668 +Subproject commit e5d8a50d362a153a28506be6fae9cf179dbb5fd4 From 0d27e20e43ae0faa995c323067271bb6ab1c9ac5 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Wed, 24 Apr 2013 22:36:26 -0400 Subject: [PATCH 05/35] Update external history-substring-search --- modules/history-substring-search/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index 04c2eca00c..3bd84be43e 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit 04c2eca00c09f3351e72409923719c426f424160 +Subproject commit 3bd84be43e74710c60febfd46ced793e19fbf657 From 3c5363ef9bcfda4cc5cd46ca85a7109f783c9539 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Wed, 24 Apr 2013 22:39:53 -0400 Subject: [PATCH 06/35] Remove no longer necessary key bindings --- modules/history-substring-search/init.zsh | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh index ea20fffd26..8b0fd7a754 100644 --- a/modules/history-substring-search/init.zsh +++ b/modules/history-substring-search/init.zsh @@ -24,23 +24,3 @@ if ! zstyle -t ':prezto:module:history-substring-search' color; then unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND} fi -# -# Key Bindings -# - -if [[ -n $key_info ]]; then - # Emacs - bindkey -M emacs "$key_info[Control]P" history-substring-search-up - bindkey -M emacs "$key_info[Control]N" history-substring-search-down - - # Vi - bindkey -M vicmd "k" history-substring-search-up - bindkey -M vicmd "j" history-substring-search-down - - # Emacs and Vi - for keymap in 'emacs' 'viins'; do - bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up - bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down - done -fi - From f431af790ba7b86426ad34fc45ca97f7f41b370d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rory=20O=E2=80=99Kane?= Date: Fri, 8 Mar 2013 23:35:22 -0500 Subject: [PATCH 07/35] Fix misspellings of the word bellow in READMEs --- modules/prompt/README.md | 2 +- runcoms/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/prompt/README.md b/modules/prompt/README.md index 85ed13eef0..da3f2bac4c 100644 --- a/modules/prompt/README.md +++ b/modules/prompt/README.md @@ -34,7 +34,7 @@ including a function that displays help or a function used to preview it. **Do not call this function directly.** -The most basic example of this function can be seen bellow. +The most basic example of this function can be seen below. function prompt_name_setup { PROMPT='%m%# ' diff --git a/runcoms/README.md b/runcoms/README.md index 28064ddcdb..74030b878c 100644 --- a/runcoms/README.md +++ b/runcoms/README.md @@ -38,7 +38,7 @@ small as possible and should only define environment variables. ### zprofile This file is similar to zlogin, but it is sourced before zshrc. It was added -for [KornShell][1] fans. See the description of zlogin bellow for what it may +for [KornShell][1] fans. See the description of zlogin below for what it may contain. zprofile and zlogin are not meant to be used concurrently but can be done so. From 16a8e45cfad5c3600fd9494b3529e64dc7b22a03 Mon Sep 17 00:00:00 2001 From: Scott Stevenson Date: Sat, 13 Apr 2013 08:53:22 +0200 Subject: [PATCH 08/35] Wrap errant long line in git module README --- modules/git/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/git/README.md b/modules/git/README.md index 717f42bb14..78ab4d8375 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -1,7 +1,8 @@ Git === -Enhances the [Git][1] distributed version control system by providing aliases, functions and by exposing repository status information to prompts. +Enhances the [Git][1] distributed version control system by providing aliases, +functions and by exposing repository status information to prompts. Git **1.7.2** is the [minimum required version][7]. From f86854ebd4d22175f1dbe4b1182858a5455fe359 Mon Sep 17 00:00:00 2001 From: Scott Stevenson Date: Sat, 13 Apr 2013 08:55:53 +0200 Subject: [PATCH 09/35] Correct typos in git module README --- modules/git/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 78ab4d8375..7139b3f052 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -13,7 +13,7 @@ Settings 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 -`--prety=format:` switch. +`--pretty=format:` switch. zstyle ':prezto:module:git:log:context' format '' @@ -39,8 +39,8 @@ Aliases - `gbc` creates a new branch. - `gbl` lists branches and their commits. - `gbL` lists local and remote branches and their commits. - - `gbs` lists branches and their commits with ancestery graphs. - - `gbS` lists local and remote branches and their commits with ancestery + - `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. From 4e3475d8a728817b75e34d0e9ae3ff4ac000f0b7 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Wed, 24 Apr 2013 23:18:10 -0400 Subject: [PATCH 10/35] [Fix #403] Display accented characters properly --- modules/environment/init.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/environment/init.zsh b/modules/environment/init.zsh index 79eba54d28..d05aa07b0c 100644 --- a/modules/environment/init.zsh +++ b/modules/environment/init.zsh @@ -17,6 +17,8 @@ zle -N self-insert url-quote-magic # 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'. unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed. From 05a665328465482b5649552ff4bb48cc0c251dcc Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Thu, 25 Apr 2013 00:19:33 -0400 Subject: [PATCH 11/35] Sort Git conflict aliases --- modules/git/README.md | 20 ++++++++++---------- modules/git/alias.zsh | 18 +++++++++--------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 7139b3f052..1370f4988d 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -66,6 +66,16 @@ Aliases - `gcs` displays various types of objects. - `gcl` displays lost commits. +### Conflict + + - `gCl` lists unmerged files. + - `gCa` adds unmerged file contents to the index. + - `gCe` executes merge-tool on all unmerged file. + - `gCo` checks out our changes for unmerged paths. + - `gCO` checks out our changes for all unmerged paths. + - `gCt` checks out their changes for unmerged paths. + - `gCT` checks out their changes for all unmerged paths. + ### Data - `gd` displays information about files in the index and the work tree. @@ -104,16 +114,6 @@ Aliases - `gix` removes files/directories from the index (recursively). - `giX` removes files/directories from the index (recursively and forced). -### Conflict - - - `gCl` lists unmerged files. - - `gCa` adds unmerged file contents to the index. - - `gCe` executes merge-tool on all unmerged file. - - `gCo` checks out our changes for unmerged paths. - - `gCO` checks out our changes for all unmerged paths. - - `gCt` checks out their changes for unmerged paths. - - `gCT` checks out their changes for all unmerged paths. - ### Log - `gl` displays the log. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 4cb10dc2ce..173f619da7 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -56,6 +56,15 @@ 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' @@ -90,15 +99,6 @@ alias giR='git reset --patch' alias gix='git rm -r --cached' alias giX='git rm -rf --cached' -# 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)' - # 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}' From cf07c4ec91a637b976d90997d30e87c1dea455c1 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Thu, 25 Apr 2013 17:51:22 -0400 Subject: [PATCH 12/35] Update external history-substring-search --- modules/history-substring-search/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index 3bd84be43e..82fbef5132 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit 3bd84be43e74710c60febfd46ced793e19fbf657 +Subproject commit 82fbef5132b44c5d039e7d25972d9351c5936bc2 From 80b203bcd32a8e5ac22dac36d7e48e3f9ccf7078 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Thu, 25 Apr 2013 17:51:27 -0400 Subject: [PATCH 13/35] [Fix #422] Revert "Remove no longer necessary key bindings" This reverts commit 3c5363ef9bcfda4cc5cd46ca85a7109f783c9539. --- modules/history-substring-search/init.zsh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh index 8b0fd7a754..ea20fffd26 100644 --- a/modules/history-substring-search/init.zsh +++ b/modules/history-substring-search/init.zsh @@ -24,3 +24,23 @@ if ! zstyle -t ':prezto:module:history-substring-search' color; then unset HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_{FOUND,NOT_FOUND} fi +# +# Key Bindings +# + +if [[ -n $key_info ]]; then + # Emacs + bindkey -M emacs "$key_info[Control]P" history-substring-search-up + bindkey -M emacs "$key_info[Control]N" history-substring-search-down + + # Vi + bindkey -M vicmd "k" history-substring-search-up + bindkey -M vicmd "j" history-substring-search-down + + # Emacs and Vi + for keymap in 'emacs' 'viins'; do + bindkey -M "$keymap" "$key_info[Up]" history-substring-search-up + bindkey -M "$keymap" "$key_info[Down]" history-substring-search-down + done +fi + From b42479a7c72a9dd4b1e9ec9bec13979b53d48178 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Thu, 25 Apr 2013 19:05:07 -0400 Subject: [PATCH 14/35] Set WORDCHARS in the editor module --- modules/completion/init.zsh | 3 --- modules/editor/init.zsh | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh index 042e1a0330..3ffad63318 100644 --- a/modules/completion/init.zsh +++ b/modules/completion/init.zsh @@ -30,9 +30,6 @@ setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a traili unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. -# Treat these characters as part of a word. -WORDCHARS='*?_-.[]~&;!#$%^(){}<>' - # # Styles # diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index d76c605719..b905face3a 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -57,6 +57,9 @@ setopt BEEP # Variables # +# Treat these characters as part of a word. +WORDCHARS='*?_-.[]~&;!#$%^(){}<>' + # Use human-friendly identifiers. zmodload zsh/terminfo typeset -gA key_info From 810a4490d71afeedd19dcaefdb77f3c0adb6f377 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sun, 23 Dec 2012 15:50:12 -0500 Subject: [PATCH 15/35] [#52] Add zstyles to configure syntax-highlighting --- modules/syntax-highlighting/README.md | 12 ++++++++++++ modules/syntax-highlighting/init.zsh | 11 ++++++++++- runcoms/zpreztorc | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/modules/syntax-highlighting/README.md b/modules/syntax-highlighting/README.md index 7fb84e2b59..c88c54cfec 100644 --- a/modules/syntax-highlighting/README.md +++ b/modules/syntax-highlighting/README.md @@ -38,6 +38,18 @@ To enable all highlighters, add the following to *zpreztorc*: 'cursor' \ 'root' +### Highlighting Styles + +Each syntax highlighter defines styles used to highlight tokens. + +To highlight, for example, builtins, commands, and functions in blue instead of +green, add the following to *zpreztorc*: + + zstyle ':prezto:module:syntax-highlighting' styles \ + 'builtin' 'bg=blue' \ + 'command' 'bg=blue' \ + 'function' 'bg=blue' + Authors ------- diff --git a/modules/syntax-highlighting/init.zsh b/modules/syntax-highlighting/init.zsh index 0d360174c1..132481f669 100644 --- a/modules/syntax-highlighting/init.zsh +++ b/modules/syntax-highlighting/init.zsh @@ -13,9 +13,18 @@ fi # Source module files. source "${0:h}/external/zsh-syntax-highlighting.zsh" -# Set the highlighters. +# Set highlighters. zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS' if (( ${#ZSH_HIGHLIGHT_HIGHLIGHTERS[@]} == 0 )); then ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) fi +# Set highlighting styles. +typeset -A syntax_highlighting_styles +zstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles' +for syntax_highlighting_style in "${(k)syntax_highlighting_styles[@]}"; do + ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]=\ + "$syntax_highlighting_styles[$syntax_highlighting_style]" +done +unset syntax_highlighting_style{s,} + diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index e0f5578728..5494fd936a 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -110,6 +110,13 @@ zstyle ':prezto:module:prompt' theme 'sorin' # 'pattern' \ # 'cursor' \ # 'root' +# +# Set syntax highlighting styles. +# zstyle ':prezto:module:syntax-highlighting' styles \ +# 'builtin' 'bg=blue' \ +# 'command' 'bg=blue' \ +# 'function' 'bg=blue' +# # # Terminal From 6cd97d2d0faecc516133877582aafdcaa613adde Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sun, 23 Dec 2012 16:54:43 -0500 Subject: [PATCH 16/35] [Fix #52] Add zstyles to configure history-substring-search --- modules/history-substring-search/README.md | 12 ++++++++++++ modules/history-substring-search/init.zsh | 19 ++++++++++++++++--- runcoms/zpreztorc | 13 +++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/modules/history-substring-search/README.md b/modules/history-substring-search/README.md index 6bfe4e6a87..27a4a78f46 100644 --- a/modules/history-substring-search/README.md +++ b/modules/history-substring-search/README.md @@ -36,6 +36,18 @@ To enable highlighting for this module only, add the following line to 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 '' + +To set the query not found color, add the following line to *zpreztorc*: + + 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 '' + Authors ------- diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh index ea20fffd26..f6ef84dde9 100644 --- a/modules/history-substring-search/init.zsh +++ b/modules/history-substring-search/init.zsh @@ -13,11 +13,24 @@ pmodload 'editor' source "${0:h}/external/zsh-history-substring-search.zsh" # -# Styles +# Search # +zstyle -s ':prezto:module:history-substring-search:color' found \ + 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND' \ + || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold' + +zstyle -s ':prezto:module:history-substring-search:color' not-found \ + 'HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND' \ + || HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold' + +zstyle -s ':prezto:module:history-substring-search' globbing-flags \ + 'HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS' \ + || HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i' + if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then - unset HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS + HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS=\ + "${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" fi if ! zstyle -t ':prezto:module:history-substring-search' color; then @@ -28,7 +41,7 @@ fi # Key Bindings # -if [[ -n $key_info ]]; then +if [[ -n "$key_info" ]]; then # Emacs bindkey -M emacs "$key_info[Control]P" history-substring-search-up bindkey -M emacs "$key_info[Control]N" history-substring-search-down diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 5494fd936a..932edc32ec 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -58,6 +58,19 @@ zstyle ':prezto:module:editor' keymap 'emacs' # Set the command prefix on non-GNU systems. # zstyle ':prezto:module:gnu-utility' prefix 'g' +# +# History Substring Search +# + +# Set the query found color. +# zstyle ':prezto:module:history-substring-search:color' found '' + +# Set the query not found color. +# zstyle ':prezto:module:history-substring-search:color' not-found '' + +# Set the search globbing flags. +# zstyle ':prezto:module:history-substring-search' globbing-flags '' + # # Pacman # From 2e64f7ed64306fb0a57d509d9724a7a698f71138 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Tue, 30 Apr 2013 22:53:56 -0400 Subject: [PATCH 17/35] [Fix #419] Rewrite module gpg-agent; rename it to gpg --- modules/README.md | 4 ++-- modules/gpg-agent/README.md | 25 -------------------- modules/gpg-agent/init.zsh | 46 ------------------------------------- modules/gpg/README.md | 16 +++++++++++++ modules/gpg/init.zsh | 31 +++++++++++++++++++++++++ runcoms/zpreztorc | 7 ------ 6 files changed, 49 insertions(+), 80 deletions(-) delete mode 100644 modules/gpg-agent/README.md delete mode 100644 modules/gpg-agent/init.zsh create mode 100644 modules/gpg/README.md create mode 100644 modules/gpg/init.zsh diff --git a/modules/README.md b/modules/README.md index 79a472536b..16754fcbcb 100644 --- a/modules/README.md +++ b/modules/README.md @@ -46,10 +46,10 @@ GNU Utility Provides for the interactive use of GNU utilities on non-GNU systems. -GPG-Agent +GPG --------- -Provides for an easier use of gpg-agent. +Provides for an easier use of GPG by setting up gpg-agent. Haskell ------- diff --git a/modules/gpg-agent/README.md b/modules/gpg-agent/README.md deleted file mode 100644 index 1b222d46a8..0000000000 --- a/modules/gpg-agent/README.md +++ /dev/null @@ -1,25 +0,0 @@ -GPG-Agent -========= - -Provides for an easier use of [gpg-agent][1]. - -Settings --------- - -### SSH-Agent Protocol Emulation - -To enable SSH-Agent protocol emulation, add the following line to *zpreztorc*: - - zstyle ':prezto:module:gpg-agent' ssh-support 'yes' - -Authors -------- - -*The authors of this module should be contacted via the [issue tracker][2].* - - - [Florian Walch](https://github.com/fwalch) - - [Sorin Ionescu](https://github.com/sorin-ionescu) - -[1]: http://linux.die.net/man/1/gpg-agent -[2]: https://github.com/sorin-ionescu/prezto/issues - diff --git a/modules/gpg-agent/init.zsh b/modules/gpg-agent/init.zsh deleted file mode 100644 index 82bd9a2ec4..0000000000 --- a/modules/gpg-agent/init.zsh +++ /dev/null @@ -1,46 +0,0 @@ -# -# Provides for an easier use of gpg-agent. -# -# Authors: -# Florian Walch -# Sorin Ionescu -# neersighted -# - -# Return if requirements are not found. -if (( ! $+commands[gpg-agent] )); then - return 1 -fi - -# Make sure to use the $GNUPGHOME first. -_gpg_env="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.env" - -function _gpg-agent-start { - local ssh_support - - zstyle -b ':prezto:module:gpg-agent' ssh-support 'ssh_support' \ - || ssh_support='' - - gpg-agent \ - --daemon \ - ${ssh_support:+'--enable-ssh-support'} \ - --write-env-file "${_gpg_env}" > /dev/null - - chmod 600 "${_gpg_env}" - source "${_gpg_env}" > /dev/null -} - -# Source GPG agent settings, if applicable. -if [[ -s "${_gpg_env}" ]]; then - source "${_gpg_env}" > /dev/null - ps -ef | grep "${SSH_AGENT_PID}" | grep -q 'gpg-agent' || { - _gpg-agent-start - } -else - _gpg-agent-start -fi - -export GPG_AGENT_INFO -export SSH_AUTH_SOCK -export SSH_AGENT_PID -export GPG_TTY="$(tty)" diff --git a/modules/gpg/README.md b/modules/gpg/README.md new file mode 100644 index 0000000000..05db90134a --- /dev/null +++ b/modules/gpg/README.md @@ -0,0 +1,16 @@ +GPG +=== + +Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.gnupg.org +[2]: http://linux.die.net/man/1/gpg-agent +[3]: https://github.com/sorin-ionescu/prezto/issues + diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh new file mode 100644 index 0000000000..f1759420df --- /dev/null +++ b/modules/gpg/init.zsh @@ -0,0 +1,31 @@ +# +# Provides for an easier use of GPG by setting up gpg-agent. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if (( ! $+commands[gpg-agent] )); then + return 1 +fi + +# Set the default path to the gpg-agent-info file. +_gpg_agent_info="$HOME/.gpg-agent-info" + +# Start gpg-agent if not started. +ps -U "$USER" -o ucomm | grep -q gpg-agent \ + || gpg-agent --daemon >! "$_gpg_agent_info" + +# Export environment variables. +export GPG_TTY="$(tty)" +source "$_gpg_agent_info" + +# Clean up. +unset _gpg_agent_info + +# Disable GUI prompts inside SSH. +if [[ -n "$SSH_CONNECTION" ]]; then + export PINENTRY_USER_DATA='USE_CURSES=1' +fi + diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 932edc32ec..4fe15fc98d 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -94,13 +94,6 @@ zstyle ':prezto:module:prompt' theme 'sorin' # Auto start a session when Zsh is launched. # zstyle ':prezto:module:screen' auto-start 'yes' -# -# GPG-Agent -# - -# Enable SSH-Agent protocol emulation. -# zstyle ':prezto:module:gpg-agent' ssh-support 'yes' - # # SSH-Agent # From 23f62774f9473d47ffaac5ccf2ad12cd52448d1d Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 3 May 2013 08:56:13 -0400 Subject: [PATCH 18/35] [Fix #426] Correct syntax error in variable assignment --- modules/history-substring-search/init.zsh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/history-substring-search/init.zsh b/modules/history-substring-search/init.zsh index f6ef84dde9..53eb99be15 100644 --- a/modules/history-substring-search/init.zsh +++ b/modules/history-substring-search/init.zsh @@ -29,8 +29,7 @@ zstyle -s ':prezto:module:history-substring-search' globbing-flags \ || HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i' if zstyle -t ':prezto:module:history-substring-search' case-sensitive; then - HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS=\ - "${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" + HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS="${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS//i}" fi if ! zstyle -t ':prezto:module:history-substring-search' color; then From 413b7174847942279a4c70bdf6b86430ff9a5ad4 Mon Sep 17 00:00:00 2001 From: Colin Hebert Date: Tue, 7 May 2013 00:32:15 +0200 Subject: [PATCH 19/35] Ensure that the tmux server is started Signed-off-by: Sorin Ionescu --- modules/tmux/init.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index a464827640..017327501a 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -19,6 +19,9 @@ if [[ -z "$TMUX" ]] && zstyle -t ':prezto:module:tmux' auto-start; then tmux_session='#Prezto' if ! tmux has-session -t "$tmux_session" 2> /dev/null; then + # Ensure that tmux server is started. + tmux start-server + # Disable the destruction of unattached sessions globally. tmux set-option -g destroy-unattached off &> /dev/null From 7e33c7189e238fa7011edaf5fef882d245c08a01 Mon Sep 17 00:00:00 2001 From: Neil Mather Date: Fri, 10 May 2013 21:44:37 +0100 Subject: [PATCH 20/35] Correct syntax error in variable assignment Signed-off-by: Sorin Ionescu --- modules/syntax-highlighting/init.zsh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/syntax-highlighting/init.zsh b/modules/syntax-highlighting/init.zsh index 132481f669..e5c555bd12 100644 --- a/modules/syntax-highlighting/init.zsh +++ b/modules/syntax-highlighting/init.zsh @@ -23,8 +23,7 @@ fi typeset -A syntax_highlighting_styles zstyle -a ':prezto:module:syntax-highlighting' styles 'syntax_highlighting_styles' for syntax_highlighting_style in "${(k)syntax_highlighting_styles[@]}"; do - ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]=\ - "$syntax_highlighting_styles[$syntax_highlighting_style]" + ZSH_HIGHLIGHT_STYLES[$syntax_highlighting_style]="$syntax_highlighting_styles[$syntax_highlighting_style]" done unset syntax_highlighting_style{s,} From bde5149c7bacfda8a9ccbcebd154919952e2c1de Mon Sep 17 00:00:00 2001 From: Sebastian Wiesner Date: Fri, 17 May 2013 17:19:42 +0200 Subject: [PATCH 21/35] Load completion for Carton --- modules/emacs/init.zsh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/emacs/init.zsh b/modules/emacs/init.zsh index c24625d1f8..ff78800d84 100644 --- a/modules/emacs/init.zsh +++ b/modules/emacs/init.zsh @@ -12,4 +12,9 @@ if [[ -d "$HOME/.carton" ]]; then alias cau='carton update' alias caI='carton init' alias cae='carton exec' + + local completion="$HOME/.carton/etc/carton_completion.zsh" + if [[ -e "${completion}" ]]; then + source "${completion}" + fi fi From fb5b1be345bf463f90aaa0b14f92ec9c5868523f Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 17 May 2013 21:29:44 -0400 Subject: [PATCH 22/35] Refactor Emacs module --- modules/emacs/init.zsh | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/modules/emacs/init.zsh b/modules/emacs/init.zsh index ff78800d84..cce9e1e903 100644 --- a/modules/emacs/init.zsh +++ b/modules/emacs/init.zsh @@ -4,17 +4,22 @@ # Authors: Sebastian Wiesner # -# Enable Carton -if [[ -d "$HOME/.carton" ]]; then - path=($HOME/.carton/bin $path) +# Return if requirements are not found. +if [[ ! -d "$HOME/.carton" ]]; then + return 1 +fi - alias cai='carton install' - alias cau='carton update' - alias caI='carton init' - alias cae='carton exec' +# Prepend Carton bin directory. +path=($HOME/.carton/bin $path) - local completion="$HOME/.carton/etc/carton_completion.zsh" - if [[ -e "${completion}" ]]; then - source "${completion}" - fi -fi +# Load Carton completion +source "$HOME/.carton/etc/carton_completion.zsh" 2> /dev/null + +# +# Aliases +# + +alias cai='carton install' +alias cau='carton update' +alias caI='carton init' +alias cae='carton exec' From 88408e8bc25518a050d0de0565aadee65c5abc2a Mon Sep 17 00:00:00 2001 From: nasenatmer Date: Tue, 14 May 2013 22:06:24 +0100 Subject: [PATCH 23/35] Add rar command to archive module This addition tries to use the rar command if unrar is not found. Signed-off-by: Sorin Ionescu --- modules/archive/README.md | 2 +- modules/archive/functions/extract | 4 +++- modules/archive/functions/ls-archive | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/archive/README.md b/modules/archive/README.md index 398d003762..37dbf121ed 100644 --- a/modules/archive/README.md +++ b/modules/archive/README.md @@ -26,7 +26,7 @@ installed: - *.lzma* requires `unlzma`. - *.Z* requires `uncompress`. - *.zip* requires `unzip`. - - *.rar* requires `unrar`. + - *.rar* requires `unrar` or `rar`. - *.7z* requires `7za`. - *.deb* requires `ar`, `tar`. diff --git a/modules/archive/functions/extract b/modules/archive/functions/extract index af7ed25a02..70fac4d832 100644 --- a/modules/archive/functions/extract +++ b/modules/archive/functions/extract @@ -53,7 +53,9 @@ while (( $# > 0 )); do (*.lzma) unlzma "$1" ;; (*.Z) uncompress "$1" ;; (*.zip) unzip "$1" -d $extract_dir ;; - (*.rar) unrar e -ad "$1" ;; + (*.rar) unrar &> /dev/null \ + && unrar e -ad "$1" \ + || rar e -ad "$1" ;; (*.7z) 7za x "$1" ;; (*.deb) mkdir -p "$extract_dir/control" diff --git a/modules/archive/functions/ls-archive b/modules/archive/functions/ls-archive index e8727fa123..99ebde6e9b 100644 --- a/modules/archive/functions/ls-archive +++ b/modules/archive/functions/ls-archive @@ -41,7 +41,9 @@ while (( $# > 0 )); do || lzcat "$1" | tar x${verbose:+v}f - ;; (*.tar) tar t${verbose:+v}f "$1" ;; (*.zip) unzip -l${verbose:+v} "$1" ;; - (*.rar) unrar ${${verbose:+v}:-l} "$1" ;; + (*.rar) unrar &> /dev/null \ + && unrar ${${verbose:+v}:-l} "$1" \ + || rar ${${verbose:+v}:-l} "$1" ;; (*.7z) 7za l "$1" ;; (*) print "$0: cannot list: $1" >&2 From f3ae9dd82c19d41d75a3df7d9700ae2829264587 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sat, 22 Dec 2012 10:05:32 -0400 Subject: [PATCH 24/35] Initialize ahead and behind local variables --- modules/git/functions/git-info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 2e52eab393..274b7bf719 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -126,13 +126,13 @@ function git-info { local added=0 local added_format local added_formatted - local ahead + local ahead=0 local ahead_and_behind local ahead_and_behind_cmd local ahead_format local ahead_formatted local ahead_or_behind - local behind + local behind=0 local behind_format local behind_formatted local branch From 5306bab7ce87491100bf3a48c33ffdd2d7404326 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sat, 22 Dec 2012 10:09:54 -0400 Subject: [PATCH 25/35] [#221] Do not format undefined zstyles --- modules/git/functions/git-info | 150 ++++++++++++++++++--------------- 1 file changed, 82 insertions(+), 68 deletions(-) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 274b7bf719..4f71fda2b0 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -206,132 +206,146 @@ function git-info { # Used to abort and turn git-info off on SIGINT. _git_info_executing=true - # Use porcelain status for easy parsing. - status_cmd='git status --porcelain' - - # Gets the remote name. - remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}' - - # Gets the commit difference counts between local and remote. - ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}' - # Ignore submodule status. zstyle -s ':prezto:module:git:status:ignore' submodules 'ignore_submodules' - if [[ -n "$ignore_submodules" ]]; then - status_cmd+=" --ignore-submodules=${ignore_submodules}" - fi # Format commit. - commit="$(git rev-parse HEAD 2> /dev/null)" - if [[ -n "$commit" ]]; then - zstyle -s ':prezto:module:git:info:commit' format 'commit_format' - zformat -f commit_formatted "$commit_format" "c:$commit" + zstyle -s ':prezto:module:git:info:commit' format 'commit_format' + if [[ -n "$commit_format" ]]; then + commit="$(git rev-parse HEAD 2> /dev/null)" + if [[ -n "$commit" ]]; then + zformat -f commit_formatted "$commit_format" "c:$commit" + fi fi # Format stashed. - if [[ -f "$(git-dir)/refs/stash" ]]; then + zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' + if [[ -n "$stashed_format" && -f "$(git-dir)/refs/stash" ]]; then stashed="$(git stash list 2> /dev/null | wc -l | awk '{print $1}')" - zstyle -s ':prezto:module:git:info:stashed' format 'stashed_format' - zformat -f stashed_formatted "$stashed_format" "S:$stashed" + if [[ -n "$stashed" ]]; then + zformat -f stashed_formatted "$stashed_format" "S:$stashed" + fi fi # Format action. - action="$(_git-action)" - if [[ -n "$action" ]]; then - zstyle -s ':prezto:module:git:info:action' format 'action_format' - zformat -f action_formatted "$action_format" "s:$action" + zstyle -s ':prezto:module:git:info:action' format 'action_format' + if [[ -n "$action_format" ]]; then + action="$(_git-action)" + if [[ -n "$action" ]]; then + zformat -f action_formatted "$action_format" "s:$action" + fi fi - # Get current status. - while IFS=$'\n' read line; do - # Count added, deleted, modified, renamed, unmerged, untracked, dirty. - # T (type change) is undocumented, see http://git.io/FnpMGw. - # For a table of scenarii, see http://i.imgur.com/2YLu1.png. - [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) - [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) - [[ "$line" == ?[MT]\ * ]] && (( modified++ )) - [[ "$line" == R?\ * ]] && (( renamed++ )) - [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) - [[ "$line" == \?\?\ * ]] && (( untracked++ )) - (( dirty++ )) - done < <(${(z)status_cmd} 2> /dev/null) + # Get the branch. + branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" # Format branch. - branch="${$(git symbolic-ref -q HEAD)##refs/heads/}" - if [[ -n "$branch" ]]; then - zstyle -s ':prezto:module:git:info:branch' format 'branch_format' + zstyle -s ':prezto:module:git:info:branch' format 'branch_format' + if [[ -n "$branch" && -n "$branch_format" ]]; then zformat -f branch_formatted "$branch_format" "b:$branch" + fi + + # Format position. + zstyle -s ':prezto:module:git:info:position' format 'position_format' + if [[ -z "$branch" && -n "$position_format" ]]; then + position="$(git describe --contains --all HEAD 2> /dev/null)" + if [[ -n "$position" ]]; then + zformat -f position_formatted "$position_format" "p:$position" + fi + fi - # Format remote. + # Format remote. + zstyle -s ':prezto:module:git:info:remote' format 'remote_format' + if [[ -n "$branch" && -n "$remote_format" ]]; then + # Gets the remote name. + remote_cmd='git rev-parse --symbolic-full-name --verify HEAD@{upstream}' remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" if [[ -n "$remote" ]]; then - zstyle -s ':prezto:module:git:info:remote' format 'remote_format' zformat -f remote_formatted "$remote_format" "R:$remote" + fi + fi - # Get ahead and behind counts. - ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" + zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format' + zstyle -s ':prezto:module:git:info:behind' format 'behind_format' + if [[ -n "$branch" && ( -n "$ahead_format" || -n "$behind_format" ) ]]; then + # Gets the commit difference counts between local and remote. + ahead_and_behind_cmd='git rev-list --count --left-right HEAD...@{upstream}' - # Format ahead. + # Get ahead and behind counts. + ahead_and_behind="$(${(z)ahead_and_behind_cmd} 2> /dev/null)" + + # Format ahead. + if [[ -n "$ahead_format" ]]; then ahead="$ahead_and_behind[(w)1]" - if (( $ahead > 0 )); then - zstyle -s ':prezto:module:git:info:ahead' format 'ahead_format' + if (( ahead > 0 )); then zformat -f ahead_formatted "$ahead_format" "A:$ahead" fi + fi - # Format behind. + # Format behind. + if [[ -n "$behind_format" ]]; then behind="$ahead_and_behind[(w)2]" - if (( $behind > 0 )); then - zstyle -s ':prezto:module:git:info:behind' format 'behind_format' + if (( behind > 0 )); then zformat -f behind_formatted "$behind_format" "B:$behind" fi fi - else - # Format position. - position="$(git describe --contains --all HEAD 2> /dev/null)" - if [[ -n "$position" ]]; then - zstyle -s ':prezto:module:git:info:position' format 'position_format' - zformat -f position_formatted "$position_format" "p:$position" - fi fi + # Use porcelain status for easy parsing. + status_cmd="git status --porcelain --ignore-submodules=${ignore_submodules:-none}" + + # Get current status. + while IFS=$'\n' read line; do + # Count added, deleted, modified, renamed, unmerged, untracked, dirty. + # T (type change) is undocumented, see http://git.io/FnpMGw. + # For a table of scenarii, see http://i.imgur.com/2YLu1.png. + [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) + [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) + [[ "$line" == ?[MT]\ * ]] && (( modified++ )) + [[ "$line" == R?\ * ]] && (( renamed++ )) + [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) + [[ "$line" == \?\?\ * ]] && (( untracked++ )) + (( dirty++ )) + done < <(${(z)status_cmd} 2> /dev/null) + # Format added. - if (( $added > 0 )); then + if (( added > 0 )); then zstyle -s ':prezto:module:git:info:added' format 'added_format' zformat -f added_formatted "$added_format" "a:$added_format" fi # Format deleted. - if (( $deleted > 0 )); then + if (( deleted > 0 )); then zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' zformat -f deleted_formatted "$deleted_format" "d:$deleted_format" fi # Format modified. - if (( $modified > 0 )); then + if (( modified > 0 )); then zstyle -s ':prezto:module:git:info:modified' format 'modified_format' zformat -f modified_formatted "$modified_format" "m:$modified" fi # Format renamed. - if (( $renamed > 0 )); then + if (( renamed > 0 )); then zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' zformat -f renamed_formatted "$renamed_format" "r:$renamed" fi # Format unmerged. - if (( $unmerged > 0 )); then + if (( unmerged > 0 )); then zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" fi # Format untracked. - if (( $untracked > 0 )); then + if (( untracked > 0 )); then zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' zformat -f untracked_formatted "$untracked_format" "u:$untracked" fi # Format dirty and clean. - if (( $dirty > 0 )); then + if (( dirty > 0 )); then zstyle -s ':prezto:module:git:info:dirty' format 'dirty_format' zformat -f dirty_formatted "$dirty_format" "D:$dirty" else @@ -342,21 +356,21 @@ function git-info { zstyle -a ':prezto:module:git:info:keys' format 'info_formats' for info_format in ${(k)info_formats}; do zformat -f REPLY "$info_formats[$info_format]" \ + "a:$added_formatted" \ "A:$ahead_formatted" \ "B:$behind_formatted" \ - "D:$dirty_formatted" \ - "R:$remote_formatted" \ - "S:$stashed_formatted" \ - "U:$unmerged_formatted" \ - "a:$added_formatted" \ "b:$branch_formatted" \ "C:$clean_formatted" \ "c:$commit_formatted" \ "d:$deleted_formatted" \ + "D:$dirty_formatted" \ "m:$modified_formatted" \ "p:$position_formatted" \ + "R:$remote_formatted" \ "r:$renamed_formatted" \ "s:$action_formatted" \ + "S:$stashed_formatted" \ + "U:$unmerged_formatted" \ "u:$untracked_formatted" git_info[$info_format]="$REPLY" done From e836957e4f937d59e114553aa579da73b8696f16 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sat, 22 Dec 2012 18:48:19 -0400 Subject: [PATCH 26/35] [Fix #221] Add a simple git-info --- modules/git/README.md | 27 +++- modules/git/functions/git-info | 161 ++++++++++++++------ modules/prompt/functions/prompt_sorin_setup | 4 + 3 files changed, 142 insertions(+), 50 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 1370f4988d..8bb9be4258 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -253,19 +253,38 @@ setting a style is as follows. | Name | Format Code | Description | --------- | :---------: | --------------------------------------------------- | action | %s | Special action name -| added | %a | Added files count | ahead | %A | Commits ahead of remote count | behind | %B | Commits behind of remote count | branch | %b | Branch name | commit | %c | Commit hash +| position | %p | Commits from the nearest tag count +| remote | %R | Remote name +| stashed | %S | Stashed states count + +### Concise Contexts + +| Name | Format Code | Description +| --------- | :---------: | --------------------------------------------------- +| clean | %C | Clean state +| dirty | %D | Dirty files count +| indexed | %i | Indexed files count +| unindexed | %I | Unindexed files count +| untracked | %u | Untracked files count + +The following contexts must be enabled with the following zstyle: + + zstyle ':prezto:module:git:info' verbose 'yes' + +### Verbose Contexts + +| Name | Format Code | Description +| --------- | :---------: | --------------------------------------------------- +| added | %a | Added files count | clean | %C | Clean state | deleted | %d | Deleted files count | dirty | %D | Dirty files count | modified | %m | Modified files count -| position | %p | Commits from the nearest tag count -| remote | %R | Remote name | renamed | %r | Renamed files count -| stashed | %S | Stashed states count | unmerged | %U | Unmerged files count | untracked | %u | Untracked files count diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 4f71fda2b0..5e8f9cac4e 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -151,6 +151,9 @@ function git-info { local dirty_format local dirty_formatted local ignore_submodules + local indexed=0 + local indexed_format + local indexed_formatted local -A info_formats local info_format local line_number=0 @@ -171,6 +174,10 @@ function git-info { local stashed_format local stashed_formatted local status_cmd + local status_mode + local unindexed=0 + local unindexed_format + local unindexed_formatted local unmerged=0 local unmerged_format local unmerged_formatted @@ -291,57 +298,117 @@ function git-info { fi fi - # Use porcelain status for easy parsing. - status_cmd="git status --porcelain --ignore-submodules=${ignore_submodules:-none}" - - # Get current status. - while IFS=$'\n' read line; do - # Count added, deleted, modified, renamed, unmerged, untracked, dirty. - # T (type change) is undocumented, see http://git.io/FnpMGw. - # For a table of scenarii, see http://i.imgur.com/2YLu1.png. - [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) - [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) - [[ "$line" == ?[MT]\ * ]] && (( modified++ )) - [[ "$line" == R?\ * ]] && (( renamed++ )) - [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) - [[ "$line" == \?\?\ * ]] && (( untracked++ )) - (( dirty++ )) - done < <(${(z)status_cmd} 2> /dev/null) - - # Format added. - if (( added > 0 )); then - zstyle -s ':prezto:module:git:info:added' format 'added_format' - zformat -f added_formatted "$added_format" "a:$added_format" - fi + # Get status type. + if ! zstyle -t ':prezto:module:git:info' verbose; then + # Format indexed. + zstyle -s ':prezto:module:git:info:indexed' format 'indexed_format' + if [[ -n "$indexed_format" ]]; then + (( + indexed+=$( + git diff-index \ + --no-ext-diff \ + --name-only \ + --cached \ + --ignore-submodules=${ignore_submodules:-none} \ + HEAD \ + 2> /dev/null \ + | wc -l + ) + )) + if (( indexed > 0 )); then + zformat -f indexed_formatted "$indexed_format" "i:$indexed" + fi + fi - # Format deleted. - if (( deleted > 0 )); then - zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' - zformat -f deleted_formatted "$deleted_format" "d:$deleted_format" - fi + # Format unindexed. + zstyle -s ':prezto:module:git:info:unindexed' format 'unindexed_format' + if [[ -n "$unindexed_format" ]]; then + (( + unindexed+=$( + git diff-files \ + --no-ext-diff \ + --name-only \ + --ignore-submodules=${ignore_submodules:-none} \ + 2> /dev/null \ + | wc -l + ) + )) + if (( unindexed > 0 )); then + zformat -f unindexed_formatted "$unindexed_format" "I:$unindexed" + fi + fi - # Format modified. - if (( modified > 0 )); then - zstyle -s ':prezto:module:git:info:modified' format 'modified_format' - zformat -f modified_formatted "$modified_format" "m:$modified" - fi + # Format untracked. + zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' + if [[ -n "$untracked_format" ]]; then + (( + untracked+=$( + git ls-files \ + --other \ + --exclude-standard \ + 2> /dev/null \ + | wc -l + ) + )) + if (( untracked > 0 )); then + zformat -f untracked_formatted "$untracked_format" "u:$untracked" + fi + fi - # Format renamed. - if (( renamed > 0 )); then - zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' - zformat -f renamed_formatted "$renamed_format" "r:$renamed" - fi + (( dirty = indexed + unindexed + untracked )) + else + # Use porcelain status for easy parsing. + status_cmd="git status --porcelain --ignore-submodules=${ignore_submodules:-none}" + + # Get current status. + while IFS=$'\n' read line; do + # Count added, deleted, modified, renamed, unmerged, untracked, dirty. + # T (type change) is undocumented, see http://git.io/FnpMGw. + # For a table of scenarii, see http://i.imgur.com/2YLu1.png. + [[ "$line" == ([ACDMT][\ MT]|[ACMT]D)\ * ]] && (( added++ )) + [[ "$line" == [\ ACMRT]D\ * ]] && (( deleted++ )) + [[ "$line" == ?[MT]\ * ]] && (( modified++ )) + [[ "$line" == R?\ * ]] && (( renamed++ )) + [[ "$line" == (AA|DD|U?|?U)\ * ]] && (( unmerged++ )) + [[ "$line" == \?\?\ * ]] && (( untracked++ )) + (( dirty++ )) + done < <(${(z)status_cmd} 2> /dev/null) + + # Format added. + if (( added > 0 )); then + zstyle -s ':prezto:module:git:info:added' format 'added_format' + zformat -f added_formatted "$added_format" "a:$added_format" + fi - # Format unmerged. - if (( unmerged > 0 )); then - zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' - zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" - fi + # Format deleted. + if (( deleted > 0 )); then + zstyle -s ':prezto:module:git:info:deleted' format 'deleted_format' + zformat -f deleted_formatted "$deleted_format" "d:$deleted_format" + fi - # Format untracked. - if (( untracked > 0 )); then - zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' - zformat -f untracked_formatted "$untracked_format" "u:$untracked" + # Format modified. + if (( modified > 0 )); then + zstyle -s ':prezto:module:git:info:modified' format 'modified_format' + zformat -f modified_formatted "$modified_format" "m:$modified" + fi + + # Format renamed. + if (( renamed > 0 )); then + zstyle -s ':prezto:module:git:info:renamed' format 'renamed_format' + zformat -f renamed_formatted "$renamed_format" "r:$renamed" + fi + + # Format unmerged. + if (( unmerged > 0 )); then + zstyle -s ':prezto:module:git:info:unmerged' format 'unmerged_format' + zformat -f unmerged_formatted "$unmerged_format" "U:$unmerged" + fi + + # Format untracked. + if (( untracked > 0 )); then + zstyle -s ':prezto:module:git:info:untracked' format 'untracked_format' + zformat -f untracked_formatted "$untracked_format" "u:$untracked" + fi fi # Format dirty and clean. @@ -364,6 +431,8 @@ function git-info { "c:$commit_formatted" \ "d:$deleted_formatted" \ "D:$dirty_formatted" \ + "i:$indexed_formatted" \ + "I:$unindexed_formatted" \ "m:$modified_formatted" \ "p:$position_formatted" \ "R:$remote_formatted" \ diff --git a/modules/prompt/functions/prompt_sorin_setup b/modules/prompt/functions/prompt_sorin_setup index 796da78f38..c3302ad1e4 100644 --- a/modules/prompt/functions/prompt_sorin_setup +++ b/modules/prompt/functions/prompt_sorin_setup @@ -46,10 +46,14 @@ function prompt_sorin_setup { # Add hook for calling git-info before each command. add-zsh-hook precmd prompt_sorin_precmd + # Set editor-info parameters. zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{red}❯%F{yellow}❯%F{green}❯%f%b' zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{red}♺%f' zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{green}❮%F{yellow}❮%F{red}❮%f%b' + + # Set git-info parameters. + zstyle ':prezto:module:git:info' verbose 'yes' zstyle ':prezto:module:git:info:action' format ':%%B%F{yellow}%s%f%%b' zstyle ':prezto:module:git:info:added' format ' %%B%F{green}✚%f%%b' zstyle ':prezto:module:git:info:ahead' format ' %%B%F{yellow}⬆%f%%b' From d4e78d427a4ce10f308b0d209853f712923cf405 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 3 May 2013 11:25:49 -0400 Subject: [PATCH 27/35] Rename alias gRc to gRp --- modules/git/README.md | 2 +- modules/git/alias.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 8bb9be4258..3fd6f6b733 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -160,7 +160,7 @@ Aliases - `gRx` removes a remote. - `gRm` renames a remote. - `gRu` fetches remotes updates. - - `gRc` deletes all stale remote tracking branches. + - `gRp` prunes all stale remote tracking branches. - `gRs` displays information about a given remote. - `gRb` opens a remote on [GitHub][3] in the default browser. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 173f619da7..09bb5a18e6 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -138,7 +138,7 @@ alias gRa='git remote add' alias gRx='git remote rm' alias gRm='git remote rename' alias gRu='git remote update' -alias gRc='git remote prune' +alias gRp='git remote prune' alias gRs='git remote show' alias gRb='git-hub-browse' From 75c0d49f5678b9d4f570385e522052962b995865 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 3 May 2013 12:59:05 -0400 Subject: [PATCH 28/35] Swap aliases gsd and gsL --- modules/git/README.md | 5 ++--- modules/git/alias.zsh | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 3fd6f6b733..1fa9a2197f 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -170,10 +170,9 @@ Aliases - `gsa` applies the changes recorded in a stash to the working directory. - `gsx` drops a stashed state. - `gsX` drops all the stashed states. - - `gsd` lists dropped stashed states. - `gsl` lists stashed states. - - `gsL` displays the changes recorded in the stash as a diff between the - stashed state and its original parent. + - `gsL` lists dropped stashed states. + - `gsd` displays changes between the stash and its original parent. - `gsp` removes and applies a single stashed state from the stash list. - `gsr` recovers a given stashed state. - `gss` stashes the changes of the dirty working directory, including untracked. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 09bb5a18e6..bf6d3644ae 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -147,9 +147,9 @@ alias gs='git stash' alias gsa='git stash apply' alias gsx='git stash drop' alias gsX='git-stash-clear-interactive' -alias gsd='git-stash-dropped' alias gsl='git stash list' -alias gsL='git stash show --patch --stat' +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' From 7845c369510448df047c78c0d89202c4659465c7 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 3 May 2013 13:30:29 -0400 Subject: [PATCH 29/35] Clarify Git listing aliases descriptions --- modules/git/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 1fa9a2197f..0dd932f6b2 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -64,7 +64,7 @@ Aliases commits. - `gcR` removes the *HEAD* commit. - `gcs` displays various types of objects. - - `gcl` displays lost commits. + - `gcl` lists lost commits. ### Conflict @@ -97,8 +97,8 @@ Aliases - `gg` displays lines matching a pattern. - `ggi` displays lines matching a pattern ignoring case. - - `ggl` displays files matching a pattern. - - `ggL` displays files are not matching a pattern. + - `ggl` lists files matching a pattern. + - `ggL` lists files that are not matching a pattern. - `ggv` displays lines not matching a pattern. - `ggw` displays lines matching a pattern at word boundary. @@ -155,7 +155,7 @@ Aliases ### Remote - `gR` manages tracked repositories. - - `gRl` displays remote names and URLs. + - `gRl` lists remote names and their URLs. - `gRa` adds a new remote. - `gRx` removes a remote. - `gRm` renames a remote. From db384b2ac6291c4d446ab47460cee6d917db87ea Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sun, 5 May 2013 21:58:07 -0400 Subject: [PATCH 30/35] Remove ununsed variable --- modules/git/functions/git-info | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 5e8f9cac4e..d4b87c2f49 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -156,7 +156,6 @@ function git-info { local indexed_formatted local -A info_formats local info_format - local line_number=0 local modified=0 local modified_format local modified_formatted From a7623aad6b6603beb72b469a4ee948053014b918 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Mon, 13 May 2013 14:27:32 -0400 Subject: [PATCH 31/35] [Fix #307] Do not auto-off git-info Instead of turning off git-info when CTRL+C is caught, show instructions on how to turn it off manually. --- modules/git/functions/git-info | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index d4b87c2f49..9911310c07 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -89,7 +89,7 @@ function _git-action { return 1 } -# Turns off git-info for the current repository. +# Instructs the user on how to turn off git-info for the current repository. function _git-info-abort { if ! is-true "$_git_info_executing"; then return 1 @@ -99,17 +99,18 @@ function _git-info-abort { Gathering status for certain repositories is time intensive. -By pressing CTRL + C, you have turned off prompt Git status -for this repository. + +To turn off in-prompt Git status for this repository, execute: + + git info off To revert, execute: + git-info on EOF unset _git_info_executing - git config --bool prompt.showinfo false - git-info return 0 } add-zsh-trap INT _git-info-abort @@ -209,7 +210,7 @@ function git-info { return 1 fi - # Used to abort and turn git-info off on SIGINT. + # Used to abort git-info on SIGINT. _git_info_executing=true # Ignore submodule status. From 39b88fe3342ff96a6e29e6f8ee17a15787ad63dd Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Fri, 17 May 2013 21:17:44 -0400 Subject: [PATCH 32/35] Remove the git-info SIGINT message Users should read the Git module README on how to turn git-info on and off. --- modules/git/functions/git-info | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index 9911310c07..1c16396265 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -89,32 +89,6 @@ function _git-action { return 1 } -# Instructs the user on how to turn off git-info for the current repository. -function _git-info-abort { - if ! is-true "$_git_info_executing"; then - return 1 - fi - - cat >&2 < Date: Sat, 18 May 2013 16:49:09 -0400 Subject: [PATCH 33/35] [Fix #103] Add documentation for editor --- modules/editor/README.md | 63 ++++++++++++++++++++++++++++++++++++++++ modules/editor/init.zsh | 36 ----------------------- 2 files changed, 63 insertions(+), 36 deletions(-) create mode 100644 modules/editor/README.md diff --git a/modules/editor/README.md b/modules/editor/README.md new file mode 100644 index 0000000000..03bc02f236 --- /dev/null +++ b/modules/editor/README.md @@ -0,0 +1,63 @@ +Editor +====== + +Sets key bindings. + +Settings +-------- + +### Key bindings + +To enable key bindings, add the following to *zpreztorc*, and replace 'map' with +'emacs' or 'vi'. + + zstyle ':prezto:module:editor' keymap 'map' + +### Dot Expansion + +To enable the auto conversion of .... to ../.., add the following to +*zpreztorc*. + + zstyle ':prezto:module:editor' dot-expansion 'yes' + +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 '>>>' + +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' + +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' + +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 '<<<' + +To indicate when the editor is completing, add the following to your +`theme_prompt_setup` function. + + zstyle ':prezto:module:editor:info:completing' format '...' + +Then add `$editor_info[context]`, where context is *keymap*, *insert*, or +*overwrite*, to `$PROMPT` or `$RPROMPT` and call `editor-info` in the +`prompt_name_preexec` hook function. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][1].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: https://github.com/sorin-ionescu/oh-my-zsh/issues + diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index b905face3a..4838ba74ad 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -4,42 +4,6 @@ # Authors: # Sorin Ionescu # -# Usage: -# To enable key bindings, add the following to zpreztorc, and replace 'map' -# with 'emacs' or 'vi. -# -# zstyle ':prezto:module:editor' keymap 'map' -# -# To enable the auto conversion of .... to ../.., add the following to -# zpreztorc. -# -# zstyle ':prezto:module:editor' dot-expansion 'yes' -# -# 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 '>>>' -# -# 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' -# -# 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' -# -# 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 '<<<' -# -# To indicate when the editor is completing, add the following to your theme -# prompt setup function. -# -# zstyle ':prezto:module:editor:info:completing' format '...' -# # Return if requirements are not found. if [[ "$TERM" == 'dumb' ]]; then From fcab2a17132f96b2f8f312074841571d0216b69e Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sat, 18 May 2013 19:27:40 -0400 Subject: [PATCH 34/35] [Fix #425] Rewrite module ssh-agent; rename it to ssh --- modules/ssh-agent/README.md | 36 --------------------- modules/ssh-agent/init.zsh | 62 ------------------------------------- modules/ssh/README.md | 28 +++++++++++++++++ modules/ssh/init.zsh | 48 ++++++++++++++++++++++++++++ runcoms/zpreztorc | 9 ++---- 5 files changed, 79 insertions(+), 104 deletions(-) delete mode 100644 modules/ssh-agent/README.md delete mode 100644 modules/ssh-agent/init.zsh create mode 100644 modules/ssh/README.md create mode 100644 modules/ssh/init.zsh diff --git a/modules/ssh-agent/README.md b/modules/ssh-agent/README.md deleted file mode 100644 index 392a8666fb..0000000000 --- a/modules/ssh-agent/README.md +++ /dev/null @@ -1,36 +0,0 @@ -SSH-Agent -========= - -Provides for an easier use of [ssh-agent][1]. - -Settings --------- - -### Agent Forwarding - -To enable SSH-Agent forwarding, add the following line to *zpreztorc*: - - zstyle ':prezto:module:ssh-agent' forwarding 'yes' - -### Identities - -To load multiple identities, add the following line to *zpreztorc*: - - zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github' - -Authors -------- - -*The authors of this module should be contacted via the [issue tracker][2].* - - - [Robby Russell](https://github.com/robbyrussell) - - [Theodore Robert Campbell Jr](https://github.com/trcjr) - - [Joseph M. Reagle Jr.](https://github.com/reagle) - - [Florent Thoumie](https://github.com/flz) - - [Jonas Pfenniger](https://github.com/zimbatm) - - [Gareth Owen](https://github.com/gwjo) - - [Sorin Ionescu](https://github.com/sorin-ionescu) - -[1]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1 -[2]: https://github.com/sorin-ionescu/prezto/issues - diff --git a/modules/ssh-agent/init.zsh b/modules/ssh-agent/init.zsh deleted file mode 100644 index 56215a4f74..0000000000 --- a/modules/ssh-agent/init.zsh +++ /dev/null @@ -1,62 +0,0 @@ -# -# Provides for an easier use of ssh-agent. -# -# Authors: -# Robby Russell -# Theodore Robert Campbell Jr -# Joseph M. Reagle Jr. -# Florent Thoumie -# Jonas Pfenniger -# gwjo -# Sorin Ionescu -# - -# Return if requirements are not found. -if (( ! $+commands[ssh-agent] )); then - return 1 -fi - -# Load dependencies. -pmodload 'helper' - -_ssh_agent_env="${HOME}/.ssh/environment-${HOST}" -_ssh_agent_forwarding= - -function _ssh-agent-start { - local -a identities - - # Start ssh-agent and setup the environment. - rm -f "${_ssh_agent_env}" - ssh-agent > "${_ssh_agent_env}" - chmod 600 "${_ssh_agent_env}" - source "${_ssh_agent_env}" > /dev/null - - # Load identities. - zstyle -a ':prezto:module:ssh-agent' identities 'identities' - - if (( ${#identities} > 0 )); then - ssh-add "${HOME}/.ssh/${^identities[@]}" - else - ssh-add - fi -} - -# Test if agent-forwarding is enabled. -zstyle -b ':prezto:module:ssh-agent' forwarding '_ssh_agent_forwarding' -if is-true "${_ssh_agent_forwarding}" && [[ -n "$SSH_AUTH_SOCK" ]]; then - # Add a nifty symlink for screen/tmux if agent forwarding. - [[ -L "$SSH_AUTH_SOCK" ]] || ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen -elif [[ -s "${_ssh_agent_env}" ]]; then - # Source SSH settings, if applicable. - source "${_ssh_agent_env}" > /dev/null - ps -ef | grep "${SSH_AGENT_PID}" | grep -q 'ssh-agent$' || { - _ssh-agent-start; - } -else - _ssh-agent-start; -fi - -# Tidy up after ourselves. -unfunction _ssh-agent-start -unset _ssh_agent_{env,forwarding} - diff --git a/modules/ssh/README.md b/modules/ssh/README.md new file mode 100644 index 0000000000..e953a60193 --- /dev/null +++ b/modules/ssh/README.md @@ -0,0 +1,28 @@ +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. + +Settings +-------- + +### Identities + +To load multiple identities, add the following line to *zpreztorc*: + + zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_dsa' 'id_github' + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][3].* + + - [Sorin Ionescu](https://github.com/sorin-ionescu) + +[1]: http://www.openssh.com +[2]: http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1 +[3]: https://github.com/sorin-ionescu/prezto/issues + diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh new file mode 100644 index 0000000000..447846f56f --- /dev/null +++ b/modules/ssh/init.zsh @@ -0,0 +1,48 @@ +# +# Provides for an easier use of SSH by setting up ssh-agent. +# +# Authors: +# Sorin Ionescu +# + +# Return if requirements are not found. +if [[ "$OSTYPE" == darwin* ]] || (( ! $+commands[ssh-agent] )); then + return 1 +fi + +# Set the path to the SSH directory. +_ssh_dir="$HOME/.ssh" + +# Set the path to the environment file if not set by another module. +_ssh_agent_env="${_ssh_agent_env:-$TMPDIR/ssh-agent.env}" + +# Set the path to the persistent authentication socket. +_ssh_agent_sock="$TMPDIR/ssh-agent.sock" + +# Start ssh-agent if not started. +if [[ ! -S "$SSH_AUTH_SOCK" ]]; then + eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")" +else + # Export environment variables. + source "$_ssh_agent_env" 2> /dev/null +fi + +# Load identities. +if ssh-add -l 2>&1 | grep 'The agent has no identities'; then + zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities' + if (( ${#identities} > 0 )); then + ssh-add "$_ssh_dir/${^_ssh_identities[@]}" + else + ssh-add + fi +fi + +# Create a persistent SSH authentication socket. +if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then + ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock" + export SSH_AUTH_SOCK="$_ssh_agent_sock" +fi + +# Clean up. +unset _ssh_{dir,identities} _ssh_agent_{env,sock} + diff --git a/runcoms/zpreztorc b/runcoms/zpreztorc index 4fe15fc98d..5eca1a0d35 100644 --- a/runcoms/zpreztorc +++ b/runcoms/zpreztorc @@ -95,14 +95,11 @@ zstyle ':prezto:module:prompt' theme 'sorin' # zstyle ':prezto:module:screen' auto-start 'yes' # -# SSH-Agent +# SSH # -# Enable ssh-agent forwarding. -# zstyle ':prezto:module:ssh-agent' forwarding 'yes' - -# Set ssh-agent identities to load. -# zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github' +# Set the SSH identities to load into the agent. +# zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github' # # Syntax Highlighting From 1622abb830aef7c9cb33442e782d78c83bb1b2ed Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sat, 18 May 2013 19:27:40 -0400 Subject: [PATCH 35/35] Make gpg-agent and ssh-agent work with each other --- modules/gpg/README.md | 11 +++++++++++ modules/gpg/init.zsh | 27 ++++++++++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/modules/gpg/README.md b/modules/gpg/README.md index 05db90134a..b13e33e9bb 100644 --- a/modules/gpg/README.md +++ b/modules/gpg/README.md @@ -3,6 +3,17 @@ GPG Provides for an easier use of [GPG][1] by setting up [gpg-agent][2]. +### SSH + +To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in +replacement for `ssh-agent`, add the following line to +*~/.gnupg/gpg-agent.conf*: + + enable-ssh-support + +When OpenSSH Agent protocol emulation is enabled, this module will load the SSH +module for additional processing. + Authors ------- diff --git a/modules/gpg/init.zsh b/modules/gpg/init.zsh index f1759420df..2e4c4eab02 100644 --- a/modules/gpg/init.zsh +++ b/modules/gpg/init.zsh @@ -10,19 +10,32 @@ if (( ! $+commands[gpg-agent] )); then return 1 fi -# Set the default path to the gpg-agent-info file. -_gpg_agent_info="$HOME/.gpg-agent-info" +# Set the default paths to gpg-agent files. +_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf" +_gpg_agent_env="$TMPDIR/gpg-agent.env" # Start gpg-agent if not started. -ps -U "$USER" -o ucomm | grep -q gpg-agent \ - || gpg-agent --daemon >! "$_gpg_agent_info" +if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then + eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")" +else + # Export environment variables. + source "$_gpg_agent_env" 2> /dev/null +fi -# Export environment variables. +# Inform gpg-agent of the current TTY for user prompts. export GPG_TTY="$(tty)" -source "$_gpg_agent_info" + +# Integrate with the SSH module. +if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then + # Override the ssh-agent environment file default path. + _ssh_agent_env="$_gpg_agent_env" + + # Load the SSH module for additional processing. + pmodload 'ssh' +fi # Clean up. -unset _gpg_agent_info +unset _gpg_agent_{conf,env} # Disable GUI prompts inside SSH. if [[ -n "$SSH_CONNECTION" ]]; then