1 |
root |
1.1 |
#! perl |
2 |
|
|
|
3 |
root |
1.9 |
#:META:X_RESOURCE:%.:string:autotransform expression |
4 |
|
|
|
5 |
root |
1.1 |
sub msg { |
6 |
|
|
my ($self, $msg) = @_; |
7 |
|
|
|
8 |
|
|
my $overlay = $self->overlay (0, 0, $self->strwidth ($msg), 1); |
9 |
|
|
$overlay->set (0, 0, $msg); |
10 |
root |
1.6 |
my $iow; $iow = urxvt::timer->new->after (2)->cb (sub { |
11 |
root |
1.1 |
undef $overlay; |
12 |
|
|
undef $iow; |
13 |
|
|
}); |
14 |
|
|
} |
15 |
|
|
|
16 |
|
|
sub on_init { |
17 |
|
|
my ($self) = @_; |
18 |
|
|
|
19 |
root |
1.5 |
for (my $idx = 0; defined (my $res = $self->x_resource ("selection-autotransform.$idx")); $idx++) { |
20 |
root |
1.4 |
$res = $self->locale_decode ($res); |
21 |
root |
1.1 |
my $transform = eval "sub { $res }"; |
22 |
|
|
|
23 |
|
|
if ($transform) { |
24 |
|
|
push @{ $self->{transforms} }, $transform; |
25 |
|
|
} else { |
26 |
|
|
warn "$res: $@"; |
27 |
|
|
} |
28 |
|
|
} |
29 |
|
|
|
30 |
root |
1.7 |
$self->{enabled} = 1; |
31 |
|
|
|
32 |
|
|
push @{ $self->{term}{option_popup_hook} }, sub { |
33 |
|
|
("autotransform" => $self->{enabled}, sub { $self->{enabled} = shift }) |
34 |
|
|
}; |
35 |
|
|
|
36 |
root |
1.1 |
() |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
sub on_sel_grab { |
40 |
|
|
my ($self) = @_; |
41 |
|
|
|
42 |
root |
1.7 |
$self->{enabled} |
43 |
|
|
or return; |
44 |
|
|
|
45 |
root |
1.1 |
my $text = $self->selection; |
46 |
|
|
local $_ = $text; |
47 |
|
|
|
48 |
|
|
for my $transform (@{ $self->{transforms} }) { |
49 |
|
|
$transform->(); |
50 |
|
|
if ($text ne $_) { |
51 |
|
|
$self->selection ($_); |
52 |
|
|
s/[\x00-\x1f\x80-\x9f]/ยท/g; |
53 |
|
|
$self->msg ($self->special_encode ("auto-transformed to $_")); |
54 |
root |
1.2 |
last; |
55 |
root |
1.1 |
} |
56 |
|
|
} |
57 |
sf-exg |
1.8 |
|
58 |
root |
1.1 |
() |
59 |
|
|
} |
60 |
|
|
|