Patches item #1690201, was opened at 2007-03-28 21:52 Message generated for change (Comment added) made by paulhankin You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1690201&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Core (C code) Group: Python 2.3 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Ben Timby (btimby) Assigned to: Nobody/Anonymous (nobody) Summary: Added support for custom readline functions Initial Comment: This patch allows for binding a key or keyseq to a custom function named custom. A custom handler can be registered and will be called by readline when the registered sequence input. Example: rl.py -- import readline def handler(): print "need some help?" readline.set_custom_hook(handler) readline.parse_and_bind("\"?\": custom") text = raw_input("type ? for help# ") -- ---------------------------------------------------------------------- Comment By: Paul Hankin (paulhankin) Date: 2007-04-02 17:28 Message: Logged In: YES user_id=1740099 Originator: NO Hi Ben, I'm sorry if you thought my short reply suggested I hadn't looked at the patch properly. I'll try to clarify what I meant. Gnu readline provides an interface to custom functions: you declare a function that takes a 'count' and a 'key' and returns 0 or an error. You then call rl_add_defunc to declare it. You use the name you used in 'rl_add_defunc' in the readline init file to bind the command to a key. The patch uses a different interface: the user provides a function that takes no arguments. He declares it by calling 'set_custom_hook', and calls it by using the name 'custom' in the init file to bind it to a key. An interface consistent between python and readline would be: def say_hello(key, count): ... readline.add_defunc("say_hello", say_hello) readline.parse_and_bind('"?" : say_hello') (Perhaps the 'add_defun' is an artefact of lack of dynamic features of C and would be dropped from the python interface). The patch's use of a 'custom' hook is more complicated than using the function name directly in the init file, and provides less functionality (a single command, and removes the arguments that the c command would have). Accepting this patch will cause minor compatibility trouble in future if anyone works out a way round the admittedly difficult technical problems of doing things the 'right' way. Given the interface troubles, I'm not convinced enough of the usefulness of the patch. ---------------------------------------------------------------------- Comment By: Ben Timby (btimby) Date: 2007-04-02 01:53 Message: Logged In: YES user_id=932679 Originator: YES If by adopt you mean adapt, that is what I have done. I simplified things to allow a single named function "custom" but it uses the gnu readline custom function interface (rl_add_defunc) . Have you even looked at the patch? ---------------------------------------------------------------------- Comment By: Paul Hankin (paulhankin) Date: 2007-04-01 21:47 Message: Logged In: YES user_id=1740099 Originator: NO Gnu readline supports custom functions in C - it would be better to adopt the gnu readline custom function interface to python, rather than using the 'custom' handler which smells of a hack. ---------------------------------------------------------------------- Comment By: Ben Timby (btimby) Date: 2007-03-28 23:01 Message: Logged In: YES user_id=932679 Originator: YES new Example: rl.py -- #!/usr/bin/python import readline def say_hello(): print print "this is my help text..." readline.on_new_line() readline.set_custom_hook(say_hello) readline.parse_and_bind("\"?\": custom") while True: data = raw_input("input# ") print "data: ", data -- ---------------------------------------------------------------------- Comment By: Ben Timby (btimby) Date: 2007-03-28 23:00 Message: Logged In: YES user_id=932679 Originator: YES File Added: python-2.3.4-readline_custom.patch ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1690201&group_id=5470 _______________________________________________ Patches mailing list Patches@python.org http://mail.python.org/mailman/listinfo/patches