* [PATCH] perf tools: Complete tracepoint event names
@ 2012-10-04 5:23 Namhyung Kim
2012-10-05 8:59 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
0 siblings, 1 reply; 2+ messages in thread
From: Namhyung Kim @ 2012-10-04 5:23 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Peter Zijlstra, Paul Mackerras, Ingo Molnar, LKML, Namhyung Kim,
Frederic Weisbecker, David Ahern
From: Namhyung Kim <namhyung.kim@lge.com>
Currently tracepoint events cannot be completed because they contain a
colon (:) character. The colon is considered as a word separator when
bash completion is done - variable COMP_WORDBREAKS contains colon - so
if a word being completed contains a colon it can be a problem.
Recent versions of bash completion provide -n switch to
_get_comp_words_by_ref and __ltrim_colon_completions functions in
order to resolve this issue. Copy the latter in case not exists.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
This patch is based on my previous completion updates set.
tools/perf/bash_completion | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 5c355ababf80..56e6a12aab59 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -6,6 +6,19 @@ function_exists()
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()
{
@@ -13,9 +26,9 @@ _perf()
COMPREPLY=()
if function_exists _get_comp_words_by_ref; then
- _get_comp_words_by_ref cur prev
+ _get_comp_words_by_ref -n : cur prev
else
- cur=$(_get_cword)
+ cur=$(_get_cword :)
prev=${COMP_WORDS[COMP_CWORD-1]}
fi
@@ -35,6 +48,7 @@ _perf()
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]}
--
1.7.11.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip:perf/urgent] perf tools: Complete tracepoint event names
2012-10-04 5:23 [PATCH] perf tools: Complete tracepoint event names Namhyung Kim
@ 2012-10-05 8:59 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Namhyung Kim @ 2012-10-05 8:59 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, paulus, hpa, mingo, a.p.zijlstra,
namhyung.kim, namhyung, fweisbec, dsahern, tglx
Commit-ID: ae0c1f993411d88bf54c9e20a4249ebcc7a041f9
Gitweb: http://git.kernel.org/tip/ae0c1f993411d88bf54c9e20a4249ebcc7a041f9
Author: Namhyung Kim <namhyung.kim@lge.com>
AuthorDate: Thu, 4 Oct 2012 14:23:54 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 4 Oct 2012 12:44:52 -0300
perf tools: Complete tracepoint event names
Currently tracepoint events cannot be completed because they contain a
colon (:) character. The colon is considered as a word separator when
bash completion is done - variable COMP_WORDBREAKS contains colon - so
if a word being completed contains a colon it can be a problem.
Recent versions of bash completion provide -n switch to
_get_comp_words_by_ref and __ltrim_colon_completions functions in order
to resolve this issue. Copy the latter in case not exists.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1349328234-16995-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/bash_completion | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 5c355ab..56e6a12 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -6,6 +6,19 @@ function_exists()
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()
{
@@ -13,9 +26,9 @@ _perf()
COMPREPLY=()
if function_exists _get_comp_words_by_ref; then
- _get_comp_words_by_ref cur prev
+ _get_comp_words_by_ref -n : cur prev
else
- cur=$(_get_cword)
+ cur=$(_get_cword :)
prev=${COMP_WORDS[COMP_CWORD-1]}
fi
@@ -35,6 +48,7 @@ _perf()
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]}
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-10-05 8:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-04 5:23 [PATCH] perf tools: Complete tracepoint event names Namhyung Kim
2012-10-05 8:59 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.