File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed
Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change 4545my $normal_color = $repo -> get_color(" " , " reset" );
4646
4747my $use_readkey = 0;
48+ my $use_termcap = 0;
49+ my %term_escapes ;
50+
4851sub ReadMode ;
4952sub ReadKey ;
5053if ($repo -> config_bool(" interactive.singlekey" )) {
5356 Term::ReadKey-> import ;
5457 $use_readkey = 1;
5558 };
59+ eval {
60+ require Term::Cap;
61+ my $termcap = Term::Cap-> Tgetent;
62+ foreach (values %$termcap ) {
63+ $term_escapes {$_ } = 1 if / ^\e / ;
64+ }
65+ $use_termcap = 1;
66+ };
5667}
5768
5869sub colored {
@@ -1067,6 +1078,14 @@ sub prompt_single_character {
10671078 ReadMode ' cbreak' ;
10681079 my $key = ReadKey 0;
10691080 ReadMode ' restore' ;
1081+ if ($use_termcap and $key eq " \e " ) {
1082+ while (!defined $term_escapes {$key }) {
1083+ my $next = ReadKey 0.5;
1084+ last if (!defined $next );
1085+ $key .= $next ;
1086+ }
1087+ $key =~ s /\e / ^[/ ;
1088+ }
10701089 print " $key " if defined $key ;
10711090 print " \n " ;
10721091 return $key ;
You can’t perform that action at this time.
0 commit comments