From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24631 invoked from network); 15 Oct 1999 14:36:17 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 15 Oct 1999 14:36:17 -0000 Received: (qmail 13368 invoked by alias); 15 Oct 1999 14:36:10 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8286 Received: (qmail 13360 invoked from network); 15 Oct 1999 14:36:09 -0000 To: Zsh workers Subject: Re: PATCH: _urls again (Re: setopt localoptions noautoremoveslash) References: <38070EF0.BD3C2469@u.genie.co.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: 15 Oct 1999 23:36:07 +0900 In-Reply-To: Oliver Kiddle's message of "Fri, 15 Oct 1999 12:24:32 +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) This is another refinement for _urls. * _urls is used as completion function of `curl' (http://curl.haxx.nu/) * Use [[ ... ]] instead of [ ... ]. * Use (#b) in an argument of compset -P to extract info. * Eliminate unused variable. Index: Completion/User/_urls =================================================================== RCS file: /projects/zsh/zsh/Completion/User/_urls,v retrieving revision 1.1.1.9 diff -u -F^( -r1.1.1.9 _urls --- Completion/User/_urls 1999/10/15 13:09:11 1.1.1.9 +++ Completion/User/_urls 1999/10/15 14:28:55 @@ -1,4 +1,4 @@ -#autoload +#compdef curl # Usage: _urls [-f] # Options: @@ -37,7 +37,9 @@ # name used by a user placing web pages within their home area. # e.g. compconf urls_localhttp=www:/usr/local/apache/htdocs:public_html -local ipre scheme host user dirs files ret=1 expl +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]}" @@ -50,16 +52,14 @@ ipre="$IPREFIX" -if ! [[ -prefix [-+.a-z0-9]#: ]]; then +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="${PREFIX%%:*}" -compset -P "[-+.a-z0-9]#:" +scheme="$match[1]" case "$scheme" in http|ftp|gopher) @@ -70,10 +70,10 @@ ;; file) if ! compset -P //; then - if [ -prefix / ]; then + if [[ -prefix / ]]; then _path_files "$@" -S '' -g '*(^/)' && ret=0 _path_files "$@" -S/ -r '/' -/ && ret=0 - elif [ ! "$PREFIX" ]; then + elif [[ -z "$PREFIX" ]]; then compadd -S '/' -r '/' - "${PWD%/}" ret=0 fi @@ -94,34 +94,31 @@ esac # Complete hosts -if ! [[ -prefix */* ]]; then - dirs=($urls_path/$scheme/$PREFIX*$SUFFIX(/:t)) - (( $#dirs )) || _hosts -S/ && ret=0 - [ "$scheme" = "http" ] && dirs=($dirs $localhttp_servername) - compadd "$@" -QS/ - $dirs && ret=0 +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 -host=${PREFIX%%/*} -compset -P "$host/" -if [[ "$localhttp_servername" = $host ]]; then - if [[ -prefix \~ ]]; then - compset -P \~ - if [[ -prefix */* ]]; then - user=${PREFIX%%/*} - compset -P $user/ - _path_files -W ~$user/$localhttp_userdir -g '*(^/)' && ret=0 - _path_files -W ~$user/$localhttp_userdir -S/ -r '/' -/ && ret=0 - else - _users -S/ && ret=0 +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 + _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