From 4c3ccbe1ab62eea08559462633253b2fb98ab98a Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Sun, 25 Mar 2001 20:37:43 +0000 Subject: [PATCH] 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 --- lib/Term/ReadLine.pm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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"); -- 2.7.4