diff options
Diffstat (limited to '_config/alot/hooks.py')
-rw-r--r-- | _config/alot/hooks.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/_config/alot/hooks.py b/_config/alot/hooks.py index 9447689..806959e 100644 --- a/_config/alot/hooks.py +++ b/_config/alot/hooks.py @@ -7,13 +7,32 @@ import re +import alot + # Check for missing attachment before sending # async def pre_envelope_send(ui, dbm, __): - p = r'.*([Aa]ttach|附件|附图)' + p = r'.*([Aa]ttach|附件|附图|已附|所附)' e = ui.current_buffer.envelope if re.match(p, e.body, re.DOTALL) and not e.attachments: msg = 'No attachments. Send anyway?' if not (await ui.choice(msg, select='yes')) == 'yes': raise Exception() + + +# Save marked position in search buffer +# +def pre_buffer_open(ui, dbm, buf): + current = ui.current_buffer + if isinstance(current, alot.buffers.SearchBuffer): + current.focused_thread = current.get_selected_thread() + +def post_buffer_focus(ui, dbm, buf, success): + if success and hasattr(buf, "focused_thread"): + if buf.focused_thread: + tid = buf.focused_thread.get_thread_id() + for pos, tlw in enumerate(buf.threadlist.get_lines()): + if tlw.get_thread().get_thread_id() == tid: + buf.body.set_focus(pos) + break |