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]

Reply via email to