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

Re: The "-g" option in compctl doesn't insert correctly

    Hi Bart :)

 * Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> dixit:
> }     $ compctl -g '/example/dir/*(.x:t)' example
> } 
> }     Now, if I press <ENTER> the completion is accepted but the cursor
> } doesn't move on to allow for more completions. If I remove the ":t"
> } modifier, then all works ok.
> The -g option tells compctl that what's being completed are file
> names, which in the absence of any other options are expected to be
> relative to either the current directory or to the path prefix on
> the command line; but what you're generating are the tails of file
> paths, relative to some fixed directory.

    OK, I understand that. I imagined that the reason for the "-g"
option was not only speed (as told in the manual)

> Compctl is going to try to find a file (or directory) matching the
> name you generated, so that it can append either a space (for a
> file) or a slash (for a directory); but it's not going to find
> anything that matches (unless your current directory is
> /example/dir) because you've lopped off the path.  So it appends
> nothing.

    Now I understand :)) I supposed that the ":t" modifier was
causing problems to the completion code, but I see that the real
problem is a lack of match. Of course I didn't noticed that at the
end of a (filename) completion the completion code appends an space
*or* a slash. It is SO familiar for me that I just didn't consider
it. Thanks for the explanation, Bart :)
> What you really want is
>     compctl -W /example/dir -g '*(.x)' example

    Oh, in fact I tried that too and it worked, so I was more
convinced than ever that the problem was in the ":t" modifier. I see
I was wrong...

    Thanks a lot for your useful and interesting explanation :)

    Raúl Núñez de Arenas Coronado

Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...

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