ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/urxvt.pm
(Generate patch)

Comparing rxvt-unicode/src/urxvt.pm (file contents):
Revision 1.23 by root, Tue Jan 3 19:42:53 2006 UTC vs.
Revision 1.27 by root, Tue Jan 3 23:41:37 2006 UTC

39 39
40=over 4 40=over 4
41 41
42=item selection 42=item selection
43 43
44Intelligent selection. This etxension tries to be more intelligent when the user 44Intelligent selection. This extension tries to be more intelligent when
45extends selections (double-click). 45the user extends selections (double-click). Right now, it tries to select
46urls and complete shell-quoted arguments, which is very convenient, too,
47if your F<ls> supports C<--quoting-style=shell>.
46 48
47It also offers the following bindable event: 49It also offers the following bindable event:
48 50
49=over 4 51=over 4
50 52
383 my $cb = $TERM->{_hook}[$htype] 385 my $cb = $TERM->{_hook}[$htype]
384 or return; 386 or return;
385 387
386 verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")" 388 verbose 10, "$HOOKNAME[$htype] (" . (join ", ", $TERM, @_) . ")"
387 if $verbosity >= 10; 389 if $verbosity >= 10;
390
391 keys %$cb;
388 392
389 while (my ($pkg, $cb) = each %$cb) { 393 while (my ($pkg, $cb) = each %$cb) {
390 return 1 394 return 1
391 if $cb->( 395 if $cb->(
392 $TERM->{$pkg} ||= do { 396 $TERM->{$pkg} ||= do {
405 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/ 409 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/
406 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable"; 410 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable";
407 411
408 eval qq{ 412 eval qq{
409 sub $urxvt::term::proxy::AUTOLOAD { 413 sub $urxvt::term::proxy::AUTOLOAD {
410 unshift \@_, shift->{term}; 414 my \$proxy = shift;
411 goto &urxvt::term::$1; 415 \$proxy->{term}->$1 (\@_)
412 } 416 }
413 1 417 1
414 } or die "FATAL: unable to compile method forwarder: $@"; 418 } or die "FATAL: unable to compile method forwarder: $@";
415 419
416 goto &$urxvt::term::proxy::AUTOLOAD; 420 goto &$urxvt::term::proxy::AUTOLOAD;
583=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]]) 587=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
584 588
585Returns the text of the entire row with number C<$row_number>. Row C<0> 589Returns the text of the entire row with number C<$row_number>. Row C<0>
586is the topmost terminal line, row C<< $term->$ncol-1 >> is the bottommost 590is the topmost terminal line, row C<< $term->$ncol-1 >> is the bottommost
587terminal line. The scrollback buffer starts at line C<-1> and extends to 591terminal line. The scrollback buffer starts at line C<-1> and extends to
588line C<< -$term->nsaved >>. 592line C<< -$term->nsaved >>. Nothing will be returned if a nonexistent line
593is requested.
589 594
590If C<$new_text> is specified, it will replace characters in the current 595If C<$new_text> is specified, it will replace characters in the current
591line, starting at column C<$start_col> (default C<0>), which is useful 596line, starting at column C<$start_col> (default C<0>), which is useful
592to replace only parts of a line. The font index in the rendition will 597to replace only parts of a line. The font index in the rendition will
593automatically be updated. 598automatically be updated.
615 620
616See the section on RENDITION, above. 621See the section on RENDITION, above.
617 622
618=item $length = $term->ROW_l ($row_number[, $new_length]) 623=item $length = $term->ROW_l ($row_number[, $new_length])
619 624
620Returns the number of screen cells that are in use ("the line length"). If 625Returns the number of screen cells that are in use ("the line
621it is C<-1>, then the line is part of a multiple-row logical "line", which 626length"). Unlike the urxvt core, this returns C<< $term->ncol >> if the
622means all characters are in use and it is continued on the next row. 627line is joined with the following one.
623 628
629=item $bool = $term->is_longer ($row_number)
630
631Returns true if the row is part of a multiple-row logical "line" (i.e.
632joined with the following row), which means all characters are in use
633and it is continued on the next row (and possibly a continuation of the
634previous row(s)).
635
636=item $line = $term->line ($row_number)
637
638Create and return a new C<urxvt::line> object that stores information
639about the logical line that row C<$row_number> is part of. It supports the
640following methods:
641
642=over 4
643
644=item $text = $line->t
645
646Returns the full text of the line, similar to C<ROW_t>
647
648=item $rend = $line->r
649
650Returns the full rendition array of the line, similar to C<ROW_r>
651
652=item $length = $line->l
653
654Returns the length of the line in cells, similar to C<ROW_l>.
655
656=item $rownum = $line->beg
657
658=item $rownum = $line->end
659
660Return the row number of the first/last row of the line, respectively.
661
662=item $offset = $line->offset_of ($row, $col)
663
664Returns the character offset of the given row|col pair within the logical
665line.
666
667=item ($row, $col) = $line->coord_of ($offset)
668
669Translates a string offset into terminal coordinates again.
670
671=back
672
673=cut
674
675sub urxvt::term::line {
676 my ($self, $row) = @_;
677
678 my $maxrow = $self->nrow - 1;
679
680 my ($beg, $end) = ($row, $row);
681
682 --$beg while $self->ROW_is_longer ($beg - 1);
683 ++$end while $self->ROW_is_longer ($end) && $end < $maxrow;
684
685 bless {
686 term => $self,
687 beg => $beg,
688 end => $end,
689 len => ($end - $beg) * $self->ncol + $self->ROW_l ($end),
690 }, urxvt::line::
691}
692
693sub urxvt::line::t {
694 my ($self) = @_;
695
696 substr +(join "", map $self->{term}->ROW_t ($_), $self->{beg} .. $self->{end}),
697 0, $self->{len}
698}
699
700sub urxvt::line::r {
701 my ($self) = @_;
702
703 my $rend = [
704 map @{ $self->{term}->ROW_r ($_) }, $self->{beg} .. $self->{end}
705 ];
706 $#$rend = $self->{len} - 1;
707 $rend
708}
709
710sub urxvt::line::beg { $_[0]{beg} }
711sub urxvt::line::end { $_[0]{end} }
712sub urxvt::line::l { $_[0]{len} }
713
714sub urxvt::line::offset_of {
715 my ($self, $row, $col) = @_;
716
717 ($row - $self->{beg}) * $self->{term}->ncol + $col
718}
719
720sub urxvt::line::coord_of {
721 my ($self, $offset) = @_;
722
723 use integer;
724
725 (
726 $offset / $self->{term}->ncol + $self->{beg},
727 $offset % $self->{term}->ncol
728 )
729}
730
731=item ($row, $col) = $line->coord_of ($offset)
624=item $text = $term->special_encode $string 732=item $text = $term->special_encode $string
625 733
626Converts a perl string into the special encoding used by rxvt-unicode, 734Converts a perl string into the special encoding used by rxvt-unicode,
627where one character corresponds to one screen cell. See 735where one character corresponds to one screen cell. See
628C<< $term->ROW_t >> for details. 736C<< $term->ROW_t >> for details.
742This variable controls the verbosity level of the perl extension. Higher 850This variable controls the verbosity level of the perl extension. Higher
743numbers indicate more verbose output. 851numbers indicate more verbose output.
744 852
745=over 4 853=over 4
746 854
747=item 0 - only fatal messages 855=item =0 - only fatal messages
748 856
749=item 3 - script loading and management 857=item =3 - script loading and management
750 858
751=item 10 - all events received 859=item =10 - all events received
752 860
753=back 861=back
754 862
755=head1 AUTHOR 863=head1 AUTHOR
756 864

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines