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.250 by sf-exg, Fri Dec 26 21:49:11 2014 UTC vs.
Revision 1.260 by root, Mon May 24 20:21:51 2021 UTC

115the C<urxvt::extension> section below. 115the C<urxvt::extension> section below.
116 116
117=head2 META comments 117=head2 META comments
118 118
119Rxvt-unicode recognizes special meta comments in extensions that define 119Rxvt-unicode recognizes special meta comments in extensions that define
120different types of metadata. 120different types of metadata. These comments are scanned whenever a
121terminal is created and are typically used to autoload extensions when
122their resources or command line parameters are used.
121 123
122Currently, it recognises only one such comment: 124Currently, it recognises only one such comment:
123 125
124=over 4 126=over 4
125 127
126=item #:META:RESOURCE:name:type:desc 128=item #:META:RESOURCE:name:type:desc
127 129
128The RESOURCE comment defines a resource used by the extension, where 130The RESOURCE comment defines a resource used by the extension, where
129C<name> is the resource name, C<type> is the resource type, C<boolean> 131C<name> is the resource name, C<type> is the resource type, C<boolean>
130or C<string>, and C<desc> is the resource description. 132or C<string>, and C<desc> is the resource description.
133
134The extension will be autoloaded when this resource is specified or used
135as a command line parameter.
131 136
132=back 137=back
133 138
134=head2 Hooks 139=head2 Hooks
135 140
511ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify, 516ConfigureRequest, GravityNotify, ResizeRequest, CirculateNotify,
512CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest, 517CirculateRequest, PropertyNotify, SelectionClear, SelectionRequest,
513SelectionNotify, ColormapNotify, ClientMessage, MappingNotify 518SelectionNotify, ColormapNotify, ClientMessage, MappingNotify
514 519
515Various constants for use in X calls and event processing. 520Various constants for use in X calls and event processing.
521
522=item urxvt::PrivMode_132, PrivMode_132OK, PrivMode_rVideo, PrivMode_relOrigin,
523PrivMode_Screen, PrivMode_Autowrap, PrivMode_aplCUR, PrivMode_aplKP,
524PrivMode_HaveBackSpace, PrivMode_BackSpace, PrivMode_ShiftKeys,
525PrivMode_VisibleCursor, PrivMode_MouseX10, PrivMode_MouseX11,
526PrivMode_scrollBar, PrivMode_TtyOutputInh, PrivMode_Keypress,
527PrivMode_smoothScroll, PrivMode_vt52, PrivMode_LFNL, PrivMode_MouseBtnEvent,
528PrivMode_MouseAnyEvent, PrivMode_BracketPaste, PrivMode_ExtMouseUTF8,
529PrivMode_ExtMouseUrxvt, PrivMode_BlinkingCursor, PrivMode_mouse_report,
530PrivMode_Default
531
532Constants for checking DEC private modes.
516 533
517=back 534=back
518 535
519=head2 RENDITION 536=head2 RENDITION
520 537
588sub parse_resource { 605sub parse_resource {
589 my ($term, $name, $isarg, $longopt, $flag, $value) = @_; 606 my ($term, $name, $isarg, $longopt, $flag, $value) = @_;
590 607
591 $term->scan_extensions; 608 $term->scan_extensions;
592 609
610 # iterating over all resources has quadratic time overhead
611 # overall, maybe this could be optimised?
593 my $r = $term->{meta}{resource}; 612 my $r = $term->{meta}{resource};
594 keys %$r; # reset iterator 613 keys %$r; # reset iterator
595 while (my ($k, $v) = each %$r) { 614 while (my ($k, $v) = each %$r) {
596 my $pattern = $k; 615 my $pattern = $k;
597 $pattern =~ y/./-/ if $isarg; 616 $pattern =~ y/./-/ if $isarg;
604 if ($pattern eq $prefix) { 623 if ($pattern eq $prefix) {
605 $name = "$urxvt::RESCLASS.$k$suffix"; 624 $name = "$urxvt::RESCLASS.$k$suffix";
606 625
607 push @{ $term->{perl_ext_3} }, $v->[0]; 626 push @{ $term->{perl_ext_3} }, $v->[0];
608 627
628 return 1 unless $isarg;
629
609 if ($v->[1] eq "boolean") { 630 if ($v->[1] eq "boolean") {
610 $term->put_option_db ($name, $flag ? "true" : "false"); 631 $term->put_option_db ($name, $flag ? "true" : "false");
611 return 1; 632 return 1;
612 } else { 633 } else {
613 $term->put_option_db ($name, $value); 634 $term->put_option_db ($name, $value);
708 @TERM_EXT = (); 729 @TERM_EXT = ();
709 $TERM->register_package ($_) for @pkg; 730 $TERM->register_package ($_) for @pkg;
710 } 731 }
711 732
712 for ( 733 for (
734 @{ delete $TERM->{perl_ext_3} },
713 (grep $_, map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2), 735 (grep $_, map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2),
714 @{ delete $TERM->{perl_ext_3} }
715 ) { 736 ) {
716 if ($_ eq "default") { 737 if ($_ eq "default") {
717 738
718 $ext_arg{$_} = [] 739 $ext_arg{$_} = []
719 for qw(selection option-popup selection-popup readline searchable-scrollback); 740 for qw(selection option-popup selection-popup readline searchable-scrollback);
1134 my ($self) = @_; 1155 my ($self) = @_;
1135 1156
1136 return if exists $self->{meta}; 1157 return if exists $self->{meta};
1137 1158
1138 my @urxvtdirs = perl_libdirs $self; 1159 my @urxvtdirs = perl_libdirs $self;
1139 my @cpandirs = grep -d, map "$_/URxvt/Ext", @INC; 1160# my @cpandirs = grep -d, map "$_/URxvt/Ext", @INC;
1140 1161
1141 $self->{meta} = \my %meta; 1162 $self->{meta} = \my %meta;
1142 1163
1143 # first gather extensions 1164 # first gather extensions
1144 1165
1181 1202
1182 $meta{ext}{$ext} = \%ext; 1203 $meta{ext}{$ext} = \%ext;
1183 } 1204 }
1184 }; 1205 };
1185 1206
1186 $gather->($_, 0) for @cpandirs; 1207# $gather->($_, 0) for @cpandirs;
1187 $gather->($_, 1) for @urxvtdirs; 1208 $gather->($_, 1) for @urxvtdirs;
1188 1209
1189 # and now merge resources 1210 # and now merge resources
1211
1212 $meta{resource} = \my %resource;
1213
1190 while (my ($k, $v) = each %{ $meta{ext} }) { 1214 while (my ($k, $v) = each %{ $meta{ext} }) {
1191 #TODO: should check for extensions overriding each other 1215 #TODO: should check for extensions overriding each other
1192 %{ $meta{resource} } = (%{ $meta{resource} }, %{ $v->{resource} }); 1216 %resource = (%resource, %{ $v->{resource} });
1193 } 1217 }
1194} 1218}
1195 1219
1196=item $term = new urxvt::term $envhashref, $rxvtname, [arg...] 1220=item $term = new urxvt::term $envhashref, $rxvtname, [arg...]
1197 1221
1343 my $res = &x_resource; 1367 my $res = &x_resource;
1344 1368
1345 $res =~ /^\s*(?:true|yes|on|1)\s*$/i ? 1 : defined $res && 0 1369 $res =~ /^\s*(?:true|yes|on|1)\s*$/i ? 1 : defined $res && 0
1346} 1370}
1347 1371
1372=item $action = $term->lookup_keysym ($keysym, $state)
1373
1374Returns the action bound to key combination C<($keysym, $state)>,
1375if a binding for it exists, and C<undef> otherwise.
1376
1348=item $success = $term->bind_action ($key, $action) 1377=item $success = $term->bind_action ($key, $action)
1349 1378
1350Adds a key binding exactly as specified via a C<keysym> resource. See the 1379Adds a key binding exactly as specified via a C<keysym> resource. See the
1351C<keysym> resource in the urxvt(1) manpage. 1380C<keysym> resource in the urxvt(1) manpage.
1352 1381
1609 1638
1610=item $term->key_release ($state, $keycode[, $time]) 1639=item $term->key_release ($state, $keycode[, $time])
1611 1640
1612Deliver various fake events to to terminal. 1641Deliver various fake events to to terminal.
1613 1642
1614=item $window_width = $term->width 1643=item $window_width = $term->width ([$new_value])
1615 1644
1616=item $window_height = $term->height 1645=item $window_height = $term->height ([$new_value])
1617 1646
1618=item $font_width = $term->fwidth 1647=item $font_width = $term->fwidth ([$new_value])
1619 1648
1620=item $font_height = $term->fheight 1649=item $font_height = $term->fheight ([$new_value])
1621 1650
1622=item $font_ascent = $term->fbase 1651=item $font_ascent = $term->fbase ([$new_value])
1623 1652
1624=item $terminal_rows = $term->nrow 1653=item $terminal_rows = $term->nrow ([$new_value])
1625 1654
1626=item $terminal_columns = $term->ncol 1655=item $terminal_columns = $term->ncol ([$new_value])
1627 1656
1628=item $has_focus = $term->focus 1657=item $has_focus = $term->focus ([$new_value])
1629 1658
1630=item $is_mapped = $term->mapped 1659=item $is_mapped = $term->mapped ([$new_value])
1631 1660
1632=item $max_scrollback = $term->saveLines 1661=item $max_scrollback = $term->saveLines ([$new_value])
1633 1662
1634=item $nrow_plus_saveLines = $term->total_rows 1663=item $nrow_plus_saveLines = $term->total_rows ([$new_value])
1635 1664
1636=item $topmost_scrollback_row = $term->top_row 1665=item $topmost_scrollback_row = $term->top_row ([$new_value])
1637 1666
1638Return various integers describing terminal characteristics. 1667Return various integers describing terminal characteristics. If an
1668argument is given, changes the value and returns the previous one.
1639 1669
1640=item $x_display = $term->display_id 1670=item $x_display = $term->display_id
1641 1671
1642Return the DISPLAY used by rxvt-unicode. 1672Return the DISPLAY used by rxvt-unicode.
1643 1673
1679Returns the currently displayed screen (0 primary, 1 secondary). 1709Returns the currently displayed screen (0 primary, 1 secondary).
1680 1710
1681=item $cursor_is_hidden = $term->hidden_cursor 1711=item $cursor_is_hidden = $term->hidden_cursor
1682 1712
1683Returns whether the cursor is currently hidden or not. 1713Returns whether the cursor is currently hidden or not.
1714
1715=item $priv_modes = $term->priv_modes
1716
1717Returns a bitset with the state of DEC private modes.
1718
1719Example:
1720
1721 if ($term->priv_modes & urxvt::PrivMode_mouse_report) {
1722 # mouse reporting is turned on
1723 }
1684 1724
1685=item $view_start = $term->view_start ([$newvalue]) 1725=item $view_start = $term->view_start ([$newvalue])
1686 1726
1687Returns the row number of the topmost displayed line. Maximum value is 1727Returns the row number of the topmost displayed line. Maximum value is
1688C<0>, which displays the normal terminal contents. Lower values scroll 1728C<0>, which displays the normal terminal contents. Lower values scroll
1693Requests a screen refresh. At the next opportunity, rxvt-unicode will 1733Requests a screen refresh. At the next opportunity, rxvt-unicode will
1694compare the on-screen display with its stored representation. If they 1734compare the on-screen display with its stored representation. If they
1695differ, it redraws the differences. 1735differ, it redraws the differences.
1696 1736
1697Used after changing terminal contents to display them. 1737Used after changing terminal contents to display them.
1738
1739=item $term->refresh_check
1740
1741Checks if a refresh has been requested and, if so, schedules one.
1698 1742
1699=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]]) 1743=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
1700 1744
1701Returns the text of the entire row with number C<$row_number>. Row C<< $term->top_row >> 1745Returns the text of the entire row with number C<$row_number>. Row C<< $term->top_row >>
1702is the topmost terminal line, row C<< $term->nrow-1 >> is the bottommost 1746is the topmost terminal line, row C<< $term->nrow-1 >> is the bottommost

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines