 |
|
| |
Term::EditLine(3) |
User Contributed Perl Documentation |
Term::EditLine(3) |
Term::EditLine - Perl interface to the NetBSD editline library
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 $_;
}
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.
- 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).
- 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.
- 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.
- 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.
- set_editor ( MODE
)
- Set editing mode to mode, which must be one of "emacs" or
"vi".
- 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.
- line
- Returns three items (in this order): the current string buffer of the
Term::EditLine structure, the index of the cursor, and the index of the
last character.
- set_getc_fun (
SUBREF )
- Define the character reading function as SUBREF. This function is to
return one single character. It is called internally by gets() and
getc(). It is useful to define a custom getc function, if you want
to write an interactive program with line editing function that has to
process events when no input is available. A simple tcp chatclient
example:
use Term::EditLine;
use IO::Socket;
use strict;
my ($sock,$el,$rin,$buf);
$sock = IO::Socket::INET->new("$ARGV[0]:$ARGV[1]") or die "...";
$rin = '';
vec($rin,fileno($sock),1) = 1;
vec($rin,fileno(STDIN),1) = 1;
$el = Term::EditLine->new('example');
$el->set_prompt('$ ');
$el->set_getc_fun(\&get_c);
$el->bind('-e');
while (defined($_ = $el->gets)) {
chomp;
syswrite($sock,"$_\n",length($_)+1);
}
sub get_c {
my ($tmp,$i,$c);
while (1) {
my $rout = $rin;
if (select ($rout,undef,undef,0.1)) {
if (vec($rout,fileno($sock),1)) {
if(sysread ($sock,$tmp,1024)) {
$tmp = $buf . $tmp;
}
while (($i = index($tmp,"\n")) != -1) {
$_ = substr ($tmp,0,$i);
chomp ($_);
print "\r\e[0J"; # ugly
print "$_\n". $el->get_prompt(); # hack!
$tmp = substr($tmp,$i+1<=length($tmp)?$i+1:length($i+1));
}
$buf = $tmp;
}
if (vec($rout,fileno(STDIN),1)) {
sysread(STDIN,$c,1);
return $c;
}
}
}
}
- restore_getc_fun
- Restore the editline builtin getc function.
- history_set_size
( SIZE )
- Set size of history to SIZE elements.
- history_get_size
- Return the number of events currently in history.
- history_clear
- Clear the history.
- history_get_first
- Return the first element in the history.
- history_get_last
- Return the last element in the history.
- history_get_prev
- Return the previous element in the history.
- history_get_next
- Return the next element in the history.
- history_get_curr
- Return the current element in the history.
- history_add (
STR )
- Append STR to the current element of the history, or create an element
with.
- history_append
( STR )
- Append STR to the last new element of the history.
- 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.
- history_get_prev_str
( STR )
- Return the closest previous event that starts with STR.
- history_get_next_str
( STR )
- Return the closest next event that starts with STR.
- history_load (
FILENAME )
- Load the history list stored in FILENAME.
- history_save (
FILENAME )
- Save the history list to FILENAME.
None by default.
CC_ARGHACK
CC_CURSOR
CC_EOF
CC_ERROR
CC_FATAL
CC_NEWLINE
CC_NORM
CC_REDISPLAY
CC_REFRESH
CC_REFRESH_BEEP
The non-blocking interface of libedit sucks. Only ugly hacks make
it possible to redisplay the prompt when data is displayed from other fds
than the libedit output fd. Future versions of Term::EditLine will probably
contain a modified version of libedit that provides redisplay functions.
To report bugs, please use the GitHub bugtracker:
<https://github.com/plicease/Term-EditLine/issues>
To submit patches, please create a pull request on GitHub:
<https://github.com/plicease/Term-EditLine/pulls>
Original Author:
Ulrich Burgbacher, <ulrich@burgbacher.net>
Current Maintainer:
Graham Ollis <plicease@cpan.org>
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.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
|