* When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
@ 2019-12-09 1:19 Felix.Chen
2019-12-09 9:23 ` Mikael Magnusson
0 siblings, 1 reply; 6+ messages in thread
From: Felix.Chen @ 2019-12-09 1:19 UTC (permalink / raw)
To: zsh-workers
[-- Attachment #1: Type: text/plain, Size: 206 bytes --]
% mkdir a-b
% touch a-b/{c,d}
Type 'ls a-b' without quotes and press tab multiple times, zsh will cycle
through 'ls a-b/c' and 'ls a-b/d'.
But if GLOB_COMPLETE is on, zsh only complete up to 'a-b/'.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
2019-12-09 1:19 When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens Felix.Chen
@ 2019-12-09 9:23 ` Mikael Magnusson
2019-12-09 9:29 ` Daniel Shahaf
2019-12-10 0:51 ` Felix Chen
0 siblings, 2 replies; 6+ messages in thread
From: Mikael Magnusson @ 2019-12-09 9:23 UTC (permalink / raw)
To: Felix.Chen; +Cc: zsh-workers
On 12/9/19, Felix.Chen <felix.chen@3spocketnet.com.tw> wrote:
> % mkdir a-b
>
> % touch a-b/{c,d}
>
>
>
> Type 'ls a-b' without quotes and press tab multiple times, zsh will cycle
> through 'ls a-b/c' and 'ls a-b/d'.
>
> But if GLOB_COMPLETE is on, zsh only complete up to 'a-b/'.
Hi,
It works fine here, are you using an old version of zsh? (current
version is 5.7.1)
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
2019-12-09 9:23 ` Mikael Magnusson
@ 2019-12-09 9:29 ` Daniel Shahaf
2019-12-09 10:21 ` Peter Stephenson
2019-12-10 0:51 ` Felix Chen
1 sibling, 1 reply; 6+ messages in thread
From: Daniel Shahaf @ 2019-12-09 9:29 UTC (permalink / raw)
To: zsh-workers, Felix.Chen
Mikael Magnusson wrote on Mon, 09 Dec 2019 09:23 +00:00:
> On 12/9/19, Felix.Chen <felix.chen@3spocketnet.com.tw> wrote:
> > % mkdir a-b
> >
> > % touch a-b/{c,d}
> >
> >
> >
> > Type 'ls a-b' without quotes and press tab multiple times, zsh will cycle
> > through 'ls a-b/c' and 'ls a-b/d'.
> >
> > But if GLOB_COMPLETE is on, zsh only complete up to 'a-b/'.
>
> Hi,
>
> It works fine here, are you using an old version of zsh? (current
> version is 5.7.1)
I can reproduce it in 'zsh -f' + 'setopt GLOB_COMPLETE' but can't
reproduce it if I then run compinit, in current(ish) master.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
2019-12-09 9:29 ` Daniel Shahaf
@ 2019-12-09 10:21 ` Peter Stephenson
2019-12-09 10:34 ` Peter Stephenson
0 siblings, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2019-12-09 10:21 UTC (permalink / raw)
To: zsh-workers
On Mon, 2019-12-09 at 09:29 +0000, Daniel Shahaf wrote:
> Mikael Magnusson wrote on Mon, 09 Dec 2019 09:23 +00:00:
> >
> > On 12/9/19, Felix.Chen <felix.chen@3spocketnet.com.tw> wrote:
> > >
> > > % mkdir a-b
> > >
> > > % touch a-b/{c,d}
> > >
> > >
> > >
> > > Type 'ls a-b' without quotes and press tab multiple times, zsh will cycle
> > > through 'ls a-b/c' and 'ls a-b/d'.
> > >
> > > But if GLOB_COMPLETE is on, zsh only complete up to 'a-b/'.
> > Hi,
> >
> > It works fine here, are you using an old version of zsh? (current
> > version is 5.7.1)
> I can reproduce it in 'zsh -f' + 'setopt GLOB_COMPLETE' but can't
> reproduce it if I then run compinit, in current(ish) master.
Presuming this is this issue...
There may be more like this, comptcl-age completion doesn't get much
attention.
pws
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index f242e1b28..f86a7552c 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -3035,9 +3035,9 @@ sep_comp_string(char *ss, char *s, int noffs)
static void
makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
{
- int t, sf1, sf2, ooffs, um = usemenu, delit, oaw, gflags;
+ int t, sf1, sf2, ooffs, um = usemenu, delit, oaw, gflags, ccount;
int mn = mnum, ohp = haspattern;
- char *p, *sd = NULL, *tt, *s1, *s2, *os = dupstring(s);
+ char *p, *sd = NULL, *tt, *s1, *s2, *os = dupstring(s), *psrc, *pdst;
struct cmlist ms;
ccont |= (cc->mask2 & (CC_CCCONT | CC_DEFCONT | CC_PATCONT));
@@ -3178,7 +3178,15 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
/* Compute line prefix/suffix. */
lpl = offs;
lpre = zhalloc(lpl + 1);
- memcpy(lpre, s, lpl);
+ for (ccount = 0, psrc = s, pdst = lpre;
+ ccount < lpl;
+ ++ccount, ++psrc, ++pdst)
+ {
+ if (*psrc == Dash)
+ *pdst = '-';
+ else
+ *pdst = *psrc;
+ }
lpre[lpl] = '\0';
qlpre = quotename(lpre);
lsuf = dupstring(s + offs);
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
2019-12-09 10:21 ` Peter Stephenson
@ 2019-12-09 10:34 ` Peter Stephenson
0 siblings, 0 replies; 6+ messages in thread
From: Peter Stephenson @ 2019-12-09 10:34 UTC (permalink / raw)
To: zsh-workers
On Mon, 2019-12-09 at 10:21 +0000, Peter Stephenson wrote:
> + for (ccount = 0, psrc = s, pdst = lpre;
> + ccount < lpl;
> + ++ccount, ++psrc, ++pdst)
> + {
> + if (*psrc == Dash)
> + *pdst = '-';
> + else
> + *pdst = *psrc;
> + }
This is a bit better thought through --- check if globbing is actually
in use and also beware of metafied characters.
pws
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index f242e1b28..1dcec387d 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -3178,7 +3178,27 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
/* Compute line prefix/suffix. */
lpl = offs;
lpre = zhalloc(lpl + 1);
- memcpy(lpre, s, lpl);
+ if (comppatmatch)
+ {
+ int ccount;
+ char *psrc, *pdst;
+ for (ccount = 0, psrc = s, pdst = lpre;
+ ccount < lpl;
+ ++ccount, ++psrc, ++pdst)
+ {
+ if (*psrc == Meta)
+ {
+ ccount++;
+ *pdst++ = *psrc++;
+ *pdst = *psrc;
+ } else if (*psrc == Dash)
+ *pdst = '-';
+ else
+ *pdst = *psrc;
+ }
+ }
+ else
+ memcpy(lpre, s, lpl);
lpre[lpl] = '\0';
qlpre = quotename(lpre);
lsuf = dupstring(s + offs);
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens
2019-12-09 9:23 ` Mikael Magnusson
2019-12-09 9:29 ` Daniel Shahaf
@ 2019-12-10 0:51 ` Felix Chen
1 sibling, 0 replies; 6+ messages in thread
From: Felix Chen @ 2019-12-10 0:51 UTC (permalink / raw)
To: zsh-workers
I found another glitch.
$ zsh --version
zsh 5.7.1 (x86_64-slackware-linux-gnu)
$ zsh -f
% setopt GLOB_COMPLETE
% unsetopt MENU_COMPLETE
% touch a-{b..d}
% ls a
Press tab twice, zsh should only complete up to 'a-' rather than inserting the first possible match.
cf.
% touch ee{f..h}
Is this related?
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-12-10 1:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-09 1:19 When GLOB_COMPLETE is on, tab completion does not work with path containing hyphens Felix.Chen
2019-12-09 9:23 ` Mikael Magnusson
2019-12-09 9:29 ` Daniel Shahaf
2019-12-09 10:21 ` Peter Stephenson
2019-12-09 10:34 ` Peter Stephenson
2019-12-10 0:51 ` Felix Chen
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).