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

Re: Expanding quotes



On 12/23/2013 08:15 PM, Bart Schaefer wrote:
> It's a syntactic question as well as a semantic one.  For example, you
> typed
> 
>     ls *\"
> 
> and expected completion to treat backslash-dquote as a unit matching a
> literal double quote.  But someone else might type
> 
>     ls *"
> 
> and expect completion to *supply* the missing backslash, because there
> is a file name ending with a quote.  It gets even more complicated if

I'm pretty sure I've experienced this behavior before, though it's
definitely rare.

> A third complication is that there are a huge number of different ways
> to apply quoting, and trying to figure out which one corresponds to what
> the user already typed is difficult to generalize.  The globbing code
> that generates the list of possible files returns a particular quoting
> scheme that would have to be converted to the user's arbitrary quoting.

I see.

> We'd be happy to find some more volunteers to work on the internals of
> completion to resolve more of these cases.

Thanks for the clarification, the rationale is sound for me.

Personally, I would actually prefer is there was an option in zsh to
normalize the quoting mechanism to always "double quote" the argument
instead of escaping characters (thus inserting the initial double-quote
if missing). I don't know if this would actually simplify or furthermore
complicate the expansion rules.

With complete_in_word and all the other completion switches I definitely
see the complexity of "doing the right thing" in all the cases. Though
the fact that a glob might not expand in the same way as when executed
makes a bit of uneasy feeling for me. I often use expansion to
proof-check a glob instead of executing the command twice.

Maybe there's a better way to do it that doesn't involve running "ls
glob" before "real-command glob".




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