Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Re: how-to use readline.set_completion_display_matches_hook()? (http://www.velocityreviews.com/forums/t954286-re-how-to-use-readline-set_completion_display_matches_hook.html)

Stefan H. Holek 11-07-2012 01:14 PM

Re: how-to use readline.set_completion_display_matches_hook()?
 
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
stefan@epy.co.at



All times are GMT. The time now is 12:00 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.