From: Ramkumar Ramachandra <artagnon@gmail.com>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Namhyung Kim <namhyung.kim@lge.com>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: [PATCH 6/7] perf completion: strip dependency on bash-completion
Date: Thu, 4 Jul 2013 18:11:30 +0530 [thread overview]
Message-ID: <1372941691-14684-7-git-send-email-artagnon@gmail.com> (raw)
In-Reply-To: <1372941691-14684-1-git-send-email-artagnon@gmail.com>
The bash-completion package defines the _get_comp_words_by_ref
function. There is no need to depend on it, as we can reimplement it
like git.git has.
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
tools/perf/bash_completion | 83 ++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 77 insertions(+), 6 deletions(-)
diff --git a/tools/perf/bash_completion b/tools/perf/bash_completion
index 852d444..765fb2f 100644
--- a/tools/perf/bash_completion
+++ b/tools/perf/bash_completion
@@ -1,5 +1,81 @@
# perf completion
+# Taken from git.git's completion script.
+__my_reassemble_comp_words_by_ref ()
+{
+ local exclude i j first
+ # Which word separators to exclude?
+ exclude="${1//[^$COMP_WORDBREAKS]}"
+ cword_=$COMP_CWORD
+ if [ -z "$exclude" ]; then
+ words_=("${COMP_WORDS[@]}")
+ return
+ fi
+ # List of word completion separators has shrunk;
+ # re-assemble words to complete.
+ for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do
+ # Append each nonempty word consisting of just
+ # word separator characters to the current word.
+ first=t
+ while
+ [ $i -gt 0 ] &&
+ [ -n "${COMP_WORDS[$i]}" ] &&
+ # word consists of excluded word separators
+ [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]
+ do
+ # Attach to the previous token,
+ # unless the previous token is the command name.
+ if [ $j -ge 2 ] && [ -n "$first" ]; then
+ ((j--))
+ fi
+ first=
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
+ if [ $i = $COMP_CWORD ]; then
+ cword_=$j
+ fi
+ if (($i < ${#COMP_WORDS[@]} - 1)); then
+ ((i++))
+ else
+ # Done.
+ return
+ fi
+ done
+ words_[$j]=${words_[j]}${COMP_WORDS[i]}
+ if [ $i = $COMP_CWORD ]; then
+ cword_=$j
+ fi
+ done
+}
+
+type _get_comp_words_by_ref &>/dev/null ||
+_get_comp_words_by_ref ()
+{
+ local exclude cur_ words_ cword_
+ if [ "$1" = "-n" ]; then
+ exclude=$2
+ shift 2
+ fi
+ __my_reassemble_comp_words_by_ref "$exclude"
+ cur_=${words_[cword_]}
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ cur)
+ cur=$cur_
+ ;;
+ prev)
+ prev=${words_[$cword_-1]}
+ ;;
+ words)
+ words=("${words_[@]}")
+ ;;
+ cword)
+ cword=$cword_
+ ;;
+ esac
+ shift
+ done
+}
+
type __ltrim_colon_completions &>/dev/null ||
__ltrim_colon_completions ()
{
@@ -19,12 +95,7 @@ _perf ()
local cur prev cmd
COMPREPLY=()
- if function_exists _get_comp_words_by_ref; then
- _get_comp_words_by_ref -n : cur prev
- else
- cur=$(_get_cword :)
- prev=${COMP_WORDS[COMP_CWORD-1]}
- fi
+ _get_comp_words_by_ref -n : cur prev
cmd=${COMP_WORDS[0]}
--
1.8.3.1.643.gebeea52.dirty
next prev parent reply other threads:[~2013-07-04 12:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-04 12:41 [PATCH 0/7] Minor perf completion improvements Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 1/7] perf completion: don't dictate perf install location Ramkumar Ramachandra
2013-10-15 5:22 ` [tip:perf/core] perf completion: Don' t " tip-bot for Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 2/7] perf completion: update __ltrim_colon_completions Ramkumar Ramachandra
2013-10-15 5:22 ` [tip:perf/core] perf completion: Update __ltrim_colon_completions tip-bot for Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 3/7] perf completion: strip dependency on _filedir Ramkumar Ramachandra
2013-10-15 5:23 ` [tip:perf/core] perf completion: Strip " tip-bot for Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 4/7] perf completion: modernize style Ramkumar Ramachandra
2013-07-16 17:19 ` Arnaldo Carvalho de Melo
2013-07-16 17:22 ` Ramkumar Ramachandra
2013-08-07 20:26 ` Arnaldo Carvalho de Melo
2013-08-08 4:19 ` Ramkumar Ramachandra
2013-09-18 23:31 ` Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 5/7] perf completion: strip function_exists () Ramkumar Ramachandra
2013-10-15 5:23 ` [tip:perf/core] perf completion: Strip " tip-bot for Ramkumar Ramachandra
2013-07-04 12:41 ` Ramkumar Ramachandra [this message]
2013-10-15 5:23 ` [tip:perf/core] perf completion: Strip dependency on bash-completion tip-bot for Ramkumar Ramachandra
2013-07-04 12:41 ` [PATCH 7/7] perf completion: use more comp words Ramkumar Ramachandra
2013-10-15 5:23 ` [tip:perf/core] perf completion: Use " tip-bot for Ramkumar Ramachandra
2013-07-05 2:46 ` [PATCH 0/7] Minor perf completion improvements Namhyung Kim
2013-07-05 10:03 ` Ramkumar Ramachandra
2013-07-15 7:51 ` Ramkumar Ramachandra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1372941691-14684-7-git-send-email-artagnon@gmail.com \
--to=artagnon@gmail.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=namhyung.kim@lge.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).