cool new aliases

hashbang
Ben Harris 2019-02-04 14:16:40 -05:00
parent 56fb407f78
commit 4f04567a43
10 changed files with 421 additions and 3 deletions

View File

@ -29,6 +29,7 @@ J = "join"
K = "kick" K = "kick"
KB = "kickban" KB = "kickban"
LEAVE = "part" LEAVE = "part"
lenny = "/msg $channel ( ͡° ͜ʖ ͡°)"
M = "msg" M = "msg"
MS = "quote memoserv" MS = "quote memoserv"
MSGBUF = "command -buffer $1 * /input send $2-" MSGBUF = "command -buffer $1 * /input send $2-"
@ -41,9 +42,11 @@ 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" 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"
shrug = "/msg $channel ¯\_(ツ)_/¯"
SIGNOFF = "quit" SIGNOFF = "quit"
SLAP = "me slaps $1 around a bit with a large trout" SLAP = "me slaps $1 around a bit with a large trout"
T = "topic" T = "topic"
tf = "/msg $channel (ノಥ益ಥ)ノ彡┻━┻"
UB = "unban" UB = "unban"
UMODE = "mode $nick" UMODE = "mode $nick"
V = "command core version" V = "command core version"

View File

@ -221,7 +221,7 @@ hashbang.local_hostname
hashbang.usermode hashbang.usermode
hashbang.command = "/oper benharri x" hashbang.command = "/oper benharri x"
hashbang.command_delay hashbang.command_delay
hashbang.autojoin = "#dots,#!,#!social,#!os,#!politics,#!space,#!support,#!opers" hashbang.autojoin = "#!support,#!space,#!politics,#!os,#!social,#!,#dots,#!opers"
hashbang.autorejoin hashbang.autorejoin
hashbang.autorejoin_delay hashbang.autorejoin_delay
hashbang.connection_timeout hashbang.connection_timeout

View File

@ -10,7 +10,7 @@
# #
[look] [look]
backlog = 2147483647 backlog = 2000
backlog_conditions = "" backlog_conditions = ""
[color] [color]

View File

@ -67,6 +67,7 @@ python.buffer_autoclose.age_limit = "30"
python.buffer_autoclose.ignore = "" python.buffer_autoclose.ignore = ""
python.buffer_autoclose.interval = "1" python.buffer_autoclose.interval = "1"
python.check_license = "off" python.check_license = "off"
python.completion.replace_values = "shrug=>¯\_(ツ)_/¯;;tf=>(ノಥ益ಥ)ノ彡┻━┻;;lenny=>( ͡° ͜ʖ ͡°)"
python.go.auto_jump = "off" python.go.auto_jump = "off"
python.go.buffer_number = "on" python.go.buffer_number = "on"
python.go.color_name = "black,cyan" python.go.color_name = "black,cyan"

View File

@ -0,0 +1 @@
../bitlbee_completion.py

View File

@ -0,0 +1 @@
../completion.py

View File

@ -0,0 +1,114 @@
# -*- coding: utf-8 -*-
# Add tab completion to bitlbee commands
# based on http://scripts.irssi.org/scripts/bitlbee_tab_completion.pl
#
# History:
#
# 2015-11-02, Mickaël Thomas <mickael9@gmail.com>:
# version 0.2: strip color attributes for topic detection
# 2015-03-22, Roger Duran <rogerduran@gmail.com>:
# version 0.1: initial version
import weechat
SCRIPT_NAME = "bitlbee_completion"
SCRIPT_AUTHOR = "Roger Duran <rogerduran@gmail.com>"
SCRIPT_VERSION = "0.2"
SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Add tab completion to bitlbee commands"
OPTS = {
"server": None,
"channel": None
}
TOPIC = "Welcome to the control channel. "\
"Type help for help information."
commands = []
def request_completion():
"""
Request the completion to the bitlbee server and wait for response
"""
server = OPTS["server"]
weechat.command(server, "/quote -server %s COMPLETIONS" % server)
def modifier_cb(data, modifier, modifier_data, string):
"""
When the server returns the completion, update the commands list
"""
if ":COMPLETIONS" not in string:
return string
command = string.split(":COMPLETIONS ")[1]
if command not in ("OK", "END"):
commands.append(command)
return ""
def bitlbee_completion(data, completion_item, buffer, completion):
"""
Complete bitlbee commands only in the bitlbee buffer
"""
server = OPTS["server"]
channel = OPTS["channel"]
if not server or not channel:
return weechat.WEECHAT_RC_OK
buff_name = weechat.buffer_get_string(buffer, "name")
if buff_name == "%s.%s" % (server, channel):
for command in commands:
weechat.hook_completion_list_add(completion, command, 0,
weechat.WEECHAT_LIST_POS_SORT)
return weechat.WEECHAT_RC_OK
def find_buffer():
"""
Find the buffer when the plugin starts
"""
infolist = weechat.infolist_get("buffer", "", "")
while weechat.infolist_next(infolist):
topic = weechat.infolist_string(infolist, "title")
if weechat.string_remove_color(topic, "") == TOPIC:
name = weechat.infolist_string(infolist, "name")
set_options(name)
request_completion()
break
weechat.infolist_free(infolist)
def set_options(name):
server, channel = name.split(".")
OPTS["server"] = server
OPTS["channel"] = channel
def print_332(data, buffer, time, tags, displayed, highlight, prefix, message):
"""
Find the buffer when a new one is open
"""
if weechat.string_remove_color(message, "") == TOPIC:
name = weechat.buffer_get_string(buffer, "name")
set_options(name)
request_completion()
return weechat.WEECHAT_RC_OK
def main():
weechat.hook_modifier("irc_in_notice", "modifier_cb", "")
weechat.hook_completion("bitlbee", "bitlbee completion",
"bitlbee_completion", "")
weechat.hook_print('', 'irc_332', '', 1, 'print_332', '')
weechat.hook_print('', 'irc_topic', '', 1, 'print_332', '')
find_buffer()
if __name__ == "__main__":
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC, "", ""):
main()

View File

@ -0,0 +1,266 @@
# -*- coding: utf-8 -*-
###
# Copyright (c) 2010 by Elián Hanisch <lambdae2@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 scripts adds word completion, like irssi's /completion
# (depends on WeeChat 0.3.1 or newer)
#
# Commands:
# * /completion: see /help completion
#
#
# Settings:
# * plugins.var.python.completion.replace_values:
# Completion list, it shouldn't be edited by hand.
#
#
# History:
# 2010-05-08
# version 0.2:
# * complete any word behind the cursor, not just the last one in input line.
# * change script display name 'completion' to 'cmpl'.
#
# 2010-01-26
# version 0.1: release
#
###
try:
import weechat
WEECHAT_RC_OK = weechat.WEECHAT_RC_OK
import_ok = True
except ImportError:
print "This script must be run under WeeChat."
print "Get WeeChat now at: http://www.weechat.org/"
import_ok = False
SCRIPT_NAME = "completion"
SCRIPT_AUTHOR = "Elián Hanisch <lambdae2@gmail.com>"
SCRIPT_VERSION = "0.2"
SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Word completions for WeeChat"
SCRIPT_COMMAND = "completion"
### Config ###
settings = {
'replace_values':''
}
### Messages ###
def decode(s):
if isinstance(s, str):
s = s.decode('utf-8')
return s
def encode(u):
if isinstance(u, unicode):
u = u.encode('utf-8')
return u
def debug(s, prefix='', buffer=None):
"""Debug msg"""
#if not weechat.config_get_plugin('debug'): return
if buffer is None:
buffer_name = 'DEBUG_' + SCRIPT_NAME
buffer = weechat.buffer_search('python', buffer_name)
if not buffer:
buffer = weechat.buffer_new(buffer_name, '', '', '', '')
weechat.buffer_set(buffer, 'nicklist', '0')
weechat.buffer_set(buffer, 'time_for_each_line', '0')
weechat.buffer_set(buffer, 'localvar_set_no_log', '1')
s = encode(s)
weechat.prnt(buffer, '%s\t%s' %(prefix, s))
def error(s, prefix=None, buffer='', trace=''):
"""Error msg"""
prefix = prefix or script_nick
s = encode(s)
weechat.prnt(buffer, '%s%s %s' %(weechat.prefix('error'), prefix, s))
if weechat.config_get_plugin('debug'):
if not trace:
import traceback
if traceback.sys.exc_type:
trace = traceback.format_exc()
not trace or weechat.prnt('', trace)
def say(s, prefix=None, buffer=''):
"""normal msg"""
prefix = prefix or script_nick
s = encode(s)
weechat.prnt(buffer, '%s\t%s' %(prefix, s))
print_replace = lambda k,v : say('%s %s=>%s %s' %(k, color_delimiter, color_reset, v))
### Config functions ###
class UTFDict(dict):
decode = staticmethod(decode)
encode = staticmethod(encode)
def __init__(self, d={}):
dict.__init__(self)
for k, v in d.iteritems():
self[k] = v
def __setitem__(self, k, v):
k = self.decode(k)
v = self.decode(v)
dict.__setitem__(self, k, v)
def __getitem__(self, k):
k = self.decode(k)
return dict.__getitem__(self, k)
def __delitem__(self, k):
k = self.decode(k)
dict.__delitem__(self, k)
def __contains__(self, k):
k = self.decode(k)
return dict.__contains__(self, k)
def __str__(self):
values = [ '%s=>%s' %(k, v) for k, v in self.iteritems() ]
values = ';;'.join(values)
return self.encode(values)
def get_config_dict(config):
value = weechat.config_get_plugin(config)
if not value:
return {}
values = value.split(';;')
values = map(lambda s: s.split('=>'), values)
#debug(values)
return dict(values)
def load_replace_table():
global replace_table
replace_table = UTFDict(get_config_dict('replace_values'))
def save_replace_table():
global replace_table
weechat.config_set_plugin('replace_values', str(replace_table))
### Commands ###
def cmd_completion(data, buffer, args):
global replace_table
if not args:
if replace_table:
for k, v in replace_table.iteritems():
print_replace(k, v)
else:
say('No completions.')
return WEECHAT_RC_OK
cmd, space, args = args.partition(' ')
if cmd == 'add':
word, space, text = args.partition(' ')
k, v = word.strip(), text.strip()
replace_table[k] = v
save_replace_table()
say('added: %s %s=>%s %s' %(k, color_delimiter, color_reset, v))
elif cmd == 'del':
k = args.strip()
try:
del replace_table[k]
save_replace_table()
say("completion for '%s' deleted." %k)
save_replace_table()
except KeyError:
error("completion for '%s' not found." %k)
return WEECHAT_RC_OK
### Completion ###
def completion_replacer(data, completion_item, buffer, completion):
global replace_table
pos = weechat.buffer_get_integer(buffer, 'input_pos')
input = decode(weechat.buffer_get_string(buffer, 'input'))
#debug('%r %s %s' %(input, len(input), pos))
if pos > 0 and (pos == len(input) or input[pos] == ' '):
n = input.rfind(' ', 0, pos)
word = input[n+1:pos]
#debug(repr(word))
if word in replace_table:
replace = replace_table[word]
if pos >= len(input.strip()):
# cursor is in the end of line, append a space
replace += ' '
n = len(word)
input = '%s%s%s' %(input[:pos-n], replace, input[pos:])
weechat.buffer_set(buffer, 'input', encode(input))
weechat.buffer_set(buffer, 'input_pos', str(pos - n + len(replace)))
return WEECHAT_RC_OK
def completion_keys(data, completion_item, buffer, completion):
global replace_table
for k in replace_table:
weechat.hook_completion_list_add(completion, encode(k), 0, weechat.WEECHAT_LIST_POS_SORT)
return WEECHAT_RC_OK
### Main ###
if __name__ == '__main__' and import_ok and \
weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, \
SCRIPT_DESC, '', ''):
# colors
color_delimiter = weechat.color('chat_delimiters')
color_script_nick = weechat.color('chat_nick')
color_reset = weechat.color('reset')
# pretty [SCRIPT_NAME]
script_nick = '%s[%s%s%s]%s' %(color_delimiter, color_script_nick, 'cmpl', color_delimiter,
color_reset)
version = weechat.info_get('version', '')
if version == '0.3.0':
error('WeeChat 0.3.1 or newer is required for this script.')
else:
# settings
for opt, val in settings.iteritems():
if not weechat.config_is_set_plugin(opt):
weechat.config_set_plugin(opt, val)
load_replace_table()
completion_template = 'completion_script'
weechat.hook_completion(completion_template,
"Replaces last word in input by its configured value.", 'completion_replacer', '')
weechat.hook_completion('completion_keys', "Words in completion list.", 'completion_keys', '')
weechat.hook_command(SCRIPT_COMMAND, SCRIPT_DESC , "[add <word> <text>|del <word>]",
"""
add: adds a new completion, <word> => <text>.
del: deletes a completion.
Without arguments it displays current completions.
<word> will be replaced by <text> when pressing tab in input line,
where <word> is any word currently behind the cursor.
Setup:
For this script to work, you must add the template
%%(%(completion)s) to the default completion template, use:
/set weechat.completion.default_template "%%(nicks)|%%(irc_channels)|%%(%(completion)s)"
Examples:
/%(command)s add wee WeeChat (typing wee<tab> will replace 'wee' by 'WeeChat')
/%(command)s add weeurl http://www.weechat.org/
/%(command)s add test This is a test!
""" %dict(completion=completion_template, command=SCRIPT_COMMAND),
'add|del %(completion_keys)', 'cmd_completion', '')
# vim:set shiftwidth=4 tabstop=4 softtabstop=4 expandtab textwidth=100:

View File

@ -57,6 +57,30 @@ msg_auth.hook = modifier
msg_auth.post_action = none 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
pong.arguments = ""
pong.command = "pong"
pong.conditions = "${type} == private && ${tg_message} == ping"
pong.enabled = on
pong.hook = print
pong.post_action = none
pong.regex = ""
pong.return_code = ok
resize_big.arguments = "signal_sigwinch"
resize_big.command = "/bar show nicklist"
resize_big.conditions = "${info:term_width} >= 100"
resize_big.enabled = on
resize_big.hook = signal
resize_big.post_action = none
resize_big.regex = ""
resize_big.return_code = ok
resize_small.arguments = "signal_sigwinch"
resize_small.command = "/bar hide nicklist"
resize_small.conditions = "${info:term_width} < 100"
resize_small.enabled = on
resize_small.hook = signal
resize_small.post_action = none
resize_small.regex = ""
resize_small.return_code = ok
server_pass.arguments = "5000|input_text_display;5000|history_add" server_pass.arguments = "5000|input_text_display;5000|history_add"
server_pass.command = "" server_pass.command = ""
server_pass.conditions = "" server_pass.conditions = ""
@ -65,3 +89,11 @@ server_pass.hook = modifier
server_pass.post_action = none 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
url_color.arguments = "weechat_print"
url_color.command = ""
url_color.conditions = "${tg_notify}"
url_color.enabled = on
url_color.hook = modifier
url_color.post_action = none
url_color.regex = "==\S+://\S+==${color:blue}${re:0}${color:reset}=="
url_color.return_code = ok

View File

@ -207,7 +207,7 @@ status_time = default
[completion] [completion]
base_word_until_cursor = on base_word_until_cursor = on
command_inline = on command_inline = on
default_template = "%(nicks)|%(irc_channels)" default_template = "%(nicks)|%(irc_channels)|%(completion_script)"
nick_add_space = on nick_add_space = on
nick_case_sensitive = off nick_case_sensitive = off
nick_completer = ":" nick_completer = ":"