diff options
Diffstat (limited to 'prompt_info/old/prompt_info.pl')
-rw-r--r-- | prompt_info/old/prompt_info.pl | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/prompt_info/old/prompt_info.pl b/prompt_info/old/prompt_info.pl new file mode 100644 index 0000000..8ad63ba --- /dev/null +++ b/prompt_info/old/prompt_info.pl @@ -0,0 +1,114 @@ +# Usage: + +# edit your theme, find the line beginning: +# +# prompt = "..." +# +# and add the string `$prompt_additional' somewhere inside it. +# If using the default: prompt = "[$*] ", then a good value would be: +# +# prompt = "[$*$prompt_additional] " +# +# Then place this script to your ~/.irssi/scripts directory (~/.irssi/scripts/) +# and symlink it to the ~/.irssi/scripts/autorun directory (which may need to +# be created first) +# +# You can also load it manually once the theme has been edited via +# +# /script load prompt_info.pl +# +# You will also need to reload your theme with the following command: +# +# /script exec Irssi::themes_reload() +# +# Once loaded, you can modify your prompt content by using the following command: +# +# /set_prompt <string> +# +# You can also use it from other scripts by issuing a signal as follows: +# +# Irssi:signal_emit('change prompt', +# +# report bugs / feature requests to http://github.com/shabble/irssi-scripts/issues +# +# NOTE: it does not appear to be possible to use colours in your prompt at present. +# This is unlikely to change without source-code changes to Irssi itself. + +use strict; +use warnings; + +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 => "prompt_info", + description => "Helper script for dynamically adding text " + . "into the input-bar prompt.", + license => "Public Domain", + changed => "24/7/2010" + ); + +#sub DEBUG () { 1 } +sub DEBUG () { 0 } + + +my $prompt_additional_content = ''; + +Irssi::expando_create('prompt_additional', \&expando_prompt, {}); + +sub expando_prompt { + my ($server, $witem, $arg) = @_; + return $prompt_additional_content; + #return Irssi::current_theme->format_expand("{sb + #$prompt_additional_content}", 0x0f); +} + +sub redraw_prompts { + Irssi::statusbar_items_redraw ('prompt'); + Irssi::statusbar_items_redraw ('prompt_empty'); +} + +sub handle_change_prompt_sig { + my ($text) = @_; + + my $expanded_text = Irssi::parse_special($text); + + print "Got prompt change sig with: $text -> $expanded_text" if DEBUG; + + my $changed = ($expanded_text ne $prompt_additional_content); + + $prompt_additional_content = $expanded_text; + + if ($changed) { + print "Redrawing prompts" if DEBUG; + redraw_prompts(); + } +} + +sub prompt_additional_cmd { + my ($str) = @_; + print "Setting prompt to: $str" if DEBUG; + Irssi::signal_emit('change prompt', $str); +} + +test_abstract_setup(); +Irssi::signal_register({'change prompt' => [qw/string/]}); +Irssi::signal_add('change prompt' => \&handle_change_prompt_sig); + +Irssi::command_bind('set_prompt' => \&prompt_additional_cmd); + +sub test_abstract_setup { + my $theme = Irssi::current_theme(); + my $prompt = $theme->format_expand('{prompt}', 0); + if ($prompt !~ m/\$prompt_additional/) { + print "Prompt_Info: It looks like you haven't modified your theme" + . " to include the \$prompt_additional expando. You will not see" + . " any prompt info messages until you do. See script comments" + . "for details"; + } +} |