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_N.al < prev    next >
Text File  |  2005-04-27  |  1KB  |  47 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 800 "lib/Term/ReadLine/Zoid/ViCommand.pm (autosplit into blib/lib/auto/Term/ReadLine/Zoid/ViCommand/vi_N.al)"
  7. sub vi_N { # last_search = [ dir, string, hist_p ]
  8.     my ($self, $key, undef, $dir) = @_; # dir == direction
  9.     return $self->bell unless $$self{last_search};
  10.     $dir ||= $$self{last_search}[0];
  11.     $dir =~ tr/bf/fb/ if $key eq 'N'; # reverse dir
  12.  
  13.     my $reg = eval { qr/$$self{last_search}[1]/ };
  14.     return $self->bell if $@;
  15.  
  16.     my ($succes, $hist_p) = (0, $$self{last_search}[2]);
  17.     #print STDERR "lookign from $hist_p for: $reg\n";
  18.     if ($dir eq 'b') {
  19.         while ($hist_p < $#{$$self{history}}) {
  20.             $hist_p++;
  21.             next unless $$self{history}[$hist_p] =~ $reg;
  22.             $succes++;
  23.             last;
  24.         }
  25.     }
  26.     else { # $dir eq 'f'
  27.         $hist_p = scalar @{$$self{history}} if $hist_p < 0;
  28.         while ($hist_p > 0) {
  29.             $hist_p--;
  30.             next unless $$self{history}[$hist_p] =~ $reg;
  31.             $succes++;
  32.             last;
  33.         }
  34.     }
  35.     #print STDERR "succes: $succes at: $hist_p\n";
  36.  
  37.     if ($succes) {
  38.         $self->set_history($hist_p);
  39.         $$self{last_search}[2] = $hist_p;
  40.         return 1;
  41.     }
  42.     else { return $self->bell }
  43. }
  44.  
  45. # end of Term::ReadLine::Zoid::ViCommand::vi_N
  46. 1;
  47.