mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-23 16:40:24 +02:00
Tanaka: printer-detection moved to new _printers; used by _enscript (11001)
This commit is contained in:
parent
b577adea40
commit
a3cf03751a
5 changed files with 67 additions and 58 deletions
|
@ -7,7 +7,7 @@ DISTFILES_SRC='
|
|||
_mailboxes _make _man _mh _mount _mutt _my_accounts _mysql_utils _nedit
|
||||
_netscape _nslookup _other_accounts _pack _patch _pbm _pdf _perl
|
||||
_perl_basepods _perl_builtin_funcs _perl_modules _perldoc
|
||||
_ports _prcs _prompt _ps _pspdf _psutils _rcs _rlogin _sh _socket
|
||||
_ports _prcs _printers _prompt _ps _pspdf _psutils _rcs _rlogin _sh _socket
|
||||
_ssh _strip _stty _su _sudo _tar _tar_archive _telnet _tex _texi
|
||||
_tiff _tilde_files _uncompress _unpack _urls _use_lo _user_at_host
|
||||
_users _users_on _webbrowser _wget _whereis _whois _xargs _yodl _yp
|
||||
|
|
|
@ -18,9 +18,9 @@ _arguments -s \
|
|||
'(-c)--truncate-lines' \
|
||||
'(--line-numbers)-C-:start line:' \
|
||||
'(-C)--line-numbers=-:start line:' \
|
||||
'(--printer -d )-P+:printer name:' \
|
||||
'(--printer -P)-d+:printer name:' \
|
||||
'( -d -P)--printer=:printer name:' \
|
||||
'(--printer -d )-P+:printer name: _printers' \
|
||||
'(--printer -P)-d+:printer name: _printers' \
|
||||
'( -d -P)--printer=:printer name: _printers' \
|
||||
'*-D+:key\:value:' \
|
||||
'*--setpagedevice=:key\:value:' \
|
||||
'(--escapes)-e-:escape character:' \
|
||||
|
|
|
@ -2,61 +2,8 @@
|
|||
|
||||
local expl ret=1 printer list disp strs shown
|
||||
|
||||
if (( ! $+_lp_cache )); then
|
||||
local file entry names i
|
||||
|
||||
file=( /etc/(printcap|printers.conf)(N) )
|
||||
|
||||
_lp_cache=()
|
||||
_lp_alias_cache=()
|
||||
|
||||
if (( $#file )); then
|
||||
while read entry; do
|
||||
if [[ "$entry" = [^[:blank:]\#\*_]*:* ]]; then
|
||||
names=( "${(s:|:)entry%%:*}" )
|
||||
if [[ "$entry" = *:description=* ]]; then
|
||||
disp="${${entry##*:description=}%%:*}"
|
||||
elif [[ $#names -gt 1 && "$names[-1]" = *\ * ]] ;then
|
||||
disp="$names[-1]"
|
||||
else
|
||||
disp=''
|
||||
fi
|
||||
if [[ -n "$disp" ]]; then
|
||||
_lp_cache=( "$_lp_cache[@]" "${names[1]}:${disp}" )
|
||||
_lp_alias_cache=( "$_lp_alias_cache[@]" "${(@)^names[2,-1]:#*\ *}:${disp}" )
|
||||
else
|
||||
_lp_cache=( "$_lp_cache[@]" "${names[1]}" )
|
||||
_lp_alias_cache=( "$_lp_alias_cache[@]" "${(@)names[2,-1]:#*\ *}" )
|
||||
fi
|
||||
fi
|
||||
done < $file[1]
|
||||
fi
|
||||
(( $#_lp_cache )) || _lp_cache=( 'lp0:Guessed default printer' )
|
||||
(( $#_lp_alias_cache )) || unset _lp_alias_cache
|
||||
fi
|
||||
|
||||
if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
|
||||
if zstyle -T ":completion:${curcontext}:printers" verbose; then
|
||||
zformat -a list ' -- ' "$_lp_cache[@]"
|
||||
disp=(-ld list)
|
||||
else
|
||||
disp=()
|
||||
fi
|
||||
_wanted printers expl printer \
|
||||
compadd "$disp[@]" - "${(@)_lp_cache%%:*}" && return 0
|
||||
|
||||
(( $+_lp_alias_cache )) || return 1
|
||||
|
||||
if zstyle -T ":completion:${curcontext}:printers" verbose; then
|
||||
zformat -a list ' -- ' "$_lp_alias_cache[@]"
|
||||
disp=(-ld list)
|
||||
else
|
||||
disp=()
|
||||
fi
|
||||
_wanted printers expl printer \
|
||||
compadd "$disp[@]" - "${(@)_lp_alias_cache%%:*}" && return 0
|
||||
|
||||
return 1
|
||||
_printers
|
||||
else
|
||||
if [[ "${words[1]:t}" = (lpq|lprm) ]]; then
|
||||
if [[ "$words" = *-P* ]]; then
|
||||
|
|
58
Completion/User/_printers
Normal file
58
Completion/User/_printers
Normal file
|
@ -0,0 +1,58 @@
|
|||
#autoload
|
||||
|
||||
local expl ret=1 list disp
|
||||
|
||||
if (( ! $+_lp_cache )); then
|
||||
local file entry names i
|
||||
|
||||
file=( /etc/(printcap|printers.conf)(N) )
|
||||
|
||||
_lp_cache=()
|
||||
_lp_alias_cache=()
|
||||
|
||||
if (( $#file )); then
|
||||
while read entry; do
|
||||
if [[ "$entry" = [^[:blank:]\#\*_]*:* ]]; then
|
||||
names=( "${(s:|:)entry%%:*}" )
|
||||
if [[ "$entry" = *:description=* ]]; then
|
||||
disp="${${entry##*:description=}%%:*}"
|
||||
elif [[ $#names -gt 1 && "$names[-1]" = *\ * ]] ;then
|
||||
disp="$names[-1]"
|
||||
else
|
||||
disp=''
|
||||
fi
|
||||
if [[ -n "$disp" ]]; then
|
||||
_lp_cache=( "$_lp_cache[@]" "${names[1]}:${disp}" )
|
||||
_lp_alias_cache=( "$_lp_alias_cache[@]" "${(@)^names[2,-1]:#*\ *}:${disp}" )
|
||||
else
|
||||
_lp_cache=( "$_lp_cache[@]" "${names[1]}" )
|
||||
_lp_alias_cache=( "$_lp_alias_cache[@]" "${(@)names[2,-1]:#*\ *}" )
|
||||
fi
|
||||
fi
|
||||
done < $file[1]
|
||||
fi
|
||||
(( $#_lp_cache )) || _lp_cache=( 'lp0:Guessed default printer' )
|
||||
(( $#_lp_alias_cache )) || unset _lp_alias_cache
|
||||
fi
|
||||
|
||||
if zstyle -T ":completion:${curcontext}:printers" verbose; then
|
||||
zformat -a list ' -- ' "$_lp_cache[@]"
|
||||
disp=(-ld list)
|
||||
else
|
||||
disp=()
|
||||
fi
|
||||
_wanted printers expl printer \
|
||||
compadd "$disp[@]" - "${(@)_lp_cache%%:*}" && return 0
|
||||
|
||||
(( $+_lp_alias_cache )) || return 1
|
||||
|
||||
if zstyle -T ":completion:${curcontext}:printers" verbose; then
|
||||
zformat -a list ' -- ' "$_lp_alias_cache[@]"
|
||||
disp=(-ld list)
|
||||
else
|
||||
disp=()
|
||||
fi
|
||||
_wanted printers expl printer \
|
||||
compadd "$disp[@]" - "${(@)_lp_alias_cache%%:*}" && return 0
|
||||
|
||||
return 1
|
Loading…
Add table
Add a link
Reference in a new issue