--- rxvt-unicode/src/urxvt.pm 2006/01/07 20:29:28 1.46 +++ rxvt-unicode/src/urxvt.pm 2006/01/08 00:07:18 1.49 @@ -333,6 +333,14 @@ Returns the "current time" (as per the event loop). +=item urxvt::CurrentTime + +=item urxvt::ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, +Mod3Mask, Mod4Mask, Mod5Mask, Button1Mask, Button2Mask, Button3Mask, +Button4Mask, Button5Mask, AnyModifier + +Various constants for use in X events. + =back =head2 RENDITION @@ -391,11 +399,14 @@ package urxvt; +use utf8; use strict; use Scalar::Util (); +use List::Util (); our $TERM; our @HOOKNAME; +our %OPTION; our $LIBDIR; BEGIN { @@ -471,14 +482,21 @@ if ($htype == 0) { # INIT my @dirs = ((split /:/, $TERM->resource ("perl_lib")), "$LIBDIR/perl"); + + my @ext = (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2); - for my $ext (map { split /,/, $TERM->resource ("perl_ext_$_") } 1, 2) { - my @files = grep -f $_, map "$_/$ext", @dirs; - - if (@files) { - register_package extension_package $files[0]; + while (@ext) { + my $ext = shift @ext; + if ($ext eq "default") { + unshift @ext, qw(selection); } else { - warn "perl extension '$ext' not found in perl library search path\n"; + my @files = grep -f $_, map "$_/$ext", @dirs; + + if (@files) { + register_package extension_package $files[0]; + } else { + warn "perl extension '$ext' not found in perl library search path\n"; + } } } } @@ -556,6 +574,22 @@ Destroy the terminal object (close the window, free resources etc.). +=item $isset = $term->option ($optval[, $set]) + +Returns true if the option specified by C<$optval> is enabled, and +optionally change it. All option values are stored by name in the hash +C<%urxvt::OPTION>. Options not enabled in this binary are not in the hash. + +Here is a a likely non-exhaustive list of option names, please see the +source file F to see the actual list: + + borderLess console cursorBlink cursorUnderline hold iconic insecure + intensityStyles jumpScroll loginShell mapAlert meta8 mouseWheelScrollPage + pastableTabs pointerBlank reverseVideo scrollBar scrollBar_floating + scrollBar_right scrollTtyKeypress scrollTtyOutput scrollWithBuffer + secondaryScreen secondaryScroll skipBuiltinGlyphs transparent + tripleclickwords utmpInhibit visualBell + =item $value = $term->resource ($name[, $newval]) Returns the current resource value associated with a given name and @@ -574,8 +608,8 @@ terminal is destroyed, so changing options frequently will eat memory. Here is a a likely non-exhaustive list of resource names, not all of which -are supported in every build, please see the source to see the actual -list: +are supported in every build, please see the source file F +to see the actual list: answerbackstring backgroundPixmap backspace_key boldFont boldItalicFont borderLess color cursorBlink cursorUnderline cutchars delete_key @@ -778,6 +812,15 @@ Return various integers describing terminal characteristics. +=item $modifiermask = $term->ModLevel3Mask + +=item $modifiermask = $term->ModMetaMask + +=item $modifiermask = $term->ModNumLockMask + +Return the modifier masks corresponding to the "ISO Level 3 Shift" (often +AltGr), the meta key (often Alt) and the num lock key, if applicable. + =item $view_start = $term->view_start ([$newvalue]) Returns the negative row number of the topmost line. Minimum value is @@ -985,7 +1028,23 @@ sub add_button { my ($self, $text, $cb) = @_; - $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb }); + $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb, + render => sub { $_[0]{text} }, + }); +} + +sub add_toggle { + my ($self, $text, $cb, $value) = @_; + + my $item; $item = { + type => "button", + text => " $text", + value => $value, + render => sub { ($item->{value} ? "✔" : " ") . $text }, + activate => sub { $cb->($item->{value} = !$item->{value}); }, + }; + + $self->add_item ($item); } sub show {