From ae2fe673d167d2199420799b2041c286433c4f56 Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Tue, 19 Nov 2013 08:46:35 +0100 Subject: [PATCH] add weechat --- Makefile | 2 +- weechat/.gitignore | 2 + weechat/alias.conf | 38 + weechat/aspell.conf | 19 + weechat/charset.conf | 11 + weechat/irc.conf | 231 ++++++ weechat/iset.conf | 27 + weechat/logger.conf | 26 + weechat/perl/autoload/iset.pl | 1 + weechat/perl/iset.pl | 1398 +++++++++++++++++++++++++++++++++ weechat/plugins.conf | 13 + weechat/relay.conf | 37 + weechat/rmodifier.conf | 14 + weechat/script.conf | 48 ++ weechat/script/plugins.xml.gz | Bin 0 -> 88019 bytes weechat/weechat.conf | 564 +++++++++++++ weechat/weechat.log | 35 + weechat/xfer.conf | 37 + 18 files changed, 2502 insertions(+), 1 deletion(-) create mode 100644 weechat/.gitignore create mode 100644 weechat/alias.conf create mode 100644 weechat/aspell.conf create mode 100644 weechat/charset.conf create mode 100644 weechat/irc.conf create mode 100644 weechat/iset.conf create mode 100644 weechat/logger.conf create mode 120000 weechat/perl/autoload/iset.pl create mode 100644 weechat/perl/iset.pl create mode 100644 weechat/plugins.conf create mode 100644 weechat/relay.conf create mode 100644 weechat/rmodifier.conf create mode 100644 weechat/script.conf create mode 100644 weechat/script/plugins.xml.gz create mode 100644 weechat/weechat.conf create mode 100644 weechat/weechat.log create mode 100644 weechat/xfer.conf diff --git a/Makefile b/Makefile index 7f95dc1..2db38d0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ APATH := $(realpath .) FILES := bin -DOTFILES := aliases bash* conky* flexget git* vim* xbindkeysrc Xmodmap Xresources xprofile zsh* +DOTFILES := aliases bash* conky* flexget git* vim* weechat xbindkeysrc Xmodmap Xresources xprofile zsh* CONFIGFILES := retroarch compton.conf mimeo.conf .PHONY: install $(FILES) $(DOTFILES) $(CONFIGFILES) diff --git a/weechat/.gitignore b/weechat/.gitignore new file mode 100644 index 0000000..1127856 --- /dev/null +++ b/weechat/.gitignore @@ -0,0 +1,2 @@ +logs +weechat.log diff --git a/weechat/alias.conf b/weechat/alias.conf new file mode 100644 index 0000000..a8018d0 --- /dev/null +++ b/weechat/alias.conf @@ -0,0 +1,38 @@ +# +# alias.conf -- weechat v0.4.1 +# + +[cmd] +AAWAY = "allserv /away" +AME = "allchan /me" +AMSG = "allchan /msg *" +ANICK = "allserv /nick" +BYE = "quit" +C = "buffer clear" +CHAT = "dcc chat" +CL = "buffer clear" +CLOSE = "buffer close" +EXIT = "quit" +IG = "ignore" +J = "join" +K = "kick" +KB = "kickban" +LEAVE = "part" +M = "msg" +MUB = "unban *" +N = "names" +Q = "query" +REDRAW = "window refresh" +SAY = "msg *" +SIGNOFF = "quit" +T = "topic" +UB = "unban" +UMODE = "mode $nick" +V = "command core version" +W = "who" +WC = "window merge" +WI = "whois" +WII = "whois $1 $1" +WW = "whowas" + +[completion] diff --git a/weechat/aspell.conf b/weechat/aspell.conf new file mode 100644 index 0000000..2cf1f7d --- /dev/null +++ b/weechat/aspell.conf @@ -0,0 +1,19 @@ +# +# aspell.conf -- weechat v0.4.1 +# + +[look] +color = lightred + +[check] +commands = "ame,amsg,away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic" +default_dict = "" +during_search = off +enabled = off +real_time = off +suggestions = -1 +word_min_length = 2 + +[dict] + +[option] diff --git a/weechat/charset.conf b/weechat/charset.conf new file mode 100644 index 0000000..050c5ec --- /dev/null +++ b/weechat/charset.conf @@ -0,0 +1,11 @@ +# +# charset.conf -- weechat v0.4.1 +# + +[default] +decode = "iso-8859-1" +encode = "" + +[decode] + +[encode] diff --git a/weechat/irc.conf b/weechat/irc.conf new file mode 100644 index 0000000..a90bc37 --- /dev/null +++ b/weechat/irc.conf @@ -0,0 +1,231 @@ +# +# irc.conf -- weechat v0.4.1 +# + +[look] +buffer_switch_autojoin = on +buffer_switch_join = on +color_nicks_in_names = off +color_nicks_in_nicklist = on +color_nicks_in_server_messages = on +color_pv_nick_like_channel = on +ctcp_time_format = "%a, %d %b %Y %T %z" +display_away = local +display_ctcp_blocked = on +display_ctcp_reply = on +display_ctcp_unknown = on +display_host_join = on +display_host_join_local = on +display_host_quit = on +display_join_message = "329,332,333,366" +display_old_topic = on +display_pv_away_once = on +display_pv_back = on +highlight_channel = "$nick" +highlight_pv = "$nick" +highlight_server = "$nick" +highlight_tags = "irc_privmsg,irc_notice" +item_away_message = on +item_channel_modes_hide_key = off +item_display_server = buffer_plugin +item_nick_modes = on +item_nick_prefix = on +msgbuffer_fallback = current +new_channel_position = none +new_pv_position = none +nick_color_force = "" +nick_color_stop_chars = "_|[" +nick_completion_smart = speakers +nick_mode = prefix +nick_mode_empty = off +nicks_hide_password = "nickserv" +notice_as_pv = auto +notify_tags_ison = "notify_message" +notify_tags_whois = "notify_message" +part_closes_buffer = off +pv_buffer = independent +raw_messages = 256 +server_buffer = merge_with_core +smart_filter = on +smart_filter_delay = 5 +smart_filter_join = on +smart_filter_join_unmask = 30 +smart_filter_nick = on +smart_filter_quit = on +topic_strip_colors = off + +[color] +input_nick = lightcyan +item_away = yellow +item_channel_modes = default +item_lag_counting = default +item_lag_finished = yellow +message_join = green +message_quit = red +mirc_remap = "1,-1:darkgray" +nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue" +notice = green +reason_quit = default +topic_new = white +topic_old = darkgray + +[network] +alternate_nick = on +autoreconnect_delay_growing = 2 +autoreconnect_delay_max = 1800 +colors_receive = on +colors_send = on +lag_check = 60 +lag_min_show = 500 +lag_reconnect = 0 +lag_refresh_interval = 1 +notify_check_ison = 1 +notify_check_whois = 5 +send_unknown_commands = off +whois_double_nick = on + +[msgbuffer] + +[ctcp] + +[ignore] + +[server_default] +addresses = "" +anti_flood_prio_high = 2 +anti_flood_prio_low = 2 +autoconnect = off +autojoin = "" +autoreconnect = on +autoreconnect_delay = 10 +autorejoin = off +autorejoin_delay = 30 +away_check = 0 +away_check_max_nicks = 25 +capabilities = "" +command = "" +command_delay = 0 +connection_timeout = 60 +default_msg_part = "WeeChat %v" +default_msg_quit = "WeeChat %v" +ipv6 = on +local_hostname = "" +nicks = "ramsi,ramsi1,ramsi2,ramsi3,ramsi4" +notify = "" +password = "" +proxy = "" +realname = "" +sasl_mechanism = dh-blowfish +sasl_password = "" +sasl_timeout = 15 +sasl_username = "" +ssl = off +ssl_cert = "" +ssl_dhkey_size = 2048 +ssl_priorities = "NORMAL" +ssl_verify = on +username = "ramsi" + +[server] +freenode.addresses = "chat.freenode.net/6667" +freenode.proxy +freenode.ipv6 +freenode.ssl +freenode.ssl_cert +freenode.ssl_priorities +freenode.ssl_dhkey_size +freenode.ssl_verify +freenode.password +freenode.capabilities +freenode.sasl_mechanism +freenode.sasl_username = "Ram-Z" +freenode.sasl_password = "r[$qvWi'D>$ynR8H2FH+\-T7L_xp*Z" +freenode.sasl_timeout +freenode.autoconnect +freenode.autoreconnect +freenode.autoreconnect_delay +freenode.nicks = "Ram-Z,Ram-Z_,Ram-Z__" +freenode.username = "Ram-Z" +freenode.realname +freenode.local_hostname +freenode.command +freenode.command_delay +freenode.autojoin = "#chakra-devel,#chakra,#chakra-fr,#chakra-ccr" +freenode.autorejoin +freenode.autorejoin_delay +freenode.connection_timeout +freenode.anti_flood_prio_high +freenode.anti_flood_prio_low +freenode.away_check +freenode.away_check_max_nicks +freenode.default_msg_part +freenode.default_msg_quit +freenode.notify +znc-freenode.addresses = "tardis.uni.cx/60665" +znc-freenode.proxy +znc-freenode.ipv6 +znc-freenode.ssl = on +znc-freenode.ssl_cert +znc-freenode.ssl_priorities +znc-freenode.ssl_dhkey_size +znc-freenode.ssl_verify = off +znc-freenode.password = "f`@HEzA[;OI&sQBX_uUrY28dXU>;sx" +znc-freenode.capabilities +znc-freenode.sasl_mechanism +znc-freenode.sasl_username +znc-freenode.sasl_password +znc-freenode.sasl_timeout +znc-freenode.autoconnect = on +znc-freenode.autoreconnect +znc-freenode.autoreconnect_delay +znc-freenode.nicks +znc-freenode.username = "ramsi/freenode" +znc-freenode.realname +znc-freenode.local_hostname +znc-freenode.command +znc-freenode.command_delay +znc-freenode.autojoin +znc-freenode.autorejoin +znc-freenode.autorejoin_delay +znc-freenode.connection_timeout +znc-freenode.anti_flood_prio_high +znc-freenode.anti_flood_prio_low +znc-freenode.away_check +znc-freenode.away_check_max_nicks +znc-freenode.default_msg_part +znc-freenode.default_msg_quit +znc-freenode.notify +znc-bitlbee.addresses = "tardis.uni.cx/60665" +znc-bitlbee.proxy +znc-bitlbee.ipv6 +znc-bitlbee.ssl = on +znc-bitlbee.ssl_cert +znc-bitlbee.ssl_priorities +znc-bitlbee.ssl_dhkey_size +znc-bitlbee.ssl_verify = off +znc-bitlbee.password = "f`@HEzA[;OI&sQBX_uUrY28dXU>;sx" +znc-bitlbee.capabilities +znc-bitlbee.sasl_mechanism +znc-bitlbee.sasl_username +znc-bitlbee.sasl_password +znc-bitlbee.sasl_timeout +znc-bitlbee.autoconnect = on +znc-bitlbee.autoreconnect +znc-bitlbee.autoreconnect_delay +znc-bitlbee.nicks +znc-bitlbee.username = "ramsi/bitlbee" +znc-bitlbee.realname +znc-bitlbee.local_hostname +znc-bitlbee.command +znc-bitlbee.command_delay +znc-bitlbee.autojoin +znc-bitlbee.autorejoin +znc-bitlbee.autorejoin_delay +znc-bitlbee.connection_timeout +znc-bitlbee.anti_flood_prio_high +znc-bitlbee.anti_flood_prio_low +znc-bitlbee.away_check +znc-bitlbee.away_check_max_nicks +znc-bitlbee.default_msg_part +znc-bitlbee.default_msg_quit +znc-bitlbee.notify diff --git a/weechat/iset.conf b/weechat/iset.conf new file mode 100644 index 0000000..6030649 --- /dev/null +++ b/weechat/iset.conf @@ -0,0 +1,27 @@ +# +# iset.conf -- weechat v0.4.1 +# + +[color] +bg_selected = red +help_default_value = green +help_option_name = white +help_text = default +option = default +option_selected = white +type = brown +type_selected = yellow +value = cyan +value_selected = lightcyan +value_undef = green +value_undef_selected = lightgreen + +[help] +show_help_bar = on +show_help_extra_info = on +show_plugin_description = off + +[look] +scroll_horiz = 10 +show_current_line = on +value_search_char = "=" diff --git a/weechat/logger.conf b/weechat/logger.conf new file mode 100644 index 0000000..b395104 --- /dev/null +++ b/weechat/logger.conf @@ -0,0 +1,26 @@ +# +# logger.conf -- weechat v0.4.1 +# + +[look] +backlog = 20 + +[color] +backlog_end = darkgray +backlog_line = darkgray + +[file] +auto_log = on +flush_delay = 120 +info_lines = off +mask = "$plugin.$name.weechatlog" +name_lower_case = on +nick_prefix = "" +nick_suffix = "" +path = "%h/logs/" +replacement_char = "_" +time_format = "%Y-%m-%d %H:%M:%S" + +[level] + +[mask] diff --git a/weechat/perl/autoload/iset.pl b/weechat/perl/autoload/iset.pl new file mode 120000 index 0000000..2746e0d --- /dev/null +++ b/weechat/perl/autoload/iset.pl @@ -0,0 +1 @@ +../iset.pl \ No newline at end of file diff --git a/weechat/perl/iset.pl b/weechat/perl/iset.pl new file mode 100644 index 0000000..7d72847 --- /dev/null +++ b/weechat/perl/iset.pl @@ -0,0 +1,1398 @@ +# +# Copyright (C) 2008-2013 Sebastien Helleu +# Copyright (C) 2010-2012 Nils Görs +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Set WeeChat and plugins options interactively. +# +# History: +# +# 2013-08-03, Sebastien Helleu : +# version 3.2: allow "q" as input in iset buffer to close it +# 2013-07-14, Sebastien Helleu : +# version 3.1: remove unneeded calls to iset_refresh() in mouse callback +# (faster mouse actions when lot of options are displayed), +# fix bug when clicking on a line after the last option displayed +# 2013-04-30, arza : +# version 3.0: simpler title, fix refresh on unset +# 2012-12-16, nils_2 : +# version 2.9: fix focus window with iset buffer on mouse click +# 2012-08-25, nils_2 : +# version 2.8: most important key and mouse bindings for iset buffer added to title-bar (idea The-Compiler) +# 2012-07-31, nils_2 : +# version 2.7: add combined option and value search (see /help iset) +# : add exact value search (see /help iset) +# : fix problem with metacharacter in value search +# : fix use of uninitialized value for unset option and reset value of option +# 2012-07-25, nils_2 : +# version 2.6: switch to iset buffer (if existing) when command /iset is called with arguments +# 2012-03-17, Sebastien Helleu : +# version 2.5: fix check of sections when creating config file +# 2012-03-09, Sebastien Helleu : +# version 2.4: fix reload of config file +# 2012-02-02, nils_2 : +# version 2.3: fixed: refresh problem with new search results and cursor was outside window. +# : add: new option "current_line" in title bar +# version 2.2: fixed: refresh error when toggling plugins description +# 2011-11-05, nils_2 : +# version 2.1: use own config file (iset.conf), fix own help color (used immediately) +# 2011-10-16, nils_2 : +# version 2.0: add support for left-mouse-button and more sensitive mouse gesture (for integer/color options) +# add help text for mouse support +# 2011-09-20, Sebastien Helleu : +# version 1.9: add mouse support, fix iset buffer, fix errors on first load under FreeBSD +# 2011-07-21, nils_2 : +# version 1.8: added: option "show_plugin_description" (alt+p) +# fixed: typos in /help iset (lower case for alt+'x' keys) +# 2011-05-29, nils_2 : +# version 1.7: added: version check for future needs +# added: new option (scroll_horiz) and usage of scroll_horiz function (weechat >= 0.3.6 required) +# fixed: help_bar did not pop up immediately using key-shortcut +# 2011-02-19, nils_2 : +# version 1.6: added: display of all possible values in help bar (show_help_extra_info) +# fixed: external user options never loaded when starting iset first time +# 2011-02-13, Sebastien Helleu : +# version 1.5: use new help format for command arguments +# 2011-02-03, nils_2 : +# version 1.4: fixed: restore value filter after /upgrade using buffer local variable. +# 2011-01-14, nils_2 : +# version 1.3: added function to search for values (option value_search_char). +# code optimization. +# 2010-12-26, Sebastien Helleu : +# version 1.2: improve speed of /upgrade when iset buffer is open, +# restore filter used after /upgrade using buffer local variable, +# use /iset filter argument if buffer is open. +# 2010-11-21, drubin : +# version 1.1.1: fix bugs with cursor position +# 2010-11-20, nils_2 : +# version 1.1: cursor position set to value +# 2010-08-03, Sebastien Helleu : +# version 1.0: move misplaced call to infolist_free() +# 2010-02-02, rettub : +# version 0.9: turn all the help stuff off if option 'show_help_bar' is 'off', +# new key binding - to toggle help_bar and help stuff on/off +# 2010-01-30, nils_2 : +# version 0.8: fix error when option does not exist +# 2010-01-24, Sebastien Helleu : +# version 0.7: display iset bar only on iset buffer +# 2010-01-22, nils_2 and drubin: +# version 0.6: add description in a bar, fix singular/plural bug in title bar, +# fix selected line when switching buffer +# 2009-06-21, Sebastien Helleu : +# version 0.5: fix bug with iset buffer after /upgrade +# 2009-05-02, Sebastien Helleu : +# version 0.4: sync with last API changes +# 2009-01-04, Sebastien Helleu : +# version 0.3: open iset buffer when /iset command is executed +# 2009-01-04, Sebastien Helleu : +# version 0.2: use null values for options, add colors, fix refresh bugs, +# use new keys to reset/unset options, sort options by name, +# display number of options in buffer's title +# 2008-11-05, Sebastien Helleu : +# version 0.1: first official version +# 2008-04-19, Sebastien Helleu : +# script creation + +use strict; + +my $PRGNAME = "iset"; +my $VERSION = "3.2"; +my $DESCR = "Interactive Set for configuration options"; +my $AUTHOR = "Sebastien Helleu "; +my $LICENSE = "GPL3"; +my $LANG = "perl"; +my $ISET_CONFIG_FILE_NAME = "iset"; + +my $iset_config_file; +my $iset_buffer = ""; +my $wee_version_number = 0; +my @iset_focus = (); +my @options_names = (); +my @options_types = (); +my @options_values = (); +my @options_is_null = (); +my $option_max_length = 0; +my $current_line = 0; +my $filter = "*"; +my $description = ""; +my $options_name_copy = ""; +my $iset_filter_title = ""; +# search modes: 0 = index() on value, 1 = grep() on value, 2 = grep() on option, 3 = grep on option & value +my $search_mode = 2; +my $search_value = ""; +my $help_text_keys = "alt + space: toggle, +/-: increase/decrease, enter: change, ir: reset, iu: unset, v: toggle help bar"; +my $help_text_mouse = "Mouse: left: select, right: toggle/set, right + drag left/right: increase/decrease"; +my %options_iset; + +my %mouse_keys = ("\@chat(perl.$PRGNAME):button1" => "hsignal:iset_mouse", + "\@chat(perl.$PRGNAME):button2*" => "hsignal:iset_mouse", + "\@chat(perl.$PRGNAME):wheelup" => "/repeat 5 /iset **up", + "\@chat(perl.$PRGNAME):wheeldown" => "/repeat 5 /iset **down"); + + +sub iset_title +{ + if ($iset_buffer ne "") + { + my $current_line_counter = ""; + $current_line_counter = ($current_line + 1) . "/" if (weechat::config_boolean($options_iset{"show_current_line"}) == 1); + my $show_filter = ""; + if ($search_mode eq 0) + { + $iset_filter_title = "(value) "; + $show_filter = $search_value; + if ( substr($show_filter,0,1) eq weechat::config_string($options_iset{"value_search_char"}) ) + { + $show_filter = substr($show_filter,1,length($show_filter)); + } + } + elsif ($search_mode eq 1) + { + $iset_filter_title = "(value) "; + $show_filter = "*".$search_value."*"; + } + elsif ($search_mode eq 2) + { + $iset_filter_title = ""; + $filter = "*" if ($filter eq ""); + $show_filter = $filter; + } + elsif ($search_mode eq 3) + { + $iset_filter_title = "(option) "; + $show_filter = $filter + .weechat::color("default") + ." / (value) " + .weechat::color("yellow") + ."*".$search_value."*"; + } + weechat::buffer_set($iset_buffer, "title", + $iset_filter_title + .weechat::color("yellow") + .$show_filter + .weechat::color("default")." | " + .$current_line_counter + .@options_names + ." | " + .$help_text_keys + ." | " + .$help_text_mouse); + } +} + +sub iset_create_filter +{ + $filter = $_[0]; + if ( $search_mode == 3 ) + { + my @cmd_array = split(/ /,$filter); + my $array_count = @cmd_array; + $filter = $cmd_array[0]; + $filter = $cmd_array[0] . " " . $cmd_array[1] if ( $array_count >2 ); + } + $filter = "$1.*" if ($filter =~ /f (.*)/); # search file + $filter = "*.$1.*" if ($filter =~ /s (.*)/); # search section + if ((substr($filter, 0, 1) ne "*") && (substr($filter, -1, 1) ne "*")) + { + $filter = "*".$filter."*"; + } + if ($iset_buffer ne "") + { + weechat::buffer_set($iset_buffer, "localvar_set_iset_filter", $filter); + } +} + +sub iset_buffer_input +{ + my ($data, $buffer, $string) = ($_[0], $_[1], $_[2]); + if ($string eq "q") + { + weechat::buffer_close($buffer); + return weechat::WEECHAT_RC_OK; + } + $search_value = ""; + my @cmd_array = split(/ /,$string); + my $array_count = @cmd_array; + my $string2 = substr($string, 0, 1); + if ($string2 eq weechat::config_string($options_iset{"value_search_char"}) + or (defined $cmd_array[0] and $cmd_array[0] eq weechat::config_string($options_iset{"value_search_char"}).weechat::config_string($options_iset{"value_search_char"})) ) + { + $search_mode = 1; + $search_value = substr($string, 1); + iset_get_values($search_value); + if ($iset_buffer ne "") + { + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $search_value); + } + } + else + { + $search_mode = 2; + if ( $array_count >= 2 and $cmd_array[0] ne "f" or $cmd_array[0] ne "s") + { + if ( defined $cmd_array[1] and substr($cmd_array[1], 0, 1) eq weechat::config_string($options_iset{"value_search_char"}) + or defined $cmd_array[2] and substr($cmd_array[2], 0, 1) eq weechat::config_string($options_iset{"value_search_char"}) ) + { + $search_mode = 3; + $search_value = substr($cmd_array[1], 1); # cut value_search_char + $search_value = substr($cmd_array[2], 1) if ( $array_count > 2); # cut value_search_char + } + } + if ( $search_mode == 3) + { + iset_create_filter($string); + iset_get_options($search_value); + }else + { + iset_create_filter($string); + iset_get_options(""); + } + } + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + weechat::buffer_clear($buffer); + $current_line = 0; + iset_refresh(); + return weechat::WEECHAT_RC_OK; +} + +sub iset_buffer_close +{ + $iset_buffer = ""; + + return weechat::WEECHAT_RC_OK; +} + +sub iset_init +{ + $current_line = 0; + $iset_buffer = weechat::buffer_search($LANG, $PRGNAME); + if ($iset_buffer eq "") + { + $iset_buffer = weechat::buffer_new($PRGNAME, "iset_buffer_input", "", "iset_buffer_close", ""); + } + else + { + my $new_filter = weechat::buffer_get_string($iset_buffer, "localvar_iset_filter"); + $search_mode = weechat::buffer_get_string($iset_buffer, "localvar_iset_search_mode"); + $search_value = weechat::buffer_get_string($iset_buffer, "localvar_iset_search_value"); + $filter = $new_filter if ($new_filter ne ""); + } + if ($iset_buffer ne "") + { + weechat::buffer_set($iset_buffer, "type", "free"); + iset_title(); + weechat::buffer_set($iset_buffer, "key_bind_ctrl-L", "/iset **refresh"); + weechat::buffer_set($iset_buffer, "key_bind_meta2-A", "/iset **up"); + weechat::buffer_set($iset_buffer, "key_bind_meta2-B", "/iset **down"); + weechat::buffer_set($iset_buffer, "key_bind_meta2-23~", "/iset **left"); + weechat::buffer_set($iset_buffer, "key_bind_meta2-24~" , "/iset **right"); + weechat::buffer_set($iset_buffer, "key_bind_meta- ", "/iset **toggle"); + weechat::buffer_set($iset_buffer, "key_bind_meta-+", "/iset **incr"); + weechat::buffer_set($iset_buffer, "key_bind_meta--", "/iset **decr"); + weechat::buffer_set($iset_buffer, "key_bind_meta-imeta-r", "/iset **reset"); + weechat::buffer_set($iset_buffer, "key_bind_meta-imeta-u", "/iset **unset"); + weechat::buffer_set($iset_buffer, "key_bind_meta-ctrl-J", "/iset **set"); + weechat::buffer_set($iset_buffer, "key_bind_meta-ctrl-M", "/iset **set"); + weechat::buffer_set($iset_buffer, "key_bind_meta-meta2-1~", "/iset **scroll_top"); + weechat::buffer_set($iset_buffer, "key_bind_meta-meta2-4~", "/iset **scroll_bottom"); + weechat::buffer_set($iset_buffer, "key_bind_meta-v", "/iset **toggle_help"); + weechat::buffer_set($iset_buffer, "key_bind_meta-p", "/iset **toggle_show_plugin_desc"); + weechat::buffer_set($iset_buffer, "localvar_set_iset_filter", $filter); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $search_value); + } +} + +sub iset_get_options +{ + my $var_value = $_[0]; + $var_value = "" if (not defined $var_value); + $var_value = lc($var_value); + $search_value = $var_value; + @iset_focus = (); + @options_names = (); + @options_types = (); + @options_values = (); + @options_is_null = (); + $option_max_length = 0; + my %options_internal = (); + my $i = 0; + my $key; + my $iset_struct; + my %iset_struct; + + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $var_value) if ($search_mode == 3); + + my $infolist = weechat::infolist_get("option", "", $filter); + while (weechat::infolist_next($infolist)) + { + $key = sprintf("%08d", $i); + my $name = weechat::infolist_string($infolist, "full_name"); + next if (weechat::config_boolean($options_iset{"show_plugin_description"}) == 0 and index ($name, "plugins.desc.") != -1); + my $type = weechat::infolist_string($infolist, "type"); + my $value = weechat::infolist_string($infolist, "value"); + my $is_null = weechat::infolist_integer($infolist, "value_is_null"); + if ($search_mode == 3) + { + my $value = weechat::infolist_string($infolist, "value"); + if ( grep /\Q$var_value/,lc($value) ) + { + $options_internal{$name}{"type"} = $type; + $options_internal{$name}{"value"} = $value; + $options_internal{$name}{"is_null"} = $is_null; + $option_max_length = length($name) if (length($name) > $option_max_length); + $iset_struct{$key} = $options_internal{$name}; + push(@iset_focus, $iset_struct{$key}); + } + } + else + { + $options_internal{$name}{"type"} = $type; + $options_internal{$name}{"value"} = $value; + $options_internal{$name}{"is_null"} = $is_null; + $option_max_length = length($name) if (length($name) > $option_max_length); + $iset_struct{$key} = $options_internal{$name}; + push(@iset_focus, $iset_struct{$key}); + } + $i++; + } + weechat::infolist_free($infolist); + + foreach my $name (sort keys %options_internal) + { + push(@options_names, $name); + push(@options_types, $options_internal{$name}{"type"}); + push(@options_values, $options_internal{$name}{"value"}); + push(@options_is_null, $options_internal{$name}{"is_null"}); + } +} + +sub iset_get_values +{ + my $var_value = $_[0]; + $var_value = lc($var_value); + if (substr($var_value,0,1) eq weechat::config_string($options_iset{"value_search_char"}) and $var_value ne weechat::config_string($options_iset{"value_search_char"})) + { + $var_value = substr($var_value,1,length($var_value)); + $search_mode = 0; + } + iset_search_values($var_value,$search_mode); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $var_value); + $search_value = $var_value; +} +sub iset_search_values +{ + my ($var_value,$search_mode) = ($_[0],$_[1]); + @options_names = (); + @options_types = (); + @options_values = (); + @options_is_null = (); + $option_max_length = 0; + my %options_internal = (); + my $i = 0; + my $infolist = weechat::infolist_get("option", "", "*"); + while (weechat::infolist_next($infolist)) + { + my $name = weechat::infolist_string($infolist, "full_name"); + next if (weechat::config_boolean($options_iset{"show_plugin_description"}) == 0 and index ($name, "plugins.desc.") != -1); + my $type = weechat::infolist_string($infolist, "type"); + my $is_null = weechat::infolist_integer($infolist, "value_is_null"); + my $value = weechat::infolist_string($infolist, "value"); + if ($search_mode) + { + if ( grep /\Q$var_value/,lc($value) ) + { + $options_internal{$name}{"type"} = $type; + $options_internal{$name}{"value"} = $value; + $options_internal{$name}{"is_null"} = $is_null; + $option_max_length = length($name) if (length($name) > $option_max_length); + } + } + else + { +# if ($value =~ /\Q$var_value/si) + if (lc($value) eq $var_value) + { + $options_internal{$name}{"type"} = $type; + $options_internal{$name}{"value"} = $value; + $options_internal{$name}{"is_null"} = $is_null; + $option_max_length = length($name) if (length($name) > $option_max_length); + } + } + $i++; + } + weechat::infolist_free($infolist); + foreach my $name (sort keys %options_internal) + { + push(@options_names, $name); + push(@options_types, $options_internal{$name}{"type"}); + push(@options_values, $options_internal{$name}{"value"}); + push(@options_is_null, $options_internal{$name}{"is_null"}); + } +} + +sub iset_refresh_line +{ + if ($iset_buffer ne "") + { + my $y = $_[0]; + if ($y <= $#options_names) + { + return if (! defined($options_types[$y])); + my $format = sprintf("%%s%%-%ds %%s %%-7s %%s %%s%%s%%s", $option_max_length); + my $around = ""; + $around = "\"" if ((!$options_is_null[$y]) && ($options_types[$y] eq "string")); + + my $color1 = weechat::color(weechat::config_color($options_iset{"color_option"})); + my $color2 = weechat::color(weechat::config_color($options_iset{"color_type"})); + my $color3 = ""; + if ($options_is_null[$y]) + { + $color3 = weechat::color(weechat::config_color($options_iset{"color_value_undef"})); + } + else + { + $color3 = weechat::color(weechat::config_color($options_iset{"color_value"})); + } + if ($y == $current_line) + { + $color1 = weechat::color(weechat::config_color($options_iset{"color_option_selected"}).",".weechat::config_color($options_iset{"color_bg_selected"})); + $color2 = weechat::color(weechat::config_color($options_iset{"color_type_selected"}).",".weechat::config_color($options_iset{"color_bg_selected"})); + if ($options_is_null[$y]) + { + $color3 = weechat::color(weechat::config_color($options_iset{"color_value_undef_selected"}).",".weechat::config_color($options_iset{"color_bg_selected"})); + } + else + { + $color3 = weechat::color(weechat::config_color($options_iset{"color_value_selected"}).",".weechat::config_color($options_iset{"color_bg_selected"})); + } + } + my $value = $options_values[$y]; + $value = "(undef)" if ($options_is_null[$y]); + my $strline = sprintf($format, + $color1, $options_names[$y], + $color2, $options_types[$y], + $color3, $around, $value, $around); + weechat::print_y($iset_buffer, $y, $strline); + } + } +} + +sub iset_refresh +{ + iset_title(); + if (($iset_buffer ne "") && ($#options_names >= 0)) + { + foreach my $y (0 .. $#options_names) + { + iset_refresh_line($y); + } + } + + weechat::bar_item_update("isetbar_help") if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1); +} + +sub iset_full_refresh +{ + $iset_buffer = weechat::buffer_search($LANG, $PRGNAME); + if ($iset_buffer ne "") + { + weechat::buffer_clear($iset_buffer) unless defined $_[0]; # iset_full_refresh(1) does a full refresh without clearing buffer + # search for "*" in $filter. + if ($filter =~ m/\*/ and $search_mode == 2) + { + iset_get_options(""); + } + else + { + if ($search_mode == 0) + { + $search_value = "=" . $search_value; + iset_get_values($search_value); + } + elsif ($search_mode == 1) + { + iset_get_values($search_value); + } + elsif ($search_mode == 3) + { + iset_create_filter($filter); + iset_get_options($search_value); + } + } + if (weechat::config_boolean($options_iset{"show_plugin_description"}) == 1) + { + iset_set_current_line($current_line); + }else + { + $current_line = $#options_names if ($current_line > $#options_names); + } + iset_refresh(); + weechat::command($iset_buffer, "/window refresh"); + } +} + +sub iset_set_current_line +{ + my $new_current_line = $_[0]; + if ($new_current_line >= 0) + { + my $old_current_line = $current_line; + $current_line = $new_current_line; + $current_line = $#options_names if ($current_line > $#options_names); + if ($old_current_line != $current_line) + { + iset_refresh_line($old_current_line); + iset_refresh_line($current_line); + weechat::bar_item_update("isetbar_help") if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1); + } + } +} + +sub iset_signal_window_scrolled_cb +{ + my ($data, $signal, $signal_data) = ($_[0], $_[1], $_[2]); + if ($iset_buffer ne "") + { + my $infolist = weechat::infolist_get("window", $signal_data, ""); + if (weechat::infolist_next($infolist)) + { + if (weechat::infolist_pointer($infolist, "buffer") eq $iset_buffer) + { + my $old_current_line = $current_line; + my $new_current_line = $current_line; + my $start_line_y = weechat::infolist_integer($infolist, "start_line_y"); + my $chat_height = weechat::infolist_integer($infolist, "chat_height"); + $new_current_line += $chat_height if ($new_current_line < $start_line_y); + $new_current_line -= $chat_height if ($new_current_line >= $start_line_y + $chat_height); + $new_current_line = $start_line_y if ($new_current_line < $start_line_y); + $new_current_line = $start_line_y + $chat_height - 1 if ($new_current_line >= $start_line_y + $chat_height); + iset_set_current_line($new_current_line); + } + } + weechat::infolist_free($infolist); + } + + return weechat::WEECHAT_RC_OK; +} + +sub iset_get_window_number +{ + if ($iset_buffer ne "") + { + my $window = weechat::window_search_with_buffer($iset_buffer); + return "-window ".weechat::window_get_integer ($window, "number")." " if ($window ne ""); + } + return ""; +} + +sub iset_check_line_outside_window +{ + if ($iset_buffer ne "") + { + undef my $infolist; + if ($wee_version_number >= 0x00030500) + { + my $window = weechat::window_search_with_buffer($iset_buffer); + $infolist = weechat::infolist_get("window", $window, "") if $window; + } + else + { + $infolist = weechat::infolist_get("window", "", "current"); + } + if ($infolist) + { + if (weechat::infolist_next($infolist)) + { + my $start_line_y = weechat::infolist_integer($infolist, "start_line_y"); + my $chat_height = weechat::infolist_integer($infolist, "chat_height"); + my $window_number = ""; + if ($wee_version_number >= 0x00030500) + { + $window_number = "-window ".weechat::infolist_integer($infolist, "number")." "; + } + if ($start_line_y > $current_line) + { + weechat::command($iset_buffer, "/window scroll ".$window_number."-".($start_line_y - $current_line)); + } + else + { + if ($start_line_y <= $current_line - $chat_height) + { + weechat::command($iset_buffer, "/window scroll ".$window_number."+".($current_line - $start_line_y - $chat_height + 1)); + + } + } + } + weechat::infolist_free($infolist); + } + } +} + +sub iset_get_option_name_index +{ + my $option_name = $_[0]; + my $index = 0; + while ($index <= $#options_names) + { + return -1 if ($options_names[$index] gt $option_name); + return $index if ($options_names[$index] eq $option_name); + $index++; + } + return -1; +} + +sub iset_config_cb +{ + my ($data, $option_name, $value) = ($_[0], $_[1], $_[2]); + + 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) + { + # refresh info about changed option + my $infolist = weechat::infolist_get("option", "", $option_name); + if ($infolist) + { + weechat::infolist_next($infolist); + if (weechat::infolist_fields($infolist)) + { + $options_types[$index] = weechat::infolist_string($infolist, "type"); + $options_values[$index] = weechat::infolist_string($infolist, "value"); + $options_is_null[$index] = weechat::infolist_integer($infolist, "value_is_null"); + iset_refresh_line($index); + iset_title() if ($option_name eq "iset.look.show_current_line"); + } + else + { + iset_full_refresh(1); # if not found, refresh fully without clearing buffer + weechat::print_y($iset_buffer, $#options_names + 1, ""); + } + weechat::infolist_free($infolist); + } + } + else + { + iset_full_refresh() if ($option_name ne "weechat.bar.isetbar.hidden"); + } + } + + return weechat::WEECHAT_RC_OK; +} + +sub iset_set_option +{ + my ($option, $value) = ($_[0],$_[1]); + if (defined $option and defined $value) + { + $option = weechat::config_get($option); + weechat::config_option_set($option, $value, 1) if ($option ne ""); + } +} + +sub iset_reset_option +{ + my $option = $_[0]; + if (defined $option) + { + $option = weechat::config_get($option); + weechat::config_option_reset($option, 1) if ($option ne ""); + } +} + +sub iset_unset_option +{ + my $option = $_[0]; + if (defined $option) + { + $option = weechat::config_get($option); + weechat::config_option_unset($option) if ($option ne ""); + } +} + + +sub iset_cmd_cb +{ + my ($data, $buffer, $args) = ($_[0], $_[1], $_[2]); + my $filter_set = 0; +# $search_value = ""; + if (($args ne "") && (substr($args, 0, 2) ne "**")) + { + my @cmd_array = split(/ /,$args); + my $array_count = @cmd_array; + if (substr($args, 0, 1) eq weechat::config_string($options_iset{"value_search_char"}) + or (defined $cmd_array[0] and $cmd_array[0] eq weechat::config_string($options_iset{"value_search_char"}).weechat::config_string($options_iset{"value_search_char"})) ) + { + $search_mode = 1; + my $search_value = substr($args, 1); # cut value_search_char + if ($iset_buffer ne "") + { + weechat::buffer_clear($iset_buffer); + weechat::command($iset_buffer, "/window refresh"); + } + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $search_value); + iset_init(); + iset_get_values($search_value); + iset_refresh(); + weechat::buffer_set($iset_buffer, "display", "1"); +# $filter = $var_value; + return weechat::WEECHAT_RC_OK; + } + else + { + # f/s option =value + # option =value + $search_mode = 2; + if ( $array_count >= 2 and $cmd_array[0] ne "f" or $cmd_array[0] ne "s") + { + if ( defined $cmd_array[1] and substr($cmd_array[1], 0, 1) eq weechat::config_string($options_iset{"value_search_char"}) + or defined $cmd_array[2] and substr($cmd_array[2], 0, 1) eq weechat::config_string($options_iset{"value_search_char"}) ) + { + $search_mode = 3; + $search_value = substr($cmd_array[1], 1); # cut value_search_char + $search_value = substr($cmd_array[2], 1) if ( $array_count > 2); # cut value_search_char + } + } + iset_create_filter($args); + $filter_set = 1; + my $ptrbuf = weechat::buffer_search($LANG, $PRGNAME); + if ($ptrbuf eq "") + { + iset_init(); + iset_get_options($search_value); + iset_full_refresh(); + weechat::buffer_set(weechat::buffer_search($LANG, $PRGNAME), "display", "1"); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $search_value); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + return weechat::WEECHAT_RC_OK; + } + else + { + iset_get_options($search_value); + iset_full_refresh(); + weechat::buffer_set($ptrbuf, "display", "1"); + } + } + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_mode", $search_mode); + weechat::buffer_set($iset_buffer, "localvar_set_iset_search_value", $search_value); + } + if ($iset_buffer eq "") + { + iset_init(); + iset_get_options(""); + iset_refresh(); + } + else + { +# iset_get_options($search_value); + iset_full_refresh() if ($filter_set); + } + + if ($args eq "") + { + weechat::buffer_set($iset_buffer, "display", "1"); + } + else + { + if ($args eq "**refresh") + { + iset_full_refresh(); + } + if ($args eq "**up") + { + if ($current_line > 0) + { + $current_line--; + iset_refresh_line($current_line + 1); + iset_refresh_line($current_line); + iset_check_line_outside_window(); + } + } + if ($args eq "**down") + { + if ($current_line < $#options_names) + { + $current_line++; + iset_refresh_line($current_line - 1); + iset_refresh_line($current_line); + iset_check_line_outside_window(); + } + } + if ($args eq "**left" && $wee_version_number >= 0x00030600) + { + weechat::command($iset_buffer, "/window scroll_horiz ".iset_get_window_number()."-".weechat::config_integer($options_iset{"scroll_horiz"})."%"); + } + if ($args eq "**right" && $wee_version_number >= 0x00030600) + { + weechat::command($iset_buffer, "/window scroll_horiz ".iset_get_window_number().weechat::config_integer($options_iset{"scroll_horiz"})."%"); + } + if ($args eq "**scroll_top") + { + my $old_current_line = $current_line; + $current_line = 0; + iset_refresh_line ($old_current_line); + iset_refresh_line ($current_line); + iset_title(); + weechat::command($iset_buffer, "/window scroll_top ".iset_get_window_number()); + } + if ($args eq "**scroll_bottom") + { + my $old_current_line = $current_line; + $current_line = $#options_names; + iset_refresh_line ($old_current_line); + iset_refresh_line ($current_line); + iset_title(); + weechat::command($iset_buffer, "/window scroll_bottom ".iset_get_window_number()); + } + if ($args eq "**toggle") + { + if ($options_types[$current_line] eq "boolean") + { + iset_set_option($options_names[$current_line], "toggle"); + } + } + if ($args eq "**incr") + { + if (($options_types[$current_line] eq "integer") + || ($options_types[$current_line] eq "color")) + { + iset_set_option($options_names[$current_line], "++1"); + } + } + if ($args eq "**decr") + { + if (($options_types[$current_line] eq "integer") + || ($options_types[$current_line] eq "color")) + { + iset_set_option($options_names[$current_line], "--1"); + } + } + if ($args eq "**reset") + { + iset_reset_option($options_names[$current_line]); + } + if ($args eq "**unset") + { + iset_unset_option($options_names[$current_line]); + } + if ($args eq "**toggle_help") + { + if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1) + { + weechat::config_option_set($options_iset{"show_help_bar"},0,1); + iset_show_bar(0); + } + else + { + weechat::config_option_set($options_iset{"show_help_bar"},1,1); + iset_show_bar(1); + } + } + if ($args eq "**toggle_show_plugin_desc") + { + if (weechat::config_boolean($options_iset{"show_plugin_description"}) == 1) + { + weechat::config_option_set($options_iset{"show_plugin_description"},0,1); + iset_full_refresh(); + iset_check_line_outside_window(); + iset_title(); + } + else + { + weechat::config_option_set($options_iset{"show_plugin_description"},1,1); + iset_full_refresh(); + iset_check_line_outside_window(); + iset_title(); + } + } + if ($args eq "**set") + { + my $quote = ""; + my $value = $options_values[$current_line]; + if ($options_is_null[$current_line]) + { + $value = "null"; + } + else + { + $quote = "\"" if ($options_types[$current_line] eq "string"); + } + weechat::buffer_set($iset_buffer, "input", "/set ".$options_names[$current_line]." ".$quote.$value.$quote); + weechat::command($iset_buffer, "/input move_beginning_of_line"); + weechat::command($iset_buffer, "/input move_next_word"); + weechat::command($iset_buffer, "/input move_next_word"); + weechat::command($iset_buffer, "/input move_next_char"); + weechat::command($iset_buffer, "/input move_next_char") if ($quote ne ""); + } + } + weechat::bar_item_update("isetbar_help") if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1); + return weechat::WEECHAT_RC_OK; +} + +sub iset_get_help +{ + my ($redraw) = ($_[0]); + + return '' if (weechat::config_boolean($options_iset{"show_help_bar"}) == 0); + + if (not defined $options_names[$current_line]) + { + return "No option selected. Set a new filter using command line (use '*' to see all options)"; + } + if ($options_name_copy eq $options_names[$current_line] and not defined $redraw) + { + return $description; + } + $options_name_copy = $options_names[$current_line]; + my $optionlist =""; + $optionlist = weechat::infolist_get("option", "", $options_names[$current_line]); + weechat::infolist_next($optionlist); + my $full_name = weechat::infolist_string($optionlist,"full_name"); + my $option_desc = ""; + my $option_default_value = ""; + my $option_range = ""; + my $possible_values = ""; + my $re = qq(\Q$full_name); + if (grep (/^$re$/,$options_names[$current_line])) + { + $option_desc = weechat::infolist_string($optionlist, "description_nls"); + $option_desc = weechat::infolist_string($optionlist, "description") if ($option_desc eq ""); + $option_desc = "No help found" if ($option_desc eq ""); + $option_default_value = weechat::infolist_string($optionlist, "default_value"); + $possible_values = weechat::infolist_string($optionlist, "string_values") if (weechat::infolist_string($optionlist, "string_values") ne ""); + if ((weechat::infolist_string($optionlist, "type") eq "integer") && ($possible_values eq "")) + { + $option_range = weechat::infolist_integer($optionlist, "min") + ." .. ".weechat::infolist_integer($optionlist, "max"); + } + } + weechat::infolist_free($optionlist); + iset_title(); + + $description = weechat::color(weechat::config_color($options_iset{"color_help_option_name"})).$options_names[$current_line] + .weechat::color("bar_fg").": " + .weechat::color(weechat::config_color($options_iset{"color_help_text"})).$option_desc; + + # show additional infos like default value and possible values + + if (weechat::config_boolean($options_iset{"show_help_extra_info"}) == 1) + { + $description .= + weechat::color("bar_delim")." [" + .weechat::color("bar_fg")."default: " + .weechat::color("bar_delim")."\"" + .weechat::color(weechat::config_color($options_iset{"color_help_default_value"})).$option_default_value + .weechat::color("bar_delim")."\""; + if ($option_range ne "") + { + $description .= weechat::color("bar_fg").", values: ".$option_range; + } + if ($possible_values ne "") + { + $possible_values =~ s/\|/", "/g; # replace '|' to '", "' + $description .= weechat::color("bar_fg").", values: ". "\"" . $possible_values . "\""; + + } + $description .= weechat::color("bar_delim")."]"; + } + return $description; +} + +sub iset_check_condition_isetbar_cb +{ + my ($data, $modifier, $modifier_data, $string) = ($_[0], $_[1], $_[2], $_[3]); + my $buffer = weechat::window_get_pointer($modifier_data, "buffer"); + if ($buffer ne "") + { + if ((weechat::buffer_get_string($buffer, "plugin") eq $LANG) + && (weechat::buffer_get_string($buffer, "name") eq $PRGNAME)) + { + return "1"; + } + } + return "0"; +} + +sub iset_show_bar +{ + my $show = $_[0]; + my $barhidden = weechat::config_get("weechat.bar.isetbar.hidden"); + if ($barhidden) + { + if ($show) + { + if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1) + { + if (weechat::config_boolean($barhidden)) + { + weechat::config_option_set($barhidden, 0, 1); + } + } + } + else + { + if (!weechat::config_boolean($barhidden)) + { + weechat::config_option_set($barhidden, 1, 1); + } + } + } +} + +sub iset_signal_buffer_switch_cb +{ + my $buffer_pointer = $_[2]; + my $show_bar = 0; + $show_bar = 1 if (weechat::buffer_get_integer($iset_buffer, "num_displayed") > 0); + iset_show_bar($show_bar); + iset_check_line_outside_window() if ($buffer_pointer eq $iset_buffer); + return weechat::WEECHAT_RC_OK; +} + +sub iset_item_cb +{ + return iset_get_help(); +} + +sub iset_upgrade_ended +{ + iset_full_refresh(); +} + +sub iset_end +{ + # when script is unloaded, we hide bar + iset_show_bar(0); +} + +# -------------------------------[ mouse support ]------------------------------------- + +sub hook_focus_iset_cb +{ + my %info = %{$_[1]}; + my $bar_item_line = int($info{"_bar_item_line"}); + undef my $hash; + if (($info{"_buffer_name"} eq $PRGNAME) && $info{"_buffer_plugin"} eq $LANG && ($bar_item_line >= 0) && ($bar_item_line <= $#iset_focus)) + { + $hash = $iset_focus[$bar_item_line]; + } + else + { + $hash = {}; + my $hash_focus = $iset_focus[0]; + foreach my $key (keys %$hash_focus) + { + $hash->{$key} = "?"; + } + } + return $hash; +} + +# _chat_line_y contains selected line +sub iset_hsignal_mouse_cb +{ + my ($data, $signal, %hash) = ($_[0], $_[1], %{$_[2]}); + + if ($hash{"_buffer_name"} eq $PRGNAME && ($hash{"_buffer_plugin"} eq $LANG)) + { + if ($hash{"_key"} eq "button1") + { + iset_set_current_line($hash{"_chat_line_y"}); + } + elsif ($hash{"_key"} eq "button2") + { + if ($options_types[$hash{"_chat_line_y"}] eq "boolean") + { + iset_set_option($options_names[$hash{"_chat_line_y"}], "toggle"); + iset_set_current_line($hash{"_chat_line_y"}); + } + elsif ($options_types[$hash{"_chat_line_y"}] eq "string") + { + iset_set_current_line($hash{"_chat_line_y"}); + weechat::command("", "/$PRGNAME **set"); + } + } + elsif ($hash{"_key"} eq "button2-gesture-left" or $hash{"_key"} eq "button2-gesture-left-long") + { + if ($options_types[$hash{"_chat_line_y"}] eq "integer" or ($options_types[$hash{"_chat_line_y"}] eq "color")) + { + iset_set_current_line($hash{"_chat_line_y"}); + my $distance = distance($hash{"_chat_line_x"},$hash{"_chat_line_x2"}); + weechat::command("", "/repeat $distance /$PRGNAME **decr"); + } + } + elsif ($hash{"_key"} eq "button2-gesture-right" or $hash{"_key"} eq "button2-gesture-right-long") + { + if ($options_types[$hash{"_chat_line_y"}] eq "integer" or ($options_types[$hash{"_chat_line_y"}] eq "color")) + { + iset_set_current_line($hash{"_chat_line_y"}); + my $distance = distance($hash{"_chat_line_x"},$hash{"_chat_line_x2"}); + weechat::command("", "/repeat $distance /$PRGNAME **incr"); + } + } + } + window_switch(); +} + +sub window_switch +{ + my $current_window = weechat::current_window(); + my $dest_window = weechat::window_search_with_buffer(weechat::buffer_search("perl","iset")); + return 0 if ($dest_window eq "" or $current_window eq $dest_window); + + my $infolist = weechat::infolist_get("window", $dest_window, ""); + weechat::infolist_next($infolist); + my $number = weechat::infolist_integer($infolist, "number"); + weechat::infolist_free($infolist); + weechat::command("","/window " . $number); +} + +sub distance +{ + my ($x1,$x2) = ($_[0], $_[1]); + my $distance; + $distance = $x1 - $x2; + $distance = abs($distance); + if ($distance > 0) + { + use integer; + $distance = $distance / 3; + $distance = 1 if ($distance == 0); + } + elsif ($distance == 0) + { + $distance = 1; + } + return $distance; +} + +# -----------------------------------[ config ]--------------------------------------- + +sub iset_config_init +{ + $iset_config_file = weechat::config_new($ISET_CONFIG_FILE_NAME,"iset_config_reload_cb",""); + return if ($iset_config_file eq ""); + + # section "color" + my $section_color = weechat::config_new_section($iset_config_file,"color", 0, 0, "", "", "", "", "", "", "", "", "", ""); + if ($section_color eq "") + { + weechat::config_free($iset_config_file); + return; + } + $options_iset{"color_option"} = weechat::config_new_option( + $iset_config_file, $section_color, + "option", "color", "Color for option name in iset buffer", "", 0, 0, + "default", "default", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_option_selected"} = weechat::config_new_option( + $iset_config_file, $section_color, + "option_selected", "color", "Color for selected option name in iset buffer", "", 0, 0, + "white", "white", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_type"} = weechat::config_new_option( + $iset_config_file, $section_color, + "type", "color", "Color for option type (integer, boolean, string)", "", 0, 0, + "brown", "brown", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_type_selected"} = weechat::config_new_option( + $iset_config_file, $section_color, + "type_selected", "color", "Color for selected option type (integer, boolean, string)", "", 0, 0, + "yellow", "yellow", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_value"} = weechat::config_new_option( + $iset_config_file, $section_color, + "value", "color", "Color for option value", "", 0, 0, + "cyan", "cyan", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_value_selected"} = weechat::config_new_option( + $iset_config_file, $section_color, + "value_selected", "color", "Color for selected option value", "", 0, 0, + "lightcyan", "lightcyan", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_value_undef"} = weechat::config_new_option( + $iset_config_file, $section_color, + "value_undef", "color", "Color for option value undef", "", 0, 0, + "green", "green", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_value_undef_selected"} = weechat::config_new_option( + $iset_config_file, $section_color, + "value_undef_selected", "color", "Color for selected option value undef", "", 0, 0, + "lightgreen", "lightgreen", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_bg_selected"} = weechat::config_new_option( + $iset_config_file, $section_color, + "bg_selected", "color", "Background color for current selected option", "", 0, 0, + "red", "red", 0, "", "", "full_refresh_cb", "", "", ""); + $options_iset{"color_help_option_name"} = weechat::config_new_option( + $iset_config_file, $section_color, + "help_option_name", "color", "Color for option name in help-bar", "", 0, 0, + "white", "white", 0, "", "", "bar_refresh", "", "", ""); + $options_iset{"color_help_text"} = weechat::config_new_option( + $iset_config_file, $section_color, + "help_text", "color", "Color for option description in help-bar", "", 0, 0, + "default", "default", 0, "", "", "bar_refresh", "", "", ""); + $options_iset{"color_help_default_value"} = weechat::config_new_option( + $iset_config_file, $section_color, + "help_default_value", "color", "Color for default option value in help-bar", "", 0, 0, + "green", "green", 0, "", "", "bar_refresh", "", "", ""); + + # section "help" + my $section_help = weechat::config_new_section($iset_config_file,"help", 0, 0, "", "", "", "", "", "", "", "", "", ""); + if ($section_help eq "") + { + weechat::config_free($iset_config_file); + return; + } + $options_iset{"show_help_bar"} = weechat::config_new_option( + $iset_config_file, $section_help, + "show_help_bar", "boolean", "Show help bar", "", 0, 0, + "on", "on", 0, "", "", "toggle_help_cb", "", "", ""); + $options_iset{"show_help_extra_info"} = weechat::config_new_option( + $iset_config_file, $section_help, + "show_help_extra_info", "boolean", "Show additional information in help bar (default value, max./min. value) ", "", 0, 0, + "on", "on", 0, "", "", "", "", "", ""); + $options_iset{"show_plugin_description"} = weechat::config_new_option( + $iset_config_file, $section_help, + "show_plugin_description", "boolean", "Show plugin description in iset buffer", "", 0, 0, + "off", "off", 0, "", "", "full_refresh_cb", "", "", ""); + + # section "look" + my $section_look = weechat::config_new_section($iset_config_file, "look", 0, 0, "", "", "", "", "", "", "", "", "", ""); + if ($section_look eq "") + { + weechat::config_free($iset_config_file); + return; + } + $options_iset{"value_search_char"} = weechat::config_new_option( + $iset_config_file, $section_look, + "value_search_char", "string", "Trigger char to tell iset to search for value instead of option (for example: =red)", "", 0, 0, + "=", "=", 0, "", "", "", "", "", ""); + $options_iset{"scroll_horiz"} = weechat::config_new_option( + $iset_config_file, $section_look, + "scroll_horiz", "integer", "scroll content of iset buffer n%", "", 1, 100, + "10", "10", 0, "", "", "", "", "", ""); + $options_iset{"show_current_line"} = weechat::config_new_option( + $iset_config_file, $section_look, + "show_current_line", "boolean", "show current line in title bar.", "", 0, 0, + "on", "on", 0, "", "", "", "", "", ""); +} + +sub iset_config_reload_cb +{ + my ($data,$config_file) = ($_[0], $_[1]); + return weechat::config_reload($config_file) +} + +sub iset_config_read +{ + return weechat::config_read($iset_config_file) if ($iset_config_file ne ""); +} + +sub iset_config_write +{ + return weechat::config_write($iset_config_file) if ($iset_config_file ne ""); +} + +sub full_refresh_cb +{ + iset_full_refresh(); + return weechat::WEECHAT_RC_OK; +} + +sub bar_refresh +{ + iset_get_help(1); + weechat::bar_item_update("isetbar_help") if (weechat::config_boolean($options_iset{"show_help_bar"}) == 1); + return weechat::WEECHAT_RC_OK; +} + +sub toggle_help_cb +{ + my $value = weechat::config_boolean($options_iset{"show_help_bar"}); + iset_show_bar($value); + return weechat::WEECHAT_RC_OK; +} + +# -----------------------------------[ main ]----------------------------------------- + +weechat::register($PRGNAME, $AUTHOR, $VERSION, $LICENSE, + $DESCR, "iset_end", ""); + +$wee_version_number = weechat::info_get("version_number", "") || 0; + +iset_config_init(); +iset_config_read(); + +weechat::hook_command($PRGNAME, "Interactive set", "f || s
|| [=][=]", + "f file : show options for a file\n". + "s section: show options for a section\n". + "text : show options with 'text' in name\n". + weechat::config_string($options_iset{"value_search_char"})."text : show options with 'text' in value\n". + weechat::config_string($options_iset{"value_search_char"}).weechat::config_string($options_iset{"value_search_char"})."text : show options with exact 'text' in value\n\n". + "Keys for iset buffer:\n". + "f11,f12 : move iset content left/right\n". + "up,down : move one option up/down\n". + "pgup,pdwn : move one page up/down\n". + "home,end : move to first/last option\n". + "ctrl+'L' : refresh options and screen\n". + "alt+space : toggle boolean on/off\n". + "alt+'+' : increase value (for integer or color)\n". + "alt+'-' : decrease value (for integer or color)\n". + "alt+'i',alt+'r': reset value of option\n". + "alt+'i',alt+'u': unset option\n". + "alt+enter : set new value for option (edit it with command line)\n". + "text,enter : set a new filter using command line (use '*' to see all options)\n". + "alt+'v' : toggle help bar on/off\n". + "alt+'p' : toggle option \"show_plugin_description\" on/off\n". + "\n". + "Mouse actions:\n". + "wheel up/down : move cursor up/down\n". + "left button : select an option from list\n". + "right button : toggle boolean (on/off) or set a new value for option (edit it with command line)\n". + "right button + drag left/right: increase/decrease value (for integer or color)\n". + "\n". + "Examples:\n". + " show options for file 'weechat'\n". + " /iset f weechat\n". + " show options for file 'irc'\n". + " /iset f irc\n". + " show options for section 'look'\n". + " /iset s look\n". + " show all options with text 'nicklist' in name\n". + " /iset nicklist\n". + " show all values which contain 'red'. ('" . weechat::config_string($options_iset{"value_search_char"}) . "' is a trigger char).\n". + " /iset ". weechat::config_string($options_iset{"value_search_char"}) ."red\n". + " show all values which hit 'off'. ('" . weechat::config_string($options_iset{"value_search_char"}) . weechat::config_string($options_iset{"value_search_char"}) . "' is a trigger char).\n". + " /iset ". weechat::config_string($options_iset{"value_search_char"}) . weechat::config_string($options_iset{"value_search_char"}) ."off\n". + " show options for file 'weechat' which contains value 'off'\n". + " /iset f weechat ".weechat::config_string($options_iset{"value_search_char"})."off\n". + "", + "", "iset_cmd_cb", ""); +weechat::hook_signal("upgrade_ended", "iset_upgrade_ended", ""); +weechat::hook_signal("window_scrolled", "iset_signal_window_scrolled_cb", ""); +weechat::hook_signal("buffer_switch", "iset_signal_buffer_switch_cb",""); +weechat::bar_item_new("isetbar_help", "iset_item_cb", ""); +weechat::bar_new("isetbar", "on", "0", "window", "", "top", "horizontal", + "vertical", "3", "3", "default", "cyan", "default", "1", + "isetbar_help"); +weechat::hook_modifier("bar_condition_isetbar", "iset_check_condition_isetbar_cb", ""); +weechat::hook_config("*", "iset_config_cb", ""); +$iset_buffer = weechat::buffer_search($LANG, $PRGNAME); +iset_init() if ($iset_buffer ne ""); + +if ($wee_version_number >= 0x00030600) +{ + weechat::hook_focus("chat", "hook_focus_iset_cb", ""); + weechat::hook_hsignal($PRGNAME."_mouse", "iset_hsignal_mouse_cb", ""); + weechat::key_bind("mouse", \%mouse_keys); +} diff --git a/weechat/plugins.conf b/weechat/plugins.conf new file mode 100644 index 0000000..ccf8689 --- /dev/null +++ b/weechat/plugins.conf @@ -0,0 +1,13 @@ +# +# plugins.conf -- weechat v0.4.1 +# + +[var] +fifo.fifo = "on" +lua.check_license = "off" +perl.check_license = "off" +python.check_license = "off" +ruby.check_license = "off" +tcl.check_license = "off" + +[desc] diff --git a/weechat/relay.conf b/weechat/relay.conf new file mode 100644 index 0000000..9597141 --- /dev/null +++ b/weechat/relay.conf @@ -0,0 +1,37 @@ +# +# relay.conf -- weechat v0.4.1 +# + +[look] +auto_open_buffer = on +raw_messages = 256 + +[color] +client = cyan +status_active = lightblue +status_auth_failed = lightred +status_connecting = yellow +status_disconnected = lightred +status_waiting_auth = brown +text = default +text_bg = default +text_selected = white + +[network] +allowed_ips = "" +bind_address = "" +compression_level = 6 +ipv6 = on +max_clients = 5 +password = "" +ssl_cert_key = "%h/ssl/relay.pem" +websocket_allowed_origins = "" + +[irc] +backlog_max_minutes = 1440 +backlog_max_number = 256 +backlog_since_last_disconnect = on +backlog_tags = "irc_privmsg" +backlog_time_format = "[%H:%M] " + +[port] diff --git a/weechat/rmodifier.conf b/weechat/rmodifier.conf new file mode 100644 index 0000000..a135a67 --- /dev/null +++ b/weechat/rmodifier.conf @@ -0,0 +1,14 @@ +# +# rmodifier.conf -- weechat v0.4.1 +# + +[look] +hide_char = "*" + +[modifier] +command_auth = "history_add,input_text_display,irc_command_auth;^(/(msg|quote) +nickserv +(id|identify|register|ghost \S+|release \S+) +)(.*);1,4*" +message_auth = "irc_message_auth;^(.*(id|identify|register|ghost \S+|release \S+) +)(.*);1,3*" +oper = "history_add,input_text_display;^(/oper +\S+ +)(.*);1,2*" +quote_pass = "history_add,input_text_display;^(/quote pass +)(.*);1,2*" +server = "history_add,input_text_display;^(/(server|connect) .*-(sasl_)?password=)(\S+)(.*);1,4*,5" +set_pass = "history_add;^(/set +\S*password\S* +)(.*);1,2*" diff --git a/weechat/script.conf b/weechat/script.conf new file mode 100644 index 0000000..54be061 --- /dev/null +++ b/weechat/script.conf @@ -0,0 +1,48 @@ +# +# script.conf -- weechat v0.4.1 +# + +[look] +columns = "%s %n %V %v %u | %d | %t" +diff_color = on +diff_command = "auto" +display_source = on +quiet_actions = on +sort = "p,n" +translate_description = on +use_keys = on + +[color] +status_autoloaded = cyan +status_held = white +status_installed = lightcyan +status_obsolete = lightmagenta +status_popular = yellow +status_running = lightgreen +status_unknown = lightred +text = default +text_bg = default +text_bg_selected = red +text_date = default +text_date_selected = white +text_delimiters = darkgray +text_description = default +text_description_selected = white +text_extension = default +text_extension_selected = white +text_name = cyan +text_name_selected = lightcyan +text_selected = white +text_tags = brown +text_tags_selected = yellow +text_version = magenta +text_version_loaded = default +text_version_loaded_selected = white +text_version_selected = lightmagenta + +[scripts] +autoload = on +cache_expire = 60 +dir = "%h/script" +hold = "" +url = "http://www.weechat.org/files/plugins.xml.gz" diff --git a/weechat/script/plugins.xml.gz b/weechat/script/plugins.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee33e70a4afbebdbfe6bb36c27435c8fdfbf184c GIT binary patch literal 88019 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 Sjru1z;Qs-S%58J@GX?;GWl&B4 literal 0 HcmV?d00001 diff --git a/weechat/weechat.conf b/weechat/weechat.conf new file mode 100644 index 0000000..6d01bbe --- /dev/null +++ b/weechat/weechat.conf @@ -0,0 +1,564 @@ +# +# weechat.conf -- weechat v0.4.1 +# + +[debug] + +[startup] +command_after_plugins = "" +command_before_plugins = "" +display_logo = on +display_version = on +sys_rlimit = "" + +[look] +align_end_of_lines = message +bar_more_down = "++" +bar_more_left = "<<" +bar_more_right = ">>" +bar_more_up = "--" +buffer_notify_default = all +buffer_time_format = "%H:%M:%S" +color_basic_force_bold = off +color_inactive_buffer = off +color_inactive_message = on +color_inactive_prefix = on +color_inactive_prefix_buffer = on +color_inactive_time = off +color_inactive_window = off +color_nick_offline = off +color_pairs_auto_reset = 5 +color_real_white = off +command_chars = "" +confirm_quit = off +day_change = on +day_change_time_format = "%a, %d %b %Y" +eat_newline_glitch = off +highlight = "" +highlight_regex = "" +highlight_tags = "" +hotlist_add_buffer_if_away = on +hotlist_buffer_separator = ", " +hotlist_count_max = 2 +hotlist_count_min_msg = 2 +hotlist_names_count = 3 +hotlist_names_length = 0 +hotlist_names_level = 12 +hotlist_names_merged_buffers = off +hotlist_short_names = on +hotlist_sort = group_time_asc +hotlist_unique_numbers = on +input_cursor_scroll = 20 +input_share = none +input_share_overwrite = off +input_undo_max = 32 +item_buffer_filter = "*" +item_time_format = "%H:%M" +jump_current_to_previous_buffer = on +jump_previous_buffer_when_closing = on +jump_smart_back_to_buffer = on +mouse = on +mouse_timer_delay = 100 +nick_prefix = "" +nick_suffix = "" +paste_bracketed = off +paste_bracketed_timer_delay = 10 +paste_max_lines = 1 +prefix_action = " *" +prefix_align = right +prefix_align_max = 0 +prefix_align_min = 0 +prefix_align_more = "+" +prefix_align_more_after = on +prefix_buffer_align = right +prefix_buffer_align_max = 0 +prefix_buffer_align_more = "+" +prefix_buffer_align_more_after = on +prefix_error = "=!=" +prefix_join = "-->" +prefix_network = "--" +prefix_quit = "<--" +prefix_same_nick = "" +prefix_suffix = "|" +read_marker = line +read_marker_always_show = off +read_marker_string = "- " +save_config_on_exit = on +save_layout_on_exit = none +scroll_amount = 3 +scroll_bottom_after_switch = off +scroll_page_percent = 100 +search_text_not_found_alert = on +separator_horizontal = "-" +separator_vertical = "" +set_title = on +time_format = "%a, %d %b %Y %T" +window_separator_horizontal = on +window_separator_vertical = on + +[palette] + +[color] +bar_more = lightmagenta +chat = default +chat_bg = default +chat_buffer = white +chat_channel = white +chat_delimiters = green +chat_highlight = yellow +chat_highlight_bg = magenta +chat_host = cyan +chat_inactive_buffer = darkgray +chat_inactive_window = darkgray +chat_nick = lightcyan +chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue" +chat_nick_offline = darkgray +chat_nick_offline_highlight = default +chat_nick_offline_highlight_bg = darkgray +chat_nick_other = cyan +chat_nick_prefix = green +chat_nick_self = white +chat_nick_suffix = green +chat_prefix_action = white +chat_prefix_buffer = brown +chat_prefix_buffer_inactive_buffer = darkgray +chat_prefix_error = yellow +chat_prefix_join = lightgreen +chat_prefix_more = lightmagenta +chat_prefix_network = magenta +chat_prefix_quit = lightred +chat_prefix_suffix = green +chat_read_marker = magenta +chat_read_marker_bg = default +chat_server = brown +chat_tags = red +chat_text_found = yellow +chat_text_found_bg = lightmagenta +chat_time = default +chat_time_delimiters = brown +chat_value = cyan +input_actions = lightgreen +input_text_not_found = red +nicklist_away = cyan +nicklist_group = green +nicklist_offline = blue +separator = blue +status_count_highlight = magenta +status_count_msg = brown +status_count_other = default +status_count_private = green +status_data_highlight = lightmagenta +status_data_msg = yellow +status_data_other = default +status_data_private = lightgreen +status_filter = green +status_more = yellow +status_name = white +status_name_ssl = lightgreen +status_number = yellow +status_time = default + +[completion] +base_word_until_cursor = on +default_template = "%(nicks)|%(irc_channels)" +nick_add_space = on +nick_completer = ":" +nick_first_only = off +nick_ignore_chars = "[]`_-^" +partial_completion_alert = on +partial_completion_command = on +partial_completion_command_arg = on +partial_completion_count = on +partial_completion_other = off + +[history] +display_default = 5 +max_buffer_lines_minutes = 0 +max_buffer_lines_number = 4096 +max_commands = 100 +max_visited_buffers = 50 + +[proxy] + +[network] +connection_timeout = 60 +gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt" +gnutls_handshake_timeout = 30 + +[plugin] +autoload = "*" +debug = off +extension = ".so,.dll" +path = "%h/plugins" +save_config_on_unload = on + +[bar] +input.color_bg = default +input.color_delim = cyan +input.color_fg = default +input.conditions = "" +input.filling_left_right = vertical +input.filling_top_bottom = horizontal +input.hidden = off +input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text" +input.position = bottom +input.priority = 1000 +input.separator = off +input.size = 1 +input.size_max = 0 +input.type = window +isetbar.color_bg = default +isetbar.color_delim = cyan +isetbar.color_fg = default +isetbar.conditions = "" +isetbar.filling_left_right = vertical +isetbar.filling_top_bottom = horizontal +isetbar.hidden = on +isetbar.items = "isetbar_help" +isetbar.position = top +isetbar.priority = 0 +isetbar.separator = on +isetbar.size = 3 +isetbar.size_max = 3 +isetbar.type = window +nicklist.color_bg = default +nicklist.color_delim = cyan +nicklist.color_fg = default +nicklist.conditions = "${nicklist}" +nicklist.filling_left_right = vertical +nicklist.filling_top_bottom = columns_vertical +nicklist.hidden = off +nicklist.items = "buffer_nicklist" +nicklist.position = right +nicklist.priority = 200 +nicklist.separator = on +nicklist.size = 0 +nicklist.size_max = 0 +nicklist.type = window +status.color_bg = blue +status.color_delim = cyan +status.color_fg = default +status.conditions = "" +status.filling_left_right = vertical +status.filling_top_bottom = horizontal +status.hidden = off +status.items = "[time],[buffer_count],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_filter,[lag],[hotlist],completion,scroll" +status.position = bottom +status.priority = 500 +status.separator = off +status.size = 1 +status.size_max = 0 +status.type = window +title.color_bg = blue +title.color_delim = cyan +title.color_fg = default +title.conditions = "" +title.filling_left_right = vertical +title.filling_top_bottom = horizontal +title.hidden = off +title.items = "buffer_title" +title.position = top +title.priority = 500 +title.separator = off +title.size = 1 +title.size_max = 0 +title.type = window + +[layout] + +[notify] + +[filter] + +[key] +ctrl-? = "/input delete_previous_char" +ctrl-A = "/input move_beginning_of_line" +ctrl-B = "/input move_previous_char" +ctrl-Cb = "/input insert \x02" +ctrl-Cc = "/input insert \x03" +ctrl-Ci = "/input insert \x1D" +ctrl-Co = "/input insert \x0F" +ctrl-Cr = "/input insert \x12" +ctrl-Cu = "/input insert \x15" +ctrl-D = "/input delete_next_char" +ctrl-E = "/input move_end_of_line" +ctrl-F = "/input move_next_char" +ctrl-H = "/input delete_previous_char" +ctrl-I = "/input complete_next" +ctrl-J = "/input return" +ctrl-K = "/input delete_end_of_line" +ctrl-L = "/window refresh" +ctrl-M = "/input return" +ctrl-N = "/buffer +1" +ctrl-P = "/buffer -1" +ctrl-R = "/input search_text" +ctrl-Sctrl-U = "/input set_unread" +ctrl-T = "/input transpose_chars" +ctrl-U = "/input delete_beginning_of_line" +ctrl-W = "/input delete_previous_word" +ctrl-X = "/input switch_active_buffer" +ctrl-Y = "/input clipboard_paste" +meta-meta2-1~ = "/window scroll_top" +meta-meta2-23~ = "/bar scroll nicklist * b" +meta-meta2-24~ = "/bar scroll nicklist * e" +meta-meta2-4~ = "/window scroll_bottom" +meta-meta2-5~ = "/window scroll_up" +meta-meta2-6~ = "/window scroll_down" +meta-meta2-7~ = "/window scroll_top" +meta-meta2-8~ = "/window scroll_bottom" +meta-meta2-A = "/buffer -1" +meta-meta2-B = "/buffer +1" +meta-meta2-C = "/buffer +1" +meta-meta2-D = "/buffer -1" +meta-/ = "/input jump_last_buffer_displayed" +meta-0 = "/buffer *10" +meta-1 = "/buffer *1" +meta-2 = "/buffer *2" +meta-3 = "/buffer *3" +meta-4 = "/buffer *4" +meta-5 = "/buffer *5" +meta-6 = "/buffer *6" +meta-7 = "/buffer *7" +meta-8 = "/buffer *8" +meta-9 = "/buffer *9" +meta-< = "/input jump_previously_visited_buffer" +meta-= = "/filter toggle" +meta-> = "/input jump_next_visited_buffer" +meta-OA = "/input history_global_previous" +meta-OB = "/input history_global_next" +meta-OC = "/input move_next_word" +meta-OD = "/input move_previous_word" +meta-OF = "/input move_end_of_line" +meta-OH = "/input move_beginning_of_line" +meta-Oa = "/input history_global_previous" +meta-Ob = "/input history_global_next" +meta-Oc = "/input move_next_word" +meta-Od = "/input move_previous_word" +meta2-15~ = "/buffer -1" +meta2-17~ = "/buffer +1" +meta2-18~ = "/window -1" +meta2-19~ = "/window +1" +meta2-1;3A = "/buffer -1" +meta2-1;3B = "/buffer +1" +meta2-1;3C = "/buffer +1" +meta2-1;3D = "/buffer -1" +meta2-1;5A = "/input history_global_previous" +meta2-1;5B = "/input history_global_next" +meta2-1;5C = "/input move_next_word" +meta2-1;5D = "/input move_previous_word" +meta2-1~ = "/input move_beginning_of_line" +meta2-200~ = "/input paste_start" +meta2-201~ = "/input paste_stop" +meta2-20~ = "/bar scroll title * -30%" +meta2-21~ = "/bar scroll title * +30%" +meta2-23~ = "/bar scroll nicklist * -100%" +meta2-24~ = "/bar scroll nicklist * +100%" +meta2-3~ = "/input delete_next_char" +meta2-4~ = "/input move_end_of_line" +meta2-5;3~ = "/window scroll_up" +meta2-5~ = "/window page_up" +meta2-6;3~ = "/window scroll_down" +meta2-6~ = "/window page_down" +meta2-7~ = "/input move_beginning_of_line" +meta2-8~ = "/input move_end_of_line" +meta2-A = "/input history_previous" +meta2-B = "/input history_next" +meta2-C = "/input move_next_char" +meta2-D = "/input move_previous_char" +meta2-F = "/input move_end_of_line" +meta2-G = "/window page_down" +meta2-H = "/input move_beginning_of_line" +meta2-I = "/window page_up" +meta2-Z = "/input complete_previous" +meta2-[E = "/buffer -1" +meta-_ = "/input redo" +meta-a = "/input jump_smart" +meta-b = "/input move_previous_word" +meta-d = "/input delete_next_word" +meta-f = "/input move_next_word" +meta-h = "/input hotlist_clear" +meta-jmeta-l = "/input jump_last_buffer" +meta-jmeta-r = "/server raw" +meta-jmeta-s = "/server jump" +meta-j01 = "/buffer 1" +meta-j02 = "/buffer 2" +meta-j03 = "/buffer 3" +meta-j04 = "/buffer 4" +meta-j05 = "/buffer 5" +meta-j06 = "/buffer 6" +meta-j07 = "/buffer 7" +meta-j08 = "/buffer 8" +meta-j09 = "/buffer 9" +meta-j10 = "/buffer 10" +meta-j11 = "/buffer 11" +meta-j12 = "/buffer 12" +meta-j13 = "/buffer 13" +meta-j14 = "/buffer 14" +meta-j15 = "/buffer 15" +meta-j16 = "/buffer 16" +meta-j17 = "/buffer 17" +meta-j18 = "/buffer 18" +meta-j19 = "/buffer 19" +meta-j20 = "/buffer 20" +meta-j21 = "/buffer 21" +meta-j22 = "/buffer 22" +meta-j23 = "/buffer 23" +meta-j24 = "/buffer 24" +meta-j25 = "/buffer 25" +meta-j26 = "/buffer 26" +meta-j27 = "/buffer 27" +meta-j28 = "/buffer 28" +meta-j29 = "/buffer 29" +meta-j30 = "/buffer 30" +meta-j31 = "/buffer 31" +meta-j32 = "/buffer 32" +meta-j33 = "/buffer 33" +meta-j34 = "/buffer 34" +meta-j35 = "/buffer 35" +meta-j36 = "/buffer 36" +meta-j37 = "/buffer 37" +meta-j38 = "/buffer 38" +meta-j39 = "/buffer 39" +meta-j40 = "/buffer 40" +meta-j41 = "/buffer 41" +meta-j42 = "/buffer 42" +meta-j43 = "/buffer 43" +meta-j44 = "/buffer 44" +meta-j45 = "/buffer 45" +meta-j46 = "/buffer 46" +meta-j47 = "/buffer 47" +meta-j48 = "/buffer 48" +meta-j49 = "/buffer 49" +meta-j50 = "/buffer 50" +meta-j51 = "/buffer 51" +meta-j52 = "/buffer 52" +meta-j53 = "/buffer 53" +meta-j54 = "/buffer 54" +meta-j55 = "/buffer 55" +meta-j56 = "/buffer 56" +meta-j57 = "/buffer 57" +meta-j58 = "/buffer 58" +meta-j59 = "/buffer 59" +meta-j60 = "/buffer 60" +meta-j61 = "/buffer 61" +meta-j62 = "/buffer 62" +meta-j63 = "/buffer 63" +meta-j64 = "/buffer 64" +meta-j65 = "/buffer 65" +meta-j66 = "/buffer 66" +meta-j67 = "/buffer 67" +meta-j68 = "/buffer 68" +meta-j69 = "/buffer 69" +meta-j70 = "/buffer 70" +meta-j71 = "/buffer 71" +meta-j72 = "/buffer 72" +meta-j73 = "/buffer 73" +meta-j74 = "/buffer 74" +meta-j75 = "/buffer 75" +meta-j76 = "/buffer 76" +meta-j77 = "/buffer 77" +meta-j78 = "/buffer 78" +meta-j79 = "/buffer 79" +meta-j80 = "/buffer 80" +meta-j81 = "/buffer 81" +meta-j82 = "/buffer 82" +meta-j83 = "/buffer 83" +meta-j84 = "/buffer 84" +meta-j85 = "/buffer 85" +meta-j86 = "/buffer 86" +meta-j87 = "/buffer 87" +meta-j88 = "/buffer 88" +meta-j89 = "/buffer 89" +meta-j90 = "/buffer 90" +meta-j91 = "/buffer 91" +meta-j92 = "/buffer 92" +meta-j93 = "/buffer 93" +meta-j94 = "/buffer 94" +meta-j95 = "/buffer 95" +meta-j96 = "/buffer 96" +meta-j97 = "/buffer 97" +meta-j98 = "/buffer 98" +meta-j99 = "/buffer 99" +meta-k = "/input grab_key_command" +meta-m = "/mute mouse toggle" +meta-n = "/window scroll_next_highlight" +meta-p = "/window scroll_previous_highlight" +meta-r = "/input delete_line" +meta-s = "/mute aspell toggle" +meta-u = "/window scroll_unread" +meta-wmeta-meta2-A = "/window up" +meta-wmeta-meta2-B = "/window down" +meta-wmeta-meta2-C = "/window right" +meta-wmeta-meta2-D = "/window left" +meta-wmeta2-1;3A = "/window up" +meta-wmeta2-1;3B = "/window down" +meta-wmeta2-1;3C = "/window right" +meta-wmeta2-1;3D = "/window left" +meta-wmeta-b = "/window balance" +meta-wmeta-s = "/window swap" +meta-x = "/input zoom_merged_buffer" +meta-z = "/window zoom" +ctrl-_ = "/input undo" + +[key_search] +ctrl-J = "/input search_stop" +ctrl-M = "/input search_stop" +ctrl-R = "/input search_switch_case" +meta2-A = "/input search_previous" +meta2-B = "/input search_next" + +[key_cursor] +ctrl-J = "/cursor stop" +ctrl-M = "/cursor stop" +meta-meta2-A = "/cursor move area_up" +meta-meta2-B = "/cursor move area_down" +meta-meta2-C = "/cursor move area_right" +meta-meta2-D = "/cursor move area_left" +meta2-1;3A = "/cursor move area_up" +meta2-1;3B = "/cursor move area_down" +meta2-1;3C = "/cursor move area_right" +meta2-1;3D = "/cursor move area_left" +meta2-A = "/cursor move up" +meta2-B = "/cursor move down" +meta2-C = "/cursor move right" +meta2-D = "/cursor move left" +@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" +@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" +@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" +@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop" +@chat:m = "hsignal:chat_quote_message;/cursor stop" +@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop" + +[key_mouse] +@bar(input):button2 = "/input grab_mouse_area" +@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%" +@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" +@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" +@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" +@chat(perl.iset):button1 = "hsignal:iset_mouse" +@chat(perl.iset):button2* = "hsignal:iset_mouse" +@chat(perl.iset):wheeldown = "/repeat 5 /iset **down" +@chat(perl.iset):wheelup = "/repeat 5 /iset **up" +@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}" +@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}" +@chat(script.scripts):wheeldown = "/script down 5" +@chat(script.scripts):wheelup = "/script up 5" +@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" +@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" +@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" +@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}" +@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}" +@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%" +@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%" +@chat:button1 = "/window ${_window_number}" +@chat:button1-gesture-left = "/window ${_window_number};/buffer -1" +@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1" +@chat:button1-gesture-right = "/window ${_window_number};/buffer +1" +@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer" +@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%" +@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%" +@chat:wheeldown = "/window scroll_down -window ${_window_number}" +@chat:wheelup = "/window scroll_up -window ${_window_number}" +@*:button3 = "/cursor go ${_x},${_y}" diff --git a/weechat/weechat.log b/weechat/weechat.log new file mode 100644 index 0000000..1812ea2 --- /dev/null +++ b/weechat/weechat.log @@ -0,0 +1,35 @@ +[2013-11-19 03:30:05] WeeChat 0.4.1 (compiled on Nov 18 2013 13:07:22) +[2013-11-19 03:30:05] Reading configuration file weechat.conf +[2013-11-19 03:30:05] Reading configuration file plugins.conf +[2013-11-19 03:30:05] Reading configuration file alias.conf +[2013-11-19 03:30:05] Reading configuration file aspell.conf +[2013-11-19 03:30:05] Reading configuration file charset.conf +[2013-11-19 03:30:05] Reading configuration file irc.conf +[2013-11-19 03:30:05] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 03:30:05] Reading configuration file logger.conf +[2013-11-19 03:30:05] Reading configuration file relay.conf +[2013-11-19 03:30:05] Reading configuration file rmodifier.conf +[2013-11-19 03:30:05] Reading configuration file script.conf +[2013-11-19 03:30:05] Reading configuration file xfer.conf +[2013-11-19 03:30:05] Reading configuration file iset.conf +[2013-11-19 03:37:35] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 03:45:05] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 04:03:49] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 04:04:09] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 04:30:41] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 05:08:56] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 08:38:12] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 08:38:12] irc: connecting to server tardis.uni.cx/60665 (SSL)... +[2013-11-19 08:38:29] Signal SIGTERM received, exiting WeeChat... +[2013-11-19 08:38:29] Writing configuration file plugins.conf +[2013-11-19 08:38:29] Writing configuration file iset.conf +[2013-11-19 08:38:29] Writing configuration file xfer.conf +[2013-11-19 08:38:29] Writing configuration file script.conf +[2013-11-19 08:38:29] Writing configuration file rmodifier.conf +[2013-11-19 08:38:29] Writing configuration file relay.conf +[2013-11-19 08:38:29] Writing configuration file logger.conf +[2013-11-19 08:38:29] Writing configuration file irc.conf +[2013-11-19 08:38:30] Writing configuration file charset.conf +[2013-11-19 08:38:30] Writing configuration file aspell.conf +[2013-11-19 08:38:30] Writing configuration file alias.conf +[2013-11-19 08:38:30] Writing configuration file weechat.conf diff --git a/weechat/xfer.conf b/weechat/xfer.conf new file mode 100644 index 0000000..7a639ea --- /dev/null +++ b/weechat/xfer.conf @@ -0,0 +1,37 @@ +# +# xfer.conf -- weechat v0.4.1 +# + +[look] +auto_open_buffer = on +progress_bar_size = 20 + +[color] +status_aborted = lightred +status_active = lightblue +status_connecting = yellow +status_done = lightgreen +status_failed = lightred +status_waiting = lightcyan +text = default +text_bg = default +text_selected = white + +[network] +blocksize = 65536 +fast_send = on +own_ip = "" +port_range = "" +speed_limit = 0 +timeout = 300 + +[file] +auto_accept_chats = off +auto_accept_files = off +auto_accept_nicks = "" +auto_rename = on +auto_resume = on +convert_spaces = on +download_path = "%h/xfer" +upload_path = "~" +use_nick_in_filename = on -- 2.48.1