#!/usr/bin/perl
use 5.12.1;
my $esc;
BEGIN { $esc = "\x1b[";
print "${esc}2J${esc}3H";
}
use Tk;
use AnyEvent;
use Term::ReadLine;
my $t = 0;
my $w = AE::timer (0,1,sub {print "${esc}s${esc}1H$t s ${esc}u";++$t});
my $term = Term::ReadLine->new('...');
$term->tkRunning(1);
my $x = $term->readline('> ');
####
#!/usr/bin/perl
use Tk;
use AnyEvent;
use Term::ReadLine;
use IO::File;
use 5.12.1;
sub LOG
{
state $fh;
open $fh, '>', '/tmp/sopw.out' unless $fh;
die $! unless $fh;
autoflush $fh 1;
say $fh @_;
}
package Term::ReadLine::AE;
# mangle their tree, inserting ourselves in the front.
unshift @Term::ReadLine::Stub::ISA, __PACKAGE__;
#use Data::Dump qw(ddx);
#ddx(\%INC);
if (not defined &Tk::DoOneEvent)
{
::LOG("overriding");
*Tk::DoOneEvent = sub {
AnyEvent->_poll();
};
::LOG("Not created?") unless defined &Tk::DoOneEvent;
}
our $cv;
sub Tk_loop
{
my $self = shift;
::LOG("Entering Tk_loop");# unless $cv;
$cv = AE::cv;
$cv->recv();
}
sub register_Tk
{
my $self = shift;
::LOG("Registering");
$Term::ReadLine::registered++
or AE::io($self->IN, 0, sub { $cv->send() });
}
package main;
use 5.12.1;
my $esc;
BEGIN { $esc = "\x1b[";
print "${esc}2J${esc}3H";
}
my $t = 0;
my $w = AE::timer (0,1,sub {print "${esc}s${esc}1H$t s ${esc}u";++$t});
my $term = Term::ReadLine->new('...');
$term->tkRunning(1);
my $x = $term->readline('> ');
####
our $fe;
sub register_Tk
{
my $self = shift;
::LOG("Registering");
$fe ||= AE::io($self->IN, 0, sub { $cv->send() });
}