--- rxvt-unicode/src/urxvt.pm 2014/05/18 18:15:04 1.238 +++ rxvt-unicode/src/urxvt.pm 2014/10/10 14:38:02 1.241 @@ -557,19 +557,21 @@ sub parse_resource { my ($term, $name, $isarg, $longopt, $flag, $value) = @_; - $name =~ y/-/./ if $isarg; - $term->scan_extensions; my $r = $term->{meta}{resource}; keys %$r; # reset iterator - while (my ($pattern, $v) = each %$r) { - if ( - $pattern =~ /\.$/ - ? $pattern eq substr $name, 0, length $pattern - : $pattern eq $name - ) { - $name = "$urxvt::RESCLASS.$name"; + while (my ($k, $v) = each %$r) { + my $pattern = $k; + $pattern =~ y/./-/ if $isarg; + my $prefix = $name; + my $suffix; + if ($pattern =~ /\-$/) { + $prefix = substr $name, 0, length $pattern; + $suffix = substr $name, length $pattern; + } + if ($pattern eq $prefix) { + $name = "$urxvt::RESCLASS.$k$suffix"; push @{ $term->{perl_ext_3} }, $v->[0]; @@ -684,15 +686,14 @@ $ext_arg{$_} = [] for qw(selection option-popup selection-popup readline), - map $_->[0], values %{ $TERM->{meta}{binding} }, - @{ delete $TERM->{perl_ext_3} }; + @{ delete $TERM->{perl_ext_3} }, + map $_->[0], values %{ $TERM->{meta}{binding} }; for ($TERM->_keysym_resources) { next if /^(?:string|command|builtin|builtin-string|perl)/; next unless /^([A-Za-z0-9_\-]+):/; my $ext = $1; - $ext =~ y/-/_/; $ext_arg{$ext} = []; } @@ -1501,7 +1502,7 @@ =item $term->tt_write_user_input ($octets) Like C, but should be used when writing strings in response to -the user pressing a key, to invokes the additional actions requested by +the user pressing a key, to invoke the additional actions requested by the user for that case (C doesn't do that). The typical use case would be inside C hooks.