#! perl sub on_keyboard_command { my ($self, $cmd) = @_; $cmd eq "selection:rot13" and $self->selection (map { y/A-Za-z/N-ZA-Mn-za-m/; $_ } $self->selection); () } my @patterns = ( # urls qr{ ([a-z0-9.+\-]+://[ab-zA-Z0-9\-\@;\/?:&=%\$_.+!*\x27(),]+) }x, # shell-like argument quoting qr{\G\s*( (?: [^"'\\ \t]+ | \\. | " ([^\\"]+ | \\. )* " | ' [^']* ' )+ )}xs, ); sub on_sel_extend { my ($self) = @_; my ($row, $col) = $self->selection_mark; my $line = $self->line ($row); my $offset = $line->offset_of ($row, $col); my $text = $line->t; for my $regex (@patterns) { while ($text =~ /$regex/g) { if ($-[1] <= $offset and $offset <= $+[1]) { $self->selection_beg ($line->coord_of ($-[1])); $self->selection_end ($line->coord_of ($+[1])); return 1; } } } () }