ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/mark-urls
(Generate patch)

Comparing rxvt-unicode/src/perl/mark-urls (file contents):
Revision 1.2 by root, Thu Jan 5 01:07:31 2006 UTC vs.
Revision 1.4 by root, Tue Jan 10 21:20:53 2006 UTC

2 2
3# same url as used in "selection" 3# same url as used in "selection"
4my $url = 4my $url =
5 qr{( 5 qr{(
6 (?:https?|ftp|news|mailto|file)://[ab-zA-Z0-9\-\@;\/?:&=%\$_.+!*\x27(),~]+ 6 (?:https?|ftp|news|mailto|file)://[ab-zA-Z0-9\-\@;\/?:&=%\$_.+!*\x27(),~]+
7 [ab-zA-Z0-9\-\@;\/?:&=%\$_+!*\x27(),~] # do not include a trailing dot, its wrong too often 7 [ab-zA-Z0-9\-\@;\/?:&=%\$_+!*\x27()~] # exclude some trailing characters (heuristic)
8 )}x; 8 )}x;
9 9
10sub on_add_lines { 10sub on_line_update {
11 my ($term, $str) = @_; 11 my ($self, $row) = @_;
12 12
13 # fetch the line that has changed
14 my $line = $self->line ($row);
15 my $text = $line->t;
16
17 # find all urls (if any)
13 while ($str =~ $url) { 18 while ($text =~ /$url/g) {
14 # found a url, first output preceding text 19 my $rend = $line->r;
15 $term->scr_add_lines (substr $str, 0, $-[1], ""); 20
16 # then toggle underline 21 # mark all characters as underlined. we _must_ not toggle underline,
17 $term->rstyle ($term->rstyle ^ urxvt::RS_Uline); 22 # as we might get called on an already-marked url.
18 # now output the url 23 $_ |= urxvt::RS_Uline
19 $term->scr_add_lines (substr $str, 0, $+[1] - $-[1], ""); 24 for @{$rend}[ $-[1] .. $+[1] - 1];
20 # toggle undelrine again 25
21 $term->rstyle ($term->rstyle ^ urxvt::RS_Uline); 26 $line->r ($rend);
22 } 27 }
23 28
24 # output trailing text 29 ()
25 $term->scr_add_lines ($str);
26
27 1
28} 30}
29 31
32# needs confgiurability TODO
33#sub on_button_press {
34# my ($self, $event) = @_;
35# my $row = $event->{row};
36# my $col = $event->{col};
37#
38# my $line = $self->line ($row);
39# my $text = $line->t;
40#
41# while($text =~ /$url/g) {
42# #print "... " . ($-[0]
43# if ($-[0] <= $col && $+[0] >= $col) {
44# system "firefox \Q$1\E &";
45# return 1;
46# }
47# }
48# ()
49#}
50

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines