62 lines · 1.4 KB · Text
RawDownload
# perf completion function_exists(){	declare -F $1 > /dev/null	return $?} function_exists __ltrim_colon_completions ||__ltrim_colon_completions(){	if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then		# Remove colon-word prefix from COMPREPLY items		local colon_word=${1%${1##*:}}		local i=${#COMPREPLY[*]}		while [[ $((--i)) -ge 0 ]]; do			COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}		done	fi} have perf &&_perf(){	local cur prev cmd 	COMPREPLY=()	if function_exists _get_comp_words_by_ref; then		_get_comp_words_by_ref -n : cur prev	else		cur=$(_get_cword :)		prev=${COMP_WORDS[COMP_CWORD-1]}	fi 	cmd=${COMP_WORDS[0]} 	# List perf subcommands or long options	if [ $COMP_CWORD -eq 1 ]; then		if [[ $cur == --* ]]; then			COMPREPLY=( $( compgen -W '--help --version \			--exec-path --html-path --paginate --no-pager \			--perf-dir --work-tree --debugfs-dir' -- "$cur" ) )		else			cmds=$($cmd --list-cmds)			COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )		fi	# List possible events for -e option	elif [[ $prev == "-e" && "${COMP_WORDS[1]}" == @(record|stat|top) ]]; then		evts=$($cmd list --raw-dump)		COMPREPLY=( $( compgen -W '$evts' -- "$cur" ) )		__ltrim_colon_completions $cur	# List long option names	elif [[ $cur == --* ]];  then		subcmd=${COMP_WORDS[1]}		opts=$($cmd $subcmd --list-opts)		COMPREPLY=( $( compgen -W '$opts' -- "$cur" ) )	# Fall down to list regular files	else		_filedir	fi} &&complete -F _perf perf