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

Yeah, I got that, I have it

$ perl -MTerm::ReadLine -MTerm::ReadLine::Perl -d:Modlist -e 1 Carp 1.23 Exporter 5.65 Term::ReadLine 1.07 Term::ReadLine::Perl 1.0303 warnings 1.12

perl -d:Modlist -e "  use Term::Complete; $|=1; warn $input = Complete( q[ type or tab  ] , [ qw[ ro sham bo foo bar baz ] ] ); "
doesn't work for me

update: of course, it doesn't use Term::Readline, duh ...

So, what are you using, and how (short example please)?

Replies are listed 'Best First'.
Re^5: Using Tab Completion on Windows in cmd.exe
by Stamm (Acolyte) on Nov 26, 2011 at 13:51 UTC
    You're right, it doesn't work with Term::Complete. I thought I had tested it. As you said, it doesn't even use Term::ReadLine.

    It works with Term::Shell. Here with the pod example slightly modified:
    package MyShell; $ENV{TERM} = ''; use base qw(Term::Shell); sub run_command1 { print "command 1!\n"; } sub smry_command1 { "what does command1 do?" } sub help_command1 { "Help on 'command1', whatever that may be..." } sub run_command2 { print "command 2!\n"; } package main; my $shell = MyShell->new; $shell->cmdloop;

    Or directly with Term::ReadLine:
    use Term::ReadLine; $ENV{TERM} = ''; my $term = Term::ReadLine->new('Tab Completion'); my $prompt = ">>> "; &readline::rl_basic_commands( qw(set quit type test run exit) ); while ( defined ( $_ = $term->readline($prompt) ) ) { exit if /exit/ or /quit/; print $_, "\n"; }

      Thank you, that seems usable

      For me, if i start typing something, and hit tab, it gets completed

      This i expected

      But if I only type tab, nothing happens until I hit tab again, at which point a newline is printed, then the available tab choices and a newline, then the prompt again

      This i didn't expect, I kinda expected it to cycle through list of completions, like cmd.exe does for filenames, like my demo from earlier, with shift+tab going in reverse (as is common, but which my version doesn't do)

      At least it usable