On Thu, 2008-01-17 at 00:58 -0800, Casey Rodarmor wrote: > Hi everybody, > > I have the following in my python startup file: > > import readline, rlcompleter > readline.parse_and_bind("tab: complete") > > This lets me tab complete identifiers in the interpreter beautifully, > but there's a tiny problem... If I'm sitting at the beginning of a > blank line and just want a tab, it tries to tab complete, which kind > of a pain. > > <BLINK>-=SIMULATED PYTHON PROMPT=-</BLINK> > >>> def mega_awesome_function(cool_stuff, **some_sweet_kwargs): > ... X > > (The X is where I press tab and get super annoyed)
Patching rlcompleter.py in the python library thusly seems to do the trick: """ --- rlcompleter.py.bak 2008-01-17 09:35:06.000000000 -0500 +++ rlcompleter.py 2008-01-17 09:35:08.000000000 -0500 @@ -99,6 +99,7 @@ defined in self.namespace that match. """ + if text=="": return ['\t'] import keyword matches = [] n = len(text) """ Note that this prevents tab-completion not only at the beginning of the line but also at the beginning of a token, i.e. after a parenthesis or a comma etc. I don't know if it's possible to have the completer distinguish between the beginning of a token in the middle of the line and the beginning of the line, though. Hope this helps, -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list