minor fixes in colo.py

This commit is contained in:
wowaname 2016-08-12 11:01:14 +00:00
parent eb0faa09eb
commit c05ec219e6

View File

@ -36,7 +36,7 @@ settings = {
"%c13♥ %0%s%o %c13♥", "%c13♥ %0%s%o %c13♥",
"Format string for text. %0 - %9 are different colours, %s is text, " "Format string for text. %0 - %9 are different colours, %s is text, "
"%c %b %u %r %o are ^C ^B ^U ^R ^O respectively, and %% is a literal " "%c %b %u %r %o are ^C ^B ^U ^R ^O respectively, and %% is a literal "
"percent sign.", "percent sign. %0 is the primary colour that should be used with %s.",
), ),
"fgs": ( "fgs": (
"04,05,06,13", "04,05,06,13",
@ -71,11 +71,10 @@ settings = {
"(profile)_suf, (profile)_fgs, and (profile)_bgs. ", "(profile)_suf, (profile)_fgs, and (profile)_bgs. ",
), ),
"greentext_fmt": "%c3> %s", "greentext_fmt": "%c3> %s",
"alert_fmt": "%c1,8/!\\ %c8,1%s%o %c1,8/!\\" "alert_fmt": "%c1,8/!\\%c8,1 %s %o%c1,8/!\\"
} }
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE,
SCRIPT_DESC, "", ""): SCRIPT_DESC, "", ""):
for opt, val in settings.iteritems(): for opt, val in settings.iteritems():
@ -86,12 +85,24 @@ if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE,
weechat.hook_modifier("input_text_for_buffer", "cb_colo", "") weechat.hook_modifier("input_text_for_buffer", "cb_colo", "")
# prevent looping
nest = False
def glob_match (haystack, needle): def glob_match (haystack, needle):
return re.search("^%s$" % return re.search("^%s$" %
re.escape(haystack).replace(r"\?", ".").replace(r"\*", ".*?"), re.escape(haystack).replace(r"\?", ".").replace(r"\*", ".*?"),
needle) needle)
def is_command (string):
return (string.startswith("/") and not string.startswith("/ ") and
string != "/" and string.split(" ", 1)[0].split("\n", 1)[0].find("/", 1)
< 0)
def cb_colo (data, mod, buf, input): def cb_colo (data, mod, buf, input):
global nest
if nest:
nest = False
return input
buffer_name = weechat.buffer_get_string(buf, "name").lower() buffer_name = weechat.buffer_get_string(buf, "name").lower()
output = "" output = ""
profile = "" profile = ""
@ -109,8 +120,7 @@ def cb_colo (data, mod, buf, input):
if not input: if not input:
return input return input
if (input.startswith("/") and not input.startswith("/ ") and input != "/" if is_command(input):
and input.split(" ", 1)[0].split("\n", 1)[0].find("/", 1) < 0):
for cmd in weechat.config_get_plugin("whitelist_cmds").lower().split(","): for cmd in weechat.config_get_plugin("whitelist_cmds").lower().split(","):
if not input.startswith("/%s " % cmd): continue if not input.startswith("/%s " % cmd): continue
output = "/%s " % cmd output = "/%s " % cmd
@ -154,13 +164,15 @@ def cb_colo (data, mod, buf, input):
input.replace("\x0f","\x0f%s" % base)) input.replace("\x0f","\x0f%s" % base))
fmt = "%".join(fmt) fmt = "%".join(fmt)
nest = is_command(fmt)
l = (409 - len(fmt) - l = (409 - len(fmt) -
int( weechat.info_get("irc_server_isupport_value", "%s,NICKLEN" % int( weechat.info_get("irc_server_isupport_value", "%s,NICKLEN" %
weechat.buffer_get_string(buf, "localvar_server")) ) weechat.buffer_get_string(buf, "localvar_server")) )
) )
o = [] o = []
for line in input.replace("\r", "").split("\n"): for line in input.replace("\r", "\n").split("\n"):
if not line: continue
for i in xrange(0, len(line), l): for i in xrange(0, len(line), l):
o.append(fmt.replace("%s", line[i:i+l].rstrip())) o.append(fmt.replace("%s", line[i:i+l].rstrip()))