zsh completion: enhance store navigation
Wouter
info at lsof.nl
Mon Jul 9 14:29:43 CEST 2018
Hi Igor - and list,
Here's a new (properly formatted) patch. The parameter name is now
'non-recursive-completion' which is slightly more descriptive and also
more compliant with zsh.
If there are no objections, I'd like to request this change being added
to mainstream.
=====
diff --git a/src/completion/pass.zsh-completion
b/src/completion/pass.zsh-completion
index 27ce15a..5af97df 100644
--- a/src/completion/pass.zsh-completion
+++ b/src/completion/pass.zsh-completion
@@ -17,6 +17,11 @@
# PASSWORD_STORE_DIR=$HOME/work/pass pass $@
# }
+# By default, completed 'directories' within the store will not have a
trailing
+# slash. Furthermore, the offered items will be looked up recursively.
+# To change this, set the 'non-recursive-completion' flag to true as
follows:
+# `zstyle ':completion:*:*:pass:*' non-recursive-completion true`.
+
_pass () {
local cmd
@@ -124,7 +129,12 @@ _pass_complete_entries_helper () {
local IFS=$'\n'
local prefix
zstyle -s ":completion:${curcontext}:" prefix prefix ||
prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
- _values -C 'passwords' ${$(find -L "$prefix" \( -name .git -o -name
.gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e
"s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' | sort):-""}
+ zstyle -t ':completion:*:*:pass:*' non-recursive-completion
+ if [ $? -eq 0 ]; then
+ _files -W $prefix -g '*.gpg(:r)'
+ else
+ _values -C 'passwords' ${$(find -L "$prefix" \( -name .git -o
-name .gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e
"s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' | sort):-""}
+ fi
}
_pass_complete_entries_with_subdirs () {
=====
Best regards,
Wouter
Op 04-07-18 om 16:11 schreef yanchenko.igor at gmail.com:
> Hi Wouter,
>
> I just managed to test your patch, it works as a charm for me, I would
> ask to include it to mainstream, if there no other suggestion the
> option name.
>
> Thank you.
>
> On Tue, Jul 3, 2018 at 11:05 PM Wouter <info at lsof.nl
> <mailto:info at lsof.nl>> wrote:
>
> I see, so what do you think about my patch? If the flag had a
> better name that is...
>
> I do not really like how one flag causes two changes in behaviour,
> but if the name reflects that (e.g. 'alternative_completion') it
> might be okay.
>
>
> Op 03-07-18 om 22:24 schreef yanchenko.igor at gmail.com
> <mailto:yanchenko.igor at gmail.com>:
>> I wanted to make a solution that I can manage by flags, not by
>> having a separate _pass file, that's what I mean by elegant
>> solution.
>>
>> On Tue 3 Jul 2018, 22:20 Wouter, <info at lsof.nl
>> <mailto:info at lsof.nl>> wrote:
>>
>> Op 03-07-18 om 15:57 schreef yanchenko.igor at gmail.com
>> <mailto:yanchenko.igor at gmail.com>:
>> > Hi Wouter,
>> > I also prefer that behavior, I made a copy of _pass and did
>> this change:
>> >
>> > 127c127
>> > < _files -W $prefix -g '*.gpg(:r)'
>> > ---
>> > > _values -C 'passwords' ${$(find -L "$prefix" \(
>> -name .git -o
>> > -name .gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e
>> > "s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' |
>> sort):-""}
>> >
>> > I didn't find more elegant solution.
>> Hi Igor,
>>
>> Thank you, I actually like it. It's a rather clean solution
>> isn't it?
>>
>> I'd like to make it optional through zstyle so it can be
>> enabled without
>> breaking current behaviour. Maybe eventually it could then be
>> committed
>> to the repo. Something along the lines of this (although I
>> had no
>> inspiration for a proper flag name):
>>
>> 19a20,24
>> > # By default, completed 'directories' within the store
>> will not have
>> a trailing
>> > # slash. Furthermore, the offered items will be looked up
>> recursively. To change
>> > # this, set the 'no_recurse' flag to true as follows:
>> > # `zstyle ':completion:*:*:pass:*' no_recurse true`.
>> >
>> 127c132,137
>> < _values -C 'passwords' ${$(find -L "$prefix" \( -name
>> .git -o
>> -name .gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e
>> "s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' |
>> sort):-""}
>> ---
>> > zstyle -t ':completion:*:*:pass:*' no_recurse
>> > if [ $? -eq 0 ]; then
>> > _files -W $prefix -g '*.gpg(:r)'
>> > else
>> > _values -C 'passwords' ${$(find -L "$prefix" \(
>> -name .git -o
>> -name .gpg-id \) -prune -o $@ -print 2>/dev/null | sed -e
>> "s#${prefix}/\{0,1\}##" -e 's#\.gpg##' -e 's#\\#\\\\#' |
>> sort):-""}
>> > fi
>>
>> Best regards,
>> Wouter
>> _______________________________________________
>> Password-Store mailing list
>> Password-Store at lists.zx2c4.com
>> <mailto:Password-Store at lists.zx2c4.com>
>> https://lists.zx2c4.com/mailman/listinfo/password-store
>>
>
> _______________________________________________
> Password-Store mailing list
> Password-Store at lists.zx2c4.com <mailto:Password-Store at lists.zx2c4.com>
> https://lists.zx2c4.com/mailman/listinfo/password-store
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.zx2c4.com/pipermail/password-store/attachments/20180709/4167e371/attachment.html>
More information about the Password-Store
mailing list