develooper Front page | perl.perl5.porters | Postings from October 2001

[PATCH Complete.pm], was Re: [PATCH lib/Term/Complete.t]

Thread Previous | Thread Next
From:
rgarciasuarez
Date:
October 1, 2001 05:10
Subject:
[PATCH Complete.pm], was Re: [PATCH lib/Term/Complete.t]
Message ID:
slrn9rgkk6.mb8.rgarciasuarez@rafael.kazibao.net
Chromatic wrote :
} 
} > I guess one could try running stty -g, if succesful (no error code), save away
} > the output, and on completion restore using that.
} 
} Something like this?
} 
} -- c
} 
} 
} --- lib/Term/~Complete.t	Sun Sep 30 18:13:15 2001
} +++ lib/Term/Complete.t	Sun Sep 30 18:13:17 2001


Shouldn't Term::Complete be patched as well ? Something like this :


--- lib/Term/Complete.pm.orig	Thu Sep 13 15:59:14 2001
+++ lib/Term/Complete.pm	Mon Oct  1 13:11:38 2001
@@ -5,7 +5,7 @@
 use strict;
 our @ISA = qw(Exporter);
 our @EXPORT = qw(Complete);
-our $VERSION = '1.3';
+our $VERSION = '1.4';
 
 #      @(#)complete.pl,v1.2            (me@anywhere.EBay.Sun.COM) 09/23/91
 
@@ -24,8 +24,7 @@
 the array (or array ref).
 
 The tty driver is put into raw mode and restored using an operating
-system specific command, in UNIX-like environments C<stty raw -echo>
-and C<stty -raw echo>.
+system specific command, in UNIX-like environments C<stty>.
 
 The following command characters are defined:
 
@@ -67,16 +66,18 @@
 
 =cut
 
-our($complete, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore);
+our($complete, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore, $stty);
+our($tty_saved_state) = 0;
 CONFIG: {
     $complete = "\004";
     $kill     = "\025";
     $erase1 =   "\177";
     $erase2 =   "\010";
-    foreach my $stty (qw(/bin/stty /usr/bin/stty)) {
-	if (-x $stty) {
-	    $tty_raw_noecho = "$stty raw -echo";
-	    $tty_restore    = "$stty -raw echo";
+    foreach my $s (qw(/bin/stty /usr/bin/stty)) {
+	if (-x $s) {
+	    $tty_raw_noecho = "$s raw -echo";
+	    $tty_restore    = "$s -raw echo";
+	    $stty = $s;
 	    last;
 	}
     }
@@ -97,6 +98,17 @@
 	@cmp_lst = sort(@_);
     }
 
+    # Attempt to save the current stty state, to be restored later
+    if (defined $stty && defined $tty_saved_state && $tty_saved_state == 0) {
+	$tty_saved_state = qx($stty -g 2>/dev/null);
+	if ($?) {
+	    # stty -g not supported
+	    $tty_saved_state = undef;
+	}
+	else {
+	    $tty_restore = "$stty $tty_saved_state";
+	}
+    }
     system $tty_raw_noecho if defined $tty_raw_noecho;
     LOOP: {
         print($prompt, $return);

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About