Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

RE: Case-insensitive completion problems with Cygwin 1.7



Through trial-and-error I found that changing fake-files to be:
  zstyle ':completion:*' fake-files '/c:c:' '/d:d:' '/b:b:' '/o:o:' '/w:w:' '/r:r:' '/v:v:'
.. instead of:
  zstyle ':completion:*' fake-files '/:c:' '/:d:' '/:b:' '/:o:' '/:w:' '/:r:' '/:v:'

.. allows case-insensitive completion to work correctly, even when using a drive letter.

However, I've noticed 2 side-effects:

1. When I type `ls /c/<Tab>' the listing includes a spurious 'c:' entry. This does not happen when I use `ls c:/<Tab>'.
2. When I use `ls /c/<Tab>' files with the `execute' bit set are shown according to the `ex' color I've defined in LS_COLORS, and this matches the coloring I see when I just type `ls'. However, when I use `ls c:/<Tab>' executable files are not colorized as expected (just shown as white). It's as if the executable-ness of files is somehow lost when completing via c:/.

Btw, for the coloring I have the following in my .zshrc:
  zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

    --- John.

-----Original Message-----
From: John Cooper [mailto:super.cooper@xxxxxxxxxxxx] 
Sent: 26 September 2010 5:50 PM
To: zsh-users@xxxxxxx
Cc: John Cooper
Subject: Case-insensitive completion problems with Cygwin 1.7

I've just upgraded to Cygwin 1.7 (and zsh 4.3.10) and found that
case-insensitive completion no longer works when the path starts with a
drive letter.

If I start off with `zsh -f' file completion works as expected even when
using a drive letter:
$ ls /c/<TAB>    # works as expected
$ ls c:/<TAB>    # works as expected

However, after running the following (to allow for case-insensitive
completion):
  zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
  autoload -U compinit
  compinit -C
$ ls /c/<TAB>   # still works as expected
$ ls c:/<TAB>   # fails - no completions are listed

Previously I was using zsh 4.3.2 running under Cygwin 1.5, and I used to
additionally have the following lines in my .zshrc:
zstyle ':completion:*:paths' accept-exact 'c:' 'd:' 'b:' 'o:' 'w:' 'r:' 'v:'
zstyle ':completion:*' fake-files '/:c' '/:d' '/:b' '/:o' '/:w' '/:r' '/:v'

This allowed completion to work when using drive letters in zsh 4.3.2, but
it doesn't work with zsh 4.3.10 and Cygwin 1.7.

Is there any other way around this, so that I can still perform
case-insensitive completion using c:/ ?

Btw, my /etc/fstab contains the following, which allows me to use /c/ rather
than the default /cygdrive/c/
none / cygdrive binary,posix=0,user 0 0

Thanks,

    --- John.




Messages sorted by: Reverse Date, Date, Thread, Author