diff --git a/weechat/.weechat/alias.conf b/weechat/.weechat/alias.conf deleted file mode 100644 index d993aa0..0000000 --- a/weechat/.weechat/alias.conf +++ /dev/null @@ -1,48 +0,0 @@ -# -# weechat -- alias.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[cmd] -AAWAY = "allserv /away" -AME = "allchan /me" -AMSG = "allchan /msg *" -ANICK = "allserv /nick" -BEEP = "print -beep" -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" -MSGBUF = "command -buffer $1 * /input send $2-" -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] -MSGBUF = "%(buffers_plugins_names)" diff --git a/weechat/.weechat/aspell.conf b/weechat/.weechat/aspell.conf deleted file mode 100644 index 27b16b8..0000000 --- a/weechat/.weechat/aspell.conf +++ /dev/null @@ -1,33 +0,0 @@ -# -# weechat -- aspell.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[color] -misspelled = lightred -suggestion = default -suggestion_delimiter_dict = cyan -suggestion_delimiter_word = cyan - -[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] - -[look] -suggestion_delimiter_dict = " / " -suggestion_delimiter_word = "," - -[option] diff --git a/weechat/.weechat/buffers.conf b/weechat/.weechat/buffers.conf deleted file mode 100644 index 543f3ce..0000000 --- a/weechat/.weechat/buffers.conf +++ /dev/null @@ -1,80 +0,0 @@ -# -# weechat -- buffers.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[color] -current_bg = red -current_fg = lightcyan -default_bg = default -default_fg = default -hotlist_highlight_bg = default -hotlist_highlight_fg = magenta -hotlist_low_bg = default -hotlist_low_fg = white -hotlist_message_bg = default -hotlist_message_fg = 7 -hotlist_private_bg = default -hotlist_private_fg = lightgreen -none_channel_bg = default -none_channel_fg = default -number = lightgreen -number_char = lightgreen -prefix_bufname = default -queries_default_bg = default -queries_default_fg = default -queries_highlight_bg = default -queries_highlight_fg = default -queries_message_bg = default -queries_message_fg = default -suffix_bufname = default -whitelist_default_bg = default -whitelist_default_fg = default -whitelist_highlight_bg = default -whitelist_highlight_fg = default -whitelist_low_bg = default -whitelist_low_fg = default -whitelist_message_bg = default -whitelist_message_fg = default -whitelist_private_bg = default -whitelist_private_fg = default - -[look] -core_to_front = off -detach = 600 -detach_buffer_immediately = "" -detach_buffer_immediately_level = 2 -detach_display_window_number = off -detach_displayed_buffers = on -detach_free_content = off -detach_query = off -hide_merged_buffers = server -hotlist_counter = off -immune_detach_buffers = "" -indenting = off -indenting_amount = 2 -indenting_number = on -jump_prev_next_visited_buffer = off -mark_inactive = off -mouse_move_buffer = on -mouse_wheel = on -name_crop_suffix = "+" -name_size_max = 0 -number_char = "." -prefix = off -prefix_bufname = "" -prefix_empty = on -prefix_for_query = "" -short_names = on -show_lag = off -show_number = on -sort = number -suffix_bufname = "" -toggle_bar = on -whitelist_buffers = "" diff --git a/weechat/.weechat/buflist.conf b/weechat/.weechat/buflist.conf deleted file mode 100644 index 85bd6ea..0000000 --- a/weechat/.weechat/buflist.conf +++ /dev/null @@ -1,39 +0,0 @@ -# -# weechat -- buflist.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -add_newline = on -auto_scroll = 50 -display_conditions = "${buffer.hidden}==0" -enabled = on -mouse_jump_visited_buffer = off -mouse_move_buffer = on -mouse_wheel = on -nick_prefix = off -nick_prefix_empty = on -signals_refresh = "" -sort = "number,-active" - -[format] -buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${name}" -buffer_current = "${color:,blue}${format_buffer}" -hotlist = " ${color:green}(${hotlist}${color:green})" -hotlist_highlight = "${color:magenta}" -hotlist_low = "${color:white}" -hotlist_message = "${color:brown}" -hotlist_none = "${color:default}" -hotlist_private = "${color:green}" -hotlist_separator = "${color:default}," -indent = " " -lag = " ${color:green}[${color:brown}${lag}${color:green}]" -name = "${name}" -nick_prefix = "${color_nick_prefix}${nick_prefix}" -number = "${color:green}${number}${if:${number_displayed}?.: }" diff --git a/weechat/.weechat/charset.conf b/weechat/.weechat/charset.conf deleted file mode 100644 index 00d304c..0000000 --- a/weechat/.weechat/charset.conf +++ /dev/null @@ -1,18 +0,0 @@ -# -# weechat -- charset.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[default] -decode = "iso-8859-1" -encode = "" - -[decode] - -[encode] diff --git a/weechat/.weechat/colorize_nicks.conf b/weechat/.weechat/colorize_nicks.conf deleted file mode 100644 index 6c88017..0000000 --- a/weechat/.weechat/colorize_nicks.conf +++ /dev/null @@ -1,19 +0,0 @@ -# -# weechat -- colorize_nicks.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -blacklist_channels = "" -blacklist_nicks = "so,root" -colorize_input = off -greedy_matching = on -ignore_nicks_in_urls = off -ignore_tags = "" -min_nick_length = 2 diff --git a/weechat/.weechat/exec.conf b/weechat/.weechat/exec.conf deleted file mode 100644 index db02a5b..0000000 --- a/weechat/.weechat/exec.conf +++ /dev/null @@ -1,19 +0,0 @@ -# -# weechat -- exec.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[command] -default_options = "" -purge_delay = 0 -shell = "sh" - -[color] -flag_finished = lightred -flag_running = lightgreen diff --git a/weechat/.weechat/fifo.conf b/weechat/.weechat/fifo.conf deleted file mode 100644 index 904985d..0000000 --- a/weechat/.weechat/fifo.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- fifo.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[file] -enabled = on -path = "%h/weechat_fifo" diff --git a/weechat/.weechat/fset.conf b/weechat/.weechat/fset.conf deleted file mode 100644 index 668266c..0000000 --- a/weechat/.weechat/fset.conf +++ /dev/null @@ -1,95 +0,0 @@ -# -# weechat -- fset.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -auto_unmark = off -condition_catch_set = "${count} >= 1" -export_help_default = on -format_number = 1 -marked_string = "*" -scroll_horizontal = 10 -show_plugins_desc = off -sort = "~name" -unmarked_string = " " -use_color_value = off -use_keys = on -use_mute = off - -[format] -export_help = "# ${description2}" -export_option = "/set ${name} ${quoted_value}" -export_option_null = "/unset ${name}" -option1 = "" -option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}" - -[color] -default_value = default -default_value_selected = white -description = default -description_selected = white -file = default -file_changed = brown -file_changed_selected = yellow -file_selected = white -help_default_value = white -help_description = default -help_name = white -help_quotes = darkgray -help_values = default -index = cyan -index_selected = lightcyan -line_marked_bg1 = default -line_marked_bg2 = default -line_selected_bg1 = blue -line_selected_bg2 = red -marked = brown -marked_selected = yellow -max = default -max_selected = white -min = default -min_selected = white -name = default -name_changed = brown -name_changed_selected = yellow -name_selected = white -option = default -option_changed = brown -option_changed_selected = yellow -option_selected = white -parent_name = default -parent_name_selected = white -parent_value = cyan -parent_value_selected = lightcyan -quotes = darkgray -quotes_changed = default -quotes_changed_selected = white -quotes_selected = default -section = default -section_changed = brown -section_changed_selected = yellow -section_selected = white -string_values = default -string_values_selected = white -title_count_options = cyan -title_current_option = lightcyan -title_filter = yellow -title_marked_options = lightgreen -title_sort = white -type = green -type_selected = lightgreen -unmarked = default -unmarked_selected = white -value = cyan -value_changed = brown -value_changed_selected = yellow -value_selected = lightcyan -value_undef = magenta -value_undef_selected = lightmagenta diff --git a/weechat/.weechat/guile.conf b/weechat/.weechat/guile.conf deleted file mode 100644 index 07a4910..0000000 --- a/weechat/.weechat/guile.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- guile.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/logger.conf b/weechat/.weechat/logger.conf deleted file mode 100644 index d0d3218..0000000 --- a/weechat/.weechat/logger.conf +++ /dev/null @@ -1,36 +0,0 @@ -# -# weechat -- logger.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -backlog = 20 -backlog_conditions = "" - -[color] -backlog_end = default -backlog_line = default - -[file] -auto_log = on -color_lines = off -flush_delay = 120 -fsync = off -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/.weechat/lua.conf b/weechat/.weechat/lua.conf deleted file mode 100644 index fa4966b..0000000 --- a/weechat/.weechat/lua.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- lua.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/perl.conf b/weechat/.weechat/perl.conf deleted file mode 100644 index 31924b9..0000000 --- a/weechat/.weechat/perl.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- perl.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/perl/autoload/buffers.pl b/weechat/.weechat/perl/autoload/buffers.pl deleted file mode 120000 index 445dc3c..0000000 --- a/weechat/.weechat/perl/autoload/buffers.pl +++ /dev/null @@ -1 +0,0 @@ -../buffers.pl \ No newline at end of file diff --git a/weechat/.weechat/perl/autoload/highmon.pl b/weechat/.weechat/perl/autoload/highmon.pl deleted file mode 120000 index 2eb5e1e..0000000 --- a/weechat/.weechat/perl/autoload/highmon.pl +++ /dev/null @@ -1 +0,0 @@ -../highmon.pl \ No newline at end of file diff --git a/weechat/.weechat/perl/buffers.pl b/weechat/.weechat/perl/buffers.pl deleted file mode 100644 index 46e2460..0000000 --- a/weechat/.weechat/perl/buffers.pl +++ /dev/null @@ -1,1821 +0,0 @@ -# -# Copyright (C) 2008-2014 Sebastien Helleu -# Copyright (C) 2011-2013 Nils G -# -# 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 . -# -# -# Display sidebar with list of buffers. -# -# History: -# -# 2017-03-17, arza : -# v5.6: fix truncating buffer names that contain multibyte characters -# 2017-02-21, arza : -# v5.5: fix memory leak in perl 5.23.7-5.24.1 -# fix truncation and crop_suffix when truncating to 1-4 characters -# fix prefix_empty for inactive buffers -# tidy code -# 2016-05-01, mumixam : -# v5.4: add option "detach_buffer_immediately_level" -# 2015-08-21, Matthew Cox -# v5.3: add option "indenting_amount", to adjust the indenting of channel buffers -# 2015-05-02, arza : -# v5.2: truncate long names (name_size_max) more when mark_inactive adds parenthesis -# 2015-03-29, Ed Santiago : -# v5.1: merged buffers: always indent, except when filling is horizontal -# 2014-12-12, oakkitten -# v5.0: fix cropping non-latin buffer names -# 2014-08-29, Patrick Steinhardt : -# v4.9: add support for specifying custom buffer names -# 2014-07-19, Sebastien Helleu : -# v4.8: add support of ctrl + mouse wheel to jump to previous/next buffer, -# new option "mouse_wheel" -# 2014-06-22, Sebastien Helleu : -# v4.7: fix typos in options -# 2014-04-05, Sebastien Helleu : -# v4.6: add support of hidden buffers (WeeChat >= 0.4.4) -# 2014-01-01, Sebastien Helleu : -# v4.5: add option "mouse_move_buffer" -# 2013-12-11, Sebastien Helleu : -# v4.4: fix buffer number on drag to the end of list when option -# weechat.look.buffer_auto_renumber is off -# 2013-12-10, nils_2@freenode.#weechat: -# v4.3: add options "prefix_bufname" and "suffix_bufname (idea by silverd) -# fix hook_timer() for show_lag wasn't disabled -# improve signal handling (less updating of buffers list) -# 2013-11-07, Sebastien Helleu : -# v4.2: use default filling "columns_vertical" when bar position is top/bottom -# 2013-10-31, nils_2@freenode.#weechat: -# v4.1: add option "detach_buffer_immediately" (idea by farn) -# 2013-10-20, nils_2@freenode.#weechat: -# v4.0: add options "detach_displayed_buffers", "detach_display_window_number" -# 2013-09-27, nils_2@freenode.#weechat: -# v3.9: add option "toggle_bar" and option "show_prefix_query" (idea by IvarB) -# fix problem with linefeed at end of list of buffers (reported by grawity) -# 2012-10-18, nils_2@freenode.#weechat: -# v3.8: add option "mark_inactive", to mark buffers you are not in (idea by xrdodrx) -# add wildcard "*" for immune_detach_buffers (idea by StarWeaver) -# add new options "detach_query" and "detach_free_content" (idea by StarWeaver) -# 2012-10-06, Nei : -# v3.7: call menu on right mouse if menu script is loaded. -# 2012-10-06, nils_2 : -# v3.6: add new option "hotlist_counter" (idea by torque). -# 2012-06-02, nils_2 : -# v3.5: add values "server|channel|private|all|keepserver|none" to option "hide_merged_buffers" (suggested by dominikh). -# 2012-05-25, nils_2 : -# v3.4: add new option "show_lag". -# 2012-04-07, Sebastien Helleu : -# v3.3: fix truncation of wide chars in buffer name (option name_size_max) (bug #36034) -# 2012-03-15, nils_2 : -# v3.2: add new option "detach"(weechat >= 0.3.8) -# add new option "immune_detach_buffers" (requested by Mkaysi) -# add new function buffers_whitelist add|del|reset (suggested by FiXato) -# add new function buffers_detach add|del|reset -# 2012-03-09, Sebastien Helleu : -# v3.1: fix reload of config file -# 2012-01-29, nils_2 : -# v3.0: fix: buffers did not update directly during window_switch (reported by FiXato) -# 2012-01-29, nils_2 : -# v2.9: add options "name_size_max" and "name_crop_suffix" -# 2012-01-08, nils_2 : -# v2.8: fix indenting for option "show_number off" -# fix unset of buffer activity in hotlist when buffer was moved with mouse -# add buffer with free content and core buffer sorted first (suggested by nyuszika7h) -# add options queries_default_fg/bg and queries_message_fg/bg (suggested by FiXato) -# add clicking with left button on current buffer will do a jump_previously_visited_buffer (suggested by FiXato) -# add clicking with right button on current buffer will do a jump_next_visited_buffer -# add additional informations in help texts -# add default_fg and default_bg for whitelist channels -# internal changes (script is now 3Kb smaller) -# 2012-01-04, Sebastien Helleu : -# v2.7: fix regex lookup in whitelist buffers list -# 2011-12-04, nils_2 : -# v2.6: add own config file (buffers.conf) -# add new behavior for indenting (under_name) -# add new option to set different color for server buffers and buffers with free content -# 2011-10-30, nils_2 : -# v2.5: add new options "show_number_char" and "color_number_char", -# add help-description for options -# 2011-08-24, Sebastien Helleu : -# v2.4: add mouse support -# 2011-06-06, nils_2 : -# v2.3: add missing option "color_whitelist_default" -# 2011-03-23, Sebastien Helleu : -# v2.2: fix color of nick prefix with WeeChat >= 0.3.5 -# 2011-02-13, nils_2 : -# v2.1: add options "color_whitelist_*" -# 2010-10-05, Sebastien Helleu : -# v2.0: add options "sort" and "show_number" -# 2010-04-12, Sebastien Helleu : -# v1.9: replace call to log() by length() to align buffer numbers -# 2010-04-02, Sebastien Helleu : -# v1.8: fix bug with background color and option indenting_number -# 2010-04-02, Helios : -# v1.7: add indenting_number option -# 2010-02-25, m4v : -# v1.6: add option to hide empty prefixes -# 2010-02-12, Sebastien Helleu : -# v1.5: add optional nick prefix for buffers like IRC channels -# 2009-09-30, Sebastien Helleu : -# v1.4: remove spaces for indenting when bar position is top/bottom -# 2009-06-14, Sebastien Helleu : -# v1.3: add option "hide_merged_buffers" -# 2009-06-14, Sebastien Helleu : -# v1.2: improve display with merged buffers -# 2009-05-02, Sebastien Helleu : -# v1.1: sync with last API changes -# 2009-02-21, Sebastien Helleu : -# v1.0: remove timer used to update bar item first time (not needed any more) -# 2009-02-17, Sebastien Helleu : -# v0.9: fix bug with indenting of private buffers -# 2009-01-04, Sebastien Helleu : -# v0.8: update syntax for command /set (comments) -# 2008-10-20, Jiri Golembiovsky : -# v0.7: add indenting option -# 2008-10-01, Sebastien Helleu : -# v0.6: add default color for buffers, and color for current active buffer -# 2008-09-18, Sebastien Helleu : -# v0.5: fix color for "low" level entry in hotlist -# 2008-09-18, Sebastien Helleu : -# v0.4: rename option "show_category" to "short_names", -# remove option "color_slash" -# 2008-09-15, Sebastien Helleu : -# v0.3: fix bug with priority in hotlist (var not defined) -# 2008-09-02, Sebastien Helleu : -# v0.2: add color for buffers with activity and config options for -# colors, add config option to display/hide categories -# 2008-03-15, Sebastien Helleu : -# v0.1: script creation -# -# Help about settings: -# display all settings for script (or use iset.pl script to change settings): -# /set buffers* -# show help text for option buffers.look.whitelist_buffers: -# /help buffers.look.whitelist_buffers -# -# Mouse-support (standard key bindings): -# left mouse-button: -# - click on a buffer to switch to selected buffer -# - click on current buffer will do action jump_previously_visited_buffer -# - drag a buffer and drop it on another position will move the buffer to position -# right mouse-button: -# - click on current buffer will do action jump_next_visited_buffer -# - moving buffer to the left/right will close buffer. -# - -use strict; -use Encode qw( decode encode ); -# -----------------------------[ internal ]------------------------------------- -my $SCRIPT_NAME = "buffers"; -my $SCRIPT_VERSION = "5.6"; - -my $BUFFERS_CONFIG_FILE_NAME = "buffers"; -my $buffers_config_file; -my $cmd_buffers_whitelist= "buffers_whitelist"; -my $cmd_buffers_detach = "buffers_detach"; - -my %mouse_keys = ("\@item(buffers):button1*" => "hsignal:buffers_mouse", - "\@item(buffers):button2*" => "hsignal:buffers_mouse", - "\@bar(buffers):ctrl-wheelup" => "hsignal:buffers_mouse", - "\@bar(buffers):ctrl-wheeldown" => "hsignal:buffers_mouse"); -my %options; -my %hotlist_level = (0 => "low", 1 => "message", 2 => "private", 3 => "highlight"); -my @whitelist_buffers = (); -my @immune_detach_buffers= (); -my @detach_buffer_immediately= (); -my @buffers_focus = (); -my %buffers_timer = (); -my %Hooks = (); - -# --------------------------------[ init ]-------------------------------------- -weechat::register($SCRIPT_NAME, "Sebastien Helleu ", - $SCRIPT_VERSION, "GPL3", - "Sidebar with list of buffers", "shutdown_cb", ""); -my $weechat_version = weechat::info_get("version_number", "") || 0; - -buffers_config_init(); -buffers_config_read(); - -weechat::bar_item_new($SCRIPT_NAME, "build_buffers", ""); -weechat::bar_new($SCRIPT_NAME, "0", "0", "root", "", "left", "columns_vertical", - "vertical", "0", "0", "default", "default", "default", "1", - $SCRIPT_NAME); - -if ( check_bar_item() == 0 ) -{ - weechat::command("", "/bar show " . $SCRIPT_NAME) if ( weechat::config_boolean($options{"toggle_bar"}) eq 1 ); -} - -weechat::hook_signal("buffer_opened", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_closed", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_merged", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_unmerged", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_moved", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_renamed", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_switch", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_hidden", "buffers_signal_buffer", ""); # WeeChat >= 0.4.4 -weechat::hook_signal("buffer_unhidden", "buffers_signal_buffer", ""); # WeeChat >= 0.4.4 -weechat::hook_signal("buffer_localvar_added", "buffers_signal_buffer", ""); -weechat::hook_signal("buffer_localvar_changed", "buffers_signal_buffer", ""); - -weechat::hook_signal("window_switch", "buffers_signal_buffer", ""); -weechat::hook_signal("hotlist_changed", "buffers_signal_hotlist", ""); -#weechat::hook_command_run("/input switch_active_*", "buffers_signal_buffer", ""); -weechat::bar_item_update($SCRIPT_NAME); - - -if ($weechat_version >= 0x00030600) -{ - weechat::hook_focus($SCRIPT_NAME, "buffers_focus_buffers", ""); - weechat::hook_hsignal("buffers_mouse", "buffers_hsignal_mouse", ""); - weechat::key_bind("mouse", \%mouse_keys); -} - -weechat::hook_command($cmd_buffers_whitelist, - "add/del current buffer to/from buffers whitelist", - "[add] || [del] || [reset]", - " add: add current buffer in configuration file\n". - " del: delete current buffer from configuration file\n". - "reset: reset all buffers from configuration file ". - "(no confirmation!)\n\n". - "Examples:\n". - "/$cmd_buffers_whitelist add\n", - "add %-||". - "del %-||". - "reset %-", - "buffers_cmd_whitelist", ""); -weechat::hook_command($cmd_buffers_detach, - "add/del current buffer to/from buffers detach", - "[add] || [del] || [reset]", - " add: add current buffer in configuration file\n". - " del: delete current buffer from configuration file\n". - "reset: reset all buffers from configuration file ". - "(no confirmation!)\n\n". - "Examples:\n". - "/$cmd_buffers_detach add\n", - "add %-||". - "del %-||". - "reset %-", - "buffers_cmd_detach", ""); - -if ($weechat_version >= 0x00030800) -{ - weechat::hook_config("buffers.look.detach", "hook_timer_detach", ""); - if (weechat::config_integer($options{"detach"}) > 0) - { - $Hooks{timer_detach} = weechat::hook_timer(weechat::config_integer($options{"detach"}) * 1000, - 60, 0, "buffers_signal_hotlist", ""); - } -} - -weechat::hook_config("buffers.look.show_lag", "hook_timer_lag", ""); - -if (weechat::config_boolean($options{"show_lag"})) -{ - $Hooks{timer_lag} = weechat::hook_timer( - weechat::config_integer(weechat::config_get("irc.network.lag_refresh_interval")) * 1000, - 0, 0, "buffers_signal_hotlist", ""); -} - -# -------------------------------- [ command ] -------------------------------- -sub buffers_cmd_whitelist -{ -my ( $data, $buffer, $args ) = @_; - $args = lc($args); - my $buffers_whitelist = weechat::config_string( weechat::config_get("buffers.look.whitelist_buffers") ); - return weechat::WEECHAT_RC_OK if ( $buffers_whitelist eq "" and $args eq "del" or $buffers_whitelist eq "" and $args eq "reset" ); - my @buffers_list = split( /,/, $buffers_whitelist ); - # get buffers name - my $infolist = weechat::infolist_get("buffer", weechat::current_buffer(), ""); - weechat::infolist_next($infolist); - my $buffers_name = weechat::infolist_string($infolist, "name"); - weechat::infolist_free($infolist); - return weechat::WEECHAT_RC_OK if ( $buffers_name eq "" ); # should never happen - - if ( $args eq "add" ) - { - return weechat::WEECHAT_RC_OK if ( grep /^$buffers_name$/, @buffers_list ); # check if buffer already in list - push @buffers_list, ( $buffers_name ); - my $buffers_list = &create_whitelist(\@buffers_list); - weechat::config_option_set( weechat::config_get("buffers.look.whitelist_buffers"), $buffers_list, 1); - weechat::print(weechat::current_buffer(), "buffer \"$buffers_name\" added to buffers whitelist"); - } - elsif ( $args eq "del" ) - { - return weechat::WEECHAT_RC_OK unless ( grep /^$buffers_name$/, @buffers_list ); # check if buffer is in list - @buffers_list = grep {$_ ne $buffers_name} @buffers_list; # delete entry - my $buffers_list = &create_whitelist(\@buffers_list); - weechat::config_option_set( weechat::config_get("buffers.look.whitelist_buffers"), $buffers_list, 1); - weechat::print(weechat::current_buffer(), "buffer \"$buffers_name\" deleted from buffers whitelist"); - } - elsif ( $args eq "reset" ) - { - return weechat::WEECHAT_RC_OK if ( $buffers_whitelist eq "" ); - weechat::config_option_set( weechat::config_get("buffers.look.whitelist_buffers"), "", 1); - weechat::print(weechat::current_buffer(), "buffers whitelist is empty, now..."); - } - return weechat::WEECHAT_RC_OK; -} - -sub buffers_cmd_detach -{ - my ( $data, $buffer, $args ) = @_; - $args = lc($args); - my $immune_detach_buffers = weechat::config_string( weechat::config_get("buffers.look.immune_detach_buffers") ); - return weechat::WEECHAT_RC_OK if ( $immune_detach_buffers eq "" and $args eq "del" or $immune_detach_buffers eq "" and $args eq "reset" ); - - my @buffers_list = split( /,/, $immune_detach_buffers ); - # get buffers name - my $infolist = weechat::infolist_get("buffer", weechat::current_buffer(), ""); - weechat::infolist_next($infolist); - my $buffers_name = weechat::infolist_string($infolist, "name"); - weechat::infolist_free($infolist); - return weechat::WEECHAT_RC_OK if ( $buffers_name eq "" ); # should never happen - - if ( $args eq "add" ) - { - return weechat::WEECHAT_RC_OK if ( grep /^$buffers_name$/, @buffers_list ); # check if buffer already in list - push @buffers_list, ( $buffers_name ); - my $buffers_list = &create_whitelist(\@buffers_list); - weechat::config_option_set( weechat::config_get("buffers.look.immune_detach_buffers"), $buffers_list, 1); - weechat::print(weechat::current_buffer(), "buffer \"$buffers_name\" added to immune detach buffers"); - } - elsif ( $args eq "del" ) - { - return weechat::WEECHAT_RC_OK unless ( grep /^$buffers_name$/, @buffers_list ); # check if buffer is in list - @buffers_list = grep {$_ ne $buffers_name} @buffers_list; # delete entry - my $buffers_list = &create_whitelist(\@buffers_list); - weechat::config_option_set( weechat::config_get("buffers.look.immune_detach_buffers"), $buffers_list, 1); - weechat::print(weechat::current_buffer(), "buffer \"$buffers_name\" deleted from immune detach buffers"); - } - elsif ( $args eq "reset" ) - { - return weechat::WEECHAT_RC_OK if ( $immune_detach_buffers eq "" ); - weechat::config_option_set( weechat::config_get("buffers.look.immune_detach_buffers"), "", 1); - weechat::print(weechat::current_buffer(), "immune detach buffers is empty, now..."); - } - return weechat::WEECHAT_RC_OK; -} - -sub create_whitelist -{ - my @buffers_list = @{$_[0]}; - my $buffers_list = ""; - foreach (@buffers_list) - { - $buffers_list .= $_ .","; - } - # remove last "," - chop $buffers_list; - return $buffers_list; -} - -# -------------------------------- [ config ] -------------------------------- -sub hook_timer_detach -{ - my $detach = $_[2]; - if ( $detach eq 0 ) - { - weechat::unhook($Hooks{timer_detach}) if $Hooks{timer_detach}; - $Hooks{timer_detach} = ""; - } - else - { - weechat::unhook($Hooks{timer_detach}) if $Hooks{timer_detach}; - $Hooks{timer_detach} = weechat::hook_timer( weechat::config_integer($options{"detach"}) * 1000, 60, 0, "buffers_signal_hotlist", ""); - } - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub hook_timer_lag -{ - my $lag = $_[2]; - if ( $lag eq "off" ) - { - weechat::unhook($Hooks{timer_lag}) if $Hooks{timer_lag}; - $Hooks{timer_lag} = ""; - } - else - { - weechat::unhook($Hooks{timer_lag}) if $Hooks{timer_lag}; - $Hooks{timer_lag} = weechat::hook_timer( weechat::config_integer(weechat::config_get("irc.network.lag_refresh_interval")) * 1000, 0, 0, "buffers_signal_hotlist", ""); - } - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub buffers_config_read -{ - return weechat::config_read($buffers_config_file) if ($buffers_config_file ne ""); -} - -sub buffers_config_write -{ - return weechat::config_write($buffers_config_file) if ($buffers_config_file ne ""); -} - -sub buffers_config_reload_cb -{ - my ($data, $config_file) = ($_[0], $_[1]); - return weechat::config_reload($config_file) -} - -sub buffers_config_init -{ - $buffers_config_file = weechat::config_new($BUFFERS_CONFIG_FILE_NAME, - "buffers_config_reload_cb", ""); - return if ($buffers_config_file eq ""); - -my %default_options_color = -("color_current_fg" => [ - "current_fg", "color", - "foreground color for current buffer", - "", 0, 0, "lightcyan", "lightcyan", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_current_bg" => [ - "current_bg", "color", - "background color for current buffer", - "", 0, 0, "red", "red", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_default_fg" => [ - "default_fg", "color", - "default foreground color for buffer name", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_default_bg" => [ - "default_bg", "color", - "default background color for buffer name", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_highlight_fg" => [ - "hotlist_highlight_fg", "color", - "change foreground color of buffer name if a highlight messaged received", - "", 0, 0, "magenta", "magenta", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_highlight_bg" => [ - "hotlist_highlight_bg", "color", - "change background color of buffer name if a highlight messaged received", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_low_fg" => [ - "hotlist_low_fg", "color", - "change foreground color of buffer name if a low message received", - "", 0, 0, "white", "white", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_low_bg" => [ - "hotlist_low_bg", "color", - "change background color of buffer name if a low message received", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_message_fg" => [ - "hotlist_message_fg", "color", - "change foreground color of buffer name if a normal message received", - "", 0, 0, "yellow", "yellow", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_message_bg" => [ - "hotlist_message_bg", "color", - "change background color of buffer name if a normal message received", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_private_fg" => [ - "hotlist_private_fg", "color", - "change foreground color of buffer name if a private message received", - "", 0, 0, "lightgreen", "lightgreen", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_hotlist_private_bg" => [ - "hotlist_private_bg", "color", - "change background color of buffer name if a private message received", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_number" => [ - "number", "color", - "color for buffer number", - "", 0, 0, "lightgreen", "lightgreen", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_number_char" => [ - "number_char", "color", - "color for buffer number char", - "", 0, 0, "lightgreen", "lightgreen", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_default_fg" => [ - "whitelist_default_fg", "color", - "default foreground color for whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_default_bg" => [ - "whitelist_default_bg", "color", - "default background color for whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_low_fg" => [ - "whitelist_low_fg", "color", - "low color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_low_bg" => [ - "whitelist_low_bg", "color", - "low color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_message_fg" => [ - "whitelist_message_fg", "color", - "message color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_message_bg" => [ - "whitelist_message_bg", "color", - "message color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_private_fg" => [ - "whitelist_private_fg", "color", - "private color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_private_bg" => [ - "whitelist_private_bg", "color", - "private color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_highlight_fg" => [ - "whitelist_highlight_fg", "color", - "highlight color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_whitelist_highlight_bg" => [ - "whitelist_highlight_bg", "color", - "highlight color of whitelist buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_none_channel_fg" => [ - "none_channel_fg", "color", - "foreground color for none channel buffer (e.g.: core/server/plugin ". - "buffer)", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_none_channel_bg" => [ - "none_channel_bg", "color", - "background color for none channel buffer (e.g.: core/server/plugin ". - "buffer)", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_default_fg" => [ - "queries_default_fg", "color", - "foreground color for query buffer without message", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_default_bg" => [ - "queries_default_bg", "color", - "background color for query buffer without message", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_message_fg" => [ - "queries_message_fg", "color", - "foreground color for query buffer with unread message", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_message_bg" => [ - "queries_message_bg", "color", - "background color for query buffer with unread message", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_highlight_fg" => [ - "queries_highlight_fg", "color", - "foreground color for query buffer with unread highlight", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "queries_highlight_bg" => [ - "queries_highlight_bg", "color", - "background color for query buffer with unread highlight", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_prefix_bufname" => [ - "prefix_bufname", "color", - "color for prefix of buffer name", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "color_suffix_bufname" => [ - "suffix_bufname", "color", - "color for suffix of buffer name", - "", 0, 0, "default", "default", 0, - "", "", "buffers_signal_config", "", "", "" - ], -); - -my %default_options_look = -( - "hotlist_counter" => [ - "hotlist_counter", "boolean", - "show number of message for the buffer (this option needs WeeChat >= ". - "0.3.5). The relevant option for notification is \"weechat.look.". - "buffer_notify_default\"", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_lag" => [ - "show_lag", "boolean", - "show lag behind server name. This option is using \"irc.color.". - "item_lag_finished\", ". - "\"irc.network.lag_min_show\" and \"irc.network.lag_refresh_interval\"", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "look_whitelist_buffers" => [ - "whitelist_buffers", "string", - "comma separated list of buffers for using a different color scheme ". - "(for example: freenode.#weechat,freenode.#weechat-fr)", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config_whitelist", "", "", "" - ], - "hide_merged_buffers" => [ - "hide_merged_buffers", "integer", - "hide merged buffers. The value determines which merged buffers should ". - "be hidden, keepserver meaning 'all except server buffers'. Other values ". - "correspondent to the buffer type.", - "server|channel|private|keepserver|all|none", 0, 0, "none", "none", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "indenting" => [ - "indenting", "integer", "use indenting for channel and query buffers. ". - "This option only takes effect if bar is left/right positioned", - "off|on|under_name", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "indenting_number" => [ - "indenting_number", "boolean", - "use indenting for numbers. This option only takes effect if bar is ". - "left/right positioned", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "indenting_amount" => [ - "indenting_amount", "integer", - "amount of indenting to use. This option only takes effect if bar ". - "is left/right positioned, and indenting is enabled", - "", 0, 16, 2, 2, 0, - "", "", "buffers_signal_config", "", "", "" - ], - "short_names" => [ - "short_names", "boolean", - "display short names (remove text before first \".\" in buffer name)", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_number" => [ - "show_number", "boolean", - "display buffer number in front of buffer name", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_number_char" => [ - "number_char", "string", - "display a char behind buffer number", - "", 0, 0, ".", ".", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_prefix_bufname" => [ - "prefix_bufname", "string", - "prefix displayed in front of buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_suffix_bufname" => [ - "suffix_bufname", "string", - "suffix displayed at end of buffer name", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_prefix" => [ - "prefix", "boolean", - "displays your prefix for channel in front of buffer name", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_prefix_empty" => [ - "prefix_empty", "boolean", - "use a placeholder for channels without prefix", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "show_prefix_query" => [ - "prefix_for_query", "string", - "prefix displayed in front of query buffer", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "sort" => [ - "sort", "integer", - "sort buffer-list by \"number\" or \"name\"", - "number|name", 0, 0, "number", "number", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "core_to_front" => [ - "core_to_front", "boolean", - "core buffer and buffers with free content will be listed first. ". - "Take only effect if buffer sort is by name", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "jump_prev_next_visited_buffer" => [ - "jump_prev_next_visited_buffer", "boolean", - "jump to previously or next visited buffer if you click with ". - "left/right mouse button on currently visiting buffer", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "name_size_max" => [ - "name_size_max", "integer", - "maximum size of buffer name. 0 means no limitation", - "", 0, 256, 0, 0, 0, - "", "", "buffers_signal_config", "", "", "" - ], - "name_crop_suffix" => [ - "name_crop_suffix", "string", - "contains an optional char(s) that is appended when buffer name is ". - "shortened", - "", 0, 0, "+", "+", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "detach" => [ - "detach", "integer", - "detach buffer from buffers list after a specific period of time ". - "(in seconds) without action (weechat ≥ 0.3.8 required) (0 means \"off\")", - "", 0, 31536000, 0, "number", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "immune_detach_buffers" => [ - "immune_detach_buffers", "string", - "comma separated list of buffers to NOT automatically detach. ". - "Allows \"*\" wildcard. Ex: \"BitlBee,freenode.*\"", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config_immune_detach_buffers", "", "", "" - ], - "detach_query" => [ - "detach_query", "boolean", - "query buffer will be detached", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "detach_buffer_immediately" => [ - "detach_buffer_immediately", "string", - "comma separated list of buffers to detach immediately. Buffers ". - "will attach again based on notify level set in ". - "\"detach_buffer_immediately_level\". Allows \"*\" wildcard. ". - "Ex: \"BitlBee,freenode.*\"", - "", 0, 0, "", "", 0, - "", "", "buffers_signal_config_detach_buffer_immediately", "", "", "" - ], - "detach_buffer_immediately_level" => [ - "detach_buffer_immediately_level", "integer", - "The value determines what notify level messages are reattached from activity. ". - " This option works in conjunction with \"detach_buffer_immediately\" ". - "0: low priority (like join/part messages), ". - "1: message, ". - "2: private, ". - "3: highlight", - "", 0, 3, 2, 2, 0, - "", "", "buffers_signal_config", "", "", "" - ], - "detach_free_content" => [ - "detach_free_content", "boolean", - "buffers with free content will be detached (Ex: iset, chanmon)", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "detach_displayed_buffers" => [ - "detach_displayed_buffers", "boolean", - "buffers displayed in a (split) window will be detached", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "detach_display_window_number" => [ - "detach_display_window_number", "boolean", - "window number will be add, behind buffer name (this option takes only ". - "effect with \"detach_displayed_buffers\" option)", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "mark_inactive" => [ - "mark_inactive", "boolean", - "if option is \"on\", inactive buffers (those you are not in) will have ". - "parentheses around them. An inactive buffer will not be detached.", - "", 0, 0, "off", "off", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "toggle_bar" => [ - "toggle_bar", "boolean", - "if option is \"on\", buffers bar will hide/show when script is ". - "(un)loaded.", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "mouse_move_buffer" => [ - "mouse_move_buffer", "boolean", - "if option is \"on\", mouse gestures (drag & drop) can move buffers in list.", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], - "mouse_wheel" => [ - "mouse_wheel", "boolean", - "if option is \"on\", mouse wheel jumps to previous/next buffer in list.", - "", 0, 0, "on", "on", 0, - "", "", "buffers_signal_config", "", "", "" - ], -); - - # section "color" - my $section_color = weechat::config_new_section( - $buffers_config_file, - "color", 0, 0, "", "", "", "", "", "", "", "", "", ""); - if ($section_color eq "") - { - weechat::config_free($buffers_config_file); - return; - } - foreach my $option (keys %default_options_color) - { - $options{$option} = weechat::config_new_option( - $buffers_config_file, - $section_color, - $default_options_color{$option}[0], - $default_options_color{$option}[1], - $default_options_color{$option}[2], - $default_options_color{$option}[3], - $default_options_color{$option}[4], - $default_options_color{$option}[5], - $default_options_color{$option}[6], - $default_options_color{$option}[7], - $default_options_color{$option}[8], - $default_options_color{$option}[9], - $default_options_color{$option}[10], - $default_options_color{$option}[11], - $default_options_color{$option}[12], - $default_options_color{$option}[13], - $default_options_color{$option}[14]); - } - - # section "look" - my $section_look = weechat::config_new_section( - $buffers_config_file, - "look", 0, 0, "", "", "", "", "", "", "", "", "", ""); - if ($section_look eq "") - { - weechat::config_free($buffers_config_file); - return; - } - foreach my $option (keys %default_options_look) - { - $options{$option} = weechat::config_new_option( - $buffers_config_file, - $section_look, - $default_options_look{$option}[0], - $default_options_look{$option}[1], - $default_options_look{$option}[2], - $default_options_look{$option}[3], - $default_options_look{$option}[4], - $default_options_look{$option}[5], - $default_options_look{$option}[6], - $default_options_look{$option}[7], - $default_options_look{$option}[8], - $default_options_look{$option}[9], - $default_options_look{$option}[10], - $default_options_look{$option}[11], - $default_options_look{$option}[12], - $default_options_look{$option}[13], - $default_options_look{$option}[14], - $default_options_look{$option}[15]); - } -} - -# get sort key of buffer -sub key_of_buffer -{ - my ($buffer, $number) = @_; - my $key = ""; - - if (weechat::config_integer($options{"sort"}) eq 1) # number = 0; name = 1 - { - my $name = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_custom_name"); - if (not defined $name or $name eq "") - { - if (weechat::config_boolean( $options{"short_names"} ) eq 1) - { - $name = $buffer->{"short_name"}; - } - else - { - $name = $buffer->{"name"}; - } - } - if ( weechat::config_boolean($options{"core_to_front"}) eq 1) - { - if ( weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") ne "channel" and - weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") ne "private" ) - { - my $type = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type"); - if ( $type eq "" and $name ne "weechat") - { - $name = " " . $name; - } - else - { - $name = " " . $name; - } - } - } - $key = sprintf("%s%08d", lc($name), $buffer->{"number"}); - } - else - { - $key = sprintf("%08d", $number); - } - - return $key; -} - -# whether to skip this buffer -sub skip_buffer -{ - my ($buffer) = @_; - return 0 if $buffer->{"active"}; - - if ( weechat::config_string($options{"hide_merged_buffers"}) eq "server" and - ($buffer->{"type"} eq "server" or $buffer->{"plugin_name"} eq "core") ) - { - return 1; - } - if ( weechat::config_string($options{"hide_merged_buffers"}) eq "channel" and - ($buffer->{"type"} eq "channel" or $buffer->{"plugin_name"} eq "core") ) - { - return 1; - } - if ( weechat::config_string($options{"hide_merged_buffers"}) eq "private" and - ($buffer->{"type"} eq "private" or $buffer->{"plugin_name"} eq "core") ) - { - return 1; - } - if ( weechat::config_string($options{"hide_merged_buffers"}) eq "keepserver" and - ($buffer->{"type"} ne "server" or $buffer->{"plugin_name"} eq "core") ) - { - return 1; - } - if ( weechat::config_string($options{"hide_merged_buffers"}) eq "all" ) - { - return 1; - } - - return 0; -} - -# truncate string from the end to $maxlength, 0 = don't truncate -sub truncate_end -{ - my ($name, $maxlength) = @_; - if ($maxlength == 0) - { - return $name; - } - my $str = decode("UTF-8", $name); - $str = substr($str, 0, $maxlength); - $str = encode("UTF-8", $str); - return $str; -} - -# format one buffer name in buffers bar: truncate and add parentheses -sub format_name -{ - my ($buffer, $fg, $bg) = @_; - my $output = ""; - my $crop_suffix = weechat::color( weechat::config_color($options{"color_number_char"}) ) . weechat::config_string($options{"name_crop_suffix"}); - my $maxlength = weechat::config_integer($options{"name_size_max"}); - - my $name = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_custom_name"); - if (not defined $name or $name eq "") - { - if (weechat::config_boolean( $options{"short_names"} ) eq 1) - { - $name = $buffer->{"short_name"}; - } - else - { - $name = $buffer->{"name"}; - } - } - - if ( $buffer->{"type"} eq "channel" && - weechat::config_boolean($options{"mark_inactive"}) eq 1 && - $buffer->{"nicks_count"} == 0 && - $maxlength > 2 ) - { - $output = weechat::color( weechat::config_color($options{"color_number_char"}) ). - "(". - weechat::color($fg). - weechat::color(",$bg"). - truncate_end($name, $maxlength-2). - (length(Encode::decode_utf8($name)) > $maxlength-2 ? $crop_suffix : ""). - weechat::color( weechat::config_color($options{"color_number_char"}) ). - ")"; - } - else - { - $output = weechat::color($fg). - weechat::color(",$bg"). - truncate_end($name, $maxlength). - (length(Encode::decode_utf8($name)) > $maxlength && $maxlength > 0 ? $crop_suffix : ""); - } - - return $output; -} - -# get fg and bg for a buffer -sub get_colors -{ - my ($buffer, %hotlist) = @_; - my $fg = weechat::config_color( $options{"color_default_fg"} ); - my $bg = weechat::config_color( $options{"color_default_bg"} ); - - if ( weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") eq "private" ) - { - if ( weechat::config_color($options{"queries_default_bg"}) ne "default" || weechat::config_color($options{"queries_default_fg"}) ne "default" ) - { - $fg = weechat::config_color( $options{"queries_default_fg"} ); - $bg = weechat::config_color( $options{"queries_default_bg"} ); - } - } - # check for core and buffer with free content - elsif ( weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") ne "channel" and - weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") ne "private" ) - { - $fg = weechat::config_color( $options{"color_none_channel_fg"} ); - $bg = weechat::config_color( $options{"color_none_channel_bg"} ); - } - # default whitelist buffer? - if (grep {$_ eq $buffer->{"name"}} @whitelist_buffers) - { - $fg = weechat::config_color( $options{"color_whitelist_default_fg"} ); - $bg = weechat::config_color( $options{"color_whitelist_default_bg"} ); - } - - $fg = "default" if ($fg eq ""); - $bg = "default" if ($bg eq ""); - - # color for channel and query buffer - if (exists $hotlist{$buffer->{"pointer"}}) - { - delete $buffers_timer{$buffer->{"pointer"}}; - # check if buffer is in whitelist buffer - if (grep {$_ eq $buffer->{"name"}} @whitelist_buffers) - { - $fg = weechat::config_color( $options{"color_whitelist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_fg"} ); - $bg = weechat::config_color( $options{"color_whitelist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_bg"} ); - } - elsif ( weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") eq "private" ) - { - # queries_default_fg/bg and buffers.color.queries_message_fg/bg - if ( weechat::config_color($options{"queries_highlight_fg"}) ne "default" || - weechat::config_color($options{"queries_highlight_bg"}) ne "default" || - weechat::config_color($options{"queries_message_fg"}) ne "default" || - weechat::config_color($options{"queries_message_bg"}) ne "default" ) - { - if ( ($hotlist{$buffer->{"pointer"}}) == 2 ) - { - $fg = weechat::config_color( $options{"queries_message_fg"} ); - $bg = weechat::config_color( $options{"queries_message_bg"} ); - } - - elsif ( ($hotlist{$buffer->{"pointer"}}) == 3 ) - { - $fg = weechat::config_color( $options{"queries_highlight_fg"} ); - $bg = weechat::config_color( $options{"queries_highlight_bg"} ); - } - } - else - { - $fg = weechat::config_color( $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_fg"} ); - $bg = weechat::config_color( $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_bg"} ); - } - } - else - { - $fg = weechat::config_color( $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_fg"} ); - $bg = weechat::config_color( $options{"color_hotlist_".$hotlist_level{$hotlist{$buffer->{"pointer"}}}."_bg"} ); - } - } - - if ($buffer->{"current_buffer"}) - { - $fg = weechat::config_color( $options{"color_current_fg"} ); - $bg = weechat::config_color( $options{"color_current_bg"} ); - } - return ($fg, $bg); -} - -# get nick prefix of channel -sub nick_prefix -{ - my ($buffer) = @_; - my $output = ""; - - my $nickname = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_nick"); - if ($nickname eq "") - { - return ""; - } - - # with version >= 0.3.2, this infolist will return only nick - # with older versions, whole nicklist is returned for buffer, and this can be very slow - my $infolist_nick = weechat::infolist_get("nicklist", $buffer->{"pointer"}, "nick_".$nickname); - if ($infolist_nick eq "") - { - return weechat::config_boolean($options{"show_prefix_empty"}) eq 1 && $buffer->{"type"} eq "channel" ? " " : ""; - } - while (weechat::infolist_next($infolist_nick)) - { - if ( (weechat::infolist_string($infolist_nick, "type") eq "nick") - && (weechat::infolist_string($infolist_nick, "name") eq $nickname) ) - { - my $prefix = weechat::infolist_string($infolist_nick, "prefix"); - if ( ($prefix eq " ") and (weechat::config_boolean($options{"show_prefix_empty"}) eq 0) ) - { - last; - } - - # with version >= 0.3.5, it is now a color name (for older versions: option name with color) - if ($weechat_version >= 0x00030500) - { - $output .= weechat::color(weechat::infolist_string($infolist_nick, "prefix_color")); - } - else - { - $output .= weechat::color(weechat::config_color( - weechat::config_get( - weechat::infolist_string($infolist_nick, "prefix_color")))); - } - $output .= $prefix; - last; - } - } - weechat::infolist_free($infolist_nick); - return $output; -} - -# get all hotlist counts for a buffer -sub hotlist_counts -{ - my ($buffer, %hotlist) = @_; - my $delim_color = weechat::color( weechat::config_color($options{"color_number_char"}) ); - my $counters = ""; - - foreach my $counter ("low", "message", "private", "highlight") - { - if ($hotlist{$buffer."_count_${counter}"}) - { - $counters =~ s/([0-9])$/$1,/; - $counters .= weechat::color( weechat::config_color($options{"color_hotlist_${counter}_fg"}) ) . $hotlist{$buffer."_count_${counter}"}; - } - } - return " $delim_color($counters$delim_color)"; -} - -# buffers item -sub build_buffers -{ - my $str = ""; - - # get bar position (left/right/top/bottom) - my $position = "left"; - my $option_position = weechat::config_get("weechat.bar.buffers.position"); - if ($option_position ne "") - { - $position = weechat::config_string($option_position); - } - - # read hotlist - my %hotlist; - my $infolist = weechat::infolist_get("hotlist", "", ""); - while (weechat::infolist_next($infolist)) - { - $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")} = - weechat::infolist_integer($infolist, "priority"); - if ( weechat::config_boolean( $options{"hotlist_counter"} ) eq 1 and $weechat_version >= 0x00030500 ) - { - $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")."_count_low"} = - weechat::infolist_integer($infolist, "count_00"); # low message - $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")."_count_message"} = - weechat::infolist_integer($infolist, "count_01"); # channel message - $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")."_count_private"} = - weechat::infolist_integer($infolist, "count_02"); # private message - $hotlist{weechat::infolist_pointer($infolist, "buffer_pointer")."_count_highlight"} = - weechat::infolist_integer($infolist, "count_03"); # highlight message - } - } - weechat::infolist_free($infolist); - - # read buffers list - @buffers_focus = (); - my @buffers; - my @current1 = (); - my @current2 = (); - my $old_number = -1; - my $max_number = 0; - my $max_number_digits = 0; - my $active_seen = 0; - my $current_time = time(); - - $infolist = weechat::infolist_get("buffer", "", ""); - while (weechat::infolist_next($infolist)) - { - # ignore hidden buffers (WeeChat >= 0.4.4) - if ($weechat_version >= 0x00040400 and weechat::infolist_integer($infolist, "hidden")) - { - next; - } - my $buffer; - my $number = weechat::infolist_integer($infolist, "number"); - if ($number ne $old_number) - { - @buffers = (@buffers, @current2, @current1); - @current1 = (); - @current2 = (); - $active_seen = 0; - } - if ($number > $max_number) - { - $max_number = $number; - } - $old_number = $number; - my $active = weechat::infolist_integer($infolist, "active"); - if ($active) - { - $active_seen = 1; - } - $buffer->{"pointer"} = weechat::infolist_pointer($infolist, "pointer"); - $buffer->{"number"} = $number; - $buffer->{"active"} = $active; - $buffer->{"current_buffer"} = weechat::infolist_integer($infolist, "current_buffer"); - $buffer->{"num_displayed"} = weechat::infolist_integer($infolist, "num_displayed"); - $buffer->{"plugin_name"} = weechat::infolist_string($infolist, "plugin_name"); - $buffer->{"name"} = weechat::infolist_string($infolist, "name"); - $buffer->{"short_name"} = weechat::infolist_string($infolist, "short_name"); - $buffer->{"full_name"} = $buffer->{"plugin_name"}.".".$buffer->{"name"}; - $buffer->{"type"} = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type"); - - # check if buffer is active (or maybe a /part, /kick channel) - if ($buffer->{"type"} eq "channel" and weechat::config_boolean( $options{"mark_inactive"} ) eq 1) - { - my $server = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_server"); - my $channel = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_channel"); - my $infolist_channel = weechat::infolist_get("irc_channel", "", "$server,$channel"); - if ($infolist_channel) - { - weechat::infolist_next($infolist_channel); - $buffer->{"nicks_count"} = weechat::infolist_integer($infolist_channel, "nicks_count"); - } - else - { - $buffer->{"nicks_count"} = 0; - } - weechat::infolist_free($infolist_channel); - } - - my $maxlevel = weechat::config_integer($options{"detach_buffer_immediately_level"}); - next if ( check_detach_buffer_immediately($buffer->{"name"}) eq 1 - and $buffer->{"current_buffer"} eq 0 - and ( not exists $hotlist{$buffer->{"pointer"}} or $hotlist{$buffer->{"pointer"}} < $maxlevel) ); # checking for buffer to immediately detach - - if (check_immune_detached_buffers($buffer->{"name"})) - { - if ($active_seen) - { - push(@current2, $buffer); - } - else - { - push(@current1, $buffer); - } - } - else - { - my $detach_time = weechat::config_integer($options{"detach"}); - # set timer for buffers with no hotlist action - $buffers_timer{$buffer->{"pointer"}} = $current_time - if ( not exists $hotlist{$buffer->{"pointer"}} - and $buffer->{"type"} eq "channel" - and not exists $buffers_timer{$buffer->{"pointer"}} - and $detach_time > 0); - - $buffers_timer{$buffer->{"pointer"}} = $current_time - if (weechat::config_boolean($options{"detach_query"}) eq 1 - and not exists $hotlist{$buffer->{"pointer"}} - and $buffer->{"type"} eq "private" - and not exists $buffers_timer{$buffer->{"pointer"}} - and $detach_time > 0); - - $detach_time = 0 - if (weechat::config_boolean($options{"detach_query"}) eq 0 - and $buffer->{"type"} eq "private"); - - # free content buffer - $buffers_timer{$buffer->{"pointer"}} = $current_time - if (weechat::config_boolean($options{"detach_free_content"}) eq 1 - and not exists $hotlist{$buffer->{"pointer"}} - and $buffer->{"type"} eq "" - and not exists $buffers_timer{$buffer->{"pointer"}} - and $detach_time > 0); - - $detach_time = 0 - if (weechat::config_boolean($options{"detach_free_content"}) eq 0 - and $buffer->{"type"} eq ""); - - $detach_time = 0 - if (weechat::config_boolean($options{"mark_inactive"}) eq 1 - and defined $buffer->{"nicks_count"} - and $buffer->{"nicks_count"} == 0); - - # check for detach - unless ( $buffer->{"current_buffer"} eq 0 - and not exists $hotlist{$buffer->{"pointer"}} - and exists $buffers_timer{$buffer->{"pointer"}} - and $detach_time > 0 - and $weechat_version >= 0x00030800 - and $current_time - $buffers_timer{$buffer->{"pointer"}} >= $detach_time) - { - if ($active_seen) - { - push(@current2, $buffer); - } - else - { - push(@current1, $buffer); - } - } - elsif ( $buffer->{"current_buffer"} eq 0 - and not exists $hotlist{$buffer->{"pointer"}} - and exists $buffers_timer{$buffer->{"pointer"}} - and $detach_time > 0 - and $weechat_version >= 0x00030800 - and $current_time - $buffers_timer{$buffer->{"pointer"}} >= $detach_time - and $buffer->{"num_displayed"} eq 1 # check for option detach_displayed_buffers and if buffer is displayed in a split window - and weechat::config_boolean($options{"detach_displayed_buffers"}) eq 0 ) - { - my $infolist_window = weechat::infolist_get("window", "", ""); - while (weechat::infolist_next($infolist_window)) - { - my $buffer_ptr = weechat::infolist_pointer($infolist_window, "buffer"); - if ($buffer_ptr eq $buffer->{"pointer"}) - { - $buffer->{"window"} = weechat::infolist_integer($infolist_window, "number"); - } - } - weechat::infolist_free($infolist_window); - push(@current2, $buffer); - } - } - - } # end of while - - $max_number_digits = length($max_number); - @buffers = (@buffers, @current2, @current1); - weechat::infolist_free($infolist); - - # sort buffers by number, name or shortname - my %sorted_buffers; - - my $number = 0; - for my $buffer (@buffers) - { - $sorted_buffers{key_of_buffer($buffer, $number)} = $buffer; - $number++; - } - - # build string with buffers - $old_number = -1; - foreach my $key (sort keys %sorted_buffers) - { - my $buffer = $sorted_buffers{$key}; - - if (skip_buffer($buffer)) - { - next; - } - - push(@buffers_focus, $buffer); # buffer > buffers_focus, for mouse support - - my ($fg, $bg) = get_colors($buffer, %hotlist); - my $color_bg = weechat::color(",$bg"); - - if ( weechat::config_string($options{"show_prefix_bufname"}) ne "" ) - { - $str .= $color_bg. - weechat::color( weechat::config_color($options{"color_prefix_bufname"}) ). - weechat::config_string( $options{"show_prefix_bufname"} ). - weechat::color("default"); - } - - if ( weechat::config_boolean($options{"show_number"}) eq 1 ) # on - { - if (( weechat::config_boolean( $options{"indenting_number"} ) eq 1) - && (($position eq "left") || ($position eq "right"))) - { - $str .= weechat::color("default") - . $color_bg - . " " x ($max_number_digits - length($buffer->{"number"})); - } - - if ($old_number ne $buffer->{"number"}) - { - $str .= weechat::color( weechat::config_color($options{"color_number"}) ) - .$color_bg - .$buffer->{"number"} - .weechat::color("default") - .$color_bg - .weechat::color( weechat::config_color($options{"color_number_char"}) ) - .weechat::config_string( $options{"show_number_char"} ) - .$color_bg; - } - else - { - # Indentation aligns channels in a visually appealing way - # when viewing list top-to-bottom... - my $indent = " " x length($buffer->{"number"}) . " "; - # ...except when list is top/bottom and channels left-to-right. - my $option_pos = weechat::config_string( weechat::config_get("weechat.bar.buffers.position") ); - if ( ($option_pos eq 'top') || ($option_pos eq 'bottom') - and weechat::config_string( weechat::config_get("weechat.bar.buffers.filling_top_bottom") ) =~ /horizontal/ ) - { - $indent = ''; - } - $str .= weechat::color("default") . $color_bg . $indent; - } - } - - if ( ( weechat::config_integer( $options{"indenting"} ) ne 0 ) # indenting NOT off - && (($position eq "left") || ($position eq "right")) ) - { - my $type = weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type"); - if (($type eq "channel") || ($type eq "private")) - { - if ( weechat::config_integer($options{"indenting"}) eq 2 # under_name - and weechat::config_integer($options{"indenting_number"}) eq 0 - and weechat::config_boolean($options{"show_number"}) ne 0 ) - { - $str .= " " x ( $max_number_digits - length($buffer->{"number"}) ); - } - $str .= " " x weechat::config_integer($options{"indenting_amount"}); - } - } - - $str .= weechat::config_string($options{"show_prefix_query"}) if (weechat::config_string($options{"show_prefix_query"}) ne "" and $buffer->{"type"} eq "private"); - $str .= nick_prefix($buffer) if (weechat::config_boolean($options{"show_prefix"}) eq 1); - $str .= format_name($buffer, $fg, $bg); - $str .= hotlist_counts($buffer->{"pointer"}, %hotlist) - if ( weechat::config_boolean($options{"hotlist_counter"}) eq 1 and $weechat_version >= 0x00030500 and defined $hotlist{$buffer->{"pointer"}}); - - # lag - if ( weechat::buffer_get_string($buffer->{"pointer"}, "localvar_type") eq "server" and weechat::config_boolean($options{"show_lag"}) eq 1) - { - my $color_lag = weechat::config_color(weechat::config_get("irc.color.item_lag_finished")); - my $min_lag = weechat::config_integer(weechat::config_get("irc.network.lag_min_show")); - my $infolist_server = weechat::infolist_get("irc_server", "", $buffer->{"short_name"}); - weechat::infolist_next($infolist_server); - my $lag = (weechat::infolist_integer($infolist_server, "lag")); - weechat::infolist_free($infolist_server); - if ( int($lag) > int($min_lag) ) - { - $lag = $lag / 1000; - $str .= weechat::color("default") . " (" . weechat::color($color_lag) . $lag . weechat::color("default") . ")"; - } - } - - # window number - if (weechat::config_boolean($options{"detach_displayed_buffers"}) eq 0 - and weechat::config_boolean($options{"detach_display_window_number"}) eq 1 - and $buffer->{"window"}) - { - $str .= weechat::color("default"). - " (". - weechat::color( weechat::config_color($options{"color_number"}) ). - $buffer->{"window"}. - weechat::color("default"). - ")"; - } - $str .= weechat::color("default"); - - # suffix - if ( weechat::config_string($options{"show_suffix_bufname"}) ne "" ) - { - $str .= weechat::color( weechat::config_color($options{"color_suffix_bufname"}) ). - weechat::config_string( $options{"show_suffix_bufname"} ). - weechat::color("default"); - } - - $str .= "\n"; - $old_number = $buffer->{"number"}; - } # end of foreach - - # remove spaces and/or linefeed at the end - $str =~ s/\s+$//; - chomp($str); - return $str; -} - -# react to numerous signals -sub buffers_signal_buffer -{ - my ($data, $signal, $signal_data) = @_; - - # check for buffer_switch and set or remove detach time - if ($weechat_version >= 0x00030800) - { - if ($signal eq "buffer_switch") - { - my $pointer = weechat::hdata_get_list (weechat::hdata_get("buffer"), "gui_buffer_last_displayed"); # get switched buffer - my $current_time = time(); - if ( weechat::buffer_get_string($pointer, "localvar_type") eq "channel") - { - $buffers_timer{$pointer} = $current_time; - } - else - { - delete $buffers_timer{$pointer}; - } - } - elsif ($signal eq "buffer_opened") - { - my $current_time = time(); - $buffers_timer{$signal_data} = $current_time; - } - elsif ($signal eq "buffer_closing") - { - delete $buffers_timer{$signal_data}; - } - } - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub buffers_signal_hotlist -{ - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - - -sub buffers_signal_config_whitelist -{ - @whitelist_buffers = split( /,/, weechat::config_string($options{"look_whitelist_buffers"}) ); - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub buffers_signal_config_immune_detach_buffers -{ - @immune_detach_buffers = split( /,/, weechat::config_string($options{"immune_detach_buffers"}) ); - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub buffers_signal_config_detach_buffer_immediately -{ - @detach_buffer_immediately = split( /,/, weechat::config_string($options{"detach_buffer_immediately"}) ); - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -sub buffers_signal_config -{ - weechat::bar_item_update($SCRIPT_NAME); - return weechat::WEECHAT_RC_OK; -} - -# called when mouse click occured in buffers item: this callback returns buffer -# hash according to line of item where click occured -sub buffers_focus_buffers -{ - my %info = %{$_[1]}; - my $item_line = int($info{"_bar_item_line"}); - undef my $hash; - if (($info{"_bar_item_name"} eq $SCRIPT_NAME) && ($item_line >= 0) && ($item_line <= $#buffers_focus)) - { - $hash = $buffers_focus[$item_line]; - } - else - { - $hash = {}; - my $hash_focus = $buffers_focus[0]; - foreach my $key (keys %$hash_focus) - { - $hash->{$key} = "?"; - } - } - return $hash; -} - -# called when a mouse action is done on buffers item, to execute action -# possible actions: jump to a buffer or move buffer in list (drag & drop of buffer) -sub buffers_hsignal_mouse -{ - my ($data, $signal, %hash) = ($_[0], $_[1], %{$_[2]}); - my $current_buffer = weechat::buffer_get_integer(weechat::current_buffer(), "number"); # get current buffer number - - if ( $hash{"_key"} eq "button1" ) - { - # left mouse button - if ($hash{"number"} eq $hash{"number2"}) - { - if ( weechat::config_boolean($options{"jump_prev_next_visited_buffer"}) ) - { - if ( $current_buffer eq $hash{"number"} ) - { - weechat::command("", "/input jump_previously_visited_buffer"); - } - else - { - weechat::command("", "/buffer ".$hash{"full_name"}); - } - } - else - { - weechat::command("", "/buffer ".$hash{"full_name"}); - } - } - else - { - move_buffer(%hash) if (weechat::config_boolean($options{"mouse_move_buffer"})); - } - } - elsif ( ($hash{"_key"} eq "button2") && (weechat::config_boolean($options{"jump_prev_next_visited_buffer"})) ) - { - # right mouse button - if ( $current_buffer eq $hash{"number2"} ) - { - weechat::command("", "/input jump_next_visited_buffer"); - } - } - elsif ( $hash{"_key"} =~ /wheelup$/ ) - { - # wheel up - if (weechat::config_boolean($options{"mouse_wheel"})) - { - weechat::command("", "/buffer -1"); - } - } - elsif ( $hash{"_key"} =~ /wheeldown$/ ) - { - # wheel down - if (weechat::config_boolean($options{"mouse_wheel"})) - { - weechat::command("", "/buffer +1"); - } - } - else - { - my $infolist = weechat::infolist_get("hook", "", "command,menu"); - my $has_menu_command = weechat::infolist_next($infolist); - weechat::infolist_free($infolist); - - if ( $has_menu_command && $hash{"_key"} =~ /button2/ ) - { - if ($hash{"number"} eq $hash{"number2"}) - { - weechat::command($hash{"pointer"}, "/menu buffer1 $hash{short_name} $hash{number}"); - } - else - { - weechat::command($hash{"pointer"}, "/menu buffer2 $hash{short_name}/$hash{short_name2} $hash{number} $hash{number2}") - } - } - else - { - move_buffer(%hash) if (weechat::config_boolean($options{"mouse_move_buffer"})); - } - } -} - -sub move_buffer -{ - my %hash = @_; - my $number2 = $hash{"number2"}; - if ($number2 eq "?") - { - # if number 2 is not known (end of gesture outside buffers list), then set it - # according to mouse gesture - $number2 = "1"; - if (($hash{"_key"} =~ /gesture-right/) || ($hash{"_key"} =~ /gesture-down/)) - { - $number2 = "999999"; - if ($weechat_version >= 0x00030600) - { - my $hdata_buffer = weechat::hdata_get("buffer"); - my $last_gui_buffer = weechat::hdata_get_list($hdata_buffer, "last_gui_buffer"); - if ($last_gui_buffer) - { - $number2 = weechat::hdata_integer($hdata_buffer, $last_gui_buffer, "number") + 1; - } - } - } - } - my $ptrbuf = weechat::current_buffer(); - weechat::command($hash{"pointer"}, "/buffer move ".$number2); -} - -sub check_immune_detached_buffers -{ - my ($buffername) = @_; - foreach ( @immune_detach_buffers ) - { - my $immune_buffer = weechat::string_mask_to_regex($_); - if ($buffername =~ /^$immune_buffer$/i) - { - return 1; - } - } - return 0; -} - -sub check_detach_buffer_immediately -{ - my ($buffername) = @_; - foreach ( @detach_buffer_immediately ) - { - my $detach_buffer = weechat::string_mask_to_regex($_); - if ($buffername =~ /^$detach_buffer$/i) - { - return 1; - } - } - return 0; -} - -sub shutdown_cb -{ - weechat::command("", "/bar hide " . $SCRIPT_NAME) if ( weechat::config_boolean($options{"toggle_bar"}) eq 1 ); - return weechat::WEECHAT_RC_OK -} - -sub check_bar_item -{ - my $item = 0; - my $infolist = weechat::infolist_get("bar", "", ""); - while (weechat::infolist_next($infolist)) - { - my $bar_items = weechat::infolist_string($infolist, "items"); - if (index($bar_items, $SCRIPT_NAME) != -1) - { - my $name = weechat::infolist_string($infolist, "name"); - if ($name ne $SCRIPT_NAME) - { - $item = 1; - last; - } - } - } - weechat::infolist_free($infolist); - return $item; -} diff --git a/weechat/.weechat/perl/highmon.pl b/weechat/.weechat/perl/highmon.pl deleted file mode 100644 index 1c07712..0000000 --- a/weechat/.weechat/perl/highmon.pl +++ /dev/null @@ -1,1139 +0,0 @@ -# -# highmon.pl - Highlight Monitoring for weechat 0.3.0 -# Version 2.5 -# -# Add 'Highlight Monitor' buffer/bar to log all highlights in one spot -# -# Usage: -# /highmon [help] | [monitor [channel [server]]] | [clean default|orphan|all] | clearbar -# Command wrapper for highmon commands -# -# /highmon clean default|orphan|all will clean the config section of default 'on' entries, -# channels you are no longer joined, or both -# -# /highmon clearbar will clear the contents of highmon's bar output -# -# /highmon monitor [channel] [server] is used to toggle a highlight monitoring on and off, this -# can be used in the channel buffer for the channel you wish to toggle, or be given -# with arguments e.g. /highmon monitor #weechat freenode -# -# /set plugins.var.perl.highmon.alignment -# The config setting "alignment" can be changed to; -# "channel", "schannel", "nchannel", "channel,nick", "schannel,nick", "nchannel,nick" -# to change how the monitor appears -# The 'channel' value will show: "#weechat" -# The 'schannel' value will show: "6" -# The 'nchannel' value will show: "6:#weechat" -# -# /set plugins.var.perl.highmon.short_names -# Setting this to 'on' will trim the network name from highmon, ala buffers.pl -# -# /set plugins.var.perl.highmon.merge_private -# Setting this to 'on' will merge private messages to highmon's display -# -# /set plugins.var.perl.highmon.color_buf -# This turns colored buffer names on or off, you can also set a single fixed color by using a weechat color name. -# This *must* be a valid color name, or weechat will likely do unexpected things :) -# -# /set plugins.var.perl.highmon.hotlist_show -# Setting this to 'on' will let the highmon buffer appear in hotlists -# (status bar/buffer.pl) -# -# /set plugins.var.perl.highmon.away_only -# Setting this to 'on' will only put messages in the highmon buffer when -# you set your status to away -# -# /set plugins.var.perl.highmon.logging -# Toggles logging status for highmon buffer (default: off) -# -# /set plugins.var.perl.highmon.output -# Changes where output method of highmon; takes either "bar" or "buffer" (default; buffer) -# /set plugins.var.perl.highmon.bar_lines -# Changes the amount of lines the output bar will hold. -# (Only appears once output has been set to bar, defaults to 10) -# /set plugins.var.perl.highmon.bar_scrolldown -# Toggles the bar scrolling at the bottom when new highlights are received -# (Only appears once output has been set to bar, defaults to off) -# -# /set plugins.var.perl.highmon.nick_prefix -# /set plugins.var.perl.highmon.nick_suffix -# Sets the prefix and suffix chars in the highmon buffer -# (Defaults to <> if nothing set, and blank if there is) -# -# servername.#channel -# servername is the internal name for the server (set when you use /server add) -# #channel is the channel name, (where # is whatever channel type that channel happens to be) -# -# Optional, set up tweaks; Hide the status and input lines on highmon -# -# /set weechat.bar.status.conditions "${window.buffer.full_name} != perl.highmon" -# /set weechat.bar.input.conditions "${window.buffer.full_name} != perl.highmon" -# - -# Bugs and feature requests at: https://github.com/KenjiE20/highmon - -# History: -# 2014-08-16, KenjiE20 : -# v2.5: -add: clearbar command to clear bar output -# -add: firstrun output prompt to check the help text for set up hints as they were being missed -# and update hint for conditions to use eval -# -change: Make all outputs use the date callback for more accurate timestamps (thanks Germainz) -# 2013-12-04, KenjiE20 : -# v2.4: -add: Support for eval style colour codes in time format used for bar output -# 2013-10-22, KenjiE20 : -# v2.3.3.2: -fix: Typo in fix command -# 2013-10-10, KenjiE20 : -# v2.3.3.1: -fix: Typo in closed buffer warning -# 2013-10-07, KenjiE20 : -# v2.3.3: -add: Warning and fixer for accidental buffer closes -# 2013-01-15, KenjiE20 : -# v2.3.2: -fix: Let bar output use the string set in weechat's config option -# -add: github info -# 2012-04-15, KenjiE20 : -# v2.3.1: -fix: Colour tags in bar timestamp string -# 2012-02-28, KenjiE20 : -# v2.3: -feature: Added merge_private option to display private messages (default: off) -# -fix: Channel name colours now show correctly when set to on -# 2011-08-07, Sitaktif : -# v2.2.1: -feature: Add "bar_scrolldown" option to have the bar display the latest hl at anytime -# -fix: Set up bar-specific config at startup if 'output' is already configured as 'bar' -# 2010-12-22, KenjiE20 : -# v2.2: -change: Use API instead of config to find channel colours, ready for 0.3.4 and 256 colours -# 2010-12-13, idl0r & KenjiE20 : -# v2.1.3: -fix: perl errors caused by bar line counter -# -fix: Add command list to inbuilt help -# 2010-09-30, KenjiE20 : -# v2.1.2: -fix: logging config was not correctly toggling back on (thanks to sleo for noticing) -# -version sync w/ chanmon -# 2010-08-27, KenjiE20 : -# v2.1: -feature: Add 'nchannel' option to alignment to display buffer and name -# 2010-04-25, KenjiE20 : -# v2.0: Release as version 2.0 -# 2010-04-24, KenjiE20 : -# v1.9: Rewrite for v2.0 -# Bring feature set in line with chanmon 2.0 -# -code change: Made more subs to shrink the code down in places -# -fix: Stop highmon attempting to double load/hook -# -fix: Add version dependant check for away status -# 2010-01-25, KenjiE20 : -# v1.7: -fixture: Let highmon be aware of nick_prefix/suffix -# and allow custom prefix/suffix for chanmon buffer -# (Defaults to <> if nothing set, and blank if there is) -# (Thanks to m4v for these) -# 2009-09-07, KenjiE20 : -# v1.6: -feature: colored buffer names -# -change: version sync with chanmon -# 2009-09-05, KenjiE20 : -# v1.2: -fix: disable buffer highlight -# 2009-09-02, KenjiE20 : -# v.1.1.1 -change: Stop unsightly text block on '/help' -# 2009-08-10, KenjiE20 : -# v1.1: In-client help added -# 2009-08-02, KenjiE20 : -# v1.0: Initial Public Release - -# Copyright (c) 2009 by KenjiE20 -# -# 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 . -# - -@bar_lines = (); -@bar_lines_time = (); -# Replicate info earlier for in-client help - -$highmonhelp = weechat::color("bold")."/highmon [help] | [monitor [channel [server]]] | [clean default|orphan|all] | clearbar".weechat::color("-bold")." - Command wrapper for highmon commands - -".weechat::color("bold")."/highmon clean default|orphan|all".weechat::color("-bold")." will clean the config section of default 'on' entries, channels you are no longer joined, or both - -".weechat::color("bold")."/highmon clearbar".weechat::color("-bold")." will clear the contents of highmon's bar output - -".weechat::color("bold")."/highmon monitor [channel] [server]".weechat::color("-bold")." is used to toggle a highlight monitoring on and off, this can be used in the channel buffer for the channel you wish to toggle, or be given with arguments e.g. /highmon monitor #weechat freenode - -".weechat::color("bold")."/set plugins.var.perl.highmon.alignment".weechat::color("-bold")." - The config setting \"alignment\" can be changed to; - \"channel\", \"schannel\", \"nchannel\", \"channel,nick\", \"schannel,nick\", \"nchannel,nick\" - to change how the monitor appears - The 'channel' value will show: \"#weechat\" - The 'schannel' value will show: \"6\" - The 'nchannel' value will show: \"6:#weechat\" - -".weechat::color("bold")."/set plugins.var.perl.highmon.short_names".weechat::color("-bold")." - Setting this to 'on' will trim the network name from highmon, ala buffers.pl - -".weechat::color("bold")."/set plugins.var.perl.highmon.merge_private".weechat::color("-bold")." - Setting this to 'on' will merge private messages to highmon's display - -".weechat::color("bold")."/set plugins.var.perl.highmon.color_buf".weechat::color("-bold")." - This turns colored buffer names on or off, you can also set a single fixed color by using a weechat color name. - This ".weechat::color("bold")."must".weechat::color("-bold")." be a valid color name, or weechat will likely do unexpected things :) - -".weechat::color("bold")."/set plugins.var.perl.highmon.hotlist_show".weechat::color("-bold")." -Setting this to 'on' will let the highmon buffer appear in hotlists (status bar/buffer.pl) - -".weechat::color("bold")."/set plugins.var.perl.highmon.away_only".weechat::color("-bold")." -Setting this to 'on' will only put messages in the highmon buffer when you set your status to away - -".weechat::color("bold")."/set plugins.var.perl.highmon.logging".weechat::color("-bold")." - Toggles logging status for highmon buffer (default: off) - -".weechat::color("bold")."/set plugins.var.perl.highmon.output".weechat::color("-bold")." - Changes where output method of highmon; takes either \"bar\" or \"buffer\" (default; buffer) -".weechat::color("bold")."/set plugins.var.perl.highmon.bar_lines".weechat::color("-bold")." - Changes the amount of lines the output bar will hold. - (Only appears once output has been set to bar, defaults to 10) -".weechat::color("bold")."/set plugins.var.perl.highmon.bar_scrolldown".weechat::color("-bold")." - Toggles the bar scrolling at the bottom when new highlights are received - (Only appears once output has been set to bar, defaults to off) - -".weechat::color("bold")."/set plugins.var.perl.highmon.nick_prefix".weechat::color("-bold")." -".weechat::color("bold")."/set plugins.var.perl.highmon.nick_suffix".weechat::color("-bold")." - Sets the prefix and suffix chars in the highmon buffer - (Defaults to <> if nothing set, and blank if there is) - -".weechat::color("bold")."servername.#channel".weechat::color("-bold")." - servername is the internal name for the server (set when you use /server add) - #channel is the channel name, (where # is whatever channel type that channel happens to be) - -".weechat::color("bold")."Optional, set up tweaks;".weechat::color("-bold")." Hide the status and input lines on highmon - -".weechat::color("bold")."/set weechat.bar.status.conditions \"\${window.buffer.full_name} != perl.highmon\"".weechat::color("-bold")." -".weechat::color("bold")."/set weechat.bar.input.conditions \"\${window.buffer.full_name} != perl.highmon\"".weechat::color("-bold"); -# Print verbose help -sub print_help -{ - weechat::print("", "\t".weechat::color("bold")."Highmon Help".weechat::color("-bold")."\n\n"); - weechat::print("", "\t".$highmonhelp); - return weechat::WEECHAT_RC_OK; -} - -# Bar item build -sub highmon_bar_build -{ - # Get max lines - $max_lines = weechat::config_get_plugin("bar_lines"); - $max_lines = $max_lines ? $max_lines : 10; - $str = ''; - $align_num = 0; - $count = 0; - # Keep lines within max - while ($#bar_lines > $max_lines) - { - shift(@bar_lines); - shift(@bar_lines_time); - } - # So long as we have some lines, build a string - if (@bar_lines) - { - # Build loop - $sep = " ".weechat::config_string(weechat::config_get("weechat.look.prefix_suffix"))." "; - foreach(@bar_lines) - { - # Find max align needed - $prefix_num = (index(weechat::string_remove_color($_, ""), $sep)); - $align_num = $prefix_num if ($prefix_num > $align_num); - } - foreach(@bar_lines) - { - # Get align for this line - $prefix_num = (index(weechat::string_remove_color($_, ""), $sep)); - - # Make string - $str = $str.$bar_lines_time[$count]." ".(" " x ($align_num - $prefix_num)).$_."\n"; - # Increment count for sync with time list - $count++; - } - } - return $str; -} - -# Make a new bar -sub highmon_bar_open -{ - # Make the bar item - weechat::bar_item_new("highmon", "highmon_bar_build", ""); - - $highmon_bar = weechat::bar_new ("highmon", "off", 100, "root", "", "bottom", "vertical", "vertical", 0, 0, "default", "cyan", "default", "on", "highmon"); - - return weechat::WEECHAT_RC_OK; -} -# Close bar -sub highmon_bar_close -{ - # Find if bar exists - $highmon_bar = weechat::bar_search("highmon"); - # If is does, close it - if ($highmon_bar ne "") - { - weechat::bar_remove($highmon_bar); - } - - # Find if bar item exists - $highmon_bar_item = weechat::bar_item_search("highmon_bar"); - # If is does, close it - if ($highmon_bar_item ne "") - { - weechat::bar_remove($highmon_bar_item); - } - - @bar_lines = (); - return weechat::WEECHAT_RC_OK; -} - -# Make a new buffer -sub highmon_buffer_open -{ - # Search for pre-existing buffer - $highmon_buffer = weechat::buffer_search("perl", "highmon"); - - # Make a new buffer - if ($highmon_buffer eq "") - { - $highmon_buffer = weechat::buffer_new("highmon", "highmon_buffer_input", "", "highmon_buffer_close", ""); - } - - # Turn off notify, highlights - if ($highmon_buffer ne "") - { - if (weechat::config_get_plugin("hotlist_show" eq "off")) - { - weechat::buffer_set($highmon_buffer, "notify", "0"); - } - weechat::buffer_set($highmon_buffer, "highlight_words", "-"); - weechat::buffer_set($highmon_buffer, "title", "Highlight Monitor"); - # Set no_log - if (weechat::config_get_plugin("logging") eq "off") - { - weechat::buffer_set($highmon_buffer, "localvar_set_no_log", "1"); - } - } - return weechat::WEECHAT_RC_OK; -} -# Buffer input has no action -sub highmon_buffer_input -{ - return weechat::WEECHAT_RC_OK; -} -# Close up -sub highmon_buffer_close -{ - $highmon_buffer = ""; - # If user hasn't changed output style warn user - if (weechat::config_get_plugin("output") eq "buffer") - { - weechat::print("", "\tHighmon buffer has been closed but output is still set to buffer, unusual results may occur. To recreate the buffer use ".weechat::color("bold")."/highmon fix".weechat::color("-bold")); - } - return weechat::WEECHAT_RC_OK; -} - -# Highmon command wrapper -sub highmon_command_cb -{ - $data = $_[0]; - $buffer = $_[1]; - $args = $_[2]; - my $cmd = ''; - my $arg = ''; - - if ($args ne "") - { - # Split argument up - @arg_array = split(/ /,$args); - # Take first as command - $cmd = shift(@arg_array); - # Rebuild string to pass to subs - if (@arg_array) - { - $arg = join(" ", @arg_array); - } - } - - # Help command - if ($cmd eq "" || $cmd eq "help") - { - print_help(); - } - # /monitor command - elsif ($cmd eq "monitor") - { - highmon_toggle($data, $buffer, $arg); - } - # /highclean command - elsif ($cmd eq "clean") - { - highmon_config_clean($data, $buffer, $arg); - } - # clearbar command - elsif ($cmd eq "clearbar") - { - if (weechat::config_get_plugin("output") eq "bar") - { - @bar_lines = (); - weechat::bar_item_update("highmon"); - } - } - # Fix closed buffer - elsif ($cmd eq "fix") - { - if (weechat::config_get_plugin("output") eq "buffer" && $highmon_buffer eq "") - { - highmon_buffer_open(); - } - } - return weechat::WEECHAT_RC_OK; -} - -# Clean up config entries -sub highmon_config_clean -{ - $data = $_[0]; - $buffer = $_[1]; - $args = $_[2]; - - # Don't do anything if bad option given - if ($args ne "default" && $args ne "orphan" && $args ne "all") - { - weechat::print("", "\thighmon.pl: Unknown option"); - return weechat::WEECHAT_RC_OK; - } - - @chans = (); - # Load an infolist of highmon options - $infolist = weechat::infolist_get("option", "", "*highmon*"); - while (weechat::infolist_next($infolist)) - { - $name = weechat::infolist_string($infolist, "option_name"); - $name =~ s/perl\.highmon\.(\w*)\.([#&\+!])(.*)/$1.$2$3/; - if ($name =~ /^(.*)\.([#&\+!])(.*)$/) - { - $action = 0; - # Clean up all 'on's - if ($args eq "default" || $args eq "all") - { - # If value in config is "on" - if (weechat::config_get_plugin($name) eq "on") - { - # Unset and if successful flag as changed - $rc = weechat::config_unset_plugin($name); - if ($rc eq weechat::WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED) - { - $action = 1; - } - } - } - # Clean non joined - if ($args eq "orphan" || $args eq "all") - { - # If we can't find the buffer for this entry - if (weechat::buffer_search("irc", $name) eq "") - { - # Unset and if successful flag as changed - $rc = weechat::config_unset_plugin($name); - if ($rc eq weechat::WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED) - { - $action = 1; - } - } - } - # Add changed entry names to list - push (@chans, $name) if ($action); - } - } - weechat::infolist_free($infolist); - # If channels were cleaned from config - if (@chans) - { - # If only one entry - if (@chans == 1) - { - $str = "\thighmon.pl: Cleaned ".@chans." entry from the config:"; - } - else - { - $str = "\thighmon.pl: Cleaned ".@chans." entries from the config:"; - } - # Build a list of channels - foreach(@chans) - { - $str = $str." ".$_; - } - # Print what happened - weechat::print("",$str); - } - # Config seemed to be clean - else - { - weechat::print("", "\thighmon.pl: No entries removed"); - } - return weechat::WEECHAT_RC_OK; -} - -# Check config elements -sub highmon_config_init -{ - # First run default - if (!(weechat::config_is_set_plugin ("first_run"))) - { - if (weechat::config_get_plugin("first_run") ne "true") - { - weechat::print("", "\tThis appears to be the first time highmon has been run. For help and common set up hints see /highmon help"); - weechat::config_set_plugin("first_run", "true"); - } - } - # Alignment default - if (!(weechat::config_is_set_plugin ("alignment"))) - { - weechat::config_set_plugin("alignment", "channel"); - } - if (weechat::config_get_plugin("alignment") eq "") - { - weechat::config_set_plugin("alignment", "none"); - } - - # Short name default - if (!(weechat::config_is_set_plugin ("short_names"))) - { - weechat::config_set_plugin("short_names", "off"); - } - - # Coloured names default - if (!(weechat::config_is_set_plugin ("color_buf"))) - { - weechat::config_set_plugin("color_buf", "on"); - } - - # Hotlist show default - if (!(weechat::config_is_set_plugin ("hotlist_show"))) - { - weechat::config_set_plugin("hotlist_show", "off"); - } - - # Away only default - if (!(weechat::config_is_set_plugin ("away_only"))) - { - weechat::config_set_plugin("away_only", "off"); - } - - # highmon log default - if (!(weechat::config_is_set_plugin ("logging"))) - { - weechat::config_set_plugin("logging", "off"); - } - - # Output default - if (!(weechat::config_is_set_plugin ("output"))) - { - weechat::config_set_plugin("output", "buffer"); - } - - # Private message merging - if (!(weechat::config_is_set_plugin ("merge_private"))) - { - weechat::config_set_plugin("merge_private", "off"); - } - - # Set bar config in case output was set to "bar" before even changing the setting - if (weechat::config_get_plugin("output") eq "bar") - { - # Output bar lines default - if (!(weechat::config_is_set_plugin ("bar_lines"))) - { - weechat::config_set_plugin("bar_lines", "10"); - } - if (!(weechat::config_is_set_plugin ("bar_scrolldown"))) - { - weechat::config_set_plugin("bar_scrolldown", "off"); - } - } - - # Check for exisiting prefix/suffix chars, and setup accordingly - $prefix = weechat::config_get("irc.look.nick_prefix"); - $prefix = weechat::config_string($prefix); - $suffix = weechat::config_get("irc.look.nick_suffix"); - $suffix = weechat::config_string($suffix); - - if (!(weechat::config_is_set_plugin("nick_prefix"))) - { - if ($prefix eq "" && $suffix eq "") - { - weechat::config_set_plugin("nick_prefix", "<"); - } - else - { - weechat::config_set_plugin("nick_prefix", ""); - } - } - - if (!(weechat::config_is_set_plugin("nick_suffix"))) - { - if ($prefix eq "" && $suffix eq "") - { - weechat::config_set_plugin("nick_suffix", ">"); - } - else - { - weechat::config_set_plugin("nick_suffix", ""); - } - } -} - -# Get config updates -sub highmon_config_cb -{ - $point = $_[0]; - $name = $_[1]; - $value = $_[2]; - - $name =~ s/^plugins\.var\.perl\.highmon\.//; - - # Set logging on buffer - if ($name eq "logging") - { - # Search for pre-existing buffer - $highmon_buffer = weechat::buffer_search("perl", "highmon"); - if ($value eq "off") - { - weechat::buffer_set($highmon_buffer, "localvar_set_no_log", "1"); - } - else - { - weechat::buffer_set($highmon_buffer, "localvar_del_no_log", ""); - } - } - # Output changer - elsif ($name eq "output") - { - if ($value eq "bar") - { - # Search for pre-existing buffer - $highmon_buffer = weechat::buffer_search("perl", "highmon"); - # Close if it exists - if ($highmon_buffer ne "") - { - weechat::buffer_close($highmon_buffer) - } - - # Output bar lines default - if (!(weechat::config_is_set_plugin ("bar_lines"))) - { - weechat::config_set_plugin("bar_lines", "10"); - } - if (!(weechat::config_is_set_plugin ("bar_scrolldown"))) - { - weechat::config_set_plugin("bar_scrolldown", "off"); - } - # Make a bar if doesn't exist - highmon_bar_open(); - } - elsif ($value eq "buffer") - { - # If a bar exists, close it - highmon_bar_close(); - # Open buffer - highmon_buffer_open(); - } - - } - # Change if hotlist config changes - elsif ($name eq "hotlist_show") - { - # Search for pre-existing buffer - $highmon_buffer = weechat::buffer_search("perl", "highmon"); - if ($value eq "off" && $highmon_buffer) - { - weechat::buffer_set($highmon_buffer, "notify", "0"); - } - elsif ($value ne "off" && $highmon_buffer) - { - weechat::buffer_set($highmon_buffer, "notify", "3"); - } - } - elsif ($name eq "weechat.look.prefix_suffix") - { - if (weechat::config_get_plugin("output") eq "bar") - { - @bar_lines = (); - weechat::print("", "\thighmon: weechat.look.prefix_suffix changed, clearing highmon bar"); - weechat::bar_item_update("highmon"); - } - } - return weechat::WEECHAT_RC_OK; -} - -# Set up weechat hooks / commands -sub highmon_hook -{ - weechat::hook_print("", "", "", 0, "highmon_new_message", ""); - weechat::hook_command("highclean", "Highmon config clean up", "default|orphan|all", " default: Cleans all config entries with the default \"on\" value\n orphan: Cleans all config entries for channels you aren't currently joined\n all: Does both defaults and orphan", "default|orphan|all", "highmon_config_clean", ""); - - weechat::hook_command("highmon", "Highmon help", "[help] | [monitor [channel [server]]] | [clean default|orphan|all] | clearbar", " help: Print help on config options for highmon\n monitor: Toggles monitoring for a channel\n clean: Highmon config clean up (/highclean)\nclearbar: Clear Highmon bar", "help || monitor %(irc_channels) %(irc_servers) || clean default|orphan|all || clearbar", "highmon_command_cb", ""); - - weechat::hook_config("plugins.var.perl.highmon.*", "highmon_config_cb", ""); - weechat::hook_config("weechat.look.prefix_suffix", "highmon_config_cb", ""); -} - -# Main body, Callback for hook_print -sub highmon_new_message -{ - my $net = ""; - my $chan = ""; - my $nick = ""; - my $outstr = ""; - my $window_displayed = ""; - my $dyncheck = "0"; - -# DEBUG point -# $string = "\t"."0: ".$_[0]." 1: ".$_[1]." 2: ".$_[2]." 3: ".$_[3]." 4: ".$_[4]." 5: ".$_[5]." 6: ".$_[6]." 7: ".$_[7]; -# weechat::print("", "\t".$string); - - $cb_datap = $_[0]; - $cb_bufferp = $_[1]; - $cb_date = $_[2]; - $cb_tags = $_[3]; - $cb_disp = $_[4]; - $cb_high = $_[5]; - $cb_prefix = $_[6]; - $cb_msg = $_[7]; - - # Only work on highlighted messages or private message when enabled - if ($cb_high == "1" || (weechat::config_get_plugin("merge_private") eq "on" && $cb_tags =~ /notify_private/)) - { - # Pre bug #29618 (0.3.3) away detect - if (weechat::info_get("version_number", "") <= 197120) - { - $away = ''; - # Get infolist for this server - $infolist = weechat::infolist_get("irc_server", "", weechat::buffer_get_string($cb_bufferp, "localvar_server")); - while (weechat::infolist_next($infolist)) - { - # Get away message is is_away is on - $away = weechat::infolist_string($infolist, "away_message") if (weechat::infolist_integer($infolist, "is_away")); - } - weechat::infolist_free($infolist); - } - # Post bug #29618 fix - else - { - $away = weechat::buffer_get_string($cb_bufferp, "localvar_away"); - } - if (weechat::config_get_plugin("away_only") ne "on" || ($away ne "")) - { - # Check buffer name is an IRC channel - $bufname = weechat::buffer_get_string($cb_bufferp, 'name'); - if ($bufname =~ /(.*)\.([#&\+!])(.*)/) - { - # Are we running on this channel - if (weechat::config_get_plugin($bufname) ne "off" && $cb_disp eq "1") - { - # Format nick - # Line isn't action or topic notify - if (!($cb_tags =~ /irc_action/) && !($cb_tags =~ /irc_topic/)) - { - # Strip nick colour - $uncolnick = weechat::string_remove_color($cb_prefix, ""); - # Format nick - $nick = " ".weechat::config_get_plugin("nick_prefix").weechat::color("chat_highlight").$uncolnick.weechat::color("reset").weechat::config_get_plugin("nick_suffix"); - } - # Topic line - elsif ($cb_tags =~ /irc_topic/) - { - $nick = " ".$cb_prefix.weechat::color("reset"); - } - # Action line - else - { - $uncolnick = weechat::string_remove_color($cb_prefix, ""); - $nick = weechat::color("chat_highlight").$uncolnick.weechat::color("reset"); - } - # Send to output - highmon_print ($cb_msg, $cb_bufferp, $nick, $cb_date, $cb_tags); - } - } - # Or is private message - elsif (weechat::config_get_plugin("merge_private") eq "on" && $cb_tags =~ /notify_private/) - { - # Strip nick colour - $uncolnick = weechat::buffer_get_string($cb_bufferp, 'short_name'); - # Format nick - $nick = " ".weechat::config_get_plugin("nick_prefix").weechat::color("chat_highlight").$uncolnick.weechat::color("reset").weechat::config_get_plugin("nick_suffix"); - #Send to output - highmon_print ($cb_msg, $cb_bufferp, $nick, $cb_date, $cb_tags); - } - } - } - return weechat::WEECHAT_RC_OK; -} - -# Output formatter and printer takes (msg bufpointer nick) -sub highmon_print -{ - $cb_msg = $_[0]; - my $cb_bufferp = $_[1] if ($_[1]); - my $nick = $_[2] if ($_[2]); - my $cb_date = $_[3] if ($_[3]); - my $cb_tags = $_[4] if ($_[4]); - - #Normal channel message - if ($cb_bufferp && $nick) - { - # Format buffer name - $bufname = format_buffer_name($cb_bufferp); - - # If alignment is #channel | nick msg - if (weechat::config_get_plugin("alignment") eq "channel") - { - $nick =~ s/\s(.*)/$1/; - # Build string - $outstr = $bufname."\t".$nick." ".$cb_msg; - } - # or if it is channel number | nick msg - elsif (weechat::config_get_plugin("alignment") eq "schannel") - { - $nick =~ s/\s(.*)/$1/; - # Use channel number instead - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').weechat::color("reset"); - # Build string - $outstr = $bufname."\t".$nick." ".$cb_msg; - } - # or if it is number:#channel | nick msg - elsif (weechat::config_get_plugin("alignment") eq "nchannel") - { - $nick =~ s/\s(.*)/$1/; - # Place channel number in front of formatted name - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').":".weechat::color("reset").$bufname; - # Build string - $outstr = $bufname."\t".$nick." ".$cb_msg; - } - # or if it is #channel nick | msg - elsif (weechat::config_get_plugin("alignment") eq "channel,nick") - { - # Build string - $outstr = $bufname.":".$nick."\t".$cb_msg; - } - # or if it is channel number nick | msg - elsif (weechat::config_get_plugin("alignment") eq "schannel,nick") - { - # Use channel number instead - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').weechat::color("reset"); - # Build string - $outstr = $bufname.":".$nick."\t".$cb_msg; - } - # or if it is number:#channel nick | msg - elsif (weechat::config_get_plugin("alignment") eq "nchannel,nick") - { - # Place channel number in front of formatted name - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').":".weechat::color("reset").$bufname; - # Build string - $outstr = $bufname.":".$nick."\t".$cb_msg; - } - # or finally | #channel nick msg - else - { - # Build string - $outstr = "\t".$bufname.":".$nick." ".$cb_msg; - } - } - # highmon channel toggle message - elsif ($cb_bufferp && !$nick) - { - # Format buffer name - $bufname = format_buffer_name($cb_bufferp); - - # If alignment is #channel * | * - if (weechat::config_get_plugin("alignment") =~ /channel/) - { - # If it's actually channel number * | * - if (weechat::config_get_plugin("alignment") =~ /schannel/) - { - # Use channel number instead - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').weechat::color("reset"); - } - # Or if it's actually number:#channel * | * - if (weechat::config_get_plugin("alignment") =~ /nchannel/) - { - # Place channel number in front of formatted name - $bufname = weechat::color("chat_prefix_buffer").weechat::buffer_get_integer($cb_bufferp, 'number').":".weechat::color("reset").$bufname; - } - $outstr = $bufname."\t".$cb_msg; - } - # or if alignment is | * - else - { - $outstr = $bufname.": ".$cb_msg; - } - } - # highmon dynmon - elsif (!$cb_bufferp && !$nick) - { - $outstr = "\t".$cb_msg; - } - - # Send string to buffer - if (weechat::config_get_plugin("output") eq "buffer") - { - # Search for and confirm buffer - $highmon_buffer = weechat::buffer_search("perl", "highmon"); - # Print - if ($cb_date) - { - weechat::print_date_tags($highmon_buffer, $cb_date, $cb_tags, $outstr); - } - else - { - weechat::print($highmon_buffer, $outstr); - } - } - elsif (weechat::config_get_plugin("output") eq "bar") - { - # Add time string - use POSIX qw(strftime); - if ($cb_date) - { - $time = strftime(weechat::config_string(weechat::config_get("weechat.look.buffer_time_format")), localtime($cb_date)); - } - else - { - $time = strftime(weechat::config_string(weechat::config_get("weechat.look.buffer_time_format")), localtime); - } - # Colourise - if ($time =~ /\$\{(?:color:)?[\w,]+\}/) # Coloured string - { - while ($time =~ /\$\{(?:color:)?([\w,]+)\}/) - { - $color = weechat::color($1); - $time =~ s/\$\{(?:color:)?[\w,]+\}/$color/; - } - $time .= weechat::color("reset"); - } - else # Default string - { - $colour = weechat::color(weechat::config_string(weechat::config_get("weechat.color.chat_time_delimiters"))); - $reset = weechat::color("reset"); - $time =~ s/(\d*)(.)(\d*)/$1$colour$2$reset$3/g; - } - # Push updates to bar lists - push (@bar_lines_time, $time); - - # Change tab char - $delim = " ".weechat::color(weechat::config_string(weechat::config_get("weechat.color.chat_delimiters"))).weechat::config_string(weechat::config_get("weechat.look.prefix_suffix")).weechat::color("reset")." "; - $outstr =~ s/\t/$delim/; - - push (@bar_lines, $outstr); - # Trigger update - weechat::bar_item_update("highmon"); - - if (weechat::config_get_plugin("bar_scrolldown") eq "on") - { - weechat::command("", "/bar scroll highmon * ye") - } - } -} - -# Start the output display -sub highmon_start -{ - if (weechat::config_get_plugin("output") eq "buffer") - { - highmon_buffer_open(); - } - elsif (weechat::config_get_plugin("output") eq "bar") - { - highmon_bar_open(); - } -} - -# Takes two optional args (channel server), toggles monitoring on/off -sub highmon_toggle -{ - $data = $_[0]; - $buffer = $_[1]; - $args = $_[2]; - - # Check if we've been told what channel to act on - if ($args ne "") - { - # Split argument up - @arg_array = split(/ /,$args); - # Check if a server was given - if ($arg_array[1]) - { - # Find matching - $bufp = weechat::buffer_search("irc", $arg_array[1].".".$arg_array[0]); - } - else - { - $found_chans = 0; - # Loop through defined servers - $infolist = weechat::infolist_get("buffer", "", ""); - while (weechat::infolist_next($infolist)) - { - # Only interesting in IRC buffers - if (weechat::infolist_string($infolist, "plugin_name") eq "irc") - { - # Find buffers that maych - $sname = weechat::infolist_string($infolist, "short_name"); - if ($sname eq $arg_array[0]) - { - $found_chans++; - $bufp = weechat::infolist_pointer($infolist, "pointer"); - } - } - } - weechat::infolist_free($infolist); - # If the infolist found more than one channel, halt as we need to know which one - if ($found_chans > 1) - { - weechat::print("", "Channel name is not unique, please define server"); - return weechat::WEECHAT_RC_OK; - } - } - # Something didn't return right - if ($bufp eq "") - { - weechat::print("", "Could not find buffer"); - return weechat::WEECHAT_RC_OK; - } - } - else - { - # Get pointer from where we are - $bufp = weechat::current_buffer(); - } - # Get buffer name - $bufname = weechat::buffer_get_string($bufp, 'name'); - # Test if buffer is an IRC channel - if ($bufname =~ /(.*)\.([#&\+!])(.*)/) - { - if (weechat::config_get_plugin($bufname) eq "off") - { - # If currently off, set on - weechat::config_set_plugin($bufname, "on"); - - # Send to output formatter - highmon_print("Highlight Monitoring Enabled", $bufp); - return weechat::WEECHAT_RC_OK; - } - elsif (weechat::config_get_plugin($bufname) eq "on" || weechat::config_get_plugin($bufname) eq "") - { - # If currently on, set off - weechat::config_set_plugin($bufname, "off"); - - # Send to output formatter - highmon_print("Highlight Monitoring Disabled", $bufp); - return weechat::WEECHAT_RC_OK; - } - } -} - -# Takes a buffer pointer and returns a formatted name -sub format_buffer_name -{ - $cb_bufferp = $_[0]; - $bufname = weechat::buffer_get_string($cb_bufferp, 'name'); - - # Set colour from buffer name - if (weechat::config_get_plugin("color_buf") eq "on") - { - # Determine what colour to use - $color = weechat::info_get("irc_nick_color", $bufname); - if (!$color) - { - $color = 0; - @char_array = split(//,$bufname); - foreach $char (@char_array) - { - $color += ord($char); - } - $color %= 10; - $color = sprintf "weechat.color.chat_nick_color%02d", $color+1; - $color = weechat::config_get($color); - $color = weechat::config_string($color); - $color = weechat::color($color); - } - - # Private message just show network - if (weechat::config_get_plugin("merge_private") eq "on" && weechat::buffer_get_string($cb_bufferp, "localvar_type") eq "private") - { - $bufname = weechat::buffer_get_string($cb_bufferp, "localvar_server"); - } - # Format name to short or 'nicename' - elsif (weechat::config_get_plugin("short_names") eq "on") - { - $bufname = weechat::buffer_get_string($cb_bufferp, 'short_name'); - } - else - { - $bufname =~ s/(.*)\.([#&\+!])(.*)/$1$2$3/; - } - - # Build a coloured string - $bufname = $color.$bufname.weechat::color("reset"); - } - # User set colour name - elsif (weechat::config_get_plugin("color_buf") ne "off") - { - # Private message just show network - if (weechat::config_get_plugin("merge_private") eq "on" && weechat::buffer_get_string($cb_bufferp, "localvar_type") eq "private") - { - $bufname = weechat::buffer_get_string($cb_bufferp, "localvar_server"); - } - # Format name to short or 'nicename' - elsif (weechat::config_get_plugin("short_names") eq "on") - { - $bufname = weechat::buffer_get_string($cb_bufferp, 'short_name'); - } - else - { - $bufname =~ s/(.*)\.([#&\+!])(.*)/$1$2$3/; - } - - $color = weechat::config_get_plugin("color_buf"); - $bufname = weechat::color($color).$bufname.weechat::color("reset"); - } - # Stick with default colour - else - { - # Private message just show network - if (weechat::config_get_plugin("merge_private") eq "on" && weechat::buffer_get_string($cb_bufferp, "localvar_type") eq "private") - { - $bufname = weechat::buffer_get_string($cb_bufferp, "localvar_server"); - } - # Format name to short or 'nicename' - elsif (weechat::config_get_plugin("short_names") eq "on") - { - $bufname = weechat::buffer_get_string($cb_bufferp, 'short_name'); - } - else - { - $bufname =~ s/(.*)\.([#&\+!])(.*)/$1$2$3/; - } - } - - return $bufname; -} - -# Check result of register, and attempt to behave in a sane manner -if (!weechat::register("highmon", "KenjiE20", "2.5", "GPL3", "Highlight Monitor", "", "")) -{ - # Double load - weechat::print ("", "\tHighmon is already loaded"); - return weechat::WEECHAT_RC_OK; -} -else -{ - # Start everything - highmon_hook(); - highmon_config_init(); - highmon_start(); -} diff --git a/weechat/.weechat/plugins.conf b/weechat/.weechat/plugins.conf deleted file mode 100644 index 1617c4a..0000000 --- a/weechat/.weechat/plugins.conf +++ /dev/null @@ -1,60 +0,0 @@ -# -# weechat -- plugins.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[var] -guile.check_license = "off" -lua.check_license = "off" -perl.check_license = "off" -perl.highmon.alignment = "channel" -perl.highmon.away_only = "off" -perl.highmon.color_buf = "on" -perl.highmon.first_run = "true" -perl.highmon.hotlist_show = "off" -perl.highmon.logging = "off" -perl.highmon.merge_private = "off" -perl.highmon.nick_prefix = "<" -perl.highmon.nick_suffix = ">" -perl.highmon.output = "buffer" -perl.highmon.short_names = "off" -python.buffer_autoclose.age_limit = "30" -python.buffer_autoclose.ignore = "" -python.buffer_autoclose.interval = "1" -python.check_license = "off" -python.go.auto_jump = "off" -python.go.buffer_number = "on" -python.go.color_name = "black,cyan" -python.go.color_name_highlight = "red,cyan" -python.go.color_name_highlight_selected = "red,brown" -python.go.color_name_selected = "black,brown" -python.go.color_number = "yellow,magenta" -python.go.color_number_selected = "yellow,red" -python.go.fuzzy_search = "off" -python.go.message = "Go to: " -python.go.short_name = "off" -python.go.sort = "number,beginning" -python.go.use_core_instead_weechat = "off" -ruby.check_license = "off" -tcl.check_license = "off" - -[desc] -python.go.auto_jump = "automatically jump to buffer when it is uniquely selected (default: "off")" -python.go.buffer_number = "display buffer number (default: "on")" -python.go.color_name = "color for buffer name (not selected) (default: "black,cyan")" -python.go.color_name_highlight = "color for highlight in buffer name (not selected) (default: "red,cyan")" -python.go.color_name_highlight_selected = "color for highlight in a selected buffer name (default: "red,brown")" -python.go.color_name_selected = "color for a selected buffer name (default: "black,brown")" -python.go.color_number = "color for buffer number (not selected) (default: "yellow,magenta")" -python.go.color_number_selected = "color for selected buffer number (default: "yellow,red")" -python.go.fuzzy_search = "search buffer matches using approximation (default: "off")" -python.go.message = "message to display before list of buffers (default: "Go to: ")" -python.go.short_name = "display and search in short names instead of buffer name (default: "off")" -python.go.sort = "comma-separated list of keys to sort buffers (the order is important, sorts are performed in the given order): name = sort by name (or short name), (default: "number,beginning")" -python.go.use_core_instead_weechat = "use name "core" instead of "weechat" for core buffer (default: "off")" diff --git a/weechat/.weechat/python.conf b/weechat/.weechat/python.conf deleted file mode 100644 index 187b778..0000000 --- a/weechat/.weechat/python.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- python.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/python/autoload/buffer_autoclose.py b/weechat/.weechat/python/autoload/buffer_autoclose.py deleted file mode 120000 index a639358..0000000 --- a/weechat/.weechat/python/autoload/buffer_autoclose.py +++ /dev/null @@ -1 +0,0 @@ -../buffer_autoclose.py \ No newline at end of file diff --git a/weechat/.weechat/python/autoload/colorize_nicks.py b/weechat/.weechat/python/autoload/colorize_nicks.py deleted file mode 120000 index 3ee34e9..0000000 --- a/weechat/.weechat/python/autoload/colorize_nicks.py +++ /dev/null @@ -1 +0,0 @@ -../colorize_nicks.py \ No newline at end of file diff --git a/weechat/.weechat/python/autoload/go.py b/weechat/.weechat/python/autoload/go.py deleted file mode 120000 index bdfb7dd..0000000 --- a/weechat/.weechat/python/autoload/go.py +++ /dev/null @@ -1 +0,0 @@ -../go.py \ No newline at end of file diff --git a/weechat/.weechat/python/autoload/urlgrab.py b/weechat/.weechat/python/autoload/urlgrab.py deleted file mode 120000 index 16cbe4d..0000000 --- a/weechat/.weechat/python/autoload/urlgrab.py +++ /dev/null @@ -1 +0,0 @@ -../urlgrab.py \ No newline at end of file diff --git a/weechat/.weechat/python/buffer_autoclose.py b/weechat/.weechat/python/buffer_autoclose.py deleted file mode 100644 index 303f5b3..0000000 --- a/weechat/.weechat/python/buffer_autoclose.py +++ /dev/null @@ -1,130 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2009 by xt -# -# 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 . -# - -# -# (this script requires WeeChat 0.3.0 or newer) -# -# History: -# 2016-02-05, ixti -# version 0.4: Add Python3 support -# 2009-12-15, xt -# version 0.3: moved around some control structures to not be as noisy -# 2009-12-02, xt -# version 0.2: bugfix, more printing -# 2009-12-01, xt -# version 0.1: initial release - -import weechat as w -import time - -SCRIPT_NAME = "buffer_autoclose" -SCRIPT_AUTHOR = "xt " -SCRIPT_VERSION = "0.4" -SCRIPT_LICENSE = "GPL3" -SCRIPT_DESC = "Automatically close inactive private message buffers" - -settings = { - 'interval': '1', # How often in minutes to check - 'age_limit': '30', # How old in minutes before auto close - 'ignore': '', # Buffers to ignore (use full name: server.buffer_name) -} - -if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, - SCRIPT_DESC, "", ""): - for option, default_value in settings.items(): - if not w.config_is_set_plugin(option): - w.config_set_plugin(option, default_value) - w.hook_timer(\ - int(w.config_get_plugin('interval')) * 1000 * 60, - 0, - 0, - "close_time_cb", - '') - - -def get_all_buffers(): - '''Returns list with pointers of all open buffers.''' - buffers = [] - infolist = w.infolist_get('buffer', '', '') - while w.infolist_next(infolist): - buffer_type = w.buffer_get_string(w.infolist_pointer(infolist, 'pointer'), 'localvar_type') - if buffer_type == 'private': # we only close private message buffers for now - buffers.append(w.infolist_pointer(infolist, 'pointer')) - w.infolist_free(infolist) - return buffers - -def get_last_line_date(buffer): - date = '1970-01-01 01:00:00' - infolist = w.infolist_get('buffer_lines', buffer, '') - while w.infolist_prev(infolist): - date = w.infolist_time(infolist, 'date') - if date != '1970-01-01 01:00:00': - # Some lines like "Day changed to" message doesn't have date - # set so loop until we find a message that does - break - w.infolist_free(infolist) - return date - -def is_in_hotlist(buffer): - ''' Returns true if buffer is in hotlist, false if not''' - - hotlist = w.infolist_get('hotlist', '', '') - found = False - while w.infolist_next(hotlist): - thebuffer = w.infolist_pointer(hotlist, 'buffer_pointer') - if thebuffer == buffer: - found = True - name = w.buffer_get_string(thebuffer, 'short_name') - break - - w.infolist_free(hotlist) - return found - -def close_time_cb(buffer, args): - ''' Callback for check for inactivity and close ''' - - for buffer in get_all_buffers(): - name = w.buffer_get_string(buffer, 'name') - - - date = get_last_line_date(buffer) - date = time.mktime(time.strptime(date, '%Y-%m-%d %H:%M:%S')) - now = time.time() - seconds_old = now - date - if seconds_old > int(w.config_get_plugin('age_limit'))*60: - if is_in_hotlist(buffer): - #w.prnt('', '%s: Not closing buffer: %s: it is in hotlist' %(SCRIPT_NAME, name)) - continue - if name in w.config_get_plugin('ignore').split(','): - #w.prnt('', '%s: Not closing buffer: %s: it is in ignore list' %(SCRIPT_NAME, name)) - continue - if buffer == w.current_buffer(): - # Never close current buffer - #w.prnt('', '%s: Not closing buffer: %s: it is in currently active' %(SCRIPT_NAME, name)) - continue - if len(w.buffer_get_string(buffer, 'input')): - # Don't close buffers with text on input line - #w.prnt('', '%s: Not closing buffer: %s: it has input' %(SCRIPT_NAME, name)) - continue - - w.prnt('', '%s: Closing buffer: %s' %(SCRIPT_NAME, name)) - w.command(buffer, '/buffer close') - #else: - # w.prnt('', '%s: Not closing buffer: %s: it is too new: %s' %(SCRIPT_NAME, name, seconds_old)) - - return w.WEECHAT_RC_OK diff --git a/weechat/.weechat/python/colorize_nicks.py b/weechat/.weechat/python/colorize_nicks.py deleted file mode 100644 index 1460f01..0000000 --- a/weechat/.weechat/python/colorize_nicks.py +++ /dev/null @@ -1,355 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2010 by xt -# -# 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 . -# - -# This script colors nicks in IRC channels in the actual message -# not just in the prefix section. -# -# -# History: -# 2017-03-01, arza -# version 23: don't colorize nicklist group names -# 2016-05-01, Simmo Saan -# version 22: invalidate cached colors on hash algorithm change -# 2015-07-28, xt -# version 21: fix problems with nicks with commas in them -# 2015-04-19, xt -# version 20: fix ignore of nicks in URLs -# 2015-04-18, xt -# version 19: new option ignore nicks in URLs -# 2015-03-03, xt -# version 18: iterate buffers looking for nicklists instead of servers -# 2015-02-23, holomorph -# version 17: fix coloring in non-channel buffers (#58) -# 2014-09-17, holomorph -# version 16: use weechat config facilities -# clean unused, minor linting, some simplification -# 2014-05-05, holomorph -# version 15: fix python2-specific re.search check -# 2013-01-29, nils_2 -# version 14: make script compatible with Python 3.x -# 2012-10-19, ldvx -# version 13: Iterate over every word to prevent incorrect colorization of -# nicks. Added option greedy_matching. -# 2012-04-28, ldvx -# version 12: added ignore_tags to avoid colorizing nicks if tags are present -# 2012-01-14, nesthib -# version 11: input_text_display hook and modifier to colorize nicks in input bar -# 2010-12-22, xt -# version 10: hook config option for updating blacklist -# 2010-12-20, xt -# version 0.9: hook new config option for weechat 0.3.4 -# 2010-11-01, nils_2 -# version 0.8: hook_modifier() added to communicate with rainbow_text -# 2010-10-01, xt -# version 0.7: changes to support non-irc-plugins -# 2010-07-29, xt -# version 0.6: compile regexp as per patch from Chris quigybo@hotmail.com -# 2010-07-19, xt -# version 0.5: fix bug with incorrect coloring of own nick -# 2010-06-02, xt -# version 0.4: update to reflect API changes -# 2010-03-26, xt -# version 0.3: fix error with exception -# 2010-03-24, xt -# version 0.2: use ignore_channels when populating to increase performance. -# 2010-02-03, xt -# version 0.1: initial (based on ruby script by dominikh) -# -# Known issues: nicks will not get colorized if they begin with a character -# such as ~ (which some irc networks do happen to accept) - -import weechat -import re -w = weechat - -SCRIPT_NAME = "colorize_nicks" -SCRIPT_AUTHOR = "xt " -SCRIPT_VERSION = "23" -SCRIPT_LICENSE = "GPL" -SCRIPT_DESC = "Use the weechat nick colors in the chat area" - -VALID_NICK = r'([@~&!%+])?([-a-zA-Z0-9\[\]\\`_^\{|\}]+)' -valid_nick_re = re.compile(VALID_NICK) -ignore_channels = [] -ignore_nicks = [] - -# Dict with every nick on every channel with its color as lookup value -colored_nicks = {} - -CONFIG_FILE_NAME = "colorize_nicks" - -# config file and options -colorize_config_file = "" -colorize_config_option = {} - -def colorize_config_init(): - ''' - Initialization of configuration file. - Sections: look. - ''' - global colorize_config_file, colorize_config_option - colorize_config_file = weechat.config_new(CONFIG_FILE_NAME, - "colorize_config_reload_cb", "") - if colorize_config_file == "": - return - - # section "look" - section_look = weechat.config_new_section( - colorize_config_file, "look", 0, 0, "", "", "", "", "", "", "", "", "", "") - if section_look == "": - weechat.config_free(colorize_config_file) - return - colorize_config_option["blacklist_channels"] = weechat.config_new_option( - colorize_config_file, section_look, "blacklist_channels", - "string", "Comma separated list of channels", "", 0, 0, - "", "", 0, "", "", "", "", "", "") - colorize_config_option["blacklist_nicks"] = weechat.config_new_option( - colorize_config_file, section_look, "blacklist_nicks", - "string", "Comma separated list of nicks", "", 0, 0, - "so,root", "so,root", 0, "", "", "", "", "", "") - colorize_config_option["min_nick_length"] = weechat.config_new_option( - colorize_config_file, section_look, "min_nick_length", - "integer", "Minimum length nick to colorize", "", - 2, 20, "", "", 0, "", "", "", "", "", "") - colorize_config_option["colorize_input"] = weechat.config_new_option( - colorize_config_file, section_look, "colorize_input", - "boolean", "Whether to colorize input", "", 0, - 0, "off", "off", 0, "", "", "", "", "", "") - colorize_config_option["ignore_tags"] = weechat.config_new_option( - colorize_config_file, section_look, "ignore_tags", - "string", "Comma separated list of tags to ignore; i.e. irc_join,irc_part,irc_quit", "", 0, 0, - "", "", 0, "", "", "", "", "", "") - colorize_config_option["greedy_matching"] = weechat.config_new_option( - colorize_config_file, section_look, "greedy_matching", - "boolean", "If off, then use lazy matching instead", "", 0, - 0, "on", "on", 0, "", "", "", "", "", "") - colorize_config_option["ignore_nicks_in_urls"] = weechat.config_new_option( - colorize_config_file, section_look, "ignore_nicks_in_urls", - "boolean", "If on, don't colorize nicks inside URLs", "", 0, - 0, "off", "off", 0, "", "", "", "", "", "") - -def colorize_config_read(): - ''' Read configuration file. ''' - global colorize_config_file - return weechat.config_read(colorize_config_file) - -def colorize_nick_color(nick, my_nick): - ''' Retrieve nick color from weechat. ''' - if nick == my_nick: - return w.color(w.config_string(w.config_get('weechat.color.chat_nick_self'))) - else: - return w.info_get('irc_nick_color', nick) - -def colorize_cb(data, modifier, modifier_data, line): - ''' Callback that does the colorizing, and returns new line if changed ''' - - global ignore_nicks, ignore_channels, colored_nicks - - - full_name = modifier_data.split(';')[1] - channel = '.'.join(full_name.split('.')[1:]) - - buffer = w.buffer_search('', full_name) - # Check if buffer has colorized nicks - if buffer not in colored_nicks: - return line - - if channel and channel in ignore_channels: - return line - - min_length = w.config_integer(colorize_config_option['min_nick_length']) - reset = w.color('reset') - - # Don't colorize if the ignored tag is present in message - tags_line = modifier_data.rsplit(';') - if len(tags_line) >= 3: - tags_line = tags_line[2].split(',') - for i in w.config_string(colorize_config_option['ignore_tags']).split(','): - if i in tags_line: - return line - - for words in valid_nick_re.findall(line): - nick = words[1] - # Check that nick is not ignored and longer than minimum length - if len(nick) < min_length or nick in ignore_nicks: - continue - - # Check that nick is in the dictionary colored_nicks - if nick in colored_nicks[buffer]: - nick_color = colored_nicks[buffer][nick] - - # Let's use greedy matching. Will check against every word in a line. - if w.config_boolean(colorize_config_option['greedy_matching']): - for word in line.split(): - if w.config_boolean(colorize_config_option['ignore_nicks_in_urls']) and \ - word.startswith(('http://', 'https://')): - continue - - if nick in word: - # Is there a nick that contains nick and has a greater lenght? - # If so let's save that nick into var biggest_nick - biggest_nick = "" - for i in colored_nicks[buffer]: - if nick in i and nick != i and len(i) > len(nick): - if i in word: - # If a nick with greater len is found, and that word - # also happens to be in word, then let's save this nick - biggest_nick = i - # If there's a nick with greater len, then let's skip this - # As we will have the chance to colorize when biggest_nick - # iterates being nick. - if len(biggest_nick) > 0 and biggest_nick in word: - pass - elif len(word) < len(biggest_nick) or len(biggest_nick) == 0: - new_word = word.replace(nick, '%s%s%s' % (nick_color, nick, reset)) - line = line.replace(word, new_word) - # Let's use lazy matching for nick - else: - nick_color = colored_nicks[buffer][nick] - # The two .? are in case somebody writes "nick:", "nick,", etc - # to address somebody - regex = r"(\A|\s).?(%s).?(\Z|\s)" % re.escape(nick) - match = re.search(regex, line) - if match is not None: - new_line = line[:match.start(2)] + nick_color+nick+reset + line[match.end(2):] - line = new_line - return line - -def colorize_input_cb(data, modifier, modifier_data, line): - ''' Callback that does the colorizing in input ''' - - global ignore_nicks, ignore_channels, colored_nicks - - min_length = w.config_integer(colorize_config_option['min_nick_length']) - - if not w.config_boolean(colorize_config_option['colorize_input']): - return line - - buffer = w.current_buffer() - # Check if buffer has colorized nicks - if buffer not in colored_nicks: - return line - - channel = w.buffer_get_string(buffer, 'name') - if channel and channel in ignore_channels: - return line - - reset = w.color('reset') - - for words in valid_nick_re.findall(line): - nick = words[1] - # Check that nick is not ignored and longer than minimum length - if len(nick) < min_length or nick in ignore_nicks: - continue - if nick in colored_nicks[buffer]: - nick_color = colored_nicks[buffer][nick] - line = line.replace(nick, '%s%s%s' % (nick_color, nick, reset)) - - return line - -def populate_nicks(*args): - ''' Fills entire dict with all nicks weechat can see and what color it has - assigned to it. ''' - global colored_nicks - - colored_nicks = {} - - buffers = w.infolist_get('buffer', '', '') - while w.infolist_next(buffers): - buffer_ptr = w.infolist_pointer(buffers, 'pointer') - my_nick = w.buffer_get_string(buffer_ptr, 'localvar_nick') - nicklist = w.infolist_get('nicklist', buffer_ptr, '') - while w.infolist_next(nicklist): - if buffer_ptr not in colored_nicks: - colored_nicks[buffer_ptr] = {} - - if w.infolist_string(nicklist, 'type') != 'nick': - continue - - nick = w.infolist_string(nicklist, 'name') - nick_color = colorize_nick_color(nick, my_nick) - - colored_nicks[buffer_ptr][nick] = nick_color - - w.infolist_free(nicklist) - - w.infolist_free(buffers) - - return w.WEECHAT_RC_OK - -def add_nick(data, signal, type_data): - ''' Add nick to dict of colored nicks ''' - global colored_nicks - - # Nicks can have , in them in some protocols - splitted = type_data.split(',') - pointer = splitted[0] - nick = ",".join(splitted[1:]) - if pointer not in colored_nicks: - colored_nicks[pointer] = {} - - my_nick = w.buffer_get_string(pointer, 'localvar_nick') - nick_color = colorize_nick_color(nick, my_nick) - - colored_nicks[pointer][nick] = nick_color - - return w.WEECHAT_RC_OK - -def remove_nick(data, signal, type_data): - ''' Remove nick from dict with colored nicks ''' - global colored_nicks - - # Nicks can have , in them in some protocols - splitted = type_data.split(',') - pointer = splitted[0] - nick = ",".join(splitted[1:]) - - if pointer in colored_nicks and nick in colored_nicks[pointer]: - del colored_nicks[pointer][nick] - - return w.WEECHAT_RC_OK - -def update_blacklist(*args): - ''' Set the blacklist for channels and nicks. ''' - global ignore_channels, ignore_nicks - ignore_channels = w.config_string(colorize_config_option['blacklist_channels']).split(',') - ignore_nicks = w.config_string(colorize_config_option['blacklist_nicks']).split(',') - return w.WEECHAT_RC_OK - -if __name__ == "__main__": - if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, - SCRIPT_DESC, "", ""): - colorize_config_init() - colorize_config_read() - - # Run once to get data ready - update_blacklist() - populate_nicks() - - w.hook_signal('nicklist_nick_added', 'add_nick', '') - w.hook_signal('nicklist_nick_removed', 'remove_nick', '') - w.hook_modifier('weechat_print', 'colorize_cb', '') - # Hook config for changing colors - w.hook_config('weechat.color.chat_nick_colors', 'populate_nicks', '') - w.hook_config('weechat.look.nick_color_hash', 'populate_nicks', '') - # Hook for working togheter with other scripts (like colorize_lines) - w.hook_modifier('colorize_nicks', 'colorize_cb', '') - # Hook for modifying input - w.hook_modifier('250|input_text_display', 'colorize_input_cb', '') - # Hook for updating blacklist (this could be improved to use fnmatch) - weechat.hook_config('%s.look.blacklist*' % SCRIPT_NAME, 'update_blacklist', '') diff --git a/weechat/.weechat/python/go.py b/weechat/.weechat/python/go.py deleted file mode 100644 index a30f58f..0000000 --- a/weechat/.weechat/python/go.py +++ /dev/null @@ -1,561 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2009-2014 Sébastien Helleu -# Copyright (C) 2010 m4v -# Copyright (C) 2011 stfn -# -# 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 . -# - -# -# History: -# -# 2017-04-01, Sébastien Helleu : -# version 2.5: add option "buffer_number" -# 2017-03-02, Sébastien Helleu : -# version 2.4: fix syntax and indentation error -# 2017-02-25, Simmo Saan -# version 2.3: fix fuzzy search breaking buffer number search display -# 2016-01-28, ylambda -# version 2.2: add option "fuzzy_search" -# 2015-11-12, nils_2 -# version 2.1: fix problem with buffer short_name "weechat", using option -# "use_core_instead_weechat", see: -# https://github.com/weechat/weechat/issues/574 -# 2014-05-12, Sébastien Helleu : -# version 2.0: add help on options, replace option "sort_by_activity" by -# "sort" (add sort by name and first match at beginning of -# name and by number), PEP8 compliance -# 2012-11-26, Nei -# version 1.9: add auto_jump option to automatically go to buffer when it -# is uniquely selected -# 2012-09-17, Sébastien Helleu : -# version 1.8: fix jump to non-active merged buffers (jump with buffer name -# instead of number) -# 2012-01-03 nils_2 -# version 1.7: add option "use_core_instead_weechat" -# 2012-01-03, Sébastien Helleu : -# version 1.6: make script compatible with Python 3.x -# 2011-08-24, stfn : -# version 1.5: /go with name argument jumps directly to buffer -# Remember cursor position in buffer input -# 2011-05-31, Elián Hanisch : -# version 1.4: Sort list of buffers by activity. -# 2011-04-25, Sébastien Helleu : -# version 1.3: add info "go_running" (used by script input_lock.rb) -# 2010-11-01, Sébastien Helleu : -# version 1.2: use high priority for hooks to prevent conflict with other -# plugins/scripts (WeeChat >= 0.3.4 only) -# 2010-03-25, Elián Hanisch : -# version 1.1: use a space to match the end of a string -# 2009-11-16, Sébastien Helleu : -# version 1.0: add new option to display short names -# 2009-06-15, Sébastien Helleu : -# version 0.9: fix typo in /help go with command /key -# 2009-05-16, Sébastien Helleu : -# version 0.8: search buffer by number, fix bug when window is split -# 2009-05-03, Sébastien Helleu : -# version 0.7: eat tab key (do not complete input, just move buffer -# pointer) -# 2009-05-02, Sébastien Helleu : -# version 0.6: sync with last API changes -# 2009-03-22, Sébastien Helleu : -# version 0.5: update modifier signal name for input text display, -# fix arguments for function string_remove_color -# 2009-02-18, Sébastien Helleu : -# version 0.4: do not hook command and init options if register failed -# 2009-02-08, Sébastien Helleu : -# version 0.3: case insensitive search for buffers names -# 2009-02-08, Sébastien Helleu : -# version 0.2: add help about Tab key -# 2009-02-08, Sébastien Helleu : -# version 0.1: initial release -# - -""" -Quick jump to buffers. -(this script requires WeeChat 0.3.0 or newer) -""" - -from __future__ import print_function - -SCRIPT_NAME = 'go' -SCRIPT_AUTHOR = 'Sébastien Helleu ' -SCRIPT_VERSION = '2.5' -SCRIPT_LICENSE = 'GPL3' -SCRIPT_DESC = 'Quick jump to buffers' - -SCRIPT_COMMAND = 'go' - -IMPORT_OK = True - -try: - import weechat -except ImportError: - print('This script must be run under WeeChat.') - print('Get WeeChat now at: http://www.weechat.org/') - IMPORT_OK = False - -import re - -# script options -SETTINGS = { - 'color_number': ( - 'yellow,magenta', - 'color for buffer number (not selected)'), - 'color_number_selected': ( - 'yellow,red', - 'color for selected buffer number'), - 'color_name': ( - 'black,cyan', - 'color for buffer name (not selected)'), - 'color_name_selected': ( - 'black,brown', - 'color for a selected buffer name'), - 'color_name_highlight': ( - 'red,cyan', - 'color for highlight in buffer name (not selected)'), - 'color_name_highlight_selected': ( - 'red,brown', - 'color for highlight in a selected buffer name'), - 'message': ( - 'Go to: ', - 'message to display before list of buffers'), - 'short_name': ( - 'off', - 'display and search in short names instead of buffer name'), - 'sort': ( - 'number,beginning', - 'comma-separated list of keys to sort buffers ' - '(the order is important, sorts are performed in the given order): ' - 'name = sort by name (or short name), ', - 'hotlist = sort by hotlist order, ' - 'number = first match a buffer number before digits in name, ' - 'beginning = first match at beginning of names (or short names); ' - 'the default sort of buffers is by numbers'), - 'use_core_instead_weechat': ( - 'off', - 'use name "core" instead of "weechat" for core buffer'), - 'auto_jump': ( - 'off', - 'automatically jump to buffer when it is uniquely selected'), - 'fuzzy_search': ( - 'off', - 'search buffer matches using approximation'), - 'buffer_number': ( - 'on', - 'display buffer number'), -} - -# hooks management -HOOK_COMMAND_RUN = { - 'input': ('/input *', 'go_command_run_input'), - 'buffer': ('/buffer *', 'go_command_run_buffer'), - 'window': ('/window *', 'go_command_run_window'), -} -hooks = {} - -# input before command /go (we'll restore it later) -saved_input = '' -saved_input_pos = 0 - -# last user input (if changed, we'll update list of matching buffers) -old_input = None - -# matching buffers -buffers = [] -buffers_pos = 0 - - -def go_option_enabled(option): - """Checks if a boolean script option is enabled or not.""" - return weechat.config_string_to_boolean(weechat.config_get_plugin(option)) - - -def go_info_running(data, info_name, arguments): - """Returns "1" if go is running, otherwise "0".""" - return '1' if 'modifier' in hooks else '0' - - -def go_unhook_one(hook): - """Unhook something hooked by this script.""" - global hooks - if hook in hooks: - weechat.unhook(hooks[hook]) - del hooks[hook] - - -def go_unhook_all(): - """Unhook all.""" - go_unhook_one('modifier') - for hook in HOOK_COMMAND_RUN: - go_unhook_one(hook) - - -def go_hook_all(): - """Hook command_run and modifier.""" - global hooks - priority = '' - version = weechat.info_get('version_number', '') or 0 - # use high priority for hook to prevent conflict with other plugins/scripts - # (WeeChat >= 0.3.4 only) - if int(version) >= 0x00030400: - priority = '2000|' - for hook, value in HOOK_COMMAND_RUN.items(): - if hook not in hooks: - hooks[hook] = weechat.hook_command_run( - '%s%s' % (priority, value[0]), - value[1], '') - if 'modifier' not in hooks: - hooks['modifier'] = weechat.hook_modifier( - 'input_text_display_with_cursor', 'go_input_modifier', '') - - -def go_start(buf): - """Start go on buffer.""" - global saved_input, saved_input_pos, old_input, buffers_pos - go_hook_all() - saved_input = weechat.buffer_get_string(buf, 'input') - saved_input_pos = weechat.buffer_get_integer(buf, 'input_pos') - weechat.buffer_set(buf, 'input', '') - old_input = None - buffers_pos = 0 - - -def go_end(buf): - """End go on buffer.""" - global saved_input, saved_input_pos, old_input - go_unhook_all() - weechat.buffer_set(buf, 'input', saved_input) - weechat.buffer_set(buf, 'input_pos', str(saved_input_pos)) - old_input = None - - -def go_match_beginning(buf, string): - """Check if a string matches the beginning of buffer name/short name.""" - if not string: - return False - esc_str = re.escape(string) - if re.search(r'^#?' + esc_str, buf['name']) \ - or re.search(r'^#?' + esc_str, buf['short_name']): - return True - return False - - -def go_match_fuzzy(name, string): - """Check if string matches name using approximation.""" - if not string: - return False - - name_len = len(name) - string_len = len(string) - - if string_len > name_len: - return False - if name_len == string_len: - return name == string - - # Attempt to match all chars somewhere in name - prev_index = -1 - for i, char in enumerate(string): - index = name.find(char, prev_index+1) - if index == -1: - return False - prev_index = index - return True - - -def go_now(buf, args): - """Go to buffer specified by args.""" - listbuf = go_matching_buffers(args) - if not listbuf: - return - - # prefer buffer that matches at beginning (if option is enabled) - if 'beginning' in weechat.config_get_plugin('sort').split(','): - for index in range(len(listbuf)): - if go_match_beginning(listbuf[index], args): - weechat.command(buf, - '/buffer ' + str(listbuf[index]['full_name'])) - return - - # jump to first buffer in matching buffers by default - weechat.command(buf, '/buffer ' + str(listbuf[0]['full_name'])) - - -def go_cmd(data, buf, args): - """Command "/go": just hook what we need.""" - global hooks - if args: - go_now(buf, args) - elif 'modifier' in hooks: - go_end(buf) - else: - go_start(buf) - return weechat.WEECHAT_RC_OK - - -def go_matching_buffers(strinput): - """Return a list with buffers matching user input.""" - global buffers_pos - listbuf = [] - if len(strinput) == 0: - buffers_pos = 0 - strinput = strinput.lower() - infolist = weechat.infolist_get('buffer', '', '') - while weechat.infolist_next(infolist): - short_name = weechat.infolist_string(infolist, 'short_name') - if go_option_enabled('short_name'): - name = weechat.infolist_string(infolist, 'short_name') - else: - name = weechat.infolist_string(infolist, 'name') - if name == 'weechat' \ - and go_option_enabled('use_core_instead_weechat') \ - and weechat.infolist_string(infolist, 'plugin_name') == 'core': - name = 'core' - number = weechat.infolist_integer(infolist, 'number') - full_name = weechat.infolist_string(infolist, 'full_name') - if not full_name: - full_name = '%s.%s' % ( - weechat.infolist_string(infolist, 'plugin_name'), - weechat.infolist_string(infolist, 'name')) - pointer = weechat.infolist_pointer(infolist, 'pointer') - matching = name.lower().find(strinput) >= 0 - if not matching and strinput[-1] == ' ': - matching = name.lower().endswith(strinput.strip()) - if not matching and go_option_enabled('fuzzy_search'): - matching = go_match_fuzzy(name.lower(), strinput) - if not matching and strinput.isdigit(): - matching = str(number).startswith(strinput) - if len(strinput) == 0 or matching: - listbuf.append({ - 'number': number, - 'short_name': short_name, - 'name': name, - 'full_name': full_name, - 'pointer': pointer, - }) - weechat.infolist_free(infolist) - - # sort buffers - hotlist = [] - infolist = weechat.infolist_get('hotlist', '', '') - while weechat.infolist_next(infolist): - hotlist.append( - weechat.infolist_pointer(infolist, 'buffer_pointer')) - weechat.infolist_free(infolist) - last_index_hotlist = len(hotlist) - - def _sort_name(buf): - """Sort buffers by name (or short name).""" - return buf['name'] - - def _sort_hotlist(buf): - """Sort buffers by hotlist order.""" - try: - return hotlist.index(buf['pointer']) - except ValueError: - # not in hotlist, always last. - return last_index_hotlist - - def _sort_match_number(buf): - """Sort buffers by match on number.""" - return 0 if str(buf['number']) == strinput else 1 - - def _sort_match_beginning(buf): - """Sort buffers by match at beginning.""" - return 0 if go_match_beginning(buf, strinput) else 1 - - funcs = { - 'name': _sort_name, - 'hotlist': _sort_hotlist, - 'number': _sort_match_number, - 'beginning': _sort_match_beginning, - } - - for key in weechat.config_get_plugin('sort').split(','): - if key in funcs: - listbuf = sorted(listbuf, key=funcs[key]) - - if not strinput: - index = [i for i, buf in enumerate(listbuf) - if buf['pointer'] == weechat.current_buffer()] - if index: - buffers_pos = index[0] - - return listbuf - - -def go_buffers_to_string(listbuf, pos, strinput): - """Return string built with list of buffers found (matching user input).""" - string = '' - strinput = strinput.lower() - for i in range(len(listbuf)): - selected = '_selected' if i == pos else '' - buffer_name = listbuf[i]['name'] - index = buffer_name.lower().find(strinput) - if index >= 0: - index2 = index + len(strinput) - name = '%s%s%s%s%s' % ( - buffer_name[:index], - weechat.color(weechat.config_get_plugin( - 'color_name_highlight' + selected)), - buffer_name[index:index2], - weechat.color(weechat.config_get_plugin( - 'color_name' + selected)), - buffer_name[index2:]) - elif go_option_enabled("fuzzy_search") and \ - go_match_fuzzy(buffer_name.lower(), strinput): - name = "" - prev_index = -1 - for char in strinput.lower(): - index = buffer_name.lower().find(char, prev_index+1) - if prev_index < 0: - name += buffer_name[:index] - name += weechat.color(weechat.config_get_plugin( - 'color_name_highlight' + selected)) - if prev_index >= 0 and index > prev_index+1: - name += weechat.color(weechat.config_get_plugin( - 'color_name' + selected)) - name += buffer_name[prev_index+1:index] - name += weechat.color(weechat.config_get_plugin( - 'color_name_highlight' + selected)) - name += buffer_name[index] - prev_index = index - - name += weechat.color(weechat.config_get_plugin( - 'color_name' + selected)) - name += buffer_name[prev_index+1:] - else: - name = buffer_name - string += ' ' - if go_option_enabled('buffer_number'): - string += '%s%s' % ( - weechat.color(weechat.config_get_plugin( - 'color_number' + selected)), - str(listbuf[i]['number'])) - string += '%s%s%s' % ( - weechat.color(weechat.config_get_plugin( - 'color_name' + selected)), - name, - weechat.color('reset')) - return ' ' + string if string else '' - - -def go_input_modifier(data, modifier, modifier_data, string): - """This modifier is called when input text item is built by WeeChat. - - This is commonly called after changes in input or cursor move: it builds - a new input with prefix ("Go to:"), and suffix (list of buffers found). - """ - global old_input, buffers, buffers_pos - if modifier_data != weechat.current_buffer(): - return '' - names = '' - new_input = weechat.string_remove_color(string, '') - new_input = new_input.lstrip() - if old_input is None or new_input != old_input: - old_buffers = buffers - buffers = go_matching_buffers(new_input) - if buffers != old_buffers and len(new_input) > 0: - if len(buffers) == 1 and go_option_enabled('auto_jump'): - weechat.command(modifier_data, '/wait 1ms /input return') - buffers_pos = 0 - old_input = new_input - names = go_buffers_to_string(buffers, buffers_pos, new_input.strip()) - return weechat.config_get_plugin('message') + string + names - - -def go_command_run_input(data, buf, command): - """Function called when a command "/input xxx" is run.""" - global buffers, buffers_pos - if command == '/input search_text' or command.find('/input jump') == 0: - # search text or jump to another buffer is forbidden now - return weechat.WEECHAT_RC_OK_EAT - elif command == '/input complete_next': - # choose next buffer in list - buffers_pos += 1 - if buffers_pos >= len(buffers): - buffers_pos = 0 - weechat.hook_signal_send('input_text_changed', - weechat.WEECHAT_HOOK_SIGNAL_STRING, '') - return weechat.WEECHAT_RC_OK_EAT - elif command == '/input complete_previous': - # choose previous buffer in list - buffers_pos -= 1 - if buffers_pos < 0: - buffers_pos = len(buffers) - 1 - weechat.hook_signal_send('input_text_changed', - weechat.WEECHAT_HOOK_SIGNAL_STRING, '') - return weechat.WEECHAT_RC_OK_EAT - elif command == '/input return': - # switch to selected buffer (if any) - go_end(buf) - if len(buffers) > 0: - weechat.command( - buf, '/buffer ' + str(buffers[buffers_pos]['full_name'])) - return weechat.WEECHAT_RC_OK_EAT - return weechat.WEECHAT_RC_OK - - -def go_command_run_buffer(data, buf, command): - """Function called when a command "/buffer xxx" is run.""" - return weechat.WEECHAT_RC_OK_EAT - - -def go_command_run_window(data, buf, command): - """Function called when a command "/window xxx" is run.""" - return weechat.WEECHAT_RC_OK_EAT - - -def go_unload_script(): - """Function called when script is unloaded.""" - go_unhook_all() - return weechat.WEECHAT_RC_OK - - -def go_main(): - """Entry point.""" - if not weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, - SCRIPT_LICENSE, SCRIPT_DESC, - 'go_unload_script', ''): - return - weechat.hook_command( - SCRIPT_COMMAND, - 'Quick jump to buffers', '[name]', - 'name: directly jump to buffer by name (without argument, list is ' - 'displayed)\n\n' - 'You can bind command to a key, for example:\n' - ' /key bind meta-g /go\n\n' - 'You can use completion key (commonly Tab and shift-Tab) to select ' - 'next/previous buffer in list.', - '%(buffers_names)', - 'go_cmd', '') - - # set default settings - version = weechat.info_get('version_number', '') or 0 - for option, value in SETTINGS.items(): - if not weechat.config_is_set_plugin(option): - weechat.config_set_plugin(option, value[0]) - if int(version) >= 0x00030500: - weechat.config_set_desc_plugin( - option, '%s (default: "%s")' % (value[1], value[0])) - weechat.hook_info('go_running', - 'Return "1" if go is running, otherwise "0"', - '', - 'go_info_running', '') - - -if __name__ == "__main__" and IMPORT_OK: - go_main() diff --git a/weechat/.weechat/python/urlgrab.py b/weechat/.weechat/python/urlgrab.py deleted file mode 100644 index b4dc8e6..0000000 --- a/weechat/.weechat/python/urlgrab.py +++ /dev/null @@ -1,687 +0,0 @@ -# -# UrlGrab, for weechat version >= 0.3.0 -# -# Listens to all channels for URLs, collects them in a list, and launches -# them in your favourite web server on the local host or a remote server. -# Copies url to X11 clipboard via xsel -# (http://www.vergenet.net/~conrad/software/xsel) -# -# Usage: -# -# The /url command provides access to all UrlGrab functions. Run -# '/help url' for complete command usage. -# -# In general, use '/url list' to list the entire url list for the current -# channel, and '/url ' to launch the nth url in the list. For -# example, to launch the first (and most-recently added) url in the list, -# you would run '/url 1' -# -# From the server window, you must specify a specific channel for the -# list and launch commands, for example: -# /url list weechat -# /url 3 weechat -# -# Configuration: -# -# The '/url set' command lets you get and set the following options: -# -# historysize -# The maximum number of URLs saved per channel. Default is 10 -# -# method -# Must be one of 'local' or 'remote' - Defines how URLs are launched by -# the script. If 'local', the script will run 'localcmd' on the host. -# If 'remote', the script will run 'remotessh remotehost remotecmd' on -# the local host which should normally use ssh to connect to another -# host and run the browser command there. -# -# localcmd -# The command to run on the local host to launch URLs in 'local' mode. -# The string '%s' will be replaced with the URL. The default is -# 'firefox %s'. -# -# remotessh -# The command (and arguments) used to connect to the remote host for -# 'remote' mode. The default is 'ssh -x' which will connect as the -# current username via ssh and disable X11 forwarding. -# -# remotehost -# The remote host to which we will connect in 'remote' mode. For ssh, -# this can just be a hostname or 'user@host' to specify a username -# other than your current login name. The default is 'localhost'. -# -# remotecmd -# The command to execute on the remote host for 'remote' mode. The -# default is 'bash -c "DISPLAY=:0.0 firefox '%s'"' Which runs bash, sets -# up the environment to display on the remote host's main X display, -# and runs firefox. As with 'localcmd', the string '%s' will be -# replaced with the URL. -# -# cmdoutput -# The file where the command output (if any) is saved. Overwritten -# each time you launch a new URL. Default is ~/.weechat/urllaunch.log -# -# default -# The command that will be run if no arguemnts to /url are given. -# Default is show -# -# Requirements: -# -# - Designed to run with weechat version 0.3 or better. -# http://www.weechat.org/ -# -# Acknowlegements: -# -# - Based on an earlier version called 'urlcollector.py' by 'kolter' of -# irc.freenode.net/#weechat Honestly, I just cleaned up the code a bit and -# made the settings a little more useful (to me). -# -# - With changes by Leonid Evdokimov (weechat at darkk dot net another dot ru): -# http://darkk.net.ru/weechat/urlgrab.py -# v1.1: added better handling of dead zombie-childs -# added parsing of private messages -# added default command setting -# added parsing of scrollback buffers on load -# v1.2: `historysize` was ignored -# -# - With changes by ExclusivE (exclusive_tm at mail dot ru): -# v1.3: X11 clipboard support -# -# - V1.4 Just ported it over to weechat 0.2.7 drubin AT smartcube dot co dot za -# - V1.5 1) I created a logging feature for urls, Time, Date, buffer, and url. -# 2) Added selectable urls support, similar to the iset plugin (Thanks FlashCode) -# 3) Colors/formats are configuarable. -# 4) browser now uses hook_process (Please test with remote clients) -# 5) Added /url open http://url.com functionality -# 6) Changed urls detection to use regexpressions so should be much better -# Thanks to xt of #weechat bassed on on urlbar.py -# - V1.6 FlashCode : Increase timeout for hook_process -# (from 1 second to 1 minute) -# - V1.7 FlashCode : Update WeeChat site -# - V1.8 drubin : -# - Changed remote cmd to be single option -# - Added scrolling on up and down arrow keys for /url show -# - Changed remotecmd to include options with public/private keys password auth doesn't work -# - V1.9 Specimen : -# - Changed the default command when /url is run with no arguments to 'show' -# - Removed '/url help' command, because /help is the standard way -# - V2.0 Xilov: replace "/url help" by "/help url" -# - V2.1 nand: Changed default: firefox %s to firefox '%s' (localcmd) -# - V2.2 Sebastien Helleu : fix reload of config file -# - V2.3 nand: Allowed trailing )s for unmatched (s in URLs -# - V2.4 nand: Escaped URLs via URL-encoding instead of shell escaping, fixes ' -# - V2.5 nand: Fixed some URLs that got incorrectly mangled by escaping -# - V2.6 nesthib: Fixed escaping of "=" -# Added missing quotes in default parameter (firefox '%s') -# Removed the mix of tabs and spaces in the file indentation -# - V2.7 dobbymoodge -# ( https://github.com/dobbymoodge/ ): -# - Added 'copycmd' setting, users can set command to pipe into -# for '/url copy' -# - V2.8 Simmo Saan : -# - Changed print hook to ignore filtered lines -# -# Copyright (C) 2005 David Rubin -# -# 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 2 -# 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, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -# USA. -# - -import sys -import os -try: - import weechat - import_ok = True -except: - print "This script must be run under WeeChat." - print "Get WeeChat now at: http://www.weechat.org/" - import_ok = False -import subprocess -import time -import urllib -import re -from UserDict import UserDict - - -octet = r'(?:2(?:[0-4]\d|5[0-5])|1\d\d|\d{1,2})' -ipAddr = r'%s(?:\.%s){3}' % (octet, octet) -# Base domain regex off RFC 1034 and 1738 -label = r'[0-9a-z][-0-9a-z]*[0-9a-z]?' -domain = r'%s(?:\.%s)*\.[a-z][-0-9a-z]*[a-z]?' % (label, label) -urlRe = re.compile(r'(\w+://(?:%s|%s)(?::\d+)?(?:/[^\]>\s]*)?)' % (domain, ipAddr), re.I) - - -SCRIPT_NAME = "urlgrab" -SCRIPT_AUTHOR = "David Rubin " -SCRIPT_VERSION = "2.8" -SCRIPT_LICENSE = "GPL" -SCRIPT_DESC = "Url functionality Loggin, opening of browser, selectable links" -CONFIG_FILE_NAME= "urlgrab" -SCRIPT_COMMAND = "url" - - -def stripParens(url): - return dropChar(')', url.count(')') - url.count('('), url[::-1])[::-1] - -def dropChar(c, n, xs): - if n == 0 or xs == []: - return xs - elif xs[0] == c: - return dropChar(c, n-1, xs[1:]) - else: - return xs - -def urlGrabPrint(message): - bufferd=weechat.current_buffer() - if urlGrabSettings['output_main_buffer'] == 1 : - weechat.prnt("","[%s] %s" % ( SCRIPT_NAME, message ) ) - else : - weechat.prnt(bufferd,"[%s] %s" % ( SCRIPT_NAME, message ) ) - -def hashBufferName(bufferp): - if not weechat.buffer_get_string(bufferp, "short_name"): - bufferd = weechat.buffer_get_string(bufferp, "name") - else: - bufferd = weechat.buffer_get_string(bufferp, "short_name") - return bufferd - -def ug_config_reload_cb(data, config_file): - """ Reload configuration file. """ - return weechat.config_reload(config_file) - -class UrlGrabSettings(UserDict): - def __init__(self): - UserDict.__init__(self) - self.data = {} - self.config_file = weechat.config_new(CONFIG_FILE_NAME, - "ug_config_reload_cb", "") - if not self.config_file: - return - - section_color = weechat.config_new_section( - self.config_file, "color", 0, 0, "", "", "", "", "", "", - "", "", "", "") - section_default = weechat.config_new_section( - self.config_file, "default", 0, 0, "", "", "", "", "", "", - "", "", "", "") - - self.data['color_buffer']=weechat.config_new_option( - self.config_file, section_color, - "color_buffer", "color", "Color to display buffer name", "", 0, 0, - "red", "red", 0, "", "", "", "", "", "") - - self.data['color_url']=weechat.config_new_option( - self.config_file, section_color, - "color_url", "color", "Color to display urls", "", 0, 0, - "blue", "blue", 0, "", "", "", "", "", "") - - self.data['color_time']=weechat.config_new_option( - self.config_file, section_color, - "color_time", "color", "Color to display time", "", 0, 0, - "cyan", "cyan", 0, "", "", "", "", "", "") - - self.data['color_buffer_selected']=weechat.config_new_option( - self.config_file, section_color, - "color_buffer_selected", "color", - "Color to display buffer selected name", "", 0, 0, "red", "red", - 0, "", "", "", "", "", "") - - self.data['color_url_selected']=weechat.config_new_option( - self.config_file, section_color, - "color_url_selected", "color", "Color to display url selected", - "", 0, 0, "blue", "blue", 0, "", "", "", "", "", "") - - self.data['color_time_selected']=weechat.config_new_option( - self.config_file, section_color, - "color_time_selected", "color", "Color to display tim selected", - "", 0, 0, "cyan", "cyan", 0, "", "", "", "", "", "") - - self.data['color_bg_selected']=weechat.config_new_option( - self.config_file, section_color, - "color_bg_selected", "color", "Background for selected row", "", 0, 0, - "green", "green", 0, "", "", "", "", "", "") - - self.data['historysize']=weechat.config_new_option( - self.config_file, section_default, - "historysize", "integer", "Max number of urls to store per buffer", - "", 0, 999, "10", "10", 0, "", "", "", "", "", "") - - self.data['method']=weechat.config_new_option( - self.config_file, section_default, - "method", "string", """Where to launch URLs - If 'local', runs %localcmd%. - If 'remote' runs the following command: - '%remodecmd%'""", "", 0, 0, - "local", "local", 0, "", "", "", "", "", "") - - self.data['copycmd']=weechat.config_new_option( - self.config_file, section_default, - "copycmd", "string", - "Command to pipe into for 'url copy'. " - "E.g. to copy into the CLIPBOARD buffer " - "instead of PRIMARY, you can use 'xsel -b " - "-i' here.", "", 0, 0, - "xsel -i", "xsel -i", 0, "", "", "", "", "", "") - - self.data['localcmd']=weechat.config_new_option( - self.config_file, section_default, - "localcmd", "string", """Local command to execute""", "", 0, 0, - "firefox '%s'", "firefox '%s'", 0, "", "", "", "", "", "") - - remotecmd="ssh -x localhost -i ~/.ssh/id_rsa -C \"export DISPLAY=\":0.0\" && firefox '%s'\"" - self.data['remotecmd']=weechat.config_new_option( - self.config_file, section_default, - "remotecmd", "string", remotecmd, "", 0, 0, - remotecmd, remotecmd, 0, "", "", "", "", "", "") - - self.data['url_log']=weechat.config_new_option( - self.config_file, section_default, - "url_log", "string", """log location""", "", 0, 0, - "~/.weechat/urls.log", "~/.weechat/urls.log", 0, "", "", "", "", "", "") - - self.data['time_format']=weechat.config_new_option( - self.config_file, section_default, - "time_format", "string", """TIme format""", "", 0, 0, - "%H:%M:%S", "%H:%M:%S", 0, "", "", "", "", "", "") - - self.data['output_main_buffer']=weechat.config_new_option( - self.config_file, section_default, - "output_main_buffer", "boolean", - """Print text to main buffer or current one""", "", 0, 0, "1", "1", - 0, "", "", "", "", "", "") - weechat.config_read(self.config_file) - - def __getitem__(self, key): - if key == "historysize": - return weechat.config_integer(self.data[key]) - elif key == 'output_main_buffer': - return weechat.config_boolean(self.data[key]) - #elif key.startswith('color'): - # return weechat.config_color(self.data[key]) - else: - return weechat.config_string(self.data[key]) - - def prnt(self, name, verbose = True): - weechat.prnt( ""," %s = %s" % (name.ljust(11), self.data[name]) ) - - def prntall(self): - for key in self.names(): - self.prnt(key, verbose = False) - - def createCmd(self, url): - str ="" - if self['method'] == 'remote': - str = self['remotecmd'] % url - else: - str = self['localcmd'] % url - return str - -class UrlGrabber: - def __init__(self, historysize): - # init - self.urls = {} - self.globalUrls = [] - self.historysize = 5 - # control - self.setHistorysize(historysize) - - def setHistorysize(self, count): - if count > 1: - self.historysize = count - - def getHistorysize(self): - return self.historysize - - def addUrl(self, bufferp,url ): - global urlGrabSettings - self.globalUrls.insert(0,{"buffer":bufferp, - "url":url, "time":time.strftime(urlGrabSettings["time_format"])}) - #Log urls only if we have set a log path. - if urlGrabSettings['url_log']: - try : - index = self.globalUrls[0] - logfile = os.path.expanduser(urlGrabSettings['url_log']) - dout = open(logfile, "a") - dout.write("%s %s %s\n" % (index['time'], - index['buffer'], index['url'])) - dout.close() - except : - print "failed to log url check that %s is valid path" % urlGrabSettings['url_log'] - pass - - # check for buffer - if not bufferp in self.urls: - self.urls[bufferp] = [] - # add url - if url in self.urls[bufferp]: - self.urls[bufferp].remove(url) - self.urls[bufferp].insert(0, url) - # removing old urls - while len(self.urls[bufferp]) > self.historysize: - self.urls[bufferp].pop() - - def hasIndex( self, bufferp, index ): - return bufferp in self.urls and \ - len(self.url[bufferp]) >= index - - def hasBuffer( self, bufferp ): - return bufferp in self.urls - - - def getUrl(self, bufferp, index): - url = "" - if bufferp in self.urls: - if len(self.urls[bufferp]) >= index: - url = self.urls[bufferp][index-1] - return url - - - def prnt(self, buff): - found = True - if self.urls.has_key(buff): - if len(self.urls[buff]) > 0: - i = 1 - for url in self.urls[buff]: - urlGrabPrint("--> " + str(i) + " : " + url) - i += 1 - else: - found = False - elif buff == "*": - for b in self.urls.keys(): - self.prnt(b) - else: - found = False - - if not found: - urlGrabPrint(buff + ": no entries") - -def urlGrabCheckMsgline(bufferp, message, isdisplayed): - global urlGrab, max_buffer_length - if not message or isdisplayed == 0: - return - # Ignore output from 'tinyurl.py' and our selfs - if ( message.startswith( "[AKA] http://tinyurl.com" ) or - message.startswith("[urlgrab]") ): - return - # Check for URLs - for url in urlRe.findall(message): - urlGrab.addUrl(bufferp,stripParens(url)) - if max_buffer_length < len(bufferp): - max_buffer_length = len(bufferp) - if urlgrab_buffer: - refresh() - - -def urlGrabCheck(data, bufferp, uber_empty, tagsn, isdisplayed, ishilight, prefix, message): - urlGrabCheckMsgline(hashBufferName(bufferp), message, isdisplayed) - return weechat.WEECHAT_RC_OK - -def urlGrabCopy(bufferd, index): - global urlGrab - if bufferd == "": - urlGrabPrint( "No current channel, you must activate one" ) - elif not urlGrab.hasBuffer(bufferd): - urlGrabPrint("No URL found - Invalid channel") - else: - if index <= 0: - urlGrabPrint("No URL found - Invalid index") - return - url = urlGrab.getUrl(bufferd,index) - if url == "": - urlGrabPrint("No URL found - Invalid index") - else: - try: - pipe = os.popen(urlGrabSettings['copycmd'],"w") - pipe.write(url) - pipe.close() - urlGrabPrint("Url: %s gone to clipboard." % url) - except: - urlGrabPrint("Url: %s failed to copy to clipboard." % url) - -def urlGrabOpenUrl(url): - global urlGrab, urlGrabSettings - argl = urlGrabSettings.createCmd( urllib.quote(url, '/:#%?&+=') ) - weechat.hook_process(argl,60000, "ug_open_cb", "") - -def ug_open_cb(data, command, code, out, err): - #print out - #print err - return weechat.WEECHAT_RC_OK - - -def urlGrabOpen(bufferd, index): - global urlGrab, urlGrabSettings - if bufferd == "": - urlGrabPrint( "No current channel, you must specify one" ) - elif not urlGrab.hasBuffer(bufferd) : - urlGrabPrint("No URL found - Invalid channel") - else: - if index <= 0: - urlGrabPrint("No URL found - Invalid index") - return - url = urlGrab.getUrl(bufferd,index) - if url == "": - urlGrabPrint("No URL found - Invalid index") - else: - urlGrabPrint("loading %s %sly" % (url, urlGrabSettings["method"])) - urlGrabOpenUrl (url) - -def urlGrabList( args ): - global urlGrab - if len(args) == 0: - buf = hashBufferName(weechat.current_buffer()) - else: - buf = args[0] - if buf == "" or buf == "all": - buf = "*" - urlGrab.prnt(buf) - - -def urlGrabMain(data, bufferp, args): - if args[0:2] == "**": - keyEvent(data, bufferp, args[2:]) - return weechat.WEECHAT_RC_OK - - bufferd = hashBufferName(bufferp) - largs = args.split(" ") - #strip spaces - while '' in largs: - largs.remove('') - while ' ' in largs: - largs.remove(' ') - if len(largs) == 0 or largs[0] == "show": - if not urlgrab_buffer: - init() - refresh() - weechat.buffer_set(urlgrab_buffer, "display", "1") - elif largs[0] == 'open' and len(largs) == 2: - urlGrabOpenUrl(largs[1]) - elif largs[0] == 'list': - urlGrabList( largs[1:] ) - elif largs[0] == 'copy': - if len(largs) > 1: - no = int(largs[1]) - urlGrabCopy(bufferd, no) - else: - urlGrabCopy(bufferd,1) - else: - try: - no = int(largs[0]) - if len(largs) > 1: - urlGrabOpen(largs[1], no) - else: - urlGrabOpen(bufferd, no) - except ValueError: - #not a valid number so try opening it as a url.. - for url in urlRe.findall(largs[0]): - urlGrabOpenUrl(stripParens(url)) - urlGrabPrint( "Unknown command '%s'. Try '/help url' for usage" % largs[0]) - return weechat.WEECHAT_RC_OK - -def buffer_input(*kwargs): - return weechat.WEECHAT_RC_OK - -def buffer_close(*kwargs): - global urlgrab_buffer - urlgrab_buffer = None - return weechat.WEECHAT_RC_OK - -def keyEvent (data, bufferp, args): - global urlGrab , urlGrabSettings, urlgrab_buffer, current_line - if args == "refresh": - refresh() - elif args == "up": - if current_line > 0: - current_line = current_line -1 - refresh_line (current_line + 1) - refresh_line (current_line) - ugCheckLineOutsideWindow() - elif args == "down": - if current_line < len(urlGrab.globalUrls) - 1: - current_line = current_line +1 - refresh_line (current_line - 1) - refresh_line (current_line) - ugCheckLineOutsideWindow() - elif args == "scroll_top": - temp_current = current_line - current_line = 0 - refresh_line (temp_current) - refresh_line (current_line) - weechat.command(urlgrab_buffer, "/window scroll_top") - pass - elif args == "scroll_bottom": - temp_current = current_line - current_line = len(urlGrab.globalUrls) - refresh_line (temp_current) - refresh_line (current_line) - weechat.command(urlgrab_buffer, "/window scroll_bottom") - elif args == "enter": - if urlGrab.globalUrls[current_line]: - urlGrabOpenUrl (urlGrab.globalUrls[current_line]['url']) - -def refresh_line (y): - global urlGrab , urlGrabSettings, urlgrab_buffer, current_line, max_buffer_length - #Print format Time(space)buffer(max4 spaces, but lined up)url - format = "%%s%%s %%s%%-%ds%%s%%s" % (max_buffer_length+4) - - #non selected colors - color_buffer = urlGrabSettings["color_buffer"] - color_url = urlGrabSettings["color_url"] - color_time =urlGrabSettings["color_time"] - #selected colors - color_buffer_selected = urlGrabSettings["color_buffer_selected"] - color_url_selected = urlGrabSettings["color_url_selected"] - color_time_selected = urlGrabSettings["color_time_selected"] - - color_bg_selected = urlGrabSettings["color_bg_selected"] - - color1 = color_time - color2 = color_buffer - color3 = color_url - - #If this line is selected we change the colors. - if y == current_line: - color1 = "%s,%s" % (color_time_selected, color_bg_selected) - color2 = "%s,%s" % (color_buffer_selected, color_bg_selected) - color3 = "%s,%s" % (color_url_selected, color_bg_selected) - - color1 = weechat.color(color1) - color2 = weechat.color(color2) - color3 = weechat.color(color3) - text = format % (color1, - urlGrab.globalUrls[y]['time'], - color2, - urlGrab.globalUrls[y]['buffer'], - color3, - urlGrab.globalUrls[y]['url'] ) - weechat.prnt_y(urlgrab_buffer,y,text) - -def ugCheckLineOutsideWindow(): - global urlGrab , urlGrabSettings, urlgrab_buffer, current_line, max_buffer_length - if (urlgrab_buffer): - infolist = weechat.infolist_get("window", "", "current") - if (weechat.infolist_next(infolist)): - start_line_y = weechat.infolist_integer(infolist, "start_line_y") - chat_height = weechat.infolist_integer(infolist, "chat_height") - if(start_line_y > current_line): - weechat.command(urlgrab_buffer, "/window scroll -%i" %(start_line_y - current_line)) - elif(start_line_y <= current_line - chat_height): - weechat.command(urlgrab_buffer, "/window scroll +%i"%(current_line - start_line_y - chat_height + 1)) - weechat.infolist_free(infolist) - - -def refresh(): - global urlGrab - y=0 - for x in urlGrab.globalUrls: - refresh_line (y) - y += 1 - - -def init(): - global urlGrab , urlGrabSettings, urlgrab_buffer - if not urlgrab_buffer: - urlgrab_buffer = weechat.buffer_new("urlgrab", "buffer_input", "", "buffer_close", "") - if urlgrab_buffer: - weechat.buffer_set(urlgrab_buffer, "type", "free") - weechat.buffer_set(urlgrab_buffer, "key_bind_ctrl-R", "/url **refresh") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta2-A", "/url **up") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta2-B", "/url **down") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta-ctrl-J", "/url **enter") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta-ctrl-M", "/url **enter") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta-meta2-1./~", "/url **scroll_top") - weechat.buffer_set(urlgrab_buffer, "key_bind_meta-meta2-4~", "/url **scroll_bottom") - weechat.buffer_set(urlgrab_buffer, "title","Lists the urls in the applications") - weechat.buffer_set(urlgrab_buffer, "display", "1") - -def completion_urls_cb(data, completion_item, bufferp, completion): - """ Complete with URLS, for command '/url'. """ - global urlGrab - bufferd = hashBufferName( bufferp) - for url in urlGrab.globalUrls : - if url['buffer'] == bufferd: - weechat.hook_completion_list_add(completion, url['url'], 0, weechat.WEECHAT_LIST_POS_SORT) - return weechat.WEECHAT_RC_OK - -def ug_unload_script(): - """ Function called when script is unloaded. """ - global urlGrabSettings - weechat.config_write(urlGrabSettings.config_file) - return weechat.WEECHAT_RC_OK - -#Main stuff -if ( import_ok and - weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, - SCRIPT_LICENSE,SCRIPT_DESC, "ug_unload_script", "") ): - urlgrab_buffer = None - current_line = 0 - max_buffer_length = 0 - urlGrabSettings = UrlGrabSettings() - urlGrab = UrlGrabber( urlGrabSettings['historysize']) - weechat.hook_print("", "", "", 1, "urlGrabCheck", "") - weechat.hook_command(SCRIPT_COMMAND, - "Url Grabber", - "[open | | show | copy [n] | [n] | list]", - "open or : opens the url\n" - "show: Opens the select buffer to allow for url selection\n" - "copy: Copies the nth url to the system clipboard\n" - "list: Lists the urls in the current buffer\n", - "open %(urlgrab_urls) || %(urlgrab_urls) || " - "copy || show || list", - "urlGrabMain", "") - weechat.hook_completion("urlgrab_urls", "list of URLs", - "completion_urls_cb", "") -else: - print "failed to load weechat" diff --git a/weechat/.weechat/relay.conf b/weechat/.weechat/relay.conf deleted file mode 100644 index f9ab68b..0000000 --- a/weechat/.weechat/relay.conf +++ /dev/null @@ -1,55 +0,0 @@ -# -# weechat -- relay.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[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] -allow_empty_password = off -allowed_ips = "" -bind_address = "" -clients_purge_delay = 0 -compression_level = 6 -ipv6 = on -max_clients = 5 -password = "" -ssl_cert_key = "%h/ssl/relay.pem" -ssl_priorities = "NORMAL:-VERS-SSL3.0" -totp_secret = "" -totp_window = 0 -websocket_allowed_origins = "" - -[irc] -backlog_max_minutes = 1440 -backlog_max_number = 256 -backlog_since_last_disconnect = on -backlog_since_last_message = off -backlog_tags = "irc_privmsg" -backlog_time_format = "[%H:%M] " - -[weechat] -commands = "" - -[port] - -[path] diff --git a/weechat/.weechat/ruby.conf b/weechat/.weechat/ruby.conf deleted file mode 100644 index f6de7fb..0000000 --- a/weechat/.weechat/ruby.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- ruby.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/script.conf b/weechat/.weechat/script.conf deleted file mode 100644 index 445a2d6..0000000 --- a/weechat/.weechat/script.conf +++ /dev/null @@ -1,56 +0,0 @@ -# -# weechat -- script.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[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 = default -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 = 1440 -download_timeout = 30 -hold = "" -path = "%h/script" -url = "http://weechat.org/files/plugins.xml.gz" diff --git a/weechat/.weechat/sec.conf b/weechat/.weechat/sec.conf deleted file mode 100644 index 8c60d03..0000000 --- a/weechat/.weechat/sec.conf +++ /dev/null @@ -1,18 +0,0 @@ -# -# weechat -- sec.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[crypt] -cipher = aes256 -hash_algo = sha256 -passphrase_file = "" -salt = on - -[data] diff --git a/weechat/.weechat/spell.conf b/weechat/.weechat/spell.conf deleted file mode 100644 index 04ec3a6..0000000 --- a/weechat/.weechat/spell.conf +++ /dev/null @@ -1,33 +0,0 @@ -# -# weechat -- spell.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[color] -misspelled = lightred -suggestion = default -suggestion_delimiter_dict = cyan -suggestion_delimiter_word = cyan - -[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] - -[look] -suggestion_delimiter_dict = " / " -suggestion_delimiter_word = "," - -[option] diff --git a/weechat/.weechat/tcl.conf b/weechat/.weechat/tcl.conf deleted file mode 100644 index 4c0e389..0000000 --- a/weechat/.weechat/tcl.conf +++ /dev/null @@ -1,14 +0,0 @@ -# -# weechat -- tcl.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -check_license = off -eval_keep_context = on diff --git a/weechat/.weechat/trigger.conf b/weechat/.weechat/trigger.conf deleted file mode 100644 index 2ff585a..0000000 --- a/weechat/.weechat/trigger.conf +++ /dev/null @@ -1,67 +0,0 @@ -# -# weechat -- trigger.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -enabled = on -monitor_strip_colors = off - -[color] -flag_command = lightgreen -flag_conditions = yellow -flag_post_action = lightblue -flag_regex = lightcyan -flag_return_code = lightmagenta -regex = white -replace = cyan -trigger = green -trigger_disabled = red - -[trigger] -beep.arguments = "" -beep.command = "/print -beep" -beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})" -beep.enabled = on -beep.hook = print -beep.post_action = none -beep.regex = "" -beep.return_code = ok -cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" -cmd_pass.command = "" -cmd_pass.conditions = "" -cmd_pass.enabled = on -cmd_pass.hook = modifier -cmd_pass.post_action = none -cmd_pass.regex = "==^((/(msg|m|quote) +nickserv +(id|identify|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" -cmd_pass.return_code = ok -cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" -cmd_pass_register.command = "" -cmd_pass_register.conditions = "" -cmd_pass_register.enabled = on -cmd_pass_register.hook = modifier -cmd_pass_register.post_action = none -cmd_pass_register.regex = "==^(/(msg|m|quote) +nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:3}}${re:4}" -cmd_pass_register.return_code = ok -msg_auth.arguments = "5000|irc_message_auth" -msg_auth.command = "" -msg_auth.conditions = "" -msg_auth.enabled = on -msg_auth.hook = modifier -msg_auth.post_action = none -msg_auth.regex = "==^(.*(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" -msg_auth.return_code = ok -server_pass.arguments = "5000|input_text_display;5000|history_add" -server_pass.command = "" -server_pass.conditions = "" -server_pass.enabled = on -server_pass.hook = modifier -server_pass.post_action = none -server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}" -server_pass.return_code = ok diff --git a/weechat/.weechat/urlgrab.conf b/weechat/.weechat/urlgrab.conf deleted file mode 100644 index 9c0c22f..0000000 --- a/weechat/.weechat/urlgrab.conf +++ /dev/null @@ -1,29 +0,0 @@ -# -# weechat -- urlgrab.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[color] -color_bg_selected = green -color_buffer = red -color_buffer_selected = red -color_time = cyan -color_time_selected = cyan -color_url = blue -color_url_selected = blue - -[default] -copycmd = "xclip -selection clipboard -i" -historysize = 10 -localcmd = "firefox '%s'" -method = "local" -output_main_buffer = on -remotecmd = "ssh -x localhost -i ~/.ssh/id_rsa -C "export DISPLAY=":0.0" && firefox '%s'"" -time_format = "%H:%M:%S" -url_log = "~/.weechat/urls.log" diff --git a/weechat/.weechat/weechat.conf b/weechat/.weechat/weechat.conf deleted file mode 100644 index 250ad68..0000000 --- a/weechat/.weechat/weechat.conf +++ /dev/null @@ -1,683 +0,0 @@ -# -# weechat -- weechat.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[debug] - -[startup] -command_after_plugins = "" -command_before_plugins = "" -display_logo = on -display_version = on -sys_rlimit = "" - -[look] -align_end_of_lines = message -align_multiline_words = on -bar_more_down = "▼▼" -bar_more_left = "◀◀" -bar_more_right = "▶▶" -bar_more_up = "▲▲" -bare_display_exit_on_input = on -bare_display_time_format = "%H:%M" -buffer_auto_renumber = on -buffer_notify_default = message -buffer_position = end -buffer_search_case_sensitive = off -buffer_search_force_default = off -buffer_search_regex = off -buffer_search_where = prefix_message -buffer_time_format = "%H:%M:%S" -buffer_time_same = "" -color_basic_force_bold = off -color_inactive_buffer = on -color_inactive_message = on -color_inactive_prefix = on -color_inactive_prefix_buffer = on -color_inactive_time = off -color_inactive_window = on -color_nick_offline = off -color_pairs_auto_reset = 5 -color_real_white = off -command_chars = "" -command_incomplete = off -confirm_quit = off -confirm_upgrade = off -day_change = on -day_change_message_1date = "-- %a, %d %b %Y --" -day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" -eat_newline_glitch = off -emphasized_attributes = "" -highlight = "" -highlight_regex = "" -highlight_tags = "" -hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0" -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_prefix = "H: " -hotlist_remove = merged -hotlist_short_names = on -hotlist_sort = group_time_asc -hotlist_suffix = "" -hotlist_unique_numbers = on -input_cursor_scroll = 20 -input_share = none -input_share_overwrite = off -input_undo_max = 32 -item_away_message = on -item_buffer_filter = "*" -item_buffer_zoom = "!" -item_mouse_status = "M" -item_time_format = "%H:%M" -jump_current_to_previous_buffer = on -jump_previous_buffer_when_closing = on -jump_smart_back_to_buffer = on -key_bind_safe = on -key_grab_delay = 800 -mouse = on -mouse_timer_delay = 100 -nick_color_force = "" -nick_color_hash = djb2 -nick_color_stop_chars = "_|[" -nick_prefix = "" -nick_suffix = "" -paste_auto_add_newline = on -paste_bracketed = on -paste_bracketed_timer_delay = 10 -paste_max_lines = 1 -prefix_action = "⚡" -prefix_align = right -prefix_align_max = 15 -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_same_nick_middle = "" -prefix_suffix = "╡" -quote_nick_prefix = "<" -quote_nick_suffix = ">" -quote_time_format = "%H:%M:%S" -read_marker = line -read_marker_always_show = off -read_marker_string = "- " -save_config_on_exit = on -save_config_with_fsync = off -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 = "" -tab_width = 1 -time_format = "%a, %d %b %Y %T" -window_auto_zoom = off -window_separator_horizontal = on -window_separator_vertical = on -window_title = "WeeChat ${info:version}" -word_chars_highlight = "!\u00A0,-,_,|,alnum" -word_chars_input = "!\u00A0,-,_,|,alnum" - -[palette] - -[color] -bar_more = lightmagenta -chat = default -chat_bg = default -chat_buffer = white -chat_channel = white -chat_day_change = cyan -chat_delimiters = green -chat_highlight = yellow -chat_highlight_bg = magenta -chat_host = cyan -chat_inactive_buffer = default -chat_inactive_window = default -chat_nick = lightcyan -chat_nick_colors = "1,2,3,4,5,6" -chat_nick_offline = default -chat_nick_offline_highlight = default -chat_nick_offline_highlight_bg = blue -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 = default -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 -chat_value_null = blue -emphasized = yellow -emphasized_bg = magenta -input_actions = lightgreen -input_text_not_found = red -item_away = yellow -nicklist_away = cyan -nicklist_group = green -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_mouse = green -status_name = white -status_name_ssl = lightgreen -status_nicklist_count = default -status_number = yellow -status_time = default - -[completion] -base_word_until_cursor = on -command_inline = on -default_template = "%(nicks)|%(irc_channels)" -nick_add_space = on -nick_case_sensitive = off -nick_completer = ":" -nick_first_only = off -nick_ignore_chars = "[]`_-^" -partial_completion_alert = on -partial_completion_command = off -partial_completion_command_arg = off -partial_completion_count = on -partial_completion_other = off -partial_completion_templates = "config_options" - -[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 -proxy_curl = "" - -[plugin] -autoload = "*" -debug = off -extension = ".so,.dll" -path = "%h/plugins" -save_config_on_unload = on - -[bar] -buffers.color_bg = default -buffers.color_delim = default -buffers.color_fg = default -buffers.conditions = "" -buffers.filling_left_right = vertical -buffers.filling_top_bottom = columns_vertical -buffers.hidden = on -buffers.items = "buffers" -buffers.position = top -buffers.priority = 0 -buffers.separator = on -buffers.size = 0 -buffers.size_max = 0 -buffers.type = root -buflist.color_bg = default -buflist.color_delim = default -buflist.color_fg = default -buflist.conditions = "" -buflist.filling_left_right = vertical -buflist.filling_top_bottom = columns_vertical -buflist.hidden = off -buflist.items = "buflist" -buflist.position = left -buflist.priority = 0 -buflist.separator = on -buflist.size = 0 -buflist.size_max = 0 -buflist.type = root -fset.color_bg = default -fset.color_delim = cyan -fset.color_fg = default -fset.conditions = "${buffer.full_name} == fset.fset" -fset.filling_left_right = vertical -fset.filling_top_bottom = horizontal -fset.hidden = off -fset.items = "fset" -fset.position = top -fset.priority = 0 -fset.separator = on -fset.size = 3 -fset.size_max = 3 -fset.type = window -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 -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 = 0 -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_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,scroll,[lag],[hotlist],completion" -status.position = bottom -status.priority = 500 -status.separator = off -status.size = 1 -status.size_max = 0 -status.type = window -title.color_bg = 0 -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] -irc_smart = on;*;irc_smart_filter;* -irc_join_names = on;*;irc_366,irc_332,irc_333,irc_329,irc_324;* - -[key] -ctrl-? = "/input delete_previous_char" -ctrl-A = "/input move_beginning_of_line" -ctrl-B = "/input move_previous_char" -ctrl-C_ = "/input insert \x1F" -ctrl-Cb = "/input insert \x02" -ctrl-Cc = "/input insert \x03" -ctrl-Ci = "/input insert \x1D" -ctrl-Co = "/input insert \x0F" -ctrl-Cv = "/input insert \x16" -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_here" -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-meta-OP = "/bar scroll buflist * b" -meta-meta-OQ = "/bar scroll buflist * e" -meta-meta2-11~ = "/bar scroll buflist * b" -meta-meta2-12~ = "/bar scroll buflist * e" -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-- = "/filter toggle @" -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-OP = "/bar scroll buflist * -100%" -meta-OQ = "/bar scroll buflist * +100%" -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-11^ = "/bar scroll buflist * -100%" -meta2-11~ = "/bar scroll buflist * -100%" -meta2-12^ = "/bar scroll buflist * +100%" -meta2-12~ = "/bar scroll buflist * +100%" -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;3F = "/window scroll_bottom" -meta2-1;3H = "/window scroll_top" -meta2-1;3P = "/bar scroll buflist * b" -meta2-1;3Q = "/bar scroll buflist * e" -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;5P = "/bar scroll buflist * -100%" -meta2-1;5Q = "/bar scroll buflist * +100%" -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;3~ = "/bar scroll nicklist * b" -meta2-23~ = "/bar scroll nicklist * -100%" -meta2-24;3~ = "/bar scroll nicklist * e" -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-g = "/go" -meta-h = "/input hotlist_clear" -meta-jmeta-f = "/buffer -" -meta-jmeta-l = "/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-l = "/window bare" -meta-m = "/mute mouse toggle" -meta-n = "/bar toggle nicklist" -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-I = "/input search_switch_where" -ctrl-J = "/input search_stop_here" -ctrl-M = "/input search_stop_here" -ctrl-Q = "/input search_stop" -ctrl-R = "/input search_switch_regex" -meta2-A = "/input search_previous" -meta2-B = "/input search_next" -meta-c = "/input search_switch_case" - -[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(buffers):ctrl-wheeldown = "hsignal:buffers_mouse" -@bar(buffers):ctrl-wheelup = "hsignal:buffers_mouse" -@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse" -@bar(buflist):ctrl-wheelup = "hsignal:buflist_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(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}" -@chat(fset.fset):button2* = "hsignal:fset_mouse" -@chat(fset.fset):wheeldown = "/fset -down 5" -@chat(fset.fset):wheelup = "/fset -up 5" -@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}" -@item(buffers):button1* = "hsignal:buffers_mouse" -@item(buffers):button2* = "hsignal:buffers_mouse" -@item(buflist):button1* = "hsignal:buflist_mouse" -@item(buflist):button2* = "hsignal:buflist_mouse" -@item(buflist2):button1* = "hsignal:buflist_mouse" -@item(buflist2):button2* = "hsignal:buflist_mouse" -@item(buflist3):button1* = "hsignal:buflist_mouse" -@item(buflist3):button2* = "hsignal:buflist_mouse" -@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/xfer.conf b/weechat/.weechat/xfer.conf deleted file mode 100644 index 551316f..0000000 --- a/weechat/.weechat/xfer.conf +++ /dev/null @@ -1,49 +0,0 @@ -# -# weechat -- xfer.conf -# -# WARNING: It is NOT recommended to edit this file by hand, -# especially if WeeChat is running. -# -# Use /set or similar command to change settings in WeeChat. -# -# For more info, see: https://weechat.org/doc/quickstart -# - -[look] -auto_open_buffer = on -progress_bar_size = 20 -pv_tags = "notify_private" - -[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 = "" -send_ack = on -speed_limit_recv = 0 -speed_limit_send = 0 -timeout = 300 - -[file] -auto_accept_chats = off -auto_accept_files = off -auto_accept_nicks = "" -auto_check_crc32 = off -auto_rename = on -auto_resume = on -convert_spaces = on -download_path = "%h/xfer" -download_temporary_suffix = ".part" -upload_path = "~" -use_nick_in_filename = on