about summary refs log tree commit diff
path: root/Completion/User/_printers
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2000-04-28 11:20:55 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2000-04-28 11:20:55 +0000
commita3cf03751aea772f1e0307c8899b5e4f751ff24c (patch)
treedf1b5889770d2bd16e98569690dbe4b81e0aeb90 /Completion/User/_printers
parentb577adea409e603018c632478fe563dfa5fdeb7f (diff)
downloadzsh-a3cf03751aea772f1e0307c8899b5e4f751ff24c.tar.gz
zsh-a3cf03751aea772f1e0307c8899b5e4f751ff24c.tar.xz
zsh-a3cf03751aea772f1e0307c8899b5e4f751ff24c.zip
Tanaka: printer-detection moved to new _printers; used by _enscript (11001)
Diffstat (limited to 'Completion/User/_printers')
-rw-r--r--Completion/User/_printers58
1 files changed, 58 insertions, 0 deletions
diff --git a/Completion/User/_printers b/Completion/User/_printers
new file mode 100644
index 000000000..a84a5e559
--- /dev/null
+++ b/Completion/User/_printers
@@ -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