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

Re: Completion and double quotes



On Aug 12, 10:31am, Peter Stephenson wrote:
}
} The code for handling quoting in completion is utterly impenetrable.

To be both more and less specific, the code for handling just about
anything in _path_files is utterly impenetrable.

} It's actually at it's worst when you're in a nested expression, for
} example inside:
} 
}   su -c 'ls /path/to/"file with"<TAB>
} 
} which is quite liable to crash the shell (I didn't dare try).

That may be a slight exaggeration:

schaefer<501> su -c 'ls /home/schaefer/Desktop/Camera\ Dump\ 2010-08-07/
Completing corrections
Camera\ Dump\ 2010-08-07/  Camera\ Dump\ 2010-01-24/
Camera\ Dump\ 2010-03-19/  Camera\ Dump\ 2009-12-31/
Camera\ Dump\ 2010-02-06/  Camera\ Dump\ 2007-08-13/
Camera\ Dump\ 2010-01-30/                           
Completing original
ls /home/schaefer/Desktop/"Camera Dump"

} Even so, it's bad enough even in the "simple" case that I don't think
} it's ever going to be able to second guess intentions to the sort of
} level you want.

The guessing problem could be solved just by keeping the original quoting,
but of course it's not that simple -- in order to decide what to match,
the quoting has to be removed/canonicalized internally, and in the most
general case it's then difficult if not impossible to figure out what
part of the completed string corresponds to the quoted portion of the
original string.  Remember, zsh completion can insert characters almost
anywhere (or even replace the entire original string with something that
doesn't resemble it at all), not merely append at the end.

With regard to putting the quote before the tilde ... that's not going
to work, because unless zsh expanded the tilde before completing, the
resulting word will still have a quoted tilde in it, which in turn will
not be expanded when the command is eventually executed.  Not often
what you want, I suspect.

You may be able to create a wrapper widget along the lines of
Functions/Zle/quote-and-complete-word that restores a more palatable
quoting after completion has finished.



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