Hola a todos: Estoy tratando de implementar el autocompletamiento con Tab en un script, sin embargo no logro el comportamiento "intuitivo".
Por ejemplo, si tecleo "Ca"<Tab> la función completa hasta "Cambio de " (todo bien hasta aquí) y si a continuación tecleo "Ca" y presiono <Tab>, el comportamiento esperado es que autocompletara con "Cambio de Cabezal" sin embargo completa con "Cambio de Cambio de". Según parece, el tema es que readline solamente está capturando lo último que tecleo y eso es lo que pasa al completador en la variable "text". Naturalmente, la función "completar_soluciones" busca a su vez al comienzo de las cadenas almacenadas en la lista y eso es lo que provoca el comportamiento raro, solo que no se me ocurre como puedo hacer para que la función "completar_soluciones" reciba toda la línea y no solamente lo último tecleado. A continuación un código de ejemplo que reproduce el fallo (en Python 2.X). Agradeciendo su ayuda de antemano, nat #!/usr/bin/python # -*- coding: utf-8 -* import readline soluciones = ['Mtto al portafusible', 'Mtto al cable de alimentacion', 'Cambio de Cabezal', 'Cambio de TCF', 'Cambio de Antena', 'Cambio de Conector', 'Equipo OK', 'Cambio de fusible', ] def completar_soluciones(text, state): for reparacion in soluciones: if reparacion.startswith(text): if not state: return reparacion else: state -= 1 readline.parse_and_bind("tab: complete") readline.set_completer(completar_soluciones) solucion = raw_input("Solucion:") _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/