# jump_smart_higher.pl for WeeChat by arza , distributed freely and without any warranty, licensed under GPL3 # Jump to a higher buffer with activity, similar to /input smart_jump (alt-a) but jump to a buffer with higher number if possible weechat::register('jump_smart_higher', 'arza ', '0.1', 'GPL3', 'Jump to a higher buffer with activity', '', ''); weechat::hook_command('jump_smart_higher', 'Jump to a higher buffer with activity', '', 'Jump to the buffer that 1. has the highest activity 2. is after current buffer if possible 3. has the lowest number', '', 'command', ''); sub command { my $buffer=$_[1]; my $max_priority = 0; my $min_number = 1000000; my $current_number = weechat::buffer_get_integer($buffer, 'number'); my $number = 0; my $priority = 0; my $infolist = weechat::infolist_get('hotlist', '', ''); while(weechat::infolist_next($infolist)){ $number = weechat::infolist_integer($infolist, 'buffer_number'); $priority = weechat::infolist_integer($infolist, 'priority'); if($priority > $max_priority){ $max_priority = $priority; $min_number = 1000000; } elsif($priority < $max_priority){ next; } if($number < $current_number){ $number += 10000; } if($number < $min_number){ $min_number = $number; } } weechat::infolist_free($infolist); weechat::command($buffer, "/buffer " . $min_number % 10000); }