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 | ||||
| } | ||||
|  | ||||
| __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: | ||||
| # | ||||
| #   bash_completion - programmable completion functions for bash 3.2+ | ||||
|  | @ -220,8 +207,17 @@ __gitcomp () | |||
| 	--*=) | ||||
| 		;; | ||||
| 	*) | ||||
| 		local IFS=$'\n' | ||||
| 		__gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" "" | ||||
| 		local c i=0 IFS=$' \t\n' | ||||
| 		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 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Felipe Contreras
						Felipe Contreras