All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Ramkumar Ramachandra <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, linux-kernel@vger.kernel.org, hpa@zytor.com,
	mingo@kernel.org, namhyung.kim@lge.com, fweisbec@gmail.com,
	tglx@linutronix.de, artagnon@gmail.com
Subject: [tip:perf/core] perf completion: Strip dependency on bash-completion
Date: Mon, 14 Oct 2013 22:23:17 -0700	[thread overview]
Message-ID: <tip-c3fb6717e90049b93d0f5f5714a4d878799d89c2@git.kernel.org> (raw)
In-Reply-To: <1372941691-14684-7-git-send-email-artagnon@gmail.com>

Commit-ID:  c3fb6717e90049b93d0f5f5714a4d878799d89c2
Gitweb:     http://git.kernel.org/tip/c3fb6717e90049b93d0f5f5714a4d878799d89c2
Author:     Ramkumar Ramachandra <artagnon@gmail.com>
AuthorDate: Thu, 4 Jul 2013 18:11:30 +0530
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 9 Oct 2013 11:12:24 -0300

perf completion: Strip dependency on bash-completion

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.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Link: http://lkml.kernel.org/r/1372941691-14684-7-git-send-email-artagnon@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 35fdda1..ee9c6d8 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]}
 

  reply	other threads:[~2013-10-15  5:23 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 ` [PATCH 6/7] perf completion: strip dependency on bash-completion Ramkumar Ramachandra
2013-10-15  5:23   ` tip-bot for Ramkumar Ramachandra [this message]
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=tip-c3fb6717e90049b93d0f5f5714a4d878799d89c2@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=artagnon@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung.kim@lge.com \
    --cc=tglx@linutronix.de \
    /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 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.