* [PATCH 0/3] perf tools: Bash completion update
@ 2012-10-02 15:21 Namhyung Kim
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Namhyung Kim @ 2012-10-02 15:21 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Frederic Weisbecker, David Ahern, LKML
Hi,
This patchset improves bash completion support for perf tools. Some
option names are really painful to type so here comes a support for
completing those long option names. But I still think the
--showcpuutilization option needs to be renamed (at least adding a
couple of dashes in it).
Thanks,
Namhyung
Namhyung Kim (3):
perf tools: Check existence of _get_comp_words_by_ref when bash completing
perf tools: Complete long option names of perf command
perf tools: Long option completion support for each subcommands
tools/perf/bash_completion | 36 +++++++++++++++++++++++++++++-------
tools/perf/util/parse-options.c | 8 ++++++++
tools/perf/util/parse-options.h | 1 +
3 files changed, 38 insertions(+), 7 deletions(-)
--
1.7.9.2
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing
2012-10-02 15:21 [PATCH 0/3] perf tools: Bash completion update Namhyung Kim
@ 2012-10-02 15:21 ` Namhyung Kim
2012-10-02 15:54 ` Frederic Weisbecker
2012-10-05 8:52 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 15:21 ` [PATCH 2/3] perf tools: Complete long option names of perf command Namhyung Kim
` (2 subsequent siblings)
3 siblings, 2 replies; 11+ messages in thread
From: Namhyung Kim @ 2012-10-02 15:21 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Frederic Weisbecker, David Ahern, LKML
The '_get_comp_words_by_ref' function is available from the bash
completion v1.2 so that earlier version emits following warning:
$ perf re<TAB>_get_comp_words_by_ref: command not found
Use older '_get_cword' method when the above function doesn't exist.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/bash_completion | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 1958fa539d0f..3d48cee1b5e5 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -1,12 +1,23 @@
# perf completion
+function_exists()
+{
+ declare -F $1 > /dev/null
+ return $?
+}
+
have perf &&
_perf()
{
- local cur cmd
+ local cur prev cmd
COMPREPLY=()
- _get_comp_words_by_ref cur prev
+ if function_exists _get_comp_words_by_ref; then
+ _get_comp_words_by_ref cur prev
+ else
+ cur=$(_get_cword)
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ fi
cmd=${COMP_WORDS[0]}
--
1.7.9.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] perf tools: Complete long option names of perf command
2012-10-02 15:21 [PATCH 0/3] perf tools: Bash completion update Namhyung Kim
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
@ 2012-10-02 15:21 ` Namhyung Kim
2012-10-05 8:53 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 15:21 ` [PATCH 3/3] perf tools: Long option completion support for each subcommands Namhyung Kim
2012-10-02 16:01 ` [PATCH 0/3] perf tools: Bash completion update Frederic Weisbecker
3 siblings, 1 reply; 11+ messages in thread
From: Namhyung Kim @ 2012-10-02 15:21 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Frederic Weisbecker, David Ahern, LKML
The main perf binary can receive a number of options that configure
working environment. Add them to the completion script.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/bash_completion | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 3d48cee1b5e5..bef06f0deeb5 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -21,10 +21,16 @@ _perf()
cmd=${COMP_WORDS[0]}
- # List perf subcommands
+ # List perf subcommands or long options
if [ $COMP_CWORD -eq 1 ]; then
- cmds=$($cmd --list-cmds)
- COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )
+ 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
cmds=$($cmd list --raw-dump)
--
1.7.9.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] perf tools: Long option completion support for each subcommands
2012-10-02 15:21 [PATCH 0/3] perf tools: Bash completion update Namhyung Kim
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
2012-10-02 15:21 ` [PATCH 2/3] perf tools: Complete long option names of perf command Namhyung Kim
@ 2012-10-02 15:21 ` Namhyung Kim
2012-10-05 8:54 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 16:01 ` [PATCH 0/3] perf tools: Bash completion update Frederic Weisbecker
3 siblings, 1 reply; 11+ messages in thread
From: Namhyung Kim @ 2012-10-02 15:21 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Frederic Weisbecker, David Ahern, LKML
Add internal --list-opts option to print all of long option names to
stdout so that it can be used for bash completion engine.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/bash_completion | 9 +++++++--
tools/perf/util/parse-options.c | 8 ++++++++
tools/perf/util/parse-options.h | 1 +
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index bef06f0deeb5..5c355ababf80 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -33,8 +33,13 @@ _perf()
fi
# List possible events for -e option
elif [[ $prev == "-e" && "${COMP_WORDS[1]}" == @(record|stat|top) ]]; then
- cmds=$($cmd list --raw-dump)
- COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )
+ evts=$($cmd list --raw-dump)
+ COMPREPLY=( $( compgen -W '$evts' -- "$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
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c
index 443fc116512b..2bc9e70df7e2 100644
--- a/tools/perf/util/parse-options.c
+++ b/tools/perf/util/parse-options.c
@@ -384,6 +384,8 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
return usage_with_options_internal(usagestr, options, 1);
if (internal_help && !strcmp(arg + 2, "help"))
return parse_options_usage(usagestr, options);
+ if (!strcmp(arg + 2, "list-opts"))
+ return PARSE_OPT_LIST;
switch (parse_long_opt(ctx, arg + 2, options)) {
case -1:
return parse_options_usage(usagestr, options);
@@ -422,6 +424,12 @@ int parse_options(int argc, const char **argv, const struct option *options,
exit(129);
case PARSE_OPT_DONE:
break;
+ case PARSE_OPT_LIST:
+ while (options->type != OPTION_END) {
+ printf("--%s ", options->long_name);
+ options++;
+ }
+ exit(130);
default: /* PARSE_OPT_UNKNOWN */
if (ctx.argv[0][1] == '-') {
error("unknown option `%s'", ctx.argv[0] + 2);
diff --git a/tools/perf/util/parse-options.h b/tools/perf/util/parse-options.h
index abc31a1dac1a..7bb5999940ca 100644
--- a/tools/perf/util/parse-options.h
+++ b/tools/perf/util/parse-options.h
@@ -140,6 +140,7 @@ extern NORETURN void usage_with_options(const char * const *usagestr,
enum {
PARSE_OPT_HELP = -1,
PARSE_OPT_DONE,
+ PARSE_OPT_LIST,
PARSE_OPT_UNKNOWN,
};
--
1.7.9.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
@ 2012-10-02 15:54 ` Frederic Weisbecker
2012-10-04 1:43 ` Namhyung Kim
2012-10-05 8:52 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
1 sibling, 1 reply; 11+ messages in thread
From: Frederic Weisbecker @ 2012-10-02 15:54 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, David Ahern, LKML
On Wed, Oct 03, 2012 at 12:21:32AM +0900, Namhyung Kim wrote:
> The '_get_comp_words_by_ref' function is available from the bash
> completion v1.2 so that earlier version emits following warning:
>
> $ perf re<TAB>_get_comp_words_by_ref: command not found
>
> Use older '_get_cword' method when the above function doesn't exist.
May be only use _get_cword then, if it works everywhere?
>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: David Ahern <dsahern@gmail.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/bash_completion | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
> index 1958fa539d0f..3d48cee1b5e5 100644
> --- a/tools/perf/bash_completion
> +++ b/tools/perf/bash_completion
> @@ -1,12 +1,23 @@
> # perf completion
>
> +function_exists()
> +{
> + declare -F $1 > /dev/null
> + return $?
> +}
> +
> have perf &&
> _perf()
> {
> - local cur cmd
> + local cur prev cmd
>
> COMPREPLY=()
> - _get_comp_words_by_ref cur prev
> + if function_exists _get_comp_words_by_ref; then
> + _get_comp_words_by_ref cur prev
> + else
> + cur=$(_get_cword)
> + prev=${COMP_WORDS[COMP_CWORD-1]}
> + fi
>
> cmd=${COMP_WORDS[0]}
>
> --
> 1.7.9.2
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/3] perf tools: Bash completion update
2012-10-02 15:21 [PATCH 0/3] perf tools: Bash completion update Namhyung Kim
` (2 preceding siblings ...)
2012-10-02 15:21 ` [PATCH 3/3] perf tools: Long option completion support for each subcommands Namhyung Kim
@ 2012-10-02 16:01 ` Frederic Weisbecker
3 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2012-10-02 16:01 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, David Ahern, LKML
On Wed, Oct 03, 2012 at 12:21:31AM +0900, Namhyung Kim wrote:
> Hi,
>
> This patchset improves bash completion support for perf tools. Some
> option names are really painful to type so here comes a support for
> completing those long option names. But I still think the
> --showcpuutilization option needs to be renamed (at least adding a
> couple of dashes in it).
>
> Thanks,
> Namhyung
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Thanks Namhyung!
>
>
> Namhyung Kim (3):
> perf tools: Check existence of _get_comp_words_by_ref when bash completing
> perf tools: Complete long option names of perf command
> perf tools: Long option completion support for each subcommands
>
> tools/perf/bash_completion | 36 +++++++++++++++++++++++++++++-------
> tools/perf/util/parse-options.c | 8 ++++++++
> tools/perf/util/parse-options.h | 1 +
> 3 files changed, 38 insertions(+), 7 deletions(-)
>
> --
> 1.7.9.2
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing
2012-10-02 15:54 ` Frederic Weisbecker
@ 2012-10-04 1:43 ` Namhyung Kim
2012-10-04 8:44 ` Frederic Weisbecker
0 siblings, 1 reply; 11+ messages in thread
From: Namhyung Kim @ 2012-10-04 1:43 UTC (permalink / raw)
To: Frederic Weisbecker
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, David Ahern, LKML
Hi Frederic,
On Tue, 2 Oct 2012 17:54:10 +0200, Frederic Weisbecker wrote:
> On Wed, Oct 03, 2012 at 12:21:32AM +0900, Namhyung Kim wrote:
>> The '_get_comp_words_by_ref' function is available from the bash
>> completion v1.2 so that earlier version emits following warning:
>>
>> $ perf re<TAB>_get_comp_words_by_ref: command not found
>>
>> Use older '_get_cword' method when the above function doesn't exist.
>
> May be only use _get_cword then, if it works everywhere?
It'll work but it's deprecated.
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing
2012-10-04 1:43 ` Namhyung Kim
@ 2012-10-04 8:44 ` Frederic Weisbecker
0 siblings, 0 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2012-10-04 8:44 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra, David Ahern, LKML
On Thu, Oct 04, 2012 at 10:43:03AM +0900, Namhyung Kim wrote:
> Hi Frederic,
>
> On Tue, 2 Oct 2012 17:54:10 +0200, Frederic Weisbecker wrote:
> > On Wed, Oct 03, 2012 at 12:21:32AM +0900, Namhyung Kim wrote:
> >> The '_get_comp_words_by_ref' function is available from the bash
> >> completion v1.2 so that earlier version emits following warning:
> >>
> >> $ perf re<TAB>_get_comp_words_by_ref: command not found
> >>
> >> Use older '_get_cword' method when the above function doesn't exist.
> >
> > May be only use _get_cword then, if it works everywhere?
>
> It'll work but it's deprecated.
Ok.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [tip:perf/urgent] perf tools: Check existence of _get_comp_words_by_ref when bash completing
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
2012-10-02 15:54 ` Frederic Weisbecker
@ 2012-10-05 8:52 ` tip-bot for Namhyung Kim
1 sibling, 0 replies; 11+ messages in thread
From: tip-bot for Namhyung Kim @ 2012-10-05 8:52 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, hpa, mingo, peterz, namhyung, fweisbec,
dsahern, tglx
Commit-ID: a1d668c3ffd38d611f8446615e8f797dcfdfc397
Gitweb: http://git.kernel.org/tip/a1d668c3ffd38d611f8446615e8f797dcfdfc397
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Wed, 3 Oct 2012 00:21:32 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 2 Oct 2012 18:36:42 -0300
perf tools: Check existence of _get_comp_words_by_ref when bash completing
The '_get_comp_words_by_ref' function is available from the bash
completion v1.2 so that earlier version emits following warning:
$ perf re<TAB>_get_comp_words_by_ref: command not found
Use older '_get_cword' method when the above function doesn't exist.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1349191294-6926-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/bash_completion | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 1958fa5..3d48cee 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -1,12 +1,23 @@
# perf completion
+function_exists()
+{
+ declare -F $1 > /dev/null
+ return $?
+}
+
have perf &&
_perf()
{
- local cur cmd
+ local cur prev cmd
COMPREPLY=()
- _get_comp_words_by_ref cur prev
+ if function_exists _get_comp_words_by_ref; then
+ _get_comp_words_by_ref cur prev
+ else
+ cur=$(_get_cword)
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ fi
cmd=${COMP_WORDS[0]}
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/urgent] perf tools: Complete long option names of perf command
2012-10-02 15:21 ` [PATCH 2/3] perf tools: Complete long option names of perf command Namhyung Kim
@ 2012-10-05 8:53 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Namhyung Kim @ 2012-10-05 8:53 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, hpa, mingo, peterz, namhyung, fweisbec,
dsahern, tglx
Commit-ID: 35c2fde1155cc7225361edf43d8efd0aabd28a0c
Gitweb: http://git.kernel.org/tip/35c2fde1155cc7225361edf43d8efd0aabd28a0c
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Wed, 3 Oct 2012 00:21:33 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 2 Oct 2012 18:36:43 -0300
perf tools: Complete long option names of perf command
The main perf binary can receive a number of options that configure
working environment. Add them to the completion script.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1349191294-6926-3-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/bash_completion | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 3d48cee..bef06f0 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -21,10 +21,16 @@ _perf()
cmd=${COMP_WORDS[0]}
- # List perf subcommands
+ # List perf subcommands or long options
if [ $COMP_CWORD -eq 1 ]; then
- cmds=$($cmd --list-cmds)
- COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )
+ 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
cmds=$($cmd list --raw-dump)
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/urgent] perf tools: Long option completion support for each subcommands
2012-10-02 15:21 ` [PATCH 3/3] perf tools: Long option completion support for each subcommands Namhyung Kim
@ 2012-10-05 8:54 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Namhyung Kim @ 2012-10-05 8:54 UTC (permalink / raw)
To: linux-tip-commits
Cc: acme, linux-kernel, hpa, mingo, peterz, namhyung, fweisbec,
dsahern, tglx
Commit-ID: 4d8061faca7a50010f037374410f0c3647c3ecf8
Gitweb: http://git.kernel.org/tip/4d8061faca7a50010f037374410f0c3647c3ecf8
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Wed, 3 Oct 2012 00:21:34 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 2 Oct 2012 18:36:44 -0300
perf tools: Long option completion support for each subcommands
Add internal --list-opts option to print all of long option names to
stdout so that it can be used for bash completion engine.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1349191294-6926-4-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/bash_completion | 9 +++++++--
tools/perf/util/parse-options.c | 8 ++++++++
tools/perf/util/parse-options.h | 1 +
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index bef06f0..5c355ab 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -33,8 +33,13 @@ _perf()
fi
# List possible events for -e option
elif [[ $prev == "-e" && "${COMP_WORDS[1]}" == @(record|stat|top) ]]; then
- cmds=$($cmd list --raw-dump)
- COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) )
+ evts=$($cmd list --raw-dump)
+ COMPREPLY=( $( compgen -W '$evts' -- "$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
diff --git a/tools/perf/util/parse-options.c b/tools/perf/util/parse-options.c
index 443fc11..2bc9e70 100644
--- a/tools/perf/util/parse-options.c
+++ b/tools/perf/util/parse-options.c
@@ -384,6 +384,8 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
return usage_with_options_internal(usagestr, options, 1);
if (internal_help && !strcmp(arg + 2, "help"))
return parse_options_usage(usagestr, options);
+ if (!strcmp(arg + 2, "list-opts"))
+ return PARSE_OPT_LIST;
switch (parse_long_opt(ctx, arg + 2, options)) {
case -1:
return parse_options_usage(usagestr, options);
@@ -422,6 +424,12 @@ int parse_options(int argc, const char **argv, const struct option *options,
exit(129);
case PARSE_OPT_DONE:
break;
+ case PARSE_OPT_LIST:
+ while (options->type != OPTION_END) {
+ printf("--%s ", options->long_name);
+ options++;
+ }
+ exit(130);
default: /* PARSE_OPT_UNKNOWN */
if (ctx.argv[0][1] == '-') {
error("unknown option `%s'", ctx.argv[0] + 2);
diff --git a/tools/perf/util/parse-options.h b/tools/perf/util/parse-options.h
index abc31a1..7bb5999 100644
--- a/tools/perf/util/parse-options.h
+++ b/tools/perf/util/parse-options.h
@@ -140,6 +140,7 @@ extern NORETURN void usage_with_options(const char * const *usagestr,
enum {
PARSE_OPT_HELP = -1,
PARSE_OPT_DONE,
+ PARSE_OPT_LIST,
PARSE_OPT_UNKNOWN,
};
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-10-05 8:54 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-02 15:21 [PATCH 0/3] perf tools: Bash completion update Namhyung Kim
2012-10-02 15:21 ` [PATCH 1/3] perf tools: Check existence of _get_comp_words_by_ref when bash completing Namhyung Kim
2012-10-02 15:54 ` Frederic Weisbecker
2012-10-04 1:43 ` Namhyung Kim
2012-10-04 8:44 ` Frederic Weisbecker
2012-10-05 8:52 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 15:21 ` [PATCH 2/3] perf tools: Complete long option names of perf command Namhyung Kim
2012-10-05 8:53 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 15:21 ` [PATCH 3/3] perf tools: Long option completion support for each subcommands Namhyung Kim
2012-10-05 8:54 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
2012-10-02 16:01 ` [PATCH 0/3] perf tools: Bash completion update Frederic Weisbecker
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.