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

Re: PATCH: completion for perl



Sven Wischnowsky (wischnow@xxxxxxxxxxxxxxxxxxxxxxx) wrote:
> 
> Adam Spiers wrote:
> 
> > Whilst struggling with the mess which is _perl_config_vars below, it
> > struck me how an equivalent of compset -P which matched the /whole/ of
> > PREFIX rather than just the beginning would have come in handy. 
> 
> Err... `compset -P "*"' does that, but it leaves you with an empty
> $PREFIX, of course, which is probably not what one wants.

Sorry; I didn't explain myself clearly at all.  I would like to be
able to do a compset -P type of operation using a pattern which is
anchored to both the start /and/ end of PREFIX, rather than just the
start, which is what currently always happens.  Then again, I suppose
this can be implemented easily manually, e.g.:

  if [[ "$PREFIX" == *: ]]; then
    IPREFIX="$IPREFIX$PREFIX"
    PREFIX=''
  fi

> > Also, as you can see from the compstate[quoting] line below, I
> > tried to get completion working for
> > 
> >   $ perl -V:'<TAB>
> > 
> > and
> > 
> >   $ perl -V:"<TAB>
> > 
> > so that it would insert a single space after each configuration
> > variable completed while within quotes, rather than a quoted single
> > space, but I didn't fully understand how compset -q works, and
> > couldn't stop it from eating up the opening quote.  Help! :-)
> 
> The problem is that we check the quoting stuff at the very beginning
> of the completion code -- and detect only quotes at the beginning of
> the word. So what we could get to work is completion of
> 
>   $ perl '-V:<TAB>
> 
> but not with the quote after the colon. That's done with first calling 
> `compset -q', then the `compset -P'. Getting quotes in words to work
> is to hard to make me try it (all kinds of nasty interactions with the 
> lexer). But maybe calling first `compset -P' and then `compset -q'
> should have the same effect as the other way round... I currently
> don't remember why it behaves the way it does.

So is there currently no solution?  I tried using things like

  compset -P '*"'

but they never matched, presumably because of the lexer interactions
you mention.



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