14.3.5 hook
可以使用一些hook来触发动作,作为交互序列的一部分。显示提示符之前会调用启动(startup)hook,显示提示符之后但从用户读取文本之前会运行预输入(pre-input)hook。
try:
import gnureadline as readline
except ImportError:
import readline
def startup_hook():
readline.insert_text('from startup_hook')
def pre_input_hook():
readline.insert_text(' from pre_input_hook')
readline.redisplay()
readline.set_startup_hook(startup_hook)
readline.set_pre_input_hook(pre_input_hook)
readline.parse_and_bind('tab: complete')
while True:
line = input('Prompt ("stop" to quit): ')
if line == 'stop':
break
print('ENTERED: {!r}'.format(line))
每个hook都可能是一个很好的机会,可以利用这些机会使用insert_text()修改输入缓冲区。
如果在预输入hook中修改了缓冲区,那么必须调用redisplay()更新屏幕。