From: Jarkko Hietaniemi Date: Sun, 25 Mar 2001 20:37:43 +0000 (+0000) Subject: A workaround for using Term::ReadLine in emacs minibuffer X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=4c3ccbe1ab62eea08559462633253b2fb98ab98a;p=p5sagit%2Fp5-mst-13.2.git A workaround for using Term::ReadLine in emacs minibuffer from Wybo Dekker and Johan Vromans; additional tweaks from Ilya Zakharevich. p4raw-id: //depot/perl@9344 --- diff --git a/lib/Term/ReadLine.pm b/lib/Term/ReadLine.pm index 491ce79..5a8c251 100644 --- a/lib/Term/ReadLine.pm +++ b/lib/Term/ReadLine.pm @@ -157,6 +157,22 @@ empty, the best available package is loaded. (Note that processing of C for ornaments is in the discretion of the particular used C package). +=head1 CAVEATS + +It seems that using Term::ReadLine from Emacs minibuffer doesn't work +quite right and one will get an error message like + + Cannot open /dev/tty for read at ... + +One possible workaround for this is to explicitly open /dev/tty like this + + open (FH, "/dev/tty" ) + or eval 'sub Term::ReadLine::findConsole { ("&STDIN", "&STDERR") }'; + die $@ if $@; + close (FH); + +or you can try using the 4-argument form of Term::ReadLine->new(). + =cut use strict; @@ -225,7 +241,7 @@ sub new { #local (*FIN, *FOUT); my ($FIN, $FOUT, $ret); if (@_==2) { - my($console, $consoleOUT) = findConsole; + my($console, $consoleOUT) = $_[0]->findConsole; open(FIN, "<$console"); open(FOUT,">$consoleOUT");