Re: [PATCH] perf tool: Improve bash command line auto-complete for multiple events with comma

From: Arnaldo Carvalho de Melo
Date: Thu Dec 21 2017 - 11:26:47 EST


Em Thu, Dec 21, 2017 at 05:26:10PM +0800, Jin Yao escreveu:
> perf has perf-completion.sh to define command line auto-completion in
> bash/zsh.
>
> For record/stat -e it works for single events, but not working when
> specifying multiple events with comma.

I'm testing this, and found one issue, that can be fixed in a followup
patch, I think:

If I do:

perf stat -e <TAB>

Then it will get all events and offer them as completions:

[acme@jouet perf]$ perf stat -e
Display all 1523 possibilities? (y or n)

Which is around what:

[acme@jouet perf]$ perf list --raw-dump | wc -w
1509
[acme@jouet perf]$

gives.

Ok, so if I say yes all will be presented, and the pager will be used,
etc. then I can press 'q' as soon as I find the one I want and continue
from there (the pager doesn't allow searching with '/', would be nice).

then, the behaviour changes after I add a comma:

[acme@jouet perf]$ perf stat -e cycles,<TAB>
0000-cover-letter.patch Kbuild
0001-perf-tools-Use-shell-function-for-perl-cflags-retrie.patch Kconfig
<SNIP>
[acme@jouet perf]$ perf stat -e cycles

I.e. after the comma it tries autocompletion with files in the local
directory, not with the list of all events.

Only if I have some character right after the comma is that it will look
for events and not files in the local directory:

ipc/
[acme@jouet perf]$ perf stat -e cycles,i<TAB>
icache.hit idq_uops_not_delivered.cycles_le_3_uop_deliv.core
icache.ifdata_stall ild_stall.lcp
icache.misses inst_retired.any
idq.all_dsb_cycles_4_uops inst_retired.any_p
idq.all_dsb_cycles_any_uops inst_retired.prec_dist
idq.all_mite_cycles_4_uops inst_retired.x87
idq.all_mite_cycles_any_uops instructions
idq.dsb_cycles intel_bts//
idq.dsb_uops intel_pt//
<SNIP>
[acme@jouet perf]$ perf stat -e cycles,i

Would be nice to have the same behaviour right after the comma as when
right after -e.

I'm doing a few more tests but I think this can be merged as-is and the
above be just a suggestion for improvement.

Thanks,

- Arnaldo