mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-15 04:32:24 +00:00
On an interactive shell in emacs or vi, type a command with a $'…' quoted string that contains a backslash-escaped single quote, like: $ true $'foo\'bar' ▁ Then begin to type the name of a file present in the current working directory and press tab. Nothing happens as completion fails to work. The completion code does not recognise $'…' strings. Instead, it parses them as '…' strings in which there are no backslash escapes, so it considers the last ' to open a second quoted string which is not terminated. Plus, when replacing a $'…' string with a (backslash-escaped) completed string, the initial '$' is not replaced: $ $'/etc/hosts<Tab> $ $/etc/hosts src/cmd/ksh93/edit/completion.c: - find_begin(): - Learn how to recognise $'…' strings. A new local dollarquote flag variable is used to distinguish them from regular '…' strings. The difference is that backslash escapes (and only those) should be recognised as in "…". - Set a special type -1 for $'…' as the caller will need a way to distinguish those from '…'. - ed_expand(): When replacing a quoted string, remove an extra initial character (being the $ in $') if the type set by find_begin() is -1. Resolves: https://github.com/ksh93/ksh/issues/462 |
||
---|---|---|
.. | ||
cmd | ||
lib | ||
Mamfile |