From 276e3a780ec48fe1577c45e73d62bc68c70b1c00 Mon Sep 17 00:00:00 2001 From: Guillaume Rousse Date: Sun, 12 Sep 2010 16:40:04 +0200 Subject: use BASH_COMPLETION_DIR for locating helpers, avoiding the use of an install-time substitution --- contrib/Makefile.am | 15 +++---------- contrib/perl | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ contrib/perl.in | 61 ----------------------------------------------------- 3 files changed, 64 insertions(+), 73 deletions(-) create mode 100644 contrib/perl delete mode 100644 contrib/perl.in diff --git a/contrib/Makefile.am b/contrib/Makefile.am index b3aea2d9..86f62251 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,4 +1,4 @@ -static_bashcomp = abook \ +bashcomp_DATA = abook \ ant \ apache2ctl \ apt \ @@ -101,6 +101,7 @@ static_bashcomp = abook \ openldap \ openssl \ p4 \ + perl \ pine \ pkg-config \ pkg_install \ @@ -167,15 +168,5 @@ static_bashcomp = abook \ yp-tools \ yum-arch -generated_bashcomp = perl - -bashcomp_DATA = $(static_bashcomp) $(generated_bashcomp) - -perl: perl.in Makefile - sed -e 's|@helpersdir[@]|$(helpersdir)|' <$(srcdir)/$@.in >$@ - -EXTRA_DIST = $(bashcomp_DATA) perl.in \ +EXTRA_DIST = $(bashcomp_DATA) \ _mock _modules _subversion _yum _yum-utils - -CLEANFILES = perl - diff --git a/contrib/perl b/contrib/perl new file mode 100644 index 00000000..ea71b2f4 --- /dev/null +++ b/contrib/perl @@ -0,0 +1,61 @@ +# bash completion for perl + +have perl && +{ +_perlmodules() +{ + COMPREPLY=( $( compgen -P "$prefix" -W "$( perl -e 'sub mods { my ($base,$dir)=@_; return if $base !~ /^\Q$ENV{cur}/; chdir($dir) or return; for (glob(q[*.pm])) {s/\.pm$//; print qq[$base$_\n]}; mods(/^(?:[.\d]+|$Config{archname}-$Config{osname}|auto)$/ ? undef : qq[${base}${_}::],qq[$dir/$_]) for grep {-d} glob(q[*]); } mods(undef,$_) for @INC;' )" -- "$cur" ) ) + __ltrim_colon_completions "$1" +} + +_perl() +{ + local cur prev prefix temp + local optPrefix optSuffix + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + prefix="" + + # If option not followed by whitespace, reassign prev and cur + if [[ "$cur" == -?* ]]; then + temp=$cur + prev=${temp:0:2} + cur=${temp:2} + optPrefix=-P$prev + optSuffix=-S/ + prefix=$prev + fi + + # only handle module completion for now + case $prev in + -I|-x) + local IFS=$'\t\n' + COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) ) + return 0 + ;; + -m|-M) + _perlmodules "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \ + -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _perl -o nospace -o filenames perl + +complete -C $BASH_COMPLETION_DIR/helpers/perldoc -o nospace -o default perldoc +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/contrib/perl.in b/contrib/perl.in deleted file mode 100644 index 8fb7f5cf..00000000 --- a/contrib/perl.in +++ /dev/null @@ -1,61 +0,0 @@ -# bash completion for perl - -have perl && -{ -_perlmodules() -{ - COMPREPLY=( $( compgen -P "$prefix" -W "$( perl -e 'sub mods { my ($base,$dir)=@_; return if $base !~ /^\Q$ENV{cur}/; chdir($dir) or return; for (glob(q[*.pm])) {s/\.pm$//; print qq[$base$_\n]}; mods(/^(?:[.\d]+|$Config{archname}-$Config{osname}|auto)$/ ? undef : qq[${base}${_}::],qq[$dir/$_]) for grep {-d} glob(q[*]); } mods(undef,$_) for @INC;' )" -- "$cur" ) ) - __ltrim_colon_completions "$1" -} - -_perl() -{ - local cur prev prefix temp - local optPrefix optSuffix - - COMPREPLY=() - _get_comp_words_by_ref -n : cur prev - prefix="" - - # If option not followed by whitespace, reassign prev and cur - if [[ "$cur" == -?* ]]; then - temp=$cur - prev=${temp:0:2} - cur=${temp:2} - optPrefix=-P$prev - optSuffix=-S/ - prefix=$prev - fi - - # only handle module completion for now - case $prev in - -I|-x) - local IFS=$'\t\n' - COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) ) - return 0 - ;; - -m|-M) - _perlmodules "$cur" - return 0 - ;; - esac - - if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \ - -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- "$cur" ) ) - else - _filedir - fi -} -complete -F _perl -o nospace -o filenames perl - -complete -C @helpersdir@/perldoc -o nospace -o default perldoc -} - -# Local variables: -# mode: shell-script -# sh-basic-offset: 4 -# sh-indent-comment: t -# indent-tabs-mode: nil -# End: -# ex: ts=4 sw=4 et filetype=sh -- cgit v1.2.1