Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Case-insensitive completion
- X-seq: zsh-users 6575
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Zsh-users List <zsh-users@xxxxxxxxxx>
- Subject: Re: Case-insensitive completion
- Date: Sun, 14 Sep 2003 18:58:17 +0000
- In-reply-to: <20030914103053.GA827@xxxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <20030914103053.GA827@xxxxxxxxxxxxxxxxxxxxxxxx>
On Sep 14, 12:30pm, Jesper Holmberg wrote:
}
} As I interpret the manual, the following lines:
}
} zstyle ':completion:*' completer _expand _complete _complete:jhcase _ignored
} zstyle ':completion:*:jhcase:*' matcher-list 'm:{a-z}={A-Z}'
}
} would achieve what I want. However, now typing "cd ni<tab>" gives me only
} "nik", and apparently "Nic" no longer matches.
}
} What am I missing?
Completers are called in order until one of them succeeds. Because the
_complete call found "nik", _complete:jhcase was never called.
To get both kinds of patterns, you instead need to use a combination of
several styles that can be rather bewildering:
file-patterns and/or tag-order, to divide the matches into tagged groups;
group-order and possibly group-name, for display ordering of the groups;
matcher (not matcher-list), to control which matches are in which group.
This is a start at it:
-------
zstyle ':completion:*:ci-globbed-files' matcher 'm:{a-z}={A-Z}'
zstyle ':completion:*' file-patterns \
'(#I)%p:globbed-files %p:ci-globbed-files' '*:all-files'
zstyle ':completion:*' group-order globbed-files ci-globbed-files all-files
zstyle ':completion:*' group-name ''
-------
The difficulties are:
- It may work differently when completing in default context than when
completing after a command such as "ls" that has its own completion
function defined. E.g., "ls" somehow ignores the globbed-files group
and goes directly to ci-globbed-files, I don't know why.
- It's quite difficult to express the concept "only files that match
case-insensitively, not those that match case-sensitively." Thus the
ci-globbed-files group is a superset of globbed-files and you get a
redundant listing.
- file-patterns are not tried after the first one that has the pattern
'*:...' which is why the (#I) is thrown in on globbed-files, to force
attempting both globbed-files and ci-globbed-files even if the match
pattern substituted by %p is '*'.
Also note that there was at least one dev release where %p was not
handled properly. I don't recall whether 4.0.7 has that bug. I tried
the above only with the current CVS incarnation of 4.1.1-dev-1.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author