about summary refs log tree commit diff
path: root/Completion/User/_gs
blob: e81611ef941cbf5d3d6674af462173e02ccf5969 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#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 "$expl[@]" -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 "$expl[@]" - "${(@)${=${$(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 "$expl[@]" -S\= -M 'm:{a-z}={A-Z}' - DEVICE OutputFile &&
              ret=0
    fi
    ;;
  esac

  return ret
fi