On Sat 10 Sep 2005 at 17:00:05 -0400, you wrote:
find foo
ask for autocompletion there, only directories are taken into
account.
ls foo
or
cat foo
autocomplete to all filenames (directories and non-directories), as it
should.
This is a limitation of the completion mechanism. There's no easy way to
detect redirection at arbitrary positions on the command line and act
accordingly. To do so would require each command completion function to
handle redirection internally. A more generic solution is required at
the bash level itself.
And what do you suggest that generic solution should be? Don't call
the programmable completion code at all if the previous token appears
to be a redirection?
It's a very difficult question with no ideal solution.
Not incrementing $COMP_CWORD after a redirection token is one option,
but that would lead to other problems. Thinking about it, though, it
might still be preferable to the current status quo.
Otherwise, context-sensitive completion functions will always have to do
something like this:
if [[ ${COMP_WORDS[COMP_CWORD-1]} = *[]* ]]; then
Something that is required by virtually any non-trivial completion
function seems like something that should be tackled a level higher.
Not a great solution, but the best I can come up with at the moment.
Sorry for the absurdly long delay in replying. I've been completely out
of touch for six months as I relocated back to Europe with a new baby,
bought a house, etc.
Cheers,
Ian
--
Ian Macdonald | * JHM wonders what Joey did to earn I'd
[EMAIL PROTECTED] | just like to say, for the record, that
http://www.caliban.org/ | Joey rules. -- Seen on #Debian
|
|
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]