#!perl use strict; use vars qw($VERSION %IRSSI); use Text::Tabs; use Irssi 20011001; $VERSION = "0.0"; %IRSSI = ( authors => "Jeff Epler", contact => "no", name => "jpaste", license => "GPLv2+", description => "Paste without pain", ); sub do_paste { my($data,$server,$witem,$cmd,$pcmd) = @_; if(!$witem) { Irssi::active_win()->print("No active channel or query in this window."); return; } my $pdata=`$pcmd`; local($Text::Tabs::tabstop) = 8; $pdata = Text::Tabs::expand $pdata; my @lines = split '\n', $pdata; my $nlines = scalar @lines; if ($nlines > Irssi::settings_get_int("jpaste_limit") && $data != $nlines) { Irssi::active_win()->print("Long paste; use '/$cmd $nlines' to actually paste"); return } foreach my $line (split '\n', $pdata) { $line =~ s/\s+$//; $server->command("msg " . $witem->{name} . " " . $line) if $line; } } sub ppaste { my($data,$server,$witem) = @_; do_paste($data,$server,$witem,"ppaste", Irssi::settings_get_str("jpaste_pcmd")); } sub bpaste { my($data,$server,$witem) = @_; do_paste($data,$server,$witem,"bpaste", Irssi::settings_get_str("jpaste_bcmd")); } Irssi::settings_add_int('misc', 'jpaste_limit', 4); Irssi::settings_add_str('misc', 'jpaste_pcmd', "xsel -op"); Irssi::settings_add_str('misc', 'jpaste_bcmd', "xsel -ob"); Irssi::command_bind('ppaste', 'ppaste'); Irssi::command_bind('bpaste', 'bpaste');