Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #32885
| Subject | Re: how-to use readline.set_completion_display_matches_hook()? |
|---|---|
| From | "Stefan H. Holek" <stefan@epy.co.at> |
| Date | 2012-11-07 14:14 +0100 |
| References | <CAGGoCwqhWf3RNeVKPuexZ4Lxj0A2rUahALAGs4W0-y15M=7bTw@mail.gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3369.1352294105.27098.python-list@python.org> (permalink) |
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
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: how-to use readline.set_completion_display_matches_hook()? "Stefan H. Holek" <stefan@epy.co.at> - 2012-11-07 14:14 +0100
csiph-web