how-to use readline.set_completion_display_matches_hook()?

2012-11-07 Thread Jean-Pierre Miceli
Hi all,

I'm working on a tool which enable support of tab completion using the
readline modul.
And I have a problem with set_completion_display_matches_hook function

I've created a display hook function and registered it. It is called
and it prints the desire messages. But once it has completed,
readline/python does not display the prompt.
I've got to press the 'return' key to see the prompt again.
What should the display hook function do to return correctly and let
the prompt be displayed?

Example:
def completerHook(self, substitution, matches, longest_match_length):
print ""
print "Test of the display hook function"
for i in range(len(matches)):
  print matches[i],

I use Python 2.7.3 and done some tests on Mac OS 10.7 (Lion) and
Ubuntu. I got the same issue on both system.

Thanks for your help
J-P
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: how-to use readline.set_completion_display_matches_hook()?

2012-11-07 Thread Jean-Pierre Miceli
Thanks,

I will try rl. 

Have a nice day
J-P

Le 7 nov. 2012 à 14:14, Stefan H. Holek a écrit :

> On 07.11.2012, at 11:36, Jean-Pierre Miceli wrote:
> 
>> Hi all,
>> 
>> I'm working on a tool which enable support of tab completion using the
>> readline modul.
>> And I have a problem with set_completion_display_matches_hook function
>> 
>> I've created a display hook function and registered it. It is called
>> and it prints the desire messages. But once it has completed,
>> readline/python does not display the prompt.
>> I've got to press the 'return' key to see the prompt again.
>> What should the display hook function do to return correctly and let
>> the prompt be displayed?
>> 
>> Example:
>> def completerHook(self, substitution, matches, longest_match_length):
>>   print ""
>>   print "Test of the display hook function"
>>   for i in range(len(matches)):
>> print matches[i],
>> 
>> I use Python 2.7.3 and done some tests on Mac OS 10.7 (Lion) and
>> Ubuntu. I got the same issue on both system.
> 
> This always happens when you print newlines behind readline's back. To update 
> the prompt area, you'd have to call rl_forced_update_display() which is AFAIK 
> not exposed by the stdlib's readline bindings.
> 
> There is a more complete implementation of the GNU Readline APIs at 
> http://pypi.python.org/pypi/rl. With rl you can fix the prompt by calling 
> rl.readline.redisplay(force=True) after the hook has returned.
> 
> Hope this helps,
> Stefan
> 
> -- 
> Stefan H. Holek
> ste...@epy.co.at
> 

-- 
http://mail.python.org/mailman/listinfo/python-list