ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/confirm-paste
Revision: 1.5
Committed: Sun Jun 10 17:31:53 2012 UTC (11 years, 11 months ago) by root
Branch: MAIN
Changes since 1.4: +11 -0 lines
Log Message:
move perl docs to extensions

File Contents

# User Rev Content
1 sf-exg 1.1 #! perl
2    
3 root 1.5 =head1 NAME
4    
5     confirm-paste - ask for confirmation before pasting multiline text
6    
7     =head1 DESCRPTION
8    
9     Displays a confirmation dialog when a paste containing at least a full
10     line is detected.
11    
12     =cut
13    
14 sf-exg 1.1 sub msg {
15     my ($self, $msg) = @_;
16    
17 sf-exg 1.3 $self->{overlay} = $self->overlay (0, -1, $self->ncol, 2, urxvt::OVERLAY_RSTYLE, 0);
18 sf-exg 1.1 $self->{overlay}->set (0, 0, $msg);
19     }
20    
21     sub on_tt_paste {
22     my ($self, $str) = @_;
23    
24     my $count = ($str =~ tr/\012\015//);
25    
26     return unless $count;
27    
28     $self->{paste} = \$str;
29     $self->msg ("Paste of $count lines, continue? (y/n)");
30 sf-exg 1.4 my $preview = substr $self->locale_decode ($str), 0, $self->ncol;
31     $preview =~ s/\n/\\n/g;
32     $self->{overlay}->set (0, 1, $self->special_encode ($preview));
33 sf-exg 1.1 $self->enable (key_press => \&key_press);
34    
35     1
36     }
37    
38     sub leave {
39     my ($self) = @_;
40    
41     $self->{paste} = undef;
42     delete $self->{overlay};
43     $self->disable ("key_press");
44     }
45    
46     sub key_press {
47     my ($self, $event, $keysym, $string) = @_;
48    
49     if ($keysym == 121) { # y
50     $self->tt_paste (${$self->{paste}});
51     $self->leave;
52     } elsif ($keysym == 110) { # n
53     $self->leave;
54     }
55    
56     1
57     }