Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re^2: Using Tab Completion on Windows in cmd.exe

by Anonymous Monk
on Nov 24, 2011 at 19:22 UTC ( #939943=note: print w/replies, xml ) Need Help??

in reply to Re: Using Tab Completion on Windows in cmd.exe
in thread Using Tab Completion on Windows in cmd.exe

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

Replies are listed 'Best First'.
Re^3: Using Tab Completion on Windows in cmd.exe
by Anonymous Monk on Nov 25, 2011 at 19:23 UTC
    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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://939943]
[Discipulus]: there is a way on linux to produce { using ALT-123 keypad sequence?

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2017-12-13 10:19 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (355 votes). Check out past polls.