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.24 by root, Tue Jan 3 20:47:36 2006 UTC

405 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/ 405 $urxvt::term::proxy::AUTOLOAD =~ /:([^:]+)$/
406 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable"; 406 or die "FATAL: \$AUTOLOAD '$urxvt::term::proxy::AUTOLOAD' unparsable";
407 407
408 eval qq{ 408 eval qq{
409 sub $urxvt::term::proxy::AUTOLOAD { 409 sub $urxvt::term::proxy::AUTOLOAD {
410 unshift \@_, shift->{term}; 410 my \$proxy = shift;
411 goto &urxvt::term::$1; 411 \$proxy->{term}->$1 (\@_)
412 } 412 }
413 1 413 1
414 } or die "FATAL: unable to compile method forwarder: $@"; 414 } or die "FATAL: unable to compile method forwarder: $@";
415 415
416 goto &$urxvt::term::proxy::AUTOLOAD; 416 goto &$urxvt::term::proxy::AUTOLOAD;
583=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]]) 583=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
584 584
585Returns the text of the entire row with number C<$row_number>. Row C<0> 585Returns 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 586is 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 587terminal line. The scrollback buffer starts at line C<-1> and extends to
588line C<< -$term->nsaved >>. 588line C<< -$term->nsaved >>. Nothing will be returned if a nonexistent line
589is requested.
589 590
590If C<$new_text> is specified, it will replace characters in the current 591If 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 592line, 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 593to replace only parts of a line. The font index in the rendition will
593automatically be updated. 594automatically be updated.
615 616
616See the section on RENDITION, above. 617See the section on RENDITION, above.
617 618
618=item $length = $term->ROW_l ($row_number[, $new_length]) 619=item $length = $term->ROW_l ($row_number[, $new_length])
619 620
620Returns the number of screen cells that are in use ("the line length"). If 621Returns 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 622length"). 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. 623line is joined with the following one.
623 624
625=item $bool = $term->is_longer ($row_number)
626
627Returns true if the row is part of a multiple-row logical "line" (i.e.
628joined with the following row), which means all characters are in use
629and it is continued on the next row (and possibly a continuation of the
630previous row(s)).
631
632=item $line = $term->line ($row_number)
633
634Create and return a new C<urxvt::line> object that stores information
635about the logical line that row C<$row_number> is part of. It supports the
636following methods:
637
638=over 4
639
640=item $text = $line->t
641
642Returns the full text of the line, similar to C<ROW_t>
643
644=item $rend = $line->r
645
646Returns the full rendition array of the line, similar to C<ROW_r>
647
648=item $length = $line->l
649
650Returns the length of the line in cells, similar to C<ROW_l>.
651
652=item $rownum = $line->beg
653
654=item $rownum = $line->end
655
656Return the row number of the first/last row of the line, respectively.
657
658=item $offset = $line->offset_of ($row, $col)
659
660Returns the character offset of the given row|col pair within the logical
661line.
662
663=item ($row, $col) = $line->coord_of ($offset)
664
665Translates a string offset into terminal coordinates again.
666
667=back
668
669=cut
670
671sub urxvt::term::line {
672 my ($self, $row) = @_;
673
674 my $maxrow = $self->nrow - 1;
675
676 my ($beg, $end) = ($row, $row);
677
678 --$beg while $self->ROW_is_longer ($beg - 1);
679 ++$end while $self->ROW_is_longer ($end) && $end < $maxrow;
680
681 bless {
682 term => $self,
683 beg => $beg,
684 end => $end,
685 len => ($end - $beg) * $self->ncol + $self->ROW_l ($end),
686 }, urxvt::line::
687}
688
689sub urxvt::line::t {
690 my ($self) = @_;
691
692 substr +(join "", map $self->{term}->ROW_t ($_), $self->{beg} .. $self->{end}),
693 0, $self->{len}
694}
695
696sub urxvt::line::r {
697 my ($self) = @_;
698
699 my $rend = [
700 map @{ $self->{term}->ROW_r ($_) }, $self->{beg} .. $self->{end}
701 ];
702 $#$rend = $self->{len} - 1;
703 $rend
704}
705
706sub urxvt::line::beg { $_[0]{beg} }
707sub urxvt::line::end { $_[0]{end} }
708sub urxvt::line::l { $_[0]{len} }
709
710sub urxvt::line::offset_of {
711 my ($self, $row, $col) = @_;
712
713 ($row - $self->{beg}) * $self->{term}->ncol + $col
714}
715
716sub urxvt::line::coord_of {
717 my ($self, $offset) = @_;
718
719 use integer;
720
721 (
722 $offset / $self->{term}->ncol + $self->{beg},
723 $offset % $self->{term}->ncol
724 )
725}
726
727=item ($row, $col) = $line->coord_of ($offset)
624=item $text = $term->special_encode $string 728=item $text = $term->special_encode $string
625 729
626Converts a perl string into the special encoding used by rxvt-unicode, 730Converts a perl string into the special encoding used by rxvt-unicode,
627where one character corresponds to one screen cell. See 731where one character corresponds to one screen cell. See
628C<< $term->ROW_t >> for details. 732C<< $term->ROW_t >> for details.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines