password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

commit f82e9d6cf3bc3a12bdfce89bf319d76f79e66efc
parent 760c644a1d9f55c91b74521b112958966e00ea31
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Tue, 22 Apr 2014 18:39:47 +0200

zsh-completion: only remove next char if /

From Kevin:

I found a small bug in the zsh completions.  Basically when the
PASSWORD_STORE_DIR ends in a slash the first character of the
result is eaten, making completion essentially useless. (It does
this before determining matches).

This can be fixed by changing what is line 106 in my version from:

_values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name
.gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##'
| sort)

to

_values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name
.gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}/\\?##" -e
's#\.gpg##' | sort)

The difference is the first sed regex expression.  The original
version assumed that the next character was a slash and removed
it while the new version only removes it if it is a slash.

"s#${prefix}.##" -> "s#${prefix}/\\?##"

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reported-by: Kevin Cox <kevincox@kevincox.ca>

Diffstat:
Msrc/completion/pass.zsh-completion | 5++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/completion/pass.zsh-completion b/src/completion/pass.zsh-completion @@ -1,11 +1,10 @@ #compdef pass #autoload -# Copyright (C) 2012: +# Copyright (C) 2012 - 2014: # Johan Venant <jvenant@invicem.pro> # Brian Mattern <rephorm@rephorm.com> # Jason A. Donenfeld <Jason@zx2c4.com>. -# Santiago Borrazás <sanbor@gmail.com> # All Rights Reserved. # This file is licensed under the GPLv2+. Please see COPYING for more information. @@ -111,7 +110,7 @@ _pass_cmd_show () { _pass_complete_entries_helper () { local IFS=$'\n' local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}" - _values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}.##" -e 's#\.gpg##' | sort) + _values -C 'passwords' $(find -L "$prefix" \( -name .git -o -name .gpg-id \) -prune -o $@ -print | sed -e "s#${prefix}/\\?##" -e 's#\.gpg##' | sort) } _pass_complete_entries_with_subdirs () {