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

Re: Expansions with glob_complete ignore no_case_glob



Christian Taylor wrote:
> Hi! I'm running zsh 4.2.1 under Linux, and I've observed the following 
> unexpected behaviour:
> 
> With glob_complete set, the menu-completion of a glob pattern should contain 
> the same matches that would be inserted if glob_complete was not set (except 
> that a '*' is added at the end of the pattern). However, the menu-completion 
> always globs case-sensitive, even if no_case_glob is set. Only including (#i)
>  
> in the pattern causes the menu-completion to ignore case.

Yes, this is deliberate for patterns.  As you've spotted, glob_complete
doesn't do filename generation.  This means NO_CASE_GLOB doesn't apply:

CASE_GLOB <D>
       Make globbing (filename generation)  sensitive  to  case.   Note
       that  other  uses  of patterns are always sensitive to case.  If
       the option is unset, the presence of any character which is spe-
       cial  to  filename generation will cause case-insensitive match-
       ing.  For example, cvs(/) can match the directory CVS  owing  to
       the   presence   of   the   globbing  flag  (unless  the  option
       BARE_GLOB_QUAL is unset).

To control case-sensitivity in completion you need to use the more
sophisticated "match control" feature:

zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'

This version tries completion without case conversion, then with, and
replaces the value on the command line with the value generated by
completion.  This is normally correct, but you can choose instead to
have the version on the command line left alone by using "M:" at the
start instead.

See the description of the matcher-list style in the zshcompsys manual
and the Matching Control section in the zshcompwid manual.

-- 
Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************



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