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.33 by root, Thu Jan 5 01:04:10 2006 UTC vs.
Revision 1.43 by root, Sat Jan 7 04:19:43 2006 UTC

60 60
61=item digital-clock 61=item digital-clock
62 62
63Displays a digital clock using the built-in overlay. 63Displays a digital clock using the built-in overlay.
64 64
65=item mark-urls
66
67Uses per-line display filtering (C<on_line_update>) to underline urls.
68
69=item block-graphics-to-ascii
70
71A not very useful example of filtering all text output to the terminal,
72by replacing all line-drawing characters (U+2500 .. U+259F) by a
73similar-looking ascii character.
74
65=item example-refresh-hooks 75=item example-refresh-hooks
66 76
67Displays a very simple digital clock in the upper right corner of the 77Displays a very simple digital clock in the upper right corner of the
68window. Illustrates overwriting the refresh callbacks to create your own 78window. Illustrates overwriting the refresh callbacks to create your own
69overlays or changes. 79overlays or changes.
70
71=item mark-urls
72
73A not very useful example of filtering all text output to the terminal, by
74underlining all urls that matches a certain regex (i.e. some urls :). It
75is not very useful because urls that are output in multiple steps (e.g.
76when typing them) do not get marked.
77 80
78=back 81=back
79 82
80=head2 General API Considerations 83=head2 General API Considerations
81 84
113 116
114=back 117=back
115 118
116=head2 Hooks 119=head2 Hooks
117 120
118The following subroutines can be declared in loaded scripts, and will be 121The following subroutines can be declared in extension files, and will be
119called whenever the relevant event happens. 122called whenever the relevant event happens.
120 123
121The first argument passed to them is an object private to each terminal 124The first argument passed to them is an object private to each terminal
122and extension package. You can call all C<urxvt::term> methods on it, but 125and extension package. You can call all C<urxvt::term> methods on it, but
123its not a real C<urxvt::term> object. Instead, the real C<urxvt::term> 126its not a real C<urxvt::term> object. Instead, the real C<urxvt::term>
133=over 4 136=over 4
134 137
135=item on_init $term 138=item on_init $term
136 139
137Called after a new terminal object has been initialized, but before 140Called after a new terminal object has been initialized, but before
138windows are created or the command gets run. 141windows are created or the command gets run. Most methods are unsafe to
142call or deliver senseless data, as terminal size and other characteristics
143have not yet been determined. You can safely query and change resources,
144though.
139 145
140=item on_reset $term 146=item on_reset $term
141 147
142Called after the screen is "reset" for any reason, such as resizing or 148Called after the screen is "reset" for any reason, such as resizing or
143control sequences. Here is where you can react on changes to size-related 149control sequences. Here is where you can react on changes to size-related
223can filter/change and output the text yourself by returning a true value 229can filter/change and output the text yourself by returning a true value
224and calling C<< $term->scr_add_lines >> yourself. Please note that this 230and calling C<< $term->scr_add_lines >> yourself. Please note that this
225might be very slow, however, as your hook is called for B<all> text being 231might be very slow, however, as your hook is called for B<all> text being
226output. 232output.
227 233
234=item on_line_update $term, $row
235
236Called whenever a line was updated or changed. Can be used to filter
237screen output (e.g. underline urls or other useless stuff). Only lines
238that are being shown will be filtered, and, due to performance reasons,
239not always immediately.
240
241The row number is always the topmost row of the line if the line spans
242multiple rows.
243
244Please note that, if you change the line, then the hook might get called
245later with the already-modified line (e.g. if unrelated parts change), so
246you cannot just toggle rendition bits, but only set them.
247
228=item on_refresh_begin $term 248=item on_refresh_begin $term
229 249
230Called just before the screen gets redrawn. Can be used for overlay 250Called just before the screen gets redrawn. Can be used for overlay
231or similar effects by modify terminal contents in refresh_begin, and 251or similar effects by modify terminal contents in refresh_begin, and
232restoring them in refresh_end. The built-in overlay and selection display 252restoring them in refresh_end. The built-in overlay and selection display
240 260
241Called whenever the user presses a key combination that has a 261Called whenever the user presses a key combination that has a
242C<perl:string> action bound to it (see description of the B<keysym> 262C<perl:string> action bound to it (see description of the B<keysym>
243resource in the @@RXVT_NAME@@(1) manpage). 263resource in the @@RXVT_NAME@@(1) manpage).
244 264
265=item on_key_press $term, $event, $octets
266
267=item on_key_release $term, $event
268
269=item on_button_press $term, $event
270
271=item on_button_release $term, $event
272
273=item on_motion_notify $term, $event
274
275Called whenever the corresponding X event is received for the terminal If
276the hook returns true, then the even will be ignored by rxvt-unicode.
277
278The event is a hash with most values as named by Xlib (see the XEvent
279manpage), with the additional members C<row> and C<col>, which are the row
280and column under the mouse cursor.
281
282C<on_key_press> additionally receives the string rxvt-unicode would
283output, if any, in locale-specific encoding.
284
285subwindow.
286
245=back 287=back
246 288
247=head2 Variables in the C<urxvt> Package 289=head2 Variables in the C<urxvt> Package
248 290
249=over 4 291=over 4
250 292
251=item $urxvt::TERM 293=item $urxvt::TERM
252 294
253The current terminal. Whenever a callback/Hook is bein executed, this 295The current terminal. This variable stores the current C<urxvt::term>
254variable stores the current C<urxvt::term> object. 296object, whenever a callback/hook is executing.
255 297
256=back 298=back
257 299
258=head2 Functions in the C<urxvt> Package 300=head2 Functions in the C<urxvt> Package
259 301
260=over 4 302=over 4
303
304=item $term = new urxvt [arg...]
305
306Creates a new terminal, very similar as if you had started it with
307C<system $binfile, arg...>. Croaks (and probably outputs an error message)
308if the new instance couldn't be created. Returns C<undef> if the new
309instance didn't initialise perl, and the terminal object otherwise. The
310C<init> and C<start> hooks will be called during the call.
261 311
262=item urxvt::fatal $errormessage 312=item urxvt::fatal $errormessage
263 313
264Fatally aborts execution with the given error message. Avoid at all 314Fatally aborts execution with the given error message. Avoid at all
265costs! The only time this is acceptable is when the terminal process 315costs! The only time this is acceptable is when the terminal process
414 my $htype = shift; 464 my $htype = shift;
415 465
416 if ($htype == 0) { # INIT 466 if ($htype == 0) { # INIT
417 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl"); 467 my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl");
418 468
419 for my $ext (map { split /:/, $TERM->resource ("perl_ext_$_") } 1, 2) { 469 for my $ext (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) {
420 my @files = grep -f $_, map "$_/$ext", @dirs; 470 my @files = grep -f $_, map "$_/$ext", @dirs;
421 471
422 if (@files) { 472 if (@files) {
423 register_package script_package $files[0]; 473 register_package script_package $files[0];
424 } else { 474 } else {
482} 532}
483 533
484=head2 The C<urxvt::term> Class 534=head2 The C<urxvt::term> Class
485 535
486=over 4 536=over 4
537
538=item $term->destroy
539
540Destroy the terminal object (close the window, free resources etc.).
487 541
488=item $value = $term->resource ($name[, $newval]) 542=item $value = $term->resource ($name[, $newval])
489 543
490Returns the current resource value associated with a given name and 544Returns the current resource value associated with a given name and
491optionally sets a new value. Setting values is most useful in the C<init> 545optionally sets a new value. Setting values is most useful in the C<init>
608 662
609If hidden, display the overlay again. 663If hidden, display the overlay again.
610 664
611=back 665=back
612 666
613=item $cellwidth = $term->strwidth $string 667=item $cellwidth = $term->strwidth ($string)
614 668
615Returns the number of screen-cells this string would need. Correctly 669Returns the number of screen-cells this string would need. Correctly
616accounts for wide and combining characters. 670accounts for wide and combining characters.
617 671
618=item $octets = $term->locale_encode $string 672=item $octets = $term->locale_encode ($string)
619 673
620Convert the given text string into the corresponding locale encoding. 674Convert the given text string into the corresponding locale encoding.
621 675
622=item $string = $term->locale_decode $octets 676=item $string = $term->locale_decode ($octets)
623 677
624Convert the given locale-encoded octets into a perl string. 678Convert the given locale-encoded octets into a perl string.
625 679
626=item $term->scr_add_lines ($string) 680=item $term->scr_add_lines ($string)
627 681
632 686
633Normally its not a good idea to use this function, as programs might be 687Normally its not a good idea to use this function, as programs might be
634confused by changes in cursor position or scrolling. Its useful inside a 688confused by changes in cursor position or scrolling. Its useful inside a
635C<on_add_lines> hook, though. 689C<on_add_lines> hook, though.
636 690
691=item $term->cmd_parse ($octets)
692
693Similar to C<scr_add_lines>, but the argument must be in the
694locale-specific encoding of the terminal and can contain command sequences
695(escape codes) that will be interpreted.
696
637=item $term->tt_write ($octets) 697=item $term->tt_write ($octets)
638 698
639Write the octets given in C<$data> to the tty (i.e. as program input). To 699Write the octets given in C<$data> to the tty (i.e. as program input). To
640pass characters instead of octets, you should convert your strings first 700pass characters instead of octets, you should convert your strings first
641to the locale-specific encoding using C<< $term->locale_encode >>. 701to the locale-specific encoding using C<< $term->locale_encode >>.
702
703=item $windowid = $term->parent
704
705Return the window id of the toplevel window.
706
707=item $windowid = $term->vt
708
709Return the window id of the terminal window.
642 710
643=item $window_width = $term->width 711=item $window_width = $term->width
644 712
645=item $window_height = $term->height 713=item $window_height = $term->height
646 714
735about the logical line that row C<$row_number> is part of. It supports the 803about the logical line that row C<$row_number> is part of. It supports the
736following methods: 804following methods:
737 805
738=over 4 806=over 4
739 807
740=item $text = $line->t 808=item $text = $line->t ([$new_text])
741 809
742Returns the full text of the line, similar to C<ROW_t> 810Returns or replaces the full text of the line, similar to C<ROW_t>
743 811
744=item $rend = $line->r 812=item $rend = $line->r ([$new_rend])
745 813
746Returns the full rendition array of the line, similar to C<ROW_r> 814Returns or replaces the full rendition array of the line, similar to C<ROW_r>
747 815
748=item $length = $line->l 816=item $length = $line->l
749 817
750Returns the length of the line in cells, similar to C<ROW_l>. 818Returns the length of the line in cells, similar to C<ROW_l>.
751 819
780 848
781 bless { 849 bless {
782 term => $self, 850 term => $self,
783 beg => $beg, 851 beg => $beg,
784 end => $end, 852 end => $end,
853 ncol => $self->ncol,
785 len => ($end - $beg) * $self->ncol + $self->ROW_l ($end), 854 len => ($end - $beg) * $self->ncol + $self->ROW_l ($end),
786 }, urxvt::line:: 855 }, urxvt::line::
787} 856}
788 857
789sub urxvt::line::t { 858sub urxvt::line::t {
790 my ($self) = @_; 859 my ($self) = @_;
791 860
861 if (@_ > 1)
862 {
863 $self->{term}->ROW_t ($_, $_[1], 0, ($_ - $self->{beg}) * $self->{ncol}, $self->{ncol})
864 for $self->{beg} .. $self->{end};
865 }
866
867 defined wantarray &&
792 substr +(join "", map $self->{term}->ROW_t ($_), $self->{beg} .. $self->{end}), 868 substr +(join "", map $self->{term}->ROW_t ($_), $self->{beg} .. $self->{end}),
793 0, $self->{len} 869 0, $self->{len}
794} 870}
795 871
796sub urxvt::line::r { 872sub urxvt::line::r {
797 my ($self) = @_; 873 my ($self) = @_;
798 874
875 if (@_ > 1)
876 {
877 $self->{term}->ROW_r ($_, $_[1], 0, ($_ - $self->{beg}) * $self->{ncol}, $self->{ncol})
878 for $self->{beg} .. $self->{end};
879 }
880
881 if (defined wantarray) {
799 my $rend = [ 882 my $rend = [
800 map @{ $self->{term}->ROW_r ($_) }, $self->{beg} .. $self->{end} 883 map @{ $self->{term}->ROW_r ($_) }, $self->{beg} .. $self->{end}
801 ]; 884 ];
802 $#$rend = $self->{len} - 1; 885 $#$rend = $self->{len} - 1;
803 $rend 886 return $rend;
887 }
888
889 ()
804} 890}
805 891
806sub urxvt::line::beg { $_[0]{beg} } 892sub urxvt::line::beg { $_[0]{beg} }
807sub urxvt::line::end { $_[0]{end} } 893sub urxvt::line::end { $_[0]{end} }
808sub urxvt::line::l { $_[0]{len} } 894sub urxvt::line::l { $_[0]{len} }
809 895
810sub urxvt::line::offset_of { 896sub urxvt::line::offset_of {
811 my ($self, $row, $col) = @_; 897 my ($self, $row, $col) = @_;
812 898
813 ($row - $self->{beg}) * $self->{term}->ncol + $col 899 ($row - $self->{beg}) * $self->{ncol} + $col
814} 900}
815 901
816sub urxvt::line::coord_of { 902sub urxvt::line::coord_of {
817 my ($self, $offset) = @_; 903 my ($self, $offset) = @_;
818 904
819 use integer; 905 use integer;
820 906
821 ( 907 (
822 $offset / $self->{term}->ncol + $self->{beg}, 908 $offset / $self->{ncol} + $self->{beg},
823 $offset % $self->{term}->ncol 909 $offset % $self->{ncol}
824 ) 910 )
825} 911}
826 912
827=item ($row, $col) = $line->coord_of ($offset) 913=item ($row, $col) = $line->coord_of ($offset)
828=item $text = $term->special_encode $string 914=item $text = $term->special_encode $string

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines