From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7553 invoked from network); 16 Oct 1999 05:18:40 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 16 Oct 1999 05:18:40 -0000 Received: (qmail 10080 invoked by alias); 16 Oct 1999 05:18:36 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8297 Received: (qmail 10072 invoked from network); 16 Oct 1999 05:18:35 -0000 To: Zsh workers Subject: Re: _urls ... and CVS References: <199910151210.OAA18066@beta.informatik.hu-berlin.de> <38074889.6DCA13F@u.genie.co.uk> <991015155008.ZM24081@candle.brasslantern.com> <380750E1.EF125897@u.genie.co.uk> <991015164015.ZM24179@candle.brasslantern.com> <19991015175407.A19450@thelonious.new.ox.ac.uk> MIME-Version: 1.0 (generated by AKEMI 1.13.2 - =?ISO-2022-JP?B?Ig==?= =?ISO-2022-JP?B?GyRCQTA0Y0s8GyhCIg==?=) Content-Type: text/plain; charset=US-ASCII From: Tanaka Akira Date: 16 Oct 1999 14:18:33 +0900 In-Reply-To: Adam Spiers's message of "Fri, 15 Oct 1999 17:54:07 +0100" Message-ID: User-Agent: Chao-gnus/6.12.5 AKEMI/1.13.2 (=?ISO-2022-JP?B?GyRCQTAbKEI=?= =?ISO-2022-JP?B?GyRCNGNLPBsoQg==?=) FLAM-DOODLE/1.12.6 (=?ISO-2022-JP?B?GyRCM3cbKEI=?= 10R4.0/5.0) Emacs/20.4 (sparc-sun-solaris2.6) MULE/4.0 (HANANOEN) In article <19991015175407.A19450@thelonious.new.ox.ac.uk>, Adam Spiers writes: > Can some kind person please email me correctly-patched _urls? Mine > got badly messed up somehow. This is my latest version. #compdef curl # Usage: _urls [-f] # Options: # -f : complete files first. # # Configuration keys used: # # urls_path # The path to a directory containing a URL database, such as: # # % cd ~/.zsh/urls # % find . -ls # ... drwxr-xr-x ... 512 Sep 3 02:46 . # ... drwxr-xr-x ... 512 Sep 3 02:48 ./http # ... drwxr-xr-x ... 512 Sep 3 02:52 ./http/www.zsh.org # ... drwxr-xr-x ... 512 Sep 3 03:01 ./http/www.zsh.org/mla # ... drwxr-xr-x ... 512 Sep 3 03:01 ./http/www.zsh.org/mla/workers # ... drwxr-xr-x ... 512 Sep 3 03:01 ./http/www.zsh.org/mla/workers/1999 # ... -rw-r--r-- ... 0 Sep 3 03:01 ./http/www.zsh.org/mla/workers/1999/index.html # ... drwxr-xr-x ... 512 Sep 3 02:48 ./http/sunsite.auc.dk # ... drwxr-xr-x ... 512 Sep 3 02:48 ./http/sunsite.auc.dk/zsh # ... drwxr-xr-x ... 512 Sep 3 02:47 ./bookmark # ... drwxr-xr-x ... 512 Sep 3 02:48 ./bookmark/zsh # ... -rw-r--r-- ... 27 Sep 3 02:47 ./bookmark/zsh/home # ... -rw-r--r-- ... 20 Sep 3 02:48 ./bookmark/zsh/meta # % cat bookmark/zsh/home # http://sunsite.auc.dk/zsh/ # % cat bookmark/zsh/meta # http://www.zsh.org/ # # urls_localhttp # Specify a local web server in the form: # hostname:doc root:user area # where hostname is the name of the web server, doc root is the path to # the default web pages for the server and user area is the directory # name used by a user placing web pages within their home area. # e.g. compconf urls_localhttp=www:/usr/local/apache/htdocs:public_html setopt localoptions extendedglob local ipre scheme host user hosts ret=1 expl local urls_path="${compconfig[urls_path]:-${ZDOTDIR:-$HOME}/.zsh/urls}" local localhttp_servername="${${(@s.:.)compconfig[urls_localhttp]}[1]}" local localhttp_documentroot="${${(@s.:.)compconfig[urls_localhttp]}[2]}" local localhttp_userdir="${${(@s.:.)compconfig[urls_localhttp]}[3]}" if [[ "$1" = -f ]]; then shift _files "$@" && return fi ipre="$IPREFIX" if ! compset -P '(#b)([-+.a-z0-9]#):'; then _description expl 'URL prefix' [[ -d $urls_path/bookmark ]] && compadd "$@" "$expl[@]" -S '' bookmark: && ret=0 compadd "$@" "$expl[@]" -S '' file: ftp:// gopher:// http:// && ret=0 return $ret fi scheme="$match[1]" case "$scheme" in http|ftp|gopher) if ! compset -P //; then compadd "$@" -S '' // return fi ;; file) if ! compset -P //; then if [[ -prefix / ]]; then _path_files "$@" -S '' -g '*(^/)' && ret=0 _path_files "$@" -S/ -r '/' -/ && ret=0 elif [[ -z "$PREFIX" ]]; then compadd -S '/' -r '/' - "${PWD%/}" ret=0 fi return $ret fi ;; bookmark) if [[ -f "$urls_path/$scheme/$PREFIX$SUFFIX" && -s "$urls_path/$scheme/$PREFIX$SUFFIX" ]]; then compadd "$@" -QU -- "$ipre$(<"$urls_path/$scheme/$PREFIX$SUFFIX")" && ret=0 else _description expl 'bookmark' _path_files -W "$urls_path/$scheme" "$expl[@]" -S '' -g '*(^/)' && ret=0 _path_files -W "$urls_path/$scheme" -S/ -r '/' -/ && ret=0 fi return $ret ;; esac # Complete hosts if ! compset -P '(#b)([^/]#)/'; then hosts=($urls_path/$scheme/$PREFIX*$SUFFIX(/:t)) (( $#hosts )) || _hosts -S/ && ret=0 [[ "$scheme" = http ]] && hosts=($hosts $localhttp_servername) compadd "$@" -QS/ - $hosts && ret=0 return $ret fi host="$match[1]" # Complete part after hostname if [[ "$localhttp_servername" = "$host" ]]; then if compset -P \~; then if ! compset -P '(#b)([^/]#)/'; then _users -S/ return fi user="$match[1]" _path_files -W ~$user/$localhttp_userdir -g '*(^/)' && ret=0 _path_files -W ~$user/$localhttp_userdir -S/ -r '/' -/ && ret=0 else _path_files -W $localhttp_documentroot -g '*(^/)' && ret=0 _path_files -W $localhttp_documentroot -S/ -r '/' -/ && ret=0 fi else _path_files -W $urls_path/$scheme/$host -g '*(^/)' && ret=0 _path_files -W $urls_path/$scheme/$host -S/ -r '/' -/ && ret=0 fi return $ret -- Tanaka Akira