home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / etc / bash_completion.d / perl < prev    next >
Encoding:
Text File  |  2010-11-16  |  4.7 KB  |  128 lines

  1. # bash completion for perl
  2.  
  3. have perl &&
  4. {
  5. _perlmodules()
  6. {
  7.     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" ) )
  8.     __ltrim_colon_completions "$1"
  9. }
  10.  
  11. _perl()
  12. {
  13.     local cur prev prefix temp
  14.     local optPrefix optSuffix
  15.  
  16.     COMPREPLY=()
  17.     _get_comp_words_by_ref -n : cur prev
  18.     prefix=""
  19.  
  20.     # If option not followed by whitespace, reassign prev and cur
  21.     if [[ "$cur" == -?* ]]; then
  22.         temp=$cur
  23.         prev=${temp:0:2}
  24.         cur=${temp:2}
  25.         optPrefix=-P$prev
  26.         optSuffix=-S/
  27.         prefix=$prev
  28.     fi
  29.  
  30.     # only handle module completion for now
  31.     case $prev in
  32.         -I|-x)
  33.             local IFS=$'\t\n'
  34.             COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) )
  35.             return 0
  36.             ;;
  37.         -m|-M)
  38.             _perlmodules "$cur"
  39.             return 0
  40.             ;;
  41.     esac
  42.  
  43.     if [[ "$cur" == -* ]]; then
  44.         COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \
  45.             -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- "$cur" ) )
  46.     else
  47.         _filedir
  48.     fi
  49. }
  50. complete -F _perl -o nospace -o filenames perl
  51.  
  52. _perldoc()
  53. {
  54.     local cur prev prefix temp
  55.  
  56.     COMPREPLY=()
  57.     _get_comp_words_by_ref -n : cur prev
  58.     prefix=""
  59.  
  60.     # completing an option (may or may not be separated by a space)
  61.     if [[ "$cur" == -?* ]]; then
  62.         temp=$cur
  63.         prev=${temp:0:2}
  64.         cur=${temp:2}
  65.         prefix=$prev
  66.     fi
  67.  
  68.     # complete builtin perl functions
  69.     case $prev in
  70.         -f)
  71.             COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \
  72.                 lcfirst length oct ord pack q qq reverse rindex sprintf \
  73.                 substr tr uc ucfirst y m pos quotemeta s split study qr abs \
  74.                 atan2 cos exp hex int log oct rand sin sqrt srand pop push \
  75.                 shift splice unshift grep join map qw reverse sort unpack \
  76.                 delete each exists keys values binmode close closedir \
  77.                 dbmclose dbmopen die eof fileno flock format getc print \
  78.                 printf read readdir rewinddir say seek seekdir select syscall \
  79.                 sysread sysseek syswrite tell telldir truncate warn write \
  80.                 pack read syscall sysread syswrite unpack vec -X chdir chmod \
  81.                 chown chroot fcntl glob ioctl link lstat mkdir open opendir \
  82.                 readlink rename rmdir stat symlink umask unlink utime caller \
  83.                 continue do dump eval exit goto last next redo return \
  84.                 sub wantarray break caller import local my our state package \
  85.                 use defined formline reset scalar undef \
  86.                 alarm exec fork getpgrp getppid getpriority kill pipe qx \
  87.                 setpgrp setpriority sleep system times wait waitpid \
  88.                 import no package require use bless dbmclose dbmopen package \
  89.                 ref tie tied untie use accept bind connect getpeername \
  90.                 getsockname getsockopt listen recv send setsockopt shutdown \
  91.                 socket socketpair msgctl msgget msgrcv msgsnd semctl semget \
  92.                 semop shmctl shmget shmread shmwrite endgrent endhostent \
  93.                 endnetent endpwent getgrent getgrgid getgrnam getlogin \
  94.                 getpwent getpwnam getpwuid setgrent setpwent endprotoent \
  95.                 endservent gethostbyaddr gethostbyname gethostent \
  96.                 getnetbyaddr getnetbyname getnetent getprotobyname \
  97.                 getprotobynumber getprotoent getservbyname getservbyport \
  98.                 getservent sethostent setnetent setprotoent setservent \
  99.                 gmtime localtime time times lock' -- "$cur" ) )
  100.             return 0
  101.             ;;
  102.     esac
  103.  
  104.     if [[ "$cur" == -* ]]; then
  105.         COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- "$cur" ))
  106.     else
  107.         # return available modules (unless it is clearly a file)
  108.         if [[ "$cur" != */* ]]; then
  109.             _perlmodules "$cur"
  110.             COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \
  111.                 '$( PAGER=/bin/cat man perl |  \
  112.                 sed -ne "/perl.*Perl overview/,/perlwin32/p" | \
  113.                 awk "\$NF=2 { print \$1}" | command grep perl )' -- "$cur" ) )
  114.         fi
  115.         _filedir '@(pl|PL|pm|PM|pod|POD)'
  116.     fi
  117. }
  118. complete -F _perldoc -o bashdefault perldoc
  119. }
  120.  
  121. # Local variables:
  122. # mode: shell-script
  123. # sh-basic-offset: 4
  124. # sh-indent-comment: t
  125. # indent-tabs-mode: nil
  126. # End:
  127. # ex: ts=4 sw=4 et filetype=sh
  128.