perf completion: Introduce zsh support
__perfcomp(), __perfcomp_colon(), and _perf() have to be overridden. Inspired by the way the git.git completion system is structured. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1384704807-15779-5-git-send-email-artagnon@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
37e72c3106
Коммит
f38ab8af79
|
@ -1,4 +1,4 @@
|
|||
# perf completion
|
||||
# perf bash and zsh completion
|
||||
|
||||
# Taken from git.git's completion script.
|
||||
__my_reassemble_comp_words_by_ref()
|
||||
|
@ -129,6 +129,67 @@ __perf_main ()
|
|||
fi
|
||||
}
|
||||
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
autoload -U +X compinit && compinit
|
||||
|
||||
__perfcomp ()
|
||||
{
|
||||
emulate -L zsh
|
||||
|
||||
local c IFS=$' \t\n'
|
||||
local -a array
|
||||
|
||||
for c in ${=1}; do
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
array[${#array[@]}+1]="$c"
|
||||
done
|
||||
|
||||
compset -P '*[=:]'
|
||||
compadd -Q -S '' -a -- array && _ret=0
|
||||
}
|
||||
|
||||
__perfcomp_colon ()
|
||||
{
|
||||
emulate -L zsh
|
||||
|
||||
local cur_="${2-$cur}"
|
||||
local c IFS=$' \t\n'
|
||||
local -a array
|
||||
|
||||
if [[ "$cur_" == *:* ]]; then
|
||||
local colon_word=${cur_%"${cur_##*:}"}
|
||||
fi
|
||||
|
||||
for c in ${=1}; do
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
array[$#array+1]=${c#"$colon_word"}
|
||||
done
|
||||
|
||||
compset -P '*[=:]'
|
||||
compadd -Q -S '' -a -- array && _ret=0
|
||||
}
|
||||
|
||||
_perf ()
|
||||
{
|
||||
local _ret=1 cur cword prev
|
||||
cur=${words[CURRENT]}
|
||||
prev=${words[CURRENT-1]}
|
||||
let cword=CURRENT-1
|
||||
emulate ksh -c __perf_main
|
||||
let _ret && _default && _ret=0
|
||||
return _ret
|
||||
}
|
||||
|
||||
compdef _perf perf
|
||||
return
|
||||
fi
|
||||
|
||||
type perf &>/dev/null &&
|
||||
_perf()
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче