aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2010-10-01 00:06:52 +0000
committerTom Feist <shabble@metavore.org>2010-10-01 00:06:52 +0000
commit739b33c09c0d6ca0aed2e6038739387e88dd9525 (patch)
treebc39e62d1fcc45d02d656b30ae944eacd2698ab7
parentMerge remote branch 'origin/dev' (diff)
downloadirssi-scripts-739b33c09c0d6ca0aed2e6038739387e88dd9525.tar.gz
irssi-scripts-739b33c09c0d6ca0aed2e6038739387e88dd9525.zip
added a brief snippet showing how to intercept 'print text' signals, and updated
the signal docs to describe hte behaviour of 'gui print text'
-rw-r--r--docs/General/Signals.pod6
-rw-r--r--feature-tests/text_intercept.pl33
2 files changed, 39 insertions, 0 deletions
diff --git a/docs/General/Signals.pod b/docs/General/Signals.pod
index 4720bee..2c83262 100644
--- a/docs/General/Signals.pod
+++ b/docs/General/Signals.pod
@@ -1606,6 +1606,12 @@ B<Requires to work properly:>
=back
+This signal is called multiple times for a given print operation, in a fashion
+similar to run-length coding. A single line of printed output which varies in
+colour may emit this signal multiple times, once for each colour change. The
+C<$fg>, C<$bg>, and C<$flags> contain the formatting information for C<$text>.
+
+
=item C<"gui print text finished">
=over
diff --git a/feature-tests/text_intercept.pl b/feature-tests/text_intercept.pl
new file mode 100644
index 0000000..932703e
--- /dev/null
+++ b/feature-tests/text_intercept.pl
@@ -0,0 +1,33 @@
+use strict;
+use Irssi;
+use Irssi::TextUI; # for sbar_items_redraw
+
+use vars qw($VERSION %IRSSI);
+$VERSION = "1.0.1";
+%IRSSI = (
+ authors => "shabble",
+ contact => 'shabble+irssi@metavore.org, shabble@#irssi/Freenode',
+ name => "",
+ description => "",
+ license => "Public Domain",
+ changed => ""
+);
+
+my $ignore_flag = 0;
+
+Irssi::signal_add 'print text' => \&handle_text;
+
+
+sub handle_text {
+ my ($dest, $text, $stripped) = @_;
+
+ return if $ignore_flag;
+
+ Irssi::signal_stop();
+
+ $text =~ s/a/b/g;
+
+ $ignore_flag = 1;
+ $dest->print($text);
+ $ignore_flag = 0;
+}