… | |
… | |
43 | |
43 | |
44 | Or by adding them to the resource for extensions loaded by default: |
44 | Or by adding them to the resource for extensions loaded by default: |
45 | |
45 | |
46 | URxvt.perl-ext-common: default,selection-autotransform |
46 | URxvt.perl-ext-common: default,selection-autotransform |
47 | |
47 | |
48 | Extensions that add command line parameters or resources on their own are |
48 | Extensions may add resources on their own. Similarly to builtin |
49 | loaded automatically when used. |
49 | resources, these resources can also be specified on the command line |
|
|
50 | as long options (with '.' replaced by '-'), in which case the |
|
|
51 | corresponding extension is loaded automatically. |
50 | |
52 | |
51 | =head1 API DOCUMENTATION |
53 | =head1 API DOCUMENTATION |
52 | |
54 | |
53 | =head2 General API Considerations |
55 | =head2 General API Considerations |
54 | |
56 | |
… | |
… | |
555 | no warnings 'utf8'; |
557 | no warnings 'utf8'; |
556 | |
558 | |
557 | sub parse_resource { |
559 | sub parse_resource { |
558 | my ($term, $name, $isarg, $longopt, $flag, $value) = @_; |
560 | my ($term, $name, $isarg, $longopt, $flag, $value) = @_; |
559 | |
561 | |
560 | $name =~ y/-/./ if $isarg; |
|
|
561 | |
|
|
562 | $term->scan_extensions; |
562 | $term->scan_extensions; |
563 | |
563 | |
564 | my $r = $term->{meta}{resource}; |
564 | my $r = $term->{meta}{resource}; |
565 | keys %$r; # reset iterator |
565 | keys %$r; # reset iterator |
566 | while (my ($pattern, $v) = each %$r) { |
566 | while (my ($k, $v) = each %$r) { |
567 | if ( |
567 | my $pattern = $k; |
|
|
568 | $pattern =~ y/./-/ if $isarg; |
|
|
569 | my $prefix = $name; |
|
|
570 | my $suffix; |
568 | $pattern =~ /\.$/ |
571 | if ($pattern =~ /\-$/) { |
569 | ? $pattern eq substr $name, 0, length $pattern |
572 | $prefix = substr $name, 0, length $pattern; |
570 | : $pattern eq $name |
573 | $suffix = substr $name, length $pattern; |
571 | ) { |
574 | } |
|
|
575 | if ($pattern eq $prefix) { |
572 | $name = "$urxvt::RESCLASS.$name"; |
576 | $name = "$urxvt::RESCLASS.$k$suffix"; |
573 | |
577 | |
574 | push @{ $term->{perl_ext_3} }, $v->[0]; |
578 | push @{ $term->{perl_ext_3} }, $v->[0]; |
575 | |
579 | |
576 | if ($v->[1] eq "boolean") { |
580 | if ($v->[1] eq "boolean") { |
577 | $term->put_option_db ($name, $flag ? "true" : "false"); |
581 | $term->put_option_db ($name, $flag ? "true" : "false"); |
… | |
… | |
675 | @TERM_EXT = (); |
679 | @TERM_EXT = (); |
676 | $TERM->register_package ($_) for @pkg; |
680 | $TERM->register_package ($_) for @pkg; |
677 | } |
681 | } |
678 | |
682 | |
679 | for ( |
683 | for ( |
680 | grep $_, map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2 |
684 | (grep $_, map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2), |
|
|
685 | @{ delete $TERM->{perl_ext_3} } |
681 | ) { |
686 | ) { |
682 | if ($_ eq "default") { |
687 | if ($_ eq "default") { |
683 | |
688 | |
684 | $ext_arg{$_} = [] |
689 | $ext_arg{$_} = [] |
685 | for |
690 | for |
686 | qw(selection option-popup selection-popup readline), |
691 | qw(selection option-popup selection-popup readline), |
687 | @{ delete $TERM->{perl_ext_3} }, |
|
|
688 | map $_->[0], values %{ $TERM->{meta}{binding} }; |
692 | map $_->[0], values %{ $TERM->{meta}{binding} }; |
689 | |
693 | |
690 | for ($TERM->_keysym_resources) { |
694 | for ($TERM->_keysym_resources) { |
691 | next if /^(?:string|command|builtin|builtin-string|perl)/; |
695 | next if /^(?:string|command|builtin|builtin-string|perl)/; |
692 | next unless /^([A-Za-z0-9_\-]+):/; |
696 | next unless /^([A-Za-z0-9_\-]+):/; |
… | |
… | |
1271 | Returns the X-Resource for the given pattern, excluding the program or |
1275 | Returns the X-Resource for the given pattern, excluding the program or |
1272 | class name, i.e. C<< $term->x_resource ("boldFont") >> should return the |
1276 | class name, i.e. C<< $term->x_resource ("boldFont") >> should return the |
1273 | same value as used by this instance of rxvt-unicode. Returns C<undef> if no |
1277 | same value as used by this instance of rxvt-unicode. Returns C<undef> if no |
1274 | resource with that pattern exists. |
1278 | resource with that pattern exists. |
1275 | |
1279 | |
1276 | Extensions that define extra resource or command line arguments also need |
1280 | Extensions that define extra resources also need to call this method |
1277 | to call this method to access their values. |
1281 | to access their values. |
1278 | |
1282 | |
1279 | If the method is called on an extension object (basically, from an |
1283 | If the method is called on an extension object (basically, from an |
1280 | extension), then the special prefix C<%.> will be replaced by the name of |
1284 | extension), then the special prefix C<%.> will be replaced by the name of |
1281 | the extension and a dot, and the lone string C<%> will be replaced by the |
1285 | the extension and a dot, and the lone string C<%> will be replaced by the |
1282 | extension name itself. This makes it possible to code extensions so you |
1286 | extension name itself. This makes it possible to code extensions so you |