aboutsummaryrefslogtreecommitdiffstats
path: root/history-search/prompt_info.pl
diff options
context:
space:
mode:
Diffstat (limited to 'history-search/prompt_info.pl')
-rw-r--r--history-search/prompt_info.pl77
1 files changed, 77 insertions, 0 deletions
diff --git a/history-search/prompt_info.pl b/history-search/prompt_info.pl
new file mode 100644
index 0000000..ad5321b
--- /dev/null
+++ b/history-search/prompt_info.pl
@@ -0,0 +1,77 @@
+# 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 add this script to your autorun directory (~/.irssi/scripts/autorun/)
+#
+# You can modify your prompt content by using the '/set_prompt <string>' command,
+# or from scripts by Irssi:signal_emit('change prompt', $string);
+
+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 () { 0 }
+
+my $prompt_additional_content = '';
+
+Irssi::expando_create('prompt_additional', \&expando_prompt, {});
+
+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" if DEBUG;
+
+ 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" if DEBUG;
+ redraw_prompts();
+ }
+}
+
+sub prompt_additional_cmd {
+ my ($str) = @_;
+ print "Setting prompt to: $str" if DEBUG;
+ 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);