… | |
… | |
943 | }; |
943 | }; |
944 | } |
944 | } |
945 | |
945 | |
946 | no warnings 'utf8'; |
946 | no warnings 'utf8'; |
947 | |
947 | |
948 | sub resource { |
948 | sub parse_resource { |
949 | my ($term, $name, $isarg, $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# |
953 | warn "resourece<@_>\n";#d# |
|
|
954 | |
|
|
955 | my $r = $term->{meta}{resource}; |
|
|
956 | while (my ($pattern, $v) = each %$r) { |
|
|
957 | $name =~ y/-/./ if $isarg; |
|
|
958 | |
|
|
959 | if ( |
|
|
960 | $pattern =~ s/\*$// |
|
|
961 | ? $pattern eq substr $name, 0, length $pattern |
|
|
962 | : $pattern eq $name |
|
|
963 | ) { |
|
|
964 | $name = "$urxvt::RESCLASS.$name"; |
|
|
965 | warn "set option <$name=$value>\n";#d# |
|
|
966 | #TODO: queue $v->[0] for loading |
|
|
967 | if ($v->[1] eq "boolean") { |
|
|
968 | $term->put_option_db ($name, $flag ? "true" : "false"); |
|
|
969 | return 1; |
|
|
970 | } else { |
|
|
971 | $term->put_option_db ($name, $value); |
|
|
972 | return 1 + 2; |
|
|
973 | } |
|
|
974 | } |
|
|
975 | } |
954 | |
976 | |
955 | 0 |
977 | 0 |
956 | } |
978 | } |
957 | |
979 | |
958 | sub usage { |
980 | sub usage { |
… | |
… | |
960 | |
982 | |
961 | $term->scan_meta; |
983 | $term->scan_meta; |
962 | |
984 | |
963 | my $r = $term->{meta}{resource}; |
985 | my $r = $term->{meta}{resource}; |
964 | |
986 | |
965 | for my $regex (sort keys %$r) { |
987 | for my $pattern (sort keys %$r) { |
966 | my ($ext, $type, $desc) = @{ $r->{$regex} }; |
988 | my ($ext, $type, $desc) = @{ $r->{$pattern} }; |
967 | |
989 | |
968 | $desc .= " (-pe $ext)"; |
990 | $desc .= " (-pe $ext)"; |
969 | |
991 | |
970 | if ($usage_type == 1) { |
992 | if ($usage_type == 1) { |
|
|
993 | $pattern =~ y/./-/; |
|
|
994 | $pattern =~ s/\*/.../g; |
|
|
995 | |
971 | if ($type eq "boolean") { |
996 | if ($type eq "boolean") { |
972 | urxvt::log sprintf " -%-20.20s %s\n", "/+$regex", $desc; |
997 | urxvt::log sprintf " -%-30s %s\n", "/+$pattern", $desc; |
973 | } else { |
998 | } else { |
974 | urxvt::log sprintf " -%-20.20s %s\n", "$regex $type", $desc; |
999 | urxvt::log sprintf " -%-30s %s\n", "$pattern $type", $desc; |
975 | } |
1000 | } |
976 | } else { |
1001 | } else { |
977 | urxvt::log sprintf " %-19.19s %s\n", "$regex:", $type; |
1002 | urxvt::log sprintf " %-31s %s\n", "$pattern:", $type; |
978 | } |
1003 | } |
979 | } |
1004 | } |
980 | } |
1005 | } |
981 | |
1006 | |
982 | my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; |
1007 | my $verbosity = $ENV{URXVT_PERL_VERBOSITY}; |
… | |
… | |
1193 | =head2 The C<urxvt::anyevent> Class |
1218 | =head2 The C<urxvt::anyevent> Class |
1194 | |
1219 | |
1195 | The sole purpose of this class is to deliver an interface to the |
1220 | The sole purpose of this class is to deliver an interface to the |
1196 | C<AnyEvent> module - any module using it will work inside urxvt without |
1221 | C<AnyEvent> module - any module using it will work inside urxvt without |
1197 | further programming. The only exception is that you cannot wait on |
1222 | further programming. The only exception is that you cannot wait on |
1198 | condition variables, but non-blocking condvar use is ok. What this means |
1223 | condition variables, but non-blocking condvar use is ok. |
1199 | is that you cannot use blocking APIs, but the non-blocking variant should |
1224 | |
1200 | work. |
1225 | In practical terms this means is that you cannot use blocking APIs, but |
|
|
1226 | the non-blocking variant should work. |
1201 | |
1227 | |
1202 | =cut |
1228 | =cut |
1203 | |
1229 | |
1204 | our $VERSION = '5.23'; |
1230 | our $VERSION = '5.23'; |
1205 | |
1231 | |
… | |
… | |
1332 | and $ext ne ".." |
1358 | and $ext ne ".." |
1333 | and open my $fh, "<", "$dir/$ext" |
1359 | and open my $fh, "<", "$dir/$ext" |
1334 | or next; |
1360 | or next; |
1335 | |
1361 | |
1336 | while (<$fh>) { |
1362 | while (<$fh>) { |
1337 | if (/^#:META:RESOURCE:(.*)/) { |
1363 | if (/^#:META:X_RESOURCE:(.*)/) { |
1338 | my ($regex, $type, $desc) = split /:/, $1; |
1364 | my ($pattern, $type, $desc) = split /:/, $1; |
1339 | $regex =~ s/\$\$/$ext/g; # $$ in regex == extension name |
1365 | $pattern =~ s/^%\./$ext./g; # $$ in pattern == extension name |
|
|
1366 | if ($pattern =~ /[^a-zA-Z\*\.]/) { |
|
|
1367 | warn "$dir/$ext: meta resource '$pattern' contains illegal characters (not alphanumeric nor . nor *)\n"; |
|
|
1368 | } else { |
1340 | $meta{resource}{$regex} = [$ext, $type, $desc]; |
1369 | $meta{resource}{$pattern} = [$ext, $type, $desc]; |
|
|
1370 | } |
1341 | } elsif (/^\s*(?:#|$)/) { |
1371 | } elsif (/^\s*(?:#|$)/) { |
1342 | # skip other comments and empty lines |
1372 | # skip other comments and empty lines |
1343 | } else { |
1373 | } else { |
1344 | last; # stop parsing on first non-empty non-comment line |
1374 | last; # stop parsing on first non-empty non-comment line |
1345 | } |
1375 | } |