Python autocomplete?

... komplette Frage anzeigen

1 Antwort

Ahoi, wenn's noch von Interesse sein sollte, hab' ich hier zumindest 'nen Ansatz, auf dem man aufbauen könnte:

#!/usr/bin/env python
#coding: utf-8
import readline

#Normale Autocomplete Liste
commands = ['foo', 'bar']
#Autocomplete Liste wenn 'foo' am Anfang der Zeile steht
foo_commands = ['example', 'whatever']

#Normaler "Completer"
def completer(text, state):
options = [i for i in commands if i.startswith(text)]
#Überprüfe, ob die bisherige Zeile mit 'foo' beginnt
if readline.get_line_buffer().startswith('foo'):
#Wenn ja, wechsele zum 'foo'-Completer
readline.set_completer(foo_completer)
if state < len(options):
return options[state]
else:
return None

#Completer für 'foo'
def foo_completer(text, state):
options = [i for i in foo_commands if i.startswith(text)]
if state < len(options):
return options[state]
else:
return None

readline.parse_and_bind("tab: complete")
readline.set_completer(completer)

#Test...
while True:
try:
line = raw_input('$ ')
except EOFError: break
print '> %s' % line
print ''

Anmerkung: Das ganze hab' ich relativ zackig zusammengeknüppelt, aber es scheint (im Ansatz...) dem gesuchten Verhalten zu entsprechen...

Falls sich noch Fragen ergeben sollten, ich bin annähernd regelmäßig hier... %D

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
09.07.2016, 23:42

Ich danke dir für deine Antwort :-) , aber das Programm ist schon fertig. Trotzdem danie nochmal!

0

Was möchtest Du wissen?