]> git.sommitrealweird.co.uk Git - twirssi-net-twitter-lite.git/blobdiff - twirssi.pl
1.5.3 - r331 - Add reporting for added/removed friends. Change how tab-complete...
[twirssi-net-twitter-lite.git] / twirssi.pl
index 97a0918fc4ea56908202ef1a29153cfc16e1157f..fe9db3e296ac05b3ff6e71c6811c984c87d70a35 100644 (file)
@@ -11,8 +11,8 @@ $Data::Dumper::Indent = 1;
 
 use vars qw($VERSION %IRSSI);
 
 
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "1.5";
-my ($REV) = '$Rev: 318 $' =~ /(\d+)/;
+$VERSION = "1.5.3";
+my ($REV) = '$Rev: 331 $' =~ /(\d+)/;
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
@@ -245,6 +245,7 @@ sub cmd_login {
                 $p = shift @pass;
                 &cmd_login("$u $p");
             }
                 $p = shift @pass;
                 &cmd_login("$u $p");
             }
+            return;
         }
     } else {
         &notice("/twitter_login requires either a username and password "
         }
     } else {
         &notice("/twitter_login requires either a username and password "
@@ -405,14 +406,20 @@ sub load_friends {
         $friends = $twit->friends( page => $page );
     }
 
         $friends = $twit->friends( page => $page );
     }
 
+    my ($added, $removed) = (0, 0);
     foreach ( keys %new_friends ) {
         next if exists $friends{$_};
         $friends{$_} = time;
     foreach ( keys %new_friends ) {
         next if exists $friends{$_};
         $friends{$_} = time;
+        $added++;
     }
 
     foreach ( keys %friends ) {
     }
 
     foreach ( keys %friends ) {
-        delete $friends{$_} unless exists $new_friends{$_};
+        next if exists $new_friends{$_};
+        delete $friends{$_}; 
+        $removed++;
     }
     }
+
+    return ($added, $removed);
 }
 
 sub get_updates {
 }
 
 sub get_updates {
@@ -436,6 +443,7 @@ sub get_updates {
 
     if ($pid) {    # parent
         Irssi::timeout_add_once( 5000, 'monitor_child', [$filename] );
 
     if ($pid) {    # parent
         Irssi::timeout_add_once( 5000, 'monitor_child', [$filename] );
+        Irssi::pidwait_add($pid);
     } elsif ( defined $pid ) {    # child
         close STDIN;
         close STDOUT;
     } elsif ( defined $pid ) {    # child
         close STDIN;
         close STDOUT;
@@ -449,8 +457,13 @@ sub get_updates {
             &do_updates( $fh, $_, $twits{$_} );
         }
 
             &do_updates( $fh, $_, $twits{$_} );
         }
 
+        my ($added, $removed) = &load_friends;
+        if ($added + $removed) {
+          print $fh "%R***%n Friends list updated: ",
+                    join(", ", sprintf("%d added", $added),
+                               sprintf("%d removed", $removed)), "\n";
+        }
         print $fh "__friends__\n";
         print $fh "__friends__\n";
-        &load_friends;
         foreach ( sort keys %friends ) {
             print $fh "$_ $friends{$_}\n";
         }
         foreach ( sort keys %friends ) {
             print $fh "$_ $friends{$_}\n";
         }
@@ -607,10 +620,11 @@ sub sig_complete {
     my ( $complist, $window, $word, $linestart, $want_space ) = @_;
 
     return unless $linestart =~ /^\/(?:tweet|dm)/;
     my ( $complist, $window, $word, $linestart, $want_space ) = @_;
 
     return unless $linestart =~ /^\/(?:tweet|dm)/;
-    return if $linestart eq '/tweet' and $word !~ s/^@//;
+    my $prefix = $word =~ s/^@//;
+    $prefix = 0 if $linestart eq '/dm' or $linestart eq '/dm_as';
     push @$complist, grep /^\Q$word/i,
       sort { $nicks{$b} <=> $nicks{$a} } keys %nicks;
     push @$complist, grep /^\Q$word/i,
       sort { $nicks{$b} <=> $nicks{$a} } keys %nicks;
-    @$complist = map { "\@$_" } @$complist if $linestart eq '/tweet';
+    @$complist = map { "\@$_" } @$complist if $prefix;
 }
 
 Irssi::settings_add_str( "twirssi", "twitter_window",     "twitter" );
 }
 
 Irssi::settings_add_str( "twirssi", "twitter_window",     "twitter" );