… | |
… | |
762 | use Scalar::Util (); |
762 | use Scalar::Util (); |
763 | use List::Util (); |
763 | use List::Util (); |
764 | |
764 | |
765 | our $VERSION = 1; |
765 | our $VERSION = 1; |
766 | our $TERM; |
766 | our $TERM; |
767 | our @TERM_INIT; |
767 | our @TERM_INIT; # should go, prevents async I/O etc. |
768 | our @TERM_EXT; |
768 | our @TERM_EXT; # should go, prevents async I/O etc. |
769 | our @HOOKNAME; |
769 | our @HOOKNAME; |
770 | our %HOOKTYPE = map +($HOOKNAME[$_] => $_), 0..$#HOOKNAME; |
770 | our %HOOKTYPE = map +($HOOKNAME[$_] => $_), 0..$#HOOKNAME; |
771 | our %OPTION; |
771 | our %OPTION; |
772 | |
772 | |
773 | our $LIBDIR; |
773 | our $LIBDIR; |
… | |
… | |
948 | sub parse_resource { |
948 | sub parse_resource { |
949 | my ($term, $name, $isarg, $longopt, $flag, $value) = @_; |
949 | my ($term, $name, $isarg, $longopt, $flag, $value) = @_; |
950 | |
950 | |
951 | $term->scan_meta; |
951 | $term->scan_meta; |
952 | |
952 | |
953 | warn "resourece<@_>\n";#d# |
|
|
954 | |
|
|
955 | my $r = $term->{meta}{resource}; |
953 | my $r = $term->{meta}{resource}; |
956 | while (my ($pattern, $v) = each %$r) { |
954 | while (my ($pattern, $v) = each %$r) { |
957 | $name =~ y/-/./ if $isarg; |
955 | $name =~ y/-/./ if $isarg; |
958 | |
956 | |
959 | if ( |
957 | if ( |
960 | $pattern =~ s/\*$// |
958 | $pattern =~ s/\*$// |
961 | ? $pattern eq substr $name, 0, length $pattern |
959 | ? $pattern eq substr $name, 0, length $pattern |
962 | : $pattern eq $name |
960 | : $pattern eq $name |
963 | ) { |
961 | ) { |
964 | $name = "$urxvt::RESCLASS.$name"; |
962 | $name = "$urxvt::RESCLASS.$name"; |
965 | warn "set option <$name=$value>\n";#d# |
963 | |
966 | #TODO: queue $v->[0] for loading |
964 | push @TERM_EXT, $v->[0]; |
|
|
965 | |
967 | if ($v->[1] eq "boolean") { |
966 | if ($v->[1] eq "boolean") { |
968 | $term->put_option_db ($name, $flag ? "true" : "false"); |
967 | $term->put_option_db ($name, $flag ? "true" : "false"); |
969 | return 1; |
968 | return 1; |
970 | } else { |
969 | } else { |
971 | $term->put_option_db ($name, $value); |
970 | $term->put_option_db ($name, $value); |
… | |
… | |
1502 | |
1501 | |
1503 | This method should only be called during the C<on_start> hook, as there is |
1502 | This method should only be called during the C<on_start> hook, as there is |
1504 | only one resource database per display, and later invocations might return |
1503 | only one resource database per display, and later invocations might return |
1505 | the wrong resources. |
1504 | the wrong resources. |
1506 | |
1505 | |
|
|
1506 | =item $value = $term->x_resource_boolean ($pattern) |
|
|
1507 | |
|
|
1508 | Like C<x_resource>, above, but interprets the string value as a boolean |
|
|
1509 | and returns C<1> for true values, C<0> for false values and C<undef> if |
|
|
1510 | the resource or option isn't specified. |
|
|
1511 | |
|
|
1512 | You should always use this method to parse boolean resources. |
|
|
1513 | |
|
|
1514 | =cut |
|
|
1515 | |
|
|
1516 | sub x_resource_boolean { |
|
|
1517 | my $res = &x_resource; |
|
|
1518 | |
|
|
1519 | $res =~ /^\s*(?:true|yes|on|1)\s*$/i ? 1 : defined $res && 0 |
|
|
1520 | } |
|
|
1521 | |
1507 | =item $success = $term->parse_keysym ($key, $octets) |
1522 | =item $success = $term->parse_keysym ($key, $octets) |
1508 | |
1523 | |
1509 | Adds a key binding exactly as specified via a resource. See the |
1524 | Adds a key binding exactly as specified via a resource. See the |
1510 | C<keysym> resource in the @@RXVT_NAME@@(1) manpage. |
1525 | C<keysym> resource in the @@RXVT_NAME@@(1) manpage. |
1511 | |
1526 | |