在 python 提示工具包-3.0.2 上添加键绑定会破坏建议和历史记录搜索



我正在尝试添加一种不同的方法来完成多行输入。应该很简单,但我得到了一个意想不到的结果:添加新绑定后,历史记录并建议功能停止工作。

我尝试使用load_basic_bindings但没有帮助。

如果我再次评论键绑定、建议和历史工作。

from prompt_toolkit import PromptSession
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.key_binding import KeyBindings
session = PromptSession()
# load empty binds
bindings = KeyBindings()
# reading from the basic binds did not work either
# bindings = load_basic_bindings()
# HERE IS THE PROBLEM
# After adding this the history and suggest stop working
# should just add a new way to exit
# I have tested with the eager True and False, with no changes
@bindings.add('#')
def _(event):
event.app.exit(result=event.app.current_buffer.text)
while True:
text = session.prompt(
'> ',
auto_suggest=AutoSuggestFromHistory(),
key_bindings=bindings,     # if I comment the key bindings, the history and search work againg
multiline=True,            # this bug just happens on multiline, if put this False the bug does not happens
enable_history_search=True
)
print('You said: %s' % text)

如果我使用load_basic_bindings(),我可以接受使用Alt+Enter的命令,并将其添加到历史记录中。
#我不得不添加将命令添加到历史记录的功能

session.history.append_string(event.app.current_buffer.text)

使用箭头,我可以从历史记录中选择。它显示了历史的暗示。

在Linux Mint 19.2(基于Ubuntu 18.04(,Python 3.7.6,Prompt Toolkit 3.0.2上进行测试


from prompt_toolkit import PromptSession
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.key_binding.bindings.basic import load_basic_bindings
session = PromptSession()
# load empty binds
#bindings = KeyBindings()
# reading from the basic binds did not work either
bindings = load_basic_bindings()
# HERE IS THE PROBLEM
# After adding this the history and suggest stop working
# should just add a new way to exit
# I have tested with the eager True and False, with no changes
@bindings.add('#')
def _(event):
session.history.append_string(event.app.current_buffer.text)
event.app.exit(result=event.app.current_buffer.text)
while True:
text = session.prompt(
'> ',
auto_suggest=AutoSuggestFromHistory(),
key_bindings=bindings,     # if I comment the key bindings, the history and search work againg
multiline=True,            # this bug just happens on multiline, if put this False the bug does not happens
enable_history_search=True
)
print('You said: %s' % text)

相关内容

  • 没有找到相关文章

最新更新