From f9bce576e263743010971bee92604b8cdcccbd4c Mon Sep 17 00:00:00 2001 From: Mason Larobina Date: Tue, 19 Jan 2010 19:41:37 +0800 Subject: Reduced the {key,mod}cmd_{update,exec} functions into a single function. --- examples/data/plugins/bind.py | 59 ++++++++----------------------------------- 1 file changed, 11 insertions(+), 48 deletions(-) diff --git a/examples/data/plugins/bind.py b/examples/data/plugins/bind.py index 9e09337..427c8d3 100644 --- a/examples/data/plugins/bind.py +++ b/examples/data/plugins/bind.py @@ -444,12 +444,12 @@ def match_and_exec(uzbl, bind, depth, keylet, bindlet): return True -def keycmd_update(uzbl, keylet): +def key_event(uzbl, keylet, modcmd=False, onexec=False): bindlet = get_bindlet(uzbl) depth = bindlet.depth for bind in bindlet.get_binds(): t = bind[depth] - if t[MOD_CMD] or t[ON_EXEC]: + if (bool(t[MOD_CMD]) != modcmd) or (t[ON_EXEC] != onexec): continue if match_and_exec(uzbl, bind, depth, keylet, bindlet): @@ -458,60 +458,23 @@ def keycmd_update(uzbl, keylet): bindlet.after() -def keycmd_exec(uzbl, keylet): - bindlet = get_bindlet(uzbl) - depth = bindlet.depth - for bind in bindlet.get_binds(): - t = bind[depth] - if t[MOD_CMD] or not t[ON_EXEC]: - continue - - if match_and_exec(uzbl, bind, depth, keylet, bindlet): - return uzbl.clear_keycmd() - - bindlet.after() - - -def modcmd_update(uzbl, keylet): - bindlet = get_bindlet(uzbl) - depth = bindlet.depth - for bind in bindlet.get_binds(): - t = bind[depth] - if not t[MOD_CMD] or t[ON_EXEC]: - continue - - if match_and_exec(uzbl, bind, depth, keylet, bindlet): - return - - bindlet.after() - - -def modcmd_exec(uzbl, keylet): - bindlet = get_bindlet(uzbl) - depth = bindlet.depth - for bind in bindlet.get_binds(): - t = bind[depth] - if not t[MOD_CMD] or not t[ON_EXEC]: - continue - - if match_and_exec(uzbl, bind, depth, keylet, bindlet): - return uzbl.clear_modcmd() - - bindlet.after() - - def init(uzbl): # Event handling hooks. uzbl.connect_dict({ 'BIND': parse_bind, - 'KEYCMD_EXEC': keycmd_exec, - 'KEYCMD_UPDATE': keycmd_update, - 'MODCMD_EXEC': modcmd_exec, - 'MODCMD_UPDATE': modcmd_update, 'MODE_BIND': parse_mode_bind, 'MODE_CHANGED': mode_changed, }) + # Connect key related events to the key_event function. + events = [['KEYCMD_UPDATE', 'KEYCMD_EXEC'], + ['MODCMD_UPDATE', 'MODCMD_EXEC']] + + for modcmd in range(2): + for onexec in range(2): + event = events[modcmd][onexec] + uzbl.connect(event, key_event, bool(modcmd), bool(onexec)) + # Function exports to the uzbl object, `function(uzbl, *args, ..)` # becomes `uzbl.function(*args, ..)`. uzbl.export_dict({ -- cgit v1.2.3