aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-11-27 12:59:59 +0000
committerGravatar jesopo2019-11-27 12:59:59 +0000
commitb66119ba9613587e9aaffea52900d60366eddaff (patch)
treefe6b4b60ca4102feb37bd996a1455d29eda9b225 /modules
parentadd Buffer.get_all (diff)
signature
use BufferLine.notes to allow cumulative sed edits
Diffstat (limited to 'modules')
-rw-r--r--modules/sed.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/modules/sed.py b/modules/sed.py
index bf6fa6ad..a92b269d 100644
--- a/modules/sed.py
+++ b/modules/sed.py
@@ -56,20 +56,31 @@ class Module(ModuleManager.BaseModule):
if self._closest_setting(event, "sed-sender-only", False):
for_user = event["user"].nickname
+ match_line = None
+ match = None
+ match_message = None
with utils.deadline():
- match = event["target"].buffer.find(pattern, from_self=False,
- for_user=for_user, not_pattern=REGEX_SED)
+ for line in event["target"].buffer.get_all(for_user):
+ if not line.from_self:
+ message = line.notes.get("sed-line", line.message)
+ match = pattern.search(message)
+ if match and not REGEX_SED.match(message):
+ match_line = line
+ match = match.group(0)
+ match_message = message
if match:
replace = sed_split[2]
replace = replace.replace("\\/", "/")
- replace = re.sub(SED_AMPERSAND, "\\1%s" % match.match, replace)
- replace = utils.irc.bold(replace)
+ replace = re.sub(SED_AMPERSAND, "\\1%s" % match, replace)
+ replace_color = utils.irc.bold(replace)
- new_message = re.sub(pattern, replace, match.line.message,
- count)
- if match.line.action:
- prefix = "* %s" % match.line.sender
+ new_message = re.sub(pattern, replace, message, count)
+ new_message_color = re.sub(pattern, utils.irc.bold(replace),
+ message, count)
+ if match_line.action:
+ prefix = "* %s" % match_line.sender
else:
- prefix = "<%s>" % match.line.sender
- event["stdout"].write("%s %s" % (prefix, new_message))
+ prefix = "<%s>" % match_line.sender
+ match_line.notes["sed-line"] = new_message
+ event["stdout"].write("%s %s" % (prefix, new_message_color))