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>
27 lines
1.0 KiB
Diff
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
|