Subversion Repositories configs

Rev

Rev 36 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 - 1
# perf completion
2
 
3
function_exists()
4
{
5
	declare -F $1 > /dev/null
6
	return $?
7
}
8
 
9
function_exists __ltrim_colon_completions ||
10
__ltrim_colon_completions()
11
{
12
	if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then
13
		# Remove colon-word prefix from COMPREPLY items
14
		local colon_word=${1%${1##*:}}
15
		local i=${#COMPREPLY[*]}
16
		while [[ $((--i)) -ge 0 ]]; do
17
			COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
18
		done
19
	fi
20
}
21
 
22
have perf &&
23
_perf()
24
{
25
	local cur prev cmd
26
 
27
	COMPREPLY=()
28
	if function_exists _get_comp_words_by_ref; then
29
		_get_comp_words_by_ref -n : cur prev
30
	else
31
		cur=$(_get_cword :)
32
		prev=${COMP_WORDS[COMP_CWORD-1]}
33
	fi
34
 
35
	cmd=${COMP_WORDS[0]}
36
 
37
	# List perf subcommands or long options
38
	if [ $COMP_CWORD -eq 1 ]; then
39
		if [[ $cur == --* ]]; then
40
			COMPREPLY=( $( compgen -W '--help --version \
41
			--exec-path --html-path --paginate --no-pager \
42
			--perf-dir --work-tree --debugfs-dir' -- "$cur" ) )
43
		else
44
			cmds=$($cmd --list-cmds)
45
			COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )
46
		fi
47
	# List possible events for -e option
48
	elif [[ $prev == "-e" && "${COMP_WORDS[1]}" == @(record|stat|top) ]]; then
49
		evts=$($cmd list --raw-dump)
50
		COMPREPLY=( $( compgen -W '$evts' -- "$cur" ) )
51
		__ltrim_colon_completions $cur
52
	# List long option names
53
	elif [[ $cur == --* ]];  then
54
		subcmd=${COMP_WORDS[1]}
55
		opts=$($cmd $subcmd --list-opts)
56
		COMPREPLY=( $( compgen -W '$opts' -- "$cur" ) )
57
	# Fall down to list regular files
58
	else
59
		_filedir
60
	fi
61
} &&
62
complete -F _perf perf