# NOTE: Derived from lib/Term/ReadLine/Zoid/ViCommand.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package Term::ReadLine::Zoid::ViCommand;

#line 800 "lib/Term/ReadLine/Zoid/ViCommand.pm (autosplit into blib/lib/auto/Term/ReadLine/Zoid/ViCommand/vi_N.al)"
sub vi_N { # last_search = [ dir, string, hist_p ]
	my ($self, $key, undef, $dir) = @_; # dir == direction
	return $self->bell unless $$self{last_search};
	$dir ||= $$self{last_search}[0];
	$dir =~ tr/bf/fb/ if $key eq 'N'; # reverse dir

	my $reg = eval { qr/$$self{last_search}[1]/ };
	return $self->bell if $@;

	my ($succes, $hist_p) = (0, $$self{last_search}[2]);
	#print STDERR "lookign from $hist_p for: $reg\n";
	if ($dir eq 'b') {
		while ($hist_p < $#{$$self{history}}) {
			$hist_p++;
			next unless $$self{history}[$hist_p] =~ $reg;
			$succes++;
			last;
		}
	}
	else { # $dir eq 'f'
		$hist_p = scalar @{$$self{history}} if $hist_p < 0;
		while ($hist_p > 0) {
			$hist_p--;
			next unless $$self{history}[$hist_p] =~ $reg;
			$succes++;
			last;
		}
	}
	#print STDERR "succes: $succes at: $hist_p\n";

	if ($succes) {
		$self->set_history($hist_p);
		$$self{last_search}[2] = $hist_p;
		return 1;
	}
	else { return $self->bell }
}

# end of Term::ReadLine::Zoid::ViCommand::vi_N
1;
