diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Completion/X/Command/_acroread | 28 |
2 files changed, 27 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index 5d1ff2ef1..c6a106681 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-01 Peter Stephenson <pws@csr.com> + + * 23203: Completion/X/Command/_acroread: use -version + to get version (spotted by Zvi) and fix the other methods + as fallback. + 2007-02-27 Peter Stephenson <p.w.stephenson@ntlworld.com> * unposted: Doc/Zsh/compsys.yo: document now useful -t diff --git a/Completion/X/Command/_acroread b/Completion/X/Command/_acroread index c2832d513..51d64a475 100644 --- a/Completion/X/Command/_acroread +++ b/Completion/X/Command/_acroread @@ -1,15 +1,29 @@ #compdef acroread local curcontext="$curcontext" state line +local cmdfile -# Try extracting the version number directly from the executable. -# (This will fail if the executable is a wrapper script for acroread.) -local ver=${${${(Mf)"$(<$commands[$words[1]])"}:#ver=*}##ver=} -[[ -n $ver ]] && _acroread_version=$ver +if [[ -z $_acroread_version ]]; then + _acroread_version="$($words[1] -version 2>/dev/null)" +fi + +if [[ -z $_acroread_version ]]; then + if [[ $words[1] = */* && -x $words[1] ]]; then + cmdfile=$words[1] + elif [[ -x $commands[$words[1]] ]]; then + cmdfile=$commands[$words[1]] + fi + + # Try extracting the version number directly from the executable. + # (This will fail if the executable is a wrapper script for acroread.) + _acroread_version=${${(M)${(f)"$(<$cmdfile)"}:#ver=*}##ver=} -if (( ! $+_acroread_version )); then - local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]} - _acroread_version=${${${(Mf)"$(<$acropath)"}:#ver=*}##ver=} + if [[ -z $_acroread_version ]]; then + local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]} + if [[ -r $acropath ]]; then + _acroread_version=${${(M)${(f)"$(<$acropath)"}:#ver=*}##ver=} + fi + fi fi if [[ $_acroread_version == 7.* ]]; then |