• Marc Cornellà's avatar
    Fix pass zsh completion and autoloading · 142a6c7f
    Marc Cornellà authored
    When autocompleting from `pass <TAB>', sometimes the following errors
    appear:
    
      _values:compvalues:10: not enough arguments
      find: `/home/user/.password-store': No such file or directory
      _values:compvalues:10: not enough arguments
      find: `/home/user/.password-store': No such file or directory
    
    The `_values' error happens when there is no password-store folder *or*
    there are no passwords in pass; the `find' error only when there is no
    password-store folder.
    
    We can trace it back to line 108, which contains the only `_values'
    statement that is executed when we autocomplete from pass. We confirm
    this by following the trail of execution, which is
    
      _pass -> _pass_cmd_show -> _pass_complete_entries ->
            -> _pass_complete_entries_helper
    
    If we try running the command inside `$()' on line 104, we see that it
    returns nothing and the output is blank. This means that `_values' only
    receives 1 of its 2 mandatory parameters, therefore the above error is
    triggered (not enough arguments).
    
    That is unless we don't have a password-store folder, in which case the
    `find: [...] no such file or directory' error is *also* triggered.
    
    We solve the first error by supplying a default value of "" if the
    command outputs nothing, using the zsh construct ${var:-else}.
    
    We solve the second error by redirecting the find command's stderr output
    to /dev/null, so the error is effectively suppressed.
    
    * * * *
    
    This patch also fixes the first tab completion, which currently only
    loads the completion function definition.
    
    We do this by adding a `_pass' statement at the end of the file, which
    runs the `_pass' completion function after loading its definition.
    This is the standard way an autoloaded function works; for other examples
    look at zsh's official completion files.
    142a6c7f
Name
Last commit
Last update
..
ant Loading commit data...
apache2-macports Loading commit data...
archlinux Loading commit data...
atom Loading commit data...
autoenv Loading commit data...
autojump Loading commit data...
autopep8 Loading commit data...
aws Loading commit data...
battery Loading commit data...
bower Loading commit data...
brew Loading commit data...
brew-cask Loading commit data...
bundler Loading commit data...
bwana Loading commit data...
cabal Loading commit data...
cake Loading commit data...
capistrano Loading commit data...
catimg Loading commit data...
celery Loading commit data...
chruby Loading commit data...
cloudapp Loading commit data...
coffee Loading commit data...
colemak Loading commit data...
colored-man Loading commit data...
colorize Loading commit data...
command-not-found Loading commit data...
common-aliases Loading commit data...
compleat Loading commit data...
composer Loading commit data...
copydir Loading commit data...
copyfile Loading commit data...
cp Loading commit data...
cpanm Loading commit data...
debian Loading commit data...
dircycle Loading commit data...
dirhistory Loading commit data...
dirpersist Loading commit data...
django Loading commit data...
docker Loading commit data...
emacs Loading commit data...
emoji-clock Loading commit data...
encode64 Loading commit data...
extract Loading commit data...
fabric Loading commit data...
fasd Loading commit data...
fastfile Loading commit data...
fbterm Loading commit data...
forklift Loading commit data...
frontend-search Loading commit data...
gas Loading commit data...
gem Loading commit data...
git Loading commit data...
git-extras Loading commit data...
git-flow Loading commit data...
git-flow-avh Loading commit data...
git-hubflow Loading commit data...
git-prompt Loading commit data...
git-remote-branch Loading commit data...
gitfast Loading commit data...
github Loading commit data...
gitignore Loading commit data...
glassfish Loading commit data...
gnu-utils Loading commit data...
go Loading commit data...
golang Loading commit data...
gpg-agent Loading commit data...
gradle Loading commit data...
grails Loading commit data...
heroku Loading commit data...
history Loading commit data...
history-substring-search Loading commit data...
iwhois Loading commit data...
jake-node Loading commit data...
jira Loading commit data...
jruby Loading commit data...
jsontools Loading commit data...
jump Loading commit data...
kate Loading commit data...
knife Loading commit data...
knife_ssh Loading commit data...
laravel Loading commit data...
laravel4 Loading commit data...
last-working-dir Loading commit data...
lein Loading commit data...
lighthouse Loading commit data...
lol Loading commit data...
macports Loading commit data...
mercurial Loading commit data...
meteor Loading commit data...
mix Loading commit data...
mosh Loading commit data...
mvn Loading commit data...
mysql-macports Loading commit data...
nanoc Loading commit data...
node Loading commit data...
npm Loading commit data...
nvm Loading commit data...
nyan Loading commit data...
osx Loading commit data...
pass Loading commit data...
pep8 Loading commit data...
per-directory-history Loading commit data...
perl Loading commit data...
phing Loading commit data...
pip Loading commit data...
pj Loading commit data...
pod Loading commit data...
postgres Loading commit data...
pow Loading commit data...
powder Loading commit data...
powify Loading commit data...
profiles Loading commit data...
pyenv Loading commit data...
pylint Loading commit data...
python Loading commit data...
rails Loading commit data...
rails3 Loading commit data...
rails4 Loading commit data...
rake Loading commit data...
rake-fast Loading commit data...
rand-quote Loading commit data...
rbenv Loading commit data...
rbfu Loading commit data...
rebar Loading commit data...
redis-cli Loading commit data...
repo Loading commit data...
rsync Loading commit data...
ruby Loading commit data...
rvm Loading commit data...
safe-paste Loading commit data...
sbt Loading commit data...
scala Loading commit data...
scd Loading commit data...
screen Loading commit data...
sfffe Loading commit data...
singlechar Loading commit data...
sprunge Loading commit data...
ssh-agent Loading commit data...
sublime Loading commit data...
sudo Loading commit data...
supervisor Loading commit data...
suse Loading commit data...
svn Loading commit data...
svn-fast-info Loading commit data...
symfony Loading commit data...
symfony2 Loading commit data...
systemadmin Loading commit data...
systemd Loading commit data...
taskwarrior Loading commit data...
terminalapp Loading commit data...
terminitor Loading commit data...
textmate Loading commit data...
themes Loading commit data...
thor Loading commit data...
tmux Loading commit data...
tmuxinator Loading commit data...
torrent Loading commit data...
urltools Loading commit data...
vagrant Loading commit data...
vi-mode Loading commit data...
vim-interaction Loading commit data...
virtualenv Loading commit data...
virtualenvwrapper Loading commit data...
vundle Loading commit data...
wakeonlan Loading commit data...
wd Loading commit data...
web-search Loading commit data...
xcode Loading commit data...
yii Loading commit data...
yum Loading commit data...
z Loading commit data...
zeus Loading commit data...
zsh_reload Loading commit data...