diff --git a/package/mathieu/bashcompletion/bashcompletion.conf b/package/mathieu/bashcompletion/bashcompletion.conf index af1223213..823d31756 100644 --- a/package/mathieu/bashcompletion/bashcompletion.conf +++ b/package/mathieu/bashcompletion/bashcompletion.conf @@ -22,15 +22,12 @@ bc_main() { cp bash_completion $root/etc/ - ln -snf ../bash_completion $root/etc/profile.d/ - mkdir -p $root/etc/bash_completion.d - - (cd contrib - for i in * - do - pkginstalled $i && cp $i $root/etc/bash_completion.d/ - done) + cp $confdir/profile_d_bashcomp.sh $root/etc/profile.d/bash_completion + cp $confdir/usr_bin_bashcomp.sh $root/usr/bin/bashcomp + chmod +x $root/usr/bin/bashcomp + mkdir -p $root/etc/bash_completion.d + cp contrib/* $root/etc/bash_completion.d/ cp $confdir/rock-tools $root/etc/bash_completion.d/ } diff --git a/package/mathieu/bashcompletion/profile_d_bashcomp.sh b/package/mathieu/bashcompletion/profile_d_bashcomp.sh new file mode 100644 index 000000000..b2b6fd6c8 --- /dev/null +++ b/package/mathieu/bashcompletion/profile_d_bashcomp.sh @@ -0,0 +1,43 @@ +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/package/mathieu/bashcompletion/profile_d_bashcomp.sh +# ROCK Linux is Copyright (C) 1998 - 2004 Clifford Wolf +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- + +# off ..... just default tab completion +# intern .. smart tab completion with shell function (fast) +# extern .. smart tab completion with ext. progs (slow but cleaner) +# +completion_mode=off + +if [ -n "$PS1" ] +then + case "$completion_mode" in + intern) + source /etc/bash_completion + ;; + extern) + shopt -s extglob progcomp + eval "$( bashcomp )" + ;; + esac +fi + +unset completion_mode + diff --git a/package/mathieu/bashcompletion/usr_bin_bashcomp.sh b/package/mathieu/bashcompletion/usr_bin_bashcomp.sh new file mode 100644 index 000000000..fb8b325e8 --- /dev/null +++ b/package/mathieu/bashcompletion/usr_bin_bashcomp.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/package/mathieu/bashcompletion/usr_bin_bashcomp.sh +# ROCK Linux is Copyright (C) 1998 - 2004 Clifford Wolf +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- + +if [ -z "$*" ] +then + . /etc/bash_completion + complete | sed "s, -F \([^ ]*\), -C '$0 \1'," + + tmpfile=$( mktemp $HOME/.bashcomp.XXXXXXXXXX ) + declare -f > $tmpfile + mv $tmpfile $HOME/.bashcomp.cache +else + # Have: COMP_LINE COMP_POINT + # Need: COMP_CWORD COMP_WORDS + + COMP_WORDS=( $COMP_LINE ) + remain=( ${COMP_LINE:COMP_POINT} ) + COMP_CWORD=$(( ${#COMP_WORDS[@]} - ${#remain[@]} )) + + ch="${COMP_LINE:COMP_POINT-1:1}" + [ -z "${ch//[ ]/}" ] || (( COMP_CWORD = COMP_CWORD - 1 )) + + shopt -s extglob + . $HOME/.bashcomp.cache + + "$@" # run the completion function + for x in "${COMPREPLY[@]}"; do echo "$x"; done +fi +