Lines Matching refs:me

81   my $me = bless {
103 $me->add_text($text) if defined $text;
105 $me->{_I18N}={
167 $me->add_func(%config,
186 $me->{_raw}->{chr($_)} = chr(64+$_) foreach (0..8, 11..31);
188 $me->{_end} = $me->{rows} - 1;
190 $SIG{WINCH} = sub{ $me->resize() } unless $ENV{TERM} eq 'WINANSI';
191 $me->{cols}-- if $me->{scrollBar};
197 $me->{fold} = 0;
200 $me;
204 my $me = shift;
207 $dims{cols}-- if $me->{scrollBar};
208 $me->{$_} = $dims{$_} foreach keys %dims;
210 $me->{_end} = $me->{rows} - 1;
212 if( $me->{fold} ){
213 $me->reflow();
220 $me->refresh();
222 $me->status();
224 $me->{WINCH}->() if ref($me->{WINCH}) eq 'CODE';
265 my $me = shift;
274 s/\n{2,}/\n\n/g if $me->{squeeze};
279 if( $me->{fold} ){
282 $Text::Wrap::columns = $me->{cols} -
283 ( $me->{_statCols} = ($me->{lineNo} ? 9 : $me->{statusCol} ? 1 : 0) );
288 $me->{_lineNo}->[$i+$me->{_txtN}] = $me->{_txtN}+$i+1-$extraSum;
291 $me->{_mark}->{$1} = $i+$me->{_txtN} if
294 if( defined($F[$i]) && length($F[$i]) > $me->{cols} ){
299 $me->{_lineNo}->[$i+$me->{_txtN}+$_] =
300 $me->{_txtN}+$i+1-$extraSum foreach 1..$extras-1;
313 if( $me->{_txtN} && !defined($me->{_text}->[-1]) ){
314 pop @{$me->{_text}};
315 $me->{_text}->[-1] .= shift @F;
319 my $shown = $me->{_txtN};
320 push @{$me->{_text}}, @F;
321 $me->{_txtN} = @{ $me->{_text} }; #-1;
323 $me->refresh(); #XXX if $shown <= $me->{rows}; # + $me->{_cursor};
327 my $me = shift;
329 while( scalar @{$me->{_text}} ){
330 my $curLine = shift @{$me->{_lineNo}};
332 $text[-1] .= ' ' . (shift @{$me->{_text}}||''); }
334 push @text, shift @{$me->{_text}}; }
337 $me->{_lineNo}=[];
338 $me->{_txtN}=0;
339 $me->add_text( join($/, @text) );
345 my $me = shift;
349 local $Text::Wrap::columns=int(.75*$me->{cols});
351 $me->beep();
352 $me->dialog("Unknown method $msg", 1);
359 my $me = shift;
361 $RT = $me->{RT} = $param{RT};
366 if( $me->{_dumb} ){
367 $me->dumb_mode();
370 print $me->{NOR};
376 $me->status(); # status line
384 $me->{_I18N}{prompt} = $input .= $char;
385 $me->status();
387 unless( ($input=~ /^\e/ and index($me->{_fncRE}, $input)>0 )
390 || defined($me->{_fnc}->{$input}) ){
391 $me->beep($input);
396 if( $me->{_fnc}->{$input} ){
402 $exit = $me->{_fnc}->{$input}->($me);
403 $me->{_I18N}{prompt} = $input = '';
408 $me->{_I18N}{prompt} = $input = '';
409 $me->status();
413 elsif( $me->{_fnc}->{'/(\d+)/'} and $input =~ /^\d+/ ){
423 $exit = $input < $me->{_txtN} ? $me->jump($input) : $me->to_bott();
426 $me->{_I18N}{prompt} = $input;
427 $me->status();
433 $me->close();
442 my($me, $msg, $text) = @_;
443 $me->{_I18N}{$msg} = $text if defined($text);
444 $me->{_I18N}{$msg};
467 my $me = shift;
470 $me->{_fnc}{$k} = $v;
473 $me->{_fncRE} = join '|', sort keys %{ $me->{_fnc} };
515 my $me = shift;
516 $me->{_txtN} ||= 0;
518 my $end= $me->{_cursor} + $me->{rows};
520 my $pct = $me->{_txtN} > $end ? $end/($me->{_txtN}) : 1;
522 my $pos = $me->{_cursor} ?
523 ($pct==1 ? $me->{_I18N}{bottom} : 'L'.$me->{_cursor}) :
524 $me->{_I18N}{top};
525 $pos .= 'C'.$me->{_left} if $me->{_left};
526 my $p = sprintf "[tp] %d%% %s %s", 100*$pct, $pos, $me->{_I18N}{prompt};
528 print $me->{_term}->Tgoto('cm', 0, $me->{rows}); # bottom left
529 print $me->{_term}->Tputs('ce'); # clear line
530 my $minihelp = $me->{_I18N}{minihelp};
532 my $pN = $me->{cols} -1 -length($pSansCodes) -length($me->{_I18N}{minihelp});
535 print $me->{REV}; # reverse video
537 print $me->{NOR}; # normal video
556 my $me = shift;
557 my $help = $me->{_I18N}{help};
558 my $cont = $me->{_I18N}{continue};
560 if( $me->max_width( split/\n/, $help ) > $me->{cols} ){
565 my $padding = $me->max_width($cont) / 2;
566 $me->dialog( $help2 . "\n" . (' 'x$padding) . $cont );
571 my $padding = $me->max_width($cont) / 2;
572 $me->dialog( $help . "\n" . (' 'x$padding) . $cont );
576 my $me = shift;
583 my($me, $msg, $timeout) = @_;
585 my $w = $me->max_width(@txt);
590 $me->{_term}->Tgoto('RI',0,4),
593 print $me->{_term}->Tgoto('cm',0, 2), # move
594 $me->{MENU}, # set color
596 $me->{NOR}; # normal color
601 local($me->{pause});
606 print $me->{_term}->Tgoto('cm', 0, $n); # move
607 print $me->{_term}->Tputs('ce'); # clear line
608 $me->line($n);
613 my $me = shift;
614 $me->{_text} = [];
615 $me->{_txtN} = 0;
616 $me->{_lineNo}=[];
617 $me->refresh();
622 my $me = shift;
624 print $me->{_term}->Tputs('cl'); # home, clear
625 for my $n (0 .. $me->{rows} -1){
626 print $me->{_term}->Tgoto('cm', 0, $n); # move
627 print $me->{_term}->Tputs('ce'); # clear line
630 if( $me->{_grep} && defined($me->{_text}->[$me->{_cursor}+$n]) ){
631 until( $me->{_text}->[$me->{_cursor}+$n] =~
632 m%$me->{_search}|\cF\c]\cL\cE \[\d+/% ){
633 $me->{_cursor}++;
634 last if $me->{_cursor}+$me->{rows}+$n >= $me->{_txtN};
638 $me->line($n+$me->{_cursor}) if # XXX w/o cursor messy
639 $me->{_cursor}+$me->{rows}+$n <= $me->{_txtN} # after menu & refresh
641 $me->scrollBar() if $me->{scrollBar};
645 my $me = shift;
646 $me->{_pages} = $me->{_txtN}/$me->{rows};
647 $me->{_thumbW} = $me->{rows}/$me->{_pages};
648 $me->{_thumbT} = sprintf("%i", ($me->{_cursor} / $me->{_pages}) )+($me->{_cursor}>$me->{_txtN}/2);
649 $me->{_thumbB} = sprintf("%i", $me->{_thumbT}+$me->{_thumbW});
653 for my $n (0 .. $me->{rows} -1){
654 print $me->{_term}->Tgoto('cm', $me->{cols}+1, $n);
655 print $n>=$me->{_thumbT} && $n<$me->{_thumbB} ? ' ' : "$me->{REV} $me->{NOR}";
660 my $me = shift;
667 $me->downhalf(); }
669 $me->uphalf(); }
670 elsif( $me->{scrollBar} && $args[1] == $me->{cols}+1 ){
672 if( $me->{_thumbDrag} ){
673 $me->{_thumbDrag} = 0;
677 elsif( $args[2]==$me->{rows} ){
678 $pos= $me->{_txtN} - 2*$me->{rows}-1 }
680 $pos = sprintf("%i", $args[2] / $me->{rows} * $me->{_txtN}) }
681 $me->jump($pos);
683 $me->uppage() if $args[2] < $me->{_thumbT};
684 $me->downpage() if $args[2] > $me->{_thumbB};
686 elsif( $args[2]>=$me->{_thumbT} &&
687 $args[2]<=$me->{_thumbB} ){ #automagically M (mouse-down)
688 $me->{_thumbDrag}=1;
695 my $me = shift;
697 local $_ = $me->{_text}[$n]||'';
708 $me->{_curFile} = $1 if m%\cF\c]\cL\cE \[(\d+)/%;
711 my $pausey = 1 if length($me->{pause}) && defined && /$me->{pause}/;
715 unless( $me->{fold} ){
716 $_ = ($len-$me->{_statCols}) < $me->{_left} ? '' :
717 substr($_, $me->{_left}, $me->{cols}-$me->{_statCols});
718 if( $len - $me->{_left} > $me->{cols} ){
724 unless( $me->{raw} ){
725 s/([\000-\010\013-\037])/$me->{REV}^$me->{_raw}->{$1}$me->{NOR}/g;
729 my $matched = (s/($me->{_search})/$me->{SRCH}$1$me->{NOR}/g) if
730 $me->{_search} ne '';
733 my $info = $me->{statusCol} && !$me->{lineNo} ? ($matched ? '*' : ' ') : '';
735 $me->{fold} ? ($me->{_lineNo}->[$n]||-1) :
736 (defined($me->{_text}[$n]) ? $n+1 : '')
737 ) if $me->{lineNo};
738 $_ = ($me->{Statuscol} && $matched ? $me->{REV} : ''). $info.
739 ($me->{statusCol} && $matched ? $me->{NOR} : '').
740 ($me->{lineNo} ? ' ' : ''). $_;
744 $me->{_end} = $n; #Advance past pause
750 my $me = shift;
752 my $t = $me->{_term};
755 if( $me->{_end} >= $me->{_txtN}-1 ){
756 $me->close() if $me->{eof} && ref($me->{text}) ne 'CODE';
757 if( ref($me->{text}) eq 'CODE' ){
758 $me->add_text( $me->{text}->() ); }
763 if( $me->{_end} < $me->{_txtN}-1 ){
764 if( length($me->{pause}) && $me->{_end} < $me->{rows}-1 ){
765 print $t->Tgoto('cm', 0, $me->{_end}+1 ); } # move
768 print $t->Tgoto('cm', 0, $me->{rows} ); # move
770 print $t->Tgoto('cm', 0, $me->{rows} - 1); # move
775 if( $me->{_grep} && $me->{_end} < $me->{_txtN} ){
776 until( $me->{_text}->[$me->{_end}] =~
777 m%$me->{_search}|\cF\c]\cL\cE \[\d+/% ){
778 $me->dialog(#"$me->{_end} >= $me->{_txtN} #$me->{_cursor}\n".
782 $me->{_cursor}++;
783 if( $me->{_end} >= $me->{_txtN} ){
784 $me->{cursor} = $me->{_end} = $me->{_txtN};
789 $me->line( ++$me->{_end} ) if $me->{_end} <= $me->{_txtN};
790 $me->{_cursor}++;
793 $me->refresh() if $ENV{TERM} eq 'WINANSI'; #XXX Windows scroll is lame
794 $me->scrollBar() if $me->{scrollBar};
807 my $me = shift;
811 if( $me->{_cursor} <= 0 ){
814 print $me->{_term}->Tgoto('cm',0,0); # move
815 print $me->{_term}->Tputs('sr'); # scroll back
830 $me->line( --$me->{_cursor} );
831 $me->{_end}--;
835 $me->refresh() if $ENV{TERM} eq 'WINANSI'; #XXX Windows scroll is lame
836 print $me->{_term}->Tgoto('cm',0,$me->{rows}); # goto bottom
837 $me->scrollBar() if $me->{scrollBar};
846 my $me = shift;
847 if( $me->{rows}>$me->{_txtN} ){
848 $me->jump( 0 ) }
850 $me->jump( $me->{_txtN}-1 );
851 $me->uppage() }
855 my $me = shift;
857 $me->I18N('status', $me->{BLD}.'*Mark name?*'.$me->{NOR}.$me->{REV});
858 $me->status();
859 $me->{_term}->Tgoto('cm',
862 $me->{rows});
866 $me->{_mark}->{$mark} = $me->{_cursor};
867 $me->I18N('status', '');
868 $me->status();
872 my $me = shift;
875 return if $mark eq "\cG" or not exists($me->{_mark}->{$mark});
877 my $jump = $me->{_mark}->{$mark};
882 $jump = $me->{_txtN} - $me->{rows};
885 my $marks = join("\n", map {"$_ = $me->{_mark}->{$_}"}
886 sort keys %{ $me->{_mark} } );
887 $me->dialog($marks);
890 $me->{_mark}->{"'"} = $me->{_cursor};
891 $me->jump( $jump );
896 my $me = shift;
898 my $mark = $me->{_curFile} + ( $mode eq 'anti' ? -1 : 1 );
899 if( exists($me->{_mark}->{$mark}) ){
900 $me->{_mark}->{"'"} = $me->{_cursor};
901 $me->jump( $me->{_mark}->{$mark} ); }
903 $me->beep()
908 my $me = shift;
909 $me->{_cursor} = shift;
910 $me->{_end} = $me->{_cursor} + $me->{rows}; # - 1;
911 $me->refresh();
915 my $me = shift;
916 $me->{_left} += 8;
917 $me->refresh();
921 my $me = shift;
922 $me->{_left} = 0 if ($me->{_left} -= 8) < 0;
923 $me->refresh();
927 my $me = shift;
928 $me->{_left} += int($me->{cols}/2);
929 $me->refresh();
933 my $me = shift;
934 $me->{_left} = 0 if ( $me->{_left} -= int($me->{cols}/2) ) < 0;
935 $me->refresh();
942 my $me = shift;
944 $me->{_hcraes} = $mode == 1;
945 $me->{_grep} = $mode == -1;
946 $me->{_searchWrap} = 0 unless $me->{_grep};
949 (my($prev), $me->{_search}) = ($me->{_search}, '');
951 print $me->{_term}->Tgoto('cm', 0, $me->{rows}); # move bottom
952 print $me->{_term}->Tputs('ce'); # clear line
953 print $me->{HILT}; # set color
956 $me->{_search} = $me->getln() || '';
957 print $me->{NOR}; # normal color
958 print $me->{_term}->Tgoto('cm', 0, $me->{rows}); # move bottom
959 print $me->{_term}->Tputs('ce'); # clear line
960 if( $me->{_search} eq '' ){
961 $me->refresh();
965 $me->{_search} = '(?i)'.$me->{_search} unless
966 $me->{_search} ne lc($me->{_search});
968 $me->{_search} = $prev if $me->{_search} eq '/' && $prev;
971 for my $n ( $me->{_cursor} .. $me->{_txtN} -1){ #XXX why offset needed?
972 next unless $me->{_text}[$n] =~ /$me->{_search}/i;
974 $me->{_cursor} = $n;
975 $me->{_cursor} = 0 if $me->{_txtN} < $me->{rows}; # - 1;
976 $me->{_end} = $me->{_cursor} + $me->{rows}; # - 1;
979 if( $me->{_cursor} + $me->{rows} > $me->{_txtN} - 1 && $me->{_cursor} ){
980 my $x = $me->{_cursor} + $me->{rows} - $me->{_txtN};
981 $x = $me->{_cursor} if $x > $me->{_cursor};
982 $me->{_cursor} -= $x;
983 $me->{_end} -= $x;
986 $me->refresh();
992 $me->dialog($me->{_I18N}{404}, 1);
998 my $me = shift;
999 return unless defined($me->{_txtN}) and defined($me->{_search});
1003 $mode = not $me->{_hcraes}; }
1005 $mode = $me->{_hcraes};
1008 if( $me->{_searchWrap} ){
1009 $me->{_searchWrap} = 0;
1010 $me->jump( $mode ? $me->{_txtN} : 0 );
1014 my $i = $mode ? ($me->{_cursor}||0)-1 : ($me->{_cursor})+1;
1017 $mode ? $i>0 : $i< $me->{_txtN};
1019 $matched = $me->{_text}[$i] =~ /$me->{_search}/;
1022 if( ($i == ($mode ? 0 : $me->{_txtN} )) && ($me->{_searchWrap} == 0) ){
1023 $me->dialog($me->I18N('searchwrap'), 1);
1024 $me->{_searchWrap} = 1;
1027 $matched ? $me->jump($i) : &beep;
1031 my $me = shift;
1032 $me->{lineNo} = not $me->{lineNo};
1034 $me->refresh();
1038 my $me = shift;
1039 $me->{raw} = not $me->{raw};
1040 $me->reflow();
1044 my $me = shift;
1045 $me->{fold} = not $me->{fold};
1046 $me->{_lineNo} = [1 .. $me->{_txtN}] if $me->{fold};
1047 $me->reflow();
1052 my $me = shift;
1054 print $me->{_term}->Tgoto('cm', 0, $me->{rows}); # move bottom
1055 print $me->{_term}->Tputs('ce'); # clear line
1058 my $out = $me->{_search} = $me->getln();
1060 print OUT join($/, @{$me->{_text}});
1064 $me->dialog("ERROR: " . -e $out ? "File exists" : $!)
1069 my $me = shift;
1071 print $me->{_term}->Tgoto('cm', 0, $me->{rows}); # move bottom
1072 print $me->{_term}->Tputs('ce'); # clear line
1075 my $file = $me->getln();
1077 $me->dialog( sprintf("%s: $file", $me->{_I18N}{404}) );
1081 $me->dialog($!);
1084 my $N = $me->get_fileN();
1085 $me->set_fileN($N+1);
1086 $me->add_text(sprintf("======== \cF\c]\cL\cE [%i/..] %s ========\n",
1095 my $me = shift;
1099 for my $i (1 .. $me->{rows} ){
1100 last if $end >= $me->{_txtN};
1101 print $me->{_text}[$end++], "\n";
1109 return if $end >= $me->{_txtN};
1126 mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m: