zsh-users
 help / color / mirror / code / Atom feed
* The "-g" option in compctl doesn't insert correctly
@ 2005-12-04  9:35 DervishD
  2005-12-05  5:00 ` Bart Schaefer
  0 siblings, 1 reply; 3+ messages in thread
From: DervishD @ 2005-12-04  9:35 UTC (permalink / raw)
  To: Zsh Users

    Hi all :)

    Yes, I know, compctl is deprecated and I should use compsys, but
anyway by now I will keep using compctl...

    $ print /example/dir/*(.x:t)
    one two three four five six
    $ compctl -g '/example/dir/*(.x:t)' example
    $ example <TAB><TAB>
    $ example two<CURSOR IS HERE>

    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. But, curiously enough, if the compctl
command is "compctl -s '/example/dir/*(.x:t)' example", then IT WORKS
TOO, so the problem seems to be related to "-g" and ":" modifiers.

    What am I doing wrong? Am I supposed to not messing with "-g"
results using modifiers?

    This is not an issue, because I can use "-s" instead, but I'm
curious anyway...

    Thanks a lot in advance :)

    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...


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: The "-g" option in compctl doesn't insert correctly
  2005-12-04  9:35 The "-g" option in compctl doesn't insert correctly DervishD
@ 2005-12-05  5:00 ` Bart Schaefer
  2005-12-05  8:58   ` DervishD
  0 siblings, 1 reply; 3+ messages in thread
From: Bart Schaefer @ 2005-12-05  5:00 UTC (permalink / raw)
  To: Zsh Users

On Dec 4, 10:35am, DervishD wrote:
}
}     $ 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.

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.

What you really want is

    compctl -W /example/dir -g '*(.x)' example


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: The "-g" option in compctl doesn't insert correctly
  2005-12-05  5:00 ` Bart Schaefer
@ 2005-12-05  8:58   ` DervishD
  0 siblings, 0 replies; 3+ messages in thread
From: DervishD @ 2005-12-05  8:58 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: Zsh Users

    Hi Bart :)

 * Bart Schaefer <schaefer@brasslantern.com> 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...


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-12-05  8:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-04  9:35 The "-g" option in compctl doesn't insert correctly DervishD
2005-12-05  5:00 ` Bart Schaefer
2005-12-05  8:58   ` DervishD

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).