zsh-workers
 help / color / mirror / code / Atom feed
* path completion and directories
@ 2001-10-05  6:03 Borsenkow Andrej
  2001-10-08 15:51 ` Oliver Kiddle
  0 siblings, 1 reply; 6+ messages in thread
From: Borsenkow Andrej @ 2001-10-05  6:03 UTC (permalink / raw)
  To: ZSH Workers Mailing List

Yesterday I was irritated again that rpm completion does not descend
directories if it finds any *.rpm file. Before I had this issue with
gunzip as well.

I know I can configure it. My point is it should be default. Current
behavior looks counter-intuitive to me. Actually I have a feeling it was
differently before.

-andrej


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

* Re: path completion and directories
  2001-10-05  6:03 path completion and directories Borsenkow Andrej
@ 2001-10-08 15:51 ` Oliver Kiddle
  2001-10-09  9:05   ` Sven Wischnowsky
  0 siblings, 1 reply; 6+ messages in thread
From: Oliver Kiddle @ 2001-10-08 15:51 UTC (permalink / raw)
  To: ZSH Workers Mailing List

On Friday, Borsenkow Andrej wrote:
> 
> Yesterday I was irritated again that rpm completion does not descend
> directories if it finds any *.rpm file. Before I had this issue with
> gunzip as well.
> 
> I know I can configure it. My point is it should be default. Current
> behavior looks counter-intuitive to me. Actually I have a feeling it was
> differently before.

It is certainly the most sensible behaviour so I agree that making it
default would be better.

How do we go about making styles like tag-order and file-patterns
default though while making them easy to disable?

Didn't we used to have a bunch of styles set by default from compinit? I
still have `zstyle -d' in my .zshrc which was there to remove them.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


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

* Re: path completion and directories
  2001-10-08 15:51 ` Oliver Kiddle
@ 2001-10-09  9:05   ` Sven Wischnowsky
  2001-10-09  9:22     ` Peter Stephenson
  0 siblings, 1 reply; 6+ messages in thread
From: Sven Wischnowsky @ 2001-10-09  9:05 UTC (permalink / raw)
  To: zsh-workers


Oliver Kiddle wrote:

> On Friday, Borsenkow Andrej wrote:
> > 
> > Yesterday I was irritated again that rpm completion does not descend
> > directories if it finds any *.rpm file. Before I had this issue with
> > gunzip as well.
> > 
> > I know I can configure it. My point is it should be default. Current
> > behavior looks counter-intuitive to me. Actually I have a feeling it was
> > differently before.
> 
> It is certainly the most sensible behaviour so I agree that making it
> default would be better.

Aha. What do others think? Leave it? Change it? No opinion?

It shouldn't be too hard to change (the changes in the manual and
Peter's guide would be larger than in the code, I think).

> How do we go about making styles like tag-order and file-patterns
> default though while making them easy to disable?
> 
> Didn't we used to have a bunch of styles set by default from compinit? I
> still have `zstyle -d' in my .zshrc which was there to remove them.

Yes we had. Very ugly. Nowadays the defaults are coded into the places 
where the styles are looked up, one way or another (e.g. by using -t
or -T or by doing `zstyle -s ... foo || foo=...').


Bye
  Sven

-- 
Sven Wischnowsky                    wischnow@informatik.hu-berlin.de


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

* Re: path completion and directories
  2001-10-09  9:05   ` Sven Wischnowsky
@ 2001-10-09  9:22     ` Peter Stephenson
  2001-10-09 12:44       ` Sven Wischnowsky
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2001-10-09  9:22 UTC (permalink / raw)
  To: zsh-workers

Sven Wischnowsky wrote:
> Oliver Kiddle wrote:
> > On Friday, Borsenkow Andrej wrote:
> > > 
> > > Yesterday I was irritated again that rpm completion does not descend
> > > directories if it finds any *.rpm file. Before I had this issue with
> > > gunzip as well.
> > > 
> > > I know I can configure it. My point is it should be default. Current
> > > behavior looks counter-intuitive to me. Actually I have a feeling it was
> > > differently before.
> > 
> > It is certainly the most sensible behaviour so I agree that making it
> > default would be better.
> 
> Aha. What do others think? Leave it? Change it? No opinion?

I tend to think mixing in directories should be the default.  It can be a
little confusing otherwise if you aren't familiar with the system.

By the way, you do know about the _next_tags widget?  If you bind it, you
can use that key for swapping between files and directories.  I don't know
if it will still allow you switch to globbed files, then directories if the
default changes, but that would be useful.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


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

* Re: path completion and directories
  2001-10-09  9:22     ` Peter Stephenson
@ 2001-10-09 12:44       ` Sven Wischnowsky
  2001-10-09 13:01         ` Peter Stephenson
  0 siblings, 1 reply; 6+ messages in thread
From: Sven Wischnowsky @ 2001-10-09 12:44 UTC (permalink / raw)
  To: zsh-workers


Peter Stephenson wrote:

> ...
> 
> I tend to think mixing in directories should be the default.  It can be a
> little confusing otherwise if you aren't familiar with the system.

Ok, then, here's the patch.

> By the way, you do know about the _next_tags widget?  If you bind it, you
> can use that key for swapping between files and directories.  I don't know
> if it will still allow you switch to globbed files, then directories if the
> default changes, but that would be useful.

This is easy to achieve, so easy that I've prepared it in the patch
(see the lines starting with `###'). This is still commented out
because I'm not sure about the order in which pattern (-combinations)
should be tried.

The two things that look sensible to me are:

  globbed and dirs
  all
  only globbed
  only dirs

Or maybe:

  globbed and dirs
  only globbed
  only dirs
  all

So which order do you prefer? (Not only Peter is asked and not only
the two versions above are on offer, of course.)


Bye
  Sven

Index: Completion/Unix/Type/_files
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_files,v
retrieving revision 1.4
diff -u -r1.4 _files
--- Completion/Unix/Type/_files	2001/07/13 08:09:52	1.4
+++ Completion/Unix/Type/_files	2001/10/09 12:41:30
@@ -37,12 +37,25 @@
   done
 else
   if [[ "$type" = *g* ]]; then
-    if [[ "$type" = */* ]]; then
-      pats=( " ${glob//:/\\:}:globbed-files *(-/):directories" '*:all-files ' )
-    else
-      pats=( " ${glob//:/\\:}:globbed-files "
-             '*(-/):directories ' '*:all-files ' )
-    fi
+
+  # People prefer to have directories shown on first try as default.
+  # Even if the calling function didn't use -/.
+  #
+  # if [[ "$type" = */* ]]; then
+
+    pats=( " ${glob//:/\\:}:globbed-files *(-/):directories" '*:all-files '
+
+    ### We could allow _next_tags to offer only globbed-files or directories
+    ### by adding:
+    ###   " ${glob//:/\\:}:only-globbed-files " ' *(-/):only-directories '
+
+      )
+
+  # else
+  #   pats=( " ${glob//:/\\:}:globbed-files "
+  #          '*(-/):directories ' '*:all-files ' )
+  # fi
+
   elif [[ "$type" = */* ]]; then
     pats=( '*(-/):directories ' '*:all-files ' )
   else
@@ -53,15 +66,16 @@
 tried=()
 for def in "$pats[@]"; do
   eval "def=( ${${def:gs/\\:/\\\\\\\\\\\\:}//(#b)([][()|*?^#~<>])/\\${match[1]}} )"
+
+  tmp="${(@M)def#*[^\\]:}"
+  (( $tried[(I)${(q)tmp}] )) && continue
+  tried=( "$tried[@]" "$tmp" )
+
   for sdef in "$def[@]"; do
 
     tag="${${sdef#*[^\\]:}%%:*}"
     pat="${${sdef%%:${tag}*}//\\:/:}"
 
-    (( $tried[(I)${(q)pat}] )) && continue
-
-    tried=( "$tried[@]" "$pat" )
-
     if [[ "$sdef" = *:${tag}:* ]]; then
       descr="${(Q)sdef#*:${tag}:}"
     else
@@ -86,7 +100,13 @@
       done
       (( ret )) || break
     done
+
+    ### For that _next_tags change mentioned above we would have to
+    ### comment out the following line. (Or not, depending on the order
+    ### of the patterns.)
+
     [[ "$pat" = '*' ]] && return ret
+
   done
   (( ret )) || return 0
 done
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.135
diff -u -r1.135 compsys.yo
--- Doc/Zsh/compsys.yo	2001/10/05 11:18:37	1.135
+++ Doc/Zsh/compsys.yo	2001/10/09 12:41:31
@@ -1111,10 +1111,12 @@
 item(tt(file-patterns))(
 In most places where filenames are completed, the function tt(_files)
 is used which can be configured with this style.  If the style is
-unset, tt(_files) offers, one after another, up to three tags:
+unset, tt(_files) offers, up to three tags:
 `tt(globbed-files)',
 `tt(directories)' and `tt(all-files)', depending on the types of files
-expected by the caller of tt(_files).
+expected by the caller of tt(_files).  The first two
+(`tt(globbed-files)' and `tt(directories)') are normally offered
+together to make it easier to complete files in sub-directories.
 
 If the tt(file-patterns) style is set, the default tags are not
 used.  Instead, the value of the style says which tags and which
@@ -1149,15 +1151,15 @@
 example(zstyle ':completion:*:*:rm:*' file-patterns \ 
     '*.o:object-files' '%p:all-files')
 
-Another interesting example is to change the default behaviour that
-makes completion first offer files matching the patterns given by the
-calling function, then directories and then all files.  Many people 
-prefer to get both the files matching the given patterns and the
-directories in the first try and all files at the second try.  To
-achieve this, one could do:
+Another interesting example is to change the default behaviour in a
+way that makes completion first offer files matching the patterns
+given by the calling function, then directories and then all files. 
+Some people prefer this over getting both the files matching the given
+patterns and the directories in the first try and all files at the
+second try.  To achieve this, one could do:
 
 example(zstyle ':completion:*' file-patterns \ 
-    '%p:globbed-files *(-/):directories' '*:all-files')
+    '%p:globbed-files' '*(-/):directories' '*:all-files')
 
 This works even for contexts in which all files would be completed,
 because tt(_files) will not try a pattern more than once and it stops

-- 
Sven Wischnowsky                    wischnow@informatik.hu-berlin.de


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

* Re: path completion and directories
  2001-10-09 12:44       ` Sven Wischnowsky
@ 2001-10-09 13:01         ` Peter Stephenson
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Stephenson @ 2001-10-09 13:01 UTC (permalink / raw)
  To: Zsh hackers list

Sven Wischnowsky wrote:
> The two things that look sensible to me are:
> 
>   globbed and dirs
>   all
>   only globbed
>   only dirs
> 
> Or maybe:
> 
>   globbed and dirs
>   only globbed
>   only dirs
>   all

I suppose the first is probably more useful.  The times when you want to
narrow your search window are less than the ones when you want to widen
it.

I suspect the number of people using this feature is likely to be small,
though.  As far as I can see, _next_tags is about the only use of this,
since the globbed files and directories have in both cases already been
tested when we get to all files, so the difference is invisible for
producing the initial completion list.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


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

end of thread, other threads:[~2001-10-09 13:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-05  6:03 path completion and directories Borsenkow Andrej
2001-10-08 15:51 ` Oliver Kiddle
2001-10-09  9:05   ` Sven Wischnowsky
2001-10-09  9:22     ` Peter Stephenson
2001-10-09 12:44       ` Sven Wischnowsky
2001-10-09 13:01         ` Peter Stephenson

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).