diff --git a/perl/iset.pl b/perl/iset.pl index ff41c88..b9a470d 100644 --- a/perl/iset.pl +++ b/perl/iset.pl @@ -17,6 +17,8 @@ # Set WeeChat and plugins options interactively. # # History: +# 2010-12-25, Sebastien Helleu : +# version 1.2: improve speed of /upgrade when iset buffer is open # 2010-11-21, drubin : # version 1.1.1: fix bugs with cursor position # 2010-11-20, nils_2 : @@ -50,7 +52,7 @@ use strict; -my $version = "1.1.1"; +my $version = "1.2"; my $iset_buffer = ""; my @options_names = (); @@ -351,6 +353,8 @@ sub iset_config_cb if ($iset_buffer ne "") { + return weechat::WEECHAT_RC_OK if (weechat::info_get("weechat_upgrading", "") eq "1"); + my $index = iset_get_option_name_index($option_name); if ($index >= 0) { @@ -411,10 +415,12 @@ sub iset_unset_option sub iset_cmd_cb { my ($data, $buffer, $args) = ($_[0], $_[1], $_[2]); + my $filter_set = 0; if (($args ne "") && (substr($args, 0, 2) ne "**")) { iset_filter($args); + $filter_set = 1; } if ($iset_buffer eq "") @@ -423,6 +429,10 @@ sub iset_cmd_cb iset_get_options(); iset_refresh(); } + else + { + iset_full_refresh() if ($filter_set); + } weechat::buffer_set($iset_buffer, "display", "1"); @@ -644,12 +654,17 @@ sub iset_signal_buffer_switch_cb return weechat::WEECHAT_RC_OK; } -sub iset_item_cb() +sub iset_item_cb { return iset_get_help(); } -sub iset_end() +sub iset_upgrade_done +{ + iset_full_refresh(); +} + +sub iset_end { # when script is unloaded, we hide bar iset_show_bar(0); @@ -674,6 +689,7 @@ weechat::hook_command("iset", "Interactive set", "[f file] [s section] [text]", "text,enter : set a new filter using command line (use '*' to see all options)\n". "alt+'V' : toggle help bar\n", "", "iset_cmd_cb", ""); +weechat::hook_signal("upgrade_done", "iset_upgrade_done", ""); weechat::hook_signal("window_scrolled", "iset_signal_window_scrolled_cb", ""); weechat::hook_signal("buffer_switch", "iset_signal_buffer_switch_cb",""); weechat::hook_config("*", "iset_config_cb", "");