zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: _urls and _rpm
@ 2000-06-05 22:09 Oliver Kiddle
  2000-06-06  3:48 ` Bart Schaefer
  2000-06-06  4:08 ` zparseopts (Re: PATCH: _urls and _rpm) Bart Schaefer
  0 siblings, 2 replies; 5+ messages in thread
From: Oliver Kiddle @ 2000-06-05 22:09 UTC (permalink / raw)
  To: Zsh workers

I've changed _urls so that it now takes any -g option it is passed and
passes it on to _files.

It would be useful if zparseopts returned 0 only if it found the option
specified so I didn't need to use (( $#glob )) but we'd have to decide
how it would act with more than one option specified. I'm not convinced
by what Bart said earlier about _urls not handling IPREFIX properly
(isn't it supposed to be ignored) but I haven't got easy access to his
e-mail here to check what he said again.

I've also changed _rpm to now use _urls in that one place.

Why does [[ -prefix (f|ht)tp:// ]] give me an error message about the
first bracket? Is that a bug. I got around it by putting a 1 before the
pattern.

Oliver Kiddle

Index: Completion/Linux/_rpm
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Linux/_rpm,v
retrieving revision 1.13
diff -u -u -r1.13 _rpm
--- Completion/Linux/_rpm	2000/06/05 02:23:53	1.13
+++ Completion/Linux/_rpm	2000/06/05 23:08:24
@@ -211,12 +211,14 @@
         _files -g \*.spec && ret=0
     ;;
   package_file)
-    if compset -P '(f|ht)tp://'; then
-      _hosts -S/ && ret=0
+    _wanted files expl 'RPM package file' \
+        _files -g '*.(#i)rpm' && ret=0
+    if [[ -prefix 1 (f|ht)tp:// ]]; then
+      _wanted urls expl 'URL of RPM package file' \
+          _urls -f -g '*.(#i)rpm' "${expl[@]}" && ret=0
     else
-      _alternative \
-          'files:RPM package file:_files -g \*.\(\#i\)rpm' \
-          'prefixes:URL prefix:compadd ftp:// http://' && ret=0
+      _wanted urls expl 'URL of RPM package file' \
+          compadd -S '' "${expl[@]}" ftp:// http:// && ret=0
     fi
     ;;
   package_src)
Index: Completion/User/_urls
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/User/_urls,v
retrieving revision 1.10
diff -u -u -r1.10 _urls
--- Completion/User/_urls	2000/05/31 09:38:26	1.10
+++ Completion/User/_urls	2000/06/05 23:08:24
@@ -38,7 +38,7 @@
 #    E.g.:
 #      zstyle ':completion:*:urls' local www /usr/local/apache/htdocs public_html
 
-local ipre scheme host user uhosts ret=1 expl match
+local ipre scheme host user uhosts ret=1 expl match glob
 local urls_path localhttp
 zstyle -s ":completion:${curcontext}:urls" path urls_path ||
     urls_path="${ZDOTDIR:-$HOME}/.zsh/urls"
@@ -52,6 +52,9 @@
   _wanted -C -f files expl file _files "$@" && return 0
 fi
 
+zparseopts -D -E 'g:=glob'
+(( $#glob )) || glob=( -g '*(^/)' )
+
 ipre="$IPREFIX"
 
 if ! compset -P '(#b)([-+.a-z0-9]#):'; then
@@ -82,7 +85,7 @@
       while _tags; do
         while _next_label files expl 'local file'; do
           if [[ -prefix / ]]; then
-	    _path_files "$expl[@]" -S '' -g '*(^/)' && ret=0
+	    _path_files "$expl[@]" -S '' "${glob[@]}" && ret=0
 	    _path_files "$expl[@]" -S/ -r '/' -/ && ret=0
           elif [[ -z "$PREFIX" ]]; then
 	    compadd -S '/' -r '/' "$expl[@]" "$@" - "${PWD%/}" && ret=0
@@ -103,7 +106,7 @@
       _tags -C bookmark files
       while _tags; do
         while _next_label files expl 'bookmark'; do
-          _path_files -W "$urls_path/$scheme" "$expl[@]" -S '' -g '*(^/)' && 
+          _path_files -W "$urls_path/$scheme" "$expl[@]" -S '' "${glob[@]}" && 
               ret=0
           _path_files -W "$urls_path/$scheme" -S/ -r '/' "$expl[@]" -/ && ret=0
         done
@@ -145,7 +148,7 @@
     user="$match[1]"
     while _tags; do
       while _next_label files expl 'local file'; do
-        _path_files "$expl[@]" "$@" -W ~$user/$localhttp_userdir -g '*(^/)' && ret=0
+        _path_files "$expl[@]" "$@" -W ~$user/$localhttp_userdir "${glob[@]}" && ret=0
         _path_files -S/ -r '/'  "$expl[@]" -W ~$user/$localhttp_userdir-/ && ret=0
       done
       (( ret )) || return 0
@@ -153,7 +156,7 @@
   else
     while _tags; do
       while _next_label files expl 'local file'; do
-        _path_files "$expl[@]" "$@" -W $localhttp_documentroot -g '*(^/)' && ret=0
+        _path_files "$expl[@]" "$@" -W $localhttp_documentroot "${glob[@]}" && ret=0
         _path_files -S/ -r '/' "$expl[@]" -W $localhttp_documentroot -/ && ret=0
       done
       (( ret )) || return 0
@@ -162,7 +165,7 @@
 else
   while _tags; do
     while _next_label files expl 'local file'; do
-      _path_files "$expl[@]" "$@" -W $urls_path/$scheme/$host -g '*(^/)' && ret=0
+      _path_files "$expl[@]" "$@" -W $urls_path/$scheme/$host "${glob[@]}" && ret=0
       _path_files -S/ -r '/' "$expl[@]" -W $urls_path/$scheme/$host -/ && ret=0
     done
     (( ret )) || return 0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: PATCH: _urls and _rpm
  2000-06-05 22:09 PATCH: _urls and _rpm Oliver Kiddle
@ 2000-06-06  3:48 ` Bart Schaefer
  2000-06-06  4:08 ` zparseopts (Re: PATCH: _urls and _rpm) Bart Schaefer
  1 sibling, 0 replies; 5+ messages in thread
From: Bart Schaefer @ 2000-06-06  3:48 UTC (permalink / raw)
  To: Zsh workers

On Jun 5, 11:09pm, Oliver Kiddle wrote:
} Subject: PATCH: _urls and _rpm
}
} I'm not convinced by what Bart said earlier about _urls not handling
} IPREFIX properly (isn't it supposed to be ignored)

You're right; I was thinking of PREFIX, but of course "compset -P" moves
PREFIX into IPREFIX.  [[ -prefix ... ]] is the right solution.

} Why does [[ -prefix (f|ht)tp:// ]] give me an error message

Because module-defined condition tests are a hack?

The parser wants there to be a plain string after any condition test that
begins with a hyphen, and chokes when it gets an opening paren instead.
It never gets near the code that actually implements the -prefix test.
You'd get the same error from `[[ -f (x|y)z ]]'.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[flat|nested] 5+ messages in thread

* zparseopts (Re: PATCH: _urls and _rpm)
  2000-06-05 22:09 PATCH: _urls and _rpm Oliver Kiddle
  2000-06-06  3:48 ` Bart Schaefer
@ 2000-06-06  4:08 ` Bart Schaefer
  2000-06-06  9:58   ` Oliver Kiddle
  1 sibling, 1 reply; 5+ messages in thread
From: Bart Schaefer @ 2000-06-06  4:08 UTC (permalink / raw)
  To: Zsh workers

On Jun 5, 11:09pm, Oliver Kiddle wrote:
} Subject: PATCH: _urls and _rpm
}
} It would be useful if zparseopts returned 0 only if it found the option
} specified so I didn't need to use (( $#glob )) but we'd have to decide
} how it would act with more than one option specified.

No, that's no good.  The whole point of calling it zparseOPTS is that the
things it is parsing are *optional*.  It returns nonzero only for things
that are real mistakes.

} +zparseopts -D -E 'g:=glob'
                    ^       ^			Why the quotes?
} +(( $#glob )) || glob=( -g '*(^/)' )

You could use 

	: ${(A)=glob:=-g '*(^/)'}

instead.

What I can't decide is whether I like the behavior of emptying the array
when no matching option is found.  E.g. sometimes I think I'd like to be
able to say

	glob=(-g '*(^/)')
	zparseopts -D -E g:=glob

and have $glob be unchanged unless a -g really was given.  Then I think
about it some more and decide maybe not.  Then I think about it some more
and ...

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: zparseopts (Re: PATCH: _urls and _rpm)
  2000-06-06  4:08 ` zparseopts (Re: PATCH: _urls and _rpm) Bart Schaefer
@ 2000-06-06  9:58   ` Oliver Kiddle
  2000-06-07  5:55     ` Bart Schaefer
  0 siblings, 1 reply; 5+ messages in thread
From: Oliver Kiddle @ 2000-06-06  9:58 UTC (permalink / raw)
  To: Zsh workers

On the subject of my IRIX 5.3 compilation warnings, Bart Schaefer wrote:
> What does line 111 of sys/types.h look like?

typedef unsigned long   ino_t;          /* <inode> type */

If you look back it my previous message (11755), you'll see that I had
stuck a section of types.h in at the end. The line is after a
preprocessor check for _MIPS_SZLONG == 32.

I'll try your sed suggestion out this evening, thanks.

Bart Schaefer wrote:
> 
> No, that's no good.  The whole point of calling it zparseOPTS is that the
> things it is parsing are *optional*.

Fair enough.

> } +zparseopts -D -E 'g:=glob'
>                     ^       ^                   Why the quotes?

Because I cut and paste the line from the example in 11532 without
thinking much about it.

> } +(( $#glob )) || glob=( -g '' )
> You could use
>         : ${(A)=glob:=-g '*(^/)'}

Very true, I forgot about that, I'll commit those changes sometime
later.

> What I can't decide is whether I like the behavior of emptying the array
> when no matching option is found.

Actually, this is how I initially assumed it would work and I tried it
out as you suggested.

and Sven wrote:
> Should we add an option for this?

An option seems slightly over-kill but I really can't decide which
behaviour I prefer either so maybe. You could also allow
g:=glob:-'*(^/)' but I'm not sure that wouldn't only be unnecessary
bloat to zparseopts.

Oliver

Index: Completion/User/_urls
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/User/_urls,v
retrieving revision 1.11
diff -u -r1.11 _urls
--- Completion/User/_urls       2000/06/05 23:20:48     1.11
+++ Completion/User/_urls       2000/06/06 09:55:41
@@ -52,8 +52,8 @@
   _wanted -C -f files expl file _files "$@" && return 0
 fi

-zparseopts -D -E 'g:=glob'
-(( $#glob )) || glob=( -g '*(^/)' )
+zparseopts -D -E g:=glob
+: ${(A)=glob:=-g '*(^/)'}

 ipre="$IPREFIX"


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: zparseopts (Re: PATCH: _urls and _rpm)
  2000-06-06  9:58   ` Oliver Kiddle
@ 2000-06-07  5:55     ` Bart Schaefer
  0 siblings, 0 replies; 5+ messages in thread
From: Bart Schaefer @ 2000-06-07  5:55 UTC (permalink / raw)
  To: Oliver Kiddle, Zsh workers

On Jun 6, 10:58am, Oliver Kiddle wrote:
} Subject: Re: zparseopts (Re: PATCH: _urls and _rpm)
}
} On the subject of my IRIX 5.3 compilation warnings, Bart Schaefer wrote:
} > What does line 111 of sys/types.h look like?
} 
} typedef unsigned long   ino_t;          /* <inode> type */
} 
} If you look back it my previous message (11755), you'll see that I had
} stuck a section of types.h in at the end.

Oops, I thought that was part of the diff and never even looked at it.

} after a preprocessor check for _MIPS_SZLONG == 32.

Where does _MIPS_SZLONG come from?

The test for ino_t passes this:

#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif

through the preprocessor and then egreps to find ino_t.  From the snippet
you sent, the egrep should fail only if _MIPS_SZLONG is neither 32 nor 64.
Unless IRIX's egrep is broken, which is not impossible ...

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2000-06-07  5:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-06-05 22:09 PATCH: _urls and _rpm Oliver Kiddle
2000-06-06  3:48 ` Bart Schaefer
2000-06-06  4:08 ` zparseopts (Re: PATCH: _urls and _rpm) Bart Schaefer
2000-06-06  9:58   ` Oliver Kiddle
2000-06-07  5:55     ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).