Commit b8668c657f35c57c8b38ee66527fabd88d1ef514
1 parent
29631cab
Zsh completion: don't autoload bashcompinit unconditionally
It is the user's responsibility to autoload bashcompinit. If we do it, we may overwrite a custom complete function. If we don't do it at all, it won't work out of the box. This fixes debian bug 1111509, reported by Vincent Lefèvre.
Showing
3 changed files
with
13 additions
and
3 deletions
completions/zsh/_qpdf
| 1 | 1 | #compdef qpdf |
| 2 | +if (( ! $+functions[_bash_complete] && ! $+functions[complete] && ! $+functions[compgen] )); then | |
| 3 | + # If the user has not loaded bashcompinit and hasn't otherwise | |
| 4 | + # defined the functions it defines, load it. This enables zsh | |
| 5 | + # completion to work out of the box for users with no custom | |
| 6 | + # configuration. See | |
| 7 | + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1111509 for | |
| 8 | + # additional discussion. | |
| 9 | + autoload -U +X bashcompinit && bashcompinit | |
| 10 | +fi | |
| 2 | 11 | eval "$(/usr/bin/qpdf --completion-zsh)" |
| 12 | +_bash_complete | ... | ... |
libqpdf/QPDFArgParser.cc
| ... | ... | @@ -190,8 +190,7 @@ QPDFArgParser::completionCommon(bool zsh) |
| 190 | 190 | // latter more characters ("$`\) are a problem and it's |
| 191 | 191 | // virtually impossible to escape those in a locale-independent |
| 192 | 192 | // way. |
| 193 | - std::cout << "autoload -U +X bashcompinit && bashcompinit &&" | |
| 194 | - << "complete -o bashdefault -o default -C '" << progname << "' " << m->whoami | |
| 193 | + std::cout << "complete -o bashdefault -o default -C '" << progname << "' " << m->whoami | |
| 195 | 194 | << "\n"; |
| 196 | 195 | } else { |
| 197 | 196 | // we need a function wrapper that discards arguments to avoid | ... | ... |
manual/release-notes.rst
| ... | ... | @@ -63,7 +63,8 @@ more detail. |
| 63 | 63 | AcroForm, Dests, Outlines, and PageLabels structures. |
| 64 | 64 | |
| 65 | 65 | - Fix completion scripts and handling to avoid leaking arguments |
| 66 | - into the environment during completion. | |
| 66 | + into the environment during completion and to correctly handle | |
| 67 | + ``bashcompinit`` for zsh users. | |
| 67 | 68 | |
| 68 | 69 | - Other enhancements |
| 69 | 70 | ... | ... |