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.26 by root, Tue Jan 3 21:22:22 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.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines