Я использую модуль readline
для автозаполнения имен (имя, фамилия).
Я хочу установить 2-символьный разделитель, но, установив readline.set_completer_delims(', ')
, он принимает запятую и пробел в качестве разделителя. Но я хочу только комбинацию.
Проблема в том, что теперь я ввожу имя, которое существует несколько раз, с разными фамилиями. Вместо того, чтобы предлагать все возможные фамилии в завершении, readline думает, что символ пробела является разделителем, и начинает предлагать все имена снова.
Как я могу решить эту проблему?
Дополнительная информация: я уже использую пользовательскую функцию завершения:
# Configure and enable tab completion
def completer(text, state):
"""Contacts completer function for readline module"""
options = [x[2].strip() for x in contacts
if x[2].lower().startswith(text.strip().lower())]
try:
return options[state] + ', '
except IndexError:
return None
readline.set_completer(completer)
Проблема не в том, что функция работает неправильно. Я отладил его, и при заполнении слова, заканчивающегося пробелом (например, "simon "
), значение text
, передаваемое завершителю, равно " "
вместо "simon "
.