about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Unix/Command/_gs57
1 files changed, 57 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_gs b/Completion/Unix/Command/_gs
new file mode 100644
index 000000000..530edbe91
--- /dev/null
+++ b/Completion/Unix/Command/_gs
@@ -0,0 +1,57 @@
+#compdef gs ghostscript
+
+if compset -N --; then
+  if [[ CURRENT -eq 1 ]]; then
+    _pspdf
+  else
+    _message 'userdict ARGUMENTS'
+    return 1
+  fi
+else
+  local curcontext="$curcontext" state line ret=1
+  typeset -A opt_args
+
+  _x_arguments -C \
+    '-q[quiet startup]' \
+    '-g-[set device size]:device size (<width>x<height>):' \
+    '-r-[set resolution]:resolution (<val> or <x>x<y>):' \
+    '-I[add search paths]:search paths:_dir_list' \
+    \*-{d,D}'-[define name with definition]:def:->dname' \
+    \*-{s,S}'-[define name with value]:def:->sname' \
+    '*:PostScript or PDF file:_pspdf' && ret=0
+
+  case "$state" in
+  dname)
+    if [[ "$PREFIX" = *\=* ]]; then
+      _message 'systemdict definition value'
+    else
+      _wanted names expl 'systemdict definition name' \
+          compadd -M 'm:{a-z}={A-Z}' - \
+                  DISKFONTS NOCACHE NOBIND NODISPLAY NOPAUSE PLATFONTS SAFER \
+                  WRITESYSTEMDICT && ret=0
+    fi
+    ;;
+  sname)
+    if compset -P '*='; then
+      case "$IPREFIX" in
+      *DEVICE\=)
+        _wanted devices expl 'ghostscript device' \
+            compadd - "${(@)${=${$(_call_program devices gs -h)##* devices:}%%Search path:*}:#}" && ret=0
+        ;;
+      *OutputFile\=)
+        _description files expl 'output file'
+        _files "$expl[@]" && ret=0
+        ;;
+      *)
+        _message 'systemdict value'
+        return 1
+      esac
+    else
+      _wanted names expl 'systemdict name' \
+          compadd -S\= -M 'm:{a-z}={A-Z}' - DEVICE OutputFile && ret=0
+    fi
+    ;;
+  esac
+
+  return ret
+fi