home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Bezpecnost / lsti / lsti.exe / framework-2.5.exe / vi_complete.al < prev    next >
Text File  |  2005-04-27  |  1KB  |  38 lines

  1. # NOTE: Derived from lib/Term/ReadLine/Zoid/ViCommand.pm.
  2. # Changes made here will be lost when autosplit is run again.
  3. # See AutoSplit.pm.
  4. package Term::ReadLine::Zoid::ViCommand;
  5.  
  6. #line 289 "lib/Term/ReadLine/Zoid/ViCommand.pm (autosplit into blib/lib/auto/Term/ReadLine/Zoid/ViCommand/vi_complete.al)"
  7. sub vi_complete {
  8.     my ($self, $key) = @_;
  9.  
  10.     return $self->possible_completions() if $key eq '=';
  11.  
  12.     my $buffer = join "\n", @{$$self{lines}};
  13.     my $begin = substr $buffer, 0, $self->pos2off($$self{pos}), '';
  14.     $begin =~ s/(\S*)$//;
  15.     my $glob = $1;
  16.     $$self{pos}[0] -= length $1;
  17.  
  18.     use File::Glob ':glob';
  19.     $glob .= '*' unless $glob =~ /[\*\?\[]/;
  20.     my @list = bsd_glob($glob, GLOB_TILDE | GLOB_BRACE);
  21.  
  22.     my $string;
  23.     if ($key eq '\\') {
  24.         @list = $self->longest_match(@list);
  25.         $string = shift(@list);
  26.         $self->output(@list);
  27.     }
  28.     elsif ($key eq '*') { $string = join ' ', @list }
  29.  
  30.     $$self{pos}[0] += length $string;
  31.     @{$$self{lines}} = split /\n/, $begin . $string . $buffer;
  32.     
  33.     $self->switch_mode() if $key eq '*';
  34. }
  35.  
  36. # end of Term::ReadLine::Zoid::ViCommand::vi_complete
  37. 1;
  38.