=head1 NAME

Term::EditLine - Perl interface to the NetBSD editline library

=head1 SYNOPSIS

  use Term::EditLine qw(CC_EOF);

  my $el = Term::EditLine->new('progname');
  $el->set_prompt ('# ');

  $el->add_fun ('bye','desc',sub { print "\nbye\n"; return CC_EOF; });

  $el->parse('bind','-e');
  $el->parse('bind','^D','bye');

  while (defined($_ = $el->gets())) {
    $el->history_enter($_);
    print $_;
  }

=head1 DESCRIPTION

Term::EditLine is a compiled module, which provides an object oriented
interface to the NetBSD editline library. Since editline supports readline
and history functions this module is almost a full replacement for the
Term::ReadLine module even though it is much smaller than any existing
Term::ReadLine interface.

=head2 Functions

=over 4

=item new ( PROGNAME, [ IN, OUT, ERR ] )

Creates a new Term::EditLine object. Argument is the name of
the application. Optionally can be followed by three arguments
for the input, output, and error filehandles. These arguments
should be globs. See also el_init(3).

=item gets

Read a line from the tty. If successful returns the line read,
or undef if no characters where read or if an error occured.

=item set_prompt ( PROMPT )

Define the prompt. Argument may either be a perl sub, which has
to return a string that contains the prompt, or a string.

=item set_rprompt ( PROMPT )

Define the right side prompt. Argument may either be a perl sub,
which has to return a string that contains the prompt, or a string.

=item set_editor ( MODE )

Set editing mode to mode, which must be one of "emacs" or "vi".

=item add_fun ( NAME, HELP, FUN )

See el_set(3). This functions performs an
el_set( editline, EL_ADDFN, NAME, HELP, FUN ) call. FUN is to be a
reference to a perl subroutine.

=item history_set_size ( SIZE )

Set size of history to SIZE elements.

=item history_get_size

Return the number of events currently in history.

=item history_clear

Clear the history.

=item history_get_first

Return the first element in the history.

=item history_get_last

Return the last element in the history.

=item history_get_prev

Return the previous element in the history.

=item history_get_next

Return the next element in the history.

=item history_get_curr

Return the current element in the history.

=item history_add ( STR )

Append STR to the current element of the history, or create
an element with.

=item history_append ( STR )

Append STR to the last new element of the history.

=item history_enter ( STR )

Add STR as a new element to the history, and, if necessary,
removing the oldest entry to keep the list to the created
size.

=item history_get_prev_str ( STR )

Return the closest previous event that starts with STR.

=item history_get_next_str ( STR )

Return the closest next event that starts with STR.

=item history_load ( FILENAME )

Load the history list stored in FILENAME.

=item history_save ( FILENAME )

Save the history list to FILENAME.

=head2 Additional functions

The following functions are simply perl wrappers of the C functions
documented in editline(3):

=over 4

=item reset

=item getc

=item push

=item resize

=item line

=item insertstr

=item deletestr

=head1 EXPORT

None by default.

=head2 Exportable constants

  CC_ARGHACK
  CC_CURSOR
  CC_EOF
  CC_ERROR
  CC_FATAL
  CC_NEWLINE
  CC_NORM
  CC_REDISPLAY
  CC_REFRESH
  CC_REFRESH_BEEP

=head1 SEE ALSO

editline(3), editrc(5)

=head1 AUTHOR

Ulrich Burgbacher, E<lt>ulrich@burgbacher.netE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright 2003 by Ulrich Burgbacher

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself. 

=cut