src/rxvtperl.C
src/perl/simple-overlay-clock
+src/perl/digital-clock
+src/perl/selection
src/gentables
src/gencompose
sub on_init {
my ($self) = @_;
+ # force a refresh every second
$self->{digital_clock_refresh} = urxvt::timer
->new
->start (urxvt::NOW)
->cb (sub {
- $self->{timer}->start ($self->{timer}->at + 1);
+ $self->{digital_clock_refresh}->start ($self->{digital_clock_refresh}->at + 1);
$self->want_refresh;
});
()
}
+# before refreshing: replace upper right with the clock display
sub on_refresh_begin {
my ($self) = @_;
my $time = sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2, 1, 0];
my $xpos = $self->ncol - length $time;
- $self->{digital_clock_rend} = $self->ROW_r (0, [(0x00020000 + urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
+ $self->{digital_clock_rend} = $self->ROW_r (0, [(urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
$self->{digital_clock_text} = $self->ROW_t (0, $time, $xpos);
()
}
+# after refreshing: restore previous screen contents
sub on_refresh_end {
my ($self) = @_;
set_hookname (REFRESH_END);
set_hookname (KEYBOARD_COMMAND);
+ newCONSTSUB (gv_stashpv ("urxvt", 1), "DEFAULT_RSTYLE", newSViv (DEFAULT_RSTYLE));
+
sv_setpv (get_sv ("urxvt::LIBDIR", 1), LIBDIR);
}
RETVAL
void
+rxvt_term::want_refresh ()
+ CODE:
+ THIS->want_refresh = 1;
+
+void
rxvt_term::ROW_t (int row_number, SV *new_text = 0, int start_col = 0)
PPCODE:
{
for (int col = start_col; col < start_col + len; col++)
{
- l.t [col] = wstr [col];
+ l.t [col] = wstr [col - start_col];
l.r [col] = SET_FONT (l.r [col], THIS->fontset [GET_STYLE (l.r [col])]->find_font (l.t [col]));
}
+
+ free (wstr);
}
}
for (int col = start_col; col < start_col + len; col++)
{
- rend_t r = SvIV (*av_fetch (av, col, 1)) & ~RS_fontMask;
+ rend_t r = SvIV (*av_fetch (av, col - start_col, 1)) & ~RS_fontMask;
l.r [col] = SET_FONT (r, THIS->fontset [GET_STYLE (r)]->find_font (l.t [col]));
}
C<0>, which displays the normal terminal contents. Larger values scroll
this many lines into the scrollback buffer.
+=item $term->want_refresh
+
+Requests a screen refresh. At the next opportunity, rxvt-unicode will
+compare the on-screen display with its stored representation. If they
+differ, it redraws the differences.
+
+Used after changing terminal contents to display them.
+
=item $text = $term->ROW_t ($row_number[, $new_text[, $start_col]])
Returns the text of the entire row with number C<$row_number>. Row C<0>