X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fperl5db.pl;h=d0a712534ae1a57635ec783943b7c37a98ac56ea;hb=12c5d27a30700a469ee068632587ba3fb5c99a7d;hp=5e2bd43ae6e12f2c0260242acf0a9dc639372e22;hpb=0c395bd7f1dd17c87bc78fb4f230c4c88e22eb4f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/perl5db.pl b/lib/perl5db.pl index 5e2bd43..d0a7125 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl @@ -2,7 +2,7 @@ package DB; # Debugger for Perl 5.00x; perl5db.pl patch level: -$VERSION = 0.9908; +$VERSION = 0.9911; $header = "perl5db.pl patch level $VERSION"; # Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich) @@ -177,7 +177,7 @@ $inhibit_exit = $option{PrintRet} = 1; compactDump veryCompact quote HighBit undefPrint globPrint PrintRet UsageOnly frame AutoTrace TTY noTTY ReadLine NonStop LineInfo maxTraceLen - recallCommand ShellBang pager tkRunning + recallCommand ShellBang pager tkRunning ornaments signalLevel warnLevel dieLevel inhibit_exit); %optionVars = ( @@ -211,6 +211,7 @@ $inhibit_exit = $option{PrintRet} = 1; warnLevel => \&warnLevel, dieLevel => \&dieLevel, tkRunning => \&tkRunning, + ornaments => \&ornaments, ); %optionRequire = ( @@ -285,7 +286,7 @@ if ($notty) { if (-e "/dev/tty") { $console = "/dev/tty"; - } elsif (-e "con") { + } elsif (-e "con" or $^O eq 'MSWin32') { $console = "con"; } else { $console = "sys\$command"; @@ -411,7 +412,9 @@ sub DB { $evalarg = $action, &eval if $action; if ($single || $was_signal) { local $level = $level + 1; - map {$evalarg = $_, &eval} @$pre; + foreach $evalarg (@$pre) { + &eval; + } print $OUT $#stack . " levels deep in subroutine calls!\n" if $single & 4; $start = $line; @@ -1074,7 +1077,9 @@ sub DB { } } # CMD: $exiting = 1 unless defined $cmd; - map {$evalarg = $_; &eval} @$post; + foreach $evalarg (@$post) { + &eval; + } } # if ($single || $signal) ($@, $!, $,, $/, $\, $^W) = @saved; (); @@ -1370,6 +1375,7 @@ sub setterm { if ($term->Features->{setHistory} and "@hist" ne "?") { $term->SetHistory(@hist); } + ornaments($ornaments) if defined $ornaments; } sub readline { @@ -1559,6 +1565,16 @@ sub shellBang { $psh; } +sub ornaments { + if (defined $term) { + local ($warnLevel,$dieLevel) = (0, 1); + return '' unless $term->Features->{ornaments}; + eval { $term->ornaments(@_) } || ''; + } else { + $ornaments = shift; + } +} + sub recallCommand { if (@_) { $rc = quotemeta shift; @@ -1675,6 +1691,7 @@ O [opt[=val]] [opt\"val\"] [opt?]... frame affects printing messages on entry and exit from subroutines. AutoTrace affects printing messages on every possible breaking point. maxTraceLen gives maximal length of evals/args listed in stack trace. + ornaments affects screen appearance of the command line. During startup options are initialized from \$ENV{PERLDB_OPTS}. You can put additional initialization options TTY, noTTY, ReadLine, and NonStop there.