summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorailin-nemui2016-02-06 01:37:15 +0100
committerailin-nemui2016-02-06 01:37:15 +0100
commitb6067e38d6f3ae8580798e6dab1afbbf3fecad5d (patch)
tree7f98a68ab67af25975b42145117b89172b9b58e1
parentb5b1160d94f389e2d3811533a026583d3f1c62cd (diff)
parent96498fe320514e9442f0b1067d8596dca8a65481 (diff)
downloadscripts.irssi.org-b6067e38d6f3ae8580798e6dab1afbbf3fecad5d.tar.bz2
Merge pull request #218 from Juerd/gh-pages
Add autonickprefix.pl sscipt
-rw-r--r--scripts/autonickprefix.pl38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/autonickprefix.pl b/scripts/autonickprefix.pl
new file mode 100644
index 0000000..de32e29
--- /dev/null
+++ b/scripts/autonickprefix.pl
@@ -0,0 +1,38 @@
+use strict;
+
+our $VERSION = '1.00';
+our %IRSSI = (
+ authors => 'Juerd',
+ contact => '#####@juerd.nl',
+ name => 'autonickprefix',
+ description => "Change 'nick: ' prefix if the nick is changed while you're still editing.",
+ license => 'Any OSI',
+);
+
+use Irssi qw(
+ signal_add active_win settings_get_str parse_special
+ gui_input_get_pos gui_input_set gui_input_set_pos
+);
+
+signal_add 'nicklist changed' => sub {
+ my ($chan, $newnick, $oldnick) = @_;
+ $newnick = $newnick->{nick};
+
+ # Ignore other channels than current
+ my $viewing = active_win->{active} or return;
+ $viewing->{_irssi} == $chan->{_irssi} or return;
+
+ my $char = settings_get_str 'completion_char';
+ my $pos = gui_input_get_pos;
+
+ # Incomplete nick could be something else.
+ $pos >= length("$oldnick$char") or return;
+
+ my $delta = length($newnick) - length($oldnick);
+
+ my $input = parse_special '$L';
+ $input =~ s/^\Q$oldnick$char/$newnick$char/ or return;
+
+ gui_input_set $input;
+ gui_input_set_pos $pos + $delta;
+};