]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
[cmdind] new script to show an indicator when inputting a command
authorAilin Nemui <redacted>
Sun, 25 Nov 2018 16:13:30 +0000 (17:13 +0100)
committerAilin Nemui <redacted>
Sun, 25 Nov 2018 16:13:47 +0000 (17:13 +0100)
scripts/cmdind.pl [new file with mode: 0644]

diff --git a/scripts/cmdind.pl b/scripts/cmdind.pl
new file mode 100644 (file)
index 0000000..b4980a9
--- /dev/null
@@ -0,0 +1,59 @@
+use strict;
+use warnings;
+
+our $VERSION = '1.0'; # cd71e7f6cb97775
+our %IRSSI = (
+    authors     => 'Nei',
+    contact     => 'Nei @ anti@conference.jabber.teamidiot.de',
+    url         => "http://anti.teamidiot.de/",
+    name        => 'cmdind',
+    description => 'Indicator for input prompt if you are inputting a command or text',
+    license     => 'GNU GPLv2 or later',
+   );
+
+# Usage
+# =====
+# This script requires the
+#
+#  uberprompt
+#
+# script to work. If you don't have it yet, /script install uberprompt
+
+# Options
+# =======
+# /set cmdind_text <string>
+# * string : Text to show in prompt when typing a command
+#
+# /set cmdind_warn_text <string>
+# * string : Text to show in prompt when typing a command with spaces in front
+
+use Irssi;
+
+my $cmd_state = 0;
+my ($cmdind_text, $cmdind_warn_text);
+my $cmdchars;
+
+sub check_input {
+    my $inputline = Irssi::parse_special('$L');
+    my $c1 = length $inputline > 0 ? substr $inputline, 0, 1 : '';
+    my $c2 = length $inputline > 1 ? substr $inputline, 1, 1 : '';
+    my $old_state = $cmd_state;
+    my $x_state = length $c1 && (-1 != index $cmdchars, $c1) && $c2 ne ' ';
+    my $warn_state = !$x_state &&
+       $inputline =~ /^\s+(\S)/ && (-1 != index $cmdchars, $1);
+    $cmd_state = $x_state ? 1 : $warn_state ? 2 : 3;
+    if ($cmd_state ne $old_state) {
+       Irssi::signal_emit('change prompt',
+                          $x_state ? $cmdind_text : $warn_state ? $cmdind_warn_text : '', 'UP_POST');
+    }
+}
+sub setup_changed {
+    $cmdchars = Irssi::settings_get_str('cmdchars');
+    $cmdind_text = Irssi::settings_get_str('cmdind_text');
+    $cmdind_warn_text = Irssi::settings_get_str('cmdind_warn_text');
+}
+Irssi::settings_add_str('cmdind', 'cmdind_text', '%gCmd:');
+Irssi::settings_add_str('cmdind', 'cmdind_warn_text', '%RMsg?');
+setup_changed();
+Irssi::signal_add_last('gui key pressed', 'check_input');
+Irssi::signal_add('setup changed', 'setup_changed');
git clone https://git.99rst.org/PROJECT