MSYS2-packages/bash-completion/quote_readline_by_ref_fixes.patch
Johannes Schindelin ec3da11425 bash-completion: avoid unnecessary tilde expansion
When connected to an Active Directory (a variant of LDAP), tab completion
becomes very slow because the tilde is expanded all the time, even if
completing paths that do not contain a tilde at all. This developer
observed delays of several seconds at a time.

This is completely unnecessary, so let's do not do that.

The patch was provided by Ove Risberg with a bug report to the original
bash-completion project:

	https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/1390061

Since it fixes code introduced by another add-on patch, that add-on patch
was modified instead of adding yet another patch.

This fixes https://github.com/git-for-windows/git/issues/377

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-09-11 14:22:33 +02:00

27 lines
1.0 KiB
Diff

--- a/bash_completion 2014-03-09 17:38:14 +0000
+++ b/bash_completion 2014-03-13 23:26:44 +0000
@@ -536,13 +536,23 @@
# @param $2 Name of variable to return result to
_quote_readline_by_ref()
{
- if [[ $1 == \'* ]]; then
+ if [ -z "$1" ]; then
+ # avoid quoting if empty
+ printf -v $2 %s "$1"
+ elif [[ $1 == \'* ]]; then
# Leave out first character
printf -v $2 %s "${1:1}"
+ elif [[ $1 == \~* ]]; then
+ # avoid escaping first ~
+ printf -v $2 \~%q "${1:1}"
else
printf -v $2 %q "$1"
fi
+ # Replace double escaping ( \\ ) by single ( \ )
+ # This happens always when argument is already escaped at cmdline,
+ # and passed to this function as e.g.: file\ with\ spaces
+ [[ ${!2} == *\\* ]] && printf -v $2 %s "${1//\\\\/\\}"
# If result becomes quoted like this: $'string', re-evaluate in order to
# drop the additional quoting. See also: http://www.mail-archive.com/
# bash-completion-devel@lists.alioth.debian.org/msg01942.html