1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-11-20 14:04:03 +01:00
zsh/Completion/User/_lp
2000-01-05 14:14:46 +00:00

59 lines
1.5 KiB
Plaintext

#compdef lp lpr lpq lprm
local file expl ret=1 list disp strs shown
if (( ! $+_lp_cache )); then
file=( /etc/(printcap|printers.conf)(N) )
if (( $#file )); then
_lp_cache=( "${(@)${(@s:|:)${(@)${(@f)$(< $file[1])}:#[ \#]*}%%:*}%%[ ]*}" )
else
# Default value. Could probably be improved
_lp_cache=( lp0 )
fi
fi
if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
_wanted printers expl printer && compadd "$expl" - "$_lp_cache[@]"
else
if [[ "$words[1]" = (lpq|lprm) ]]; then
list=( "${(@M)${(f@)$(lpq)}:#[0-9]*}" )
if (( $#list )); then
_tags users jobs
while _tags; do
if _requested users expl user; then
strs=( "${(@)${(@)list##[^ ]##[ ]##[^ ]##[ ]##}%%[ ]*}" )
if [[ -z "$shown" ]] &&
zstyle -t ":completion:${curcontext}:users" verbose; then
disp=(-ld list)
shown=yes
else
disp=()
fi
compadd "$expl[@]" "$disp[@]" - "$strs[@]" || _users && ret=0
fi
if _requested jobs expl job; then
strs=( "${(@)${(@)list##[^ ]##[ ]##[^ ]##[ ]##[^ ]##[ ]##}%%[ ]*}" )
if [[ -z "$shown" ]] &&
zstyle -t ":completion:${curcontext}:jobs" verbose; then
disp=(-ld list)
shown=yes
else
disp=()
fi
compadd "$expl[@]" "$disp[@]" - "$strs[@]" && ret=0
fi
(( ret )) || return 0
done
else
_message 'no print jobs'
fi
return 1
else
_ps
fi
fi