summary refs log tree commit diff
path: root/Completion/Unix/Command/_surfraw
blob: d153cd49307ed71148bfae51000ca46cb850f61a (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
#compdef surfraw sr

local curcontext="$curcontext" expl state line args ret=1

_arguments -C -A \
  '-browser=[set browser]:browser:_command_names' \
  '-elvi[list web sites that can be searched]' \
  '-escape-url-args=[apply url escaping to arguments]:bool:(yes no)' \
  '(-g -graphical)'{-g,-graphical}'[get some windowed sin]' \
  '-help[display help information]' \
  '-quiet:bool:(yes no)' \
  '-new[start in a new window]' \
  '(-t -text)'{-t,-text}'[back to the yellow brick road]' \
  '(-q -quote)'{-q,-quote}'[quote arguments with quote characters]' \
  '-version[display version information]' \
  ':elvi:->elvi' \
  '*::arg:->subcmd' && ret=0

case $state in
  subcmd)
    args=(
      '-help[display help information]'
      '*: :_guard "^-*" "search string"'
    )
    case "$words[1]" in
      ask|cia|cnn|deblogs|excite|filesearching|foldoc|happypenguin|slashdot|slinuxdoc|sundocs|sunsolve|xxx)
        _message -e strings 'search string'
      ;;
      alioth)
        _arguments $args \
          '-type=-:search type:(soft skill people)' && ret=0
      ;;
      altavista)
        _arguments $args \
        '-results=-:[number of results to return]' && ret=0
      ;;
      amazon)
        _arguments $args \
          '-country=-:country code:(uk de fr jp us)' \
          '-search=-:topic:(all auctions books cars classical \
            dvd electronics garden kitchen music \
            outlet photo software toys tools \
            vhs videogames zshops wireless)' && ret=0
      ;;
      austlii)
        _arguments $args \
          '-method=-:search method:(any all phrase title boolean)' \
          '-results=-:[number of results to return]:number' && ret=0
      ;;
      bbcnews)
        _arguments $args \
          '-scope=-:search scope:(world uk)' && ret=0
      ;;
      cddb)
        _arguments $args \
          '-artists[search artists]' \
          '-albums[search albums]' \
          '-songs[search songs]' \
          '-all[search all artists, albums and songs]' && ret=0
      ;;
      cite)
        _arguments \
          '-results=-:[number of results to return]' \
          '*:search string' && ret=0
      ;;
      ctan)
        _arguments $args \
          '-name[search by filename]' \
          '-desc[search descriptions (default)]'\
          '-doc[search documentation]'
      ;;
      currency)
        _arguments \
          '-l[list all known currency symbols]' \
          '-from=-:currency symbol:(EUR USD GBP CAD AUD JPY INR NZD CHF ZAR)' \
          '-to=-:currency symbol:(EUR USD GBP CAD AUD JPY INR NZD CHF ZAR)' \
          '*:currency amount' && ret=0
      ;;
      cve)
        _message -e numbers 'CVE Number'
      ;;
      debbugs)
        _arguments \
          '-search=:search type:(pkg src bug maint tag submitter severity tag)' \
          '-arc[show archived bugs]' \
          '-raw[do not sort by status or severity]' \
          '-rb[reverse order of bugs shown]' \
          '-rst[reverse order of statuses shown]' \
          '-rse[reverse order of severities shown]' \
          '-merge[sisplay merged bugs only once]' \
          '-nohead[so not show table of contents header]' \
          '-nofoot[so not show statistics in the footer]' \
          '-mbox[view results in mbox format]' \
          '-incstat=-[include given status list]:status:_values -s , status open
              forwarded pending fixed done' \
          '-exstat=-[exclude given status list]:status:_values -s , status open
              forwarded pending fixed done' \
          '-incsev=-[include given severities]:severity:_values -s , severity
              critical grave serious important normal minor wishlist fixed' \
          '-exsev=-[exclude given severities]:severity:_values -s , severity
              critical grave serious important normal minor wishlist fixed' \
          '-inctag=-[include given tags]:tag:_values -s , tag potato woody sarge
              sarge-ignore sid experimental confirmed d-i fixed
              fixed-in-experimental fixed-upstream help moreinfo patch pending
              security unreproducible upstream wontfix' \
          '-extag=-[exclude given tags]:tag:_values -s , tag potato woody sarge
              sarge-ignore sid experimental confirmed d-i fixed
              fixed-in-experimental fixed-upstream help moreinfo patch pending
              security unreproducible upstream wontfix' \
          '*:package:_deb_packages avail' && ret=0
        ;;
      debcontents)
        _arguments \
          '-arch=-[search specific architecture]:architecture:(i386 m68k alpha sparc powerpc arm)' \
          '-distro=-[search specific distribution]:distribution:(stable testing unstable)' \
          '*:package:_deb_packages avail' && ret=0
      ;;
      deblists)
        _arguments $args \
          '-shelp[go to search help page]' \
          '-results=-[specify number of results to return]:number' \
          '-dates=-[quarters to search]:date' \
          '-case[use case sensitive search]' \
          '-errors=-[specify errors allowed]:errors:(0 1 2 best)' \
          '-partial[allow partial matches]' \
          '-sameline[semi-colon separated words must appear on same line]' \
          '-lines=-[specify maximum lines per message]:lines:(0 5 10 50 100)' \
          '-list=-[specify list to search]:list:(68k accessibility admintool
              alpha amd64 announce apache arm autobuild beowulf books boot bsd
              cd cd-vendors cdwrite changes chinese chinese-big5 chinese-gb
              commercial consultants ctte curiosa custom dak debbugs deity
              desktop devel devel-announce devel-changes devel-french
              devel-games devel-italian devel-m68k-changes devel-portuguese
              devel-powerpc-changes devel-s390-changes devel-spanish
              devel-sparc-changes doc dpkg edu emacsen embedded esperanto
              events-eu events-na faq firewall french gcc glibc gtk-gnome hams
              handheld hppa hurd i18n ia64 ipv6 isp italian japanese java jr kde
              kernel l10n-arabic l10n-catalan l10n-czech l10n-danish l10n-dutch
              l10n-english l10n-finnish l10n-french l10n-german l10n-greek
              l10n-hungarian l10n-italian l10n-korean l10n-polish
              l10n-portuguese l10n-romanian l10n-russian l10n-spanish
              l10n-turkish laespiral laptop lcs-eng legal lex lint-maint lsb
              lsb-confcall lsb-discuss lsb-impl lsb-spec lsb-test med mentors
              mips mirrors multimedia newmaint newmaint-admin newmaint-discuss
              news news-french news-german news-portuguese nonprofit ocaml-maint
              openoffice parisc perl pilot policy pool powerpc project publicity
              python qa qa-packages qa-private qt-kde release ruby russian s390
              s390-changes security security-announce sgml simplified-chinese
              snapshots sparc sparc-changes spi-announce spi-general ssh superh
              testing tetex-maint toolchain ultralinux user user-catalan
              user-danish user-de user-french user-german user-icelandic
              user-indonesian user-polish user-portuguese user-spanish
              user-swedish user-turkish user-ukrainian vgui-discuss vote win32
              wnpp women www x)' && ret=0
      ;;
      debpackages)
        _arguments \
          '-release=-:search release:(all main non-US contrib non-free)' \
          '-distro=-:search distribution:(all stable testing unstable)' \
          '*:package:_deb_packages avail' && ret=0
      ;;
      debpts)
        _arguments $args \
          '-doc[view PTS documentation]' && ret=0
      ;;
      debsec)
        _message -e strings 'package name, bug number or CVE ID'
      ;;
      deja)
        _arguments $args \
          '-results=-:[number of results to return]' \
          '-m[search for Message-ID]' && ret=0
      ;;
      dmoz)
        _arguments $args \
          '-cat=-[specify category]:category:(All Arts Business Computers Games
              Health Home Kids_and_Teens News Recreation Reference Regional
              Science Shopping Society Sports World Adult)' \
          '-type=-:type:((c\:categories\ only s\:sites\ only b\:both))' \
          '-kids[sites for kids]' \
          '-teens[sites for teens]' \
          '-mteens[sites for mature teens]' && ret=0
      ;;
      ebay)
        _arguments $args \
          '-country=-:country:(com de uk fr)' \
          '-results=-:[number of results to return]:number' && ret=0
      ;;
      etym)
        _wanted dictword expl 'dictionary word' \
           compadd $(look "${PREFIX}") && ret=0
      ;;
      fast)
        _arguments $args \
          '-type=-:search type:(all any phrase)' && ret=0
      ;;
      freebsd)
        _arguments $args \
          '-mail=-[search mailing lists]:enable:(yes no)' \
          '-gg=-[search [Google Groups]:enable:(yes no)' \
          '-pr=-[query problem reports]:enable:(yes no)' \
          '-cvs=-[query cvsweb]:enable:(yes no)' \
          '-mid=-[query mailing lists by Message-ID]:enable:(yes no)' \
          '-ps=-[go to the port survey page]:enable:(yes no)' \
          '-prs=-[go to the problem report survey page]:enable:(yes no)' \
          '-elogs=-[go to the build error logs page]:enable:(yes no)' && ret=0
      ;;
      freedb)
        _arguments $args \
          '-artists[search artists]' \
          '-albums[search albums]' \
          '-songs[search songs]' \
          '-rest[search the rest of the data]' \
          '-all[search all fields]' \
          '-bycat[sort results by category]' \
          '*-cat=-:category:(all blues classical country data folk
              jazz misc newage reggae rock soundtrack)' && ret=0
      ;;
      freshmeat)
        _deb_packages avail && ret=0
      ;;
      fsfdir)
        _arguments $args
      ;;
      google)
        _arguments $args \
          '(-l --lucky)'{-l,--lucky}'[feeling lucky?]' \
          '-results=-:[number of results to return]:' \
          '-search=-:topic:(bsd linux mac unclesam)' && ret=0
      ;;
      gutenberg)
        _arguments $args \
          '-title[search titles (default)]'
          '-author[search authors]'
          '-num[search etext numbers]'
      ;;
      imdb)
        _arguments $args \
          '-category=-:category:(All Titles MyMovies People Characters Quotes Bios Plots)' && ret=0
      ;;
      ixquick)
        _arguments $args \
          '-search=-:search type:(web pics)' \
          '-lang=-:language:(english dansk deutsch espanol francais italiano nederlands norsk polski portugues suomi svenska turkce jiantizhongwen nihongo fantizhengwen hangul)'
      ;;
      jake)
        _arguments $args \
          '-method=-:search type:(title issn)' \
          '-volume=-:volume' \
          '-issue=-:issue' \
          '-spage=-:start page' \
          '-epage=-:end page' \
          '-year=-:year' && ret=0
      ;;
      leodict)
        _arguments \
          '-tol=:special character tolerance:(off standard high)' \
          '-to=:language:(de en either)' \
          '-lang=:webpage is in this language:(en de)' \
          '-link=:link results:(on off)' \
          '-head=:display headlines:(on off)' \
          '-grid=:show results in grid:(on off)' \
          '-spell=:spelling tolerance:(off standard force)' \
          '*:dictionary word:->words' && ret=0

        [[ "$state" = words ]] && _wanted words expl 'dictionary word' \
            compadd $(look "${PREFIX}") && ret=0
      ;;
      netbsd|openbsd)
        _arguments $args \
          '-mail=-[search mailinglists]:enable:(no yes)' \
          '-pr=-[query problem reports]:enable:(no yes)' && ret=0
      ;;
      pgpkeys)
        _arguments \
          '-s[display key signatures]' \
          '*:key ID or email' && ret=0
      ;;
      pubmed)
        _arguments $args \
          '-db=-:[specify database]:database:(PubMed Nucleotide Protein Genome
              Structure Popset)' && ret=0
      ;;
      rfc)
        _arguments $args \
          '-results=-:[specify number of results to return]:number' \
          '-pdf[return files as PDFs]' \
          '-rev[reverse order of results]' \
          '-exact[match exact words (instead of prefixes)]' \
          '-abs[show abstracts]' \
          '-keywords[show keywords]' \
          "-nodirect[don't try and go direct to RFC]" \
          '-ftp[retrieve RFCs via FTP instead of HTTP]' \
          '-field=-:search field:(all number title author keyword)' \
          '-search=-:collection:(all rfc std bcp fyi)' && ret=0
      ;;
      scaleplus)
        _arguments $args \
          '-results=-:[number of results to return]' && ret=0
      ;;
      sourceforge)
        _arguments \
          '-exact=-[require all words}:enable:(yes no)' \
          '-type=:search type:(soft people freshmeat)' \
          '*:project:_deb_packages avail' && ret=0
      ;;
      stockquote)
          _arguments $args \
          '-provider=-[select quote provider]:provider:(yahoo nasdaq quote)' && ret=0
      ;;
      thesaurus|webster)
        _wanted words expl 'word' compadd $(look "${PREFIX}") && ret=0
      ;;
      rae)
        _wanted dictionary expl 'palabra diccionario' \
            compadd $(look "${PREFIX}") && ret=0
      ;;
      translate)
        _arguments \
          '-from=-:language:(de en es fr it ja ko pt ru zh)' \
          '-to=-:language:(de en es fr it ja ko pt ru zh)' \
          '-provider=-[select translation service provider]:provider:(raging bablefish)' \
          '*:dictionary word:->dictword' && ret=0

        [[ "$state" = dictword ]] && _wanted words expl 'dictionary word' \
            compadd $(look "${PREFIX}") && ret=0
      ;;
      rhyme)
        _arguments \
          '-method=-:type of word correlation:(perfect syn hom cons rel sub spell pic shake def)' \
          '*:dictionary word:->dictword' && ret=0

        [[ "$state" = dictword ]] && _wanted words expl 'dictionary word' \
            compadd $(look "${PREFIX}") && ret=0
      ;;
      w3css)
        _arguments \
          '-warnings=-[specify level of warnings displayed]:warning level:(all normal important none)' \
          '-profile=-:CSS profile:(none css1 css2 css3 svg svgbasic svgtiny mobile atsv-tv tv)' \
          '-medium=-:user medium:(all aural braille embossed handheld print projection
              screen tty tv presentation)' \
          :URL:_urls && ret=0
      ;;
      w3html)
        _arguments \
          '-usage[go to validator help page]' \
          '-encoding=-[set page encoding]' \
          '-encfb[fall back to encoding rather than override]' \
          '-doctype=-":[set page doctype]:' \
          '-docfb[fall back to doctype rather than override]' \
          '-nv[be less verbose]' \
          '-showsource[show page source]' \
          '-showoutline[show page outline (headings)]' \
          '-showparsetree[show parse tree]' \
          '-excludeatt[exclude attributes from parse tree]' \
          '-err[validate Error (404) pages]' \
          :URL:_urls && ret=0
        ;;
      w3link)
        _arguments \
          '-r[check linked documents recursively]' \
          '-d=-[recursion depth]:depth' \
          '-s[summary only]' \
          '-hiderd[hide redirects]' \
          '-dhiderd[hide redirects for directories only]' \
          "-nolang[don't send the Accept-Language: header]" \
          '-cookie[save options in a cookie]' \
          :URL:_urls && ret=0
      ;;
      w3rdf)
        _arguments \
          '-output=-:output type:(Triples Graphs Both)' \
          '-format=-:graph format:(PNG_EMBED PNG_LINK SVG_LINK SVG_EMBED
              GIF_EMBED \ GIF_LINK PS_LINK HP_PCL_LINK HP_GL_LINK ISV_ZVTM)' \
          '-savedot[save GraphViz DOT file]' \
          '-ntriples[display triples in N-Triples format]' \
          '-embedded[RDF is not enclosed in <RDF> tags]' \
          '-useme[grant w3c permission to save the RDF for developing test cases]' \
          '-anon[make anonymous nodes unlabelled]' \
          '-fontsize=-:font Size:(10 12 14 16 20)' \
          '-orient=-:orientation:(TB LR)' \
          '-node=-:node Colour:(Black Blue Darkgreen Red)' \
          '-nodetext=-[node text color]:color:(Black Blue Darkgreen Red)' \
          '-arc=-[arc color]:color:(Black Blue Darkgreen Red)' \
          '-arctext=-:[arc text color]:color:(Black Blue Darkgreen Red)' \
          :URL:_urls && ret=0
      ;;
      wayback)
        _arguments $args \
          '-syear=-[start search from this year]:year' \
          '-smonth=-:[start search from this month]:month:(jan feb mar apr may jun jul aug sep oct nov dec)' \
          '-sday=-[start search from this day]:number' \
          '-eyear=-[end search in this year]:year' \
          '-emonth=-[end search in this month]:month:(jan feb mar apr may jun jul aug sep oct nov dec)' \
          '-eday=-[end search in this day]:number' \
          '-list[list all pages that match search criteria]' \
          '-dups[show dups]' \
          '-compare[compare pages]' \
          '-pdf[show as PDF]' \
          '-alias=-[how to handle site aliases]:alias:(merge show hide)' \
          '-redir=-[how to handle redirections]:redir:(hide flag show)' \
          '-type=-[file type to search for]:type:(image audio video binary text pdf)'
      ;;
      wetandwild)
        _arguments \
          '-city=-[town or City or (US only) zipcode]:' \
          '-country=-[two letter domain-style country code]:' \
          '-state=-[specify state, province or region]:state' && ret=0
      ;;
      wikipedia)
        _arguments $args \
          '-language=-:[two letter language code]:' && ret=0
        ;;
      woffle)
        _arguments $args \
          '-method=-:search method:(and or bool)' \
          '-format=-:result format:(short long)' \
          '-sort=-:sort method:(score revscore time revtime title revtitle)' && ret=0
      ;;
      yahoo)
          _arguments $args \
          '-results=-[specify number of results to return]:number' && ret=0
      ;;
      yubnub)
        _message -e commands 'Yubnub Command'
      ;;
      *)
        _message -e strings 'search string'
      ;;
    esac
  ;;
  elvi)
    local -UT XDG_CONFIG_DIRS xdg_config_dirs
    local it
    # list the applets
    set -- ${${(f)"$(_call_program elvi surfraw -elvi)"}%%[[:space:]]##-- *}
    shift # the first line is a header: remove it
    # then list the bookmarks
    for it in \
      $^xdg_config_dirs/surfraw/bookmarks(Nr) \
      /etc/xdg/surfraw/bookmarks(Nr) \
      /etc/surfraw.bookmarks(Nr) \
      ${XDG_CONFIG_HOME-$HOME/.config}/surfraw/bookmarks(Nr) \
      $HOME/.surfraw.bookmarks(Nr)
    do
      read -d'\0' it < $it
      set -- "$@" ${${(f)it}%%[[:space:]]*}
    done
    _wanted elvi expl elvi compadd "$@" && ret=0
  ;;
esac

return ret