diff options
Diffstat (limited to 'history-search/expando_test.pl')
-rw-r--r-- | history-search/expando_test.pl | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/history-search/expando_test.pl b/history-search/expando_test.pl new file mode 100644 index 0000000..0d5456a --- /dev/null +++ b/history-search/expando_test.pl @@ -0,0 +1,58 @@ +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 $prompt_additional_content = ''; + +Irssi::expando_create('prompt_additional', \&expando_prompt, {}); + +#TODO: necessary? +#Irssi::signal_add_last 'gui print text finished' => \&redraw_prompts; + +sub expando_prompt { + my ($server, $witem, $arg) = @_; + return $prompt_additional_content; +} + +sub redraw_prompts { + Irssi::statusbar_items_redraw ('prompt'); + Irssi::statusbar_items_redraw ('prompt_empty'); +} + +sub handle_change_prompt_sig { + my ($text) = @_; + + print "Got prompt change sig with: $text"; + + my $expanded_text = Irssi::parse_special($text); + my $changed = ($expanded_text ne $prompt_additional_content); + + $prompt_additional_content = $expanded_text; + + if ($changed) { + print "Redrawing prompts"; + redraw_prompts(); + } +} + +sub prompt_additional_cmd { + my ($str) = @_; + print "Setting prompt to: $str"; + Irssi::signal_emit('change prompt', $str); +} + +Irssi::signal_register({'change prompt' => [qw/string/]}); +Irssi::signal_add('change prompt' => \&handle_change_prompt_sig); + +Irssi::command_bind('set_prompt' => \&prompt_additional_cmd); |