From: Haakon Riiser <haakon.riiser@fys.uio.no>
To: zsh-workers@sunsite.dk
Subject: Re: Updated _acroread completer
Date: Fri, 15 Apr 2005 13:11:58 +0200 [thread overview]
Message-ID: <20050415111158.GA1709@s> (raw)
In-Reply-To: <20050414134703.GA7862@s>
> Unfortunately, determining the version number involves
> running acroread -help, which is a bit slow. I was thinking
> about caching the version number, but I'm not sure what's the
> recommended way of doing that. Is it OK if I just set a non-
> local variable _acroread_version?
I have now tried the non-local variable trick, and it works just
like I expected. I also noticed that the zsh completion system
has a set of caching functions (_store_cache, _retrieve_cache and
_cache_invalid). These functions apparently store data on disk,
so that the cache will outlive the zsh session. In my case,
that's problably not good, since running the expensive acroread
-help command is the only way to determine if the cache is invalid,
and thus I will save nothing when using these cache functions.
The version of _acroread that uses a non-local variable is included
below. I would appreciate it someone could tell me who I should
sent it to so that it can be included with the next version of zsh.
(Or better, if that person reads this message, and tells me that
the updated _acroread is now included. :-)
#------------------------------------------------------------------------------#
#compdef acroread
local curcontext="$curcontext" state line
# The output of acroread -version cannot be piped to stdout for some reason, so
# the version number must be read from ACROREAD-PREFIX/Reader/AcroVersion.
# Since acroread might have been started via a wrapper script, the only
# failsafe way of determining ACROREAD-PREFIX is to look at the output of
# acroread -help.
if [[ -z $_acroread_version ]]; then
local acropath=${${(s. .)${${(f)"$($words[1] -help 2>&1)"}[1]}}[2]}
local version_file=${acropath%/*}/../Reader/AcroVersion
[[ -r $version_file ]] && _acroread_version=$(< $version_file)
fi
if [[ $_acroread_version == 7.* ]]; then
_arguments -C \
'--display=:X display:_x_display' \
'--screen=:X screen (overrides the screen part of DISPLAY)' \
--sync \
'-geometry:[<width>x<height>][{+|-}<x offset>{+|-}<y offset>]' \
-help \
-iconic \
'*-setenv:<var>=<value>' \
-tempFile \
'-tempFileTitle:title' \
-openInNewWindow \
-version \
'-visual:X visual:_x_visual' \
'-toPostScript:*::PostScript conversion options:= ->tops' \
'*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
[[ -n "$state" ]] && _arguments \
'-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
-binary \
'-start:integer' \
'-end:integer' \
-optimizeForSpeed \
-landscape \
-reverse \
'(-even)-odd' \
'(-odd)-even' \
-commentsOff \
-annotsOff \
'(-level3)-level2' \
'(-level2)-level3' \
-printerhalftones \
-saveVM \
'-scale:integer' \
-shrink \
-expand \
'-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
'-transQuality:transparency flattening level:(1 2 3 4 5)' \
'*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
else
_x_arguments -C \
-help \
-helpall \
\*-iconic \
\*+iconic \
'-name:application name:_x_name' \
'*-setenv:<var>=<value>' \
-tempFile \
'-tempFileTitle:title' \
'(+useFrontEndProgram)-useFrontEndProgram' \
'(-useFrontEndProgram)+useFrontEndProgram' \
'-visual:X visual:_x_visual' \
'-xrm:X resource specification:_x_resource' \
'-toPostScript:*::PostScript conversion options:= ->tops' \
'*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
[[ -n "$state" ]] && _arguments \
'-pairs:*:pdf_file_1 ps_file_1 ...:_files -g "*.(#i)(pdf|ps)(-.)"' \
-binary \
'-start:integer' \
'-end:integer' \
-optimizeForSpeed \
-landscape \
-reverse \
'(-even)-odd' \
'(-odd)-even' \
-commentsOff \
'(-level2 -level3)-level1' \
'(-level1 -level3)-level2' \
'(-level1 -level2)-level3' \
-printerhalftones \
-saveVM \
'-scale:integer' \
-shrink \
'-size:page size (or custom size wxh in points):(letter tabloid ledger legal executive a3 a4 a5 b4 b5)' \
'-transQuality:transparency flattening level:(1 2 3 4 5)' \
'*:PDF file:_files -g "*.(#i)pdf(-.)"' && return
fi
return 1
#------------------------------------------------------------------------------#
--
Haakon
next prev parent reply other threads:[~2005-04-15 11:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-14 13:47 Haakon Riiser
2005-04-15 11:11 ` Haakon Riiser [this message]
2005-04-25 7:43 ` Oliver Kiddle
2005-04-25 8:41 ` Haakon Riiser
2005-04-25 8:54 ` Oliver Kiddle
2005-04-25 8:58 ` Haakon Riiser
2005-04-25 9:39 ` Peter Stephenson
2005-04-25 13:00 ` Haakon Riiser
2005-04-25 13:36 ` Peter Stephenson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050415111158.GA1709@s \
--to=haakon.riiser@fys.uio.no \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).