From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932846Ab3JOFXi (ORCPT ); Tue, 15 Oct 2013 01:23:38 -0400 Received: from terminus.zytor.com ([198.137.202.10]:32896 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932605Ab3JOFXd (ORCPT ); Tue, 15 Oct 2013 01:23:33 -0400 Date: Mon, 14 Oct 2013 22:23:17 -0700 From: tip-bot for Ramkumar Ramachandra Message-ID: 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 Reply-To: mingo@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org, acme@redhat.com, namhyung.kim@lge.com, fweisbec@gmail.com, tglx@linutronix.de, artagnon@gmail.com In-Reply-To: <1372941691-14684-7-git-send-email-artagnon@gmail.com> References: <1372941691-14684-7-git-send-email-artagnon@gmail.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf completion: Strip dependency on bash-completion Git-Commit-ID: c3fb6717e90049b93d0f5f5714a4d878799d89c2 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.1 (terminus.zytor.com [127.0.0.1]); Mon, 14 Oct 2013 22:23:24 -0700 (PDT) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: c3fb6717e90049b93d0f5f5714a4d878799d89c2 Gitweb: http://git.kernel.org/tip/c3fb6717e90049b93d0f5f5714a4d878799d89c2 Author: Ramkumar Ramachandra AuthorDate: Thu, 4 Jul 2013 18:11:30 +0530 Committer: Arnaldo Carvalho de Melo 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 Cc: Frederic Weisbecker Cc: Namhyung Kim Link: http://lkml.kernel.org/r/1372941691-14684-7-git-send-email-artagnon@gmail.com Signed-off-by: Arnaldo Carvalho de Melo --- 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]}