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.248 by root, Fri Dec 26 21:01:46 2014 UTC vs.
Revision 1.254 by sf-exg, Tue Mar 17 09:23:08 2015 UTC

45 45
46 URxvt.perl-ext-common: default,selection-autotransform 46 URxvt.perl-ext-common: default,selection-autotransform
47 47
48Extensions may add additional resources and C<actions>, i.e., methods 48Extensions may add additional resources and C<actions>, i.e., methods
49which can be bound to a key and invoked by the user. An extension can 49which can be bound to a key and invoked by the user. An extension can
50define the resources it support and also default bindings for one or 50define the resources it support using so called META comments,
51more actions it provides using so called META comments, described
52below. Similarly to builtin resources, extension resources can also be 51described below. Similarly to builtin resources, extension resources
53specified on the command line as long options (with C<.> replaced by 52can also be specified on the command line as long options (with C<.>
54C<->), in which case the corresponding extension is loaded 53replaced by C<->), in which case the corresponding extension is loaded
55automatically. For this to work the extension B<must> define META 54automatically. For this to work the extension B<must> define META
56comments for its resources. 55comments for its resources.
57 56
58=head1 API DOCUMENTATION 57=head1 API DOCUMENTATION
59 58
118=head2 META comments 117=head2 META comments
119 118
120Rxvt-unicode recognizes special meta comments in extensions that define 119Rxvt-unicode recognizes special meta comments in extensions that define
121different types of metadata. 120different types of metadata.
122 121
123Currently, it recxognises only one such comment: 122Currently, it recognises only one such comment:
124 123
125=over 4 124=over 4
126 125
127=item #:META:RESOURCE:name:type:desc 126=item #:META:RESOURCE:name:type:desc
128 127
1134sub scan_extensions { 1133sub scan_extensions {
1135 my ($self) = @_; 1134 my ($self) = @_;
1136 1135
1137 return if exists $self->{meta}; 1136 return if exists $self->{meta};
1138 1137
1139 my @libdirs = perl_libdirs $self; 1138 my @urxvtdirs = perl_libdirs $self;
1139# my @cpandirs = grep -d, map "$_/URxvt/Ext", @INC;
1140 1140
1141# return if $self->{meta_libdirs} eq join "\x00", @libdirs;#d#
1142
1143# $self->{meta_libdirs} = join "\x00", @libdirs;#d#
1144 $self->{meta} = \my %meta; 1141 $self->{meta} = \my %meta;
1145 1142
1146 # first gather extensions 1143 # first gather extensions
1147 for my $dir (reverse @libdirs) { 1144
1145 my $gather = sub {
1146 my ($dir, $core) = @_;
1147
1148 opendir my $fh, $dir 1148 opendir my $fh, $dir
1149 or next; 1149 or return;
1150
1150 for my $ext (readdir $fh) { 1151 for my $ext (readdir $fh) {
1151 $ext !~ /^\./ 1152 $ext !~ /^\./
1153 or next;
1154
1152 and open my $fh, "<", "$dir/$ext" 1155 open my $fh, "<", "$dir/$ext"
1156 or next;
1157
1158 -f $fh
1159 or next;
1160
1161 $ext =~ s/\.uext$// or $core
1153 or next; 1162 or next;
1154 1163
1155 my %ext = (dir => $dir); 1164 my %ext = (dir => $dir);
1156 1165
1157 while (<$fh>) { 1166 while (<$fh>) {
1170 } 1179 }
1171 } 1180 }
1172 1181
1173 $meta{ext}{$ext} = \%ext; 1182 $meta{ext}{$ext} = \%ext;
1174 } 1183 }
1175 } 1184 };
1185
1186# $gather->($_, 0) for @cpandirs;
1187 $gather->($_, 1) for @urxvtdirs;
1176 1188
1177 # and now merge resources 1189 # and now merge resources
1190
1191 $meta{resource} = \my %resource;
1192
1178 while (my ($k, $v) = each %{ $meta{ext} }) { 1193 while (my ($k, $v) = each %{ $meta{ext} }) {
1179 #TODO: should check for extensions overriding each other 1194 #TODO: should check for extensions overriding each other
1180 %{ $meta{resource} } = (%{ $meta{resource} }, %{ $v->{resource} }); 1195 %resource = (%resource, %{ $v->{resource} });
1181 } 1196 }
1182} 1197}
1183 1198
1184=item $term = new urxvt::term $envhashref, $rxvtname, [arg...] 1199=item $term = new urxvt::term $envhashref, $rxvtname, [arg...]
1185 1200
1331 my $res = &x_resource; 1346 my $res = &x_resource;
1332 1347
1333 $res =~ /^\s*(?:true|yes|on|1)\s*$/i ? 1 : defined $res && 0 1348 $res =~ /^\s*(?:true|yes|on|1)\s*$/i ? 1 : defined $res && 0
1334} 1349}
1335 1350
1351=item $action = $term->lookup_keysym ($keysym, $state)
1352
1353Returns the action bound to key combination C<($keysym, $state)>,
1354if a binding for it exists, and C<undef> otherwise.
1355
1336=item $success = $term->bind_action ($key, $action) 1356=item $success = $term->bind_action ($key, $action)
1337 1357
1338Adds a key binding exactly as specified via a C<keysym> resource. See the 1358Adds a key binding exactly as specified via a C<keysym> resource. See the
1339C<keysym> resource in the urxvt(1) manpage. 1359C<keysym> resource in the urxvt(1) manpage.
1340 1360
1341To add default bindings for an extension, the extension should call C<< 1361To add default bindings for actions, an extension should call C<<
1342->bind_action >> on it's C<init> hook for every such binding. Doing it 1362->bind_action >> in its C<init> hook for every such binding. Doing it
1343in the C<init> hook allows users the override or remove the the binding 1363in the C<init> hook allows users to override or remove the binding
1344again. 1364again.
1345 1365
1346Example: the C<searchable-scrollback> by default binds itself 1366Example: the C<searchable-scrollback> by default binds itself
1347on C<Meta-s>, using C<< $self->bind_action >>, which calls C<< 1367on C<Meta-s>, using C<< $self->bind_action >>, which calls C<<
1348$term->bind_action >>. 1368$term->bind_action >>.
1681Requests a screen refresh. At the next opportunity, rxvt-unicode will 1701Requests a screen refresh. At the next opportunity, rxvt-unicode will
1682compare the on-screen display with its stored representation. If they 1702compare the on-screen display with its stored representation. If they
1683differ, it redraws the differences. 1703differ, it redraws the differences.
1684 1704
1685Used after changing terminal contents to display them. 1705Used after changing terminal contents to display them.
1706
1707=item $term->refresh_check
1708
1709Checks if a refresh has been requested and, if so, schedules one.
1686 1710
1687=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]]) 1711=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
1688 1712
1689Returns the text of the entire row with number C<$row_number>. Row C<< $term->top_row >> 1713Returns the text of the entire row with number C<$row_number>. Row C<< $term->top_row >>
1690is the topmost terminal line, row C<< $term->nrow-1 >> is the bottommost 1714is the topmost terminal line, row C<< $term->nrow-1 >> is the bottommost

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines