Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Using Tab Completion on Windows in cmd.exe

by Anonymous Monk
on Nov 24, 2011 at 18:33 UTC ( [id://939933]=note: print w/replies, xml ) Need Help??


in reply to Using Tab Completion on Windows in cmd.exe

Term::ReadKey ought to work, and anything using ReadKey(-1) for completion

http://deps.cpantesters.org/depended-on-by.pl?dist=TermReadKey-2.30

  • Comment on Re: Using Tab Completion on Windows in cmd.exe

Replies are listed 'Best First'.
Re^2: Using Tab Completion on Windows in cmd.exe
by Anonymous Monk on Nov 24, 2011 at 19:22 UTC

    Here is a proof of concept, uses Data::Dump::Streamer and cpan STSI/TermReadKey-2.30.02.tar.gz (or cpanp i STSI/TermReadKey-2.30.02.tar.gz)

    use Term::ReadKey; use strict; use warnings; my @completion_list = qw[ ro sham bo foo bar baz ]; { my $orig_prompt = "Hi: "; my $prompt = $orig_prompt; my $prev_prompt = $orig_prompt; my $tab = do { my $ix = -1; my $xx = @completion_list - 1; sub { $ix++; return $completion_list[ $ix % $xx ]; }; }; $|=1; print $prompt; my $key ; while( 1 ){ $key = ReadKey(-1); next unless defined $key; if( $key eq "\r"){ print "\n"; last; } elsif( $key eq "\t" ){ my $completion = $tab->(); $prompt = $orig_prompt . $completion; #~ FAIL print "\b" x ( 1 + length $prev_prompt ), $prompt; #~ FAIL print "\b" x ( 100 ), $prompt; #~ FAIL print "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ +b\b\b\b$prompt"; print "\r" , " " x ( length $prev_prompt ); print "\r", $prompt; $prev_prompt = $prompt; } elsif( $key eq "\e") { print "\r" , " " x ( length $prev_prompt ); $prompt = $orig_prompt ; print "\r", $prompt; $prev_prompt = $prompt; } else { use DDS; warn Dump $key ; } } use DDS; warn Dump [ $key, $orig_prompt, $prompt, $prev_prompt ] ; }

    It could make a great addition to Term::Interact/example

      Thanks a lot for your script. It works.

      So it means I have to reinvent the wheel and come up with my own readline function with tab completion support. I'll do that then, with the help of your script.

      Thanks again. :-)
        Sorry. Forgot to log in. It's my answer above.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://939933]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (1)
As of 2024-04-18 23:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found