completion: inline __gitcomp_1 to its sole callsite
There is no point in calling a separate function that is only used in one place. Especially considering that there's no need to call compgen, and we traverse the words ourselves both in __gitcompadd, and __gitcomp_1. Let's squash the functions together, and traverse only once. This improves performance. For N number of words: == 1 == original: 0.002s new: 0.000s == 10 == original: 0.005s new: 0.001s == 100 == original: 0.009s new: 0.006s == 1000 == original: 0.027s new: 0.019s == 10000 == original: 0.163s new: 0.151s == 100000 == original: 1.555s new: 1.497s No functional changes. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
7d13e0a3af
commit
b4cfbc969c
|
@ -53,19 +53,6 @@ __gitdir ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
__gitcomp_1 ()
|
|
||||||
{
|
|
||||||
local c IFS=$' \t\n'
|
|
||||||
for c in $1; do
|
|
||||||
c="$c$2"
|
|
||||||
case $c in
|
|
||||||
--*=*|*.) ;;
|
|
||||||
*) c="$c " ;;
|
|
||||||
esac
|
|
||||||
printf '%s\n' "$c"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# The following function is based on code from:
|
# The following function is based on code from:
|
||||||
#
|
#
|
||||||
# bash_completion - programmable completion functions for bash 3.2+
|
# bash_completion - programmable completion functions for bash 3.2+
|
||||||
|
@ -220,8 +207,17 @@ __gitcomp ()
|
||||||
--*=)
|
--*=)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
local IFS=$'\n'
|
local c i=0 IFS=$' \t\n'
|
||||||
__gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" ""
|
for c in $1; do
|
||||||
|
c="$c${4-}"
|
||||||
|
case $c in
|
||||||
|
--*=*|*.) ;;
|
||||||
|
*) c="$c " ;;
|
||||||
|
esac
|
||||||
|
if [[ $c == "$cur_"* ]]; then
|
||||||
|
COMPREPLY[i++]="${2-}$c"
|
||||||
|
fi
|
||||||
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue