summary refs log tree commit diff
path: root/Completion/Unix/Command/_java
blob: 30231c5eeeb1fc4acc92e5b537971e6ef4497040 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
#compdef javac java javadoc appletviewer jar jdb javah javap extcheck rmic rmiregistry rmid serialver native2ascii keytool jarsigner policytool

local expl tmp jdb_args jar_cmd match basedir ret=1
local curcontext="$curcontext" state line jf
typeset -A opt_args tmpassoc

jdb_args=()

case "$service" in
javac|jar)
  if compset -P @; then
    _wanted files expl 'option file' _files
    return
  fi
  ;| # continue
javac)
  _arguments -C \
    '-g-[generate debugging information]:debug:->debug' \
    '-A-[specify option to annotation processors]:option' \
    '-implicit\:-[control generation of class files for implicitly loaded sources]:implicit:(class none)' \
    '-nowarn[generate no warnings]' \
    '-verbose[output messages about what the compiler is doing]' \
    '-deprecation[output source locations where deprecated APIs are used]' \
    '(-cp -classpath)'{-cp,-classpath}'[specify where to find user class files]:class path:->classpath' \
    '-sourcepath[specify where to find input source files]:source path:->sourcepath' \
    '-bootclasspath[override location of bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
    '-extdirs[override location of installed extensions]:extensions directories:->extdirs' \
    '-d[specify where to place generated class files]:directory:_files -/' \
    '-encoding[specify character encoding used by source files]:encoding:->encoding' \
    '-proc\:-[control annotation processing]:annotation processing:(none only)' \
    '-processor[specify annotation processors to run]:class:_files' \
    '-processorpath[specify where to find annotation processors]:directory:_directories' \
    '-s[specify directory for generated source files]:directory:_directories' \
    '-source[provide source compatibility with specified release]:release:(1.{2..8} {5..8})' \
    '-target[specify VM version]:release:(1.{1..5})' \
    '(-)-help[print a synopsis of standard options]' \
    '(-)-version[print version information]' \
    '(-)-X[display information about non-standard options]' \
    '*:java source file:_files -g \*.java\(-.\)' && return 0
  ;;

jdb)
  jdb_args=(
    '-host[specify host to connect to]:host:_hosts'
    '-password[specify password]:password'
    '-attach[attach to running VM]:address'
    '-listen[wait for VM to connect]:address'
    '-listenany[wait for VM to connect at any available address]'
    '-launch[launch VM immediately]'
    '-listconnectors[list the connectors available in this VM]'
    '-connect[connect to target VM]:connector'
    -dbgtrace -tclient -tserver
    '-J-[java runtime option]:option'
  )
  ;&

java)
  _arguments -C \
    "$jdb_args[@]" \
    -client -server -d32 -d64 \
    '-agentlib\:-:agent library' \
    '-agentpath\:-:path:_directories' \
    '-javaagent\:-:path:_directories' \
    '(-cp -classpath)'{-cp,-classpath}'[specify path for user class files]:class path:->classpath' \
    '-D-[specify a property]:property:->property' \
    \*{-enableassertions,-ea}-::class \
    \*{-disableassertions,-da}-::class \
    '(-enablesystemassertions -esa -disablesystemassertions -dsa)'{-enablesystemassertions,-esa,-disablesystemassertions,-dsa} \
    '(-verbose:class)-verbose[print class information]' \
    '(-verbose)-verbose\:class[print class information]' \
    '-verbose\:gc[print gc information]' \
    '-verbose\:jni[print JNI information]' \
    '(- 1)-version[print version]' \
    '-showversion[print version and continue]' \
    '(- 1)-'{\?,help}'[print help message]' \
    '(- 1)-X-[non-standard java option]:option' \
    '(- 1)-jar[specify a program encapsulated as jar]:jar:_files -g \*.jar\(-.\)' \
    '(-):class:_java_class -m main ${(kv)opt_args[(i)(-classpath|-cp)]}' \
    '*::args:= _normal' \
     && return 0
  ;;

javadoc)
  _arguments -C \
    '-overview[specify overview file]:_files' \
    '-public[display public classes and members only]' \
    '-protected[display public/protected classes and members only (default)]' \
    '-package[display packages, public/protected classes and members only]' \
    '-private[display all classes and members]' \
    '-help[print help message]' \
    '-doclet[specify a doclet]:doclet:_java_class -t doclet ${(kv)opt_args[(i)-classpath]}' \
    '-docletpath[specify a path to search doclet]:doclet path:->docletpath' \
    '-1.1[Javadoc 1.1 compatible output]' \
    '-sourcepath[specify path for source files]:source path:->sourcepath' \
    '-classpath[specify path for user class files]:class path:->classpath' \
    '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
    '-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
    '-verbose[print verbose messages]' \
    '-locale[specify locale]:language_country_variant:' \
    '-encoding[specify character encoding for source files]:encoding:->encoding' \
    '-J-[specify java option]:java option:' \
    '-d[specify destination directory]:destination directory:_files -/' \
    '-use[display pages for use]' \
    '-version[include @version text]' \
    '-author[include @author text]' \
    '-splitindex[split index file for each alphabet]' \
    '-windowtitle[specify HTML title element]:title element:' \
    '-doctitle[specify title]:document title:' \
    '-header[specify header text]:header text:' \
    '-footer[specify footer text]:footer text:' \
    '-bottom[specify bottom text]:bottom text:' \
    '-link[generate a link to external reference classes]:document URL:' \
    '-linkoffline[generate a link for external reference class names]:document URL::package list URL:' \
    '-group[generate tables for each groupes]:group heading::package patterns:' \
    '-nodeprecated[do not document deprecated API]' \
    '-nodeprecatedlist[do not generate deprecated API list]' \
    '-notree[do not generate class and interface hierarchy]' \
    '-noindex[do not generate index]' \
    '-nohelp[do not generate help link]' \
    '-nonavbar[do not generate navigation bar]' \
    '-helpfile[specify alternative help link]:helpfile path/filename:' \
    '-stylesheet[specify alternative HTML style sheet]:stylesheet path/filename:' \
    '-docencoding[specify character encoding for output HTML files]:encoding:->encoding' \
    '*:package name, source file or @list:->docsrc' && ret=0
  ;;

appletviewer)
  _arguments -C \
    '-debug[run applet on jdb]' \
    '-encoding[specify character encoding for source files]:encoding:->encoding' \
    '-J-[specify java option]:java option:' \
    '*:URL:_urls' && return 0
  ;;

jar)
  if (( CURRENT == 2 )); then
    compset -P -
    _values -s '' 'jar command' \
      '(  t x u)c[create new archive]' \
      '(c   x u)t[list the table of archive]' \
      '(c t   u)x[extract files from archive]' \
      '(c t x  )u[update archive]' \
      'f[specify archive file]' \
      'v[verbose mode]' \
      '(e)m[specify manifest file]' \
      '(m)e[specify class of for application entry point]' \
      '0[store only without using ZIP compression]' \
      'M[do not create manifest file]' \
      'i[generate index information for specified jar files]' && return
  else
    jar_cmd="${words[2]#-}"
    tmpassoc=(
      m ':manifest file:_files'
      e ':main class'
      f ':archive file:_files -g "*.([ejw]ar|zip)(-.)"'
    )
    _arguments '*-C[directory of class file]:directory:_directories' \
      '-J-[java runtime option]:option' \
      "${jar_cmd/[^-]*/:dummy:}" \
      ${${(s::)jar_cmd}/(#b)(?)/$tmpassoc[$match[1]]} \
      '*:file:->jararg' && return 0
  fi
  ;;

javah|javah_g)
  _arguments -C \
    '-o[specify output file]:output file:_files' \
    '-d[specify destination directory]:directory:_files -/' \
    '-stubs[generate stubs]' \
    '-verbose[print verbose messages]' \
    '-help[print help message]' \
    '-version[print version]' \
    '-jni[JNI-style native method function prototypes]' \
    '-classpath[specify path for user class files]:class path:->classpath' \
    '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
    '-old[generate old JDK1.0-style header files]' \
    '-force[force output]' \
    '-J-[java runtime option]:option' \
    '*:class:_java_class -m main ${(kv)opt_args[(i)-classpath]}' && return 0
  ;;

javap)
  _arguments -C \
    '-help[print help message]' \
    '-l[line and local variable tables]' \
    '-b[backward compatible to JDK1.1]' \
    '-public[only public classes and members]' \
    '-protected[only protected and public classes and members]' \
    '-package[only package, protected and public classes and members (default)]' \
    '-private[all classes and members]' \
    '-J-[specify java option]:java option:' \
    '-s[internal type signatures]' \
    '-c[disassemble code]' \
    '-verbose[stack size, number of locals and args for methods]' \
    '-classpath[specify path for user class files]:class path:->classpath' \
    '-bootclasspath[specify path for bootstrap class files]:bootstrap class path:->bootstrapclasspath' \
    '-extdirs[specify directories for extensions]:extensions directories:->extdirs' \
    '*:class:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
  ;;

extcheck)
  _arguments \
    '-verbose[print verbose messages]' \
    ':target jar file:_files -g \*.jar\(-.\)' && return 0
  ;;

rmic)
  _arguments -C \
    '-classpath[specify path for user class files]:class path:->classpath' \
    '-d[specify destination directory]:directory:_files -/' \
    '-depend[treat dependencies]' \
    '-g[enable debugging]' \
    '-J-[specify java option]:java option:' \
    '-keepgenerated[retain generated source files]' \
    '-nowarn[disable warnings]' \
    '-show[GUI mode]' \
    '-vcompat[compatible with JDK 1.1 and 1.2 (default)]' \
    '-verbose[print verbose messages]' \
    '-v1.1[JDK 1.1 stub protocol]' \
    '-v1.2[JDK 1.2 stub protocol]' \
    '*:package qualified class name:_java_class  ${(kv)opt_args[(i)-classpath]}' && return 0
  ;;

rmiregistry)
  if (( CURRENT == 2 )); then
    _wanted ports expl 'port to listen on' _ports && return
  else
    _message 'no more arguments'
  fi
  ;;

rmid)
  _arguments \
    '-C-[specify command line argument for child process]:command line argument for child process:' \
    '-log[specify log directory]:directory to place logs:_files -/' \
    '-port[specify port]:port:_ports' \
    '-stop[stop rmid]:' && return 0
  ;;
       
serialver)
  _arguments \
    '-classpath[specify where to find user class files]:class path:->classpath' \
    '(*)-show[display user interface]' \
    '(-show)*:class:_java_class ${(kv)opt_args[(i)-classpath]}' && return 0
  ;;

native2ascii)
  _arguments -C \
    '-reverse[convert Latin-1 (with \udddd) to native encoding]' \
    '-encoding[specify character encoding]:encoding:->encoding' \
    ':input file:_files' \
    ':output file:_files' && return 0
  ;;

keytool)
  _arguments \
      '-J-[specify java option]:java option:' \
    - genkey \
      '-genkey[command to generate a key pair]' \
      '-alias[alias]:alias:' \
      '-keyalg[key algorithm]:key algorithm:' \
      '-keysize[key size]:key size:' \
      '-sigalg[signature algorithm]:signature algorithm:' \
      '-dname[X.500 distinguish name]:X.500 distinguish name:' \
      '-keypass[password for private key]:password for private key:' \
      '-validity[valid days]:number of days:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - import \
      '-import[command to import certificate or certificate chain]' \
      '-alias[alias]:alias:' \
      '-file[specify certificate file]:certificate file:_files' \
      '-keypass[password for private key]:password for private key:' \
      '-noprompt[disable interaction with the user]' \
      '-trustcacerts[use cacerts]' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - selfcert \
      '-selfcert[command to generate X.509 v1 self-signed certificate]' \
      '-alias[alias]:alias:' \
      '-sigalg[signature algorithm]:signature algorithm:' \
      '-dname[X.500 distinguish name]:X.500 distinguish name:' \
      '-validity[valid days]:number of days:' \
      '-keypass[password for private key]:password for private key:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - identitydb \
      '-identitydb[command to read identity database]' \
      '-file[specify identity database file]:identity database file:_files' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - certreq \
      '-certreq[command to generate certificate signing request]' \
      '-alias[alias]:alias:' \
      '-sigalg[signature algorithm]:signature algorithm:' \
      '-file[specify certificate signing request file]:certificate signing request file:_files' \
      '-keypass[password for private key]:password for private key:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - export \
      '-export[command to store certificate]' \
      '-alias[alias]:alias:' \
      '-file[specify certificate file]:certificate file:_files' \
      '-rfc[make certificate format printable as RFC 1421]' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - list \
      '-list[command to print keystore entry]' \
      '-alias[alias]:alias:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '(-rfc)-v[make certificate format human-readable]' \
      '(-v)-rfc[make certificate format printable as RFC 1421]' \
    - printcert \
      '-printcert[command to print certificate in a human-readable format]' \
      '-file[specify certificate file]:certificate file:_files' \
      '-v[verbose mode]' \
    - keyclone \
      '-keyclone[command to create new keystore entry]' \
      '-alias[alias]:alias:' \
      '-dest[destination alias]:destination alias:' \
      '-keypass[password for private key]:password for private key:' \
      '-new[password for private key of new entry]:password for private key of new entry:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - storepasswd \
      '-storepasswd[command to change password for keystore]' \
      '-new[new password]:new password:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - keypasswd \
      '-keypasswd[command to change password for private key]' \
      '-alias[alias]:alias:' \
      '-keypass[old password for private key]:old password for private key:' \
      '-new[nwe password for private key]:new password for private key:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - delete \
      '-delete[command to delete entry]' \
      '-alias[alias]:alias:' \
      '-storetype[keystore type]:store type:' \
      '-keystore[keystore location]:keystore location:_files' \
      '-storepass[password for keystore]:password:' \
      '-v[verbose mode]' \
    - help \
      '(-J)-help[command to print help message]' && return 0
  ;;

jarsigner)
  _arguments \
    '-keystore[keystore location]:keystore location:_files' \
    '-storetype[specify keystore type]:store type:' \
    '-storepass[specify password for keystore]:password:' \
    '-keypass[specify password for private key]:password:' \
    '-sigfile[specify base file name of .SF and .DSA files to be generated]:sigfile:_files' \
    '-signedjar[specify signed JAR file]:_files -g "*.(jar|zip)(-.)"' \
    '(2)-verify[verify mode]' \
    '-certs[output certificate information in verify mode]' \
    '-verbose[print verbose messages]' \
    '-internalsf[old behaviour]' \
    '-sectionsonly[omit header of hash of the whole manifest file]' \
    '-J-[specify java option]:java option:' \
    ':jar file:_files -g "*.(jar|zip)(-.)"' \
    ':alias:' && return 0
  ;;

policytool)
  _arguments \
    '-file:policy file:_files' && return 0
  ;;

*)
  _message 'unknown command'
  ;;
esac

[[ -n "$state" ]] &&
case "$state" in
debug)
  if [[ -prefix :*, ]]; then
    compset -P :
    _values -s , "debug info" lines vars source && return
  else
    _description debuginfo expl "debug info"
    compadd -P: "$expl[@]" none && ret=0
    compadd -P: -qS, "$expl[@]" lines vars source && ret=0
  fi
  ;;

classpath|sourcepath|bootstrapclasspath|docletpath)
  compset -P '*:'
  compset -S ':*'
  _alternative \
    "classpath:$state:_path_files -qS: -g '*.(jar|zip)(-.)'" \
    "classpath:$state:_path_files -r': ' -/" && return
  ;;

extdirs)
  compset -P '*:'
  _path_files -/ && return
  ;;

encoding)
  tmp=(
    'US-ASCII:American Standard Code for Information Interchange'
    'Cp1252:Windows Latin-1'
    'ISO-8859-1:ISO 8859-1, Latin alphabet No. 1 '
    'ISO-8859-15:Latin alphabet No. 9 '
    'UTF-8:Eight-bit UCS Transformation Format'
    'UTF-16:Sixteen-bit UCS Transformation Format, byte order identified by an'
    'UTF-16BE:Sixteen-bit UCS Transformation Format, big-endian byte order '
    'UTF-16LE:Sixteen-bit UCS Transformation Format, little-endian byte order '
    'ASCII:American Standard Code for Information Interchange'
    'ISO8859_1:ISO 8859-1, Latin alphabet No. 1'
    'UnicodeBig:Sixteen-bit Unicode Transformation Format, big-endian'
    'UnicodeBigUnmarked:Sixteen-bit Unicode Transformation Format, big-endian'
    'UnicodeLittle:Sixteen-bit Unicode Transformation Format, little-endian'
    'UnicodeLittleUnmarked:Sixteen-bit Unicode Transformation Format, little-endian'
    'UTF8:Eight-bit Unicode Transformation Format'
    'UTF-16:Sixteen-bit Unicode Transformation Format, byte order'
    'Big5:Big5, Traditional Chinese'
    'Big5_HKSCS:Big5 with Hong Kong extensions, Traditional Chinese'
    'Big5_Solaris:Big5 with seven additional Hanzi ideograph character mappings '
    'Cp037:USA, Canada (Bilingual, French), Netherlands, Portugal, Brazil, Australia'
    'Cp273:IBM Austria, Germany'
    'Cp277:IBM Denmark, Norway'
    'Cp278:IBM Finland, Sweden'
    'Cp280:IBM Italy'
    'Cp284:IBM Catalan/Spain, Spanish Latin America'
    'Cp285:IBM United Kingdom, Ireland'
    'Cp297:IBM France'
    'Cp420:IBM Arabic'
    'Cp424:IBM Hebrew'
    'Cp437:MS-DOS United States, Australia, New Zealand, South Africa'
    'Cp500:EBCDIC 500V1'
    'Cp737:PC Greek'
    'Cp775:PC Baltic'
    'Cp838:IBM Thailand extended SBCS'
    'Cp850:MS-DOS Latin-1'
    'Cp852:MS-DOS Latin-2'
    'Cp855:IBM Cyrillic'
    'Cp856:IBM Hebrew'
    'Cp857:IBM Turkish'
    'Cp858:Variant of Cp850 with Euro character'
    'Cp860:MS-DOS Portuguese'
    'Cp861:MS-DOS Icelandic'
    'Cp862:PC Hebrew'
    'Cp863:MS-DOS Canadian French'
    'Cp864:PC Arabic'
    'Cp865:MS-DOS Nordic'
    'Cp866:MS-DOS Russian'
    'Cp868:MS-DOS Pakistan'
    'Cp869:IBM Modern Greek'
    'Cp870:IBM Multilingual Latin-2'
    'Cp871:IBM Iceland'
    'Cp874:IBM Thai'
    'Cp875:IBM Greek'
    'Cp918:IBM Pakistan (Urdu)'
    'Cp921:IBM Latvia, Lithuania (AIX, DOS)'
    'Cp922:IBM Estonia (AIX, DOS)'
    'Cp930:Japanese Katakana-Kanji mixed with 4370 UDC, superset of 5026'
    'Cp933:Korean Mixed with 1880 UDC, superset of 5029'
    'Cp935:Simplified Chinese Host mixed with 1880 UDC, superset of 5031'
    'Cp937:Traditional Chinese Host miexed with 6204 UDC, superset 5033'
    'Cp939:Japanese Latin Kanji mixed with 4370 UDC, superset of 5035'
    'Cp942:IBM OS/2 Japanese, superset of Cp932'
    'Cp942C:Variant of Cp942'
    'Cp943:IBM OS/2 Japanese, superset of Cp932 and Shift-JIS'
    'Cp943C:Variant of Cp943'
    'Cp948:OS/2 Chinese (Taiwan) superset of 938'
    'Cp949:PC Korean'
    'Cp949C:Variant of Cp949'
    'Cp950:PC Chinese (Hong Kong, Taiwan)'
    'Cp964:AIX Chinese (Taiwan)'
    'Cp970:AIX Korean'
    'Cp1006:IBM AIX Pakistan (Urdu)'
    'Cp1025:IBM Multilingual Cyrillic (Bulgaria, Bosnia)'
    'Cp1025:IBM Multilingual Cyrillic - Bulgaria, Bosnia, Herzegovinia, Macedonia (FYR)'
    'Cp1026:IBM Latin-5, Turkey'
    'Cp1046:IBM Arabic - Windows'
    'Cp1097:IBM Iran (Farsi)/Persian'
    'Cp1098:IBM Iran (Farsi)/Persian (PC)'
    'Cp1112:IBM Latvia, Lithuania'
    'Cp1122:IBM Estonia'
    'Cp1123:IBM Ukraine'
    'Cp1124:IBM AIX Ukraine'
    'Cp1140:Variant of Cp037 with Euro character'
    'Cp1141:Variant of Cp273 with Euro character'
    'Cp1142:Variant of Cp277 with Euro character'
    'Cp1143:Variant of Cp278 with Euro character'
    'Cp1144:Variant of Cp280 with Euro character'
    'Cp1145:Variant of Cp284 with Euro character'
    'Cp1146:Variant of Cp285 with Euro character'
    'Cp1147:Variant of Cp297 with Euro character'
    'Cp1148:Variant of Cp500 with Euro character'
    'Cp1149:Variant of Cp871 with Euro character'
    'Cp1250:Windows Eastern European'
    'Cp1251:Windows Cyrillic'
    'Cp1253:Windows Greek'
    'Cp1254:Windows Turkish'
    'Cp1255:Windows Hebrew'
    'Cp1256:Windows Arabic'
    'Cp1257:Windows Baltic'
    'Cp1258:Windows Vietnamese'
    "Cp1381:IBM OS/2, DOS People's Republic of China (PRC)"
    "Cp1383:IBM AIX People's Republic of China (PRC)"
    'Cp33722:IBM-eucJP - Japanese (superset of 5050)'
    'EUC_CN:GB2312, EUC encoding, Simplified Chinese'
    'EUC_JP:JIS X 0201, 0208, 0212, EUC encoding, Japanese'
    'EUC_KR:KS C 5601, EUC encoding, Korean'
    'EUC_TW:CNS11643 (Plane 1-3), EUC encoding, Traditional Chinese'
    'GB18030:Simplified Chinese, PRC standard'
    'GBK:GBK, Simplified Chinese'
    'ISCII91:ISCII91 encoding of Indic scripts'
    'ISO2022CN:ISO 2022 CN, Chinese (conversion to Unicode only)'
    'ISO2022CN_CNS:CNS 11643 in ISO 2022 CN form, Traditional Chinese'
    'ISO2022CN_GB:GB 2312 in ISO 2022 CN form, Simplified Chinese'
    'ISO2022JP:JIS X 0201, 0208 in ISO 2022 form, Japanese'
    'ISO2022KR:ISO 2022 KR, Korean'
    'ISO8859_2:ISO 8859-2, Latin alphabet No. 2'
    'ISO8859_3:ISO 8859-3, Latin alphabet No. 3'
    'ISO8859_4:ISO 8859-4, Latin alphabet No. 4'
    'ISO8859_5:ISO 8859-5, Latin/Cyrillic alphabet'
    'ISO8859_6:ISO 8859-6, Latin/Arabic alphabet'
    'ISO8859_7:ISO 8859-7, Latin/Greek alphabet'
    'ISO8859_8:ISO 8859-8, Latin/Hebrew alphabet'
    'ISO8859_9:ISO 8859-9, Latin alphabet No. 5'
    'ISO8859_13:ISO 8859-13, Latin alphabet No. 7'
    'ISO8859_15:ISO 8859-15, Latin alphabet No. 9'
    'JIS0201:JIS X 0201, Japanese'
    'JIS0208:JIS X 0208, Japanese'
    'JIS0212:JIS X 0212, Japanese'
    'JISAutoDetect:Detects and converts from Shift-JIS, EUC-JP, ISO 2022 JP'
    'Johab:Johab, Korean'
    'KOI8_R:KOI8-R, Russian'
    'MS874:Windows Thai'
    'MS932:Windows Japanese'
    'MS936:Windows Simplified Chinese'
    'MS949:Windows Korean'
    'MS950:Windows Traditional Chinese'
    'MacArabic:Macintosh Arabic'
    'MacCentralEurope:Macintosh Latin-2'
    'MacCroatian:Macintosh Croatian'
    'MacCyrillic:Macintosh Cyrillic'
    'MacDingbat:Macintosh Dingbat'
    'MacGreek:Macintosh Greek'
    'MacHebrew:Macintosh Hebrew'
    'MacIceland:Macintosh Iceland'
    'MacRoman:Macintosh Roman'
    'MacRomania:Macintosh Romania'
    'MacSymbol:Macintosh Symbol'
    'MacThai:Macintosh Thai'
    'MacTurkish:Macintosh Turkish'
    'MacUkraine:Macintosh Ukraine'
    'SJIS:Shift-JIS, Japanese'
    'TIS620:TIS620, Thai'
  )
  _describe 'character encoding' tmp --
  ;;

property)
  if compset -P 1 '*='; then
    _default && return
  else
    _message -e property-names 'property name'
  fi
  ;;

docsrc)
  if compset -P @; then
    _wanted files expl 'package/source list file' _files && return
  else
    _wanted files expl 'package or source' _files -g '*.java(-.)' && return
  fi
  ;;

jararg)
  if [[ "$words[CURRENT - 2]" == -C ]]; then
    _wanted file expl 'input file' _files -W "($words[CURRENT - 1])" && return
  elif [[ $words[2] = *x* ]]; then
    jf="$words[3]"
    if [[ $jf != $_jar_cache_name && -f $jf ]]; then
      _jar_cache_list=("${(@f)$($words[1] tf $jf)}")
      _jar_cache_name=$jf
    fi
    _wanted files expl 'file from archive' _multi_parts / _jar_cache_list && return
  else
    _wanted files expl 'input file' _files && return
  fi
  ;;

*)
  _message "unknown state: $state"
  ;;
esac

return ret