Compare commits
No commits in common. "master" and "master" have entirely different histories.
5
.bashrc
5
.bashrc
|
@ -119,8 +119,3 @@ fi
|
||||||
# set EDITOR just in case
|
# set EDITOR just in case
|
||||||
export EDITOR=nano
|
export EDITOR=nano
|
||||||
|
|
||||||
# run welcome script
|
|
||||||
if [ -f ~/.new_user ]; then
|
|
||||||
/usr/local/bin/welcome
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
new -s tilde -n chat 'weechat-curses';
|
new -s tilde -n chat 'firejail weechat-curses';
|
||||||
neww -n mail 'mutt';
|
neww -n mail 'firejail mutt';
|
||||||
neww -n shell;
|
neww -n shell;
|
||||||
send-keys -t ":2" byobu-info Enter;
|
send-keys -t ":2" byobu-info Enter;
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
[ -r /usr/share/byobu/profiles/bashrc ] && . /usr/share/byobu/profiles/bashrc #byobu-prompt#
|
[ -r /usr/share/byobu/profiles/bashrc ] && . /usr/share/byobu/profiles/bashrc #byobu-prompt#
|
||||||
|
byobu-info
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
# Default: depends on the distro (which is either auto-detected, either set
|
# Default: depends on the distro (which is either auto-detected, either set
|
||||||
# via $DISTRO)
|
# via $DISTRO)
|
||||||
LOGO="$(color g w) ~ $(color -) "
|
#LOGO="\o/"
|
||||||
|
|
||||||
# Abbreviate the release to N characters
|
# Abbreviate the release to N characters
|
||||||
# By default, this is disabled. But if you set RELEASE_ABBREVIATED=1
|
# By default, this is disabled. But if you set RELEASE_ABBREVIATED=1
|
||||||
|
|
|
@ -23,7 +23,7 @@ config_git_push=false
|
||||||
config_autoindent=true
|
config_autoindent=true
|
||||||
|
|
||||||
config_file_rss="rss.xml"
|
config_file_rss="rss.xml"
|
||||||
config_gopher_name="$USER's gopherhole"
|
config_gopher_name="ben's gopherhole"
|
||||||
config_gopher_desc="this is my gopherhole"
|
config_gopher_desc="this is my gopherhole"
|
||||||
config_rss_num_entries="10"
|
config_rss_num_entries="10"
|
||||||
|
|
||||||
|
|
91
.kshrc
91
.kshrc
|
@ -1,91 +0,0 @@
|
||||||
# This file contains examples of some of the things you may want to
|
|
||||||
# include in a user startup file.
|
|
||||||
|
|
||||||
# skip this setup for non-interactive shells
|
|
||||||
[[ -o interactive && -t 0 ]] || return
|
|
||||||
|
|
||||||
# disable core dumps
|
|
||||||
ulimit -c 0
|
|
||||||
|
|
||||||
# Environment variables. These could go in .profile if you prefer
|
|
||||||
export VISUAL=vi
|
|
||||||
export EDITOR=$VISUAL
|
|
||||||
export PAGER=less
|
|
||||||
export GZIP=-9
|
|
||||||
|
|
||||||
# set some shell options
|
|
||||||
set -o emacs -o trackall -o globstar
|
|
||||||
|
|
||||||
# specify search path for autoloadable functions
|
|
||||||
FPATH=/usr/share/ksh/functions:~/.func
|
|
||||||
|
|
||||||
# avoid certain file types in completion
|
|
||||||
FIGNORE='@(*.o|~*)'
|
|
||||||
|
|
||||||
# save more commands in history
|
|
||||||
HISTSIZE=500
|
|
||||||
HISTEDIT=$EDITOR
|
|
||||||
|
|
||||||
# aliases for various command shortcuts
|
|
||||||
alias ll='ls -lFb'
|
|
||||||
alias la='ls -LaFb'
|
|
||||||
alias pu='ps -fu $USER'
|
|
||||||
alias md=mkdir
|
|
||||||
alias rd=rmdir
|
|
||||||
|
|
||||||
# avoid problems with long argument lists for some commands (like xargs)
|
|
||||||
alias cp='command -x cp' mv='command -x mv' grep='command -x grep'
|
|
||||||
|
|
||||||
# some short functions
|
|
||||||
|
|
||||||
# empty line
|
|
||||||
empty() { echo $'\e[3J'; }
|
|
||||||
|
|
||||||
# man page viewer
|
|
||||||
mere() { nroff -man -Tman $1 | ${MANPAGER:-less}; }
|
|
||||||
|
|
||||||
# view/manipulate and export environment variables
|
|
||||||
setenv() {
|
|
||||||
case $# in
|
|
||||||
0) export ;;
|
|
||||||
1) export "$1"= ;;
|
|
||||||
*) export "$1"="$2" ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use keyboard trap to map keys to other keys
|
|
||||||
# note that escape sequences vary for different terminals so these
|
|
||||||
# may not work for you
|
|
||||||
trap '.sh.edchar=${keymap[${.sh.edchar}]:-${.sh.edchar}}' KEYBD
|
|
||||||
keymap=(
|
|
||||||
[$'\eOD']=$'\eb' # Ctrl-Left -> move word left
|
|
||||||
[$'\eOC']=$'\ef' # Ctrl-Right -> move word right
|
|
||||||
[$'\e[3~']=$'\cd' # Delete -> delete to right
|
|
||||||
[$'\e[1~']=$'\ca' # Home -> move to beginning of line
|
|
||||||
[$'\e[4~']=$'\ce' # End -> move to end of line
|
|
||||||
)
|
|
||||||
|
|
||||||
# keep a shortened version of the current directory for the prompt
|
|
||||||
function _cd {
|
|
||||||
typeset -n dir=HOME
|
|
||||||
|
|
||||||
"cd" "$@"
|
|
||||||
|
|
||||||
if [[ $PWD = $HOME* && $HOME != / ]]; then
|
|
||||||
_pwd=\~${PWD#$HOME}
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
for dir in JAVA_HOME GNOMEDIR; do
|
|
||||||
if [[ -n $dir && $PWD = $dir* ]]; then
|
|
||||||
_pwd="\$${!dir}${PWD#$dir}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
_pwd="$PWD"
|
|
||||||
}
|
|
||||||
alias cd=_cd
|
|
||||||
_cd .
|
|
||||||
|
|
||||||
# put the current directory and history number in the prompt
|
|
||||||
PS1='$_pwd [!]\$ '
|
|
57
.mkshrc
57
.mkshrc
|
@ -1,57 +0,0 @@
|
||||||
# Debian mksh
|
|
||||||
# Skeleton ~/.mkshrc file adding a level of indirection
|
|
||||||
|
|
||||||
# check if this is really mksh # {((
|
|
||||||
case ${KSH_VERSION:-} in
|
|
||||||
*LEGACY\ KSH*|*MIRBSD\ KSH*) ;;
|
|
||||||
*) \return 0 ;;
|
|
||||||
esac # }
|
|
||||||
|
|
||||||
# customise your favourite editor here; first one found is used
|
|
||||||
for EDITOR in "${EDITOR:-}" sensible-editor jupp jstar mcedit ed vi editor; do
|
|
||||||
EDITOR=$(\\builtin whence -p "$EDITOR") || EDITOR=
|
|
||||||
[[ -n $EDITOR && -x $EDITOR ]] && break
|
|
||||||
EDITOR=
|
|
||||||
done
|
|
||||||
|
|
||||||
# source the system-wide mkshrc file
|
|
||||||
[[ -s /etc/mkshrc ]] && \. /etc/mkshrc
|
|
||||||
|
|
||||||
# work around #813164
|
|
||||||
\\builtin alias ls='ls -N'
|
|
||||||
|
|
||||||
# prepend $debian_chroot support to PS1
|
|
||||||
p=$'\001'
|
|
||||||
if [[ ${PS1:1:1} = $'\r' ]]; then
|
|
||||||
p=${PS1:0:1}
|
|
||||||
PS1=${PS1:2}
|
|
||||||
else
|
|
||||||
p=$'\001'
|
|
||||||
fi
|
|
||||||
[[ -z ${debian_chroot:-} && -r /etc/debian_chroot ]] && \
|
|
||||||
debian_chroot=$(</etc/debian_chroot)
|
|
||||||
PS1=$p$'\r${debian_chroot:+'$p$'\e[0;1m'$p'($debian_chroot)'$p$'\e[0m'$p'}'$PS1
|
|
||||||
\\builtin unset p
|
|
||||||
|
|
||||||
\: put your local alias/function definitions, patches, etc. here
|
|
||||||
|
|
||||||
# fixup ncurses-term badness
|
|
||||||
#[[ $TERM = screen.* ]] && TERM=screen
|
|
||||||
|
|
||||||
# force sane environment (e.g. for scripting)
|
|
||||||
#\\builtin unset LC_ADDRESS LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
|
|
||||||
# LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
|
|
||||||
# LC_TELEPHONE LC_TIME LANGUAGE LANG LC_ALL
|
|
||||||
# optionally: switch to a slightly user-friendly and more portable locale
|
|
||||||
#p=en_GB.utf8
|
|
||||||
#\\builtin export LANG=C LC_CTYPE=$p LC_MEASUREMENT=$p LC_MESSAGES=$p LC_PAPER=$p
|
|
||||||
# and/or: Debian-specific libc feature (#609306, eglibc 2.13+)
|
|
||||||
#\\builtin export LANG=C.UTF-8 LC_CTYPE=C.UTF-8
|
|
||||||
#\\builtin export LC_ALL=C.UTF-8
|
|
||||||
|
|
||||||
# in either case: sync mksh UTF-8 mode to current locale (expected on GNU)
|
|
||||||
\\builtin set -U; [[ ${LC_ALL:-${LC_CTYPE:-${LANG:-}}} = *[Uu][Tt][Ff]?(-)8* ]] || \\builtin set +U
|
|
||||||
|
|
||||||
#\\builtin unset p
|
|
||||||
|
|
||||||
\: make sure this is the last line, to ensure a good return code
|
|
3
.profile
3
.profile
|
@ -26,3 +26,6 @@ if [ -d "$HOME/.local/bin" ] ; then
|
||||||
PATH="$HOME/.local/bin:$PATH"
|
PATH="$HOME/.local/bin:$PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# uncomment following line to add byobu to your shell
|
||||||
|
# _byobu_sourced=1 . /usr/bin/byobu-launch 2>/dev/null || true
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- alias.conf
|
# alias.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[cmd]
|
[cmd]
|
||||||
|
@ -23,9 +16,9 @@ CL = "buffer clear"
|
||||||
CLOSE = "buffer close"
|
CLOSE = "buffer close"
|
||||||
CS = "quote chanserv"
|
CS = "quote chanserv"
|
||||||
EXIT = "quit"
|
EXIT = "quit"
|
||||||
HS = "quote hostserv"
|
|
||||||
IG = "ignore"
|
IG = "ignore"
|
||||||
J = "join"
|
J = "join"
|
||||||
|
HS = "quote hostserv"
|
||||||
K = "kick"
|
K = "kick"
|
||||||
KB = "kickban"
|
KB = "kickban"
|
||||||
LEAVE = "part"
|
LEAVE = "part"
|
||||||
|
@ -35,14 +28,11 @@ MSGBUF = "command -buffer $1 * /input send $2-"
|
||||||
MUB = "unban *"
|
MUB = "unban *"
|
||||||
N = "names"
|
N = "names"
|
||||||
NS = "quote nickserv"
|
NS = "quote nickserv"
|
||||||
OS = "quote operserv"
|
|
||||||
Q = "query"
|
Q = "query"
|
||||||
REDRAW = "window refresh"
|
REDRAW = "window refresh"
|
||||||
save_settings = "/autojoin --run;/layout store;/save"
|
save_settings = "/autojoin --run;/layout store;/save"
|
||||||
SAY = "msg *"
|
SAY = "msg *"
|
||||||
setup_aspell = "/set weechat.bar.rootinput.items [input_prompt]+(away),[input_search],[input_paste],input_text,aspell_suggest;/set aspell.check.default_dict en_US;/set aspell.check.suggestions 4;/set aspell.check.enabled on;/unalias setup_aspell;/save"
|
|
||||||
SIGNOFF = "quit"
|
SIGNOFF = "quit"
|
||||||
SLAP = "me slaps $1 around a bit with a large trout"
|
|
||||||
T = "topic"
|
T = "topic"
|
||||||
UB = "unban"
|
UB = "unban"
|
||||||
UMODE = "mode $nick"
|
UMODE = "mode $nick"
|
||||||
|
@ -52,6 +42,7 @@ WC = "window merge"
|
||||||
WI = "whois"
|
WI = "whois"
|
||||||
WII = "whois $1 $1"
|
WII = "whois $1 $1"
|
||||||
WW = "whowas"
|
WW = "whowas"
|
||||||
|
setup_aspell = "/set weechat.bar.rootinput.items [input_prompt]+(away),[input_search],[input_paste],input_text,aspell_suggest;/set aspell.check.default_dict en_US;/set aspell.check.suggestions 4;/set aspell.check.enabled on;/unalias setup_aspell;/save"
|
||||||
|
|
||||||
[completion]
|
[completion]
|
||||||
MSGBUF = "%(buffers_plugins_names)"
|
MSGBUF = "%(buffers_plugins_names)"
|
||||||
|
|
|
@ -4,14 +4,12 @@
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
# WARNING: It is NOT recommended to edit this file by hand,
|
||||||
# especially if WeeChat is running.
|
# especially if WeeChat is running.
|
||||||
#
|
#
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
# Use /set or similar command to change settings in WeeChat.
|
||||||
#
|
#
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
# For more info, see: https://weechat.org/doc/quickstart
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
add_newline = on
|
|
||||||
auto_scroll = 50
|
|
||||||
display_conditions = "${buffer.hidden}==0"
|
display_conditions = "${buffer.hidden}==0"
|
||||||
enabled = on
|
enabled = on
|
||||||
mouse_jump_visited_buffer = off
|
mouse_jump_visited_buffer = off
|
||||||
|
@ -21,7 +19,6 @@ nick_prefix = off
|
||||||
nick_prefix_empty = on
|
nick_prefix_empty = on
|
||||||
signals_refresh = ""
|
signals_refresh = ""
|
||||||
sort = "number,-active"
|
sort = "number,-active"
|
||||||
use_items = 1
|
|
||||||
|
|
||||||
[format]
|
[format]
|
||||||
buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${name}"
|
buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${name}"
|
||||||
|
@ -35,7 +32,6 @@ hotlist_private = "${color:cyan}"
|
||||||
hotlist_separator = "${color:default},"
|
hotlist_separator = "${color:default},"
|
||||||
indent = " "
|
indent = " "
|
||||||
lag = " ${color:green}[${color:brown}${lag}${color:green}]"
|
lag = " ${color:green}[${color:brown}${lag}${color:green}]"
|
||||||
name = "${name}"
|
|
||||||
nick_prefix = "${color_nick_prefix}${nick_prefix}"
|
nick_prefix = "${color_nick_prefix}${nick_prefix}"
|
||||||
number = "${color:green}${number}${if:${number_displayed}?.: }"
|
number = "${color:green}${number}${if:${number_displayed}?.: }"
|
||||||
tls_version = " ${color:default}(${if:${tls_version}==TLS1.3?${color:green}:${if:${tls_version}==TLS1.2?${color:yellow}:${color:red}}}${translate:${tls_version}}${color:default})"
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- charset.conf
|
# charset.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[default]
|
[default]
|
||||||
|
|
|
@ -1,18 +1,10 @@
|
||||||
#
|
#
|
||||||
# weechat -- exec.conf
|
# exec.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[command]
|
[command]
|
||||||
default_options = ""
|
default_options = ""
|
||||||
purge_delay = 0
|
purge_delay = 0
|
||||||
shell = "${env:SHELL}"
|
|
||||||
|
|
||||||
[color]
|
[color]
|
||||||
flag_finished = lightred
|
flag_finished = lightred
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- fifo.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[file]
|
|
||||||
enabled = on
|
|
||||||
path = "${weechat_runtime_dir}/weechat_fifo_${info:pid}"
|
|
|
@ -1,96 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- fset.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
auto_refresh = "*"
|
|
||||||
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
|
|
|
@ -1,17 +1,8 @@
|
||||||
#
|
#
|
||||||
# weechat -- irc.conf
|
# irc.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
buffer_open_before_autojoin = on
|
|
||||||
buffer_open_before_join = off
|
|
||||||
buffer_switch_autojoin = on
|
buffer_switch_autojoin = on
|
||||||
buffer_switch_join = on
|
buffer_switch_join = on
|
||||||
color_nicks_in_names = off
|
color_nicks_in_names = off
|
||||||
|
@ -19,12 +10,10 @@ color_nicks_in_nicklist = on
|
||||||
color_nicks_in_server_messages = on
|
color_nicks_in_server_messages = on
|
||||||
color_pv_nick_like_channel = on
|
color_pv_nick_like_channel = on
|
||||||
ctcp_time_format = "%a, %d %b %Y %T %z"
|
ctcp_time_format = "%a, %d %b %Y %T %z"
|
||||||
display_account_message = on
|
|
||||||
display_away = local
|
display_away = local
|
||||||
display_ctcp_blocked = on
|
display_ctcp_blocked = on
|
||||||
display_ctcp_reply = on
|
display_ctcp_reply = on
|
||||||
display_ctcp_unknown = on
|
display_ctcp_unknown = on
|
||||||
display_extended_join = on
|
|
||||||
display_host_join = on
|
display_host_join = on
|
||||||
display_host_join_local = on
|
display_host_join_local = on
|
||||||
display_host_quit = on
|
display_host_quit = on
|
||||||
|
@ -32,11 +21,11 @@ display_join_message = "329,332,333,366"
|
||||||
display_old_topic = on
|
display_old_topic = on
|
||||||
display_pv_away_once = on
|
display_pv_away_once = on
|
||||||
display_pv_back = on
|
display_pv_back = on
|
||||||
display_pv_warning_address = off
|
|
||||||
highlight_channel = "$nick"
|
highlight_channel = "$nick"
|
||||||
highlight_pv = "$nick"
|
highlight_pv = "$nick"
|
||||||
highlight_server = "$nick"
|
highlight_server = "$nick"
|
||||||
highlight_tags_restrict = "irc_privmsg,irc_notice"
|
highlight_tags_restrict = "irc_privmsg,irc_notice"
|
||||||
|
item_away_message = on
|
||||||
item_channel_modes_hide_args = "k"
|
item_channel_modes_hide_args = "k"
|
||||||
item_display_server = buffer_plugin
|
item_display_server = buffer_plugin
|
||||||
item_nick_modes = on
|
item_nick_modes = on
|
||||||
|
@ -45,6 +34,9 @@ join_auto_add_chantype = off
|
||||||
msgbuffer_fallback = current
|
msgbuffer_fallback = current
|
||||||
new_channel_position = none
|
new_channel_position = none
|
||||||
new_pv_position = none
|
new_pv_position = none
|
||||||
|
nick_color_force = ""
|
||||||
|
nick_color_hash = sum
|
||||||
|
nick_color_stop_chars = "_|["
|
||||||
nick_completion_smart = speakers
|
nick_completion_smart = speakers
|
||||||
nick_mode = prefix
|
nick_mode = prefix
|
||||||
nick_mode_empty = off
|
nick_mode_empty = off
|
||||||
|
@ -60,39 +52,27 @@ pv_tags = "notify_private"
|
||||||
raw_messages = 256
|
raw_messages = 256
|
||||||
server_buffer = merge_with_core
|
server_buffer = merge_with_core
|
||||||
smart_filter = on
|
smart_filter = on
|
||||||
smart_filter_account = on
|
|
||||||
smart_filter_chghost = on
|
|
||||||
smart_filter_delay = 5
|
smart_filter_delay = 5
|
||||||
smart_filter_join = on
|
smart_filter_join = on
|
||||||
smart_filter_join_unmask = 30
|
smart_filter_join_unmask = 30
|
||||||
smart_filter_mode = "+"
|
smart_filter_mode = "+"
|
||||||
smart_filter_nick = on
|
smart_filter_nick = on
|
||||||
smart_filter_quit = on
|
smart_filter_quit = on
|
||||||
temporary_servers = off
|
|
||||||
topic_strip_colors = off
|
topic_strip_colors = off
|
||||||
typing_status_nicks = off
|
|
||||||
typing_status_self = off
|
|
||||||
|
|
||||||
[color]
|
[color]
|
||||||
input_nick = lightcyan
|
input_nick = lightcyan
|
||||||
|
item_away = 130
|
||||||
item_channel_modes = lightcyan
|
item_channel_modes = lightcyan
|
||||||
item_lag_counting = default
|
item_lag_counting = default
|
||||||
item_lag_finished = 130
|
item_lag_finished = 130
|
||||||
item_nick_modes = lightgreen
|
item_nick_modes = lightgreen
|
||||||
item_tls_version_deprecated = yellow
|
|
||||||
item_tls_version_insecure = red
|
|
||||||
item_tls_version_ok = green
|
|
||||||
message_account = cyan
|
|
||||||
message_chghost = brown
|
|
||||||
message_join = green
|
message_join = green
|
||||||
message_kick = red
|
|
||||||
message_quit = red
|
message_quit = red
|
||||||
mirc_remap = "1,-1:darkgray"
|
mirc_remap = "1,-1:darkgray"
|
||||||
nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
|
nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
|
||||||
notice = green
|
notice = green
|
||||||
reason_kick = default
|
|
||||||
reason_quit = default
|
reason_quit = default
|
||||||
topic_current = default
|
|
||||||
topic_new = white
|
topic_new = white
|
||||||
topic_old = default
|
topic_old = default
|
||||||
|
|
||||||
|
@ -109,7 +89,6 @@ lag_reconnect = 0
|
||||||
lag_refresh_interval = 1
|
lag_refresh_interval = 1
|
||||||
notify_check_ison = 1
|
notify_check_ison = 1
|
||||||
notify_check_whois = 5
|
notify_check_whois = 5
|
||||||
sasl_fail_unavailable = on
|
|
||||||
send_unknown_commands = off
|
send_unknown_commands = off
|
||||||
whois_double_nick = off
|
whois_double_nick = off
|
||||||
|
|
||||||
|
@ -131,47 +110,37 @@ autorejoin = off
|
||||||
autorejoin_delay = 30
|
autorejoin_delay = 30
|
||||||
away_check = 0
|
away_check = 0
|
||||||
away_check_max_nicks = 25
|
away_check_max_nicks = 25
|
||||||
capabilities = "*"
|
capabilities = ""
|
||||||
charset_message = message
|
|
||||||
command = ""
|
command = ""
|
||||||
command_delay = 0
|
command_delay = 0
|
||||||
connection_timeout = 60
|
connection_timeout = 60
|
||||||
default_chantypes = "#&"
|
default_msg_kick = ""
|
||||||
|
default_msg_part = "WeeChat %v"
|
||||||
|
default_msg_quit = "WeeChat %v"
|
||||||
ipv6 = on
|
ipv6 = on
|
||||||
local_hostname = ""
|
local_hostname = ""
|
||||||
msg_kick = ""
|
|
||||||
msg_part = "WeeChat ${info:version}"
|
|
||||||
msg_quit = "WeeChat ${info:version}"
|
|
||||||
nicks = "${env:USER},${env:USER}1"
|
|
||||||
nicks_alternate = on
|
|
||||||
notify = ""
|
notify = ""
|
||||||
password = ""
|
password = ""
|
||||||
proxy = ""
|
proxy = ""
|
||||||
realname = ""
|
realname = ""
|
||||||
sasl_fail = reconnect
|
|
||||||
sasl_key = ""
|
|
||||||
sasl_mechanism = plain
|
sasl_mechanism = plain
|
||||||
sasl_password = ""
|
sasl_password = ""
|
||||||
sasl_timeout = 15
|
sasl_timeout = 15
|
||||||
sasl_username = ""
|
sasl_username = ""
|
||||||
split_msg_max_length = 512
|
|
||||||
ssl = off
|
ssl = off
|
||||||
ssl_cert = ""
|
ssl_cert = ""
|
||||||
ssl_dhkey_size = 2048
|
ssl_dhkey_size = 2048
|
||||||
ssl_fingerprint = ""
|
ssl_fingerprint = ""
|
||||||
ssl_password = ""
|
|
||||||
ssl_priorities = "NORMAL"
|
ssl_priorities = "NORMAL"
|
||||||
ssl_verify = on
|
ssl_verify = on
|
||||||
usermode = ""
|
|
||||||
username = "${env:USER}"
|
username = "${env:USER}"
|
||||||
|
|
||||||
[server]
|
[server]
|
||||||
tilde.addresses = "team.tilde.chat/6697"
|
tilde.addresses = "localhost"
|
||||||
tilde.proxy
|
tilde.proxy
|
||||||
tilde.ipv6
|
tilde.ipv6
|
||||||
tilde.ssl = on
|
tilde.ssl
|
||||||
tilde.ssl_cert
|
tilde.ssl_cert
|
||||||
tilde.ssl_password
|
|
||||||
tilde.ssl_priorities
|
tilde.ssl_priorities
|
||||||
tilde.ssl_dhkey_size
|
tilde.ssl_dhkey_size
|
||||||
tilde.ssl_fingerprint
|
tilde.ssl_fingerprint
|
||||||
|
@ -181,18 +150,14 @@ tilde.capabilities
|
||||||
tilde.sasl_mechanism
|
tilde.sasl_mechanism
|
||||||
tilde.sasl_username
|
tilde.sasl_username
|
||||||
tilde.sasl_password
|
tilde.sasl_password
|
||||||
tilde.sasl_key
|
|
||||||
tilde.sasl_timeout
|
tilde.sasl_timeout
|
||||||
tilde.sasl_fail
|
|
||||||
tilde.autoconnect = on
|
tilde.autoconnect = on
|
||||||
tilde.autoreconnect
|
tilde.autoreconnect
|
||||||
tilde.autoreconnect_delay
|
tilde.autoreconnect_delay
|
||||||
tilde.nicks
|
tilde.nicks
|
||||||
tilde.nicks_alternate
|
tilde.nicks_alternate
|
||||||
tilde.username
|
|
||||||
tilde.realname
|
tilde.realname
|
||||||
tilde.local_hostname
|
tilde.local_hostname
|
||||||
tilde.usermode
|
|
||||||
tilde.command
|
tilde.command
|
||||||
tilde.command_delay
|
tilde.command_delay
|
||||||
tilde.autojoin = "#meta,#team"
|
tilde.autojoin = "#meta,#team"
|
||||||
|
@ -203,10 +168,7 @@ tilde.anti_flood_prio_high
|
||||||
tilde.anti_flood_prio_low
|
tilde.anti_flood_prio_low
|
||||||
tilde.away_check
|
tilde.away_check
|
||||||
tilde.away_check_max_nicks
|
tilde.away_check_max_nicks
|
||||||
tilde.msg_kick
|
tilde.default_msg_kick
|
||||||
tilde.msg_part
|
tilde.default_msg_part
|
||||||
tilde.msg_quit
|
tilde.default_msg_quit
|
||||||
tilde.notify
|
tilde.notify
|
||||||
tilde.split_msg_max_length
|
|
||||||
tilde.charset_message
|
|
||||||
tilde.default_chantypes
|
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- iset.conf
|
# iset.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[color]
|
[color]
|
||||||
|
|
|
@ -1,27 +1,17 @@
|
||||||
#
|
#
|
||||||
# weechat -- logger.conf
|
# logger.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
backlog = 20
|
backlog = 20
|
||||||
backlog_conditions = ""
|
|
||||||
|
|
||||||
[color]
|
[color]
|
||||||
backlog_end = default
|
backlog_end = default
|
||||||
backlog_line = default
|
backlog_line = default
|
||||||
|
|
||||||
[file]
|
[file]
|
||||||
auto_log = on
|
auto_log = off
|
||||||
color_lines = off
|
|
||||||
flush_delay = 120
|
flush_delay = 120
|
||||||
fsync = off
|
|
||||||
info_lines = off
|
info_lines = off
|
||||||
mask = "$plugin.$name.weechatlog"
|
mask = "$plugin.$name.weechatlog"
|
||||||
name_lower_case = on
|
name_lower_case = on
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- lua.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
check_license = off
|
|
||||||
eval_keep_context = on
|
|
|
@ -1,14 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- perl.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
check_license = off
|
|
||||||
eval_keep_context = on
|
|
|
@ -1,5 +1,6 @@
|
||||||
#
|
#
|
||||||
# highmon.pl - Highlight Monitoring for weechat 0.3.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
|
# Add 'Highlight Monitor' buffer/bar to log all highlights in one spot
|
||||||
#
|
#
|
||||||
|
@ -72,10 +73,6 @@
|
||||||
# Bugs and feature requests at: https://github.com/KenjiE20/highmon
|
# Bugs and feature requests at: https://github.com/KenjiE20/highmon
|
||||||
|
|
||||||
# History:
|
# History:
|
||||||
# 2020-06-21, Sebastien Helleu <flashcode@flashtux.org>:
|
|
||||||
# v2.7: make call to bar_new compatible with WeeChat >= 2.9
|
|
||||||
# 2019-05-13, HubbeKing <hubbe128@gmail.com>
|
|
||||||
# v2.6: -add: send "logger_backlog" signal on buffer open if logging is enabled
|
|
||||||
# 2014-08-16, KenjiE20 <longbow@longbowslair.co.uk>:
|
# 2014-08-16, KenjiE20 <longbow@longbowslair.co.uk>:
|
||||||
# v2.5: -add: clearbar command to clear bar output
|
# 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
|
# -add: firstrun output prompt to check the help text for set up hints as they were being missed
|
||||||
|
@ -267,14 +264,7 @@ sub highmon_bar_open
|
||||||
# Make the bar item
|
# Make the bar item
|
||||||
weechat::bar_item_new("highmon", "highmon_bar_build", "");
|
weechat::bar_item_new("highmon", "highmon_bar_build", "");
|
||||||
|
|
||||||
if (weechat::info_get("version_number", "") >= 0x02090000)
|
$highmon_bar = weechat::bar_new ("highmon", "off", 100, "root", "", "bottom", "vertical", "vertical", 0, 0, "default", "cyan", "default", "on", "highmon");
|
||||||
{
|
|
||||||
$highmon_bar = weechat::bar_new ("highmon", "off", 100, "root", "", "bottom", "vertical", "vertical", 0, 0, "default", "cyan", "default", "default", "on", "highmon");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$highmon_bar = weechat::bar_new ("highmon", "off", 100, "root", "", "bottom", "vertical", "vertical", 0, 0, "default", "cyan", "default", "on", "highmon");
|
|
||||||
}
|
|
||||||
|
|
||||||
return weechat::WEECHAT_RC_OK;
|
return weechat::WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
|
@ -316,7 +306,7 @@ sub highmon_buffer_open
|
||||||
# Turn off notify, highlights
|
# Turn off notify, highlights
|
||||||
if ($highmon_buffer ne "")
|
if ($highmon_buffer ne "")
|
||||||
{
|
{
|
||||||
if (weechat::config_get_plugin("hotlist_show") eq "off")
|
if (weechat::config_get_plugin("hotlist_show" eq "off"))
|
||||||
{
|
{
|
||||||
weechat::buffer_set($highmon_buffer, "notify", "0");
|
weechat::buffer_set($highmon_buffer, "notify", "0");
|
||||||
}
|
}
|
||||||
|
@ -327,11 +317,6 @@ sub highmon_buffer_open
|
||||||
{
|
{
|
||||||
weechat::buffer_set($highmon_buffer, "localvar_set_no_log", "1");
|
weechat::buffer_set($highmon_buffer, "localvar_set_no_log", "1");
|
||||||
}
|
}
|
||||||
# send "logger_backlog" signal if logging is enabled to display backlog
|
|
||||||
if (weechat::config_get_plugin("logging") eq "on")
|
|
||||||
{
|
|
||||||
weechat::hook_signal_send("logger_backlog", weechat::WEECHAT_HOOK_SIGNAL_POINTER, $highmon_buffer)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return weechat::WEECHAT_RC_OK;
|
return weechat::WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
|
@ -725,7 +710,7 @@ sub highmon_new_message
|
||||||
if ($cb_high == "1" || (weechat::config_get_plugin("merge_private") eq "on" && $cb_tags =~ /notify_private/))
|
if ($cb_high == "1" || (weechat::config_get_plugin("merge_private") eq "on" && $cb_tags =~ /notify_private/))
|
||||||
{
|
{
|
||||||
# Pre bug #29618 (0.3.3) away detect
|
# Pre bug #29618 (0.3.3) away detect
|
||||||
if (weechat::info_get("version_number", "") <= 0x00030200)
|
if (weechat::info_get("version_number", "") <= 197120)
|
||||||
{
|
{
|
||||||
$away = '';
|
$away = '';
|
||||||
# Get infolist for this server
|
# Get infolist for this server
|
||||||
|
@ -1139,7 +1124,7 @@ sub format_buffer_name
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check result of register, and attempt to behave in a sane manner
|
# Check result of register, and attempt to behave in a sane manner
|
||||||
if (!weechat::register("highmon", "KenjiE20", "2.7", "GPL3", "Highlight Monitor", "", ""))
|
if (!weechat::register("highmon", "KenjiE20", "2.5", "GPL3", "Highlight Monitor", "", ""))
|
||||||
{
|
{
|
||||||
# Double load
|
# Double load
|
||||||
weechat::print ("", "\tHighmon is already loaded");
|
weechat::print ("", "\tHighmon is already loaded");
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- plugins.conf
|
# plugins.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[var]
|
[var]
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- python.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
check_license = off
|
|
||||||
eval_keep_context = on
|
|
|
@ -0,0 +1,351 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2012 Chris Johnson <raugturi@gmail.com>
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
# apply_corrections
|
||||||
|
#
|
||||||
|
# A weechat plugin to re-print a user's messages with corrections applied when
|
||||||
|
# they send a correction string (ex: s/typo/replacement).
|
||||||
|
#
|
||||||
|
# The following options are availalble:
|
||||||
|
#
|
||||||
|
# check_every: Interval, in seconds, between each check for expired messages.
|
||||||
|
# If set to 0 no check will be performed and all messages will be
|
||||||
|
# saved indefinitely.
|
||||||
|
#
|
||||||
|
# data_timeout: Time, in seconds, before a message is expired. If set to 0
|
||||||
|
# messages will never expire.
|
||||||
|
#
|
||||||
|
# message_limit: Number of messages to store per nick. If set to 0 all messages
|
||||||
|
# will be saved until they expire.
|
||||||
|
#
|
||||||
|
# print_format: Format string for the printed corrections.
|
||||||
|
# Default: "[nick]: [corrected]"
|
||||||
|
#
|
||||||
|
# Variables allowed:
|
||||||
|
#
|
||||||
|
# [nick]: The nick of the person who sent the messages.
|
||||||
|
# [corrected]: The corrected text of the previous message(s).
|
||||||
|
# [correction]: The correction (format: s/typo/replacement).
|
||||||
|
# [original]: The original message before correction.
|
||||||
|
# [pattern]: The "typo" portion of the correction.
|
||||||
|
# [replacement]: The "replacement" portion of the correction.
|
||||||
|
# [timestamp]: The timestamp of the original message.
|
||||||
|
#
|
||||||
|
# print_limit: Maximum number of lines to correct and print to the buffer. If
|
||||||
|
# set to 0 all lines that match the pattern will be printed.
|
||||||
|
#
|
||||||
|
# Note: Setting check_every, data_timeout, message_limit, or some combination
|
||||||
|
# thereof to 0's will eat a lot of memory very quickly as it will drastically
|
||||||
|
# increase the size of the dictionary holding previous messages. Likewise,
|
||||||
|
# setting print_limit to 0 with a large number of saved messages will quickly
|
||||||
|
# fill your screen with a bunch of stuff should someone submit a generic
|
||||||
|
# enough correction string.
|
||||||
|
|
||||||
|
# History:
|
||||||
|
#
|
||||||
|
# 2014-05-10, Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
# version 1.2: change hook_print callback argument type of
|
||||||
|
# displayed/highlight (WeeChat >= 1.0)
|
||||||
|
# 2012-10-09, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 1.1: change some more variable names for clarity/consistency
|
||||||
|
# 2012-10-08, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 1.0: fix get_corrected_messages so that the most recent messages
|
||||||
|
# are corrected and returned
|
||||||
|
# 2012-10-08, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.9: use defaultdict to handle missing keys, flatten dict by
|
||||||
|
# using (buffer, nick) tuple as key, simplify message logging
|
||||||
|
# logic, rename some stuff for clarity.
|
||||||
|
# 2012-10-08, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.8: remove empty buffers and nicks during clean-up
|
||||||
|
# 2012-09-05, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.7: fix bug when restoring defaults for options that require
|
||||||
|
# integer values
|
||||||
|
# 2012-09-05, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.6: copy info from README into script and shorten the variable
|
||||||
|
# descriptions
|
||||||
|
# 2012-09-01, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.5: don't log the reprinted messages
|
||||||
|
# 2012-08-31, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.4: use same timestamp as buffer when reprinting, instead
|
||||||
|
# of epoch
|
||||||
|
# 2012-08-31, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.3: switch to [var] style variables for print format
|
||||||
|
# 2012-08-30, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.2: fixed search for typos so if regex fails it falls back
|
||||||
|
# to string.find
|
||||||
|
# 2012-08-30, Chris Johnson <raugturi@gmail.com>:
|
||||||
|
# version 0.1: initial release
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
try:
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
from operator import itemgetter
|
||||||
|
from collections import defaultdict
|
||||||
|
except ImportError as message:
|
||||||
|
print('Missing package(s) for %s: %s' % (SCRIPT_NAME, message))
|
||||||
|
import_ok = False
|
||||||
|
|
||||||
|
SCRIPT_NAME = 'apply_corrections'
|
||||||
|
SCRIPT_AUTHOR = 'Chris Johnson <raugturi@gmail.com>'
|
||||||
|
SCRIPT_VERSION = '1.2'
|
||||||
|
SCRIPT_LICENSE = 'GPL3'
|
||||||
|
SCRIPT_DESC = "When a correction (ex: s/typo/replacement) is sent, print the "\
|
||||||
|
"user's previous message(s) with the corrected text instead."
|
||||||
|
|
||||||
|
# Default settings for the plugin.
|
||||||
|
settings = {'check_every': '5',
|
||||||
|
'data_timeout': '60',
|
||||||
|
'message_limit': '2',
|
||||||
|
'print_format': '[nick]: [corrected]',
|
||||||
|
'print_limit': '1'}
|
||||||
|
|
||||||
|
# Initialize the dictionary to store most recent messages per buffer per nick.
|
||||||
|
LASTWORDS = defaultdict(list)
|
||||||
|
|
||||||
|
|
||||||
|
def apply_correction(message, pattern, replacement):
|
||||||
|
"""
|
||||||
|
Replaces all occurences of pattern in message with replacment. It tries to
|
||||||
|
treat the pattern and replacement as regular expressions, but falls back to
|
||||||
|
string replace if that fails.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
message = re.compile(pattern).sub(replacement, message)
|
||||||
|
except:
|
||||||
|
message = message.replace(pattern, replacement)
|
||||||
|
|
||||||
|
return message
|
||||||
|
|
||||||
|
|
||||||
|
def get_corrected_messages(nick, log, correction):
|
||||||
|
"""
|
||||||
|
Return list of messages that match the pattern, with corrections applied.
|
||||||
|
Limited to print_limit items, sorted by timestamp ascending.
|
||||||
|
"""
|
||||||
|
|
||||||
|
print_limit = get_option_int('print_limit')
|
||||||
|
corrected_messages = []
|
||||||
|
pattern, replacement = correction.split('/')[1:3]
|
||||||
|
|
||||||
|
for message in log:
|
||||||
|
if print_limit and len(corrected_messages) >= print_limit:
|
||||||
|
break
|
||||||
|
original = message.get('message', '')
|
||||||
|
if original:
|
||||||
|
try:
|
||||||
|
match = re.match(re.compile('.*%s.*' % pattern), original)
|
||||||
|
except:
|
||||||
|
match = original.find(pattern) != -1
|
||||||
|
finally:
|
||||||
|
if match:
|
||||||
|
corrected = apply_correction(original,
|
||||||
|
pattern,
|
||||||
|
replacement)
|
||||||
|
timeformat = weechat.config_string(
|
||||||
|
weechat.config_get('weechat.look.buffer_time_format'))
|
||||||
|
timestamp = time.strftime(
|
||||||
|
timeformat,
|
||||||
|
time.localtime(float(message['timestamp'])))
|
||||||
|
corrected_messages.append({'nick': nick,
|
||||||
|
'corrected': corrected,
|
||||||
|
'correction': correction,
|
||||||
|
'original': original,
|
||||||
|
'pattern': pattern,
|
||||||
|
'replacement': replacement,
|
||||||
|
'timestamp': timestamp})
|
||||||
|
|
||||||
|
return sorted(corrected_messages, key=itemgetter('timestamp'))
|
||||||
|
|
||||||
|
|
||||||
|
def get_option_int(option):
|
||||||
|
"""
|
||||||
|
Checks to see if a configuration option is an integer and sets it back to
|
||||||
|
the default if it isn't. Returns the value when done.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
value = int(weechat.config_get_plugin(option))
|
||||||
|
except ValueError:
|
||||||
|
weechat.config_set_plugin(option, settings[option])
|
||||||
|
value = int(weechat.config_get_plugin(option))
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def get_valid_messages(log, expiry):
|
||||||
|
"""
|
||||||
|
Return only the messages that haven't expired.
|
||||||
|
"""
|
||||||
|
|
||||||
|
valid = []
|
||||||
|
for message in log:
|
||||||
|
try:
|
||||||
|
timestamp = int(message.get('timestamp', 0))
|
||||||
|
if timestamp > expiry:
|
||||||
|
valid.append(message)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
return valid
|
||||||
|
|
||||||
|
|
||||||
|
def clear_messages_cb(data, remaining_calls):
|
||||||
|
"""
|
||||||
|
Callback that clears old messages from the LASTWORDS dictionary. The time
|
||||||
|
limit is the number of seconds specified in plugin's data_timeout setting.
|
||||||
|
If data_timeout is set to 0 then no messages are cleared.
|
||||||
|
"""
|
||||||
|
|
||||||
|
data_timeout = get_option_int('data_timeout')
|
||||||
|
if data_timeout:
|
||||||
|
expiry = time.time() - data_timeout
|
||||||
|
for buff, nick in LASTWORDS.keys():
|
||||||
|
valid_messages = get_valid_messages(LASTWORDS[(buff,nick)], expiry)
|
||||||
|
if valid_messages:
|
||||||
|
LASTWORDS[(buff, nick)] = valid_messages
|
||||||
|
else:
|
||||||
|
del LASTWORDS[(buff,nick)]
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def handle_message_cb(data, buffer, date, tags, disp, hl, nick, message):
|
||||||
|
"""
|
||||||
|
Callback that handles new messages. If the message is in the format of a
|
||||||
|
regex find/replace (ex. 's/typo/replacement/', 'nick: s/typo/replacement')
|
||||||
|
then the last print_limit messages for that nick are re-printed to the
|
||||||
|
current buffer in their oringal order with the change applied. Otherwise
|
||||||
|
the message is stored in LASTWORDS dictionary for this buffer > nick.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Don't do anything if the message isn't suppose to be displayed.
|
||||||
|
if int(disp):
|
||||||
|
buffer_name = weechat.buffer_get_string(buffer, 'name')
|
||||||
|
log = LASTWORDS[(buffer_name, nick)]
|
||||||
|
|
||||||
|
# Matches on both 's/typo/replacement' and 'nick: s/typo/replacement',
|
||||||
|
# mainly because of bitlbee since it puts your nick in front of
|
||||||
|
# incoming messages.
|
||||||
|
#
|
||||||
|
# Nick regex nicked from colorize_nicks available here:
|
||||||
|
# http://www.weechat.org/scripts/source/stable/colorize_nicks.py.html/
|
||||||
|
valid_nick = r'([@~&!%+])?([-a-zA-Z0-9\[\]\\`_^\{|\}]+)'
|
||||||
|
valid_correction = r's/[^/]*/[^/]*'
|
||||||
|
correction_message_pattern = re.compile(
|
||||||
|
r'(%s:\s*)?(%s)(/)?$' % (valid_nick, valid_correction))
|
||||||
|
match = re.match(correction_message_pattern, message)
|
||||||
|
|
||||||
|
if match:
|
||||||
|
# If message is a correction and we have previous messages from
|
||||||
|
# this nick, print up to print_limit of the nick's previous
|
||||||
|
# messages with corrections applied, in their original order.
|
||||||
|
correction = match.group(4)
|
||||||
|
if log and correction:
|
||||||
|
print_format = weechat.config_get_plugin('print_format')
|
||||||
|
for cm in get_corrected_messages(nick, log, correction):
|
||||||
|
corrected_msg = print_format
|
||||||
|
for k, v in cm.iteritems():
|
||||||
|
corrected_msg = corrected_msg.replace('[%s]' % k, v)
|
||||||
|
weechat.prnt_date_tags(buffer, 0, 'no_log', corrected_msg)
|
||||||
|
else:
|
||||||
|
# If it's not a correction, store the message in LASTWORDS.
|
||||||
|
log.insert(0, {'message': message, 'timestamp': date})
|
||||||
|
# If there's a per-nick limit, shorten the list to match.
|
||||||
|
message_limit = get_option_int('message_limit')
|
||||||
|
while message_limit and len(log) > message_limit:
|
||||||
|
log.pop()
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def load_config(data=None, option=None, value=None):
|
||||||
|
"""
|
||||||
|
Load configuration options and (re)register hook_timer to clear old
|
||||||
|
messages based on the current value of check_every. If check_every is 0
|
||||||
|
then messages are never cleared.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# On initial load set any unset options to the defaults.
|
||||||
|
if not option:
|
||||||
|
for option, default in settings.iteritems():
|
||||||
|
if not weechat.config_is_set_plugin(option):
|
||||||
|
weechat.config_set_plugin(option, default)
|
||||||
|
|
||||||
|
if not option or option.endswith('check_every'):
|
||||||
|
# If hook_timer for clearing old messages is set already, clear it.
|
||||||
|
old_hook = globals().get('CLEAR_HOOK', None)
|
||||||
|
if old_hook is not None:
|
||||||
|
weechat.unhook(old_hook)
|
||||||
|
|
||||||
|
# Register hook_timer to clear old messages.
|
||||||
|
check_every = get_option_int('check_every') * 1000
|
||||||
|
if check_every:
|
||||||
|
globals()['CLEAR_HOOK'] = weechat.hook_timer(
|
||||||
|
check_every, 0, 0, 'clear_messages_cb', '')
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def desc_options():
|
||||||
|
"""
|
||||||
|
Load descriptions for all the options.
|
||||||
|
"""
|
||||||
|
|
||||||
|
weechat.config_set_desc_plugin(
|
||||||
|
'check_every', 'Interval between each check for expired messages.')
|
||||||
|
|
||||||
|
weechat.config_set_desc_plugin(
|
||||||
|
'data_timeout', 'Time before a message is expired.')
|
||||||
|
|
||||||
|
weechat.config_set_desc_plugin(
|
||||||
|
'message_limit', 'Number of messages to store per nick.')
|
||||||
|
|
||||||
|
weechat.config_set_desc_plugin(
|
||||||
|
'print_format', 'Format string for the printed corrections.')
|
||||||
|
|
||||||
|
weechat.config_set_desc_plugin(
|
||||||
|
'print_limit', 'Maximum number of lines to correct.')
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__' and import_ok:
|
||||||
|
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
|
||||||
|
SCRIPT_LICENSE, SCRIPT_DESC, '', ''):
|
||||||
|
# Load the configuration options.
|
||||||
|
load_config()
|
||||||
|
|
||||||
|
# Set up the descriptions for each option.
|
||||||
|
desc_options()
|
||||||
|
|
||||||
|
# Register hook to run load_config when options are changed.
|
||||||
|
weechat.hook_config('plugins.var.python.%s.*' % SCRIPT_NAME,
|
||||||
|
'load_config', '')
|
||||||
|
|
||||||
|
# Register hook_print to process each new message as it comes in.
|
||||||
|
weechat.hook_print('', '', '', 1, 'handle_message_cb', '')
|
|
@ -43,15 +43,6 @@
|
||||||
# 2014-05-22, Nathaniel Wesley Filardo <PADEBR2M2JIQN02N9OO5JM0CTN8K689P@cmx.ietfng.org>
|
# 2014-05-22, Nathaniel Wesley Filardo <PADEBR2M2JIQN02N9OO5JM0CTN8K689P@cmx.ietfng.org>
|
||||||
# version 0.2.5: Fix keyed channel support
|
# version 0.2.5: Fix keyed channel support
|
||||||
#
|
#
|
||||||
# 2016-01-13, The fox in the shell <KellerFuchs@hashbang.sh>
|
|
||||||
# version 0.2.6: Support keeping chan list as secured data
|
|
||||||
#
|
|
||||||
# 2018-08-09, Julien Palard <julien@palard.fr>
|
|
||||||
# version 0.3.0: Support for Python 3
|
|
||||||
#
|
|
||||||
# 2019-09-28, fructose
|
|
||||||
# version 0.3.1: Error on invalid arguments
|
|
||||||
#
|
|
||||||
# @TODO: add options to ignore certain buffers
|
# @TODO: add options to ignore certain buffers
|
||||||
# @TODO: maybe add an option to enable autosaving on part/join messages
|
# @TODO: maybe add an option to enable autosaving on part/join messages
|
||||||
|
|
||||||
|
@ -60,7 +51,7 @@ import re
|
||||||
|
|
||||||
SCRIPT_NAME = "autojoin"
|
SCRIPT_NAME = "autojoin"
|
||||||
SCRIPT_AUTHOR = "xt <xt@bash.no>"
|
SCRIPT_AUTHOR = "xt <xt@bash.no>"
|
||||||
SCRIPT_VERSION = "0.3.1"
|
SCRIPT_VERSION = "0.2.5"
|
||||||
SCRIPT_LICENSE = "GPL3"
|
SCRIPT_LICENSE = "GPL3"
|
||||||
SCRIPT_DESC = "Configure autojoin for all servers according to currently joined channels"
|
SCRIPT_DESC = "Configure autojoin for all servers according to currently joined channels"
|
||||||
SCRIPT_COMMAND = "autojoin"
|
SCRIPT_COMMAND = "autojoin"
|
||||||
|
@ -80,8 +71,8 @@ if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT
|
||||||
"autojoin_cb",
|
"autojoin_cb",
|
||||||
"")
|
"")
|
||||||
|
|
||||||
# w.hook_signal('*,irc_in2_join', 'autosave_channels_on_activity', '')
|
#w.hook_signal('*,irc_in2_join', 'autosave_channels_on_activity', '')
|
||||||
# w.hook_signal('*,irc_in2_part', 'autosave_channels_on_activity', '')
|
#w.hook_signal('*,irc_in2_part', 'autosave_channels_on_activity', '')
|
||||||
w.hook_signal('quit', 'autosave_channels_on_quit', '')
|
w.hook_signal('quit', 'autosave_channels_on_quit', '')
|
||||||
|
|
||||||
# Init everything
|
# Init everything
|
||||||
|
@ -89,7 +80,6 @@ for option, default_value in settings.items():
|
||||||
if w.config_get_plugin(option) == "":
|
if w.config_get_plugin(option) == "":
|
||||||
w.config_set_plugin(option, default_value)
|
w.config_set_plugin(option, default_value)
|
||||||
|
|
||||||
|
|
||||||
def autosave_channels_on_quit(signal, callback, callback_data):
|
def autosave_channels_on_quit(signal, callback, callback_data):
|
||||||
''' Autojoin current channels '''
|
''' Autojoin current channels '''
|
||||||
if w.config_get_plugin(option) != "on":
|
if w.config_get_plugin(option) != "on":
|
||||||
|
@ -98,8 +88,10 @@ def autosave_channels_on_quit(signal, callback, callback_data):
|
||||||
items = find_channels()
|
items = find_channels()
|
||||||
|
|
||||||
# print/execute commands
|
# print/execute commands
|
||||||
for server, channels in items.items():
|
for server, channels in items.iteritems():
|
||||||
process_server(server, channels)
|
channels = channels.rstrip(',')
|
||||||
|
command = "/set irc.server.%s.autojoin '%s'" % (server, channels)
|
||||||
|
w.command('', command)
|
||||||
|
|
||||||
return w.WEECHAT_RC_OK
|
return w.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
@ -112,66 +104,44 @@ def autosave_channels_on_activity(signal, callback, callback_data):
|
||||||
items = find_channels()
|
items = find_channels()
|
||||||
|
|
||||||
# print/execute commands
|
# print/execute commands
|
||||||
for server, channels in items.items():
|
for server, channels in items.iteritems():
|
||||||
nick = w.info_get('irc_nick', server)
|
nick = w.info_get('irc_nick', server)
|
||||||
|
|
||||||
pattern = "^:%s!.*(JOIN|PART) :?(#[^ ]*)( :.*$)?" % nick
|
pattern = "^:%s!.*(JOIN|PART) :?(#[^ ]*)( :.*$)?" % nick
|
||||||
match = re.match(pattern, callback_data)
|
match = re.match(pattern, callback_data)
|
||||||
|
|
||||||
if match: # check if nick is my nick. In that case: save
|
if match: # check if nick is my nick. In that case: save
|
||||||
process_server(server, channels)
|
channel = match.group(2)
|
||||||
else: # someone else: ignore
|
channels = channels.rstrip(',')
|
||||||
|
command = "/set irc.server.%s.autojoin '%s'" % (server, channels)
|
||||||
|
w.command('', command)
|
||||||
|
else: # someone else: ignore
|
||||||
continue
|
continue
|
||||||
|
|
||||||
return w.WEECHAT_RC_OK
|
return w.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
def autojoin_cb(data, buffer, args):
|
def autojoin_cb(data, buffer, args):
|
||||||
if args == '--run':
|
"""Old behaviour: doesn't save empty channel list"""
|
||||||
run = True
|
"""In fact should also save open buffers with a /part'ed channel"""
|
||||||
elif args != '':
|
"""But I can't believe somebody would want that behaviour"""
|
||||||
w.prnt('', 'Unexpected argument: %s' % args)
|
|
||||||
return w.WEECHAT_RC_ERROR
|
|
||||||
else:
|
|
||||||
run = False
|
|
||||||
|
|
||||||
# Old behaviour: doesn't save empty channel list
|
|
||||||
# In fact should also save open buffers with a /part'ed channel
|
|
||||||
# But I can't believe somebody would want that behaviour
|
|
||||||
items = find_channels()
|
items = find_channels()
|
||||||
|
|
||||||
# print/execute commands
|
# print/execute commands
|
||||||
for server, channels in items.items():
|
for server, channels in items.iteritems():
|
||||||
process_server(server, channels, run)
|
channels = channels.rstrip(',')
|
||||||
|
if not channels: # empty channel list
|
||||||
|
continue
|
||||||
|
command = '/set irc.server.%s.autojoin %s' % (server, channels)
|
||||||
|
if args == '--run':
|
||||||
|
w.command('', command)
|
||||||
|
else:
|
||||||
|
w.prnt('', command)
|
||||||
|
|
||||||
return w.WEECHAT_RC_OK
|
return w.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
def process_server(server, channels, run=True):
|
|
||||||
option = "irc.server.%s.autojoin" % server
|
|
||||||
channels = channels.rstrip(',')
|
|
||||||
oldchans = w.config_string(w.config_get(option))
|
|
||||||
|
|
||||||
if not channels: # empty channel list
|
|
||||||
return
|
|
||||||
|
|
||||||
# Note: re already caches the result of regexp compilation
|
|
||||||
sec = re.match('^\${sec\.data\.(.*)}$', oldchans)
|
|
||||||
if sec:
|
|
||||||
secvar = sec.group(1)
|
|
||||||
command = "/secure set %s %s" % (secvar, channels)
|
|
||||||
else:
|
|
||||||
command = "/set irc.server.%s.autojoin '%s'" % (server, channels)
|
|
||||||
|
|
||||||
if run:
|
|
||||||
w.command('', command)
|
|
||||||
else:
|
|
||||||
w.prnt('', command)
|
|
||||||
|
|
||||||
|
|
||||||
def find_channels():
|
def find_channels():
|
||||||
"""Return list of servers and channels"""
|
"""Return list of servers and channels"""
|
||||||
# TODO: make it return a dict with more options like "nicks_count etc."
|
#@TODO: make it return a dict with more options like "nicks_count etc."
|
||||||
items = {}
|
items = {}
|
||||||
infolist = w.infolist_get('irc_server', '', '')
|
infolist = w.infolist_get('irc_server', '', '')
|
||||||
# populate servers
|
# populate servers
|
||||||
|
@ -185,18 +155,18 @@ def find_channels():
|
||||||
keys = []
|
keys = []
|
||||||
keyed_channels = []
|
keyed_channels = []
|
||||||
unkeyed_channels = []
|
unkeyed_channels = []
|
||||||
items[server] = '' # init if connected but no channels
|
items[server] = '' #init if connected but no channels
|
||||||
infolist = w.infolist_get('irc_channel', '', server)
|
infolist = w.infolist_get('irc_channel', '', server)
|
||||||
while w.infolist_next(infolist):
|
while w.infolist_next(infolist):
|
||||||
if w.infolist_integer(infolist, 'nicks_count') == 0:
|
if w.infolist_integer(infolist, 'nicks_count') == 0:
|
||||||
# parted but still open in a buffer: bit hackish
|
#parted but still open in a buffer: bit hackish
|
||||||
continue
|
continue
|
||||||
if w.infolist_integer(infolist, 'type') == 0:
|
if w.infolist_integer(infolist, 'type') == 0:
|
||||||
key = w.infolist_string(infolist, "key")
|
key = w.infolist_string(infolist, "key")
|
||||||
if len(key) > 0:
|
if len(key) > 0:
|
||||||
keys.append(key)
|
keys.append(key)
|
||||||
keyed_channels.append(w.infolist_string(infolist, "name"))
|
keyed_channels.append(w.infolist_string(infolist, "name"))
|
||||||
else:
|
else :
|
||||||
unkeyed_channels.append(w.infolist_string(infolist, "name"))
|
unkeyed_channels.append(w.infolist_string(infolist, "name"))
|
||||||
items[server] = ','.join(keyed_channels + unkeyed_channels)
|
items[server] = ','.join(keyed_channels + unkeyed_channels)
|
||||||
if len(keys) > 0:
|
if len(keys) > 0:
|
||||||
|
@ -204,3 +174,4 @@ def find_channels():
|
||||||
w.infolist_free(infolist)
|
w.infolist_free(infolist)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
../apply_corrections.py
|
|
@ -0,0 +1 @@
|
||||||
|
../screen_away.py
|
|
@ -53,9 +53,6 @@
|
||||||
# It can be used for force or disable background process, using '0' forces to always grep in
|
# It can be used for force or disable background process, using '0' forces to always grep in
|
||||||
# background, while using '' (empty string) will disable it.
|
# background, while using '' (empty string) will disable it.
|
||||||
#
|
#
|
||||||
# * plugins.var.python.grep.timeout_secs:
|
|
||||||
# Timeout (in seconds) for background grepping.
|
|
||||||
#
|
|
||||||
# * plugins.var.python.grep.default_tail_head:
|
# * plugins.var.python.grep.default_tail_head:
|
||||||
# Config option for define default number of lines returned when using --head or --tail options.
|
# Config option for define default number of lines returned when using --head or --tail options.
|
||||||
# Can be overriden in the command with --number option.
|
# Can be overriden in the command with --number option.
|
||||||
|
@ -69,37 +66,6 @@
|
||||||
#
|
#
|
||||||
# History:
|
# History:
|
||||||
#
|
#
|
||||||
# 2021-05-02, Sébastien Helleu <flashcode@flashtux.org>
|
|
||||||
# version 0.8.5: add compatibility with WeeChat >= 3.2 (XDG directories)
|
|
||||||
#
|
|
||||||
# 2020-10-11, Thom Wiggers <thom@thomwiggers.nl>
|
|
||||||
# version 0.8.4: Python3 compatibility fix
|
|
||||||
#
|
|
||||||
# 2020-05-06, Dominique Martinet <asmadeus@codewreck.org> and hexa-
|
|
||||||
# version 0.8.3: more python3 compatibility fixes...
|
|
||||||
#
|
|
||||||
# 2019-06-30, dabbill <dabbill@gmail.com>
|
|
||||||
# and Sébastien Helleu <flashcode@flashtux.org>
|
|
||||||
# version 0.8.2: make script compatible with Python 3
|
|
||||||
#
|
|
||||||
# 2018-04-10, Sébastien Helleu <flashcode@flashtux.org>
|
|
||||||
# version 0.8.1: fix infolist_time for WeeChat >= 2.2 (WeeChat returns a long
|
|
||||||
# integer instead of a string)
|
|
||||||
#
|
|
||||||
# 2017-09-20, mickael9
|
|
||||||
# version 0.8:
|
|
||||||
# * use weechat 1.5+ api for background processing (old method was unsafe and buggy)
|
|
||||||
# * add timeout_secs setting (was previously hardcoded to 5 mins)
|
|
||||||
#
|
|
||||||
# 2017-07-23, Sébastien Helleu <flashcode@flashtux.org>
|
|
||||||
# version 0.7.8: fix modulo by zero when nick is empty string
|
|
||||||
#
|
|
||||||
# 2016-06-23, mickael9
|
|
||||||
# version 0.7.7: fix get_home function
|
|
||||||
#
|
|
||||||
# 2015-11-26
|
|
||||||
# version 0.7.6: fix a typo
|
|
||||||
#
|
|
||||||
# 2015-01-31, Nicd-
|
# 2015-01-31, Nicd-
|
||||||
# version 0.7.5:
|
# version 0.7.5:
|
||||||
# '~' is now expaned to the home directory in the log file path so
|
# '~' is now expaned to the home directory in the log file path so
|
||||||
|
@ -130,9 +96,9 @@
|
||||||
# * supress highlights when printing in grep buffer
|
# * supress highlights when printing in grep buffer
|
||||||
#
|
#
|
||||||
# 2010-10-06
|
# 2010-10-06
|
||||||
# version 0.6.7: by xt <xt@bash.no>
|
# version 0.6.7: by xt <xt@bash.no>
|
||||||
# * better temporary file:
|
# * better temporary file:
|
||||||
# use tempfile.mkstemp. to create a temp file in log dir,
|
# use tempfile.mkstemp. to create a temp file in log dir,
|
||||||
# makes it safer with regards to write permission and multi user
|
# makes it safer with regards to write permission and multi user
|
||||||
#
|
#
|
||||||
# 2010-04-08
|
# 2010-04-08
|
||||||
|
@ -223,12 +189,7 @@
|
||||||
###
|
###
|
||||||
|
|
||||||
from os import path
|
from os import path
|
||||||
import sys, getopt, time, os, re
|
import sys, getopt, time, os, re, tempfile
|
||||||
|
|
||||||
try:
|
|
||||||
import cPickle as pickle
|
|
||||||
except ImportError:
|
|
||||||
import pickle
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import weechat
|
import weechat
|
||||||
|
@ -239,21 +200,20 @@ except ImportError:
|
||||||
|
|
||||||
SCRIPT_NAME = "grep"
|
SCRIPT_NAME = "grep"
|
||||||
SCRIPT_AUTHOR = "Elián Hanisch <lambdae2@gmail.com>"
|
SCRIPT_AUTHOR = "Elián Hanisch <lambdae2@gmail.com>"
|
||||||
SCRIPT_VERSION = "0.8.5"
|
SCRIPT_VERSION = "0.7.5"
|
||||||
SCRIPT_LICENSE = "GPL3"
|
SCRIPT_LICENSE = "GPL3"
|
||||||
SCRIPT_DESC = "Search in buffers and logs"
|
SCRIPT_DESC = "Search in buffers and logs"
|
||||||
SCRIPT_COMMAND = "grep"
|
SCRIPT_COMMAND = "grep"
|
||||||
|
|
||||||
### Default Settings ###
|
### Default Settings ###
|
||||||
settings = {
|
settings = {
|
||||||
'clear_buffer' : 'off',
|
'clear_buffer' : 'off',
|
||||||
'log_filter' : '',
|
'log_filter' : '',
|
||||||
'go_to_buffer' : 'on',
|
'go_to_buffer' : 'on',
|
||||||
'max_lines' : '4000',
|
'max_lines' : '4000',
|
||||||
'show_summary' : 'on',
|
'show_summary' : 'on',
|
||||||
'size_limit' : '2048',
|
'size_limit' : '2048',
|
||||||
'default_tail_head' : '10',
|
'default_tail_head' : '10',
|
||||||
'timeout_secs' : '300',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
### Class definitions ###
|
### Class definitions ###
|
||||||
|
@ -272,14 +232,14 @@ class linesDict(dict):
|
||||||
def get_matches_count(self):
|
def get_matches_count(self):
|
||||||
"""Return the sum of total matches stored."""
|
"""Return the sum of total matches stored."""
|
||||||
if dict.__len__(self):
|
if dict.__len__(self):
|
||||||
return sum(map(lambda L: L.matches_count, self.values()))
|
return sum(map(lambda L: L.matches_count, self.itervalues()))
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
"""Return the sum of total lines stored."""
|
"""Return the sum of total lines stored."""
|
||||||
if dict.__len__(self):
|
if dict.__len__(self):
|
||||||
return sum(map(len, self.values()))
|
return sum(map(len, self.itervalues()))
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@ -287,7 +247,7 @@ class linesDict(dict):
|
||||||
"""Returns buffer count or buffer name if there's just one stored."""
|
"""Returns buffer count or buffer name if there's just one stored."""
|
||||||
n = len(self.keys())
|
n = len(self.keys())
|
||||||
if n == 1:
|
if n == 1:
|
||||||
return list(self.keys())[0]
|
return self.keys()[0]
|
||||||
elif n > 1:
|
elif n > 1:
|
||||||
return '%s logs' %n
|
return '%s logs' %n
|
||||||
else:
|
else:
|
||||||
|
@ -295,18 +255,18 @@ class linesDict(dict):
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
"""Returns a list of items sorted by line count."""
|
"""Returns a list of items sorted by line count."""
|
||||||
items = list(dict.items(self))
|
items = dict.items(self)
|
||||||
items.sort(key=lambda i: len(i[1]))
|
items.sort(key=lambda i: len(i[1]))
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def items_count(self):
|
def items_count(self):
|
||||||
"""Returns a list of items sorted by match count."""
|
"""Returns a list of items sorted by match count."""
|
||||||
items = list(dict.items(self))
|
items = dict.items(self)
|
||||||
items.sort(key=lambda i: i[1].matches_count)
|
items.sort(key=lambda i: i[1].matches_count)
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def strip_separator(self):
|
def strip_separator(self):
|
||||||
for L in self.values():
|
for L in self.itervalues():
|
||||||
L.strip_separator()
|
L.strip_separator()
|
||||||
|
|
||||||
def get_last_lines(self, n):
|
def get_last_lines(self, n):
|
||||||
|
@ -315,7 +275,7 @@ class linesDict(dict):
|
||||||
if n >= total_lines:
|
if n >= total_lines:
|
||||||
# nothing to do
|
# nothing to do
|
||||||
return
|
return
|
||||||
for k, v in reversed(list(self.items())):
|
for k, v in reversed(self.items()):
|
||||||
l = len(v)
|
l = len(v)
|
||||||
if n > 0:
|
if n > 0:
|
||||||
if l > n:
|
if l > n:
|
||||||
|
@ -412,15 +372,13 @@ def color_nick(nick):
|
||||||
else:
|
else:
|
||||||
mode = mode_color = ''
|
mode = mode_color = ''
|
||||||
# nick color
|
# nick color
|
||||||
nick_color = ''
|
nick_color = weechat.info_get('irc_nick_color', nick)
|
||||||
if nick:
|
if not nick_color:
|
||||||
nick_color = weechat.info_get('irc_nick_color', nick)
|
# probably we're in WeeChat 0.3.0
|
||||||
if not nick_color:
|
#debug('no irc_nick_color')
|
||||||
# probably we're in WeeChat 0.3.0
|
color_nicks_number = config_int('weechat.look.color_nicks_number')
|
||||||
#debug('no irc_nick_color')
|
idx = (sum(map(ord, nick))%color_nicks_number) + 1
|
||||||
color_nicks_number = config_int('weechat.look.color_nicks_number')
|
nick_color = wcolor(config_string('weechat.color.chat_nick_color%02d' %idx))
|
||||||
idx = (sum(map(ord, nick))%color_nicks_number) + 1
|
|
||||||
nick_color = wcolor(config_string('weechat.color.chat_nick_color%02d' %idx))
|
|
||||||
return ''.join((prefix_c, prefix, mode_color, mode, nick_color, nick, suffix_c, suffix))
|
return ''.join((prefix_c, prefix, mode_color, mode, nick_color, nick, suffix_c, suffix))
|
||||||
|
|
||||||
### Config and value validation ###
|
### Config and value validation ###
|
||||||
|
@ -455,14 +413,9 @@ def get_config_log_filter():
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_home():
|
def get_home():
|
||||||
options = {
|
home = weechat.config_string(weechat.config_get('logger.file.path'))
|
||||||
'directory': 'data',
|
home = path.abspath(path.expanduser(home))
|
||||||
}
|
return home.replace('%h', weechat.info_get('weechat_dir', ''))
|
||||||
home = weechat.string_eval_path_home(
|
|
||||||
weechat.config_string(weechat.config_get('logger.file.path')),
|
|
||||||
{}, {}, options,
|
|
||||||
)
|
|
||||||
return home
|
|
||||||
|
|
||||||
def strip_home(s, dir=''):
|
def strip_home(s, dir=''):
|
||||||
"""Strips home dir from the begging of the log path, this makes them sorter."""
|
"""Strips home dir from the begging of the log path, this makes them sorter."""
|
||||||
|
@ -504,7 +457,7 @@ def dir_list(dir, filter_list=(), filter_excludes=True, include_dir=False):
|
||||||
return cache_dir[key]
|
return cache_dir[key]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
filter_list = filter_list or get_config_log_filter()
|
filter_list = filter_list or get_config_log_filter()
|
||||||
dir_len = len(dir)
|
dir_len = len(dir)
|
||||||
if filter_list:
|
if filter_list:
|
||||||
|
@ -609,10 +562,7 @@ def get_file_by_name(buffer_name):
|
||||||
if '$server' in mask:
|
if '$server' in mask:
|
||||||
mask = mask.replace('$server', server)
|
mask = mask.replace('$server', server)
|
||||||
# change the unreplaced vars by '*'
|
# change the unreplaced vars by '*'
|
||||||
try:
|
from string import letters
|
||||||
from string import letters
|
|
||||||
except ImportError:
|
|
||||||
from string import ascii_letters as letters
|
|
||||||
if '%' in mask:
|
if '%' in mask:
|
||||||
# vars for time formatting
|
# vars for time formatting
|
||||||
mask = mask.replace('%', '$')
|
mask = mask.replace('%', '$')
|
||||||
|
@ -677,8 +627,8 @@ def make_regexp(pattern, matchcase=False):
|
||||||
regexp = re.compile(pattern, re.IGNORECASE)
|
regexp = re.compile(pattern, re.IGNORECASE)
|
||||||
else:
|
else:
|
||||||
regexp = re.compile(pattern)
|
regexp = re.compile(pattern)
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
raise Exception('Bad pattern, %s' % e)
|
raise Exception, 'Bad pattern, %s' %e
|
||||||
return regexp
|
return regexp
|
||||||
|
|
||||||
def check_string(s, regexp, hilight='', exact=False):
|
def check_string(s, regexp, hilight='', exact=False):
|
||||||
|
@ -736,7 +686,7 @@ def grep_file(file, head, tail, after_context, before_context, count, regexp, hi
|
||||||
return s
|
return s
|
||||||
else:
|
else:
|
||||||
check = lambda s: check_string(s, regexp, hilight, exact)
|
check = lambda s: check_string(s, regexp, hilight, exact)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
file_object = open(file, 'r')
|
file_object = open(file, 'r')
|
||||||
except IOError:
|
except IOError:
|
||||||
|
@ -756,7 +706,7 @@ def grep_file(file, head, tail, after_context, before_context, count, regexp, hi
|
||||||
before_context, after_context = after_context, before_context
|
before_context, after_context = after_context, before_context
|
||||||
|
|
||||||
if before_context:
|
if before_context:
|
||||||
before_context_range = list(range(1, before_context + 1))
|
before_context_range = range(1, before_context + 1)
|
||||||
before_context_range.reverse()
|
before_context_range.reverse()
|
||||||
|
|
||||||
limit = tail or head
|
limit = tail or head
|
||||||
|
@ -820,7 +770,7 @@ def grep_file(file, head, tail, after_context, before_context, count, regexp, hi
|
||||||
while id < after_context + offset:
|
while id < after_context + offset:
|
||||||
id += 1
|
id += 1
|
||||||
try:
|
try:
|
||||||
context_line = next(file_object)
|
context_line = file_object.next()
|
||||||
_context_line = check(context_line)
|
_context_line = check(context_line)
|
||||||
if _context_line:
|
if _context_line:
|
||||||
offset = id
|
offset = id
|
||||||
|
@ -868,10 +818,6 @@ def grep_buffer(buffer, head, tail, after_context, before_context, count, regexp
|
||||||
prefix = string_remove_color(infolist_string(infolist, 'prefix'), '')
|
prefix = string_remove_color(infolist_string(infolist, 'prefix'), '')
|
||||||
message = string_remove_color(infolist_string(infolist, 'message'), '')
|
message = string_remove_color(infolist_string(infolist, 'message'), '')
|
||||||
date = infolist_time(infolist, 'date')
|
date = infolist_time(infolist, 'date')
|
||||||
# since WeeChat 2.2, infolist_time returns a long integer
|
|
||||||
# instead of a string
|
|
||||||
if not isinstance(date, str):
|
|
||||||
date = time.strftime('%F %T', time.localtime(int(date)))
|
|
||||||
return '%s\t%s\t%s' %(date, prefix, message)
|
return '%s\t%s\t%s' %(date, prefix, message)
|
||||||
return function
|
return function
|
||||||
get_line = make_get_line_funcion()
|
get_line = make_get_line_funcion()
|
||||||
|
@ -901,7 +847,8 @@ def grep_buffer(buffer, head, tail, after_context, before_context, count, regexp
|
||||||
check = lambda s: check_string(s, regexp, hilight, exact)
|
check = lambda s: check_string(s, regexp, hilight, exact)
|
||||||
|
|
||||||
if before_context:
|
if before_context:
|
||||||
before_context_range = reversed(range(1, before_context + 1))
|
before_context_range = range(1, before_context + 1)
|
||||||
|
before_context_range.reverse()
|
||||||
|
|
||||||
while infolist_next(infolist):
|
while infolist_next(infolist):
|
||||||
line = get_line(infolist)
|
line = get_line(infolist)
|
||||||
|
@ -984,88 +931,104 @@ def show_matching_lines():
|
||||||
elif size_limit == '':
|
elif size_limit == '':
|
||||||
background = False
|
background = False
|
||||||
|
|
||||||
regexp = make_regexp(pattern, matchcase)
|
|
||||||
|
|
||||||
global grep_options, log_pairs
|
|
||||||
grep_options = (head, tail, after_context, before_context,
|
|
||||||
count, regexp, hilight, exact, invert)
|
|
||||||
|
|
||||||
log_pairs = [(strip_home(log), log) for log in search_in_files]
|
|
||||||
|
|
||||||
if not background:
|
if not background:
|
||||||
# run grep normally
|
# run grep normally
|
||||||
for log_name, log in log_pairs:
|
regexp = make_regexp(pattern, matchcase)
|
||||||
matched_lines[log_name] = grep_file(log, *grep_options)
|
for log in search_in_files:
|
||||||
|
log_name = strip_home(log)
|
||||||
|
matched_lines[log_name] = grep_file(log, head, tail, after_context, before_context,
|
||||||
|
count, regexp, hilight, exact, invert)
|
||||||
buffer_update()
|
buffer_update()
|
||||||
else:
|
else:
|
||||||
global hook_file_grep, grep_stdout, grep_stderr, pattern_tmpl
|
# we hook a process so grepping runs in background.
|
||||||
grep_stdout = grep_stderr = b''
|
#debug('on background')
|
||||||
hook_file_grep = weechat.hook_process(
|
global hook_file_grep, script_path, bytecode
|
||||||
'func:grep_process',
|
timeout = 1000*60*5 # 5 min
|
||||||
get_config_int('timeout_secs') * 1000,
|
|
||||||
'grep_process_cb',
|
quotify = lambda s: '"%s"' %s
|
||||||
''
|
files_string = ', '.join(map(quotify, search_in_files))
|
||||||
)
|
|
||||||
|
global tmpFile
|
||||||
|
# we keep the file descriptor as a global var so it isn't deleted until next grep
|
||||||
|
tmpFile = tempfile.NamedTemporaryFile(prefix=SCRIPT_NAME,
|
||||||
|
dir=weechat.info_get('weechat_dir', ''))
|
||||||
|
cmd = grep_process_cmd %dict(logs=files_string, head=head, pattern=pattern, tail=tail,
|
||||||
|
hilight=hilight, after_context=after_context, before_context=before_context,
|
||||||
|
exact=exact, matchcase=matchcase, home_dir=home_dir, script_path=script_path,
|
||||||
|
count=count, invert=invert, bytecode=bytecode, filename=tmpFile.name,
|
||||||
|
python=weechat.info_get('python2_bin', '') or 'python')
|
||||||
|
|
||||||
|
#debug(cmd)
|
||||||
|
hook_file_grep = weechat.hook_process(cmd, timeout, 'grep_file_callback', tmpFile.name)
|
||||||
|
global pattern_tmpl
|
||||||
if hook_file_grep:
|
if hook_file_grep:
|
||||||
buffer_create("Searching for '%s' in %s worth of data..." % (
|
buffer_create("Searching for '%s' in %s worth of data..." %(pattern_tmpl,
|
||||||
pattern_tmpl,
|
human_readable_size(size)))
|
||||||
human_readable_size(size)
|
|
||||||
))
|
|
||||||
else:
|
else:
|
||||||
buffer_update()
|
buffer_update()
|
||||||
|
|
||||||
|
# defined here for commodity
|
||||||
|
grep_process_cmd = """%(python)s -%(bytecode)sc '
|
||||||
|
import sys, cPickle, os
|
||||||
|
sys.path.append("%(script_path)s") # add WeeChat script dir so we can import grep
|
||||||
|
from grep import make_regexp, grep_file, strip_home
|
||||||
|
logs = (%(logs)s, )
|
||||||
|
try:
|
||||||
|
regexp = make_regexp("%(pattern)s", %(matchcase)s)
|
||||||
|
d = {}
|
||||||
|
for log in logs:
|
||||||
|
log_name = strip_home(log, "%(home_dir)s")
|
||||||
|
lines = grep_file(log, %(head)s, %(tail)s, %(after_context)s, %(before_context)s,
|
||||||
|
%(count)s, regexp, "%(hilight)s", %(exact)s, %(invert)s)
|
||||||
|
d[log_name] = lines
|
||||||
|
fd = open("%(filename)s", "wb")
|
||||||
|
cPickle.dump(d, fd, -1)
|
||||||
|
fd.close()
|
||||||
|
except Exception, e:
|
||||||
|
print >> sys.stderr, e'
|
||||||
|
"""
|
||||||
|
|
||||||
def grep_process(*args):
|
grep_stdout = grep_stderr = ''
|
||||||
result = {}
|
def grep_file_callback(filename, command, rc, stdout, stderr):
|
||||||
try:
|
global hook_file_grep, grep_stderr, grep_stdout
|
||||||
global grep_options, log_pairs
|
global matched_lines
|
||||||
for log_name, log in log_pairs:
|
#debug("rc: %s\nstderr: %s\nstdout: %s" %(rc, repr(stderr), repr(stdout)))
|
||||||
result[log_name] = grep_file(log, *grep_options)
|
if stdout:
|
||||||
except Exception as e:
|
grep_stdout += stdout
|
||||||
result = e
|
if stderr:
|
||||||
|
grep_stderr += stderr
|
||||||
return pickle.dumps(result, 0)
|
if int(rc) >= 0:
|
||||||
|
|
||||||
def grep_process_cb(data, command, return_code, out, err):
|
def set_buffer_error():
|
||||||
global grep_stdout, grep_stderr, matched_lines, hook_file_grep
|
grep_buffer = buffer_create()
|
||||||
|
title = weechat.buffer_get_string(grep_buffer, 'title')
|
||||||
if isinstance(out, str):
|
title = title + ' %serror' %color_title
|
||||||
out = out.encode()
|
weechat.buffer_set(grep_buffer, 'title', title)
|
||||||
grep_stdout += out
|
|
||||||
|
|
||||||
if isinstance(err, str):
|
|
||||||
err = err.encode()
|
|
||||||
grep_stderr += err
|
|
||||||
|
|
||||||
def set_buffer_error(message):
|
|
||||||
error(message)
|
|
||||||
grep_buffer = buffer_create()
|
|
||||||
title = weechat.buffer_get_string(grep_buffer, 'title')
|
|
||||||
title = title + ' %serror' % color_title
|
|
||||||
weechat.buffer_set(grep_buffer, 'title', title)
|
|
||||||
|
|
||||||
if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR:
|
|
||||||
set_buffer_error("Background grep timed out")
|
|
||||||
hook_file_grep = None
|
|
||||||
return WEECHAT_RC_OK
|
|
||||||
|
|
||||||
elif return_code >= 0:
|
|
||||||
hook_file_grep = None
|
|
||||||
if grep_stderr:
|
|
||||||
set_buffer_error(grep_stderr)
|
|
||||||
return WEECHAT_RC_OK
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = pickle.loads(grep_stdout)
|
if grep_stderr:
|
||||||
if isinstance(data, Exception):
|
error(grep_stderr)
|
||||||
raise data
|
set_buffer_error()
|
||||||
matched_lines.update(data)
|
#elif grep_stdout:
|
||||||
except Exception as e:
|
#debug(grep_stdout)
|
||||||
set_buffer_error(repr(e))
|
elif path.exists(filename):
|
||||||
return WEECHAT_RC_OK
|
import cPickle
|
||||||
else:
|
try:
|
||||||
buffer_update()
|
#debug(file)
|
||||||
|
fd = open(filename, 'rb')
|
||||||
|
d = cPickle.load(fd)
|
||||||
|
matched_lines.update(d)
|
||||||
|
fd.close()
|
||||||
|
except Exception, e:
|
||||||
|
error(e)
|
||||||
|
set_buffer_error()
|
||||||
|
else:
|
||||||
|
buffer_update()
|
||||||
|
global tmpFile
|
||||||
|
tmpFile = None
|
||||||
|
finally:
|
||||||
|
grep_stdout = grep_stderr = ''
|
||||||
|
hook_file_grep = None
|
||||||
return WEECHAT_RC_OK
|
return WEECHAT_RC_OK
|
||||||
|
|
||||||
def get_grep_file_status():
|
def get_grep_file_status():
|
||||||
|
@ -1202,7 +1165,7 @@ def buffer_update():
|
||||||
|
|
||||||
# free matched_lines so it can be removed from memory
|
# free matched_lines so it can be removed from memory
|
||||||
del matched_lines
|
del matched_lines
|
||||||
|
|
||||||
def split_line(s):
|
def split_line(s):
|
||||||
"""Splits log's line 's' in 3 parts, date, nick and msg."""
|
"""Splits log's line 's' in 3 parts, date, nick and msg."""
|
||||||
global weechat_format
|
global weechat_format
|
||||||
|
@ -1302,12 +1265,12 @@ def buffer_input(data, buffer, input_data):
|
||||||
weechat.infolist_free(infolist)
|
weechat.infolist_free(infolist)
|
||||||
try:
|
try:
|
||||||
cmd_grep_parsing(input_data)
|
cmd_grep_parsing(input_data)
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
error('Argument error, %s' % e, buffer=buffer)
|
error('Argument error, %s' %e, buffer=buffer)
|
||||||
return WEECHAT_RC_OK
|
return WEECHAT_RC_OK
|
||||||
try:
|
try:
|
||||||
show_matching_lines()
|
show_matching_lines()
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
error(e)
|
error(e)
|
||||||
except NameError:
|
except NameError:
|
||||||
error("There isn't any previous search to repeat.", buffer=buffer)
|
error("There isn't any previous search to repeat.", buffer=buffer)
|
||||||
|
@ -1364,11 +1327,11 @@ def cmd_grep_parsing(args):
|
||||||
|
|
||||||
args = ' '.join(args) # join pattern for keep spaces
|
args = ' '.join(args) # join pattern for keep spaces
|
||||||
if args:
|
if args:
|
||||||
pattern_tmpl = args
|
pattern_tmpl = args
|
||||||
pattern = _tmplRe.sub(tmplReplacer, args)
|
pattern = _tmplRe.sub(tmplReplacer, args)
|
||||||
debug('Using regexp: %s', pattern)
|
debug('Using regexp: %s', pattern)
|
||||||
if not pattern:
|
if not pattern:
|
||||||
raise Exception('No pattern for grep the logs.')
|
raise Exception, 'No pattern for grep the logs.'
|
||||||
|
|
||||||
def positive_number(opt, val):
|
def positive_number(opt, val):
|
||||||
try:
|
try:
|
||||||
|
@ -1381,7 +1344,7 @@ def cmd_grep_parsing(args):
|
||||||
opt = '-' + opt
|
opt = '-' + opt
|
||||||
else:
|
else:
|
||||||
opt = '--' + opt
|
opt = '--' + opt
|
||||||
raise Exception("argument for %s must be a positive integer." % opt)
|
raise Exception, "argument for %s must be a positive integer." %opt
|
||||||
|
|
||||||
for opt, val in opts:
|
for opt, val in opts:
|
||||||
opt = opt.strip('-')
|
opt = opt.strip('-')
|
||||||
|
@ -1440,18 +1403,18 @@ def cmd_grep_parsing(args):
|
||||||
tail = n
|
tail = n
|
||||||
|
|
||||||
def cmd_grep_stop(buffer, args):
|
def cmd_grep_stop(buffer, args):
|
||||||
global hook_file_grep, pattern, matched_lines
|
global hook_file_grep, pattern, matched_lines, tmpFile
|
||||||
if hook_file_grep:
|
if hook_file_grep:
|
||||||
if args == 'stop':
|
if args == 'stop':
|
||||||
weechat.unhook(hook_file_grep)
|
weechat.unhook(hook_file_grep)
|
||||||
hook_file_grep = None
|
hook_file_grep = None
|
||||||
|
s = 'Search for \'%s\' stopped.' %pattern
|
||||||
s = 'Search for \'%s\' stopped.' % pattern
|
|
||||||
say(s, buffer)
|
say(s, buffer)
|
||||||
grep_buffer = weechat.buffer_search('python', SCRIPT_NAME)
|
grep_buffer = weechat.buffer_search('python', SCRIPT_NAME)
|
||||||
if grep_buffer:
|
if grep_buffer:
|
||||||
weechat.buffer_set(grep_buffer, 'title', s)
|
weechat.buffer_set(grep_buffer, 'title', s)
|
||||||
matched_lines = {}
|
del matched_lines
|
||||||
|
tmpFile = None
|
||||||
else:
|
else:
|
||||||
say(get_grep_file_status(), buffer)
|
say(get_grep_file_status(), buffer)
|
||||||
raise Exception
|
raise Exception
|
||||||
|
@ -1476,8 +1439,8 @@ def cmd_grep(data, buffer, args):
|
||||||
# parse
|
# parse
|
||||||
try:
|
try:
|
||||||
cmd_grep_parsing(args)
|
cmd_grep_parsing(args)
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
error('Argument error, %s' % e)
|
error('Argument error, %s' %e)
|
||||||
return WEECHAT_RC_OK
|
return WEECHAT_RC_OK
|
||||||
|
|
||||||
# find logs
|
# find logs
|
||||||
|
@ -1523,7 +1486,7 @@ def cmd_grep(data, buffer, args):
|
||||||
# grepping
|
# grepping
|
||||||
try:
|
try:
|
||||||
show_matching_lines()
|
show_matching_lines()
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
error(e)
|
error(e)
|
||||||
return WEECHAT_RC_OK
|
return WEECHAT_RC_OK
|
||||||
|
|
||||||
|
@ -1542,8 +1505,8 @@ def cmd_logs(data, buffer, args):
|
||||||
opt = opt.strip('-')
|
opt = opt.strip('-')
|
||||||
if opt in ('size', 's'):
|
if opt in ('size', 's'):
|
||||||
sort_by_size = True
|
sort_by_size = True
|
||||||
except Exception as e:
|
except Exception, e:
|
||||||
error('Argument error, %s' % e)
|
error('Argument error, %s' %e)
|
||||||
return WEECHAT_RC_OK
|
return WEECHAT_RC_OK
|
||||||
|
|
||||||
# is there's a filter, filter_excludes should be False
|
# is there's a filter, filter_excludes should be False
|
||||||
|
@ -1566,7 +1529,7 @@ def cmd_logs(data, buffer, args):
|
||||||
buffer = buffer_create()
|
buffer = buffer_create()
|
||||||
if get_config_boolean('clear_buffer'):
|
if get_config_boolean('clear_buffer'):
|
||||||
weechat.buffer_clear(buffer)
|
weechat.buffer_clear(buffer)
|
||||||
file_list = list(zip(file_list, file_sizes))
|
file_list = zip(file_list, file_sizes)
|
||||||
msg = 'Found %s logs.' %len(file_list)
|
msg = 'Found %s logs.' %len(file_list)
|
||||||
|
|
||||||
print_line(msg, buffer, display=True)
|
print_line(msg, buffer, display=True)
|
||||||
|
@ -1676,7 +1639,7 @@ if __name__ == '__main__' and import_ok and \
|
||||||
If used with 'log <file>' search in all logs that matches <file>.
|
If used with 'log <file>' search in all logs that matches <file>.
|
||||||
-b --buffer: Search only in buffers, not in file logs.
|
-b --buffer: Search only in buffers, not in file logs.
|
||||||
-c --count: Just count the number of matched lines instead of showing them.
|
-c --count: Just count the number of matched lines instead of showing them.
|
||||||
-m --matchcase: Don't do case insensitive search.
|
-m --matchcase: Don't do case insensible search.
|
||||||
-H --hilight: Colour exact matches in output buffer.
|
-H --hilight: Colour exact matches in output buffer.
|
||||||
-o --only-match: Print only the matching part of the line (unique matches).
|
-o --only-match: Print only the matching part of the line (unique matches).
|
||||||
-v -i --invert: Print lines that don't match the regular expression.
|
-v -i --invert: Print lines that don't match the regular expression.
|
||||||
|
@ -1725,7 +1688,7 @@ Examples:
|
||||||
'completion_grep_args', '')
|
'completion_grep_args', '')
|
||||||
|
|
||||||
# settings
|
# settings
|
||||||
for opt, val in settings.items():
|
for opt, val in settings.iteritems():
|
||||||
if not weechat.config_is_set_plugin(opt):
|
if not weechat.config_is_set_plugin(opt):
|
||||||
weechat.config_set_plugin(opt, val)
|
weechat.config_set_plugin(opt, val)
|
||||||
|
|
||||||
|
@ -1738,7 +1701,7 @@ Examples:
|
||||||
color_summary = weechat.color('lightcyan')
|
color_summary = weechat.color('lightcyan')
|
||||||
color_delimiter = weechat.color('chat_delimiters')
|
color_delimiter = weechat.color('chat_delimiters')
|
||||||
color_script_nick = weechat.color('chat_nick')
|
color_script_nick = weechat.color('chat_nick')
|
||||||
|
|
||||||
# pretty [grep]
|
# pretty [grep]
|
||||||
script_nick = '%s[%s%s%s]%s' %(color_delimiter, color_script_nick, SCRIPT_NAME, color_delimiter,
|
script_nick = '%s[%s%s%s]%s' %(color_delimiter, color_script_nick, SCRIPT_NAME, color_delimiter,
|
||||||
color_reset)
|
color_reset)
|
||||||
|
@ -1756,11 +1719,8 @@ Examples:
|
||||||
debug = pybuffer.debugBuffer(globals(), '%s_debug' % SCRIPT_NAME)
|
debug = pybuffer.debugBuffer(globals(), '%s_debug' % SCRIPT_NAME)
|
||||||
except:
|
except:
|
||||||
def debug(s, *args):
|
def debug(s, *args):
|
||||||
try:
|
if not isinstance(s, basestring):
|
||||||
if not isinstance(s, basestring):
|
s = str(s)
|
||||||
s = str(s)
|
|
||||||
except NameError:
|
|
||||||
pass
|
|
||||||
if args:
|
if args:
|
||||||
s = s %args
|
s = s %args
|
||||||
prnt('', '%s\t%s' %(script_nick, s))
|
prnt('', '%s\t%s' %(script_nick, s))
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,197 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009 by xt <xt@bash.no>
|
||||||
|
# Copyright (c) 2009 by penryu <penryu@gmail.com>
|
||||||
|
# Copyright (c) 2010 by Blake Winton <bwinton@latte.ca>
|
||||||
|
# Copyright (c) 2010 by Aron Griffis <agriffis@n01se.net>
|
||||||
|
# Copyright (c) 2010 by Jani Kesänen <jani.kesanen@gmail.com>
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# (this script requires WeeChat 0.3.0 or newer)
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
# 2014-08-02, Nils Görs <weechatter@arcor.de>
|
||||||
|
# version 0.14: add time to detach message. (idea by Mikaela)
|
||||||
|
# 2014-06-19, Anders Bergh <anders1@gmail.com>
|
||||||
|
# version 0.13: Fix a simple typo in an option description.
|
||||||
|
# 2014-01-12, Phyks (Lucas Verney) <phyks@phyks.me>
|
||||||
|
# version 0.12: Added an option to check status of relays to set unaway in
|
||||||
|
# case of a connected relay.
|
||||||
|
# 2013-08-30, Anders Einar Hilden <hildenae@gmail.com>
|
||||||
|
# version: 0.11: Fix reading of set_away
|
||||||
|
# 2013-06-16, Renato Botelho <rbgarga@gmail.com>
|
||||||
|
# version 0.10: add option to don't set away, only change nick
|
||||||
|
# allow multiple commands on attach/dettach
|
||||||
|
# do not add suffix if nick already have it
|
||||||
|
# 2012-12-29, David Flatz <david@upcs.at>
|
||||||
|
# version 0.9: add option to ignore servers and don't set away status for them
|
||||||
|
# add descriptions to config options
|
||||||
|
# 2010-08-07, Filip H.F. "FiXato" Slagter <fixato@gmail.com>
|
||||||
|
# version 0.8: add command on attach feature
|
||||||
|
# 2010-05-07, Jani Kesänen <jani.kesanen@gmail.com>
|
||||||
|
# version 0.7: add command on detach feature
|
||||||
|
# 2010-03-07, Aron Griffis <agriffis@n01se.net>
|
||||||
|
# version 0.6: move socket check to register,
|
||||||
|
# add hook_config for interval,
|
||||||
|
# reduce default interval from 60 to 5
|
||||||
|
# 2010-02-19, Blake Winton <bwinton@latte.ca>
|
||||||
|
# version 0.5: add option to change nick when away
|
||||||
|
# 2010-01-18, xt
|
||||||
|
# version 0.4: only update servers that are connected
|
||||||
|
# 2009-11-30, xt <xt@bash.no>
|
||||||
|
# version 0.3: do not touch servers that are manually set away
|
||||||
|
# 2009-11-27, xt <xt@bash.no>
|
||||||
|
# version 0.2: code for TMUX from penryu
|
||||||
|
# 2009-11-27, xt <xt@bash.no>
|
||||||
|
# version 0.1: initial release
|
||||||
|
|
||||||
|
import weechat as w
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import datetime, time
|
||||||
|
|
||||||
|
SCRIPT_NAME = "screen_away"
|
||||||
|
SCRIPT_AUTHOR = "xt <xt@bash.no>"
|
||||||
|
SCRIPT_VERSION = "0.14"
|
||||||
|
SCRIPT_LICENSE = "GPL3"
|
||||||
|
SCRIPT_DESC = "Set away status on screen detach"
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
'message': ('Detached from screen', 'Away message'),
|
||||||
|
'time_format': ('since %Y-%m-%d %H:%M:%S%z', 'time format append to away message'),
|
||||||
|
'interval': ('5', 'How often in seconds to check screen status'),
|
||||||
|
'away_suffix': ('', 'What to append to your nick when you\'re away.'),
|
||||||
|
'command_on_attach': ('', 'Commands to execute on attach, separated by semicolon'),
|
||||||
|
'command_on_detach': ('', 'Commands to execute on detach, separated by semicolon'),
|
||||||
|
'ignore': ('', 'Comma-separated list of servers to ignore.'),
|
||||||
|
'set_away': ('on', 'Set user as away.'),
|
||||||
|
'ignore_relays': ('off', 'Only check screen status and ignore relay interfaces'),
|
||||||
|
}
|
||||||
|
|
||||||
|
TIMER = None
|
||||||
|
SOCK = None
|
||||||
|
AWAY = False
|
||||||
|
CONNECTED_RELAY = False
|
||||||
|
|
||||||
|
def set_timer():
|
||||||
|
'''Update timer hook with new interval'''
|
||||||
|
|
||||||
|
global TIMER
|
||||||
|
if TIMER:
|
||||||
|
w.unhook(TIMER)
|
||||||
|
TIMER = w.hook_timer(int(w.config_get_plugin('interval')) * 1000,
|
||||||
|
0, 0, "screen_away_timer_cb", '')
|
||||||
|
|
||||||
|
def screen_away_config_cb(data, option, value):
|
||||||
|
if option.endswith(".interval"):
|
||||||
|
set_timer()
|
||||||
|
return w.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
def get_servers():
|
||||||
|
'''Get the servers that are not away, or were set away by this script'''
|
||||||
|
|
||||||
|
ignores = w.config_get_plugin('ignore').split(',')
|
||||||
|
infolist = w.infolist_get('irc_server','','')
|
||||||
|
buffers = []
|
||||||
|
while w.infolist_next(infolist):
|
||||||
|
if not w.infolist_integer(infolist, 'is_connected') == 1 or \
|
||||||
|
w.infolist_string(infolist, 'name') in ignores:
|
||||||
|
continue
|
||||||
|
if not w.config_string_to_boolean(w.config_get_plugin('set_away')) or \
|
||||||
|
not w.infolist_integer(infolist, 'is_away') or \
|
||||||
|
w.config_get_plugin('message') in w.infolist_string(infolist, 'away_message'):
|
||||||
|
# w.infolist_string(infolist, 'away_message') == \
|
||||||
|
# w.config_get_plugin('message'):
|
||||||
|
buffers.append((w.infolist_pointer(infolist, 'buffer'),
|
||||||
|
w.infolist_string(infolist, 'nick')))
|
||||||
|
w.infolist_free(infolist)
|
||||||
|
return buffers
|
||||||
|
|
||||||
|
def screen_away_timer_cb(buffer, args):
|
||||||
|
'''Check if screen is attached, update awayness'''
|
||||||
|
|
||||||
|
global AWAY, SOCK, CONNECTED_RELAY
|
||||||
|
|
||||||
|
set_away = w.config_string_to_boolean(w.config_get_plugin('set_away'))
|
||||||
|
check_relays = not w.config_string_to_boolean(w.config_get_plugin('ignore_relays'))
|
||||||
|
suffix = w.config_get_plugin('away_suffix')
|
||||||
|
attached = os.access(SOCK, os.X_OK) # X bit indicates attached
|
||||||
|
|
||||||
|
# Check wether a client is connected on relay or not
|
||||||
|
CONNECTED_RELAY = False
|
||||||
|
if check_relays:
|
||||||
|
infolist = w.infolist_get('relay', '', '')
|
||||||
|
if infolist:
|
||||||
|
while w.infolist_next(infolist):
|
||||||
|
status = w.infolist_string(infolist, 'status_string')
|
||||||
|
if status == 'connected':
|
||||||
|
CONNECTED_RELAY = True
|
||||||
|
break
|
||||||
|
w.infolist_free(infolist)
|
||||||
|
|
||||||
|
if (attached and AWAY) or (check_relays and CONNECTED_RELAY and not attached and AWAY):
|
||||||
|
w.prnt('', '%s: Screen attached. Clearing away status' % SCRIPT_NAME)
|
||||||
|
for server, nick in get_servers():
|
||||||
|
if set_away:
|
||||||
|
w.command(server, "/away")
|
||||||
|
if suffix and nick.endswith(suffix):
|
||||||
|
nick = nick[:-len(suffix)]
|
||||||
|
w.command(server, "/nick %s" % nick)
|
||||||
|
AWAY = False
|
||||||
|
for cmd in w.config_get_plugin("command_on_attach").split(";"):
|
||||||
|
w.command("", cmd)
|
||||||
|
|
||||||
|
elif not attached and not AWAY:
|
||||||
|
if not CONNECTED_RELAY:
|
||||||
|
w.prnt('', '%s: Screen detached. Setting away status' % SCRIPT_NAME)
|
||||||
|
for server, nick in get_servers():
|
||||||
|
if suffix and not nick.endswith(suffix):
|
||||||
|
w.command(server, "/nick %s%s" % (nick, suffix));
|
||||||
|
if set_away:
|
||||||
|
w.command(server, "/away %s %s" % (w.config_get_plugin('message'), time.strftime(w.config_get_plugin('time_format'))))
|
||||||
|
AWAY = True
|
||||||
|
for cmd in w.config_get_plugin("command_on_detach").split(";"):
|
||||||
|
w.command("", cmd)
|
||||||
|
|
||||||
|
return w.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE,
|
||||||
|
SCRIPT_DESC, "", ""):
|
||||||
|
version = w.info_get('version_number', '') or 0
|
||||||
|
for option, default_desc in settings.iteritems():
|
||||||
|
if not w.config_is_set_plugin(option):
|
||||||
|
w.config_set_plugin(option, default_desc[0])
|
||||||
|
if int(version) >= 0x00030500:
|
||||||
|
w.config_set_desc_plugin(option, default_desc[1])
|
||||||
|
|
||||||
|
if 'STY' in os.environ.keys():
|
||||||
|
# We are running under screen
|
||||||
|
cmd_output = os.popen('env LC_ALL=C screen -ls').read()
|
||||||
|
match = re.search(r'Sockets? in (/.+)\.', cmd_output)
|
||||||
|
if match:
|
||||||
|
SOCK = os.path.join(match.group(1), os.environ['STY'])
|
||||||
|
|
||||||
|
if not SOCK and 'TMUX' in os.environ.keys():
|
||||||
|
# We are running under tmux
|
||||||
|
socket_data = os.environ['TMUX']
|
||||||
|
SOCK = socket_data.rsplit(',',2)[0]
|
||||||
|
|
||||||
|
if SOCK:
|
||||||
|
set_timer()
|
||||||
|
w.hook_config("plugins.var.python." + SCRIPT_NAME + ".*",
|
||||||
|
"screen_away_config_cb", "")
|
|
@ -0,0 +1,57 @@
|
||||||
|
# This weechat plugin pipes the current weechat buffer through urlview
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# /urlview
|
||||||
|
#
|
||||||
|
# History:
|
||||||
|
# 10-04-2015
|
||||||
|
# Version 1.0.0: initial release
|
||||||
|
# Version 1.0.1: reverse text passed to urlview
|
||||||
|
# Version 1.0.2: remove weechat color from messages
|
||||||
|
|
||||||
|
import distutils.spawn
|
||||||
|
import os
|
||||||
|
import pipes
|
||||||
|
import weechat
|
||||||
|
|
||||||
|
|
||||||
|
def urlview(data, buf, args):
|
||||||
|
infolist = weechat.infolist_get("buffer_lines", buf, "")
|
||||||
|
lines = []
|
||||||
|
while weechat.infolist_next(infolist) == 1:
|
||||||
|
lines.append(
|
||||||
|
weechat.string_remove_color(
|
||||||
|
weechat.infolist_string(infolist, "message"),
|
||||||
|
""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
weechat.infolist_free(infolist)
|
||||||
|
|
||||||
|
if not lines:
|
||||||
|
weechat.prnt(buf, "No URLs found")
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
text = "\n".join(reversed(lines))
|
||||||
|
response = os.system("echo %s | urlview" % pipes.quote(text))
|
||||||
|
if response != 0:
|
||||||
|
weechat.prnt(buf, "No URLs found")
|
||||||
|
|
||||||
|
weechat.command(buf, "/window refresh")
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if distutils.spawn.find_executable("urlview") is None:
|
||||||
|
return weechat.WEECHAT_RC_ERROR
|
||||||
|
|
||||||
|
if not weechat.register("urlview", "Keith Smiley", "1.0.2", "MIT",
|
||||||
|
"Use urlview on the current buffer", "", ""):
|
||||||
|
return weechat.WEECHAT_RC_ERROR
|
||||||
|
|
||||||
|
weechat.hook_command("urlview", "Pass the current buffer to urlview", "",
|
||||||
|
"", "", "urlview", "")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- relay.conf
|
# relay.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
|
@ -25,35 +18,21 @@ text_bg = default
|
||||||
text_selected = white
|
text_selected = white
|
||||||
|
|
||||||
[network]
|
[network]
|
||||||
allow_empty_password = off
|
|
||||||
allowed_ips = ""
|
allowed_ips = ""
|
||||||
auth_timeout = 60
|
|
||||||
bind_address = ""
|
bind_address = ""
|
||||||
clients_purge_delay = 0
|
clients_purge_delay = 0
|
||||||
compression_level = 6
|
compression_level = 6
|
||||||
ipv6 = on
|
ipv6 = on
|
||||||
max_clients = 5
|
max_clients = 5
|
||||||
nonce_size = 16
|
|
||||||
password = ""
|
password = ""
|
||||||
password_hash_algo = "*"
|
|
||||||
password_hash_iterations = 100000
|
|
||||||
ssl_cert_key = "%h/ssl/relay.pem"
|
ssl_cert_key = "%h/ssl/relay.pem"
|
||||||
ssl_priorities = "NORMAL:-VERS-SSL3.0"
|
|
||||||
totp_secret = ""
|
|
||||||
totp_window = 0
|
|
||||||
websocket_allowed_origins = ""
|
websocket_allowed_origins = ""
|
||||||
|
|
||||||
[irc]
|
[irc]
|
||||||
backlog_max_minutes = 1440
|
backlog_max_minutes = 1440
|
||||||
backlog_max_number = 256
|
backlog_max_number = 256
|
||||||
backlog_since_last_disconnect = on
|
backlog_since_last_disconnect = on
|
||||||
backlog_since_last_message = off
|
|
||||||
backlog_tags = "irc_privmsg"
|
backlog_tags = "irc_privmsg"
|
||||||
backlog_time_format = "[%H:%M] "
|
backlog_time_format = "[%H:%M] "
|
||||||
|
|
||||||
[weechat]
|
|
||||||
commands = ""
|
|
||||||
|
|
||||||
[port]
|
[port]
|
||||||
|
|
||||||
[path]
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- ruby.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
check_license = off
|
|
||||||
eval_keep_context = on
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- script.conf
|
# script.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
|
@ -50,8 +43,8 @@ text_version_selected = lightmagenta
|
||||||
[scripts]
|
[scripts]
|
||||||
autoload = on
|
autoload = on
|
||||||
cache_expire = 1440
|
cache_expire = 1440
|
||||||
download_enabled = on
|
|
||||||
download_timeout = 30
|
download_timeout = 30
|
||||||
hold = ""
|
|
||||||
path = "%h/script"
|
path = "%h/script"
|
||||||
|
hold = ""
|
||||||
url = "http://weechat.org/files/plugins.xml.gz"
|
url = "http://weechat.org/files/plugins.xml.gz"
|
||||||
|
url_force_https = on
|
||||||
|
|
Binary file not shown.
|
@ -1,18 +1,11 @@
|
||||||
#
|
#
|
||||||
# weechat -- sec.conf
|
# sec.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[crypt]
|
[crypt]
|
||||||
cipher = aes256
|
cipher = aes256
|
||||||
hash_algo = sha256
|
hash_algo = sha256
|
||||||
passphrase_command = ""
|
passphrase_file = ""
|
||||||
salt = on
|
salt = on
|
||||||
|
|
||||||
[data]
|
[data]
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- spell.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset 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 = "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]
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- trigger.conf
|
# trigger.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
|
@ -16,7 +9,6 @@ monitor_strip_colors = off
|
||||||
[color]
|
[color]
|
||||||
flag_command = lightgreen
|
flag_command = lightgreen
|
||||||
flag_conditions = 130
|
flag_conditions = 130
|
||||||
flag_post_action = lightblue
|
|
||||||
flag_regex = lightcyan
|
flag_regex = lightcyan
|
||||||
flag_return_code = lightmagenta
|
flag_return_code = lightmagenta
|
||||||
regex = white
|
regex = white
|
||||||
|
@ -30,7 +22,6 @@ beep.command = "/print -beep"
|
||||||
beep.conditions = "${tg_highlight} || ${tg_msg_pv}"
|
beep.conditions = "${tg_highlight} || ${tg_msg_pv}"
|
||||||
beep.enabled = on
|
beep.enabled = on
|
||||||
beep.hook = print
|
beep.hook = print
|
||||||
beep.post_action = none
|
|
||||||
beep.regex = ""
|
beep.regex = ""
|
||||||
beep.return_code = ok
|
beep.return_code = ok
|
||||||
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
||||||
|
@ -38,7 +29,6 @@ cmd_pass.command = ""
|
||||||
cmd_pass.conditions = ""
|
cmd_pass.conditions = ""
|
||||||
cmd_pass.enabled = on
|
cmd_pass.enabled = on
|
||||||
cmd_pass.hook = modifier
|
cmd_pass.hook = modifier
|
||||||
cmd_pass.post_action = none
|
|
||||||
cmd_pass.regex = "==^((/(msg|m|quote) +nickserv +(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
cmd_pass.regex = "==^((/(msg|m|quote) +nickserv +(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
||||||
cmd_pass.return_code = ok
|
cmd_pass.return_code = ok
|
||||||
msg_auth.arguments = "5000|irc_message_auth"
|
msg_auth.arguments = "5000|irc_message_auth"
|
||||||
|
@ -46,7 +36,6 @@ msg_auth.command = ""
|
||||||
msg_auth.conditions = ""
|
msg_auth.conditions = ""
|
||||||
msg_auth.enabled = on
|
msg_auth.enabled = on
|
||||||
msg_auth.hook = modifier
|
msg_auth.hook = modifier
|
||||||
msg_auth.post_action = none
|
|
||||||
msg_auth.regex = "==^(.*(id|identify|register|ghost +[^ ]+|release +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
msg_auth.regex = "==^(.*(id|identify|register|ghost +[^ ]+|release +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
||||||
msg_auth.return_code = ok
|
msg_auth.return_code = ok
|
||||||
server_pass.arguments = "5000|input_text_display;5000|history_add"
|
server_pass.arguments = "5000|input_text_display;5000|history_add"
|
||||||
|
@ -54,6 +43,5 @@ server_pass.command = ""
|
||||||
server_pass.conditions = ""
|
server_pass.conditions = ""
|
||||||
server_pass.enabled = on
|
server_pass.enabled = on
|
||||||
server_pass.hook = modifier
|
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.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}"
|
||||||
server_pass.return_code = ok
|
server_pass.return_code = ok
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#
|
|
||||||
# weechat -- typing.conf
|
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
delay_purge_paused = 30
|
|
||||||
delay_purge_typing = 6
|
|
||||||
delay_set_paused = 10
|
|
||||||
enabled_nicks = off
|
|
||||||
enabled_self = off
|
|
||||||
input_min_chars = 4
|
|
||||||
item_max_length = 0
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- weechat.conf
|
# weechat.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[debug]
|
[debug]
|
||||||
|
@ -20,7 +13,6 @@ sys_rlimit = ""
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
align_end_of_lines = message
|
align_end_of_lines = message
|
||||||
align_multiline_words = on
|
|
||||||
bar_more_down = "++"
|
bar_more_down = "++"
|
||||||
bar_more_left = "<<"
|
bar_more_left = "<<"
|
||||||
bar_more_right = ">>"
|
bar_more_right = ">>"
|
||||||
|
@ -35,7 +27,6 @@ buffer_search_force_default = off
|
||||||
buffer_search_regex = off
|
buffer_search_regex = off
|
||||||
buffer_search_where = prefix_message
|
buffer_search_where = prefix_message
|
||||||
buffer_time_format = "${color:250}%H${color:lightcyan}:${color:245}%M${color:lightcyan}:${color:240}%S"
|
buffer_time_format = "${color:250}%H${color:lightcyan}:${color:245}%M${color:lightcyan}:${color:240}%S"
|
||||||
buffer_time_same = ""
|
|
||||||
color_basic_force_bold = off
|
color_basic_force_bold = off
|
||||||
color_inactive_buffer = on
|
color_inactive_buffer = on
|
||||||
color_inactive_message = on
|
color_inactive_message = on
|
||||||
|
@ -47,9 +38,7 @@ color_nick_offline = on
|
||||||
color_pairs_auto_reset = 5
|
color_pairs_auto_reset = 5
|
||||||
color_real_white = off
|
color_real_white = off
|
||||||
command_chars = ""
|
command_chars = ""
|
||||||
command_incomplete = off
|
|
||||||
confirm_quit = off
|
confirm_quit = off
|
||||||
confirm_upgrade = off
|
|
||||||
day_change = on
|
day_change = on
|
||||||
day_change_message_1date = "-- %a, %d %b %Y --"
|
day_change_message_1date = "-- %a, %d %b %Y --"
|
||||||
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
|
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
|
||||||
|
@ -72,30 +61,21 @@ hotlist_short_names = on
|
||||||
hotlist_sort = group_time_asc
|
hotlist_sort = group_time_asc
|
||||||
hotlist_suffix = ""
|
hotlist_suffix = ""
|
||||||
hotlist_unique_numbers = on
|
hotlist_unique_numbers = on
|
||||||
hotlist_update_on_buffer_switch = on
|
|
||||||
input_cursor_scroll = 20
|
input_cursor_scroll = 20
|
||||||
input_share = none
|
input_share = none
|
||||||
input_share_overwrite = off
|
input_share_overwrite = off
|
||||||
input_undo_max = 32
|
input_undo_max = 32
|
||||||
item_away_message = on
|
|
||||||
item_buffer_filter = "*"
|
item_buffer_filter = "*"
|
||||||
item_buffer_zoom = "!"
|
item_buffer_zoom = "!"
|
||||||
item_mouse_status = "M"
|
|
||||||
item_time_format = "%H:%M"
|
item_time_format = "%H:%M"
|
||||||
jump_current_to_previous_buffer = on
|
jump_current_to_previous_buffer = on
|
||||||
jump_previous_buffer_when_closing = on
|
jump_previous_buffer_when_closing = on
|
||||||
jump_smart_back_to_buffer = on
|
jump_smart_back_to_buffer = on
|
||||||
key_bind_safe = on
|
key_bind_safe = on
|
||||||
key_grab_delay = 800
|
|
||||||
mouse = off
|
mouse = off
|
||||||
mouse_timer_delay = 100
|
mouse_timer_delay = 100
|
||||||
nick_color_force = ""
|
|
||||||
nick_color_hash = djb2
|
|
||||||
nick_color_hash_salt = ""
|
|
||||||
nick_color_stop_chars = "_|["
|
|
||||||
nick_prefix = ""
|
nick_prefix = ""
|
||||||
nick_suffix = ""
|
nick_suffix = ""
|
||||||
paste_auto_add_newline = on
|
|
||||||
paste_bracketed = on
|
paste_bracketed = on
|
||||||
paste_bracketed_timer_delay = 10
|
paste_bracketed_timer_delay = 10
|
||||||
paste_max_lines = 1
|
paste_max_lines = 1
|
||||||
|
@ -114,17 +94,11 @@ prefix_join = "-->"
|
||||||
prefix_network = "--"
|
prefix_network = "--"
|
||||||
prefix_quit = "<--"
|
prefix_quit = "<--"
|
||||||
prefix_same_nick = ""
|
prefix_same_nick = ""
|
||||||
prefix_same_nick_middle = ""
|
|
||||||
prefix_suffix = "│"
|
prefix_suffix = "│"
|
||||||
quote_nick_prefix = "<"
|
|
||||||
quote_nick_suffix = ">"
|
|
||||||
quote_time_format = "%H:%M:%S"
|
|
||||||
read_marker = line
|
read_marker = line
|
||||||
read_marker_always_show = off
|
read_marker_always_show = off
|
||||||
read_marker_string = "- "
|
read_marker_string = "- "
|
||||||
read_marker_update_on_buffer_switch = on
|
|
||||||
save_config_on_exit = on
|
save_config_on_exit = on
|
||||||
save_config_with_fsync = off
|
|
||||||
save_layout_on_exit = none
|
save_layout_on_exit = none
|
||||||
scroll_amount = 3
|
scroll_amount = 3
|
||||||
scroll_bottom_after_switch = off
|
scroll_bottom_after_switch = off
|
||||||
|
@ -138,8 +112,6 @@ window_auto_zoom = off
|
||||||
window_separator_horizontal = on
|
window_separator_horizontal = on
|
||||||
window_separator_vertical = on
|
window_separator_vertical = on
|
||||||
window_title = "WeeChat ${info:version}"
|
window_title = "WeeChat ${info:version}"
|
||||||
word_chars_highlight = "!\u00A0,-,_,|,alnum"
|
|
||||||
word_chars_input = "!\u00A0,-,_,|,alnum"
|
|
||||||
|
|
||||||
[palette]
|
[palette]
|
||||||
|
|
||||||
|
@ -183,12 +155,10 @@ chat_text_found_bg = lightmagenta
|
||||||
chat_time = default
|
chat_time = default
|
||||||
chat_time_delimiters = brown
|
chat_time_delimiters = brown
|
||||||
chat_value = cyan
|
chat_value = cyan
|
||||||
chat_value_null = blue
|
|
||||||
emphasized = 130
|
emphasized = 130
|
||||||
emphasized_bg = magenta
|
emphasized_bg = magenta
|
||||||
input_actions = lightgreen
|
input_actions = lightgreen
|
||||||
input_text_not_found = red
|
input_text_not_found = red
|
||||||
item_away = yellow
|
|
||||||
nicklist_away = cyan
|
nicklist_away = cyan
|
||||||
nicklist_group = green
|
nicklist_group = green
|
||||||
separator = 235
|
separator = 235
|
||||||
|
@ -202,7 +172,6 @@ status_data_other = default
|
||||||
status_data_private = lightgreen
|
status_data_private = lightgreen
|
||||||
status_filter = green
|
status_filter = green
|
||||||
status_more = 130
|
status_more = 130
|
||||||
status_mouse = green
|
|
||||||
status_name = white
|
status_name = white
|
||||||
status_name_ssl = lightgreen
|
status_name_ssl = lightgreen
|
||||||
status_nicklist_count = default
|
status_nicklist_count = default
|
||||||
|
@ -211,11 +180,9 @@ status_time = default
|
||||||
|
|
||||||
[completion]
|
[completion]
|
||||||
base_word_until_cursor = on
|
base_word_until_cursor = on
|
||||||
command_inline = on
|
|
||||||
default_template = "%(nicks)|%(irc_channels)"
|
default_template = "%(nicks)|%(irc_channels)"
|
||||||
nick_add_space = on
|
nick_add_space = on
|
||||||
nick_case_sensitive = off
|
nick_completer = ":"
|
||||||
nick_completer = ": "
|
|
||||||
nick_first_only = off
|
nick_first_only = off
|
||||||
nick_ignore_chars = "[]`_-^"
|
nick_ignore_chars = "[]`_-^"
|
||||||
partial_completion_alert = on
|
partial_completion_alert = on
|
||||||
|
@ -223,7 +190,6 @@ partial_completion_command = off
|
||||||
partial_completion_command_arg = off
|
partial_completion_command_arg = off
|
||||||
partial_completion_count = on
|
partial_completion_count = on
|
||||||
partial_completion_other = off
|
partial_completion_other = off
|
||||||
partial_completion_templates = "config_options"
|
|
||||||
|
|
||||||
[history]
|
[history]
|
||||||
display_default = 5
|
display_default = 5
|
||||||
|
@ -236,8 +202,7 @@ max_visited_buffers = 50
|
||||||
|
|
||||||
[network]
|
[network]
|
||||||
connection_timeout = 60
|
connection_timeout = 60
|
||||||
gnutls_ca_system = on
|
gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt"
|
||||||
gnutls_ca_user = ""
|
|
||||||
gnutls_handshake_timeout = 30
|
gnutls_handshake_timeout = 30
|
||||||
proxy_curl = ""
|
proxy_curl = ""
|
||||||
|
|
||||||
|
@ -248,16 +213,8 @@ extension = ".so,.dll"
|
||||||
path = "%h/plugins"
|
path = "%h/plugins"
|
||||||
save_config_on_unload = on
|
save_config_on_unload = on
|
||||||
|
|
||||||
[signal]
|
|
||||||
sighup = "${if:${info:weechat_headless}?/reload:/quit -yes}"
|
|
||||||
sigquit = "/quit -yes"
|
|
||||||
sigterm = "/quit -yes"
|
|
||||||
sigusr1 = ""
|
|
||||||
sigusr2 = ""
|
|
||||||
|
|
||||||
[bar]
|
[bar]
|
||||||
buflist.color_bg = default
|
buflist.color_bg = default
|
||||||
buflist.color_bg_inactive = default
|
|
||||||
buflist.color_delim = default
|
buflist.color_delim = default
|
||||||
buflist.color_fg = default
|
buflist.color_fg = default
|
||||||
buflist.conditions = ""
|
buflist.conditions = ""
|
||||||
|
@ -271,23 +228,7 @@ buflist.separator = on
|
||||||
buflist.size = 0
|
buflist.size = 0
|
||||||
buflist.size_max = 0
|
buflist.size_max = 0
|
||||||
buflist.type = root
|
buflist.type = root
|
||||||
fset.color_bg = default
|
|
||||||
fset.color_bg_inactive = 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
|
|
||||||
isetbar.color_bg = default
|
isetbar.color_bg = default
|
||||||
isetbar.color_bg_inactive = default
|
|
||||||
isetbar.color_delim = cyan
|
isetbar.color_delim = cyan
|
||||||
isetbar.color_fg = default
|
isetbar.color_fg = default
|
||||||
isetbar.conditions = ""
|
isetbar.conditions = ""
|
||||||
|
@ -302,7 +243,6 @@ isetbar.size = 3
|
||||||
isetbar.size_max = 3
|
isetbar.size_max = 3
|
||||||
isetbar.type = window
|
isetbar.type = window
|
||||||
nicklist.color_bg = default
|
nicklist.color_bg = default
|
||||||
nicklist.color_bg_inactive = default
|
|
||||||
nicklist.color_delim = cyan
|
nicklist.color_delim = cyan
|
||||||
nicklist.color_fg = default
|
nicklist.color_fg = default
|
||||||
nicklist.conditions = "${nicklist}"
|
nicklist.conditions = "${nicklist}"
|
||||||
|
@ -317,7 +257,6 @@ nicklist.size = 0
|
||||||
nicklist.size_max = 0
|
nicklist.size_max = 0
|
||||||
nicklist.type = window
|
nicklist.type = window
|
||||||
rootinput.color_bg = default
|
rootinput.color_bg = default
|
||||||
rootinput.color_bg_inactive = default
|
|
||||||
rootinput.color_delim = cyan
|
rootinput.color_delim = cyan
|
||||||
rootinput.color_fg = default
|
rootinput.color_fg = default
|
||||||
rootinput.conditions = ""
|
rootinput.conditions = ""
|
||||||
|
@ -332,14 +271,13 @@ rootinput.size = 1
|
||||||
rootinput.size_max = 0
|
rootinput.size_max = 0
|
||||||
rootinput.type = root
|
rootinput.type = root
|
||||||
rootstatus.color_bg = 235
|
rootstatus.color_bg = 235
|
||||||
rootstatus.color_bg_inactive = default
|
|
||||||
rootstatus.color_delim = lightcyan
|
rootstatus.color_delim = lightcyan
|
||||||
rootstatus.color_fg = default
|
rootstatus.color_fg = default
|
||||||
rootstatus.conditions = ""
|
rootstatus.conditions = ""
|
||||||
rootstatus.filling_left_right = vertical
|
rootstatus.filling_left_right = vertical
|
||||||
rootstatus.filling_top_bottom = horizontal
|
rootstatus.filling_top_bottom = horizontal
|
||||||
rootstatus.hidden = off
|
rootstatus.hidden = off
|
||||||
rootstatus.items = "[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],(mouse_status),completion,scroll"
|
rootstatus.items = "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],(mouse_status),completion,scroll"
|
||||||
rootstatus.position = bottom
|
rootstatus.position = bottom
|
||||||
rootstatus.priority = 25
|
rootstatus.priority = 25
|
||||||
rootstatus.separator = off
|
rootstatus.separator = off
|
||||||
|
@ -347,7 +285,6 @@ rootstatus.size = 1
|
||||||
rootstatus.size_max = 0
|
rootstatus.size_max = 0
|
||||||
rootstatus.type = root
|
rootstatus.type = root
|
||||||
title.color_bg = 235
|
title.color_bg = 235
|
||||||
title.color_bg_inactive = default
|
|
||||||
title.color_delim = lightcyan
|
title.color_delim = lightcyan
|
||||||
title.color_fg = default
|
title.color_fg = default
|
||||||
title.conditions = ""
|
title.conditions = ""
|
||||||
|
@ -374,7 +311,6 @@ default.window = "3;1;0;0;core;weechat"
|
||||||
default.current = on
|
default.current = on
|
||||||
|
|
||||||
[notify]
|
[notify]
|
||||||
perl.highmon = none
|
|
||||||
|
|
||||||
[filter]
|
[filter]
|
||||||
|
|
||||||
|
@ -406,11 +342,6 @@ ctrl-U = "/input delete_beginning_of_line"
|
||||||
ctrl-W = "/input delete_previous_word"
|
ctrl-W = "/input delete_previous_word"
|
||||||
ctrl-X = "/input switch_active_buffer"
|
ctrl-X = "/input switch_active_buffer"
|
||||||
ctrl-Y = "/input clipboard_paste"
|
ctrl-Y = "/input clipboard_paste"
|
||||||
meta-ctrl-M = "/input insert \n"
|
|
||||||
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-1~ = "/window scroll_top"
|
||||||
meta-meta2-23~ = "/bar scroll nicklist * b"
|
meta-meta2-23~ = "/bar scroll nicklist * b"
|
||||||
meta-meta2-24~ = "/bar scroll nicklist * e"
|
meta-meta2-24~ = "/bar scroll nicklist * e"
|
||||||
|
@ -438,24 +369,16 @@ meta-9 = "/buffer *9"
|
||||||
meta-< = "/input jump_previously_visited_buffer"
|
meta-< = "/input jump_previously_visited_buffer"
|
||||||
meta-= = "/filter toggle"
|
meta-= = "/filter toggle"
|
||||||
meta-> = "/input jump_next_visited_buffer"
|
meta-> = "/input jump_next_visited_buffer"
|
||||||
meta-B = "/buflist toggle"
|
|
||||||
meta-N = "/bar toggle nicklist"
|
|
||||||
meta-OA = "/input history_global_previous"
|
meta-OA = "/input history_global_previous"
|
||||||
meta-OB = "/input history_global_next"
|
meta-OB = "/input history_global_next"
|
||||||
meta-OC = "/input move_next_word"
|
meta-OC = "/input move_next_word"
|
||||||
meta-OD = "/input move_previous_word"
|
meta-OD = "/input move_previous_word"
|
||||||
meta-OF = "/input move_end_of_line"
|
meta-OF = "/input move_end_of_line"
|
||||||
meta-OH = "/input move_beginning_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-Oa = "/input history_global_previous"
|
||||||
meta-Ob = "/input history_global_next"
|
meta-Ob = "/input history_global_next"
|
||||||
meta-Oc = "/input move_next_word"
|
meta-Oc = "/input move_next_word"
|
||||||
meta-Od = "/input move_previous_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-15~ = "/buffer -1"
|
||||||
meta2-17~ = "/buffer +1"
|
meta2-17~ = "/buffer +1"
|
||||||
meta2-18~ = "/window -1"
|
meta2-18~ = "/window -1"
|
||||||
|
@ -466,26 +389,18 @@ meta2-1;3C = "/buffer +1"
|
||||||
meta2-1;3D = "/buffer -1"
|
meta2-1;3D = "/buffer -1"
|
||||||
meta2-1;3F = "/window scroll_bottom"
|
meta2-1;3F = "/window scroll_bottom"
|
||||||
meta2-1;3H = "/window scroll_top"
|
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;5A = "/input history_global_previous"
|
||||||
meta2-1;5B = "/input history_global_next"
|
meta2-1;5B = "/input history_global_next"
|
||||||
meta2-1;5C = "/input move_next_word"
|
meta2-1;5C = "/input move_next_word"
|
||||||
meta2-1;5D = "/input move_previous_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-1~ = "/input move_beginning_of_line"
|
||||||
meta2-200~ = "/input paste_start"
|
meta2-200~ = "/input paste_start"
|
||||||
meta2-201~ = "/input paste_stop"
|
meta2-201~ = "/input paste_stop"
|
||||||
meta2-20~ = "/bar scroll title * -30%"
|
meta2-20~ = "/bar scroll title * -30%"
|
||||||
meta2-21~ = "/bar scroll title * +30%"
|
meta2-21~ = "/bar scroll title * +30%"
|
||||||
meta2-23;3~ = "/bar scroll nicklist * b"
|
meta2-23;3~ = "/bar scroll nicklist * b"
|
||||||
meta2-23;5~ = "/bar scroll nicklist * -100%"
|
|
||||||
meta2-23^ = "/bar scroll nicklist * -100%"
|
|
||||||
meta2-23~ = "/bar scroll nicklist * -100%"
|
meta2-23~ = "/bar scroll nicklist * -100%"
|
||||||
meta2-24;3~ = "/bar scroll nicklist * e"
|
meta2-24;3~ = "/bar scroll nicklist * e"
|
||||||
meta2-24;5~ = "/bar scroll nicklist * +100%"
|
|
||||||
meta2-24^ = "/bar scroll nicklist * +100%"
|
|
||||||
meta2-24~ = "/bar scroll nicklist * +100%"
|
meta2-24~ = "/bar scroll nicklist * +100%"
|
||||||
meta2-3~ = "/input delete_next_char"
|
meta2-3~ = "/input delete_next_char"
|
||||||
meta2-4~ = "/input move_end_of_line"
|
meta2-4~ = "/input move_end_of_line"
|
||||||
|
@ -510,10 +425,7 @@ meta-a = "/input jump_smart"
|
||||||
meta-b = "/input move_previous_word"
|
meta-b = "/input move_previous_word"
|
||||||
meta-d = "/input delete_next_word"
|
meta-d = "/input delete_next_word"
|
||||||
meta-f = "/input move_next_word"
|
meta-f = "/input move_next_word"
|
||||||
meta-hmeta-R = "/input hotlist_restore_all"
|
meta-h = "/input hotlist_clear"
|
||||||
meta-hmeta-c = "/input hotlist_clear"
|
|
||||||
meta-hmeta-m = "/input hotlist_remove_buffer"
|
|
||||||
meta-hmeta-r = "/input hotlist_restore_buffer"
|
|
||||||
meta-jmeta-f = "/buffer -"
|
meta-jmeta-f = "/buffer -"
|
||||||
meta-jmeta-l = "/buffer +"
|
meta-jmeta-l = "/buffer +"
|
||||||
meta-jmeta-r = "/server raw"
|
meta-jmeta-r = "/server raw"
|
||||||
|
@ -643,7 +555,6 @@ ctrl-_ = "/input undo"
|
||||||
ctrl-I = "/input search_switch_where"
|
ctrl-I = "/input search_switch_where"
|
||||||
ctrl-J = "/input search_stop"
|
ctrl-J = "/input search_stop"
|
||||||
ctrl-M = "/input search_stop"
|
ctrl-M = "/input search_stop"
|
||||||
ctrl-Q = "/input search_stop"
|
|
||||||
ctrl-R = "/input search_switch_regex"
|
ctrl-R = "/input search_switch_regex"
|
||||||
meta2-A = "/input search_previous"
|
meta2-A = "/input search_previous"
|
||||||
meta2-B = "/input search_next"
|
meta2-B = "/input search_next"
|
||||||
|
@ -681,10 +592,6 @@ meta2-D = "/cursor move left"
|
||||||
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
|
@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 = "/bar scroll nicklist ${_window_number} -100%"
|
||||||
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
|
@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(perl.iset):button1 = "hsignal:iset_mouse"
|
@chat(perl.iset):button1 = "hsignal:iset_mouse"
|
||||||
@chat(perl.iset):button2* = "hsignal:iset_mouse"
|
@chat(perl.iset):button2* = "hsignal:iset_mouse"
|
||||||
@chat(perl.iset):wheeldown = "/repeat 5 /iset **down"
|
@chat(perl.iset):wheeldown = "/repeat 5 /iset **down"
|
||||||
|
@ -698,12 +605,6 @@ meta2-D = "/cursor move left"
|
||||||
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${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 = "/window ${_window_number};/whois ${nick}"
|
||||||
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
|
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
|
||||||
@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:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
|
||||||
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
|
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
|
||||||
@chat:button1 = "/window ${_window_number}"
|
@chat:button1 = "/window ${_window_number}"
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#
|
#
|
||||||
# weechat -- xfer.conf
|
# xfer.conf -- weechat v1.0.1
|
||||||
#
|
|
||||||
# WARNING: It is NOT recommended to edit this file by hand,
|
|
||||||
# especially if WeeChat is running.
|
|
||||||
#
|
|
||||||
# Use commands like /set or /fset to change settings in WeeChat.
|
|
||||||
#
|
|
||||||
# For more info, see: https://weechat.org/doc/quickstart
|
|
||||||
#
|
#
|
||||||
|
|
||||||
[look]
|
[look]
|
||||||
|
@ -30,9 +23,7 @@ blocksize = 65536
|
||||||
fast_send = on
|
fast_send = on
|
||||||
own_ip = ""
|
own_ip = ""
|
||||||
port_range = ""
|
port_range = ""
|
||||||
send_ack = on
|
speed_limit = 0
|
||||||
speed_limit_recv = 0
|
|
||||||
speed_limit_send = 0
|
|
||||||
timeout = 300
|
timeout = 300
|
||||||
|
|
||||||
[file]
|
[file]
|
||||||
|
@ -44,6 +35,5 @@ auto_rename = on
|
||||||
auto_resume = on
|
auto_resume = on
|
||||||
convert_spaces = on
|
convert_spaces = on
|
||||||
download_path = "%h/xfer"
|
download_path = "%h/xfer"
|
||||||
download_temporary_suffix = ".part"
|
|
||||||
upload_path = "~"
|
upload_path = "~"
|
||||||
use_nick_in_filename = on
|
use_nick_in_filename = on
|
||||||
|
|
Before Width: | Height: | Size: 916 B After Width: | Height: | Size: 916 B |
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo "Content-type: text/plain"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo $REMOTE_ADDR
|
|
||||||
exit 0
|
|
||||||
|
|
Loading…
Reference in New Issue